# FilaDex — notes pour Claude Code

- App perso de Valentin, hébergée sur o2switch (cPanel « Setup Node.js App », Passenger). Fichier de démarrage : `app.js`.
- SQLite via `node:sqlite` (pas `better-sqlite3`, qui échoue sur o2switch à cause d'une GLIBC trop ancienne). Node ≥ 22.13.
- Connexion par Sésame (OIDC, `openid-client` v5, CommonJS). `AUTH_MODE=dev` pour développer sans Sésame.
- Le serveur est en CommonJS ; tout `public/js` est en modules ES pour le navigateur.
- Le calcul 3D se fait uniquement côté navigateur (manifold-3d WASM dans un Web Worker). Le serveur ne stocke que les scripts, les réglages et les miniatures ; les STL sont générés à la demande.
- Le script d'un modèle s'exécute sans accès réseau (noms masqués dans `core.js` + suppression dans `worker.js`) : ne pas relâcher ce garde-fou, des éditeurs invités peuvent écrire des scripts.
- Coûts API : garder les curseurs gratuits, consignes système en cache (`cache_control`), quotas `MAX_GENERATIONS_PER_DAY` et `MONTHLY_BUDGET_USD`.
- Stock de filament (`src/stock.js`) : références par code-barres (`products`), bobines physiques (`spools`, id court = code de l'étiquette QR `/b/CODE`), consommations (`usages`). Stock personnel par compte.
- Imprimante (`src/bambu.js`) : API cloud Bambu NON officielle (OpenBambuAPI) — connexion par code e-mail (`sendemail/code` puis `user/login`), historique `my/tasks` (`amsDetailMapping` = grammes par emplacement), synchro par cron cPanel (`/api/cron/bambu?key=`) ou par le relais `relay/` (`/api/relay/tasks`). Valentin garde le mode cloud (pas de mode LAN) pour Bambu Handy. AMS lite : le « remain » reste à 100 %, ne pas s'en servir.
- Textes de l'interface en français, ton simple.
- Tests : `npm test` (moteur 3D sur l'exemple de la lampe).

## Pistes suivantes
- Relais en direct : MQTT cloud Bambu (`u_{uid}`, topic `device/{serial}/report`) pour suivre l'impression en cours et remplir les emplacements AMS via `tray_uuid` des puces RFID.
- Réponses de Claude en diff (seulement les lignes changées) pour réduire le coût des retouches.
- Comparaison de deux versions côte à côte.
- Export 3MF avec plusieurs plateaux.
- Rendu plus original de la visionneuse (inspiration Lusion).
