# 图谱生产数据库手工变更清单 本清单只记录资金流图谱涉及的生产数据库表结构和数据准备事项。该部分由人工在生产库手动执行,不随应用发布自动执行,也不要求测试环境自动更新。 ## 1. DDL 脚本 生产建表脚本: ```text sql/ccdi/graph/01_lx_fund_graph_mysql_ddl.sql ``` 当前减法版创建五张资金流图谱必要表: - `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_fund_flow_sum_edge`。资金图谱页面由后端基于 `lx_fund_flow_detail_edge.trx_date` 按当前查询条件实时聚合真实资金边,手工资金流向汇总边单独存入 `lx_fund_flow_manual_edge`。 ## 2. 生产执行边界 - 生产库 DDL 由人工手动执行。 - 应用发布包不自动执行 DDL。 - 测试环境不会自动同步这些变更。 - 代码库保留 SQL 文件,只作为生产执行、评审和本地验证依据。 - 后端开发默认目标库中上述 `lx_*` 表已存在。 ## 3. ODPS 基座同步 生产建表后,先从 ODPS 同步已验证的资金流图谱基座到 MySQL。 同步来源: - ODPS 中原图谱 SQL 产出的 `lx_fund_flow_subject_node` - ODPS 中原图谱 SQL 产出的 `lx_fund_flow_account_node` - ODPS 中原图谱 SQL 产出的 `lx_fund_flow_own_account_edge` - ODPS 中原图谱 SQL 产出的 `lx_fund_flow_detail_edge` 同步原则: - ODPS 基座是已验证数据,作为 MySQL 图谱基座保留。 - 同步时建议使用显式字段列表,不依赖 `select *`。 - MySQL 侧新增字段允许为空。 - `lx_fund_flow_sum_edge` 不作为纪检资金图谱页面必要表,可不从 ODPS 同步。 - `lx_fund_flow_manual_edge` 不从 ODPS 同步,生产建表后初始为空,由纪检平台手工分析功能写入。 ## 4. 后续增量 ODPS 基座同步后,后续新增流水在纪检 MySQL 内处理。 增量来源: - `ccdi_bank_statement` 增量原则: - 先标准化候选流水。 - 再和既有 `lx_fund_flow_detail_edge` 做一致性判重。 - 已存在一致流水,不同步进图谱。 - 不存在一致流水,才增量插入主体点、账户点、持有边、明细边。 - 不维护汇总表;页面查询时实时聚合。 ## 5. 调度建议 一期建议采用每日定时任务,不建议一开始做实时。 推荐方式: - RuoYi/Quartz 定时任务。 - 每日低峰期执行。 - 保留手动触发能力,用于补跑、排查和修复。 ## 6. 前后端依赖 前后端开发依赖上述 MySQL 图谱表的查询结果。 - 前端不直接访问数据库。 - 后端接口读取 `lx_*` 表。 - 页面入口放在项目详情的“专项排查”页签。 - 资金流图谱中真实资金边基于 `lx_fund_flow_detail_edge` 实时聚合。 - 手工资金边来自 `lx_fund_flow_manual_edge`,属于主体级汇总边,只存 `from_object_key`、`to_object_key`,不存冗余 `from_key`、`to_key`;图谱展示时由后端临时拼出 `idno_node/{object_key}`,不提供逐笔流水下钻。 - 查询按全局 `cret_no`、姓名或节点 `object_key`,不按 `project_id` 过滤。 ## 7. 性能和索引口径 一期资金图谱默认只查一个中心主体的一层资金边,并设置 `minTotalAmount = 1000`、`limit = 20`,不会默认拉全量毛刺边。 生产索引重点: - `lx_fund_flow_subject_node`:`PRIMARY KEY(object_key)`、`idx_lx_fund_flow_subject_idnocfno(idnocfno)`、`idx_lx_fund_flow_subject_name(name)`。 - `lx_fund_flow_own_account_edge`:`idx_lx_fund_flow_own_from_key(from_key)`、`idx_lx_fund_flow_own_to_key(to_key)`。 - `lx_fund_flow_detail_edge`:`idx_lx_fund_flow_detail_from_date(from_key, trx_date)`、`idx_lx_fund_flow_detail_to_date(to_key, trx_date)`、`idx_lx_fund_flow_detail_from_to(from_key, to_key)`。 - `lx_fund_flow_manual_edge`:`idx_lx_fund_flow_manual_from(from_object_key)`、`idx_lx_fund_flow_manual_to(to_object_key)`、`idx_lx_fund_flow_manual_pair_direction(from_object_key, to_object_key, direction)`。 如果后续单个主体关联流水达到几十万级,再考虑增加主体级冗余字段或月度汇总表;一期不建 `sum_edge`。