- Append structlog>=25.5.0 to requirements.txt under Phase 6 D-01 comment - Create backend/services/logging.py with setup_logging(json_logs, log_level) - shared_processors: merge_contextvars first, then add_log_level, add_logger_name, PositionalArgumentsFormatter, ExtraAdder, TimeStamper(iso), StackInfoRenderer - JSON branch appends format_exc_info to shared_processors - JSONRenderer when json_logs=True, ConsoleRenderer when False - ProcessorFormatter bridges uvicorn/stdlib loggers through same chain - Idempotent: clears root handlers before installing new one - uvicorn.access propagate=False — middleware owns request logging
38 lines
683 B
Plaintext
38 lines
683 B
Plaintext
fastapi>=0.111
|
|
uvicorn[standard]>=0.29
|
|
python-multipart>=0.0.27
|
|
pydantic-settings>=2.2
|
|
pydantic[email]>=2.0
|
|
anthropic>=0.26
|
|
openai>=1.30
|
|
PyMuPDF>=1.26.7
|
|
python-docx>=1.1
|
|
pytesseract>=0.3
|
|
Pillow>=10.3
|
|
aiofiles>=23.2
|
|
httpx>=0.27
|
|
pytest>=8.2
|
|
pytest-asyncio>=1.3.0
|
|
sqlalchemy[asyncio]>=2.0.49
|
|
psycopg[binary]>=3.3.4
|
|
alembic>=1.18.4
|
|
minio>=7.2.20
|
|
celery[redis]>=5.5.0
|
|
redis>=4.6.0
|
|
aiosqlite>=0.20.0
|
|
PyJWT>=2.8.0
|
|
pwdlib[argon2]>=0.2.1
|
|
pyotp>=2.9.0
|
|
slowapi>=0.1.9
|
|
|
|
# Cloud Storage Backends (Phase 5)
|
|
cryptography>=41.0.0
|
|
google-auth-oauthlib>=1.3.1
|
|
google-api-python-client>=2.196.0
|
|
msal>=1.36.0
|
|
webdavclient3>=3.14.7
|
|
cachetools>=5.3.0
|
|
|
|
# Observability (Phase 6 — D-01)
|
|
structlog>=25.5.0
|