# T840 — demand map domain repository > Status: `done`(2026-08-11) > Milestone: `M4` > Est. change: `~190 lines` ## Goal 完成後每個產品有可追溯的 current DemandMap,包含五類 phrase、basis、origin、狀態與 input/map version。 ## Depends on - T823(Phase B UX approval) - T830、T833 ## Inputs - `apps/backend/internal/module/radar/domain/` - Brand/Product repository 既有真相讀取介面 - Spec §4.1、§10、驗收 #6、#22 ## Outputs ### 程式變更(預期路徑) | 路徑 | 動作 | 說明 | |------|------|------| | `apps/backend/internal/module/radar/domain/demand_map.go` | add | map、phrase、version、state domain | | `apps/backend/internal/module/radar/repository/demand_map_memory.go` | add | memory current/history/conflict | | `apps/backend/internal/module/radar/repository/demand_map_mongo.go` | add | Mongo persistence/owner query | | `apps/backend/internal/module/radar/domain/demand_map_test.go` | add | invariant tests | ### 行為變更 - user phrase、AI phrase、product basis 可區分;版本衝突拒絕覆寫。 ### API / 契約(若有) - 產品 owner/brand relation 必須由 backend 重查。 ## Out of scope - 不做 baseline builder、AI enrichment、CostPreview endpoint。 ## Acceptance - [x] ready/incomplete/stale、五類 phrase、enabled、version invariant 通過。 - [x] memory/Mongo owner isolation parity 通過。 - [ ] 指令: ```bash cd apps/backend && go test ./internal/module/radar/... -run 'DemandMap' -count=1 ``` ## Notes DemandMap 是可追溯搜尋上下文,不取代 Brand/Product 真相。