## 业务逻辑缺陷检测

> 与静态缺陷不同，业务逻辑缺陷需要理解代码的业务语义才能识别。
> 本文件是检测路由表——根据代码特征定位需要加载的检测项子文件。

### 检测路由表

| 触发信号（代码特征） | 触发检测项 | 文件 |
|---------------------|-----------|------|
| 多个写操作（insert/update/delete）无事务包裹 | 事务一致性 | [transaction-consistency.md](transaction-consistency.md) |
| 创建/删除/状态变更，但关联数据未同步处理 | 数据完整性 | [data-integrity.md](data-integrity.md) |
| 路由 handler 中的写操作（POST/PUT/DELETE） | 权限绕过 + 幂等性 | [authorization-bypass.md](authorization-bypass.md) [idempotency.md](idempotency.md) |
| 状态字段直接赋值（`obj.status = ...`） | 状态机违规 | [state-machine.md](state-machine.md) |
| 读-改-写序列（先查后改） | 并发冲突 | [concurrency-conflict.md](concurrency-conflict.md) |
| "不存在则创建"模式（`if (!exists) then create`） | 并发冲突 + 幂等性 | [concurrency-conflict.md](concurrency-conflict.md) [idempotency.md](idempotency.md) |
| 缓存操作 + 数据库写操作同时存在 | 数据一致性 | [data-consistency.md](data-consistency.md) |
| switch/case 处理枚举/状态，或同一概念多处条件分支 | 条件逻辑遗漏 | [conditional-logic.md](conditional-logic.md) |
| 分页/批量操作（limit, batch, bulk, forEach） | 边界业务规则 | [boundary-rules.md](boundary-rules.md) |
| 多步骤流程（step1→step2→step3，状态机驱动） | 工作流缺陷 | [workflow-defects.md](workflow-defects.md) |

### 使用方式

1. 读取变更代码，识别上述触发信号
2. 按匹配到的触发信号，**只加载**对应子文件（无需全量加载）
3. 无匹配触发信号 → 不执行逻辑缺陷检测
4. 同一触发信号对应多个检测项时，按优先级执行：Critical → High → Medium

### 通用排除规则

以下情况不报告缺陷：
- **测试文件**：`*.test.*`、`*.spec.*`、`__tests__/` 目录
- **生成的代码**：`generated/`、`*.generated.*`、`node_modules/`、vendor
- **第三方依赖**：不可控的外部库代码
- **有明确 TODO/FIXME 注释**：开发者已知悉的问题
- **静态/编译器可检测的问题**：类型错误、语法错误、未定义变量等交给静态缺陷检测路由表（`static-defects/routing.md`）
