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,32 @@
# 审计日志缺失反例
## 场景
工单指派负责人成功,但没有记录审计日志。
## 问题表现
| 操作 | 结果 |
| --- | --- |
| 张三将工单指派给李四 | 工单负责人变更成功 |
| 查询审计日志 | 没有负责人变更记录 |
## 风险
无法追溯负责人变化,出现延误或争议时无法定位责任。
## 修复要求
1. 指派成功后写审计日志。
2. 记录原负责人、新负责人、操作人、时间、来源。
3. 指派失败不写成功审计。
4. 多步写入需要事务一致性。
## 验收
| 操作 | 预期 |
| --- | --- |
| 指派成功 | 审计列表出现 ASSIGN 记录 |
| 指派失败 | 不出现成功审计 |
| 查询详情 | 审计记录可在工单详情查看 |
@@ -0,0 +1,33 @@
# 权限遗漏反例
## 场景
工单删除按钮在前端按权限隐藏,但后端删除接口没有权限校验。
## 问题代码表现
| 层级 | 表现 |
| --- | --- |
| 前端 | 普通研发账号看不到删除按钮 |
| 后端 | 直接请求 `/workOrder/delete` 仍可删除 |
| 审计 | 删除记录可能缺失 |
## 风险
攻击者或误操作用户可以绕过前端直接调用接口删除工单。
## 修复要求
1. 后端删除接口增加权限校验。
2. 删除前校验数据范围。
3. 删除成功写审计日志。
4. 无权限账号直接请求接口返回 403 或业务拒绝。
## 验收
| 账号 | 操作 | 预期 |
| --- | --- | --- |
| 管理员 | 删除允许删除的工单 | 成功并写审计 |
| 普通研发 | 直接请求删除接口 | 失败 |
| 只读用户 | 前端访问删除按钮 | 不可见 |
@@ -0,0 +1,31 @@
# 看板指标口径不清反例
## 场景
看板展示“平均关闭周期”,但没有说明从哪个时间到哪个时间。
## 问题表现
| 指标 | 当前说明 |
| --- | --- |
| 平均关闭周期 | 最近工单平均处理时间 |
## 风险
不同人理解不同:可能是创建到关闭,也可能是开始处理到关闭,导致管理判断失真。
## 修复要求
1. 明确定义为 `close_time - create_time` 或其他确定口径。
2. 明确是否排除未关闭工单。
3. 明确时间范围过滤字段。
4. 用样例数据手工校验。
## 验收
| 样例 | 预期 |
| --- | --- |
| 工单 A 创建 1 日、关闭 3 日 | 周期 2 天 |
| 未关闭工单 | 不计入平均关闭周期 |
| 过滤 7 月 | 只统计 7 月范围内符合口径的数据 |
@@ -0,0 +1,31 @@
# 非法状态流转反例
## 场景
已关闭工单可以直接被改回处理中。
## 问题表现
| 当前状态 | 动作 | 结果 |
| --- | --- | --- |
| 已关闭 | 开始处理 | 状态变成处理中 |
## 风险
已关闭工单被重新打开但没有重开原因、没有审计、没有负责人确认,导致统计和责任链失真。
## 修复要求
1. Service 层集中校验状态流转。
2. 已关闭工单只能通过“重新打开”动作变为新建。
3. 重新打开必须填写原因。
4. 所有成功流转写审计日志。
## 验收
| 操作 | 预期 |
| --- | --- |
| closed -> processing | 失败,状态不变 |
| closed -> reopen -> new | 成功,必须有原因 |
| 重开成功 | 审计记录 oldValue=closed, newValue=new |
@@ -0,0 +1,47 @@
# 好 Command 与坏 Command 对照
## 坏 Command
```md
# /检查代码
帮我看看代码有没有问题。
```
问题:
- 没有使用场景。
- 没有输入要求。
- 没有执行步骤。
- 没有输出格式。
- 没有验收标准。
## 好 Command
```md
# /代码生成 Review
## 使用场景
JeecgBoot 基于 work_order 表生成工单模块基础代码后使用。
## 输入
- 数据表字段说明
- 生成的前端页面
- api 模块文件
- 后端 Controller
- 后端 Service
- 当前 rules
## 执行要求
1. 检查字段是否和数据模型一致
2. 检查查询条件、分页、排序是否完整
3. 检查状态、优先级、类型是否使用字典或枚举
4. 检查新增、编辑、删除、导出按钮是否需要权限控制
5. 检查 loading、empty、error、forbidden 状态是否缺失
6. 标注不确定点
## 输出格式
| 检查项 | 文件 | 现状 | 问题 | 建议 | 验收 |
|---|---|---|---|---|---|
```
@@ -0,0 +1,55 @@
# 好 Plan 与坏 Plan 对照
## 坏 Plan
```md
1. 修改后端接口
2. 修改前端页面
3. 测试一下
```
问题:
- 没有目标。
- 没有范围。
- 没有不做什么。
- 没有文件路径。
- 没有风险和验收。
## 好 Plan
```md
# 工单删除逻辑调整 Plan
## 目标
删除工单时补齐后端权限校验和审计日志。
## 范围
- WorkOrderController 删除接口
- WorkOrderService 删除逻辑
- 工单审计日志写入
- 前端删除按钮权限验证
## 不做什么
- 不调整工单状态流转
- 不重构列表页面
- 不改动非工单模块
## 修改步骤
| 步骤 | 文件/模块 | 动作 | 风险 | 验收 |
|---|---|---|---|---|
| 1 | Controller | 增加后端权限校验 | 权限字符不一致 | 无权限账号返回 403 |
| 2 | Service | 删除前写审计日志 | 事务不一致 | 删除后能查询审计 |
| 3 | 前端页面 | 检查删除按钮权限 | 只隐藏按钮不安全 | 仍需后端拒绝 |
## 风险
- 误删已关闭工单
- 无权限绕过前端
- 审计日志缺失
## 验收
- 管理员可删除允许删除的工单
- 普通研发账号请求删除接口失败
- 删除操作产生审计记录
```
@@ -0,0 +1,50 @@
# 好 Skill 与坏 Skill 对照
## 坏 Skill
```md
# 工单开发 Skill
帮我开发工单模块。
```
问题:
- 没有触发场景。
- 没有输入材料。
- 没有执行步骤。
- 没有输出格式。
- 没有边界和验收。
## 好 Skill
```md
# JeecgBoot 工单模块开发审查 Skill
## 触发场景
涉及工单列表、详情、评论、状态、指派、看板、权限字符、数据权限、操作日志的需求拆解、代码生成或代码修改。
## 输入材料
- PR diff 或相关文件
- 工单需求说明
- 数据模型与接口契约
- 当前 rules
- 前端页面文件
- api 模块文件
- 后端 Controller / Service
## 执行步骤
1. 识别需求范围和非目标范围
2. 检查字段、接口契约和页面状态是否完整
3. 审查 JeecgBoot 生成代码的字段、查询、分页、字典和异常态
4. 检查新增、编辑、删除、指派、状态变更的前端按钮与后端权限
5. 检查操作日志、数据权限和测试缺口
6. 输出风险、不确定点和验收建议
## 输出格式
需求拆解表、接口契约表、代码生成 Review 清单、权限风险表、日志风险表、测试缺口清单、不确定点清单。
## 验收标准
每个关键结论必须标注文件、函数、注解或调用链依据。
```