Commit Graph

49 Commits

Author SHA1 Message Date
DahoudG
a5adb84a62 Fix: Correction des types TypeScript et validation du build production
Corrections apportées:

1. **Utilisation correcte des services exportés**
   - Remplacement de apiService.X par les services nommés (chantierService, clientService, etc.)
   - Alignement avec l'architecture d'export du fichier services/api.ts

2. **Correction des types d'interface**
   - Utilisation des types officiels depuis @/types/btp
   - Chantier: suppression des propriétés custom, utilisation du type standard
   - Client: ajout des imports Chantier et Facture
   - Materiel: adaptation aux propriétés réelles (numeroSerie au lieu de reference)
   - PlanningEvent: remplacement de TacheChantier par PlanningEvent

3. **Correction des propriétés obsolètes**
   - Chantier: dateFin → dateFinPrevue, budget → montantPrevu, responsable → typeChantier
   - Client: typeClient → entreprise, suppression de chantiers/factures inexistants
   - Materiel: reference → numeroSerie, prixAchat → valeurAchat
   - PlanningEvent: nom → titre, suppression de progression

4. **Correction des enums**
   - StatutFacture: EN_ATTENTE → ENVOYEE/BROUILLON/PARTIELLEMENT_PAYEE
   - PrioritePlanningEvent: MOYENNE → CRITIQUE/HAUTE/NORMALE/BASSE

5. **Fix async/await pour cookies()**
   - Ajout de await pour cookies() dans les routes API (Next.js 15 requirement)
   - app/api/auth/logout/route.ts
   - app/api/auth/token/route.ts
   - app/api/auth/userinfo/route.ts

6. **Fix useSearchParams() Suspense**
   - Enveloppement de useSearchParams() dans un Suspense boundary
   - Création d'un composant LoginContent séparé
   - Ajout d'un fallback avec spinner

Résultat:
 Build production réussi: 126 pages générées
 Compilation TypeScript sans erreurs
 Linting validé
 Middleware 34.4 kB
 First Load JS shared: 651 kB

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 13:24:12 +00:00
DahoudG
19d0fc731f Feature: Amélioration du module Planning avec vue Gantt
Améliorations apportées:

1. **Connexion à apiService**
   - Remplacement de fetch direct par apiService.planning.getByChantier()
   - Bénéficie de l'authentification automatique par cookies HttpOnly
   - Gestion automatique des erreurs 401 avec redirection

2. **Vue Gantt interactive**
   - Ajout d'un diagramme de Gantt horizontal avec Chart.js
   - Affichage de la durée des tâches en jours
   - Code couleur par statut (vert=terminé, bleu=en cours, rouge=en retard, gris=à faire)
   - Hauteur optimisée pour une bonne lisibilité

3. **Basculement Timeline/Gantt**
   - Bouton pour alterner entre vue Timeline et vue Gantt
   - Conservation des données lors du changement de vue
   - Interface cohérente avec le reste de l'application

4. **Gestion des états vides**
   - Message informatif si aucune tâche à afficher
   - Icônes et textes explicatifs

Bénéfices:
- Meilleure visualisation du planning avec deux perspectives complémentaires
- Timeline pour la chronologie détaillée
- Gantt pour une vue d'ensemble des durées et chevauchements
- Expérience utilisateur enrichie pour la gestion de projet

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 12:06:51 +00:00
DahoudG
be04ef16d9 Fix: Connexion des pages de détails aux APIs backend avec authentification cookies
- Mise à jour de services/api.ts pour supporter l'authentification par cookies HttpOnly
  * Ajout de withCredentials: true dans l'intercepteur de requêtes
  * Modification de l'intercepteur de réponse pour gérer les 401 sans localStorage
  * Utilisation de sessionStorage pour returnUrl au lieu de localStorage
  * Suppression des tentatives de nettoyage de tokens localStorage (gérés par cookies)

- Connexion des pages de détails à apiService au lieu de fetch direct:
  * app/(main)/chantiers/[id]/page.tsx → apiService.chantiers.getById()
  * app/(main)/chantiers/[id]/budget/page.tsx → apiService.budgets.getByChantier()
  * app/(main)/clients/[id]/page.tsx → apiService.clients.getById()
  * app/(main)/materiels/[id]/page.tsx → apiService.materiels.getById()

Avantages:
- Gestion automatique de l'authentification via cookies HttpOnly (plus sécurisé)
- Redirection automatique vers /api/auth/login en cas de 401
- Code plus propre et maintenable
- Gestion d'erreurs cohérente dans toute l'application

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 12:04:35 +00:00
DahoudG
a91a34dbf8 feat: Pages de détails complètes pour chantiers, clients et matériels
PHASE 2 - FINALISATIONS FONCTIONNELLES TERMINÉES

 Pages Chantiers [id] créées:
- /chantiers/[id]: Vue d'ensemble avec statistiques et navigation
- /chantiers/[id]/budget: Suivi budgétaire détaillé avec graphiques
- /chantiers/[id]/planning: Chronologie et planning des tâches
- /chantiers/[id]/documents: Gestion des documents du chantier
- /chantiers/[id]/equipe: Liste et gestion de l'équipe affectée

 Pages Clients [id] créées:
- /clients/[id]: Fiche client complète avec coordonnées
- Onglets: Chantiers, Factures, Documents
- Statistiques et historique complet

 Pages Matériels [id] créées:
- /materiels/[id]: Fiche matériel avec informations techniques
- Calendrier de disponibilité
- Onglets: Réservations, Maintenances, Documents
- Timeline des maintenances

Fonctionnalités implémentées:
- Navigation fluide entre les pages
- Boutons retour vers listes principales
- DataTables avec tri et filtres
- Graphiques budget (bar chart, doughnut)
- Calendriers et timeline
- Tags de statut colorés
- Cards statistiques
- Responsive design

Technologies utilisées:
- PrimeReact (DataTable, Chart, Calendar, Timeline, TabView)
- Next.js App Router avec dynamic routes [id]
- TypeScript avec interfaces typées
- Integration API backend via fetch

Prochaines étapes:
- Connecter aux vraies APIs backend
- Ajouter formulaires de modification
- Implémenter actions (supprimer, modifier)
- Ajouter toasts de confirmation

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 11:52:21 +00:00
dahoud
a7f8596947 Fix: Conversion complète vers PrimeReact et corrections build
CONVERSIONS UI (8 pages):
 Remplacement de tous les composants Shadcn/UI par PrimeReact
- Card, Button, Input, Textarea, Badge → Card, Button, InputText, InputTextarea, Tag
- Conversion de toutes les icônes lucide-react en primeicons

Pages converties:
- app/(main)/aide/page.tsx
- app/(main)/aide/documentation/page.tsx
- app/(main)/aide/tutoriels/page.tsx
- app/(main)/aide/support/page.tsx
- app/(main)/messages/page.tsx
- app/(main)/messages/nouveau/page.tsx
- app/(main)/messages/envoyes/page.tsx
- app/(main)/messages/archives/page.tsx

CORRECTIONS BUILD:
 Résolution des conflits de dépendances FullCalendar
- @fullcalendar/core: 6.1.4 → ^6.1.19
- Alignement avec daygrid, timegrid, interaction, react

 Correction des erreurs TypeScript
- DataTable: Ajout de selectionMode="multiple"
- InputText number: Conversion number → string avec .toString()

 Correction des services API (3 fichiers)
- fournisseurService.ts
- notificationService.ts
- userService.ts
- Remplacement des appels apiService.get() par axios direct
- Ajout du préfixe /api/v1/ à tous les endpoints
- Configuration d'interceptors pour authentication tokens

RÉSULTAT:
 Build réussi: 126 pages générées
 0 erreurs de compilation
 0 erreurs TypeScript
 Architecture cohérente avec PrimeReact

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 10:24:30 +00:00
dahoud
e15d717a40 Fix: Correction critique de la boucle OAuth - Empêcher les échanges multiples du code
PROBLÈME RÉSOLU:
- Erreur "Code already used" répétée dans les logs Keycloak
- Boucle infinie de tentatives d'échange du code d'autorisation OAuth
- Utilisateurs bloqués à la connexion

CORRECTIONS APPLIQUÉES:
1. Ajout de useRef pour protéger contre les exécutions multiples
   - hasExchanged.current: Flag pour prévenir les réexécutions
   - isProcessing.current: Protection pendant le traitement

2. Modification des dépendances useEffect
   - AVANT: [searchParams, router] → exécution à chaque changement
   - APRÈS: [] → exécution unique au montage du composant

3. Amélioration du logging
   - Console logs pour debug OAuth flow
   - Messages emoji pour faciliter le suivi

4. Nettoyage de l'URL
   - window.history.replaceState() pour retirer les paramètres OAuth
   - Évite les re-renders causés par les paramètres dans l'URL

5. Gestion d'erreurs améliorée
   - Capture des erreurs JSON du serveur
   - Messages d'erreur plus explicites

FICHIERS AJOUTÉS:
- app/(main)/aide/* - 4 pages du module Aide (documentation, tutoriels, support)
- app/(main)/messages/* - 4 pages du module Messages (inbox, envoyés, archives)
- app/auth/callback/page.tsx.backup - Sauvegarde avant modification

IMPACT:
 Un seul échange de code par authentification
 Plus d'erreur "Code already used"
 Connexion fluide et sans boucle
 Logs propres et lisibles

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 23:45:33 +00:00
dahoud
418fac529a Fix: Correction de la boucle de redirection OAuth infinie
- Stockage des tokens dans des cookies HttpOnly côté serveur
- Suppression du stockage localStorage côté client
- Modification du middleware pour vérifier les cookies HttpOnly
- Redirection propre après authentification
- Suppression du nettoyage précoce des paramètres URL

Cela corrige le problème où le dashboard se rafraîchissait en boucle
après l'authentification Keycloak.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-19 12:37:00 +00:00
dahoud
a8825a058b Fix: Corriger toutes les erreurs de build du frontend
- Correction des erreurs TypeScript dans userService.ts et workflowTester.ts
- Ajout des propriétés manquantes aux objets User mockés
- Conversion des dates de string vers objets Date
- Correction des appels asynchrones et des types incompatibles
- Ajout de dynamic rendering pour résoudre les erreurs useSearchParams
- Enveloppement de useSearchParams dans Suspense boundary
- Configuration de force-dynamic au niveau du layout principal

Build réussi: 126 pages générées avec succès

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-18 13:23:08 +00:00
dahoud
c377291608 fix: Explicitly type label as string in statutBodyTemplate 2025-10-16 09:12:14 +00:00
dahoud
0c84ef7874 fix: Explicitly type label as string in typeBodyTemplate 2025-10-16 01:34:15 +00:00
dahoud
6f0c2c09c8 fix: Add selectionMode to DataTable for maintenances 2025-10-16 01:21:59 +00:00
dahoud
8484d4cb27 fix: Add selectionMode to DataTable for materiels 2025-10-15 23:17:01 +00:00
dahoud
515798026d fix: Add tooltip prop to maintenance EditButton and DeleteButton 2025-10-15 23:02:31 +00:00
dahoud
60bc115d27 fix: Add tooltip prop to EditButton and DeleteButton 2025-10-15 22:57:35 +00:00
dahoud
10dba332c2 fix: Replace ActionButton with Button for maintenance action to support event parameter 2025-10-15 22:53:08 +00:00
dahoud
04459d0cfa fix: Change ActionButton color from info/secondary to blue/default 2025-10-15 22:47:59 +00:00
dahoud
d2fb2def34 fix: Remove size prop from Tag components in planning/materiel/page.tsx 2025-10-15 22:34:59 +00:00
dahoud
bd59498155 fix: Add selectionMode to second DataTable in planning/equipes/page.tsx 2025-10-15 21:46:48 +00:00
dahoud
d44657dd5f fix: Add selectionMode to DataTable in planning/equipes/page.tsx 2025-10-15 21:42:05 +00:00
dahoud
c683edb250 fix: Replace timeFormat with hourFormat in Calendar components 2025-10-15 21:37:10 +00:00
dahoud
b5916fbe35 fix: Remove size prop from Tag components 2025-10-15 21:15:05 +00:00
dahoud
d537b0c1c2 fix: Use TypeConflitPlanification and GraviteConflict enums instead of strings 2025-10-15 21:10:33 +00:00
dahoud
9ba1e71041 fix: Convert phase.id to Number for phaseChantierService.resume call 2025-10-15 20:42:19 +00:00
DahoudG
6269c0d096 fix: Change Button size from normal to small 2025-10-15 20:12:57 +00:00
dahoud
bd3c342acd fix: Change Button size from 'normal' to 'small' in phases-chantier/retard/page.tsx 2025-10-15 20:06:40 +00:00
dahoud
aed2ce0182 fix: Resolve TypeScript errors in page.tsx and phases-chantier/page.tsx 2025-10-15 20:01:04 +00:00
dahoud
763ab81da3 fix: Remove incorrect client transformation in factures/page.tsx 2025-10-15 12:51:26 +00:00
dahoud
b0049c8d88 fix: Use typeFacture instead of type and add required Facture fields (dateCreation, dateModification, client) 2025-10-13 19:42:45 +00:00
dahoud
2b6fb084d3 fix: Use StatutFacture and TypeFacture enums instead of string literals 2025-10-13 18:43:23 +00:00
dahoud
bed5c8dced fix: Convert Date to ISO string in Facture state initialization 2025-10-13 18:19:17 +00:00
dahoud
369edac4a3 fix: Convert date strings to Date objects for Calendar component in factures/nouvelle 2025-10-13 18:01:26 +00:00
dahoud
77e6eb2a82 fix: Assign full Devis object instead of just ID in factures/nouvelle 2025-10-13 17:24:52 +00:00
dahoud
f22bfe5760 fix: Revert Date to ISO string conversions for local state objects (they expect Date not string) 2025-10-13 16:30:54 +00:00
dahoud
bb19e2af0d fix: Revert Date conversion for chantierData local state (expects Date not string) 2025-10-13 15:59:04 +00:00
dahoud
1d75cbf580 fix: Convert all remaining Date objects to ISO strings and fix client type in factures/nouvelle 2025-10-13 10:06:05 +00:00
dahoud
7517745505 fix: Convert Date to string for all remaining date fields in stock pages 2025-10-13 09:52:21 +00:00
dahoud
4b19fed103 fix: Convert Date to string for date fields in edit page 2025-10-13 09:50:32 +00:00
dahoud
703b8978fb fix: Convert Date to string for date fields in duplicate page 2025-10-13 08:36:43 +00:00
dahoud
f8796b0831 fix: Convert Date to string for dateEcheance in convert page 2025-10-13 08:30:49 +00:00
dahoud
67ec9bccf3 fix: Convert Date to string for dateEmission in convert page 2025-10-13 08:26:24 +00:00
dahoud
a58ceecd3d fix: Add return true to Chip onRemove handler in parametres page 2025-10-13 08:21:58 +00:00
dahoud
30cad6220b fix: Update PrimeReact to v10.8.3 and fix all compilation errors 2025-10-13 03:01:36 +00:00
dahoud
f2606f8220 fix: Comment out unavailable MeterGroup import 2025-10-02 00:38:14 +00:00
dahoud
ede2fc0645 fix: Fix all newline escapes in attributions page 2025-10-02 00:31:43 +00:00
dahoud
d437b9354a fix: Properly fix Dropdown optionLabel syntax 2025-10-02 00:26:45 +00:00
dahoud
a59a0ceaa6 fix: Fix TypeScript error in Dropdown optionLabel 2025-10-02 00:22:57 +00:00
dahoud
3d081fd77d fix: Remove all demo/uikit pages for production 2025-10-02 00:15:59 +00:00
dahoud
5bdd4b6e4f fix: Remove demo pages and add testDataService for production build 2025-10-02 00:10:01 +00:00
dahoud
b430bf3b96 Initial commit 2025-10-01 01:39:07 +00:00