Files
ccdi/docs/reports/implementation/2026-06-30-local-production-release-feature-list.md

296 lines
13 KiB
Markdown
Raw Normal View History

# 2026-06-30 单提交生产发布功能清单
## 1. 发布范围
本清单说明本地分支 `dev-ui` 相对远程 `origin/dev-ui` 的单提交发布内容。
本次生产发布建议以当前本地 `HEAD` 单提交 `完善外部人员预警与项目分析上线内容` 为准,准确提交号以 `git log -1 --oneline` 输出为准。
对比基线:
- 远程基线:`origin/dev-ui`,当前提交为 `4e90e22e 优化项目详情资金流向图谱展示`
- 本地提交:当前本地 `HEAD`,提交说明为 `完善外部人员预警与项目分析上线内容`
- 提交数量1 个。
- 文件范围76 个文件覆盖后端、前端、SQL、测试与实施文档。
## 2. 本次提交改了哪些内容
### 2.1 后端接口与领域对象
改动范围:
- 修改 `CcdiProjectOverviewController`,新增外部人员预警、外部风险模型卡片、外部模型命中人员和导出入口。
- 新增外部人员查询 DTO、外部风险模型命中人员 DTO。
- 新增外部人员预警列表 VO、汇总 VO、外部风险汇总 VO。
- 新增外部人员预警导出对象、风险模型命中人员导出对象。
- 调整涉疑交易明细导出对象,补齐流水基础字段和关联员工字段。
实现结果:
- 结果总览具备外部人员预警接口能力。
- 外部人员模型命中人员可以分页查询和导出。
- 风险明细导出的“涉疑交易明细”更接近流水明细查询导出格式。
### 2.2 后端 SQL 与服务逻辑
改动范围:
- 修改 `CcdiProjectOverviewMapper.xml`,新增外部人员识别、汇总、列表、外部模型、外部模型命中人员 SQL。
- 修改 `CcdiBankTagAnalysisMapper.xml`,新增外部人员规则打标 SQL。
- 修改 `CcdiBankStatementMapper.xml`,支持按本方证件号查询流水。
- 修改 `CcdiProjectSpecialCheckMapper.xml`,调整专项分析员工范围。
- 修改 `BankTagRuleConfigResolver``CcdiBankTagServiceImpl`,接入外部人员规则参数和执行分发。
- 修改 `CcdiProjectOverviewServiceImpl`组装外部人员预警、风险模型、详情导出、PDF 数据。
- 修改 `CcdiProjectRiskDetailWorkbookExporter``CcdiProjectOverviewReportPdfExporter`
实现结果:
- 外部人员以流水本方证件号 `bs.cret_no` 识别。
- 外部主体必须证件号非空,且不是员工、不是员工亲属。
- 外部主体再匹配中介库、信贷客户库,区分“中介 / 客户 / 外部人员”。
- 外部人员对象级命中和流水级命中都能进入结果总览。
- 专项分析员工范围改为项目流水覆盖员工,而不是只看打标命中员工。
### 2.3 前端页面与交互
改动范围:
- 新增 `ExternalPersonDetailDialog.vue`
- 修改结果总览入口 `PreliminaryCheck.vue`
- 修改风险人员区 `RiskPeopleSection.vue`
- 修改风险模型区 `RiskModelSection.vue`
- 修改项目分析弹窗、侧栏、资金流向 Tab、流水明细查询标题等组件。
- 修改 `projectOverview.js`,补充外部人员相关 API。
实现结果:
- 结果总览风险人员区域新增“外部人员预警”页签。
- 外部人员详情在当前页面弹窗打开,不再跳转流水明细查询。
- 外部人员详情只保留“异常明细”和“资金流向”两个页签。
- 外部人员没有员工专属的资产、征信等模块。
- 风险模型区域同时支持员工模型和外部人员模型。
- 修复外部模型重复渲染导致的 Vue duplicate key 问题。
### 2.4 测试、文档和 SQL
改动范围:
- 新增或调整后端单测,覆盖外部人员 SQL、规则参数、服务分发、PDF、Excel 导出。
- 新增后端和前端实施计划、实施记录、验收记录。
- 新增外部风险总览原型文档。
- 新增外部人员规则生产 SQL。
- 新增外部人员预警测试数据 SQL。
实现结果:
- 提交内包含可追溯的实施文档和验收记录。
- 生产 SQL 和测试 SQL 已拆开说明,避免生产误执行测试数据。
## 3. 做了什么
### 3.1 专项分析员工范围调整
做了:
- 将专项分析的员工范围从“项目打标命中员工”调整为“项目流水对应员工”。
- 通过 `ccdi_bank_statement.project_id` 和流水本方证件号 `cret_no` 关联 `ccdi_base_staff.id_card`
实现了:
- 项目流水中存在的员工,即使没有命中风险模型,也能进入专项分析范围。
- 员工家庭资产负债、采购拓展、招聘拓展、调动拓展使用同一项目员工范围。
- 不改变结果总览风险人员统计口径,不改变打标结果表。
### 3.2 外部人员识别与预警
做了:
- 新增外部人员识别逻辑。
- 外部人员主体口径为:流水 `bs.cret_no` 非空,且该证件号不是员工、不是员工亲属。
- 新增外部人员预警汇总、列表、模型卡片、模型命中人员等后端查询能力。
实现了:
- 结果总览可以分析员工以外的中介、信贷客户、其他外部主体。
- 外部人员可以按“中介 / 客户 / 外部人员”等主体类型展示。
- 仅有无风险外部主体时,不展示外部人员预警空 Tab不在 PDF 里输出外部人员空段落。
- 对象级外部人员命中也能进入结果总览统计。
### 3.3 外部人员 7 条流水规则
做了:
- 新增 SQL 迁移脚本:`sql/migration/2026-06-29-add-external-person-bank-tag-rules.sql`
- 新增 7 条外部人员流水打标规则,并接入后端打标服务分发。
实现了以下规则:
1. 外部人员单笔大额交易:外部主体单笔交易金额超过大额阈值。
2. 外部人员累计交易超限:外部主体累计交易金额超过累计阈值。
3. 外部人员年流水交易额超限:外部主体近一年流水交易额超过年累计阈值。
4. 外部人员夜间集中交易:外部主体在 22:00 至次日 06:00 发生交易。
5. 外部人员疑似赌博摘要:摘要、交易类型或对手方名称命中赌博敏感词。
6. 外部人员同日多对手方疑似赌博交易:同日多笔、多对手方、金额位于疑似赌博区间。
7. 外部人员与员工或员工亲属交易:外部主体与员工或员工亲属发生资金往来。
规则口径:
- 外部人员大额类规则复用已有 `LARGE_TRANSACTION` 参数。
- 外部人员疑似赌博对象规则复用已有 `SUSPICIOUS_GAMBLING` 参数。
- 外部人员单笔大额、累计交易超限、年流水交易额超限为中风险;外部人员与员工/亲属交易、同日多对手方疑似赌博交易为高风险。
- 不使用对手方证件号判断,因为流水没有可靠的对方证件号。
- 外部人员与信贷客户/中介交易时,优先按对手方账号识别。
- 外部人员与员工/亲属交易时,优先按对手方账号识别;账号没有命中已维护账号时,才按对手方名称匹配员工或亲属。
- 如果对手方账号命中信贷客户,即使名称与员工相同,也按信贷客户展示。
### 3.4 结果总览页面
做了:
- 结果总览增加外部人员统计。
- 风险人员区域增加“外部人员预警”页签。
- 风险模型区域同时展示员工模型和外部人员模型。
- 修复外部模型重复渲染导致的 Vue duplicate key 问题。
实现了:
- 顶部统计卡保持 dev-ui 原结构,展示总人数、高风险、中风险、低风险、无风险。
- 顶部统计卡数值按员工与外部主体合并计算:总人数等于员工总人数加外部总人数,高中低和无风险分别加上外部对应人数。
- 当外部总人数大于 0 时,统计卡显示“员工 X / 外部 Y”拆分小字外部总人数为 0 时不显示拆分小字。
- 外部人员预警列表展示:姓名、证件号、主体类型、风险等级、核心异常点、涉及对象、最近交易时间。
- 涉及对象显示业务词,如员工、员工亲属、中介库人员、信贷客户、资金。
- 不再展示不清晰的“关联对象”文案。
- 风险模型区可以筛选员工模型和外部模型,并查看命中人员。
### 3.5 外部人员详情
做了:
- 新增外部人员详情弹窗。
- 外部人员详情只保留“异常明细”和“资金流向”两个页签。
- 右上角提供关闭按钮。
- 移除右上角重复的“分析主体xxx”。
- 移除“跳转流水明细查询”的交互。
实现了:
- 点击外部人员“查看详情”后,在当前结果总览内打开详情弹窗。
- 异常明细按员工详情的异常明细方式展示。
- 流水型异常展示流水明细。
- 对象型异常展示对象命中原因,例如年流水超限。
- 资金流向页签使用与员工资金流向一致的资金图谱能力。
### 3.6 涉疑交易明细与导出
做了:
- 调整风险明细工作簿中“涉疑交易明细”sheet 的字段。
- 保留“员工负面征信信息”和“异常账户人员信息”sheet。
实现了:
- 风险明细导出包含 3 个 sheet
- 涉疑交易明细。
- 员工负面征信信息。
- 异常账户人员信息。
- “涉疑交易明细”字段为:
- 交易时间。
- 本方账户。
- 本方主体。
- 对方名称。
- 对方账户。
- 关联员工。
- 摘要。
- 交易类型。
- 异常标签。
- 交易金额。
### 3.7 PDF 报告
做了:
- 调整结果总览 PDF 的风险汇总展示。
- 增加外部人员相关汇总输出。
- 避免无外部风险时输出空的外部人员段落。
实现了:
- PDF 顶部风险指标按总人数、高风险、中风险、低风险、无风险汇总,并合并外部人员对应风险等级。
- PDF 第三章标题为“风险总览”。
- 存在外部人员风险时,输出外部人员风险汇总、外部模型汇总、外部人员预警明细。
- 不存在外部风险命中时,不输出外部人员预警空段落。
### 3.8 页面交互细节
做了:
- 移除流水明细查询页头部多余副标题。
- 移除风险人员区域 Tab 右侧的小型导出入口。
- 保留结果总览顶部“导出报告”入口。
- 修复项目分析弹窗和外部人员详情交互中的细节问题。
实现了:
- 页面更贴合实际业务操作路径。
- 外部人员详情不会引导用户跳到流水明细查询。
- 外部人员没有员工专属的资产、征信等模块。
## 4. 包含的接口能力
本次代码中涉及或完善的接口能力包括:
- 外部人员预警列表:`/ccdi/project/overview/external-persons`
- 外部人员预警汇总:`/ccdi/project/overview/external-persons/summary`
- 外部风险模型卡片:`/ccdi/project/overview/external-risk-models/cards`
- 外部风险模型命中人员:`/ccdi/project/overview/external-risk-models/people`
- 外部风险模型命中人员导出:`/ccdi/project/overview/external-risk-models/people/export`
- 风险明细导出:`/ccdi/project/overview/risk-details/export`
- 涉疑交易明细查询和导出仍保留现有入口,并补齐导出字段。
## 5. 包含的数据库脚本
生产需要执行:
- `sql/migration/2026-06-29-add-external-person-bank-tag-rules.sql`
该脚本用于写入外部人员 7 条流水打标规则,支持重复执行更新规则口径。
提交内还包含测试数据脚本:
- `sql/migration/2026-06-24-add-external-person-warning-test-data.sql`
该脚本只用于本地或测试环境造数验证,生产不要执行。
本次提交不包含表结构变更,不需要新增业务表、系统表、菜单表或字典表。
## 6. 不包含的内容
本次提交不包含以下内容:
- 不提交 `tongweb_62318.properties`,该文件包含本机路径。
- 不提交 `ruoyi-admin/src/main/resources/application-dev.yml` 中未确认的 `allow-circular-references: true`
- 不提交随机 `.docx` 文件。
- 不提交 `ruoyi-ui/public/*.docx`,这些文件会污染前端生产 `dist`
- 不提交历史 5 月文档、SQL 和原型图片。
- 不改变员工风险人员结果总览的打标统计口径。
- 不改变负面征信和异常账户的业务规则。
## 7. 验证结论
已完成以下验证:
- 后端外部人员规则、SQL、服务分发、导出、PDF 相关单元测试通过。
- 后端针对性单测共 13 个测试类、82 个用例0 失败、0 错误。
- `mvn -pl ccdi-project -am compile -DskipTests` 通过。
- `mvn -pl ruoyi-admin -am package -DskipTests` 通过。
- 前端使用 Node `22.22.3` 执行 `npm run build:prod` 通过。
- 真实页面登录并进入项目 `90629002` 验证通过:
- 结果总览可打开。
- 外部人员预警 Tab 可展示。
- 外部人员详情弹窗可打开。
- 异常明细在详情弹窗内展示。
- 风险模型区域无 duplicate key 控制台错误。
- 风险明细导出实测通过,导出的 xlsx 包含 3 个 sheet涉疑交易明细字段符合本清单。
结论:本地已提交的业务功能可以作为生产发布候选;发布时必须使用干净提交产物,不要使用当前脏工作区直接打包。