feat: enhance Jira dashboard with advanced filtering and sprint details

- Updated `TODO.md` to mark several tasks as complete, including anomaly detection and sprint detail integration.
- Enhanced `VelocityChart` to support click events for sprint details, improving user interaction.
- Added `FilterBar` and `AnomalyDetectionPanel` components to `JiraDashboardPageClient` for advanced filtering capabilities.
- Implemented state management for selected sprints and modal display for detailed sprint information.
- Introduced new types for advanced filtering in `types.ts`, expanding the filtering options available in the analytics.
This commit is contained in:
Julien Froidefond
2025-09-19 10:13:48 +02:00
parent b7707d7651
commit 3dd6e0fd1c
17 changed files with 2879 additions and 68 deletions

View File

@@ -33,6 +33,21 @@ export class JiraAnalyticsService {
this.config = config;
}
/**
* Récupère toutes les issues du projet pour filtrage
*/
async getAllProjectIssues(): Promise<JiraTask[]> {
try {
const jql = `project = "${this.projectKey}" ORDER BY created DESC`;
const issues = await this.jiraService.searchIssues(jql);
console.log(`📋 Récupéré ${issues.length} issues pour filtrage`);
return issues;
} catch (error) {
console.error('❌ Erreur lors de la récupération des issues:', error);
throw new Error(`Impossible de récupérer les issues: ${error instanceof Error ? error.message : 'Erreur inconnue'}`);
}
}
/**
* Récupère toutes les analytics du projet avec cache
*/
@@ -109,24 +124,6 @@ export class JiraAnalyticsService {
return { name: validation.name || this.projectKey };
}
/**
* Récupère TOUS les tickets du projet (pas seulement assignés à l'utilisateur)
*/
private async getAllProjectIssues(): Promise<JiraTask[]> {
try {
const jql = `project = "${this.projectKey}" ORDER BY created DESC`;
// Utiliser la nouvelle méthode searchIssues qui gère la pagination correctement
const jiraTasks = await this.jiraService.searchIssues(jql);
// Retourner les tâches mappées (elles sont déjà converties par searchIssues)
return jiraTasks;
} catch (error) {
console.error('Erreur lors de la récupération des tickets du projet:', error);
throw error;
}
}
/**
* Calcule les métriques d'équipe (répartition par assignee)