69e91fd5d0
- Extended health endpoint: DB+Redis+Storage+Worker checks with degraded status - Prometheus metrics endpoint: admin-only, text/plain format - Metrics: http_requests_total, db_pool_connections, arq_jobs_total - Structured JSON logging (structlog): timestamp, level, method, path, status, duration_ms, tenant_id - Performance: page_size max 100 enforced (422), streaming CSV export (StreamingResponse) - Scripts: seed_perf_data.py, check_indexes.py - Docs: admin-guide.md (Deploy, Backup, Restore, Env-Vars, Troubleshooting), api-overview.md - README updated: prod setup, API section, env profiles, admin-guide link - .env.example: added SECRET_KEY, STORAGE_PATH, SMTP_* vars - 38 new tests, full regression 564/564 pass (0 failures) - Ruff: all checks passed
36 lines
490 B
Plaintext
36 lines
490 B
Plaintext
# LeoCRM v1.0 - Production Dependencies
|
|
|
|
# Web framework
|
|
fastapi>=0.111.0,<0.116
|
|
uvicorn[standard]>=0.29.0
|
|
python-multipart>=0.0.7
|
|
|
|
# Database / ORM
|
|
sqlalchemy==2.0.35
|
|
alembic>=1.13
|
|
asyncpg>=0.29
|
|
|
|
# Validation / Settings
|
|
pydantic>=2.5
|
|
pydantic-settings>=2.1
|
|
|
|
# Auth
|
|
passlib[bcrypt]==1.7.4
|
|
bcrypt==4.0.1
|
|
|
|
# Redis / Job Queue
|
|
redis>=5.0
|
|
arq>=0.25
|
|
|
|
# File I/O
|
|
aiofiles>=23.2
|
|
|
|
# Templates (optional)
|
|
jinja2>=3.1
|
|
greenlet>=3.0
|
|
openpyxl>=3.1
|
|
|
|
# Monitoring
|
|
prometheus-client>=0.20
|
|
structlog>=24.0
|