7.5 KiB
7.5 KiB
结果总览风险人员区块收口设计文档
模块: 初核项目详情 - 结果总览 日期: 2026-03-20
一、背景
当前结果总览页面的人员相关信息拆分为两个区块:
- 风险人员总览
- 中高风险人员TOP10
现状问题是:
- 风险等级、命中模型数只在
中高风险人员TOP10中展示。 - 风险人员总览与 TOP10 在页面上存在信息拆散,用户需要跨区块比对。
- 本轮需求要求移除独立的 TOP10 区块,并把关键风险字段收拢到风险人员总览中。
二、目标
本次设计目标如下:
- 移除结果总览页面中的
中高风险人员TOP10区块。 - 保留
风险人员总览作为唯一人员榜单区块。 - 在风险人员总览现有列基础上新增:
风险等级命中模型数
- 保持当前风险人员总览的排序逻辑不变。
三、范围
3.1 本次范围
- 调整结果总览页面人员区块结构
- 扩展风险人员总览接口返回字段
- 移除结果总览页面对 TOP10 接口的依赖
- 更新前端静态断言测试
- 补充本次设计文档、后续前后端实施计划与实施记录
3.2 不在本次范围
- 不调整风险仪表盘区块
- 不调整风险模型区和风险明细区
- 不修改风险等级计算规则
- 不修改风险人员总览当前排序口径
- 不在本轮删除后端独立 TOP10 接口
四、现状分析
4.1 页面现状
当前 RiskPeopleSection.vue 中包含两个 block:
风险人员总览中高风险人员TOP10
风险人员总览当前展示字段为:
- 姓名
- 身份证号
- 所属部门
- 疑似违规数
- 核心异常点
- 操作
TOP10 当前展示字段为:
- 姓名
- 身份证号
- 所属部门
- 风险等级
- 命中模型数
- 操作
4.2 后端现状
后端员工聚合结果 CcdiProjectEmployeeRiskAggregateVO 已经包含以下字段:
modelCountriskLevelCoderiskLevelNameriskLevelSort
这说明本轮需求不需要新增新的统计口径,后端已有聚合结果足以支撑风险人员总览增加两列展示。
五、方案对比
5.1 方案 A:扩展风险人员总览接口并移除页面 TOP10 依赖
做法:
- 风险人员总览接口直接补充返回
riskLevel、riskLevelType、modelCount - 前端页面只保留一个风险人员总览表格
- 前端不再请求 TOP10 接口
优点:
- 最短路径实现
- 字段来源单一,口径一致
- 不需要前端做补丁式字段拼装
- 与本轮“移除 TOP10 页面区块”的需求完全一致
缺点:
- 风险人员总览表格横向字段增加,需要适度调整列宽
5.2 方案 B:前端继续请求 TOP10,再回填到风险人员总览
做法:
- 风险人员总览接口不变
- 前端同时请求风险人员总览和 TOP10
- 前端根据人员信息把风险等级和命中模型数拼回总览表格
问题:
- 字段来源分裂
- 口径容易漂移
- 属于补丁式方案,不符合本次最短路径和单一口径要求
5.3 方案 C:只隐藏 TOP10 区块,不补真实字段
做法:
- 页面隐藏 TOP10
- 风险人员总览接口和表格不扩展
问题:
- 无法满足“新增风险等级和命中模型数”的需求
- 需求不完整
5.4 结论
采用方案 A。
六、目标页面结构
人员区块调整后,结果总览页面仍保留四大区块:
- 风险仪表盘
- 风险人员总览
- 风险模型
- 风险明细
其中人员区块收口为单表结构,风险人员总览列顺序为:
- 序号
- 姓名
- 身份证号
- 所属部门
- 疑似违规数
- 风险等级
- 命中模型数
- 核心异常点
- 操作
说明:
风险等级使用标签展示,继续直接绑定后端返回的riskLevelType命中模型数直接展示后端返回的modelCount核心异常点继续完整展示,不做压缩式改造
七、后端设计
7.1 接口边界
继续沿用现有接口:
GET /ccdi/project/overview/risk-people
入参不变:
projectId
7.2 返回结构调整
风险人员总览返回项新增以下字段:
riskLevelriskLevelTypemodelCount
调整后示例:
{
"overviewList": [
{
"name": "李四",
"idNo": "330000000000000001",
"department": "信息二部",
"riskCount": 5,
"riskLevel": "中风险",
"riskLevelType": "warning",
"modelCount": 4,
"riskPoint": "大额单笔收入、疑似兼职",
"actionLabel": "查看详情"
}
]
}
7.3 聚合与映射
后端不新增新的聚合 SQL 口径,直接复用现有员工风险聚合结果:
hitCount继续作为riskCountriskLevelCode用于映射riskLevel和riskLevelTypemodelCount直接透传到风险人员总览项
服务层新增映射规则:
HIGH -> 高风险 / dangerMEDIUM -> 中风险 / warningLOW -> 低风险 / info
7.4 排序口径
风险人员总览继续沿用当前查询顺序:
risk_level_sort ascmodel_count descrule_count descstaff_id_card asc
本次不改成新的重点排序规则。
八、前端设计
8.1 页面结构调整
RiskPeopleSection.vue 中:
- 保留风险人员总览 block
- 删除中高风险人员TOP10 block
- 在风险人员总览表格中新增两列:
- 风险等级
- 命中模型数
8.2 数据装配调整
PreliminaryCheck.vue 中页面加载时:
- 保留
dashboard请求 - 保留
riskPeople请求 - 移除
topRiskPeople请求
createOverviewLoadedData 中:
- 保留
overviewList注入 - 移除
topRiskList对页面展示的依赖
8.3 Mock 与状态数据
preliminaryCheck.mock.js 中:
overviewList示例数据补充riskLevel、riskLevelType、modelCount- 页面状态数据不再依赖
topRiskList
九、异常与空态处理
projectId为空时,继续展示现有空态- 接口异常时,继续沿用当前结果总览页面的空态回退
- 风险人员总览无数据时,展示单表空态,不再出现第二个 TOP10 区块
- 风险等级标签由后端直接提供,不在前端新增业务推导逻辑
十、验证设计
10.1 后端验证
需要验证:
- 风险人员总览接口返回新增字段:
riskLevelriskLevelTypemodelCount
- 风险等级口径保持原逻辑不变
- 疑似违规数仍然来自
hitCount - 风险人员总览排序不变
10.2 前端验证
需要验证:
- 结果总览页面不再请求 TOP10 接口
- 人员区块只渲染一个表格
- 风险人员总览出现新增两列:
- 风险等级
- 命中模型数
- 加载态、空态、正常态均可正常展示
10.3 测试资产更新
前端静态断言测试需要同步调整:
- 移除对
中高风险人员TOP10文案的依赖 - 增加对
风险等级、命中模型数的断言
十一、文档沉淀
本次设计确认后,后续需补齐以下文档:
- 后端实施计划:
docs/plans/backend/ - 前端实施计划:
docs/plans/frontend/ - 实施记录:
docs/reports/implementation/ - 验证记录:
docs/tests/records/
十二、结论
本次改动采用“单表收口”的最短路径方案:
- 页面移除独立的
中高风险人员TOP10 风险人员总览补充风险等级与命中模型数- 后端扩展现有风险人员总览接口返回字段
- 前端移除对 TOP10 接口的页面依赖
- 排序、风险等级计算和其他区块保持不变
该方案满足需求、口径单一、改动边界清晰,且不会把本轮调整扩散到结果总览其他功能块。