docs(launch): reconcile tracker — mark shipped rep/source filters + 3 stale-deferred items

- rep + source multi-select filters → SHIPPED in b97f6e94
- Waiting List + Maintenance Log tabs → SHIPPED in 8be7a6e2 (were still
  listed deferred)
- contract/reservation paper-upload misroute fix → SHIPPED in d98aa5cc
  (was still listed deferred)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-02 00:25:34 +02:00
parent b97f6e945c
commit 75fdb9fab4

View File

@@ -91,20 +91,24 @@ everything else is post-launch polish unless promoted.
spec's "on every report" — Operational uses a different spec's "on every report" — Operational uses a different
"vs period start" baseline; reconcile the two semantics if a single "vs period start" baseline; reconcile the two semantics if a single
consistent comparison is wanted. consistent comparison is wanted.
- **Rep multi-select filter**exists implicitly via the single-rep - **Rep multi-select filter****SHIPPED in b97f6e94** (Sales).
leaderboard collapse, but no explicit multi-select dropdown. Dynamic "Assigned to" multi-select populated from a window-independent
-**Source multi-select filter** — Sales has lead-category + outcome `getRepFilterOptions` (distinct assigned reps port-wide); hidden when
filters; the spec also calls for a generic `source` filter (website / the port has no assigned interests.
referral / broker / manual) on every report. -**Source multi-select filter****SHIPPED in b97f6e94** (Sales).
Static Source multi-select (website / manual / referral / broker /
other) allowlisted against `SOURCES`. Both filters thread through the 5
filtered Sales queries via a pure, unit-tested `parseSalesFilters`.
_Still open: replicate both on Operational + the other report pages._
-**Empty-state copy per report** — currently shows a skeleton; spec -**Empty-state copy per report** — currently shows a skeleton; spec
wants a "this report needs data first" hint pointing at the right wants a "this report needs data first" hint pointing at the right
onboarding step. onboarding step.
#### Phase 2 — Sales report gaps #### Phase 2 — Sales report gaps
- **Operational-style filter set on Sales** beyond stage / lead-cat / - **Operational-style filter set on Sales** — stage / lead-cat /
outcome that shipped, the cross-cutting filters above (period outcome + period comparison + rep multi-select + source multi-select
comparison, rep multi-select, source multi-select) are missing. all shipped (rep/source in b97f6e94). Sales filter set is complete.
#### Phase 2 — Operational report gaps #### Phase 2 — Operational report gaps
@@ -585,19 +589,16 @@ unproven full builds onto a same-day prod launch.
6 of 10 entities, per-role PII column whitelist. Architecture decided 6 of 10 entities, per-role PII column whitelist. Architecture decided
(per-column expression map + generic Drizzle query composer); spec (per-column expression map + generic Drizzle query composer); spec
deferred. Basic builder ships as-is. deferred. Basic builder ships as-is.
- **Berth Waiting List** — un-hide the existing `WaitingListManager` - **Berth Waiting List** — **SHIPPED in 8be7a6e2.** `WaitingListManager`
(component + API already built) + build the availability-triggered tab un-hidden + wired. _Still deferred: the availability-triggered
next-in-line notification (today only a `notifyPref` column is stored; next-in-line notification (today only a `notifyPref` column is stored;
no sender exists). Component currently orphaned; berth tab removed. no sender exists)._
- **Berth Maintenance Log** — backend (API + service) exists; needs a UI - **Berth Maintenance Log** — **SHIPPED in 8be7a6e2.** UI tab mirroring
tab mirroring the waiting-list manager. the waiting-list manager, on the existing API + service.
- **Contract/Reservation paper-upload misroute (BUG)** — the "Upload - **Contract/Reservation paper-upload misroute (BUG)** — ✅ **SHIPPED in
paper-signed copy" button on the contract/reservation tabs POSTs to the d98aa5cc.** Added contract/reservation paper-upload endpoints +
EOI-only endpoint (`/external-eoi`), filing a paper-signed pointed `ExternalEoiUploadDialog` at the right one per docType, so a
contract/reservation as an EOI. Fix: add contract/reservation paper-signed contract/reservation no longer files as an EOI.
paper-upload endpoints + point `ExternalEoiUploadDialog` at the right
one per docType. ("Mark as signed without file" already works for all
three types.)
- **Marketing + Financial reports** — remain unbuilt + now hidden; gated - **Marketing + Financial reports** — remain unbuilt + now hidden; gated
on Init 1b (website UTM/inquiry cutover) and Init 1c (invoices-module on Init 1b (website UTM/inquiry cutover) and Init 1c (invoices-module
decision) respectively. decision) respectively.