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

157 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 变更审计记录全栈累积变更营业日配置、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. **ETLfeiqiu**config 模块新增 BUSINESS_DAY_START_HOUR 支持consistency_checker 大幅重构flow_runner 调整
4. **共享包shared**:新增 `datetime_utils` 模块(营业日计算工具)
5. **数据库db**FDW 反向映射更新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 连接管理(`historyWsRef`running 任务点击时建立 `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`,含 `startHour``loaded``init()` 三个成员
### `apps/backend/app/config.py`
- 变更类型:修改
- 原始原因多个硬编码配置需要环境变量化ETL Python 路径、运维面板根目录、微信凭证、营业日分割点)
- 思路分析:统一使用 `os.environ.get()` 读取,提供合理默认值。`WX_DEV_MODE` 支持 true/1/yes 三种写法。`BUSINESS_DAY_START_HOUR` 转 int
- 修改结果:新增 `ETL_PYTHON_EXECUTABLE``OPS_SERVER_BASE``WX_APPID``WX_SECRET``WX_DEV_MODE``BUSINESS_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/*.md`ETL 任务文档更新
- `docs/database/ddl/*.sql`DDL 基线同步
- `docs/contracts/openapi/backend-api.json`OpenAPI spec 更新(+5096 行)
- `docs/DOCUMENTATION-MAP.md`:文档地图更新
- 大量 `tmp/api_samples/``field_mappings_new/` 文件删除:仓库清理
## 合规检查
| 检查项 | 状态 | 说明 |
|--------|------|------|
| 文档同步 | ✅ 已同步 | `code_without_docs` 为空,各模块 README 已更新 |
| 新增迁移 SQL | ⚪ 不涉及 | `new_migration_sql` 为空 |
| DDL 基线 | ⚠️ 待确认 | `has_ddl_baseline: false`DDL 基线文件已有变更但标记未更新 |
| OpenAPI Spec | ✅ 已同步 | `api_changed: false``openapi_spec_stale: false` |
| BD 手册 | ⚠️ 待补充 | `has_bd_manual: false`reasons 含 `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
- 仓库清理:已删除文件为历史样本数据和废弃脚本,无需回滚