docs: reflect data-model refactor in CLAUDE.md + DB schema overview
PR 15 (docs): the numbered spec files mostly described the new model already at the conceptual level, but two needed concrete updates: - 07-DATABASE-SCHEMA.md: schema overview now lists the new Yacht / Company / Reservation domains alongside the existing ones, names the partial unique indexes (idx_yoh_active, idx_br_active) that enforce exclusivity, and notes that yacht/company details are no longer stored on `clients`. - CLAUDE.md: the Conventions section now points future contributors at the new schema files, the polymorphic ownership pattern, the EoiContext/dual-path EOI flow, and the merge-token allow-list. Adds a pointer to the husky `.env*` block so it doesn't trip people up. References the new field-mapping doc and `assets/README.md`. Task 15.3 (Tier 4 golden-image PDF regression) is deferred — those tests need committed reference PDFs that come out of a real, manually verified EOI render. Best landed once the actual `assets/eoi-template.pdf` is in place; tracking as a follow-up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,16 +20,42 @@
|
||||
|
||||
### Client Domain
|
||||
|
||||
- `clients` — Anchor records for people/entities
|
||||
- `clients` — Anchor records for people/entities. Yacht and company details
|
||||
are no longer stored here — see the Yacht and Company domains.
|
||||
- `client_contacts` — Multi-channel contact entries per client
|
||||
- `client_addresses` — Physical addresses per client (primary + others)
|
||||
- `client_relationships` — Relationships between clients (referrals, broker, family)
|
||||
- `client_notes` — Timestamped notes on clients
|
||||
- `client_tags` — Tags assigned to clients
|
||||
- `client_merge_log` — Audit trail of client merges
|
||||
|
||||
### Yacht Domain
|
||||
|
||||
- `yachts` — First-class yacht records. Polymorphic ownership via
|
||||
`current_owner_type` (`'client' | 'company'`) + `current_owner_id`.
|
||||
- `yacht_ownership_history` — Append-only log of every transfer; partial
|
||||
unique index `idx_yoh_active` enforces a single active owner per yacht.
|
||||
- `yacht_notes`, `yacht_tags` — Notes / tags on yachts.
|
||||
|
||||
### Company Domain
|
||||
|
||||
- `companies` — Legal entities that may own yachts or be billed.
|
||||
- `company_addresses` — Addresses per company.
|
||||
- `company_memberships` — Active client ↔ company links with role
|
||||
(director / shareholder / beneficial_owner / authorised_signatory),
|
||||
start/end dates.
|
||||
|
||||
### Reservation Domain
|
||||
|
||||
- `berth_reservations` — Concrete client + yacht + berth holds with
|
||||
start/end dates and status. Partial unique index `idx_br_active`
|
||||
enforces one active reservation per berth.
|
||||
|
||||
### Interest Domain
|
||||
|
||||
- `interests` — Per-berth pipeline records, each belonging to a client (milestone dates are inline columns)
|
||||
- `interests` — Per-berth pipeline records. Each row references a
|
||||
`client_id`, `yacht_id` (the yacht in scope for the inquiry), and
|
||||
optional `berth_id`. Milestone dates are inline columns.
|
||||
- `interest_notes` — Timestamped notes on interests
|
||||
- `interest_tags` — Tags assigned to interests
|
||||
|
||||
|
||||
Reference in New Issue
Block a user