67837df8d0
- 新增全套考试卷、评估卷、参考答案与考试培训包模板 - 修正slidev培训课件:调整模块标题、链路图缩放,替换工单示例为通用业务对象 - 修正课堂红线表述为证据红线,将小组作业调整为个人作业要求 - 新增权限、状态流转、审计日志、看板指标四类可复用业务规则块 - 整理AI工程技能交付包,迁移旧资产至客户专属交付包并统一术语 - 新增考试输出模板与TRAE使用记录文档
4.1 KiB
4.1 KiB
模块 3:工单状态流转规则实现
工单状态不能靠临时 if else。必须先设计状态机,再实现接口和校验。
created
已创建
已创建
→
processing
处理中
处理中
→
pending_verify
待验证
待验证
→
closed
已关闭
已关闭
pending_verify → rejected → processing
状态流转表
| 当前状态 | 动作 | 目标状态 | 允许角色 | 前置条件 | 失败提示 |
|---|---|---|---|---|---|
| created | 指派 | processing | 管理员/负责人 | 必须选择指派人 | 请选择指派人 |
| processing | 提交验证 | pending_verify | 研发/负责人 | 必须填写处理说明 | 请填写处理说明 |
| pending_verify | 关闭 | closed | 测试/负责人 | 验证通过 | 当前工单不可关闭 |
| pending_verify | 驳回 | rejected | 测试/负责人 | 必须填写驳回原因 | 请填写驳回原因 |
| rejected | 重新处理 | processing | 研发/负责人 | 必须填写处理说明 | 请填写重新处理说明 |
非法流转清单
| 当前状态 | 尝试动作 | 系统响应 | 验收 |
|---|---|---|---|
| closed | 重新处理 | 返回非法状态流转 | 状态不变 |
| created | 关闭 | 返回非法状态流转 | 页面提示原因 |
| processing | 驳回 | 返回非法状态流转 | 状态不变 |
| pending_verify | 驳回但无原因 | 返回参数错误 | 提示填写原因 |
| 任意状态 | 无权限流转 | 返回权限拒绝 | 不完成操作 |
状态流转接口契约
POST /workOrder/assign
字段:id、assignee、remark
POST /workOrder/transition
字段:id、action、targetStatus、remark、version
验收:
合法流转成功;非法流转失败;状态不被错误修改;审计日志可查。
可直接复制到 rules:状态流转
## 复杂业务状态必须先建模
- 级别:硬约束
- 适用场景:工单指派、处理、验证、驳回、关闭、重开。
- 必须:先产出状态流转表,列出当前状态、动作、目标状态、允许角色、前置条件、后置动作和验收方式。
- 禁止:直接在代码中堆状态判断而没有状态表。
- 验收方式:每个状态动作都有合法路径和非法路径验证。
## 非法状态流转必须拒绝且状态不变
- 必须:集中校验非法流转;失败时返回明确错误,业务状态不变,不写成功审计。
- 禁止:仅靠前端禁用按钮防止非法流转。
- 验收方式:构造非法状态动作,接口失败且数据库状态不变。