# 制造业算法开发与模型管理平台 V2.0 状态与操作矩阵

> 版本：V2.0-R5。对象状态、执行状态、业务结论、健康状态、流量状态和观测异常分别维护；任何“未知”都不能沿用旧成功值。

## 1. 通用状态维度

| 维度 | 典型状态 | 允许动作 | 禁止误读 |
|---|---|---|---|
| 草稿/版本 | 草稿、待冻结、已冻结、已停用 | 编辑、校验、冻结、派生 | 草稿不等于可执行，冻结后不可覆盖 |
| 执行 | 待提交、排队、准备、运行、停止中、成功、失败、已停止 | 启动、停止、关联重试 | 执行成功不等于业务通过 |
| 业务结论 | 未产生、通过、不通过、退回、阻断 | 确认、退回、补证 | 不得覆盖执行事实 |
| 健康 | 检查中、健康、不健康、未知 | 检查、隔离、恢复验证 | 部署成功不等于健康 |
| 流量 | 未配置、待生效、生效中、已生效、暂停、回滚中、失败、未知 | 扩大、暂停、切换、回滚 | 配置成功不等于网关已生效 |
| 观测 | 正常、延迟、失联、未知 | 查询、补偿、人工确认 | 未知不是执行终态 |

<a id="states-annotation"></a>
## 2. 标注任务与样本生命周期

### 2.1 标注任务

`草稿 → 待分配 → 进行中 → 待验收 → 已通过/已退回 → 已关闭`

| 当前状态 | 动作与前置条件 | 下一状态 | 失败/补偿 |
|---|---|---|---|
| 草稿 | 固定样本批次、标签体系、模板和截止时间 | 待分配 | 校验失败保留草稿 |
| 待分配 | 分配至少一名有效标注人并建立样本分配 | 进行中 | 部分分配保留成功明细，任务仍待分配或进行中 |
| 进行中 | 所有必需样本进入已通过或明确剔除 | 待验收 | 仍有锁定、待复核、退回样本时阻断 |
| 待验收 | 抽检率、通过率、一致性和质量规则达标 | 已通过 | 不达标→已退回并生成整改范围 |
| 已退回 | 重分配或重标并完成复核 | 进行中 | 原退回记录不可覆盖 |
| 已通过 | 关闭任务并固定样本清单与结论 | 已关闭 | 被下游引用后不得撤销，只能派生修订 |

### 2.2 标注样本

`待分配 → 待领取 → 标注中 → 待复核 → 已通过/已退回 → 重标中 → 待复核`

- 领取以样本锁和锁版本原子裁决；锁过期回到待领取，保留原领取记录。
- 提交时校验锁归属、标签体系版本和样本状态；过期锁不得写入。
- 复核人与标注人普通账号不得为同一人；Admin 例外仍记录双职责依据。
- 已通过样本的更正必须生成新标注结果版本，不能覆盖原结果。

<a id="states-dev-environment"></a>
## 3. 代码工作台状态

| 对象/维度 | 状态 | 迁移与门禁 |
|---|---|---|
| 代码文件 | 已保存、未保存修改、保存中、保存失败、只读 | 编辑后进入未保存修改；保存成功生成新代码修订；冻结版本只读 |
| 代码修订 | 草稿、已保存、已引用、已冻结、已废弃 | 历史修订不可覆盖；被运行、测试或交接引用后保持可追溯 |
| 环境快照 | 构建中、就绪、构建失败、恢复中、恢复完成、异常 | 运行和测试仅使用就绪快照；恢复生成新环境尝试 |
| 运行尝试 | 待执行、排队、运行中、成功、失败、停止中、已停止、未知 | 每次运行新建尝试；退出码、日志和输出摘要独立保存 |
| 测试运行 | 待执行、排队、运行中、通过、不通过、执行失败、已停止 | 通过数、失败数和报告绑定代码修订；通过不自动冻结算法版本 |
| 终端命令 | 待校验、允许、拒绝、执行中、成功、失败 | 白名单和参数校验通过才能执行；拒绝不创建运行尝试但必须审计 |

切换文件前必须处理未保存修改；运行未保存内容时，应先保存为正式代码修订或生成明确标记的临时内容摘要。运行成功、测试通过、环境就绪和算法版本冻结是四个独立事实。

<a id="states-workflow"></a>
## 4. 流程编排、节点执行、缓存与重试

| 对象 | 状态 | 合法迁移与规则 |
|---|---|---|
| 流程草稿 | 编辑中、校验失败、校验通过、已冻结 | 编辑中→校验失败/通过；通过→已冻结；冻结后派生新修订 |
| 流程运行 | 待提交、排队、运行、部分成功、成功、失败、停止中、已停止 | 终态不可恢复；重跑新建运行 |
| 节点尝试 | 等待依赖、排队、运行、缓存命中、成功、失败、跳过、停止中、已停止 | 每次重试新建尝试；跳过必须有上游或策略原因 |
| 中间产物 | 待生成、可用、不完整、失效、已清理 | 只允许有效成功节点生成可用产物 |
| 缓存条目 | 构建中、有效、失效、污染、已清理 | 输入/组件/参数/环境摘要一致才可命中 |

节点失败重试规则：

1. 先确认旧节点尝试终止且无存活执行。
2. 固定原运行DAG快照；参数或组件变化必须新建流程运行。
3. 仅重试失败节点时，已成功上游可复用有效产物；目标节点及所有受影响下游新建尝试。
4. 缓存污染、摘要不一致或产物缺失时强制失效并重新执行。
5. 迟到回调只更新原尝试审计，不能覆盖新尝试或流程终态。

<a id="states-evaluation"></a>
## 5. 技术评测与业务确认

| 对象/维度 | 状态 | 迁移与门禁 |
|---|---|---|
| 技术评测执行 | 草稿、检查中、待资源、排队、运行、成功、失败、停止中、已停止 | 独立性与输入检查通过才能提交；执行成功仅表示任务完成 |
| 技术结论 | 未产生、技术通过、技术不通过、未知、已失效 | 必需子任务和原始指标完整后生成；规则、输入变化或过期→已失效 |
| 业务确认 | 草稿、待确认、确认中、通过、退回、阻断、已失效 | 必须引用有效技术报告；样例和规则完整后由业务确认人签署 |
| 发布准入 | 未满足、满足、已失效 | 技术通过与业务通过均有效且其他门禁完成才满足 |

技术不通过不能由业务确认改成通过；业务退回也不改写技术报告。模型、数据、规则、样例集或报告摘要变化时，仅使相应确认或准入失效并要求新建记录。

<a id="states-release"></a>
## 6. 多实例、灰度、蓝绿和回滚

| 对象/维度 | 状态 | 迁移与门禁 |
|---|---|---|
| 发布执行 | 待执行、准备中、执行中、部分成功、成功、失败、暂停、回滚中、已回滚、回滚失败、未知 | 独立执行记录；部分成功不得显示为已发布 |
| 服务实例 | 待创建、创建中、启动中、运行、异常、隔离、停止中、已停止、创建失败、未知 | 每实例独立；仅运行且健康实例可承接流量 |
| 健康检查 | 检查中、健康、不健康、未知 | 未知和不健康均阻断扩大或切流 |
| 灰度策略 | 草稿、待执行、灰度中、观察中、暂停、全量完成、已回滚、失败 | 每次扩大形成新批次；指标越界自动暂停 |
| 蓝绿切换 | 草稿、绿环境部署中、待切换、切换中、已切换、切换失败、已回切 | 非活动环境健康且快照一致才可切换 |
| 业务服务 | 未开放、开放、暂停、关闭 | 由有效路由和可用实例共同决定，不由部署结果直接写入 |

回滚必须创建新执行记录并恢复目标版本、实例集合、入口路由和流量权重。网关失败时保持最后确认稳定路由；新实例无法清理时标记孤儿实例并告警，不能据此伪造回滚成功。

<a id="states-feedback"></a>
## 7. 反馈回流、脱敏、去重与新版本

| 对象 | 状态 | 迁移与门禁 |
|---|---|---|
| 用户反馈 | 待受理、分析中、已采纳、已拒绝、优化中、待验证、已关闭 | 关闭前必须有处理结论和验证证据 |
| 回流批次 | 草稿、提取中、脱敏中、去重中、待人工确认、标注质检中、部分成功、成功、失败 | 每阶段保留逐样本结果 |
| 回流样本 | 待提取、脱敏失败、待去重、重复、冲突、待确认、已拒绝、待标注、待质检、可入版、已入版 | 仅可入版样本可生成新数据版本 |
| 新数据版本 | 待生成、生成中、待冻结、已冻结、生成失败 | 绑定回流批次、样本清单、标签和质量结论 |
| 迭代任务 | 草稿、开发中、训练中、评测中、业务确认中、完成、失败 | 每阶段引用新对象，不覆盖原模型版本 |

原始调用样本、脱敏副本、标注结果和入版样本分别保存来源关系。业务主键或内容指纹命中但内容不一致时进入冲突，必须人工裁决。

## 8. 高风险操作

- 数据版本冻结、算法版本冻结、训练停止、技术结论生成、业务确认、反馈采纳/关闭、流量切换、灰度扩大、回滚、下线和 Key 吊销必须二次确认并审计。
- 所有状态变更校验账号、动作权限、对象范围、当前状态、状态版本、固定快照和幂等键。

## 9. 全域对象状态基线

| 页面对象域 | 权威对象 | 生命周期/状态维度 | 并发与失败规则 |
|---|---|---|---|
| <a id="states-workbench"></a>工作台首页 | 聚合事项 | 未读→已读；待处理→处理中→已完成/已失效（仅为来源状态投影） | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-dataset-lineage"></a>数据集管理 | 数据集与血缘关系 | 血缘待采集→可用/部分可用/采集失败→已失效 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-dataset-version"></a>数据集版本 | 数据集版本 | 草稿→校验通过→待冻结→已冻结→已停用 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-data-ingestion"></a>数据接入 | 数据源与同步任务 | 草稿→待调度→运行中→成功/部分成功/失败/已停止 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-data-processing"></a>数据加工 | 数据加工任务 | 草稿→排队→运行中→成功/部分成功/失败/已停止 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-data-quality"></a>数据质检 | 数据质量任务 | 草稿→待执行→运行中→通过/不通过/执行失败→已关闭 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-data-governance"></a>数据治理 | 元数据、标准与血缘资产 | 草稿→启用→变更中→已停用；采集结果独立为可用/部分可用/失败 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-data-api"></a>数据服务 | 数据 API | 草稿→测试中→待发布→已发布→已停用 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-algorithm-asset"></a>算法资产 | 算法资产与组件 | 草稿→校验中→可用/阻断→已冻结→已停用 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-workspace"></a>开发工作区 | 开发工作区 | 创建中→可用→保存中→异常→归档 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-debug-validation"></a>调试与开发验证 | 调试运行与兼容性检查 | 草稿→排队→运行中→成功/失败/已停止；检查结论为通过/警告/阻断 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-algorithm-handoff"></a>算法版本与训练交接 | 算法版本与训练交接包 | 草稿→构建中→构建成功/失败→检查通过/阻断→已交接 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-training-experiment"></a>训练实验 | 训练实验与实验组 | 草稿→检查通过→待执行→执行中→完成/部分完成/失败→归档 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-training-run"></a>训练执行 | 训练任务与检查点 | 待提交→排队→准备→运行中→停止中→成功/失败/已停止/未知 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-compute-resource"></a>算力选择与资源申请 | 资源需求与使用记录 | 草稿→自动审批中→已批准/已拒绝→关联中→已就绪→使用中→已释放 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-training-monitor"></a>训练监控与诊断 | 训练监控与告警 | 正常→预警→告警→已确认→处理中→已恢复/已关闭/未知 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-experiment-analysis"></a>训练结果与实验分析 | 训练结果与实验分析 | 待汇总→汇总中→可分析/不完整→结论已保存→已归档 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-evaluation-rule"></a>评测规则 | 评测规则版本 | 草稿→校验通过→已发布→即将过期→已过期/已停用 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-release-admission"></a>评测结论与发布准入 | 发布准入与环境差异 | 未检查→检查中→满足/不满足/需例外审批→已失效 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-model-asset"></a>模型库 | 模型资产与字段模板 | 草稿→登记完成→可用→维护中→已停用 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-model-version"></a>模型版本详情 | 模型版本 | 草稿→待验证→验证中→可发布/阻断→已发布/已停用 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-model-adaptation"></a>模型适配与量化 | 模型量化与适配任务 | 草稿→排队→转换中→适配中→测试中→成功/失败/部分成功 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-deployment"></a>服务部署管理 | 服务部署与回切记录 | 待执行→部署中→成功/部分成功/失败→回切中→已回切/回切失败/未知 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-service"></a>服务详情 | 模型服务、实例与流量策略 | 服务未开放→开放→暂停→关闭；实例、健康、流量、告警分别维护 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-model-monitoring"></a>模型效果与漂移 | 模型效果监控与重训练触发 | 正常→观察→预警→告警→复核中→已恢复/已触发迭代/已关闭 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-marketplace"></a>模型列表 | 模型广场投影、收藏、评价与反馈 | 投影可见/已下线；收藏未收藏→已收藏；反馈待处理→已受理→已关闭/已撤回 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
| <a id="states-system-log"></a>系统日志 | 审计与异常日志 | 日志只读；异常未确认→已确认→处理中→已关闭 | 使用 `state_version` 乐观锁；非法迁移返回 `STATE_409`；部分成功逐项保存，未知状态不得自动转成功 |
