M9-S5: seller live auction observation#109
Merged
Merged
Conversation
Narrative 005 Moments 1-4 from the seller's vantage: wire BiddingHub message parsing, cache bridge, listing detail page with reserve indicator, extended-bidding banner, gavel-fall, and transient activity feed.
… detail page Wire the seller SPA's BiddingHub connection to parse auction-lifecycle messages and build the listing detail page at /listings/$id. The seller observes live bid activity, a confidential reserve-crossing indicator (cross-BC join of CatalogListingView + SellerListingSummary), extended-bidding status, and terminal outcomes (sold/passed/withdrawn) — the observer-protagonist experience narrative 005 dramatises. SignalR: message parsing (3-kind discriminated union), cache bridge (re-query on push), per-page listing-group joins via useWatchListing. Tests: 55 → 84 (+29). Bidder 25 and ops 47 baselines preserved.
The unit-tests job had hard-coded test-class filters that were never updated as the project grew: Selling covered 3 of 13 test classes, Participants covered 1 of 3. Every test class was already run unfiltered by the integration-tests matrix, making the unit-tests job redundant for everything except Contracts.Tests (which was only there). Fix: drop unit-tests entirely, add Contracts.Tests to the integration matrix, remove unit-tests from the CI aggregator's needs + verification loop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
useWatchListing/listings/$idwith live auction panel: current bid, bid count, close time, confidential reserve-crossing indicator (cross-BC join ofCatalogListingView+SellerListingSummaryvia route search params), extended-bidding banner, and terminal outcomes (sold/passed/withdrawn)Details
SignalR activation:
SellerSignalRProviderrewritten from null-stub (parseMessagereturningnull) to full provider usingcreateSignalRProvider<HubMessage>. Seller-local message parser is a narrower copy of the bidder's — dropsSettlementCompletedNotificationandBidderGroupNotification.Cross-BC data join: The reserve indicator compares
currentHighBid(Listings BC'sCatalogListingView) againstreservePrice(Selling BC'sSellerListingSummary), passed via Zod-validated route search params from the dashboard.Tests: Seller 55 → 84 (+29 tests). Bidder 25 and ops 47 baselines preserved. All three SPAs build clean, TypeScript strict.
Backend: Zero
.csfiles touched.Test plan
tsc --noEmitcleanvite buildclean