新增图谱功能及验收清单

This commit is contained in:
wjj
2026-05-29 18:09:32 +08:00
parent 180a892275
commit 26cd049991
49 changed files with 8220 additions and 83 deletions

View File

@@ -0,0 +1,75 @@
# 专项排查图谱实施记录
## 实施范围
- 当前口径保留资金流图谱和关系图谱两个页签。
- 页面嵌入项目详情“专项排查”页签。
- 后端不再实时聚合 `ccdi_bank_statement`
- 资金流图谱后端读取四张基础图谱表,并叠加手工资金流向表:
- `lx_fund_flow_subject_node`
- `lx_fund_flow_account_node`
- `lx_fund_flow_own_account_edge`
- `lx_fund_flow_detail_edge`
- `lx_fund_flow_manual_edge`
- 关系图谱后端读取四张关系图谱表:
- `lx_rel_node`
- `lx_rel_family_edge`
- `lx_rel_stock_edge`
- `lx_rel_represent_edge`
- 默认查询全部流水;用户选择日期时按 `lx_fund_flow_detail_edge.trx_date` 过滤。
- 点击资金边可分页查看逐笔流水。
- 点击可穿透节点可按 `object_key` 设为中心重新查询。
## 关键改动
- 后端 `CcdiFundGraphMapper.xml` 改为四表查询和实时聚合。
- 后端 `CcdiFundGraphServiceImpl` 支持 `objectKey` 查询、节点穿透和边明细查询。
- 后端新增 `/ccdi/project/fund-graph/search` 主体搜索接口。
- 前端新增 `ruoyi-ui/src/api/ccdi/graph/fundGraph.js`
- 前端新增 `ruoyi-ui/src/api/ccdi/graph/relationGraph.js`
- 前端新增 `FundGraphSection.vue`,提供紧凑型图谱卡片和边明细抽屉。
- `SpecialCheck.vue` 中原“图谱外链展示”占位卡替换为图谱组件。
- `ProjectAnalysisDialog.vue` 中“资金流向”和“关系图谱”页签替换为简版图谱展示。
## 测试数据
测试数据脚本:
```text
sql/ccdi/graph/02_lx_fund_graph_seed_test_data.sql
```
dev 库测试数据:
```text
资金流图谱测试身份证号617673198109148314
关系图谱测试身份证号330101198001010011
主体点10
账户点14
持有边14
明细边72
```
覆盖场景:
- 默认全部流水聚合。
- 日期范围筛选聚合。
- 支出 `flag = 1`
- 收入 `flag = 2`
- 家庭关系标签:配偶、父亲、母亲。
- 普通对手方:支付宝、淘宝、美团、财付通、小店、银行转账。
- 家庭关系节点按 `object_key` 设为中心查询。
## 验证
- `mvn -pl ccdi-project -am compile -DskipTests` 通过。
- `npm run build:prod` 通过。
- dev 库 SQL 校验通过:身份证号可定位主体,默认全部流水和日期筛选均能聚合出资金边。
## 注意
- 生产库 DDL 不随应用发布自动执行。
- 生产需人工执行 `sql/ccdi/graph/01_lx_fund_graph_mysql_ddl.sql` 后再发布后端。
- 生产如已建资金流图谱旧表,优先执行 `sql/ccdi/graph/06_lx_fund_graph_existing_table_supplement.sql` 补字段和补索引。
- `lx_fund_flow_sum_edge` 不作为当前纪检资金图谱页面依赖。
- 如果目标库未建四张 `lx_*` 表,后端接口会报表不存在。

View File

@@ -0,0 +1,26 @@
# 图谱评审问题修复实施记录
## 本次修改
- 修复资金流图谱手工新增边在参数缺失时直接抛出服务端异常的问题,改为返回明确业务错误信息。
- 修复资金流图谱“展开一层”可追溯判断固定按 `to` 侧判断的问题,改为按当前中心节点的对端主体判断是否可继续扩展。
- 调整资金流图谱边列表组装逻辑,将真实边与手工边合并后统一排序,再按同一 `limit` 截断,避免结果条数放大和排序口径不一致。
- 删除未使用的重复前端 API 文件,收敛资金流图谱接口引用入口。
## 影响范围
- 后端资金流图谱接口:
- `POST /ccdi/project/fund-graph/manual-edge`
- `GET /ccdi/project/fund-graph/graph`
- 前端资金流图谱 API 组织方式:
- 保留 `ruoyi-ui/src/api/ccdi/graph/fundGraph.js`
- 删除未使用的 `ruoyi-ui/src/api/ccdi/fundGraph.js`
## 验证计划
- 后端执行 `mvn -pl ccdi-project -am -DskipTests compile`
- 前端进入 `ruoyi-ui` 后先执行 `nvm use`,再执行 `npm run build:prod`
- 真实页面验收重点:
- 手工新增资金流向缺少必填项时返回明确错误提示
- 资金边“展开一层”按钮在流入/流出两类边下判断更符合对端主体实际可扩展性
- 同一查询条件下真实边与手工边整体排序和数量上限一致

View File

@@ -0,0 +1,18 @@
# 资金流图谱流水查询报错修复实施记录
## 本次修改
- 修复资金流图谱构建节点列表时,对边两端主体二次回查未设置 `limit` 的问题。
- 该问题会使 MyBatis 生成 `LIMIT null`MySQL 报 `near 'null'`,进而导致资金流图谱查询或点击资金边后的流水明细下钻显示失败。
- 保留 Mapper 层默认 `LIMIT 20`,同时在服务层补齐默认上限,避免其他调用路径再次传入空分页上限。
## 影响范围
- 后端接口:`GET /ccdi/project/fund-graph/graph`
- 关联前端表现:资金流图谱加载和资金边流水明细查询
## 验证
- 执行后端编译,确认图谱模块通过编译。
- 重新打包并按项目脚本重启后端,使运行中的 jar 包含本次修复。
- 使用真实接口查询资金流图谱和资金边流水明细,确认不再出现 `LIMIT null` SQL 错误。

View File

@@ -0,0 +1,36 @@
# 图谱改动梳理与验收文档实施记录
## 本次修改
- 新增图谱功能改动梳理与验收清单:`docs/tests/plans/2026-05-29-graph-acceptance-checklist.md`
- 新增本轮图谱验收执行记录:`docs/tests/records/2026-05-29-graph-acceptance-record.md`
- 新增资金流图谱已建表环境补充 SQL`sql/ccdi/graph/06_lx_fund_graph_existing_table_supplement.sql`
- 明确已建表场景下的 SQL 口径:保留 `CREATE TABLE IF NOT EXISTS` 作为新环境参考,已建表只做字段、索引、字符集、排序规则核对和补充。
- 明确当前图谱口径:保留资金流图谱和关系图谱两个页签。
- 明确资金流图谱验收样例:当前可用身份证号为 `617673198109148314`
## 影响范围
- 不修改业务代码或运行配置。
- 新增的 SQL 只用于已建表环境补字段、补索引和补建手工边表,不会删除或清空已有图谱数据。
- 文档覆盖资金流图谱、关系图谱、专项排查页面、项目分析弹窗和数据库补充口径。
## 验证情况
- 后端编译:`mvn -pl ccdi-project -am compile -DskipTests` 通过。
- 前端构建:`npm run build:prod` 通过;`nvm` 在当前 PowerShell 环境不可用,实际 Node 为 `v22.22.0`
- 接口验收:
- 资金图谱查询返回 10 个节点、18 条边、72 笔。
- 资金边明细分页返回正常。
- 关系图谱查询返回 3 个节点、2 条边。
- 疑似同名企业查询返回 1 条候选。
- 页面验收:
- 已打开真实 `http://localhost/` 页面并进入项目 `90342` 专项排查页。
- 资金图谱查询展示 `18 条资金边``72 笔``302,844.78 元`
- 图谱相关网络请求均返回 `200`
- 浏览器控制台未发现 `error`
## 后续事项
- 若生产已建资金流旧表,执行 `06_lx_fund_graph_existing_table_supplement.sql` 前需先人工核对目标库和表结构差异。
- 当前 PowerShell 环境 `nvm` 不可用,前端构建实际使用 Node `v22.22.0`

View File

@@ -0,0 +1,145 @@
# 图谱预备提交改动与功能清单
## 1. 提交范围建议
本清单按“图谱功能”口径整理预备提交内容。提交前建议只纳入下列图谱相关文件,避免混入其他业务、环境配置或本地产物。
### 1.1 后端图谱代码
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiFundGraphController.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiRelationGraphController.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiFundGraph*.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/CcdiRelationGraph*.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiFundGraph*.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiRelationGraph*.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiFundGraphMapper.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/mapper/CcdiRelationGraphMapper.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiFundGraphService.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/ICcdiRelationGraphService.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiFundGraphServiceImpl.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiRelationGraphServiceImpl.java`
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiFundGraphMapper.xml`
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiRelationGraphMapper.xml`
### 1.2 前端图谱代码
- `ruoyi-ui/src/api/ccdi/graph/fundGraph.js`
- `ruoyi-ui/src/api/ccdi/graph/relationGraph.js`
- `ruoyi-ui/src/views/ccdiProject/components/detail/graph/FundGraphSection.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisFundFlowTab.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/SpecialCheck.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/ProjectAnalysisDialog.vue`
### 1.3 数据库脚本
- `sql/ccdi/graph/01_lx_fund_graph_mysql_ddl.sql`
- `sql/ccdi/graph/02_lx_fund_graph_seed_test_data.sql`
- `sql/ccdi/graph/03_lx_relation_graph_mysql_ddl.sql`
- `sql/ccdi/graph/04_lx_relation_graph_build_mysql.sql`
- `sql/ccdi/graph/05_lx_relation_graph_seed_test_data.sql`
- `sql/ccdi/graph/06_lx_fund_graph_existing_table_supplement.sql`
说明:
- `01``03` 是新环境建表参考。
- `06` 是资金流图谱已建表环境补字段、补索引脚本,不删除、不重建、不清空基座数据。
- 生产数据库变更由人工确认后手动执行,不随应用发布自动执行。
### 1.4 文档与验收记录
- `docs/plans/backend/2026-05-28-fund-graph-backend-implementation.md`
- `docs/plans/frontend/2026-05-28-fund-graph-frontend-implementation.md`
- `docs/plans/fullstack/2026-05-28-graph-development-decisions.md`
- `docs/plans/fullstack/2026-05-28-graph-production-db-change-list.md`
- `docs/reports/implementation/2026-05-28-fund-graph-special-check-implementation.md`
- `docs/reports/implementation/2026-05-29-fund-graph-review-fixes-implementation.md`
- `docs/reports/implementation/2026-05-29-fund-graph-statement-query-fix.md`
- `docs/reports/implementation/2026-05-29-graph-acceptance-doc-and-verification.md`
- `docs/reports/implementation/2026-05-29-graph-precommit-summary.md`
- `docs/tests/plans/2026-05-29-graph-acceptance-checklist.md`
- `docs/tests/records/2026-05-29-graph-acceptance-record.md`
### 1.5 提交前需要谨慎确认的文件
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java`
- `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java`
这两个文件只增加 `@Lazy` 解决服务循环依赖,属于图谱运行联动修复,可纳入图谱提交。
以下文件当前工作区存在改动,但是否属于图谱提交需单独确认:
- `ruoyi-admin/src/main/resources/application-dev.yml`
- `tongweb_62318.properties`
- `ruoyi-ui/src/views/ccdiProject/components/detail/FamilyAssetLiabilityDetail.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/FamilyAssetLiabilitySection.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/RiskModelSection.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/RiskPeopleSection.vue`
以下内容不建议纳入提交:
- `output/` 下的浏览器截图和验收临时产物。
- `docs/prototypes/` 下的视觉探索图片,除非本次明确要提交设计参考图。
- `ruoyi-admin/src/main/resources/!cLEZGP.docx`
- `.DS_Store`
## 2. 功能清单
### 2.1 资金流图谱
- 主体搜索:按身份证号、姓名或 `object_key` 定位资金流主体。
- 一跳图谱:以当前主体为中心查询一层资金往来。
- 实时聚合:基于 `lx_fund_flow_detail_edge` 按当前筛选条件聚合金额、笔数、首末交易时间。
- 日期筛选:按 `trx_date` 做交易日期范围过滤。
- 金额筛选:支持最小汇总金额和金额范围过滤。
- 方向筛选:支持支出 `1`、收入 `2`
- 家庭关系标签:资金边可展示已写入 `lx_fund_flow_detail_edge.family_relation_type` 的配偶、父母、子女等标签;后端不实时按家庭表匹配。
- 边明细下钻:点击真实资金边分页查看逐笔流水。
- 节点详情:点击节点查看主体字段、证件号、账户数、累计金额和笔数。
- 节点穿透:可穿透节点支持“设为中心查询”和“一层展开”。
- 手工资金流向:支持人工录入主体级资金流向边。
- 手工边展示:手工边参与图谱展示和统一排序,但不提供逐笔流水下钻。
- 排序与上限:真实边和手工边合并后统一按金额、笔数、最近交易时间排序并按 `limit` 截断。
- 缺参提示:手工新增缺少起点或终点时返回明确业务提示。
### 2.2 关系图谱
- 主体搜索:按身份证号、姓名、统一社会信用代码或 `object_key` 查主体。
- 一跳关系图谱:以主体为中心展示家庭、股东、法人关系。
- 家庭关系边:展示员工与家庭成员关系。
- 股东持股边:展示自然人股东、企业股东与企业之间的持股关系。
- 法定代表人边:展示法人和企业之间的代表关系。
- 节点详情:展示主体名称、证件号或统一社会信用代码、主体类型、来源类型。
- 边详情:按关系来源展示关系类型、企业名称、持股比例、出资额、家庭关系字段等。
- 疑似同名企业:按人员姓名召回工商法人和自然人股东候选。
- 同名过多阻断:同名候选过多时提示缩小线索范围。
- 年龄过滤:能解析出生日期时过滤企业成立时未满 18 岁的候选。
### 2.3 页面集成
- 专项排查页:原图谱占位卡替换为真实图谱工作台。
- 专项排查资金图谱:展示搜索区、图谱画布、右侧节点/边详情、边明细分页。
- 专项排查关系图谱:展示关系搜索、图谱画布、右侧节点/边详情、疑似企业面板。
- 项目分析弹窗资金流向:展示简版资金图谱,不展示逐笔流水表。
- 项目分析弹窗关系图谱:展示简版关系图谱,切换页签时触发图谱 resize。
- 图谱画布:使用 ECharts 渲染节点、边、方向、标签和关系区分样式。
### 2.4 数据库与部署
- 资金流图谱新环境表结构脚本。
- 资金流图谱测试数据脚本。
- 资金流图谱已建表补充脚本。
- 关系图谱新环境表结构脚本。
- 关系图谱构建脚本。
- 关系图谱测试数据脚本。
- 统一 `utf8mb4``utf8mb4_general_ci` 口径。
- 图谱 DDL 不自动随应用发布执行。
## 3. 最新内容检查
截至 2026-05-29本预备提交清单已按当前代码和验收结果更新
- 当前范围是“资金流图谱 + 关系图谱”。
- 当前资金流图谱验收样例为 `617673198109148314`
- 当前关系图谱验收样例为 `330101198001010011`
- `docs/tests/` 下本轮图谱验收清单和记录已纳入本次提交清单。
- `output/` 仍保持忽略,浏览器截图不纳入提交。