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

@@ -4,6 +4,7 @@ import { useState, useEffect } from 'react';
import React from 'react';
import { useDaily } from '@/hooks/useDaily';
import { DailyView, DailyCheckboxType } from '@/lib/types';
import { DeadlineMetrics } from '@/services/analytics/deadline-analytics';
import { Button } from '@/components/ui/Button';
import { Card } from '@/components/ui/Card';
import { DailyCalendar } from '@/components/daily/DailyCalendar';
@@ -18,12 +19,14 @@ interface DailyPageClientProps {
initialDailyView?: DailyView;
initialDailyDates?: string[];
initialDate?: Date;
initialDeadlineMetrics?: DeadlineMetrics | null;
}
export function DailyPageClient({
initialDailyView,
initialDailyDates = [],
initialDate
initialDate,
initialDeadlineMetrics
}: DailyPageClientProps = {}) {
const {
dailyView,
@@ -214,7 +217,7 @@ export function DailyPageClient({
{/* Rappel des échéances urgentes - Desktop uniquement */}
<div className="hidden sm:block container mx-auto px-4 pt-4 pb-2">
<DeadlineReminder />
<DeadlineReminder deadlineMetrics={initialDeadlineMetrics} />
</div>
{/* Contenu principal */}

View File

@@ -1,6 +1,7 @@
import { Metadata } from 'next';
import { DailyPageClient } from './DailyPageClient';
import { dailyService } from '@/services/task-management/daily';
import { DeadlineAnalyticsService } from '@/services/analytics/deadline-analytics';
import { getToday } from '@/lib/date-utils';
// Force dynamic rendering (no static generation)
@@ -16,9 +17,10 @@ export default async function DailyPage() {
const today = getToday();
try {
const [dailyView, dailyDates] = await Promise.all([
const [dailyView, dailyDates, deadlineMetrics] = await Promise.all([
dailyService.getDailyView(today),
dailyService.getDailyDates()
dailyService.getDailyDates(),
DeadlineAnalyticsService.getDeadlineMetrics().catch(() => null) // Graceful fallback
]);
return (
@@ -26,6 +28,7 @@ export default async function DailyPage() {
initialDailyView={dailyView}
initialDailyDates={dailyDates}
initialDate={today}
initialDeadlineMetrics={deadlineMetrics}
/>
);
} catch (error) {

View File

@@ -1,5 +1,7 @@
import { tasksService } from '@/services/task-management/tasks';
import { tagsService } from '@/services/task-management/tags';
import { AnalyticsService } from '@/services/analytics/analytics';
import { DeadlineAnalyticsService } from '@/services/analytics/deadline-analytics';
import { HomePageClient } from '@/components/HomePageClient';
// Force dynamic rendering (no static generation)
@@ -7,10 +9,12 @@ export const dynamic = 'force-dynamic';
export default async function HomePage() {
// SSR - Récupération des données côté serveur
const [initialTasks, initialTags, initialStats] = await Promise.all([
const [initialTasks, initialTags, initialStats, productivityMetrics, deadlineMetrics] = await Promise.all([
tasksService.getTasks(),
tagsService.getTags(),
tasksService.getTaskStats()
tasksService.getTaskStats(),
AnalyticsService.getProductivityMetrics(),
DeadlineAnalyticsService.getDeadlineMetrics()
]);
return (
@@ -18,6 +22,8 @@ export default async function HomePage() {
initialTasks={initialTasks}
initialTags={initialTags}
initialStats={initialStats}
productivityMetrics={productivityMetrics}
deadlineMetrics={deadlineMetrics}
/>
);
}