Auction Detail Controller Boundary
Purpose
This note documents the Sprint 05 boundary cleanup for the auction detail flow in .
Resolving locale, route permissions, and workspace projection.
النطاق الحالي: ضيف
الفئة: 10_normative | الإصدار: v1.0.0
المالك: DOCUMENT_CUSTODIAN | دورة المراجعة: 90 يومًا
جهة الاعتماد: GOVERNANCE_ADMIN
بوابة الوثائق للقراءة فقط. نقاط نهاية التعديل والتغيير معطلة.
منصة Kvary أُنشئت أصلًا باللغة الجورجية. وحيثما تتوفر نسخة جورجية، تبقى الجورجية هي اللغة المعتمدة لواجهة المنصة والوثائق والتفسير القانوني.
تُوفَّر الترجمات إلى اللغات الأخرى لسهولة الاستخدام فقط. وقد تنشأ بعض السجلات بلغات أخرى وتحمل لغة مصدر أو لغة قانونية خاصة بذلك المسار، ولكن حيثما تتوفر نسخة جورجية تكون الأولوية للنسخة الجورجية في صياغة المنصة وتفسيرها.
البيانات الوصفية غير مكتملة: Document ID, Version, Status, Owner Role, Last Review Date, Next Review Date, Change Log
This note documents the Sprint 05 boundary cleanup for the auction detail flow in .
apps/webThe goal of this layer is not to make bidder mutations look durable. The goal is to make the current truth model explicit in code:
canonicalRead remains the visible source for auction detail/list readsUI-FIRST and compatibility-backedTop-level entry:
Controller / view-model layer:
Presentation modules from Sprint 04:
apps/web/src/portal/components/auctionDetail/AuctionReadPresentation.tsxapps/web/src/portal/components/auctionDetail/AuctionDeliveryOptionsPanel.tsxapps/web/src/portal/components/auctionDetail/AuctionBidActionCluster.tsxapps/web/src/portal/components/auctionDetail/AuctionBuyNowAction.tsxapps/web/src/portal/components/auctionDetail/AuctionFulfillmentPanel.tsxapps/web/src/portal/components/auctionDetail/AuctionCompatibilityNotice.tsxRelated cross-sprint boundaries:
apps/web/src/ui/auctions/canonicalRead/portalReadBoundary.tsapps/web/src/ui/auctions/compatibility/sessionAuctionMutationPort.tsapps/web/src/ui/auctions/futureDurable/auctionMutationPort.tsapps/web/src/ui/auctions/session/bidOverlay.tsapps/web/src/ui/auctions/session/fulfillmentOverlay.tsapps/web/src/ui/auctions/session/transportSelectionOverlay.tsAuctionDetailClient.tsxStatus: MIXED, but intentionally thin after Sprint 05.
Owns:
It is now a shell/orchestrator entry point, not the place where eligibility, overlay merge, or compatibility write logic is implemented.
useAuctionDetailController.tsxStatus: UI-FIRST controller/view-model layer.
Owns:
It is intentionally the place where current truth is concentrated:
detailuseAuctionSessionOverlays.tsStatus: UI-FIRST.
Owns:
This is the explicit session/local merge layer for the detail controller.
useAuctionBidderIdentity.tsStatus: MIXED.
Owns:
useCurrentUser()getMyStakeholderContext()This hook keeps session/account/stakeholder identity shaping out of the visual detail component.
compatibilityActionAdapter.tsStatus: UI-FIRST.
Owns:
It currently maps to:
This is intentionally named as compatibility, not service, gateway, or API mutation.
AuctionDetailClientSprint 05 extracted these responsibilities from the top-level component:
This means new engineers and future AI agents no longer need to read a single giant client component to find:
Inside useAuctionDetailController.tsx:
Inside AuctionDetailClient.tsx:
This centralization is intentional for now. Splitting further before a real durable mutation path exists would risk scattering the same UI-first truth across too many modules.
Status: REAL / MIXED depending on upstream source, unchanged by this sprint.
Status: UI-FIRST.
These still flow through the compatibility adapter to the session-backed mutation port.
Status: UI-FIRST.
These remain explicit and isolated under ui/auctions/session/*.
Status: SHELL.
The durable seam still exists under:
Sprint 05 did not implement it. The controller boundary now makes the eventual swap point much clearer.
When a real bidder mutation backend is implemented later, the intended change point is:
AuctionDetailClient.tsx unchanged or nearly unchangeduseAuctionSessionOverlays.ts if durable optimistic/revalidation behavior replaces session overlaysThat is the main value of this sprint: the swap point is now explicit instead of buried inside a very large UI component.