Remove Google Sheets mirror entirely (cut Google dependency) #13
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision: remove the Google Sheets mirror entirely — Postgres is the sole source of truth; being independent of Google infra is preferred and the second data path adds no value.
Scope
backoffice/app/sheets.pyandbackoffice/app/import_from_sheets.py.backoffice/app/app.py(mirror_entity,mirror_async,_mirror_worker, the/api/syncroute, andmirror_async(...)calls in add/edit/delete).n8n/renewal-reminder.json(read renewals from the DB API instead).gspread/google-api deps fromrequirements.txt.sheets/SCHEMA.md/READMEreferences.Acceptance
grep -ri sheet backoffice/ n8n/returns nothing load-bearing.Closes the old #5 (atomic mirror) as moot.
Implemented (commit
319218con main):backoffice/app/sheets.pyandbackoffice/app/import_from_sheets.py.mirror_entity/mirror_async/_mirror_worker, the/api/syncroute, and allmirror_async(...)calls frombackoffice/app/app.py; dropped thetab/mirrorkeys fromdb.py'sTABLES.n8n/renewal-reminder.jsonat the CRM's own API (GET /api/clients,POST /api/activity_log) instead of the Google Sheets nodes.SHEET_ID/GOOGLE_SA_JSONfrombackoffice/.env.exampleandbackoffice/docker-compose.yml; dropped the now-unusedrequestsdep fromrequirements.txt(PyJWT[crypto]kept — still used bybooking_api.pyfor booking tokens). Retired the local service-account key in.secrets/(renamed, pending manual rotation/revocation in the Google Cloud console).README.md,Documentation.md,TODO.md,playbooks/tier-a-google.md,playbooks/tier-b-selfhosted.md; deletedsheets/SCHEMA.md.Acceptance checks: full backoffice test suite passes (123 passed), app compiles clean, and
grep -ri sheet backoffice/ n8n/returns nothing load-bearing (fixed two stray references inbackoffice/db/init.sqland the dashboard footer along the way).Closes the old #5 (atomic mirror) as moot, per this issue's own note.