Files
towercontrol/src/actions/jira-analytics.ts
Julien Froidefond 723a44df32 feat: TFS Sync
2025-09-22 21:51:12 +02:00

61 lines
1.8 KiB
TypeScript

'use server';
import { JiraAnalyticsService } from '@/services/jira-analytics';
import { userPreferencesService } from '@/services/user-preferences';
import { JiraAnalytics } from '@/lib/types';
export type JiraAnalyticsResult = {
success: boolean;
data?: JiraAnalytics;
error?: string;
};
/**
* Server Action pour récupérer les analytics Jira du projet configuré
*/
export async function getJiraAnalytics(forceRefresh = false): Promise<JiraAnalyticsResult> {
try {
// Récupérer la config Jira depuis la base de données
const jiraConfig = await userPreferencesService.getJiraConfig();
if (!jiraConfig.enabled || !jiraConfig.baseUrl || !jiraConfig.email || !jiraConfig.apiToken) {
return {
success: false,
error: 'Configuration Jira manquante. Configurez Jira dans les paramètres.'
};
}
if (!jiraConfig.projectKey) {
return {
success: false,
error: 'Aucun projet configuré pour les analytics. Configurez un projet dans les paramètres Jira.'
};
}
// Créer le service d'analytics
const analyticsService = new JiraAnalyticsService({
enabled: jiraConfig.enabled,
baseUrl: jiraConfig.baseUrl,
email: jiraConfig.email,
apiToken: jiraConfig.apiToken,
projectKey: jiraConfig.projectKey
});
// Récupérer les analytics (avec cache ou actualisation forcée)
const analytics = await analyticsService.getProjectAnalytics(forceRefresh);
return {
success: true,
data: analytics
};
} catch (error) {
console.error('❌ Erreur lors du calcul des analytics Jira:', error);
return {
success: false,
error: error instanceof Error ? error.message : 'Erreur lors du calcul des analytics'
};
}
}