docs: Ajouter instructions Copilot à la racine du projet
This commit is contained in:
parent
ed8bc7c156
commit
1d49bdac82
1 changed files with 127 additions and 0 deletions
127
.copilot-instructions.md
Normal file
127
.copilot-instructions.md
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
# Instructions pour 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 `createRouteHandlerClient` pour 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` :
|
||||
```json
|
||||
"regions": ["cdg1"]
|
||||
```
|
||||
|
||||
### 3. Base de Données
|
||||
- Tables principales :
|
||||
- `profiles` → Utilisateurs
|
||||
- `organizations` → Entreprises/clients
|
||||
- `employees` → Salariés
|
||||
- `contracts` → Contrats CDDU et RG
|
||||
- `payslips` → Fiches de paie
|
||||
- `cotisations` → Cotisations mensuelles
|
||||
- `salary_transfers` → Virements salaires
|
||||
|
||||
### 4. Régimes de Contrats
|
||||
- **CDDU** : CDD d'usage (intermittents du spectacle)
|
||||
- `CDDU_MONO` : Mono-mois
|
||||
- `CDDU_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 `Calculator` pour 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 page
|
||||
- `usePostHog()` → 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 bug
|
||||
- `chore:` → Tâche de maintenance
|
||||
- `style:` → Changements de style uniquement
|
||||
- `refactor:` → Refactorisation de code
|
||||
|
||||
## ⚠️ Points d'Attention
|
||||
|
||||
1. **Région Vercel** : Toujours vérifier que cdg1 est défini dans vercel.json
|
||||
2. **Authentification** : Ne jamais exposer les tokens en client-side
|
||||
3. **Focus management** : Toujours vérifier le focus avant de capturer les événements clavier
|
||||
4. **Typage MFA** : Utiliser `!== "verified"` pour les comparaisons, jamais `=== "unverified"`
|
||||
5. **Build local** : Tester avec `npm run build` avant de pousser
|
||||
Loading…
Reference in a new issue