Remove Google Sheets mirror entirely (#13)
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>
This commit is contained in:
2026-08-04 11:29:57 +02:00
parent 16500c4392
commit 319218ce21
18 changed files with 76 additions and 451 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ ongoing management. Target build time: ~half a day per client.
6. **Reception** — Gmail for the business; set a signature + canned replies.
7. **Google Business Profile** — claim/verify so they show up on Maps & Search.
8. **CRM** — add a `Clients` row (tier = A, services, monthly_fee, renewal_date, vault_ref).
9. **Handover** — share logins via Vaultwarden; record only the `vault_ref` in the sheet.
9. **Handover** — share logins via Vaultwarden; record only the `vault_ref` in the CRM.
## What to charge (suggestion)
- One-off setup: €250600 depending on pages/content.
+1 -1
View File
@@ -16,7 +16,7 @@ German-hosted infrastructure. You charge a privacy/hosting premium. Target build
4. **Lead form** — self-hosted form endpoint → n8n webhook → CRM. No third-party form service.
5. **Reception** — business mailbox; (later) the **AI receptionist** widget (Phase 6, Claude
Haiku 4.5) wired to the booking + FAQ.
6. **Credentials** — store all client logins in **Vaultwarden**; sheet holds only `vault_ref`.
6. **Credentials** — store all client logins in **Vaultwarden**; the CRM holds only `vault_ref`.
7. **CRM** — add a `Clients` row (tier = B, services, monthly_fee, renewal_date, vault_ref).
8. **Backups** — ensure the Tier-B services + CRM are in the daily backup job.