diff --git a/src/app/jira-dashboard/JiraDashboardPageClient.tsx b/src/app/jira-dashboard/JiraDashboardPageClient.tsx index 4593e48..044a052 100644 --- a/src/app/jira-dashboard/JiraDashboardPageClient.tsx +++ b/src/app/jira-dashboard/JiraDashboardPageClient.tsx @@ -110,7 +110,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:
-

Configuration requise

+

Configuration requise

@@ -140,7 +140,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:

-

Projet requis

+

Projet requis

@@ -185,7 +185,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:

- Analytics d'équipe + Analytics d'équipe

@@ -227,7 +227,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: variant="ghost" className="text-xs px-2 py-1 h-auto" > - {isExporting ? : } CSV + {isExporting ? : } CSV

@@ -285,13 +285,13 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:

- {analytics.project.name} + {analytics.project.name} ({periodInfo.label}) {hasActiveFilters && ( - Filtré + Filtré )}

@@ -351,14 +351,14 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:
{/* Info discrète sur le calcul des points */}
- Points : Utilise les story points Jira si définis, sinon Epic(13), Story(5), Task(3), Bug(2), Subtask(1) + Points : Utilise les story points Jira si définis, sinon Epic(13), Story(5), Task(3), Bug(2), Subtask(1)
{/* Graphiques principaux */}
-

Répartition de l'équipe

+

Répartition de l'équipe

-

Vélocité des sprints

+

Vélocité des sprints

-

Cycle Time par type

+

Cycle Time par type

-

Burndown Chart

+

Burndown Chart

@@ -457,7 +457,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: -

Throughput

+

Throughput

@@ -473,7 +473,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Métriques de qualité */} -

Métriques de qualité

+

Métriques de qualité

@@ -488,7 +488,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Métriques de predictabilité */} -

Predictabilité

+

Predictabilité

@@ -503,7 +503,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Matrice de collaboration - ligne entière */} -

Matrice de collaboration

+

Matrice de collaboration

@@ -518,7 +518,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Comparaison inter-sprints */} -

Comparaison inter-sprints

+

Comparaison inter-sprints

@@ -533,7 +533,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Heatmap d'activité de l'équipe */} -

Heatmap d'activité de l'équipe

+

Heatmap d'activité de l'équipe

@@ -553,7 +553,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Graphique de vélocité */} -

Vélocité des sprints

+

Vélocité des sprints

@@ -570,7 +570,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:
-

Burndown Chart

+

Burndown Chart

@@ -584,7 +584,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: -

Throughput

+

Throughput

@@ -600,7 +600,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: {/* Comparaison des sprints */} -

Comparaison des sprints

+

Comparaison des sprints

@@ -620,7 +620,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:
-

Cycle Time par type

+

Cycle Time par type

@@ -660,7 +660,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:
-

Métriques de qualité

+

Métriques de qualité

@@ -674,7 +674,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: -

Predictabilité

+

Predictabilité

@@ -695,7 +695,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }:
-

Répartition de l'équipe

+

Répartition de l'équipe

@@ -709,7 +709,7 @@ export function JiraDashboardPageClient({ initialJiraConfig, initialAnalytics }: -

Matrice de collaboration

+

Matrice de collaboration

diff --git a/src/components/AuthButton.tsx b/src/components/AuthButton.tsx index f37baee..587c9f2 100644 --- a/src/components/AuthButton.tsx +++ b/src/components/AuthButton.tsx @@ -53,7 +53,7 @@ export function AuthButton() { className="p-1 h-auto" title="Déconnexion" > - +
) diff --git a/src/components/dashboard/ManagerWeeklySummary.tsx b/src/components/dashboard/ManagerWeeklySummary.tsx index 4e8be61..c957996 100644 --- a/src/components/dashboard/ManagerWeeklySummary.tsx +++ b/src/components/dashboard/ManagerWeeklySummary.tsx @@ -51,7 +51,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu {/* Header avec navigation */}
-

Weekly

+

Weekly

{formatPeriod()}

{activeView !== 'metrics' && ( @@ -60,7 +60,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu variant="secondary" size="sm" > -  Actualiser +  Actualiser )}
@@ -81,22 +81,22 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu

- Résumé de la semaine + Résumé de la semaine

-

Points clés accomplis

+

Points clés accomplis

{summary.narrative.weekHighlight}

-

Défis traités

+

Défis traités

{summary.narrative.mainChallenges}

-

Focus 7 prochains jours

+

Focus 7 prochains jours

{summary.narrative.nextWeekFocus}

@@ -105,7 +105,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu {/* Métriques rapides */} -

Métriques en bref

+

Métriques en bref

@@ -144,7 +144,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu borderBottomColor: 'color-mix(in srgb, var(--success) 10%, var(--border))' }}>

- Top accomplissements + Top accomplissements

@@ -177,7 +177,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu borderBottomColor: 'color-mix(in srgb, var(--destructive) 10%, var(--border))' }}>

- Top enjeux à venir + Top enjeux à venir

@@ -209,7 +209,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu {activeView === 'accomplishments' && ( -

Accomplissements des 7 derniers jours

+

Accomplissements des 7 derniers jours

{summary.keyAccomplishments.length} accomplissements significatifs • {summary.metrics.totalTasksCompleted} tâches • {summary.metrics.totalCheckboxesCompleted} todos complétés

@@ -221,7 +221,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu borderColor: 'color-mix(in srgb, var(--muted) 40%, var(--border))', color: 'var(--muted-foreground)' }}> -
+

Aucun accomplissement significatif trouvé cette semaine.

Ajoutez des tâches avec priorité haute/medium ou des meetings.

@@ -247,7 +247,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu {activeView === 'challenges' && ( -

Enjeux et défis à venir

+

Enjeux et défis à venir

{summary.upcomingChallenges.length} défis identifiés • {summary.upcomingChallenges.filter(c => c.priority === 'high').length} priorité haute • {summary.upcomingChallenges.filter(c => c.blockers.length > 0).length} avec blockers

@@ -259,7 +259,7 @@ export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySu borderColor: 'color-mix(in srgb, var(--muted) 40%, var(--border))', color: 'var(--muted-foreground)' }}> -
+

Aucun enjeu prioritaire trouvé.

Ajoutez des tâches non complétées avec priorité haute/medium.

diff --git a/src/components/dashboard/MetricsTab.tsx b/src/components/dashboard/MetricsTab.tsx index 0d8b8c2..2178f4a 100644 --- a/src/components/dashboard/MetricsTab.tsx +++ b/src/components/dashboard/MetricsTab.tsx @@ -42,13 +42,13 @@ export function MetricsTab({ className }: MetricsTabProps) {

- Erreur lors du chargement des métriques + Erreur lors du chargement des métriques

{metricsError || trendsError}

@@ -61,7 +61,7 @@ export function MetricsTab({ className }: MetricsTabProps) { {/* Header avec période et contrôles */}
-

Métriques & Analytics

+

Métriques & Analytics

{formatPeriod()}

@@ -71,7 +71,7 @@ export function MetricsTab({ className }: MetricsTabProps) { size="sm" disabled={metricsLoading || trendsLoading} > - Actualiser + Actualiser
diff --git a/src/components/dashboard/ProductivityAnalytics.tsx b/src/components/dashboard/ProductivityAnalytics.tsx index 543dac4..68404dc 100644 --- a/src/components/dashboard/ProductivityAnalytics.tsx +++ b/src/components/dashboard/ProductivityAnalytics.tsx @@ -91,7 +91,7 @@ export function ProductivityAnalytics({ metrics, deadlineMetrics, tagMetrics, se {/* Titre de section Analytics */}
-

Analytics & Métriques

+

Analytics & Métriques

Derniers 30 jours
@@ -142,7 +142,7 @@ export function ProductivityAnalytics({ metrics, deadlineMetrics, tagMetrics, se {/* Insights automatiques */} -

Insights

+

Insights

- +

Tâches Récentes

diff --git a/src/components/dashboard/charts/MetricsOverview.tsx b/src/components/dashboard/charts/MetricsOverview.tsx index 6c53847..e080d4d 100644 --- a/src/components/dashboard/charts/MetricsOverview.tsx +++ b/src/components/dashboard/charts/MetricsOverview.tsx @@ -11,26 +11,26 @@ interface MetricsOverviewProps { export function MetricsOverview({ metrics }: MetricsOverviewProps) { const getTrendIcon = (trend: string) => { switch (trend) { - case 'improving': return ; - case 'declining': return ; - case 'stable': return ; - default: return ; + case 'improving': return ; + case 'declining': return ; + case 'stable': return ; + default: return ; } }; const getPatternIcon = (pattern: string) => { switch (pattern) { - case 'consistent': return ; - case 'variable': return ; - case 'weekend-heavy': return ; - default: return ; + case 'consistent': return ; + case 'variable': return ; + case 'weekend-heavy': return ; + default: return ; } }; return ( -

Vue d'ensemble

+

Vue d'ensemble

diff --git a/src/components/dashboard/charts/ProductivityInsights.tsx b/src/components/dashboard/charts/ProductivityInsights.tsx index 4eed77a..f87dbe3 100644 --- a/src/components/dashboard/charts/ProductivityInsights.tsx +++ b/src/components/dashboard/charts/ProductivityInsights.tsx @@ -47,24 +47,24 @@ export function ProductivityInsights({ data, className }: ProductivityInsightsPr const getTrendIcon = () => { switch (trend) { - case 'up': return { icon: , color: 'text-green-600', label: 'En amélioration' }; - case 'down': return { icon: , color: 'text-red-600', label: 'En baisse' }; - default: return { icon: , color: 'text-blue-600', label: 'Stable' }; + case 'up': return { icon: , color: 'text-green-600', label: 'En amélioration' }; + case 'down': return { icon: , color: 'text-red-600', label: 'En baisse' }; + default: return { icon: , color: 'text-blue-600', label: 'Stable' }; } }; const getConsistencyLevel = () => { - if (consistencyScore >= 80) return { label: 'Très régulier', color: 'text-green-600', icon: }; - if (consistencyScore >= 60) return { label: 'Assez régulier', color: 'text-blue-600', icon: }; - if (consistencyScore >= 40) return { label: 'Variable', color: 'text-yellow-600', icon: }; - return { label: 'Très variable', color: 'text-red-600', icon: }; + if (consistencyScore >= 80) return { label: 'Très régulier', color: 'text-green-600', icon: }; + if (consistencyScore >= 60) return { label: 'Assez régulier', color: 'text-blue-600', icon: }; + if (consistencyScore >= 40) return { label: 'Variable', color: 'text-yellow-600', icon: }; + return { label: 'Très variable', color: 'text-red-600', icon: }; }; const getRatioStatus = () => { - if (creationRatio >= 100) return { label: 'Équilibré+', color: 'text-green-600', icon: }; - if (creationRatio >= 80) return { label: 'Bien équilibré', color: 'text-blue-600', icon: }; - if (creationRatio >= 60) return { label: 'Légèrement en retard', color: 'text-yellow-600', icon: }; - return { label: 'Accumulation', color: 'text-red-600', icon: }; + if (creationRatio >= 100) return { label: 'Équilibré+', color: 'text-green-600', icon: }; + if (creationRatio >= 80) return { label: 'Bien équilibré', color: 'text-blue-600', icon: }; + if (creationRatio >= 60) return { label: 'Légèrement en retard', color: 'text-yellow-600', icon: }; + return { label: 'Accumulation', color: 'text-red-600', icon: }; }; const trendInfo = getTrendIcon(); @@ -80,7 +80,7 @@ export function ProductivityInsights({ data, className }: ProductivityInsightsPr

- Jour champion + Jour champion

{mostProductiveDay.completed} @@ -98,7 +98,7 @@ export function ProductivityInsights({ data, className }: ProductivityInsightsPr

- Jour créatif + Jour créatif

{mostCreativeDay.newTasks} @@ -165,7 +165,7 @@ export function ProductivityInsights({ data, className }: ProductivityInsightsPr {/* Recommandations */}

- Recommandations + Recommandations

{trend === 'down' && ( diff --git a/src/components/deadline/DeadlineOverview.tsx b/src/components/deadline/DeadlineOverview.tsx index 4516a33..067f517 100644 --- a/src/components/deadline/DeadlineOverview.tsx +++ b/src/components/deadline/DeadlineOverview.tsx @@ -14,7 +14,7 @@ export function DeadlineOverview({ metrics }: DeadlineOverviewProps) {
{/* Titre de section */}
-

Échéances Critiques

+

Échéances Critiques

Surveillance temps réel
diff --git a/src/components/jira/FilterBar.tsx b/src/components/jira/FilterBar.tsx index 38c5a1e..23af0f0 100644 --- a/src/components/jira/FilterBar.tsx +++ b/src/components/jira/FilterBar.tsx @@ -65,10 +65,10 @@ export default function FilterBar({
- Filtres + Filtres {isLoading && ( - Chargement... + Chargement... )} {hasActiveFilters && !isLoading && ( @@ -87,7 +87,7 @@ export default function FilterBar({ className="bg-purple-100 text-purple-800 text-xs cursor-pointer hover:bg-purple-200 transition-colors" onClick={() => removeFilter('components', comp)} > - {comp} × + {comp} × ))} {activeFilters.fixVersions?.slice(0, 2).map(version => ( @@ -96,7 +96,7 @@ export default function FilterBar({ className="bg-green-100 text-green-800 text-xs cursor-pointer hover:bg-green-200 transition-colors" onClick={() => removeFilter('fixVersions', version)} > - {version} × + {version} × ))} {activeFilters.issueTypes?.slice(0, 3).map(type => ( @@ -105,7 +105,7 @@ export default function FilterBar({ className="bg-orange-100 text-orange-800 text-xs cursor-pointer hover:bg-orange-200 transition-colors" onClick={() => removeFilter('issueTypes', type)} > - {type} × + {type} × ))} {activeFilters.statuses?.slice(0, 2).map(status => ( @@ -114,7 +114,7 @@ export default function FilterBar({ className="bg-blue-100 text-blue-800 text-xs cursor-pointer hover:bg-blue-200 transition-colors" onClick={() => removeFilter('statuses', status)} > - {status} × + {status} × ))} {activeFilters.assignees?.slice(0, 2).map(assignee => ( @@ -123,7 +123,7 @@ export default function FilterBar({ className="bg-yellow-100 text-yellow-800 text-xs cursor-pointer hover:bg-yellow-200 transition-colors" onClick={() => removeFilter('assignees', assignee)} > - {assignee} × + {assignee} × ))} @@ -190,7 +190,7 @@ export default function FilterBar({
{/* Types de tickets */}
-

Types de tickets

+

Types de tickets

{availableFilters.issueTypes.map(option => (