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>
This commit is contained in:
Neo
2026-04-20 06:35:42 +08:00
parent 80bda9b991
commit 14a12342b5
96 changed files with 9521 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
# H2 修复FDW → 直连 ETL 架构统一
| 维度 | 内容 |
|------|------|
| 日期 | 2026-03-20 |
| 关联问题 | RNS1 审计报告 H2AI 自主决策架构级修改) |
| 决策方式 | 用户确认方案 A全部统一直连 ETL后执行 |
## 背景
RNS1.1 期间AI 自行将 `fdw_queries.py`47 个函数)从 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_ex``app.v_*``scd2_is_current = TRUE``= 1`;连接改为 `_fdw_context(None, site_id)` | 低 |
| `task_generator.py` | 3 处 `fdw_etl.v_dws_member_winback/newconv/relation_index``app.v_*`WBI/NCI 全表扫描RLS 是唯一门店过滤 | 高 |
| `recall_detector.py` | `fdw_etl.v_dwd_assistant_service_log``app.v_*`;列名映射:`assistant_id→site_assistant_id``member_id→tenant_member_id``service_time→create_time` | 低 |
| `task_manager.py` | 4 处:`v_dim_member``member_name→nickname``member_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_assistant``v_dim_staff``v_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 门店隔离将再次失效。