'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) ); }
Configuration Jira non disponible
Aucune tâche Jira cette semaine
Impact business et métriques projet
{link.title}
{insight}
* Story Points estimés automatiquement basés sur le type de ticket (Epic: 8pts, Story: 3pts, Task: 2pts, Bug: 1pt)