Nicolas Cantu 088eab84b7 Platform docs, services, ia_dev submodule, smart_ide project config
- 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
2026-04-03 16:07:58 +02:00

30 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Local Office API — Feature
## Objectif
Exposer sur cette machine une API REST permettant à des applications tierces duploader, lister, télécharger, modifier (commandes) et supprimer des fichiers Office (docx, xlsx, pptx).
## Impacts
- **Applications tierces** : consomment lAPI 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_KEYS` en env ou `.env`. Isolation par clé API (chaque document est lié à la clé qui la 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 `replaceText` et `insertParagraph` sur les docx. xlsx/pptx non implémentés (réponse 400).
- **Config** : `.env.example` ; variables `API_KEYS`, `STORAGE_PATH`, `DATABASE_PATH`, `MAX_UPLOAD_BYTES`, `RATE_LIMIT_PER_MINUTE`.
## Modalités de déploiement
- Sur cette machine : `./run.sh` ou `API_KEYS=... uvicorn app.main:app --host 0.0.0.0 --port 8000`.
- En production (ex. infra 4NK) : mettre un reverse proxy (Nginx) devant lAPI, TLS, et définir les variables depuis `.secrets/<env>/` ou la config dhébergement.
## Modalités danalyse
- 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_MINUTE` requêtes/minute par clé et vérifier 429.