# NoteToQuote — Décisions d'autonomie

## Format
Chaque entrée : date, contexte, décision prise, justification.

---

## 2026-05-25

### D001 — Structure du projet
- **Contexte :** Brief ne précise pas l'organisation des dossiers dans le repo
- **Décision :** `module/notetoquote/` pour le module PHP, `backend/` pour Node.js
- **Justification :** Séparation claire des deux livrables dans un seul repo

### D002 — Instance Dolibarr de test
- **Contexte :** Deux instances Dolibarr trouvées sur le serveur : mlsolutions et nadelie
- **Décision :** Déployer dans `/var/www/html/mlsolutions/dolibarr/htdocs/custom/notetoquote/`
- **Justification :** Instance mlsolutions en premier dans la liste, semble être l'instance principale

### D003 — Gestionnaire de tests backend
- **Contexte :** Brief mentionne Jest ou Vitest
- **Décision :** Vitest (natif ESM, plus rapide avec TypeScript)
- **Justification :** Meilleure intégration TypeScript, configuration plus simple

### D004 — Rate limiting in-memory vs Redis
- **Contexte :** Brief mentionne Redis ou en mémoire pour le rate limiting par licence
- **Décision :** In-memory avec Map + TTL pour la v1
- **Justification :** Évite une dépendance Redis supplémentaire pour la v1 ; à migrer Redis si besoin de scalabilité

### D005 — Clés de licence hashées
- **Contexte :** Brief spécifie de hasher les clés en base (section 19d)
- **Décision :** Implémenter avec crypto.createHash('sha256') côté Node, et encode(key::text) côté Supabase
- **Justification :** Conformité spec

### D006 — Format des fichiers de langue Dolibarr
- **Contexte :** Le brief (section 13) nommait les fichiers `*.lang.php` avec du code PHP `$langs->trans("key") = "val"` — invalide en PHP
- **Décision :** Fichiers `.lang` en plain text format `Key=Value` (un par ligne)
- **Justification :** Format réel Dolibarr confirmé par inspection de `/var/www/html/mlsolutions/dolibarr/htdocs/langs/` — tous les fichiers de langue Dolibarr sont des `.lang` plain text

### D007 — Statut du module PHP dans Dolibarr test
- **Contexte :** Deux instances Dolibarr (mlsolutions, nadelie)
- **Décision :** Module déployé dans mlsolutions uniquement
- **Justification :** Instance principale identifiée par ordre alphabétique ; nadelie peut servir de test indépendant plus tard
