外包风险评估系统:领域引擎+前端+服务端持久化与生产部署
- 确定性领域引擎(分类/评分/分级/红线/费用/裁决)+LLM(通义千问)语言理解 - 6步评估向导、服务端草稿持久化(跨设备/编辑草稿保护) - 工作流(草稿→风控→管理层)、RBAC、报告导出、校准、客户/费率/红线/最低工资管理 - 专业图标体系替换全部emoji、看板美化 - 生产化:API_BASE可配置(同源反代)、auth密钥惰性读取修复RBAC - 444单测+204前端测试+51 e2e
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# 外包风险评估系统 — 功能增补与优化全景方案
|
||||
|
||||
## 已完成 ✅
|
||||
|
||||
### P0 盈利与定价
|
||||
- [x] 现金流 / 垫资峰值测算(纯函数 + 详情页"峰值垫资"卡)
|
||||
- [x] 盈亏平衡 / 定价空间曲线(SVG 折线图 + 安全降价空间提示)
|
||||
- [x] 运营控制指标看板(盈利/运营/质量三组 KPI,建议承接项目)
|
||||
|
||||
### 流程与协作
|
||||
- [x] 管理层直接调整状态(终态 override,含审计留痕)
|
||||
- [x] 全流程审计留痕(发起→风控→管理层→归档,全部写审计记录 + PG 持久化)
|
||||
- [x] 归档管理(仅终态可归档、取消归档重置、前端"进行中/已归档"视图)
|
||||
- [x] 审批驳回多方向(风控→退回销售;管理层→退回风控/退回销售/放弃)
|
||||
- [x] 操作记录时间线美化(角色徽章 + 轴线 + 备注引用块)
|
||||
|
||||
---
|
||||
|
||||
## 待实现(按优先级排列)
|
||||
|
||||
### P1 — 高价值 / 中等开发量
|
||||
|
||||
#### 1. 多报价方案对比 ✅
|
||||
- **后端**: `POST/GET/DELETE /api/assessments/:id/scenarios` — 每评估最多 5 套方案,创建时即时计算盈利
|
||||
- **持久化**: `scenarios` 表(迁移 1730000003000),存 inputs + result JSONB
|
||||
- **验证**: 创建方案→后端即时算出净利率,列表查询返回正确
|
||||
|
||||
#### 2. 费率表后台化(消除硬编码) ✅
|
||||
- **后端**: `GET/POST/DELETE /api/rates` + `POST /api/rates/:id/review` 标记已复核
|
||||
- **持久化**: `rate_tables` 表(迁移 1730000004000),按地域/分类/key/版本唯一,支持生效日期
|
||||
- **验证**: CRUD + 标记复核 + 按地域查询当前生效版本均通过
|
||||
|
||||
#### 3. 运营指标实际值回填 & 评估闭环 ✅
|
||||
- **后端**: `POST/GET /api/assessments/:id/actuals` + `GET /api/accuracy` 准确度统计
|
||||
- **持久化**: `actuals` 表(迁移 1730000005000),按评估/月/指标名唯一(upsert)
|
||||
- **验证**: 批量回填 3 指标→查询返回 3 条,准确度统计 count=1
|
||||
|
||||
#### 4. 合规红线库(可配置) ✅
|
||||
- **后端**: `GET/POST/DELETE /api/redline-rules` + `GET /api/redline-rules/active?region=&businessType=`
|
||||
- **持久化**: `redline_rules` 表(迁移 1730000006000),支持按地域/业务类型条件启用 + 法规引用
|
||||
- **验证**: 创建→全量查询→按条件筛选均正确
|
||||
|
||||
### P2 — 中价值 / 中等开发量
|
||||
|
||||
#### 5. 客户信用与集中度风险 ✅
|
||||
- **后端**: `customers` 表(迁移 1730000007000)+ CRUD API + 集中度计算(超 30% 自动警告)
|
||||
- **验证**: 创建 2 客户→集中度 71.4%→触发警告 ✓
|
||||
|
||||
#### 6. 评估有效期 & 到期复评 ✅
|
||||
- **后端**: assessments 加 `expires_at`(迁移 1730000008000,默认 6 个月)+ `GET /api/assessments/expiring`(30 天内到期)
|
||||
- **验证**: 端点正常返回(现有评估暂未到期)✓
|
||||
|
||||
#### 7. 审批 SLA & 超时升级 ✅
|
||||
- **后端**: workflow_status 加 `entered_at`(迁移 1730000009000)+ `GET /api/assessments/overdue`(按角色 SLA 计算超时)
|
||||
- **SLA**: 风控 24h / 管理层 48h(可配置)
|
||||
- **验证**: 端点正常返回 ✓
|
||||
|
||||
#### 8. 驳回原因结构化 ✅
|
||||
- **后端**: `reject_reasons` 表(迁移 1730000010000)+ `POST/GET /api/assessments/:id/reject-reason` + `GET /api/reject-reason-stats`
|
||||
- **枚举**: 定价不足/合规缺陷/资料不全/客户风险/盈利不达标/其他
|
||||
- **验证**: 记录 2 条驳回原因→查询返回→统计分布正确 ✓
|
||||
|
||||
### P3 — 中长期 / 较大开发量
|
||||
|
||||
#### 9. 组合看板 / 管理驾驶舱 ✅
|
||||
- **后端**: `GET /api/dashboard/stats` — 按业务类型/行业/地域统计 + 风险分布 + 月度趋势
|
||||
- **验证**: 返回 byBusinessType(2)/riskDist(2)/trend(1) ✓
|
||||
|
||||
#### 10. 相似历史项目检索(jieba 分词) ✅
|
||||
- **后端**: `GET /api/similar?description=...` — jieba 中文分词 + PG ILIKE 多关键词匹配 + 命中数排序
|
||||
- **依赖**: `nodejieba`(C++ 扩展,分词质量好)
|
||||
- **验证**: "信用卡客服外包银行坐席服务"→命中 2 条,最相关 rank=5 ✓
|
||||
|
||||
#### 11. 附件与证据管理 ✅
|
||||
- **后端**: `POST/GET /api/assessments/:id/attachments` + `DELETE /api/attachments/:id`
|
||||
- **存储**: 本地 fs(UPLOAD_DIR 可配)+ `attachments` 表元数据(迁移 1730000012000)
|
||||
- **验证**: 上传→存文件→查询返回 ✓
|
||||
|
||||
#### 12. 权限与数据安全(RBAC 基础) ✅
|
||||
- **模块**: `src/auth/index.ts` — JWT 签发/验证 + authMiddleware + requireRole
|
||||
- **策略**: AUTH_SECRET 未配置=演示模式(向后兼容);配置后强制校验
|
||||
- **验证**: 演示模式所有 API 正常 ✓
|
||||
|
||||
#### 13. LLM 经验库沉淀 ✅
|
||||
- **后端**: `POST /api/experience` + `GET /api/experience?businessType=&industry=`
|
||||
- **持久化**: `experience_library` 表(迁移 1730000013000),tags + GIN 索引
|
||||
- **验证**: 沉淀→按业务类型检索返回 ✓
|
||||
|
||||
---
|
||||
|
||||
## 技术债 & 工程优化
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 前端 snapshot 测试 | 详情页改动频繁,建议按功能区拆分 snapshot |
|
||||
| E2E 自动化 | 用已安装的 Playwright 补回归测试(登录→新建→详情→审批→归档) |
|
||||
| 性能 | 列表大数据量(1000+)时前端虚拟滚动 + 后端查询索引优化 |
|
||||
| 部署 | Docker Compose(Hono + Vite + PG)一键启动 |
|
||||
|
||||
---
|
||||
|
||||
## 下一步
|
||||
|
||||
告诉我要做哪个(或哪几个),我直接开干。也可以说"按 P1 顺序全做",我会逐个完成并验证。
|
||||
Reference in New Issue
Block a user