'use client'; import type { JiraWeeklyMetrics } from '@/services/jira-summary'; import { Card, CardHeader, CardContent } from '@/components/ui/Card'; import { Badge } from '@/components/ui/Badge'; import { JiraSummaryService } from '@/services/jira-summary'; interface JiraWeeklyMetricsProps { jiraMetrics: JiraWeeklyMetrics | null; } export function JiraWeeklyMetrics({ jiraMetrics }: JiraWeeklyMetricsProps) { if (!jiraMetrics) { return (

🔗 Contexte business Jira

Configuration Jira non disponible

); } if (jiraMetrics.totalJiraTasks === 0) { return (

🔗 Contexte business Jira

Aucune tâche Jira cette semaine

); } const completionRate = (jiraMetrics.completedJiraTasks / jiraMetrics.totalJiraTasks) * 100; const insights = JiraSummaryService.generateBusinessInsights(jiraMetrics); return (

🔗 Contexte business Jira

Impact business et métriques projet

{/* Métriques principales */}
{jiraMetrics.totalJiraTasks}
Tickets Jira
{completionRate.toFixed(0)}%
Taux completion
{jiraMetrics.totalStoryPoints}
Story Points*
{jiraMetrics.projectsContributed.length}
Projet(s)
{/* Projets contributés */} {jiraMetrics.projectsContributed.length > 0 && (

📂 Projets contributés

{jiraMetrics.projectsContributed.map(project => ( {project} ))}
)} {/* Types de tickets */}

🎯 Types de tickets

{Object.entries(jiraMetrics.ticketTypes) .sort(([,a], [,b]) => b - a) .map(([type, count]) => { const percentage = (count / jiraMetrics.totalJiraTasks) * 100; return (
{type}
{count}
); })}
{/* Liens vers les tickets */}

🎫 Tickets traités

{jiraMetrics.jiraLinks.map((link) => (
{link.key} {link.status}

{link.title}

{link.type} {link.estimatedPoints}pts
))}
{/* Insights business */} {insights.length > 0 && (

💡 Insights business

{insights.map((insight, index) => (

{insight}

))}
)} {/* Note sur les story points */}

* Story Points estimés automatiquement basés sur le type de ticket (Epic: 8pts, Story: 3pts, Task: 2pts, Bug: 1pt)

); }