Files
Neo-ZQYY/docs/audit/changes/2026-02-26__etl-bugfix-dim-staff-rankname-assistant-daily-table-area.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

7.0 KiB
Raw Blame History

审计记录ETL Bug 修复 — dim_staff_ex 列映射 + assistant_daily table_area_name

  • 日期2026-02-26 20:44:35
  • Prompt-IDP20260226-191453
  • 风险标签:root-file, dir:admin-web, dir:backend, dir:etl, dir:db, db-schema-change
  • 变更统计152 files changed, 6895 insertions(+), 216697 deletions(-)
  • 审计范围:本次审计聚焦于两个 ETL bug 修复及配套 BD Manual 文档

变更概述

本次变更修复两个 ETL 运行时 bug均导致 FLOW_API_FULL 执行失败:

  1. dim_staff_ex 列映射错误dwd_load_task.pyFACT_MAPPINGS["dwd.dim_staff_ex"] 的 ODS 源列名 "rankname" 应为 "rank_name",导致 PostgreSQL 报 UndefinedColumn 错误dim_staff_ex SCD2 合并每个窗口段均失败
  2. assistant_daily table_area_name 不存在assistant_daily_task.py_extract_service_records() SQL 引用 asl.table_area_name,但 dwd.dwd_assistant_service_log 表无此列,导致 DWS_ASSISTANT_DAILY 失败并级联 13 个后续 DWS/INDEX 任务全部 InFailedSqlTransaction

影响范围

子系统 影响
ETL DWD 层 dim_staff_ex 恢复正常加载rank_name 字段正确映射
ETL DWS 层 dws_assistant_daily 恢复正常table_area_name 改从 dim_table 维度表获取;级联失败消除
后端 API 无影响
DDL 无变更

本次对话文件变更session_diff

新增文件

  • NeoZQYY.z01
  • NeoZQYY.z02
  • NeoZQYY.z03
  • NeoZQYY.z04
  • docs/audit/prompt_logs/prompt_log_20260226_191453.md
  • docs/audit/session_logs/session_20260226_201650.md

修改文件

  • NeoZQYY.zip
  • apps/backend/app/config.py
  • apps/backend/app/routers/xcx_auth.py
  • apps/backend/app/schemas/xcx_auth.py
  • apps/backend/app/services/wechat.py
  • tests/test_auth_system_properties.py

DDL / 迁移检查

  • compliance.new_migration_sql:空(无新增迁移)
  • ⚠️ DDL 基线待合并(has_ddl_baseline: false
  • BD Manual 已创建:
    • docs/database/BD_Manual_fix_dim_staff_ex_rankname.md
    • docs/database/BD_Manual_fix_dws_assistant_daily_table_area.md
    • docs/database/BD_Manual_assistant_service_records.md(更新映射修正记录表)

OpenAPI Spec 同步检查

  • ⚠️ 接口代码已变更但 OpenAPI spec 可能未同步(api_changed: true, openapi_spec_stale: true
  • 注:本次审计聚焦 ETL bug 修复,接口变更属于前序 session 的维客线索重构 + 小程序鉴权,已在 2026-02-26__retention-clue-refactor.md2026-02-26__p1-p2-p3-fullstack-integration.md 中审计
  • 待手动操作:运行 python scripts/ops/_export_openapi.py 重新导出 spec导出成功后重连 OpenAPI Power MCP server

文档同步检查compliance.code_without_docs

代码文件 缺失文档 状态
apps/backend/app/routers/xcx_auth.py apps/backend/docs/API-REFERENCE.md, docs/contracts/openapi/backend-api.json ⚠️ 待同步(属前序小程序鉴权变更)
apps/backend/app/schemas/xcx_auth.py docs/contracts/openapi/backend-api.json ⚠️ 待同步(同上)
apps/backend/app/services/wechat.py apps/backend/docs/API-REFERENCE.md, apps/backend/README.md ⚠️ 待同步(同上)

注:上述文档缺失均为前序 session 的小程序鉴权变更引入,非本次 ETL bug 修复范围。建议在下次接口相关审计时统一补齐。

改动注解

apps/etl/connectors/feiqiu/tasks/dwd/dwd_load_task.py

  • 变更类型:修改
  • 原始原因:FLOW_API_FULL 执行时 DWD_LOAD_FROM_ODS 阶段 dim_staff_ex 加载失败PostgreSQL 报 UndefinedColumn: 字段 "rankname" 不存在
  • 思路分析:FACT_MAPPINGS["dwd.dim_staff_ex"] 中映射元组 (dwd_列名, ods_源列名, 类型转换) 的第二个元素应与 ODS 表 ods.staff_info_master 的实际列名一致。ODS 表列名为 rank_name(带下划线),而非 rankname(驼峰转蛇形时遗漏下划线)
  • 修改结果:("rank_name", "rankname", None)("rank_name", "rank_name", None)dim_staff_ex SCD2 合并恢复正常

apps/etl/connectors/feiqiu/tasks/dws/assistant_daily_task.py

  • 变更类型:修改
  • 原始原因:_extract_service_records() SQL 引用 asl.table_area_name,但 dwd.dwd_assistant_service_log 表无此列DDL 可确认),导致 DWS_ASSISTANT_DAILY 失败并级联 13 个后续任务
  • 思路分析:台区名称应从维度表 dwd.dim_tablesite_table_area_name 字段获取,通过 asl.site_table_id = dt.table_id AND dt.scd2_is_current = 1 关联。使用 COALESCE(..., '') 处理无匹配情况,避免 NULL 传播
  • 修改结果:新增 LEFT JOIN dwd.dim_table dtasl.table_area_name 替换为 COALESCE(dt.site_table_area_name, '') AS table_area_nameDWS 阶段全部任务恢复正常执行

docs/database/BD_Manual_fix_dim_staff_ex_rankname.md

  • 变更类型:新增
  • 原始原因:为 dim_staff_ex 列映射修复创建 BD Manual 变更记录,确保可追溯
  • 思路分析:记录错误原因、修复方式、兼容性影响、回滚策略和验证 SQL
  • 修改结果:完整的变更文档,含 4 条验证 SQL 可直接在测试库执行

docs/database/BD_Manual_fix_dws_assistant_daily_table_area.md

  • 变更类型:新增
  • 原始原因:为 assistant_daily table_area_name 修复创建 BD Manual 变更记录
  • 思路分析记录级联失败机制、JOIN 条件设计、回滚策略和验证 SQL
  • 修改结果:完整的变更文档,含级联失败的 13 个任务清单和 4 条验证 SQL

docs/database/BD_Manual_assistant_service_records.md

  • 变更类型:修改
  • 原始原因:在映射修正记录表中补充 2026-02-26 的下游 table_area_name 修正条目
  • 思路分析:该文档是 assistant_service_records 的主映射文档,下游 DWS 任务对该表字段的引用修正应在此记录
  • 修改结果:映射修正记录表新增一行,交叉引用 BD_Manual_fix_dws_assistant_daily_table_area.md

apps/backend/app/config.py

  • 变更类型修改session_diff.modified
  • 简要注解:新增 WX_APPIDWX_SECRETWX_DEV_MODE 配置项,属前序小程序鉴权变更

apps/backend/app/routers/xcx_auth.py

  • 变更类型修改session_diff.modified
  • 简要注解:新增 POST /api/xcx/dev-login 开发模式 mock 登录端点,属前序小程序鉴权变更

apps/backend/app/schemas/xcx_auth.py

  • 变更类型修改session_diff.modified
  • 简要注解:新增 DevLoginRequest Pydantic 模型,属前序小程序鉴权变更

apps/backend/app/services/wechat.py

  • 变更类型修改session_diff.modified
  • 简要注解:code2session() 改为从模块级常量读取 WX_APPID/WX_SECRET,属前序小程序鉴权变更

tests/test_auth_system_properties.py

  • 变更类型修改session_diff.modified
  • 简要注解:鉴权系统属性测试更新,属前序小程序鉴权变更

Prompt 溯源

- [P20260226-191453] 2026-02-26 19:14:53 +0800
  - summary: 续推进技术设计文档