- Add ia_dev submodule (projects/smart_ide on forge 4nk) - Document APIs, orchestrator, gateway, local-office, rollout - Add systemd/scripts layout; relocate setup scripts - Remove obsolete nginx/enso-only docs from this repo scope
1.6 KiB
1.6 KiB
Local Office API — Feature
Objectif
Exposer sur cette machine une API REST permettant à des applications tierces d’uploader, lister, télécharger, modifier (commandes) et supprimer des fichiers Office (docx, xlsx, pptx).
Impacts
- Applications tierces : consomment l’API avec une clé (header
X-API-Key). - Stockage : répertoire local (
STORAGE_PATH) et métadonnées en SQLite (DATABASE_PATH). - Sécurité : pas de secret dans le dépôt ;
API_KEYSen env ou.env. Isolation par clé API (chaque document est lié à la clé qui l’a créé).
Modifications
- Backend : FastAPI, auth par clé API, rate limiting (slowapi), CORS.
- Routes :
POST/GET/DELETE /documents,GET /documents/:id,GET /documents/:id/file,POST /documents/:id/commands. - Moteur d’édition : python-docx pour les commandes
replaceTextetinsertParagraphsur les docx. xlsx/pptx non implémentés (réponse 400). - Config :
.env.example; variablesAPI_KEYS,STORAGE_PATH,DATABASE_PATH,MAX_UPLOAD_BYTES,RATE_LIMIT_PER_MINUTE.
Modalités de déploiement
- Sur cette machine :
./run.shouAPI_KEYS=... uvicorn app.main:app --host 0.0.0.0 --port 8000. - En production (ex. infra 4NK) : mettre un reverse proxy (Nginx) devant l’API, TLS, et définir les variables depuis
.secrets/<env>/ou la config d’hébergement.
Modalités d’analyse
- Logs : sortie standard (niveau INFO).
- Vérifier que les documents sont bien isolés par clé (tester avec deux clés différentes).
- Tester rate limit : dépasser
RATE_LIMIT_PER_MINUTErequêtes/minute par clé et vérifier 429.