319218ce21
Test backoffice (smb-crm) / test (push) Has been cancelled
Postgres is now the sole source of truth: delete sheets.py and import_from_sheets.py, strip mirror_entity/mirror_async/_mirror_worker and POST /api/sync from app.py, drop the tab/mirror keys from db.py's TABLES. Re-point n8n/renewal-reminder.json at the CRM's own HTTP API (GET /api/clients, POST /api/activity_log) instead of the Sheets nodes, and drop SHEET_ID/GOOGLE_SA_JSON from deploy env/compose and requests from requirements.txt (PyJWT stays — still used by booking_api.py). Updates docs/README/playbooks accordingly and closes the old #5 (atomic mirror) as moot. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
14 lines
642 B
Plaintext
14 lines
642 B
Plaintext
Flask==3.0.3
|
|
# psycopg-binary 3.2.1 only publishes prebuilt wheels up to cp312 (see
|
|
# https://pypi.org/project/psycopg-binary/3.2.1/#files) — installing this
|
|
# under Python 3.13+ falls back to a source build (needs libpq headers) or
|
|
# just fails to resolve. Match the python:3.12-slim runtime everywhere
|
|
# (venv, CI, prod image) and this pin installs from wheel with no build
|
|
# toolchain needed. See docs/agents/testing.md.
|
|
psycopg[binary]==3.2.1
|
|
waitress==3.0.0
|
|
PyJWT[crypto]==2.9.0
|
|
# python:3.12-slim has no system IANA tz database; zoneinfo (used by
|
|
# availability.py for Europe/Berlin) falls back to this package for it.
|
|
tzdata==2024.1
|