Skip to content

page.transportation.booking-workspace — Booking Workspace

  • Page contract version: 1
  • Canonical route: /bookings/{id} and /bookings/new
  • Template: native shared WorkspaceDialog with compact Booking panels
  • Primary context: one authoritative Booking and independent related facts
  • Profiles/capabilities/roles: current Legacy tms.booking server decision; no browser profile branch
  • Query/read-model owner: bookingClient.ts → semantic Booking routes → MysqlCompanyBookingData
  • Command/action owners: native Booking, Packing List, Booking Confirmation, clone and equipment owners; file/AI actions remain separate consumers
  • Independent states: Booking, containers, delivery orders, packing-list submission and invoice status
  • Fields/default/requiredness provenance: native booking-data.ts and current UI defaults; Stage-A packet is historical Legacy provenance, including a different Shipper requirement
  • Loading/empty/error/denied/not-found/recovery: useBookingWorkspaceState and bookingRecovery; unknown-result exact UUID readback before replay
  • Desktop/mobile/keyboard/accessibility: shared @ctc/ui dialog, form and command controls; exact responsive/keyboard evidence remains scenario-scoped
  • Telemetry/readback: normal response contains transaction readback; sent mutation with unknown result triggers separate UUID GET
  • Legacy parity/intended difference: source-specific requirements and native gaps are in the traditional Process specification; no blanket field/action parity claim
  • Route/writer cutover: none
  • Measurable user value: one workspace supports create, edit, save confidence and timeout recovery
  • Sources/freshness: native Booking UI/API/query/writer reviewed at 0393adae1eb9e43eb32f0b736120119b46e056cb on 2026-09-12; SOURCE, not fresh runtime acceptance
  • Runtime scenario source: docs/pages/transportation/booking-workspace/TEST_MATRIX.md
  • Runtime scenario IDs: SCN-010, SCN-020, SCN-030, SCN-040, SCN-050, SCN-055, SCN-057, SCN-058, SCN-090, SCN-100
  • In-app User Wiki ID: wiki.page.transportation.booking-workspace
  • In-app User Wiki: stored page /wiki/booking; verify its UUID and content through the actual catalogue consumer
  • User Wiki route: /wiki/booking
  • Page change history: docs/pages/transportation/booking-workspace/CHANGELOG.md
  • Latest change ID: PAGE-BOOKING-WORKSPACE-CHG-010

Traditional screen specification and Client basis

Booking SRS/SAD/state/data relationships defines C1 from Legacy and C2 from reference plus New-System. This Page describes the native screen; it is not a substitute for either source's business requirements. C1 manual/Wiki deferral does not defer its technical specification.

Screen area / action Data and interaction requirement Acceptance boundary
Open/create one Booking UUID or new UUID-backed draft; use current session/profile defaults loading, denied, missing and error are distinct; no unrelated tenant fallback
Details reservation/carrier, schedule/routing, quantity plan, Company references and document/inspection flags exact field constraints in Transportation dictionary; usage/source pointer are read-only context
Save explicit submission; preserve later local edits when acknowledgement arrives normal transaction result vs unknown-result GET distinguished; conflict/unknown cannot silently overwrite
Close include independent related-panel drafts in dirty decision confirmation before discarding; switching panels is not saving
Packing / Confirmation source-policy projection; separately saved rows/rates vs preview-only text Restore does not undo source metadata; preview/Print is not document delivery
Clone persisted Booking only; quantity1–9 and new request/record identities parent's unsaved draft is not a saved clone source; receipt recovery is separate
File / AI separate upload/analysis owners; apply suggestions to draft provider success is not Booking persistence; photos are not a native Booking tab

C2 reference uses one SIZE/QUANTITY, Supplier/Shipper-specific roles and date-derived display status. Native five-quantity plan, Company roles and independent flags must not be labelled exact C2 parity until the corresponding differences in the Process are resolved. Responsive/keyboard/role scenarios remain separately executable acceptance, not inferred from use of shared components.

Current create/update path

BookingWorkspace and useBookingWorkspaceState call bookingClient at /api/bookings. semanticBookingRoutes resolves session/Booking access and invokes the native parser in booking-data.ts. MysqlCompanyBookingData owns the tenant-scoped transaction, version conflict and readback. A normal response returns the transaction's read result after commit; an unknown result is separately reread by UUID. The list opens the same native editor for create/edit. Form options still use the separate /api/tms/bookings/options compatibility route; that does not make native saves Legacy writes.

See the Transportation developer contract for actual owner paths, input/DB mapping, transaction sequence, error/retry rules and tests. That contract owns the technical details; this Page owns the interaction below.

  • Details, Packing List and policy-enabled Booking Confirmation are the current areas. Visited Packing/Confirmation panels stay mounted while hidden, preserving their drafts.
  • Dirty tracking combines Booking draft and equipment/Packing/Confirmation areas. Close asks before discarding unsaved changes. Save responses merge untouched server values without erasing edits made after submission; responses from an old workspace session are ignored.
  • CONFLICT disables submit and exposes Reload latest. UNRESOLVED disables submit and exposes Check saved result; a failed reread does not become safe-to-retry automatically.
  • A missing create UUID permits retry of the same request identity. A missing update or mismatched version/content does not prove failure or authorize blind replay.
  • Clone is available for a persisted Booking, accepts count 1–9 in the current dialog and sends an empty override object. It does not save/overwrite the parent Booking draft.
  • Booking Photos is not a current tab/action. Equipment-photo backend/client functions and older runtime screenshots are not evidence that it is exposed here.

Documentation scope and evidence

The test matrix keeps the original 2026-08-15 KJ observations separate from native source checks and later Task evidence. No old control count or Photos PASS is a current acceptance. Manual/User Wiki expansion is Client ID 2 only. Client ID 1 is undecided and its existing content and exposure are preserved; common developer documentation does not approve its operator procedure.

---

Source: new-system/docs/pages/transportation/booking-workspace/README.md — ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.