Files
Neo-ZQYY/docs/audit/changes/2026-03-20__h2-fdw-to-direct-etl-unification.md
Neo 14a12342b5 chore(audit): 补追 96 份未入仓审计孤本 — 覆盖 2026-02-26 ~ 2026-04-08
这些审计记录原本堆积在 docs/audit/changes/changes/ 嵌套误产物目录下(由开发机迁移
79d3c2e 前后的不明批量操作产生)。由于同期 .gitignore 屏蔽了 docs/audit/ 全目录,
它们从未入过 git 任何分支 history。删除即永久丢失。

按 docs/specs/audit-gap-recovery/tasks.md 阶段 1 执行,将全部 96 份 D 类孤本
(主目录无同名、git history 亦无记录)复制到 docs/audit/changes/ 主目录入仓。

涵盖主题: P1-P18 全栈集成 / 多模块累积变更 / ETL bug 修复 / 业务日切 /
   召回与任务引擎改造 / 租户管理与审批 / 董事会财务 / 客户与助教详情 /
   DDL 基线合并 / Kiro 到 Claude Code 迁移

阶段 2(B 类内容漂移 1 份)和阶段 4(嵌套目录删除)独立推进。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:35:42 +08:00

2.4 KiB
Raw Blame History

H2 修复FDW → 直连 ETL 架构统一

维度 内容
日期 2026-03-20
关联问题 RNS1 审计报告 H2AI 自主决策架构级修改)
决策方式 用户确认方案 A全部统一直连 ETL后执行

背景

RNS1.1 期间AI 自行将 fdw_queries.py47 个函数)从 FDW 外部表改为直连 ETL 库, 但其他 4 个文件仍使用旧 FDW 模式(fdw_etl.*),造成架构不一致。

核心技术问题:postgres_fdw 不传递自定义 GUC 参数(app.current_site_id 旧 FDW 模式下 RLS 视图的门店隔离实际失效。

改造范围

文件 改造点 风险等级
matching.py fdw_etl.v_dim_assistant/v_dim_staff/v_dim_staff_exapp.v_*scd2_is_current = TRUE= 1;连接改为 _fdw_context(None, site_id)
task_generator.py 3 处 fdw_etl.v_dws_member_winback/newconv/relation_indexapp.v_*WBI/NCI 全表扫描RLS 是唯一门店过滤
recall_detector.py fdw_etl.v_dwd_assistant_service_logapp.v_*;列名映射:assistant_id→site_assistant_idmember_id→tenant_member_idservice_time→create_time
task_manager.py 4 处:v_dim_membermember_name→nicknamemember_phone→mobile+ 3 处 RS 指数

列名映射速查

FDW 外部表列名 RLS 视图实际列名 涉及视图
assistant_id site_assistant_id v_dwd_assistant_service_log
member_id tenant_member_id v_dwd_assistant_service_log
service_time create_time v_dwd_assistant_service_log
member_name nickname v_dim_member
member_phone mobile v_dim_member
scd2_is_current = TRUE scd2_is_current = 1 v_dim_assistantv_dim_staffv_dim_staff_ex

验证结果

  • MCP 验证 7 个改造后的 SQL 查询在 test_etl_feiqiu 上执行成功
  • 语法检查 4 个文件零 diagnostics
  • E2E 测试 test_e2e_board.py 25 passed in 121.26s
  • performance_service.py 确认无需改造(已使用 _fdw_context

未变更项

  • FDW 外部表 DDL 暂不清理(用户确认保留)
  • fdw_queries.py 无需改动(已在 RNS1.1 中完成改造)

回滚方案

将 4 个文件中的 _fdw_context 调用改回 get_connection() + fdw_etl.* 查询, 恢复 FDW 外部表列名。注意:回滚后 RLS 门店隔离将再次失效。