49 lines
1.1 KiB
Markdown
49 lines
1.1 KiB
Markdown
|
|
# T007 — Domain types + repo interfaces + createRepos
|
|||
|
|
|
|||
|
|
> Status: `todo`
|
|||
|
|
> Milestone: `M3`
|
|||
|
|
> Est. change: `~180 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
TypeScript domain 型別 + repository 介面;`createRepos('mock'|'live')` 工廠就位(live 可 throw/not implemented)。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T006
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- Spec §2 實體、§5.1 JSON 形狀、§5.0 共用規則
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
### 程式變更
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/web/src/domain/types.ts` | add | Member, ThreadsAccount, ThreadPlay, PlayStep, Outbox*, Job, Notification |
|
|||
|
|
| `apps/web/src/data/repos.ts` | add | interface 定義 |
|
|||
|
|
| `apps/web/src/data/createRepos.ts` | add | 工廠 |
|
|||
|
|
| `apps/web/src/data/DataContext.tsx` | add | 提供 repos 給 React |
|
|||
|
|
|
|||
|
|
### 行為變更
|
|||
|
|
|
|||
|
|
- 型別含 `lead_account_id`, `cast_account_ids`, steps with kind root|reply
|
|||
|
|
- Speakers 校驗 helper 可放 `domain/speakers.ts`
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- mock 實作細節(T008)
|
|||
|
|
- HTTP client live
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [ ] 型別可 compile
|
|||
|
|
- [ ] `createRepos('mock')` 可呼叫(實作可先空再由 T008 補)
|
|||
|
|
- [ ] `npm run build` 通過
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/web && npm run build
|
|||
|
|
```
|