feat:update 3 4
This commit is contained in:
@@ -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 清单、权限风险表、日志风险表、测试缺口清单、不确定点清单。
|
||||
|
||||
## 验收标准
|
||||
每个关键结论必须标注文件、函数、注解或调用链依据。
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user