feat:update 3 4

This commit is contained in:
smart
2026-07-02 10:04:32 +08:00
parent 604e7e68d7
commit 2fd8fc1f66
224 changed files with 12369 additions and 9 deletions
+91
View File
@@ -0,0 +1,91 @@
# 模块 3:工单状态流转规则实现
<div class="mt-6 text-sm">
工单状态不能靠临时 if else。必须先设计状态机,再实现接口和校验。
</div>
<div class="flex items-center justify-between mt-12 px-4 text-sm">
<div class="text-center flex-1">created<br/><span class="text-xs text-gray-400">已创建</span></div>
<div class="text-blue-400">→</div>
<div class="text-center flex-1">processing<br/><span class="text-xs text-gray-400">处理中</span></div>
<div class="text-blue-400">→</div>
<div class="text-center flex-1">pending_verify<br/><span class="text-xs text-gray-400">待验证</span></div>
<div class="text-blue-400">→</div>
<div class="text-center flex-1">closed<br/><span class="text-xs text-gray-400">已关闭</span></div>
</div>
<div class="mt-8 text-center text-sm text-red-400">pending_verify → rejected → processing</div>
<!--
状态流转是第四天的核心复杂业务。
状态值要稳定,中文名可以展示,但代码里要使用明确枚举或字典。
-->
---
# 状态流转表
<div class="mt-5 text-xs">
| 当前状态 | 动作 | 目标状态 | 允许角色 | 前置条件 | 失败提示 |
|---|---|---|---|---|---|
| created | 指派 | processing | 管理员/负责人 | 必须选择指派人 | 请选择指派人 |
| processing | 提交验证 | pending_verify | 研发/负责人 | 必须填写处理说明 | 请填写处理说明 |
| pending_verify | 关闭 | closed | 测试/负责人 | 验证通过 | 当前工单不可关闭 |
| pending_verify | 驳回 | rejected | 测试/负责人 | 必须填写驳回原因 | 请填写驳回原因 |
| rejected | 重新处理 | processing | 研发/负责人 | 必须填写处理说明 | 请填写重新处理说明 |
</div>
<!--
状态流转表要回答当前状态、动作、目标状态、角色、前置条件和失败提示。
这张表后续会转成 Service 校验逻辑和测试点。
-->
---
# 非法流转清单
<div class="mt-5 text-sm">
| 当前状态 | 尝试动作 | 系统响应 | 验收 |
|---|---|---|---|
| closed | 重新处理 | 返回非法状态流转 | 状态不变 |
| created | 关闭 | 返回非法状态流转 | 页面提示原因 |
| processing | 驳回 | 返回非法状态流转 | 状态不变 |
| pending_verify | 驳回但无原因 | 返回参数错误 | 提示填写原因 |
| 任意状态 | 无权限流转 | 返回权限拒绝 | 不完成操作 |
</div>
<!--
很多团队只测正常流,不测非法流。
第四天必须把非法流转当成设计产物,而不是测试时临时发现。
-->
---
# 状态流转接口契约
<div class="mt-5 text-sm">
```md
POST /workOrder/assign
字段:id、assignee、remark
POST /workOrder/transition
字段:id、action、targetStatus、remark、version
验收:
合法流转成功;非法流转失败;状态不被错误修改;审计日志可查。
```
</div>
<!--
状态流转不要散落在普通编辑接口里。
指派和状态流转建议有明确接口。
Service 层负责读取工单、校验权限、校验状态、更新状态、记录日志。
-->