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
@@ -0,0 +1,28 @@
# AI Review 报告模板
## Review 输入
- PR diff:
- 需求说明:
- rules:
- 测试结果:
- 历史问题:
## 结论
通过 / 有条件通过 / 不通过
## 问题清单
| 等级 | 文件/模块 | 问题 | 触发规则 | 风险 | 建议 | 测试/验收 |
| --- | --- | --- | --- | --- | --- | --- |
## 不确定点
| 不确定点 | 需要谁确认 | 验证方式 |
| --- | --- | --- |
## 是否建议合入
说明理由。
@@ -0,0 +1,23 @@
# Browser 验证报告模板
## 验证对象
- 页面:
- 分支/版本:
- 账号/角色:
- 浏览器:
## 验证项
| 验收项 | 账号/条件 | 操作步骤 | 预期 | 实际 | 证据 |
| --- | --- | --- | --- | --- | --- |
| 页面打开 | | | | | |
| 主流程 | | | | | |
| 权限态 | | | | | |
| 空态 | | | | | |
| 错误态 | | | | | |
## 结论
通过 / 有条件通过 / 不通过
@@ -0,0 +1,36 @@
# Plan 任务模板
## 目标
说明本次任务要解决什么问题。
## 范围
列出会涉及的模块、页面、接口、数据和配置。
## 不做什么
明确排除项,避免 AI 扩大范围。
## 输入材料
- 需求说明:
- 源码依据:
- 规则文件:
- 验收标准:
## 修改步骤
| 步骤 | 文件/模块 | 动作 | 风险 | 验收 |
| --- | --- | --- | --- | --- |
| 1 | | | | |
## 风险点
| 风险 | 影响 | 应对 | 验收 |
| --- | --- | --- | --- |
## 验证方式
列出命令、页面操作、账号、数据和预期结果。
@@ -0,0 +1,16 @@
# 工单 RBAC 权限矩阵
| 功能点 | 管理员 | 工单负责人 | 研发处理人 | 测试验证人 | 只读观察者 | 权限字符建议 | 备注 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 查看列表 | 允许 | 条件允许 | 条件允许 | 条件允许 | 条件允许 | work:order:list | 按数据范围 |
| 查看详情 | 允许 | 条件允许 | 条件允许 | 条件允许 | 条件允许 | work:order:query | 仅可见范围 |
| 新建工单 | 允许 | 允许 | 允许 | 允许 | 拒绝 | work:order:add | |
| 编辑工单 | 允许 | 条件允许 | 条件允许 | 拒绝 | 拒绝 | work:order:edit | 状态限制 |
| 指派负责人 | 允许 | 条件允许 | 拒绝 | 拒绝 | 拒绝 | work:order:assign | |
| 状态流转 | 允许 | 条件允许 | 条件允许 | 条件允许 | 拒绝 | work:order:transition | 按状态 |
| 关闭工单 | 允许 | 条件允许 | 拒绝 | 条件允许 | 拒绝 | work:order:close | 测试验证后 |
| 删除工单 | 允许 | 拒绝 | 拒绝 | 拒绝 | 拒绝 | work:order:delete | 高危操作 |
| 查看审计日志 | 允许 | 条件允许 | 条件允许 | 条件允许 | 拒绝 | work:order:audit | |
| 查看看板 | 允许 | 允许 | 条件允许 | 条件允许 | 条件允许 | work:order:dashboard | 按数据范围 |
| 导出数据 | 允许 | 条件允许 | 拒绝 | 拒绝 | 拒绝 | work:order:export | |
@@ -0,0 +1,8 @@
# Review 修复记录
| Review 编号 | 问题 | 是否成立 | 修改文件 | 修改说明 | 验证结果 | 资产沉淀 |
| --- | --- | --- | --- | --- | --- | --- |
| R01 | 删除接口缺少后端权限校验 | 是 | WorkOrderController | 增加权限校验 | 无权限请求被拒绝 | 权限检查清单 |
| R02 | closed 可重新处理 | 是 | WorkOrderService | 补非法流转校验 | closed -> processing 失败 | 状态流转检查清单 |
| R03 | 看板关闭周期口径不清 | 是 | 指标字典/看板接口 | 明确 create_time 到 close_time | 指标说明已更新 | 看板指标口径清单 |
@@ -0,0 +1,40 @@
# 工单审计日志 SOP
## 记录原则
所有会改变工单关键业务状态、负责人、可见性或结论的动作都必须记录审计日志。
## 审计字段
| 字段 | 含义 | 示例 |
| --- | --- | --- |
| ticket_id | 工单 ID | WO-001 |
| actor_id | 操作人 ID | 1001 |
| actor_name | 操作人名称 | zhangsan |
| action | 操作类型 | ASSIGN |
| field_name | 变更字段 | assignee |
| old_value | 旧值 | lisi |
| new_value | 新值 | wangwu |
| source | 来源 | web |
| request_id | 请求 ID | req-001 |
| created_at | 操作时间 | 2026-07-01 10:00:00 |
## 必须记录的动作
| 动作 | 写入时机 | oldValue | newValue | 验收 |
| --- | --- | --- | --- | --- |
| 创建工单 | 创建成功后 | 空 | 工单摘要 | 审计列表可见 |
| 编辑字段 | 保存成功后 | 修改前字段 | 修改后字段 | 字段前后值正确 |
| 指派负责人 | 指派成功后 | 原负责人 | 新负责人 | 审计记录负责人变化 |
| 状态流转 | 状态变更成功后 | 原状态 | 新状态 | 审计记录状态变化 |
| 评论新增 | 评论保存后 | 空 | 评论摘要 | 审计记录评论动作 |
| 关闭工单 | 关闭成功后 | 原状态 | 已关闭 | 审计记录关闭时间 |
## 验收方式
1. 执行关键操作后能在审计列表查询到记录。
2. oldValue/newValue 和实际变更一致。
3. 敏感字段已脱敏。
4. 操作失败不写成功审计。
5. 多步写入失败时审计和业务数据保持一致。
@@ -0,0 +1,13 @@
# 工单异常态清单
| 场景 | 触发条件 | 前端表现 | 后端响应 | 验收 |
| --- | --- | --- | --- | --- |
| 权限不足 | 无权限操作 | 按钮不可见或提示无权限 | 403 或业务拒绝 | 不完成操作 |
| 工单不存在 | 传入错误 ID | 显示不存在 | 404 或业务错误 | 页面不崩溃 |
| 非法状态流转 | closed -> processing | 提示非法流转 | 状态不变 | 数据状态不变 |
| 重复提交 | 连续点击提交 | 按钮 loading/禁用 | 只处理一次 | 只生成一条有效审计 |
| 参数缺失 | 驳回缺少原因 | 表单校验提示 | 参数错误 | 不改变状态 |
| 并发修改 | 数据版本过期 | 提示刷新 | 拒绝覆盖 | 旧数据不覆盖新数据 |
| 看板无数据 | 无匹配记录 | 空状态 | 返回空集合 | 页面不报错 |
| 审计日志为空 | 无审计记录 | 空状态 | 返回空集合 | 页面不报错 |
@@ -0,0 +1,12 @@
# 工单权限控制方案
| 操作 | 前端入口 | 权限字符 | 后端接口 | 后端校验 | 数据权限 | 验收 |
| --- | --- | --- | --- | --- | --- | --- |
| 新增工单 | 新增按钮 | work:order:add | /workOrder/add | 权限注解 | 无 | 无权限账号看不到按钮且直接请求失败 |
| 编辑工单 | 编辑按钮 | work:order:edit | /workOrder/edit | 权限注解 + 状态校验 | 负责人/创建人范围 | 越权账号返回 403 或业务拒绝 |
| 指派负责人 | 指派按钮 | work:order:assign | /workOrder/assign | 权限注解 | 管理员/负责人范围 | 普通研发无法指派他人 |
| 状态流转 | 状态按钮 | work:order:transition | /workOrder/transition | 权限注解 + 状态机校验 | 相关工单范围 | 非法流转失败 |
| 删除工单 | 删除按钮 | work:order:delete | /workOrder/delete | 权限注解 | 管理员范围 | 非管理员返回 403 |
| 查看审计 | 审计页签 | work:order:audit | /workOrder/audit/list | 权限注解 | 相关工单范围 | 无权限不可见且接口拒绝 |
| 看板 | 看板菜单 | work:order:dashboard | /workOrder/dashboard | 权限注解 | 数据范围过滤 | 不同角色数据范围不同 |
@@ -0,0 +1,22 @@
# 工单状态流转表
| 当前状态 | 动作 | 目标状态 | 允许角色 | 前置条件 | 后置动作 | 验收 |
| --- | --- | --- | --- | --- | --- | --- |
| 新建 | 指派 | 新建 | 管理员/负责人 | 工单未关闭 | 写审计日志 | 指派人变化且状态不变 |
| 新建 | 开始处理 | 处理中 | 研发处理人/负责人 | 已指派处理人 | 写审计日志 | 状态变为处理中 |
| 处理中 | 提交验证 | 待验证 | 研发处理人/负责人 | 处理说明不为空 | 写审计日志 | 状态变为待验证 |
| 待验证 | 验证通过 | 已关闭 | 测试验证人/负责人 | 验证结果通过 | 写审计日志和关闭时间 | 状态变为已关闭 |
| 待验证 | 验证驳回 | 已驳回 | 测试验证人/负责人 | 驳回原因不为空 | 写审计日志 | 状态变为已驳回 |
| 已驳回 | 重新处理 | 处理中 | 研发处理人/负责人 | 驳回原因已读 | 写审计日志 | 状态变为处理中 |
| 已关闭 | 重新打开 | 新建 | 管理员 | 重开原因不为空 | 写审计日志 | 状态变为新建 |
## 非法流转清单
| 当前状态 | 尝试动作 | 问题 | 系统响应 | 验收 |
| --- | --- | --- | --- | --- |
| 已关闭 | 开始处理 | 关闭后不能直接处理 | 返回非法流转 | 状态不变 |
| 新建 | 验证通过 | 未处理不能验证 | 返回非法流转 | 状态不变 |
| 待验证 | 提交验证 | 重复提交验证 | 返回非法流转 | 只保留原状态 |
| 处理中 | 验证通过 | 未进入待验证 | 返回非法流转 | 状态不变 |
| 已驳回 | 关闭 | 驳回后不能直接关闭 | 返回非法流转 | 状态不变 |
@@ -0,0 +1,13 @@
# 工单看板指标字典
| 指标 | 含义 | 口径 | 数据来源 | 展示方式 | 权限 | 验收 |
| --- | --- | --- | --- | --- | --- | --- |
| 工单总数 | 当前筛选范围内工单数量 | count(ticket_id) | 工单表 | 指标卡 | 看板权限 | 与列表同条件数量一致 |
| 未关闭工单数 | 状态不是已关闭的数量 | status != closed | 工单表 | 指标卡 | 看板权限 | 过滤状态验证 |
| 平均关闭周期 | 从创建到关闭平均耗时 | avg(close_time - create_time) | 工单表 | 指标卡/趋势 | 看板权限 | 抽样计算一致 |
| 按优先级分布 | 高中低优先级数量 | group by priority | 工单表/字典 | 饼图/柱状图 | 看板权限 | 分组总和等于总数 |
| 按类型分布 | 缺陷/需求/支持数量 | group by type | 工单表/字典 | 柱状图 | 看板权限 | 分组总和等于总数 |
| 缺陷趋势 | 按日期统计缺陷工单 | type=bug group by date | 工单表 | 折线图 | 看板权限 | 日期范围正确 |
| 逾期工单数 | 超过 SLA 未关闭数量 | due_time < now and status != closed | 工单表 | 指标卡 | 看板权限 | SLA 口径明确 |
| 人员处理负载 | 按负责人统计未关闭数量 | group by assignee | 工单表 | 排行榜 | 管理员/负责人 | 数据范围正确 |
@@ -0,0 +1,11 @@
# 工单看板接口验收记录
| 验收项 | 账号/条件 | 请求参数 | 预期 | 实际 | 证据 | 结论 |
| --- | --- | --- | --- | --- | --- | --- |
| 工单总数 | 管理员 | 默认筛选 | 返回总数 | | | |
| 空数据 | 管理员 + 无匹配条件 | 不存在的日期范围 | 返回空集合或 0 | | | |
| 无权限 | 只读外角色 | 默认筛选 | 返回 403 或业务拒绝 | | | |
| 时间过滤 | 管理员 | start/end | 只统计范围内数据 | | | |
| 数据范围 | 普通研发 | 默认筛选 | 只返回本人相关数据 | | | |
| 指标口径 | 管理员 | 固定样例数据 | 与手工计算一致 | | | |
@@ -0,0 +1,28 @@
# 阶段 Review 报告
## Review 输入
- RBAC 权限矩阵:
- 权限控制方案:
- 状态流转表:
- 非法流转清单:
- 审计日志 SOP:
- 异常态清单:
- 看板指标字典:
- 看板接口验收记录:
## 问题清单
| 等级 | 模块 | 问题 | 触发规则 | 风险 | 修复建议 | 验收 |
| --- | --- | --- | --- | --- | --- | --- |
| P1 | 权限 | 删除接口只隐藏按钮,后端缺少权限校验 | 前端按钮不是安全边界 | 可绕过前端删除工单 | 后端补权限校验 | 无权限账号请求返回 403 |
## 不确定点
| 不确定点 | 影响 | 需要谁确认 |
| --- | --- | --- |
## 结论
通过 / 有条件通过 / 不通过