57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
|
|
# T021 — 後端 Run domain 與狀態規則
|
|||
|
|
|
|||
|
|
> Status: `done`
|
|||
|
|
> Milestone: `M2`
|
|||
|
|
> Est. change: `~170 lines`
|
|||
|
|
|
|||
|
|
## Goal
|
|||
|
|
|
|||
|
|
完成後,後端能以 domain Run 表達獨立批次、完整計數、不足原因與合法 guarded transition。
|
|||
|
|
|
|||
|
|
## Depends on
|
|||
|
|
|
|||
|
|
- T020
|
|||
|
|
|
|||
|
|
## Inputs
|
|||
|
|
|
|||
|
|
- 讀取 / 依賴:
|
|||
|
|
- 檔案:`apps/backend/internal/module/scout/domain/domain.go`
|
|||
|
|
- 既有能力 / API:NowNano、RunBrief、Job status patterns
|
|||
|
|
- Spec 段落:§2、§3、§8
|
|||
|
|
|
|||
|
|
## Outputs
|
|||
|
|
|
|||
|
|
### 程式變更(預期路徑)
|
|||
|
|
|
|||
|
|
| 路徑 | 動作 | 說明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `apps/backend/internal/module/scout/domain/domain.go` | edit | 新增 Run、status、counts、shortfall reasons、RunID on Post。 |
|
|||
|
|
| `apps/backend/internal/module/scout/domain/run_test.go` | add | 驗證 target clamp、shortfall 與狀態轉移。 |
|
|||
|
|
|
|||
|
|
### 行為變更
|
|||
|
|
|
|||
|
|
- target 預設 20、範圍 1–40;終態不可回到 running。
|
|||
|
|
|
|||
|
|
### API / 契約(若有)
|
|||
|
|
|
|||
|
|
- 所有時間為 int64 UTC unix ns;shortfall reasons 為固定代碼集合。
|
|||
|
|
|
|||
|
|
## Out of scope
|
|||
|
|
|
|||
|
|
- 不寫 persistence、worker 或 HTTP logic。
|
|||
|
|
|
|||
|
|
## Acceptance
|
|||
|
|
|
|||
|
|
- [x] guarded transition table 覆蓋 queued/running/terminal。
|
|||
|
|
- [ ] 指令:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd apps/backend && go test ./internal/module/scout/domain -count=1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
驗收結果:3 tests passed。
|
|||
|
|
|
|||
|
|
## Notes
|
|||
|
|
|
|||
|
|
Run input 與搜尋診斷終態後不可改寫;pending/eligible 可因單筆異動調整。
|