- Ajouter les états sortField et sortOrder au composant PageContrats - Modifier le hook useContrats pour passer sort et order à l'API - Adapter l'endpoint /api/contrats pour supporter les paramètres de tri dynamiques - Rendre les headers 'Début' et 'Fin' cliquables avec indicateurs visuels (▲/▼) - Tri par défaut: date de fin décroissante (contrats les plus proches d'expirer en premier)
4.7 KiB
4.7 KiB
| applyTo |
|---|
| ** |
Instructions pour les IA Copilot - Espace Paie Odentas
📋 Context du Projet
Nom du projet : Nouvel Espace Paie Odentas Type : Application Web Next.js 14 (Full-Stack) Langage principal : TypeScript + React Base de données : Supabase (PostgreSQL) Authentification : Supabase Auth + 2FA TOTP Hébergement : Vercel (région cdg1 - Paris)
🎯 Architecture du Projet
Stack Technologique
- Frontend : Next.js 14, React 18, TypeScript, Tailwind CSS
- Backend : Next.js API Routes, TypeScript
- Authentification : Supabase Auth, TOTP 2FA
- Base de données : Supabase PostgreSQL
- Stockage : AWS S3, Supabase Storage
- Signatures électroniques : Docuseal
- Analytics : PostHog
- PDF : PDFMonkey
Structure des Dossiers
/app → Next.js App Router (pages et layouts)
/app/api → API Routes (devraient être sur cdg1 dans vercel.json)
/components → Composants React réutilisables
/lib → Utilitaires et helpers
/hooks → Hooks React personnalisés
/templates-mails → Templates d'emails HTML
/public → Assets statiques
🔑 Points Importants
1. Authentification & Sécurité
- Toujours utiliser
createRouteHandlerClientpour les routes API - Le 2FA TOTP est activable mais optionnel
- Les statuts MFA sont : "verified" (activé) et autres (désactivé)
- Important : Comparer avec
!== "verified"au lieu de=== "unverified"(le type n'existe pas)
2. Configuration Vercel
- Région des Functions API : cdg1 (Paris) - À MAINTENIR dans vercel.json
- Les functions ne doivent PAS être sur iad1 (risque de panne)
- Configuration dans
vercel.json:"regions": ["cdg1"]
3. Base de Données
- Tables principales :
profiles→ Utilisateursorganizations→ Entreprises/clientsemployees→ Salariéscontracts→ Contrats CDDU et RGpayslips→ Fiches de paiecotisations→ Cotisations mensuellessalary_transfers→ Virements salaires
4. Régimes de Contrats
- CDDU : CDD d'usage (intermittents du spectacle)
CDDU_MONO: Mono-moisCDDU_MULTI: Multi-mois
- RG : Régime Général (salaires classiques)
5. Composants Clés
Formulaire CDDU
- Fichier :
components/contrats/NouveauCDDUForm.tsx - Contient un bouton calculatrice pour saisir les montants
- Utilise le composant
Calculatorpour les calculs - Support des deux régimes (CDDU et RG)
Calculatrice
- Fichier :
components/Calculator.tsx - Modale draggable avec focus
- Important : Vérifier que le focus ne capture pas les autres champs
- Utiliser
calculatorRef.current.contains(document.activeElement)pour vérifier le focus
6. Hooks Personnalisés
useDemoMode()→ Mode démo activé/désactivéusePageTitle()→ Définir le titre de la pageusePostHog()→ Analytics PostHog
✅ Standards de Code
TypeScript
- Toujours définir les types explicitement
- Utiliser les enums pour les statuts
- Valider les types de statuts MFA avec
!==plutôt que=== - JAMAIS d'emojis dans le code (commentaires, messages, etc.)
Composants React
- Utiliser "use client" pour les composants interactifs
- Préférer les fonctions pures
- Gestion du focus : vérifier que le focus est bien sur l'élément avant de capturer les événements
- Pour l'UI/UX : Uniquement des icônes Lucide React (depuis
lucide-react) - JAMAIS d'emojis dans l'interface utilisateur
Styling
- Utiliser Tailwind CSS avec les utilitaires de base
- Palette de couleurs : slate, indigo, orange, green, red
- Réutiliser les classes composables (flex, gap, etc.)
🐛 Corrections Récentes
- ✅ Ajout du bouton calculatrice au formulaire CDDU
- ✅ Correction des comparaisons de statut MFA (unverified → !== "verified")
- ✅ Correction du focus trap de la calculatrice
- ✅ Migration des API Functions de iad1 vers cdg1
📝 Conventions de Commit
feat:→ Nouvelle fonctionnalitéfix:→ Correction de bugchore:→ Tâche de maintenancestyle:→ Changements de style uniquementrefactor:→ Refactorisation de code
Exemple : fix: Corriger focus trap de la calculatrice
- Toujours proposer un git commit et un git push à la fin d'une modification.
⚠️ Points d'Attention
- Région Vercel : Toujours vérifier que cdg1 est défini dans vercel.json
- Authentification : Ne jamais exposer les tokens en client-side
- Focus management : Toujours vérifier le focus avant de capturer les événements clavier
- Typage MFA : Utiliser
!== "verified"pour les comparaisons, jamais=== "unverified" - Build local : Tester avec
npm run buildavant de pousser