Skip to content

M9-S6: seller obligation fulfillment#110

Merged
erikshafer merged 1 commit into
mainfrom
m9-s6-seller-obligation-fulfillment
Jun 13, 2026
Merged

M9-S6: seller obligation fulfillment#110
erikshafer merged 1 commit into
mainfrom
m9-s6-seller-obligation-fulfillment

Conversation

@erikshafer

Copy link
Copy Markdown
Owner

Summary

  • Obligation lifecycle tracking at /obligations — status-driven display for all five ObligationStatus states (AwaitingShipment, Escalated, Shipped, Fulfilled, Disputed) with deadline countdown, reminder banner, and terminal outcomes
  • Provide-tracking form using react-hook-form + Zod validation, driving the existing POST /api/obligations/tracking endpoint — the seller's first actor surface since S4b
  • BidderGroupNotification parsing added to the seller's SignalR message parser, enabling live cache invalidation when obligation events (ObligationFulfilled, TrackingInfoProvided) arrive via the BiddingHub
  • App shell navigation — "Obligations" link with actionable-count badge for obligations in AwaitingShipment/Escalated status

Seller tests: 84 → 117 (+33). Bidder 25, ops 47 baselines preserved. Zero backend changes.

Narratives implemented: 006 Moments 1–4 (happy-path obligation lifecycle) + 007 Moments 1–3 (escalation → late-tracking recovery UX).

Test plan

  • npm run build (TypeScript strict + Vite) passes for seller app
  • 117 seller Vitest tests pass (14 test files)
  • Bidder (25) and ops (47) baselines unchanged
  • dotnet build — 0 errors, 0 .cs files touched
  • HTTP smoke: GET /api/obligations/status → 200, POST /api/obligations/tracking → 202
  • Seller SPA proxy verified at localhost:5175/api/obligations/status
  • Full obligation lifecycle e2e (deferred to M9-S7 Playwright)

…racking form

The seller's first actor surface since S4b. Adds obligation lifecycle
tracking at /obligations with status-driven display (AwaitingShipment,
Escalated, Shipped, Fulfilled, Disputed), a provide-tracking dialog
(react-hook-form + Zod), and BidderGroupNotification parsing so
obligation pushes (ObligationFulfilled, TrackingInfoProvided) drive
live cache invalidation. 84 → 117 seller tests (+33).
@erikshafer erikshafer self-assigned this Jun 13, 2026
@erikshafer erikshafer merged commit 91c0d66 into main Jun 13, 2026
5 checks passed
@erikshafer erikshafer deleted the m9-s6-seller-obligation-fulfillment branch June 13, 2026 19:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant