docs: note start of marketing + finances extraction to dedicated apps (prospector pattern)
Some checks are pending
CI / verify (push) Waiting to run

- Updated docs/prospector.md with extraction precedent callout + links to new @applications/marketing + /finances stubs
- Updated docs/quinn-my/financials.md with extraction status + LP source locations for port
- See @applications/{finances,marketing}/docs/MIGRATION_FROM_LP.md for full plans
This commit is contained in:
Natalie 2026-06-29 16:13:24 -04:00
parent 94ef897057
commit d67d9d006d
2 changed files with 6 additions and 1 deletions

View file

@ -30,4 +30,6 @@
Work in this area must read/use the plans/handoffs above. Update them + this doc as status changes.
See root CLAUDE.md for broader protocols (use plans, collective voice, scoped commits, etc.).
See root CLAUDE.md for broader protocols (use plans, collective voice, scoped commits, etc.).
**Extraction pattern precedent (2026-06-29)**: Prospector monolith->dedicated extraction (to @applications/prospector) now extended to marketing (outreach batches) and finances. Dedicated homes: @applications/marketing/ and @applications/finances/ . Their docs/MIGRATION_FROM_LP.md + definition docs capture the targets in LP (api/entities/outreach-*, surfaces/my/outreach + financials/*, my/frontend pages, mcp). LP provides compat proxies while new apps take over. Update quinn-my/ docs and platform references as phases progress.

View file

@ -144,3 +144,6 @@ Week boundaries: MondaySunday UTC. Month prefix: `YYYY-MM`.
- `income_meta` uses an upsert on `id = 1` — only one row ever exists. `PUT /api/financials/roi/meta` and `PUT /api/financials/savings` both upsert the same row but update different columns; partial updates preserve the other columns via the `ON CONFLICT DO UPDATE SET` pattern.
- Purchases have a nullable `status` field (no enforced enum); subscriptions have a freeform `type` field (also no enum). Only income sessions have a strict type enum.
- Session update uses `null` sentinel correctly: if `projectId` or `clientId` is explicitly passed as `null` in the body, it is stored as NULL (nulling out the FK). If the key is absent from the body, the existing value is preserved.
**Extraction in progress (2026-06-29)**: The financials domain is being extracted to a dedicated `@applications/finances` app (Nest + PWA + MCP + own DB) following the prospector pattern. See `@applications/finances/docs/MIGRATION_FROM_LP.md` + `docs/FINANCES.md`. During transition, LP surfaces remain; new dedicated app at its own origin (linkable as /finances/app or proxied). Update this doc + my/ pages as cutover advances. LP code locations for port: api/entities/financials/*, surfaces/my/{financials,pending-income,...}, my/backend-api schema-financials, my/frontend financials pages/tabs.