1.5 KiB
1.5 KiB
T801 — frontend inbox domain repository seam
Status:
doneMilestone:M0Est. change:~160 lines
Goal
完成後 mock 與 live 前端共用同一組 Opportunity review、排序、CostPreview、DemandMap 與 Sweep funnel 型別/repository 介面。
Depends on
- T800
Inputs
apps/web/src/domain/types.tsapps/web/src/data/repos.ts- Spec §2、§7.2–§7.4
Outputs
程式變更(預期路徑)
| 路徑 | 動作 | 說明 |
|---|---|---|
apps/web/src/domain/types.ts |
edit | ReviewState、RemovalReason、Priority、DemandMap、CostPreview、funnel types |
apps/web/src/data/repos.ts |
edit | 擴充 RadarRepo,同時支援 mock/live |
apps/web/src/data/fixtures/** |
add/edit | 固定 legacy、pending、removed、未知時間資料 |
行為變更
- 型別區分
OpportunityStatus與review_state;舊欄位可缺省並由 mapper 補映射。
API / 契約(若有)
- 不新增前端私有 shape;repository method 對齊 T800。
Out of scope
- 不改頁面視覺、不接 live HTTP、不實作 mock 行為。
Acceptance
- TypeScript 可表達五種排序、三種 review state、移除原因與兩種 key mode。
- mock/live repository signature 完全一致。
- 指令:
cd apps/web && npm run build && npm run test -- src/data src/domain
Notes
保留既有 intent_score、product_fit_score,新加 priority_score 不取代歷史欄位。