docs(billing): record NexaCloud surgical deploy (inert; .env + Cursor WIP preserved)

This commit is contained in:
gsinghpal
2026-05-27 15:32:15 -04:00
parent fe98fadf61
commit 97cce8c755

View File

@@ -120,11 +120,18 @@ All four chunks of #2 are now built. The brainstorm "which slice" question resol
`nexacloud_dsn`, all charges `plan_id` NULL (rating cron no-op), no webhooks queued
(dispatch cron no-op), inbound API 401s with no key configured. Synced to
`/opt/odoo/custom-addons` + `-i` via the restart-safe recipe.
- **NexaCloud: NOT deployed (deliberately).** `deploy.sh` does `rsync --delete` of the
**local working tree** then `--no-cache` rebuild — it would ship the concurrent
**uncommitted Cursor WIP** (7 files) to prod. My 2b/2c is also feature-flagged OFF and
the app wasn't boot-tested. Deploy only AFTER: Cursor's WIP is committed/finished, the
app boots clean, and `ODOO_BILLING_*` config is set (otherwise it's inert anyway).
- **NexaCloud (prod, `vps.nexasystems.ca` / 192.168.1.250): DEPLOYED — INERT.** Did NOT
use `./deploy.sh` (it `rsync --delete`s the working tree → would have shipped the
concurrent **uncommitted Cursor WIP** (7 files) AND wiped the gitignored prod `.env`
files). Instead deployed **surgically**: rsync of ONLY my 6 committed billing files (no
`--delete`; `.env` + Cursor's files untouched), `docker compose build backend`,
**boot-tested in a throwaway container** (`run --rm --no-deps backend python -c "import
app.main"` → BOOT_OK) before swapping, then `up -d backend`. `nexacloud-api` healthy,
`/health` OK. Feature OFF: `ODOO_BILLING_ENABLED` unset → `/billing/webhooks/central`
returns 404 and no usage is pushed. Activate later by setting `ODOO_BILLING_*` in
`/opt/nexacloud/.env` (+ compose env passthrough) once the Odoo side is wired.
**NOTE:** Cursor's 7-file WIP remains uncommitted locally and was never deployed — when
Cursor finishes, a normal `./deploy.sh` will ship it (and re-sync `.env`).
**Remaining before go-live (gated on infra / ops you do):**
1. Grant the read-only DSN (`fusion_billing.nexacloud_dsn`) — see the module README — then