diff --git a/src/components/ui/AchievementCard.tsx b/src/components/ui/AchievementCard.tsx
index 065be58..6384105 100644
--- a/src/components/ui/AchievementCard.tsx
+++ b/src/components/ui/AchievementCard.tsx
@@ -34,9 +34,14 @@ export function AchievementCard({
maxTags = 2,
className = ''
}: AchievementCardProps) {
+ // Détecter si c'est un todo (ID commence par "todo-")
+ const isTodo = achievement.id.startsWith('todo-');
+
return (
{/* Barre colorée gauche */}
@@ -81,8 +86,8 @@ export function AchievementCard({
)}
- {/* Count de todos */}
- {achievement.todosCount !== undefined && achievement.todosCount > 0 && (
+ {/* Count de todos - seulement pour les tâches, pas pour les todos standalone */}
+ {!isTodo && achievement.todosCount !== undefined && achievement.todosCount > 0 && (
📋
{achievement.todosCount} todo{achievement.todosCount > 1 ? 's' : ''}
diff --git a/src/services/analytics/manager-summary.ts b/src/services/analytics/manager-summary.ts
index ef03898..3d8f950 100644
--- a/src/services/analytics/manager-summary.ts
+++ b/src/services/analytics/manager-summary.ts
@@ -132,22 +132,6 @@ export class ManagerSummaryService {
gte: startDate,
lte: endDate
}
- },
- // Tâches avec status 'done' et updatedAt dans la période
- {
- status: 'done',
- updatedAt: {
- gte: startDate,
- lte: endDate
- }
- },
- // Tâches avec status 'archived' récemment (aussi des accomplissements)
- {
- status: 'archived',
- updatedAt: {
- gte: startDate,
- lte: endDate
- }
}
]
},
@@ -233,15 +217,12 @@ export class ManagerSummaryService {
// Convertir priorité task en impact accomplissement
let impact: 'high' | 'medium' | 'low';
- if (priority === 'high') {
+ if (priority === 'high' || priority === 'urgent') {
impact = 'high';
} else if (priority === 'medium') {
impact = 'medium';
} else {
- // Pour les low priority, ne garder que si c'est vraiment significatif
- if (!this.isSignificantTask(task.title)) {
- continue;
- }
+ // Pour les low priority, tout prendre
impact = 'low';
}
@@ -300,7 +281,7 @@ export class ManagerSummaryService {
}
return b.completedAt.getTime() - a.completedAt.getTime();
})
- .slice(0, 12); // Plus d'items maintenant qu'on filtre mieux
+ // Pas de limite - afficher tous les accomplissements
}
/**
@@ -393,15 +374,12 @@ export class ManagerSummaryService {
// Convertir priorité task en priorité challenge
let priority: 'high' | 'medium' | 'low';
- if (taskPriority === 'high') {
+ if (taskPriority === 'high' || taskPriority === 'urgent') {
priority = 'high';
} else if (taskPriority === 'medium') {
priority = 'medium';
} else {
- // Pour les low priority, ne garder que si c'est vraiment challengeant
- if (!this.isChallengingTask(task.title)) {
- return;
- }
+ // Pour les low priority, tout prendre
priority = 'low';
}
@@ -463,7 +441,7 @@ export class ManagerSummaryService {
const priorityOrder = { high: 3, medium: 2, low: 1 };
return priorityOrder[b.priority] - priorityOrder[a.priority];
})
- .slice(0, 10); // Plus d'items maintenant qu'on filtre mieux
+ // Pas de limite - afficher tous les challenges
}
/**
@@ -501,50 +479,6 @@ export class ManagerSummaryService {
return blockers;
}
- /**
- * Détermine si une tâche est significative
- */
- private static isSignificantTask(title: string): boolean {
- const significantKeywords = [
- 'release', 'deploy', 'launch', 'milestone',
- 'architecture', 'design', 'strategy',
- 'integration', 'migration', 'optimization'
- ];
- return significantKeywords.some(keyword => title.toLowerCase().includes(keyword));
- }
-
- /**
- * Détermine si une checkbox est significative
- */
- private static isSignificantCheckbox(text: string): boolean {
- const content = text.toLowerCase();
- return content.length > 30 || // Checkboxes détaillées
- content.includes('meeting') ||
- content.includes('review') ||
- content.includes('call') ||
- content.includes('presentation');
- }
-
- /**
- * Détermine si une tâche représente un défi
- */
- private static isChallengingTask(title: string): boolean {
- const challengingKeywords = [
- 'complex', 'difficult', 'challenge',
- 'architecture', 'performance', 'security',
- 'integration', 'migration', 'optimization'
- ];
- return challengingKeywords.some(keyword => title.toLowerCase().includes(keyword));
- }
-
- /**
- * Analyse les patterns dans les checkboxes pour identifier des enjeux
- */
- private static analyzeCheckboxPatterns(): UpcomingChallenge[] {
- // Pour l'instant, retourner un array vide
- // À implémenter selon les besoins spécifiques
- return [];
- }
/**
* Calcule les métriques résumées