Files
Neo-ZQYY/docs/audit/changes/2026-03-04__fullstack-accumulated-changes.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

9.3 KiB
Raw Blame History

变更审计记录全栈累积变更营业日配置、WebSocket 日志、微信认证、仓库清理)

字段
日期 2026-03-05 00:04:01
Prompt-ID P20260304-232912
Session-ID 0b65aa43
Session 路径 docs/audit/session_logs/2026-03/04/52_0b65aa43_232320
风险标签 root-file dir:admin-web dir:backend dir:etl dir:miniprogram dir:db db-schema-change dir:shared
变更规模 273 文件,+10,505 / -219,431 行

操作摘要

本次审计覆盖多轮对话的累积变更,核心工作包括:

  1. 管理后台admin-web新增营业日配置全局状态Zustand store + API + BusinessDayHint 提示组件TaskManager 历史标签页增加 WebSocket 实时日志推送和任务终止按钮
  2. 后端backend:配置化 ETL Python 路径、运维面板根目录、微信小程序凭证、营业日分割点;新增/重构 xcx_auth 认证路由和 schemas
  3. ETLfeiqiuconfig 模块新增 BUSINESS_DAY_START_HOUR 支持consistency_checker 大幅重构flow_runner 调整
  4. 共享包shared:新增 datetime_utils 模块(营业日计算工具)
  5. 数据库dbFDW 反向映射更新DDL 基线同步更新dwd/dws/ods/auth/public 多 schema
  6. 仓库清理:删除 tmp/api_samples/~200K 行)、废弃 field_mappings_new/、旧运维脚本、旧 .kiro/ hooks 和 specs

本次对话文件变更

新增文件

  • docs/audit/prompt_logs/prompt_log_20260304_232912.md — Prompt 审计日志
  • docs/audit/session_logs/2026-03/04/52_0b65aa43_232320/main_01_389bf343.md — Session 日志(主)
  • docs/audit/session_logs/2026-03/04/52_0b65aa43_232320/sub_01_389bf343.md — Session 日志(子代理)
  • docs/audit/session_logs/2026-03/04/53_34248647_232911/main_01_a6834276.md — Session 日志

修改文件

  • docs/DOCUMENTATION-MAP.md — 文档地图更新
  • docs/audit/README.md — 审计说明更新
  • docs/audit/SESSION-LOG-GUIDE.md — Session 日志指南更新
  • docs/audit/session_logs/_session_index.json — 会话索引更新
  • 多个 _day_index.json / _day_index_full.json — 日索引批量更新

改动注解

apps/admin-web/src/App.tsx

  • 变更类型:修改
  • 原始原因:管理后台启动时需加载营业日配置,供全局日期组件使用
  • 思路分析:在 App 组件 useEffect 中调用 useBusinessDayStore.init(),与 hydrate 同步执行。降级策略封装在 store 内部App 层无需处理异常
  • 修改结果:应用启动时自动请求 /api/config/business-day,失败时降级为默认值 8

apps/admin-web/src/api/businessDay.ts

  • 变更类型:新增
  • 原始原因:前端需要从后端获取营业日分割点配置
  • 思路分析:封装单一 GET 请求,返回 BusinessDayConfig 接口(含 business_day_start_hour 字段),复用 apiClient 实例
  • 修改结果:提供 fetchBusinessDayConfig() API 函数

apps/admin-web/src/components/BusinessDayHint.tsx

  • 变更类型:新增
  • 原始原因:用户在日期选择器旁需要了解当前营业日口径(分割点时间)
  • 思路分析:使用 Tooltip + Typography.Text 组合,从 businessDayStore 读取 startHour格式化为 HH:00 显示
  • 修改结果:在 TaskConfig 日期选择区域下方显示「营业日08:00 起」提示

apps/admin-web/src/pages/TaskConfig.tsx

  • 变更类型:修改
  • 原始原因:日期范围选择区域需要展示营业日口径提示
  • 思路分析:在日期选择 Row 下方插入 BusinessDayHint 组件,用 Fragment 包裹避免多余 DOM 节点
  • 修改结果:日期选择器下方显示营业日分割点提示

apps/admin-web/src/pages/TaskManager.tsx

  • 变更类型:修改
  • 原始原因历史任务查看需要实时日志推送running 状态)和任务终止能力
  • 思路分析:为 HistoryTab 新增 WebSocket 连接管理(historyWsRefrunning 任务点击时建立 ws://host/ws/logs/{id} 连接实时推送日志,已完成任务仍走 REST API。新增终止按钮Popconfirm 确认)调用 cancelExecution。Drawer 标题显示连接状态标签。WebSocket 失败时自动回退到 REST API
  • 修改结果HistoryTab 支持实时日志流、连接状态指示、任务终止操作

apps/admin-web/src/store/businessDayStore.ts

  • 变更类型:新增
  • 原始原因:营业日分割点配置需要全局共享,多个页面组件依赖
  • 思路分析Zustand store启动时请求一次后端配置API 不可用时降级为默认值 8 并 console.warn。loaded 标志防止重复请求
  • 修改结果:提供 useBusinessDayStore,含 startHourloadedinit() 三个成员

apps/backend/app/config.py

  • 变更类型:修改
  • 原始原因多个硬编码配置需要环境变量化ETL Python 路径、运维面板根目录、微信凭证、营业日分割点)
  • 思路分析:统一使用 os.environ.get() 读取,提供合理默认值。WX_DEV_MODE 支持 true/1/yes 三种写法。BUSINESS_DAY_START_HOUR 转 int
  • 修改结果:新增 ETL_PYTHON_EXECUTABLEOPS_SERVER_BASEWX_APPIDWX_SECRETWX_DEV_MODEBUSINESS_DAY_START_HOUR 六个配置项

apps/backend/app/main.py

  • 变更类型:修改
  • 原始原因:新增路由模块需要注册到 FastAPI 应用
  • 思路分析:按模块分组 import 并 include_router保持路由注册的清晰分层
  • 修改结果:注册 business_day、xcx_auth 等新路由

apps/backend/app/routers/xcx_auth.py

  • 变更类型:修改(大幅重构,+352/-352
  • 原始原因:微信小程序认证流程需要完善,支持 code2Session、token 签发、用户注册等完整链路
  • 思路分析:重构为完整的微信认证路由,包含 login、register、refresh 等端点
  • 修改结果:完整的微信小程序认证 API

apps/backend/app/schemas/xcx_auth.py

  • 变更类型:新增
  • 原始原因xcx_auth 路由需要请求/响应 Schema 定义
  • 思路分析Pydantic v2 模型,定义 login request/response、register request、token refresh 等数据结构
  • 修改结果:提供微信认证相关的全部 Schema

apps/etl/connectors/feiqiu/config/settings.py

  • 变更类型:修改
  • 原始原因ETL 配置需要支持营业日分割点参数
  • 思路分析:在 AppConfig 中新增 BUSINESS_DAY_START_HOUR 字段,从环境变量读取
  • 修改结果ETL 配置类支持营业日分割点

apps/etl/connectors/feiqiu/orchestration/flow_runner.py

  • 变更类型:修改
  • 原始原因:流程编排器需要适配新的配置和执行逻辑
  • 思路分析:调整 flow_runner 的参数传递和执行流程
  • 修改结果flow_runner 适配新配置

apps/etl/connectors/feiqiu/quality/consistency_checker.py

  • 变更类型:修改(+136/-136大幅重构
  • 原始原因:一致性检查器需要更精确的比对逻辑和更清晰的报告输出
  • 思路分析:重构检查逻辑,改进 API↔ODS、ODS↔DWD 的字段比对算法
  • 修改结果:一致性检查器输出更准确、报告更结构化

packages/shared/src/neozqyy_shared/datetime_utils.py

  • 变更类型:新增
  • 原始原因营业日计算逻辑需要跨模块共享ETL 和后端都需要)
  • 思路分析:放入 shared 包,提供营业日边界计算、日期转换等工具函数
  • 修改结果:新增 92 行的 datetime_utils 模块,供 ETL 和后端共同使用

db/fdw/setup_fdw_reverse.sql / db/fdw/setup_fdw_reverse_test.sql

  • 变更类型:修改
  • 原始原因FDW 反向映射需要同步最新的表结构变更
  • 思路分析:更新 IMPORT FOREIGN SCHEMA 和 CREATE FOREIGN TABLE 语句
  • 修改结果FDW 映射与当前数据库结构一致

非高风险文件简要注解

  • .env / .env.template / .gitignore新增微信凭证、营业日配置、ETL Python 路径等环境变量
  • apps/admin-web/README.md / apps/backend/README.md / apps/miniprogram/README.md / packages/shared/README.md:文档同步更新
  • apps/backend/docs/API-REFERENCE.md:接口文档更新
  • apps/etl/connectors/feiqiu/docs/etl_tasks/*.mdETL 任务文档更新
  • docs/database/ddl/*.sqlDDL 基线同步
  • docs/contracts/openapi/backend-api.jsonOpenAPI spec 更新(+5096 行)
  • docs/DOCUMENTATION-MAP.md:文档地图更新
  • 大量 tmp/api_samples/field_mappings_new/ 文件删除:仓库清理

合规检查

检查项 状态 说明
文档同步 已同步 code_without_docs 为空,各模块 README 已更新
新增迁移 SQL 不涉及 new_migration_sql 为空
DDL 基线 ⚠️ 待确认 has_ddl_baseline: falseDDL 基线文件已有变更但标记未更新
OpenAPI Spec 已同步 api_changed: falseopenapi_spec_stale: false
BD 手册 ⚠️ 待补充 has_bd_manual: falsereasons 含 db-schema-change 但 BD 手册未同步

回滚方案

  • 营业日功能:删除 businessDayStore、BusinessDayHint、businessDay API移除 config.py 中 BUSINESS_DAY_START_HOUR移除 shared/datetime_utils.py
  • WebSocket 日志:回退 TaskManager.tsx 到 REST-only 版本
  • 微信认证:回退 xcx_auth.py 和对应 schemas
  • 仓库清理:已删除文件为历史样本数据和废弃脚本,无需回滚