Files
peakskills/lib
Julien Froidefond 26496e7473 refactor: integrate EvaluationClient and remove legacy evaluation actions
- Added EvaluationClient to clients/index.ts and created an instance for use.
- Updated client-wrapper.tsx and welcome-screen.tsx to utilize EvaluationClient for evaluation actions.
- Removed obsolete evaluation-actions.ts file to streamline codebase and reduce redundancy.
2025-08-25 08:06:23 +02:00
..
2025-08-20 15:43:24 +02:00
2025-08-20 15:43:24 +02:00
2025-08-20 15:43:24 +02:00

Server-Side Utilities Architecture

Cette architecture respecte les principes SOLID en séparant clairement les responsabilités côté serveur et en évitant le code mort.

Structure

lib/
├── evaluation-utils.ts       # Utilitaires pour les évaluations
├── evaluation-actions.ts     # Actions d'évaluation
├── score-utils.ts            # Utilitaires pour les scores
├── skill-file-loader.ts      # Chargement des fichiers de skills
├── types.ts                  # Types TypeScript généraux
├── admin-types.ts            # Types pour l'administration
├── utils.ts                  # Utilitaires généraux
├── category-icons.ts         # Icônes des catégories
├── tech-colors.ts            # Couleurs des technologies
├── pattern-colors.ts         # Couleurs des patterns
└── README.md                 # Ce fichier

Responsabilités

evaluation-utils.ts

  • Utilitaires pour les évaluations côté client
  • Génération de données pour les graphiques radar

evaluation-actions.ts

  • Actions d'évaluation côté serveur
  • Gestion des profils utilisateur

score-utils.ts

  • Calcul des scores et niveaux de compétences
  • Logique métier pour les évaluations

skill-file-loader.ts

  • Chargement des fichiers de compétences depuis le système de fichiers
  • Parsing des données JSON

types.ts

  • Types TypeScript généraux de l'application
  • Interfaces pour les entités principales

admin-types.ts

  • Types pour l'administration et les statistiques
  • Interfaces pour TeamMember, TeamStats, DirectionStats

Services d'authentification

AuthClient (client-side uniquement)

  • login() - Authentification côté client
  • getCurrentUser() - Récupération utilisateur côté client
  • logout() - Déconnexion côté client

AuthService (server-side uniquement)

  • getUserUuidFromCookie() - Récupère l'UUID depuis le cookie côté serveur
  • isUserAuthenticated() - Vérifie l'authentification côté serveur

Séparation client/serveur

  • clients/domains/auth-client.ts - Côté client uniquement (React components, hooks)
  • services/auth-service.ts - Côté serveur uniquement (API routes, pages)
  • Pas de duplication entre les deux services

Utilisation

Import direct des services

import { AuthService } from "@/services";
import { SkillsService, TeamsService } from "@/services";
import { evaluationService } from "@/services/evaluation-service";

Utilisation dans les pages

export default async function HomePage() {
  const userUuid = await AuthService.getUserUuidFromCookie();

  if (!userUuid) {
    redirect("/login");
  }

  const [userEvaluation, skillCategories, teams] = await Promise.all([
    evaluationService.getServerUserEvaluation(userUuid!),
    SkillsService.getSkillCategories(),
    TeamsService.getTeams(),
  ]);
}

Avantages

  • Séparation claire : Chaque fichier a une seule responsabilité
  • Pas de code mort : Utilisation directe des services existants
  • Maintenabilité : Code organisé et facile à comprendre
  • Réutilisabilité : Fonctions modulaires et indépendantes
  • Testabilité : Chaque module peut être testé séparément
  • Évolutivité : Facile d'ajouter de nouvelles fonctionnalités
  • Architecture logique : L'authentification est dans les services d'auth
  • Séparation client/serveur : Pas de confusion entre les deux environnements
  • Noms cohérents : AuthService pour le serveur, AuthClient pour le client
  • Imports directs : Plus de wrapper inutile, appel direct des services
  • Simplicité : Architecture claire et directe