# 阶段 6:风控与审核实施计划 ## 目标 发送前有规则、有原因、有闭环。阶段 6 聚焦短信任务进入发送链路前的风险评估与审核决策,不实现真实发送 worker。 ## 实施范围 1. 风控规则配置。 - 建立租户级和平台级规则模型。 - 内置第一版默认阈值。 - 支持 `block`、`manual_review`、`allow` 动作。 2. 发送前风险评估。 - 单任务最大号码数。 - 重复号码比例。 - 非法号码比例。 - 黑名单命中比例。 - 非工作时间大批量营销发送。 - 短时间任务创建频控。 - 模板变量异常。 3. 风控命中记录。 - 记录规则编号、规则名称、阈值、实际值、处理动作、可读原因。 - 关联租户、应用、模板和短信任务。 4. 短信审核闭环。 - 风控直接拒绝时,任务进入 `rejected` 并返回拒绝原因。 - 风控要求人工审核时,任务进入 `pending_review` 并展示审核原因。 - 管理端可通过或拒绝审核,并记录审核原因。 ## 目录结构建议 ```text api/src/risk-review/ risk-review.module.ts risk-review.service.ts client-risk-review.controller.ts admin-risk-review.controller.ts ``` ## API 边界 客户端: - `POST /api/client/risk-review/tasks/evaluate`:创建短信发送预审任务并执行风控评估。 - `GET /api/client/risk-review/tasks`:查询短信任务与拒绝/审核原因。 管理端: - `GET /api/admin/risk-review/rules`:查看风控规则。 - `POST /api/admin/risk-review/rules`:创建或调整风控规则。 - `GET /api/admin/risk-review/hits`:查看风控命中记录。 - `GET /api/admin/risk-review/tasks/pending`:查看待审核任务和审核原因。 - `POST /api/admin/risk-review/tasks/:id/approve`:审核通过。 - `POST /api/admin/risk-review/tasks/:id/reject`:审核拒绝。 ## 验收标准 1. 命中风控规则时,必须记录规则编号、规则名称、阈值、实际值、处理动作。 2. 进入审核的任务必须展示审核原因。 3. 直接拒绝的任务必须向客户端返回可读原因。 4. `npm run verify:phase6` 通过。