feat: enhance type organization and import structure

- Added detailed tasks in `TODO.md` for isolating and organizing types/interfaces across various services, including analytics, task management, and integrations.
- Updated imports in multiple files to use the new `@/services/core/database` path for consistency.
- Ensured all type imports are converted to `import type { ... }` where applicable for better clarity and performance.
This commit is contained in:
Julien Froidefond
2025-09-23 10:35:52 +02:00
parent 88ab8c9334
commit bbb4e543c4
12 changed files with 41 additions and 16 deletions

29
TODO.md
View File

@@ -152,8 +152,33 @@ src/services/
- [x] Corriger imports relatifs entre services Jira - [x] Corriger imports relatifs entre services Jira
## phase 6: cleaning ## phase 6: cleaning
- [ ] Les imports des services dans les services : pourquoi ne pas utiliser @/services/... ? - [x] Les imports des services dans les services : pourquoi ne pas utiliser @/services/... ?
- [ ] Les types & interfaces dans services : j'aimerai isoler les types dans des fihiers séparés et revoir les imports; par dossier un par un. Tant qu'à faire, il faudrait qu'on fasse toujours des "import type {} from ..." (ajouter le mot type sur l'import des types) - [ ] **Isolation et organisation des types & interfaces**
- [ ] **Analytics types** (`src/services/analytics/types.ts`)
- [ ] Extraire `TaskType`, `CheckboxType` de `manager-summary.ts`
- [ ] Extraire `KeyAccomplishment`, `UpcomingChallenge`, `ManagerSummary` de `manager-summary.ts`
- [ ] Créer `types.ts` centralisé pour le dossier analytics
- [ ] Remplacer tous les imports par `import type { ... } from './types'`
- [ ] **Task Management types** (`src/services/task-management/types.ts`)
- [ ] Analyser quels types spécifiques manquent aux services tasks/tags/daily
- [ ] Créer `types.ts` pour les types métier spécifiques au task-management
- [ ] Uniformiser les imports avec `import type { ... } from './types'`
- [ ] **Jira Integration types** (`src/services/integrations/jira/types.ts`)
- [ ] Extraire `CacheEntry` de `analytics-cache.ts`
- [ ] Créer types spécifiques aux services Jira (configs, cache, anomalies)
- [ ] Centraliser les types d'intégration Jira
- [ ] Uniformiser les imports avec `import type { ... } from './types'`
- [ ] **TFS Integration types** (`src/services/integrations/types.ts`)
- [ ] Analyser les types spécifiques à TFS dans `tfs.ts`
- [ ] Créer types d'intégration TFS si nécessaire
- [ ] Préparer structure extensible pour futures intégrations
- [ ] **Core services types** (`src/services/core/types.ts`)
- [ ] Analyser si des types spécifiques aux services core sont nécessaires
- [ ] Types pour database, system-info, user-preferences
- [ ] **Conversion des imports en `import type`**
- [ ] Analyser tous les imports de types depuis `@/lib/types` dans services
- [ ] Remplacer par `import type { ... } from '@/lib/types'` quand applicable
- [ ] Vérifier que les imports de valeurs restent normaux (sans `type`)
### Points d'attention pour chaque service: ### Points d'attention pour chaque service:
1. **Identifier tous les imports du service** (grep) 1. **Identifier tous les imports du service** (grep)

View File

@@ -1,5 +1,5 @@
import { Task, TaskStatus, TaskPriority, TaskSource } from '@/lib/types'; import { Task, TaskStatus, TaskPriority, TaskSource } from '@/lib/types';
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { getToday, parseDate, subtractDays } from '@/lib/date-utils'; import { getToday, parseDate, subtractDays } from '@/lib/date-utils';
export interface ProductivityMetrics { export interface ProductivityMetrics {

View File

@@ -1,4 +1,4 @@
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { startOfWeek, endOfWeek } from 'date-fns'; import { startOfWeek, endOfWeek } from 'date-fns';
import { getToday } from '@/lib/date-utils'; import { getToday } from '@/lib/date-utils';

View File

@@ -1,4 +1,4 @@
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { startOfWeek, endOfWeek, eachDayOfInterval, format, startOfDay, endOfDay } from 'date-fns'; import { startOfWeek, endOfWeek, eachDayOfInterval, format, startOfDay, endOfDay } from 'date-fns';
import { fr } from 'date-fns/locale'; import { fr } from 'date-fns/locale';
import { formatDateForAPI, getDayName, getToday, subtractDays } from '@/lib/date-utils'; import { formatDateForAPI, getDayName, getToday, subtractDays } from '@/lib/date-utils';

View File

@@ -125,7 +125,7 @@ export class SystemInfoService {
private static async getBackupCount(): Promise<number> { private static async getBackupCount(): Promise<number> {
try { try {
// Import dynamique pour éviter les dépendances circulaires // Import dynamique pour éviter les dépendances circulaires
const { backupService } = await import('../data-management/backup'); const { backupService } = await import('@/services/data-management/backup');
const backups = await backupService.listBackups(); const backups = await backupService.listBackups();
return backups.length; return backups.length;
} catch (error) { } catch (error) {

View File

@@ -1,8 +1,8 @@
import { promises as fs } from 'fs'; import { promises as fs } from 'fs';
import path from 'path'; import path from 'path';
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { userPreferencesService } from '../core/user-preferences'; import { userPreferencesService } from '@/services/core/user-preferences';
import { BackupUtils } from '../../lib/backup-utils'; import { BackupUtils } from '@/lib/backup-utils';
import { getToday } from '@/lib/date-utils'; import { getToday } from '@/lib/date-utils';
export interface BackupConfig { export interface BackupConfig {

View File

@@ -4,7 +4,7 @@
*/ */
import { JiraTask } from '@/lib/types'; import { JiraTask } from '@/lib/types';
import { prisma } from '../../core/database'; import { prisma } from '@/services/core/database';
import { parseDate, formatDateForDisplay } from '@/lib/date-utils'; import { parseDate, formatDateForDisplay } from '@/lib/date-utils';
export interface JiraConfig { export interface JiraConfig {

View File

@@ -1,4 +1,4 @@
import { userPreferencesService } from '../../core/user-preferences'; import { userPreferencesService } from '@/services/core/user-preferences';
import { JiraService } from './jira'; import { JiraService } from './jira';
import { addMinutes, getToday } from '@/lib/date-utils'; import { addMinutes, getToday } from '@/lib/date-utils';

View File

@@ -5,9 +5,9 @@
*/ */
import { TfsPullRequest } from '@/lib/types'; import { TfsPullRequest } from '@/lib/types';
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { parseDate, formatDateForDisplay } from '@/lib/date-utils'; import { parseDate, formatDateForDisplay } from '@/lib/date-utils';
import { userPreferencesService } from '../core/user-preferences'; import { userPreferencesService } from '@/services/core/user-preferences';
export interface TfsConfig { export interface TfsConfig {
enabled: boolean; enabled: boolean;

View File

@@ -1,4 +1,4 @@
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { Prisma } from '@prisma/client'; import { Prisma } from '@prisma/client';
import { DailyCheckbox, DailyView, CreateDailyCheckboxData, UpdateDailyCheckboxData, BusinessError, DailyCheckboxType, TaskStatus, TaskPriority, TaskSource } from '@/lib/types'; import { DailyCheckbox, DailyView, CreateDailyCheckboxData, UpdateDailyCheckboxData, BusinessError, DailyCheckboxType, TaskStatus, TaskPriority, TaskSource } from '@/lib/types';
import { getPreviousWorkday, normalizeDate, formatDateForAPI, getToday, getYesterday } from '@/lib/date-utils'; import { getPreviousWorkday, normalizeDate, formatDateForAPI, getToday, getYesterday } from '@/lib/date-utils';

View File

@@ -1,4 +1,4 @@
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { Prisma } from '@prisma/client'; import { Prisma } from '@prisma/client';
import { Tag } from '@/lib/types'; import { Tag } from '@/lib/types';

View File

@@ -1,4 +1,4 @@
import { prisma } from '../core/database'; import { prisma } from '@/services/core/database';
import { Task, TaskStatus, TaskPriority, TaskSource, BusinessError, DailyCheckbox, DailyCheckboxType } from '@/lib/types'; import { Task, TaskStatus, TaskPriority, TaskSource, BusinessError, DailyCheckbox, DailyCheckboxType } from '@/lib/types';
import { Prisma } from '@prisma/client'; import { Prisma } from '@prisma/client';
import { getToday } from '@/lib/date-utils'; import { getToday } from '@/lib/date-utils';