fastapi==0.136.* # Pin EXPLICITE : fastapi n'exige que starlette>=0.46.0 — sans ce pin, un # environnement existant peut garder une starlette vulnérable. # >= 0.49.1 : corrige CVE-2025-54121 et CVE-2025-62727. starlette>=0.49.1,<1.0 uvicorn[standard]==0.32.* httpx==0.27.* pydantic-settings==2.6.* # Requis par FastAPI pour les uploads multipart (UploadFile) — import de PDF. python-multipart==0.0.* pydantic # Comptage de tokens pour la jauge de contexte (UI chat drawer). # L'encodage cl100k_base (GPT-4/3.5) donne une approximation correcte pour # la plupart des modeles Llama/Gemma/Mistral (~5-10% d'ecart) — suffisant # pour une jauge visuelle. tiktoken==0.8.* # Import de PDF de regles (-> GameSystem). Extraction de la couche texte # (born-digital) avec repli OCR par page pour les scans. # - pymupdf : extraction texte + rasterisation des pages (pas besoin de poppler) # - pytesseract + Pillow : OCR Tesseract sur les pages sans couche texte # (le binaire tesseract-ocr est installe dans le Dockerfile, langues fra+eng) pymupdf==1.24.* pytesseract==0.3.* # 12.2+ : corrige 6 CVE de parsing d'images (surface critique : pages de PDF # uploadés par l'utilisateur rasterisées puis passées à l'OCR). Pillow==12.2.*