# Domain Map — 愈心谷(DDD 视角) 给后端 / DB / OpenAPI / SDK 用的**能力域与实体图**。 词汇以 [../domain.md](../domain.md) 为准;产品范围以 [../product/feature-map.md](../product/feature-map.md) 为准。 竞品能力对照:[../product/cece-feature-map.md](../product/cece-feature-map.md)。 AI 生成表结构或 API 时:先落本图中的 Context / Aggregate,再写 migration;禁止发明未列出的聚合根名。 --- ## 1. Bounded Contexts ``` ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ Identity │──▶│ Profile │──▶│ Discovery │ │ (User) │ │ Life Archive│ │ Decode/Scale│ └─────────────┘ └──────┬───────┘ └──────┬──────┘ │ │ ▼ ▼ ┌──────────────┐ ┌─────────────┐ │ Relationship │ │ Ask │ │ Match │ │ Companion │ └──────┬───────┘ └──────┬──────┘ │ │ ▼ ▼ ┌─────────────────────────────────┐ │ Commerce │ │ Subscription / Order / Unlock │ └─────────────────────────────────┘ │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ ContentFeed GrowthShare Consult(*) (* later) ``` | Context | 职责 | MVP | |---|---|---| | **Identity** | Visitor/User/Session | Yes | | **Profile** | Self/Other 生命档案 | Yes | | **Discovery** | Decode、Scale、Report 生成 | Yes | | **Relationship** | Match | Yes | | **Ask** | 档案上下文对话、额度 | Skeleton | | **Companion** | SolarTerm、Mood | Skeleton | | **Commerce** | Subscription、Membership、Order、Unlock、Payment | Yes (mock) | | **Content** | Feed 配置 | Static OK | | **Growth** | Share 卡片元数据 | Minimal | | **Consult** | 真人顾问 Marketplace | No | | **Recommendation** | 推荐 | V1 rules | --- ## 2. Aggregates & Entities(命名强制) ### Identity | Type | Name | Notes | |---|---|---| | Aggregate | **User** | 注册主体 | | Entity | Session | token 会话 | | Entity | DeviceIdentity | Visitor 匿名 | ### Profile(生命档案) | Type | Name | Notes | |---|---|---| | Aggregate | **Profile** | `relation`: self \| other | | VO | BirthInput | date;time/place optional later | | VO | RelationType | partner/family/friend/… | ### Discovery | Type | Name | Notes | |---|---|---| | Aggregate | **Report** | type: decode \| match \| … | | Domain Svc | DecodeEngine | 可复算;结果入 Report | | Aggregate | **Scale** | 量表定义 | | Entity | ScaleQuestion | | | Aggregate | **ScaleResult** | 作答 + 计分 | ### Relationship | Type | Name | Notes | |---|---|---| | Aggregate | **Match** | 引用两个 Profile;产出 Report 或嵌入 | ### Ask / Companion | Type | Name | Notes | |---|---|---| | Aggregate | **AskThread** | 挂 profile_id | | Entity | AskMessage | role user/assistant | | Entity | AskQuota | 与 Membership 联动 | | Aggregate | **Mood** | 日维度打卡 | | Read Model | **SolarTerm** | 日历内容;可配置表 | ### Commerce | Type | Name | Notes | |---|---|---| | Aggregate | **Subscription** | 计划 SKU | | Aggregate | **Membership** | 用户权益状态 | | Aggregate | **Order** | 订阅或 Unlock | | Entity | Payment | mock / 渠道 | | Entity | Unlock | order → report 解锁 | ### Content / Growth(薄) | Type | Name | Notes | |---|---|---| | Entity | FeedItem | 运营配置 | | VO | SharePayload | 分享卡字段 | ### Consult(Later) | Type | Name | Notes | |---|---|---| | Aggregate | Consultant | | | Aggregate | ConsultOrder | | | Entity | ConsultSession | | --- ## 3. 关键关系(ER 草图) ``` User 1──* Profile Profile 1──* Report Profile 1──* AskThread User 1──* ScaleResult User 1──0..1 Membership User 1──* Order Order 0..1── Unlock ──▶ Report Profile ── Match ── Profile User 1──* Mood ``` 权益规则:**Membership / Unlock 只由服务端判定**;客户端不可信任。 --- ## 4. Context → 代码落点 | Context | Go | H5 | |---|---|---| | Identity | `internal/service/user` | login / mine | | Profile | `service/profile` | decode form, mine | | Discovery | `service/report`, `service/scale` | decode, explore, report | | Relationship | `service/match` | match | | Ask | `service/ask` | ask tab | | Companion | `service/companion` | companion tab | | Commerce | `service/order`, `membership` | paywall, mine | 包名只用 `domain.md` 词汇:`user` `profile` `report` `order` `membership` `scale` `ask` `mood`。 --- ## 5. 测测域 → 愈心谷域 映射 | 测测概念 | 愈心谷 | |---|---| | 星盘档案 | **Profile**(生日+体质相关输入) | | 测测 AI | **Ask** | | 真人 1v1 | **Consult**(后置) | | MBTI 等 | **Scale** | | 缘分合盘 | **Match**(合规叙事) | | 今日运势 | **SolarTerm** + 生活建议(替换) | | 会员 | **Subscription / Membership** | | AI 玩法广场 | **[No] MVP** | | 心情打卡 | **Mood** | | 沙盘/心情小镇 | **[No]** | --- ## 6. 生成顺序(给 AI) 1. 改范围 → 更新 `product/feature-map.md` MVP 标记 2. 新实体 → 本文件 + `domain.md` 词条(若新词) 3. migration → `playbooks/new-table.md` 4. API → `playbooks/add-api.md` + OpenAPI 5. 页面 → `playbooks/new-page.md` + design contract 下一步可选:单独 `apps/docs/erd.md` 或 migrations 初稿(本任务不强制)。