- A26 — champ `standalone` mort supprimé (0 lecteur) ; `sqlite:////data/…` ne produit plus de chemin UNC sous Windows ; `.env.example` ne promet plus PostgreSQL ; raise au boot si `APP_SECRET_KEY` vaut la valeur par défaut - A33 — rate limit : préfixes manquants (`/scim/v2/`, `/workspace/`, `/db/` + non-GET sur `/s/` et `/f/`), limite lue dans `settings.rate_limit_requests` (60 annoncés / 100 codés en dur), clé `X-Forwarded-For` seulement derrière un proxy local (anti-spoof), `_store` épuré (mémoire bornée) + test dédié - A34 — `_spawn()` : les 10 schedulers loggent leur exception et redémarrent après 10 s au lieu de mourir en silence ; 2 `logger.debug` de scheduler → warning - A35 — OpenAPI régénéré 439 → 511 chemins (`info.version 7.3.9`), README (était v6.7.0), compteur API_GUIDE, titre dupliqué retiré du ROADMAP ; le drift Python 3.12/3.13 reste noté (rebuild d'image à valider) - A36 — 4 dépendances mortes purgées de requirements.txt (aiosqlite, slowapi, loguru, packaging = 0 import) ; pyproject reste sans [project] : Docker et la CI installent requirements.txt, dupliquer les 22 deps créerait 2 sources - A43 — 15 `datetime.utcnow()` → `now(UTC).replace(tzinfo=None)` (format ISO naïf identique, warnings de dépréciation divisés : 2374 → 926) suite **1029/1029** · `ruff check app tests` OK · docs/ROADMAP/CHANGELOG/WORKLOAD à jour
23 lines
386 B
Plaintext
23 lines
386 B
Plaintext
fastapi==0.115.*
|
|
uvicorn[standard]==0.34.*
|
|
httpx==0.28.*
|
|
jinja2==3.1.*
|
|
python-multipart==0.0.*
|
|
pydantic==2.10.*
|
|
pydantic-settings==2.7.*
|
|
python-dotenv==1.0.*
|
|
itsdangerous==2.2.*
|
|
weasyprint==69.0
|
|
xhtml2pdf==0.2.*
|
|
openpyxl==3.1.*
|
|
beautifulsoup4==4.*
|
|
PyYAML==6.*
|
|
python-docx>=1.1
|
|
pypdf==6.*
|
|
python3-saml==1.16.0
|
|
authlib==1.8.0
|
|
cryptography>=42.0
|
|
pyotp==2.10.0
|
|
webauthn==2.6.0
|
|
cbor2==6.1.4
|