61 lines
1.8 KiB
TypeScript
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'
|
|
};
|
|
}
|
|
}
|