refactor: remove unused analytics actions and integrate metrics directly

- Deleted `analytics.ts` and `deadline-analytics.ts` as they were no longer needed.
- Integrated `AnalyticsService` and `DeadlineAnalyticsService` directly into `HomePage` and `DailyPage`, streamlining data fetching.
- Updated components to utilize the new metrics structure, ensuring proper data flow and rendering.
This commit is contained in:
Julien Froidefond
2025-09-23 22:07:52 +02:00
parent 21e1f68921
commit 11ebe5cd00
9 changed files with 107 additions and 252 deletions

View File

@@ -1,68 +1,13 @@
'use client';
import { useState, useEffect, useTransition } from 'react';
import { DeadlineMetrics } from '@/services/analytics/deadline-analytics';
import { getDeadlineMetrics } from '@/actions/deadline-analytics';
import { Card } from '@/components/ui/Card';
import { DeadlineRiskCard } from './DeadlineRiskCard';
import { CriticalDeadlinesCard } from './CriticalDeadlinesCard';
import { DeadlineSummaryCard } from './DeadlineSummaryCard';
export function DeadlineOverview() {
const [metrics, setMetrics] = useState<DeadlineMetrics | null>(null);
const [error, setError] = useState<string | null>(null);
const [isPending, startTransition] = useTransition();
interface DeadlineOverviewProps {
metrics: DeadlineMetrics;
}
useEffect(() => {
const loadMetrics = () => {
startTransition(async () => {
try {
setError(null);
const response = await getDeadlineMetrics();
if (response.success && response.data) {
setMetrics(response.data);
} else {
setError(response.error || 'Erreur lors du chargement des échéances');
}
} catch (err) {
setError(err instanceof Error ? err.message : 'Erreur lors du chargement des échéances');
console.error('Erreur échéances:', err);
}
});
};
loadMetrics();
}, []);
if (isPending) {
return (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
{Array.from({ length: 3 }).map((_, i) => (
<Card key={i} className="p-6 animate-pulse">
<div className="h-4 bg-[var(--border)] rounded mb-4 w-1/2"></div>
<div className="h-20 bg-[var(--border)] rounded"></div>
</Card>
))}
</div>
);
}
if (error) {
return (
<Card className="p-6 mb-8">
<div className="text-center">
<div className="text-red-500 text-4xl mb-2"></div>
<h3 className="text-lg font-semibold mb-2">Erreur de chargement des échéances</h3>
<p className="text-[var(--muted-foreground)] text-sm">{error}</p>
</div>
</Card>
);
}
if (!metrics) {
return null;
}
export function DeadlineOverview({ metrics }: DeadlineOverviewProps) {
return (
<div className="space-y-6">