feat: professionalize control plane and standalone delivery
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
|
||||
## Goal
|
||||
|
||||
定义 `biliup-next` 的任务状态机,取代旧系统依赖 flag 文件、日志和目录结构推断状态的方式。
|
||||
定义 `biliup-next` 当前实现使用的任务状态机,并明确数据库状态与工作区 flag 的职责边界。
|
||||
|
||||
状态机目标:
|
||||
|
||||
@ -23,14 +23,13 @@
|
||||
### Core Statuses
|
||||
|
||||
- `created`
|
||||
- `ingested`
|
||||
- `running`
|
||||
- `transcribed`
|
||||
- `songs_detected`
|
||||
- `split_done`
|
||||
- `published`
|
||||
- `commented`
|
||||
- `collection_synced`
|
||||
- `completed`
|
||||
|
||||
### Failure Statuses
|
||||
|
||||
@ -39,8 +38,7 @@
|
||||
|
||||
### Terminal Statuses
|
||||
|
||||
- `completed`
|
||||
- `cancelled`
|
||||
- `collection_synced`
|
||||
- `failed_manual`
|
||||
|
||||
## Step Status
|
||||
@ -117,16 +115,26 @@
|
||||
|
||||
```text
|
||||
created
|
||||
-> ingested
|
||||
-> running
|
||||
-> transcribed
|
||||
-> running
|
||||
-> songs_detected
|
||||
-> running
|
||||
-> split_done
|
||||
-> running
|
||||
-> published
|
||||
-> running
|
||||
-> commented
|
||||
-> running
|
||||
-> collection_synced
|
||||
-> completed
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- `running` 是任务级瞬时状态,表示当前已有某个 step 被 claim 并正在执行。
|
||||
- 当该 step 成功结束后,task 会回到对应业务状态,例如 `transcribed`、`split_done`、`published`。
|
||||
- 当前实现中未使用 `ingested`、`completed`、`cancelled` 作为 task 状态。
|
||||
|
||||
### Failure Transition
|
||||
|
||||
任何步骤失败后:
|
||||
@ -158,10 +166,10 @@ created
|
||||
- `collection_a` 可作为独立步骤存在
|
||||
- 任务整体完成不必强依赖 `collection_a` 成功
|
||||
|
||||
建议:
|
||||
当前实现:
|
||||
|
||||
- `completed` 表示主链路完成
|
||||
- `collection_synced` 表示所有合集同步完成
|
||||
- `collection_synced` 表示当前任务已经完成既定收尾流程。
|
||||
- `collection_a` / `collection_b` 仍作为独立 step 存在,但系统暂未额外引入 `completed` 状态。
|
||||
|
||||
## Retry Strategy
|
||||
|
||||
@ -196,6 +204,27 @@ created
|
||||
- 错误信息
|
||||
- 重试次数
|
||||
|
||||
## Flags And Files
|
||||
|
||||
工作区中的 flag 文件仍然存在,但它们不是 task 主状态的权威来源。
|
||||
|
||||
当前职责划分:
|
||||
|
||||
- 数据库:
|
||||
- task 状态
|
||||
- step 状态
|
||||
- 重试信息
|
||||
- 结构化上下文
|
||||
- 工作区文件与 flag:
|
||||
- 外部副作用是否已执行
|
||||
- 产物是否已落地
|
||||
- 评论/合集等交付标记
|
||||
|
||||
换句话说:
|
||||
|
||||
- “任务现在处于什么状态”以数据库为准。
|
||||
- “某个外部动作是否已经做过”可以由工作区 flag 辅助表达。
|
||||
|
||||
## UI Expectations
|
||||
|
||||
UI 至少需要直接展示:
|
||||
@ -209,4 +238,4 @@ UI 至少需要直接展示:
|
||||
## Non-Goals
|
||||
|
||||
- 不追求一个任务多个步骤完全并发执行
|
||||
- 不允许继续依赖 flag 文件作为权威状态来源
|
||||
- 不把工作区 flag 文件当作 task 主状态来源
|
||||
|
||||
Reference in New Issue
Block a user