page.transportation.booking-workspace — Acceptance Specification And RTM¶
- Page contract version:
1 - Current developer contract: Transportation
- Current source review:
0393adae1eb9e43eb32f0b736120119b46e056cb, 2026-09-12 - Historical runtime below: authenticated local runtime against the 2026-08-15 MySQL/Legacy APIs, not current native UI acceptance
Current native coverage and execution boundaries¶
| Existing scenario | Current source/test entry | Proof boundary |
|---|---|---|
SCN-010, SCN-057, SCN-058 |
tests/contract/booking-workspace-core.test.ts; apps/web/tests/booking-workspace-defaults.test.ts |
parser/route and defaults; not actual create navigation |
SCN-058 save/recovery |
apps/web/tests/booking-workspace-recovery.test.ts; packages/db-mysql/src/company-booking-create.test.ts |
helper/model and simulated transaction; actual mounted hook/network and MySQL remain separate |
SCN-050, SCN-058 Clone |
tests/contract/semantic-booking-clone.test.ts; packages/db-mysql/src/company-booking-clone.test.ts |
dispatch, atomic batch/receipt/unknown tests with injected dependencies; not real DB concurrency |
SCN-030, SCN-100 Packing/Confirmation |
tests/contract/semantic-booking-packing.test.ts; apps/web/tests/booking-packing-state.test.ts; packages/db-mysql/src/packing.test.ts |
contracts and source/preview state; browser print and physical output are separate |
SCN-055, SCN-056 instruction/file |
tests/contract/booking-instruction-reader.test.ts; tests/contract/booking-files.test.ts |
typed suggestions/file fixture; not live AI provider acceptance |
SCN-040 historical Photos |
current BookingWorkspace has no Photos tab |
old scenario retained for provenance, not a new requirement to restore Photos |
For actual DB work, tests/integration/uuid-dual-key-company-booking.test.ts and
tests/integration/booking-recovery.mysql.test.ts require their explicit environment/fixture
admission. Read the test's opt-in conditions first; a skipped live selector is not a PASS. Use the
commands in tests/README.md and record each run in the selected Task, not by changing a global
"last run" date for all scenarios.
Later evidence is owned by NS3-105, the actual Booking/Clone/Packing slices of NS3-112, and NS3-127 for Wiki. Each result retains its original revision/role/fixture. NS4-017 owns the current developer-document review and newly executed focused tests. Do not promote these historical results merely because the linked Task is CLOSED. New manual/Wiki acceptance is Client ID 2 only; Client ID 1 is undecided.
Traditional requirements traceability and test specification¶
Requirement names below match the SRS.
Existing process/command/query/data/SCN IDs are reused; no parallel ID registry is introduced.
Paths below are relative to new-system/. Execution receipts belong to NS4-017; these are expected
outcomes, not blanket PASS assertions. Source tests cannot close a C1 Legacy or C2 reference runtime case.
| Requirement / existing trace | Test input / condition | Expected result | Existing proof / remaining acceptance |
|---|---|---|---|
Identify reservation/carrier; command.transportation.create-ocean-booking-draft; SCN-057/058 |
native blank number/type/SSL, unknown key, missing nested sibling; compare C1 required Shipper and C2 reference form | native rejects invalid before write; C1/reference requirements remain separately documented | tests/contract/booking-workspace-core.test.ts; reference/C1 runtime NOT_RUN |
Same-tenant record; query.read-models.get-ocean-booking-workspace; SCN-010 |
absent/foreign UUID, unavailable Company, absent session/permission | no cross-tenant record/write; distinct missing/denied response | core route tests + company-booking-create.test.ts simulated SQL; actual role/DB isolation NOT_RUN |
Schedule/equipment intent; data.mysql.t-booking; SCN-020 |
null dates, timezone-less input, fractional/negative/>999 quantity; planned vs used values | date precision follows mapping; invalid quantity rejected; usage never replaces intent | parser/adapter tests; historical DATE/enum/length mapping differences require live metadata |
Safe save; command.transportation.update-ocean-booking-details; SCN-058 |
matching and stale expectedVersion; flag transition; second member batch fault | CAS advances once, stale update rejected, batch rollback; event insertion is not billing consumption | create/clone SQL fixtures and core contracts; real concurrent transaction NOT_RUN |
| Unknown result; same create/update IDs; SCN-058 | lost response, matching/mismatching readback, missing create, edit made after submission | compare UUID/fields/version; only confirmed missing create permits same UUID replay; unresolved disables submit; later edits retained | apps/web/tests/booking-workspace-recovery.test.ts; mounted hook/network failure injection NOT_RUN |
Clone; command.transportation.clone-ocean-booking; SCN-050/058 |
count0/10, duplicate child IDs, identical/changed receipt replay, batch fault/lost commit | reject invalid; matching receipt replays batch without duplicates; no downstream copy | tests/contract/semantic-booking-clone.test.ts, company-booking-clone.test.ts; Legacy empty response/link retention consumer test NOT_RUN |
Company/execution meaning; process.fulfillment.booking-linkage |
C2 reference Supplier/Shipper columns; several native T_LOAD executions for one Booking | no accidental role remap or native one-to-one assertion; header save does not relink | named reference/Legacy/native source comparison; migration row mapping/cardinality acceptance NOT_RUN |
Document states; process.transport.ocean-booking; SCN-100 |
reference AR then BL then SI date precedence, stored STATUS differing from list | derived status follows stated precedence; native booleans not promoted to same lifecycle | reference Ajax/DDL source; state mapping remains an explicit decision, runtime NOT_RUN |
| Packing source/restore; SCN-030/100 | different source-selection/layout policy, stale fingerprint/version, second batch fault, save then Restore | policy chooses correct source; all-or-nothing batch; Restore increments version and keeps direct metadata | packages/db-mysql/src/packing.test.ts, apps/web/tests/booking-packing-state.test.ts; real DB source/readback NOT_RUN |
| Invoice-rate boundary; SCN-030/100 | selected execution-item UUID group, changed source/order snapshot, rate denied, lost response | only intended rates change; conflict/denied prevents write; amount recalculation is not accounting posting | Packing DB fixture + tests/contract/semantic-booking-packing.test.ts; physical rates/amounts NOT_RUN |
| Preview; SCN-030/100 | row selection/unit/display options and render failure | PREVIEW/RENDER_ONLY; failure422 does not roll back Booking; no email/issuance | Packing route/state contracts; browser Print/layout/provider NOT_RUN |
| File consistency; SCN-055/058 | unsafe upload, attach failure, uncertain relation outcome, shared object deletion | reject unsafe; do not delete an object whose relation result is unknown; preserve cleanup state | tests/contract/booking-files.test.ts local-object fixture covers basic lifecycle/rejection; full uncertain/shared provider case NOT_RUN |
| AI suggestion; SCN-055/056 | local PDF, invalid type/unknown suggested field; apply to unsaved draft | validated provenance/allowlist, no implicit Booking Save | tests/contract/booking-instruction-reader.test.ts; actual provider/mounted Apply+Save NOT_RUN |
| Accessibility/role and close behavior; SCN-020/100 | keyboard-only open/edit/close, narrow viewport, dirty related panels, effective C2 role | navigable usable controls, explicit discard, no unauthorized action | shared UI/source review only; current rendered acceptance NOT_RUN |
Acceptance execution must identify revision, effective profile, role, target environment, fixture, exact action/readback and cleanup. Unresolved C2 field/state mappings remain open decisions; they are not failed requirements silently replaced by native behavior. C1 technical reconstruction remains in scope; only new C1 manual/Wiki production is deferred.
Historical runtime observations — 2026-08-15¶
The PASS values below are preserved as originally recorded for the KJ editor. Their broad "current" or "all" wording refers to that historical observation, not today's native implementation.
| Scenario ID | Runtime behavior/readback | Result |
|---|---|---|
SCN-010 |
direct real Booking detail opens through /bookings/{id} |
PASS |
SCN-020 |
all source-backed sections and 39 controls render | PASS |
SCN-030 |
Packing List action opens its existing document surface | PASS |
SCN-040 |
Manage Photos opens linked containers and upload controls | PASS |
SCN-050 |
Clone, Edit All Containers, Create Empty and EIR actions are present | PASS — Client 1 clone/container actions, Empty EIR and Return EIR ZIP downloads, and Create Empty dispatch/readback were exercised; modern Edit 4 Selected Containers rendered Equipment/Timeline/Booking-Load/Photos sections with master options loaded, bulk Remark update/readback passed, and the original values were restored; disposable Equipment/Load rows were soft-deleted through the Logistics Workspace YMS adapter |
SCN-055 |
AI instruction upload, Analyze Booking and Edit Prompt are present | PASS — Client 1 PDF fixture analyzed successfully; Review AI Results showed Booking #/SSL/ETD, Apply Results populated the editor, and the test was cancelled before save |
SCN-056 |
AI failure keeps the editor recoverable | PASS — Client 1 invalid PDF returned HTTP 400 and the live editor displayed retry/manual-entry guidance without writing the Booking |
SCN-057 |
/bookings/new opens the same reused create editor |
PASS — authenticated Client 1 opened the CTC create editor and ignored an MK-only Sales Order seed; authenticated Client 2 opened the MK create editor with Execution SO 152057 selected. |
SCN-058 |
create/update/clone/container/photo authoritative write/readback | PASS for non-AI operations — Client 1 create/update, clone, cancel/reopen, non-trivial container update with restore, container detail/multi-detail, and photo upload/register/read/delete readback PASS; provider cleanup remains queued by contract |
SCN-090 |
editor contains no Help action; App Shell exposes User Wiki | PASS |
SCN-100 |
Client 1/2 composition and tenant-specific document actions | PASS — Client 1 shared editor/options, Packing List, photo/document, AI-instruction and tenant-branded Booking Confirmation paths are wired; Client 2 MK list composition, Execution SO seed, outbound-container editor wiring and MK Booking Confirmation rendered. |
No mocked form or in-memory Booking fixture is accepted as operational evidence.
---¶
Source:
new-system/docs/pages/transportation/booking-workspace/TEST_MATRIX.md— ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.