Files
Neo-ZQYY/docs/specs/audit-gap-recovery/tasks.md
Neo 80bda9b991 chore(audit): 2026-04-20 历史批次预审 + 文档同步 + .gitignore 修正
- 新增 docs/audit/changes/2026-04-20__historical-batch-pre-audit.md
  157 文件分批盘点审计(7 条主线 + 10 项高/中风险 + 2 份迁移 SQL DDL 清单)
- 补追 docs/audit/changes/2026-04-15__meituan-settle-core-sync.md
  原审计产物因 .gitignore 屏蔽长期未入仓,本次一并追回
- 刷新 docs/audit/audit_dashboard.md(33 条审计记录)
- .gitignore 白名单放行 docs/audit/changes/*.md 与 audit_dashboard.md
  同时屏蔽 changes/changes/ 嵌套误产物目录
- 新增 docs/specs/audit-gap-recovery/tasks.md
  扫描嵌套目录发现 96 份 D 类孤本(从未入过 git history),
  生成独立 PRD 供单开任务清理与补追
- 文档同步(高风险项):
  - apps/backend/docs/API-REFERENCE.md (+69)
  - apps/miniprogram/README.md (+50)
  - apps/etl/connectors/feiqiu/docs/architecture/data_flow.md (+52/-2)
  - apps/etl/connectors/feiqiu/docs/architecture/system_overview.md (+5/-3)

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

227 lines
12 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.
# 审计记录补追与嵌套目录清理
**发现日期**2026-04-20
**发现上下文**2026-04-20 历史批次预审过程中,放宽 `.gitignore` 白名单后暴露出 `docs/audit/changes/changes/` 嵌套目录
## 背景
开发机迁移79d3c2e 提交)前后,`docs/audit/changes/` 下意外出现了一个同名嵌套子目录 `docs/audit/changes/changes/`,其中堆积了 127 份审计记录 md 文件。推测原因是迁移脚本或某次批量拷贝时,误把 `docs/audit/changes/` 整个目录作为源,再次写入到了它自身下面,形成了 `changes/changes/` 的路径嵌套。
同时期 `.gitignore``docs/audit/` 整目录屏蔽(仅白名单少量文件),导致此后新增的审计记录长期无法入仓。主目录 `docs/audit/changes/` 当前仅有 33 份入仓 md而嵌套目录累积了 127 份。
用户最初的设想是直接 `rm -rf docs/audit/changes/changes/` 了事。但实地核查发现:嵌套目录里相当一部分文件从未进入过 git 任何分支的 history即未 commit 的孤本),一旦删除就永久丢失。因此需要先对 127 份做全量分类,再按类别分阶段处理,不能一删了之。
本 PRD 即用于指导后续清理动作,独立可执行。
## 扫描结果统计
| 分类 | 数量 | 含义 | 处理方式 |
|------|------|------|---------|
| A 纯副本 | 30 | 主目录同名同内容diff 无输出) | 可直接删除嵌套版本 |
| B 内容漂移 | 1 | 主目录同名但内容不同 | 人工比对选最新 |
| C 已 commit 的孤本 | 0 | 主目录无git history 有 | 无此类 |
| D 未 commit 的孤本 | 96 | 主目录无git history 也无 | **最高优先级补追**,删除即永久丢失 |
| **合计** | 127 | | |
扫描方法:对 `docs/audit/changes/changes/*.md` 每个文件,先查 `docs/audit/changes/<同名>.md` 是否存在,存在则用 `diff -q` 比对内容;不存在则用 `git log --all --oneline -- docs/audit/changes/<文件名>` 查历史。扫描时主目录文件数 33嵌套目录文件数 127。
## 类别 D未 commit 的孤本清单(最高风险,共 96 份)
以下 96 份文件仅存在于 `docs/audit/changes/changes/`,且 git 所有分支 history 中均无记录。删除即永久丢失。
```
2026-02-26__etl-bugfix-dim-staff-rankname-assistant-daily-table-area.md
2026-02-26__p1-p2-p3-fullstack-integration.md
2026-02-26__retention-clue-refactor.md
2026-02-26__root-file-gitignore-h5ui-cleanup.md
2026-02-27__biz-day-cutoff-prd-sync-check.md
2026-02-27__p4-core-business-routes-triggers.md
2026-02-28__multi-module-accumulated-changes.md
2026-03-01__dwd-cleanup-ods-fix-dim-staff-repair.md
2026-03-01__dws-numeric-precision-ods-siteid-fix.md
2026-03-02__etl-unified-analysis-hook-merge.md
2026-03-02__spi-calibration-nonzero-median.md
2026-03-03__miniprogram-dev-debug-panel.md
2026-03-04__fullstack-accumulated-changes.md
2026-03-06__fix-api-client-post-method.md
2026-03-06__fix-db-operations-dsn-proxy.md
2026-03-07__task3-project-tag-docs-sync.md
2026-03-08__p5-ai-spec-review-category-enum-align.md
2026-03-10__multi-module-ai-apps-task-defense-miniprogram.md
2026-03-12__board-finance-overview-wxss-calibration.md
2026-03-12__miniprogram-dev-docs-finalize.md
2026-03-12__multi-module-ai-taskdefense-miniprogram-etl.md
2026-03-12__pixel-audit-structured-methodology.md
2026-03-13__board-finance-line-height-audit.md
2026-03-13__board-finance-rpx-formula-correction.md
2026-03-13__task-list-h5-rewrite.md
2026-03-15__ddl-baseline-consolidation-bd-manual-reorg.md
2026-03-18__rns1-e2e-fdw-direct-connect-bugfix.md
2026-03-19__card-type-id-doc-sync.md
2026-03-19__coach-tier-hardcode-fix.md
2026-03-19__level-map-hardcode-fix.md
2026-03-19__rns12-db-audit.md
2026-03-20__ai-prompt-refinement-board-coach-mock.md
2026-03-20__h2-fdw-to-direct-etl-unification.md
2026-03-20__miniprogram-docs-sync.md
2026-03-20__r3-skill-type-filter-rebuild.md
2026-03-20__rns1-ai-autonomous-decision-risk-audit.md
2026-03-20__rns13-board-apis-e2e-fix.md
2026-03-20__rns14-chat-fdw-filter-audit.md
2026-03-20__rns14-chat-module-r3-filter-rebuild.md
2026-03-22__db-field-walkthrough-batch-fix.md
2026-03-22__ddl-db-structure-diff-bd-manual-audit.md
2026-03-22__ddl_bd_manual_consistency_fix.md
2026-03-22__dev-trace-log-fullstack-feature.md
2026-03-22__ns4-ddl-merge-deleted-at.md
2026-03-22__p14-task15-final-checkpoint.md
2026-03-22__p16-spec-closing-doc-sync.md
2026-03-22__trace-path-fix-miniprogram-login-race.md
2026-03-22__zombie-task-graceful-shutdown-rerun.md
2026-03-23__ddl-merge-rejection-count-cancelled.md
2026-03-23__disable-to-remove-user-auth-model-fix.md
2026-03-23__mysites-tenant-filter-time-format-nickname-display.md
2026-03-23__review-modal-phone-display-auto-match-identity-label.md
2026-03-23__role-routing-page-guard.md
2026-03-23__tenant-admin-case-insensitive-username.md
2026-03-23__tenant-admin-review-modal-dynamic-roles.md
2026-03-23__tenant-admin-site-access-root-fix.md
2026-03-23__tenant-user-approval-site-filter.md
2026-03-23__trigger-jobs-admin-web-miniprogram-cleanup.md
2026-03-24__add_missing_cfg_skill_type.md
2026-03-24__ddl-migration-merge-and-archive.md
2026-03-24__fix-tier-nodes-empty-progress-bar.md
2026-03-24__lookback_days_60_to_90.md
2026-03-24__miniprogram-avatar-nickname-feature.md
2026-03-24__p17-assistant-ownership-task-engine.md
2026-03-24__p18-task-engine-dashboard.md
2026-03-24__perf-page-data-fix.md
2026-03-24__review-modal-avatar-layout.md
2026-03-24__soft-delete-user-site-roles-binding.md
2026-03-24__trigger-jobs-clear-task-interaction.md
2026-03-24_fix_cfg_skill_type_missing_records.md
2026-03-25__baseline-relationship-building-tasks.md
2026-03-25__baseline-task-independent-connection-fix.md
2026-03-25__perf-to-task-detail-member-query.md
2026-03-25__perf-wxml-missing-member-id.md
2026-03-25__task-detail-service-records-6-improvements.md
2026-03-25__tenant-users-soft-delete-upsert-fix.md
2026-03-26__etl-missing-fields-phase1-ddl-mappings.md
2026-03-26__net-income-calibration-all-pages.md
2026-03-27__board-finance-double-format-fix.md
2026-03-27__board-finance-integration-T2.md
2026-03-27__board-finance-phase2-t1-t6.md
2026-03-27__board-finance-wxml-format-tabs-cleanup.md
2026-03-27__miniprogram-permission-unification.md
2026-03-27__task-list-recent60d-and-wxml-formatting.md
2026-03-28__board-finance-5fixes.md
2026-03-28__board-finance-dws-area-refactor-audit.md
2026-03-28__fix-miniprogram-login-landing-page.md
2026-03-29__board-lazy-loading-pagination.md
2026-03-29__coach-detail-500-field-name-fix.md
2026-03-29__coach-detail-design-alignment.md
2026-03-29__coach-detail-style-aggregation-fix.md
2026-03-29__dws-task-engine-etl-orchestration.md
2026-03-29__fix-recall-completion-event-chain.md
2026-03-31__task-engine-overhaul.md
2026-04-05__kiro-to-claude-code-migration.md
2026-04-08__fix13-recall-events-refactor.md
```
注意其中一份为 `2026-03-24_fix_cfg_skill_type_missing_records.md`(单下划线),与同日的 `2026-03-24__add_missing_cfg_skill_type.md` 命名风格不同,疑似历史遗留命名,补追时保持原名即可。
## 类别 B内容漂移清单需人工比对共 1 份)
```
2026-04-06__v1-cleanup-ddl-consolidation.md
```
处理提示:主目录版本与嵌套版本在 2026-04-06 的 v1 整理 commit779b2f6前后可能经历过修订需逐行对比选最新信息最完整的一版。
## 类别 C已 commit 的孤本清单(可恢复,共 0 份)
本次扫描未发现此类文件。主目录缺失的 94 份全部属于 D 类未 commit 孤本。
## 类别 A纯副本清单可直接删除共 30 份)
以下 30 份文件在主目录有同名同内容版本,嵌套副本可安全删除。
```
2026-02-13__api-ods-comparison-v2.md
2026-02-13__api-ods-comparison.md
2026-02-13__api-reference-batch2.md
2026-02-13__api-reference-overhaul.md
2026-02-13__bd-manual-docs-consolidation-ddl-sync.md
2026-02-13__field-drift-report-update.md
2026-02-13__git-repo-reinit-push.md
2026-02-13__remove-legacy-index-cleanup.md
2026-02-14__api-doc-reorg-field-grouping.md
2026-02-14__api-ods-comparison-v3-fixed.md
2026-02-14__api-ods-comparison-v3.md
2026-02-14__api-param-audit-ods-design.md
2026-02-14__drop-dwd-settle-list.md
2026-02-14__drop-ods-settlelist.md
2026-02-14__dws-bugfix-tier-safedecimal.md
2026-02-14__json-refresh-md-patch.md
2026-02-14__json-vs-md-audit.md
2026-02-14__legacy-ods-dwd-cleanup.md
2026-02-14__md-placeholder-fix-cleanup.md
2026-02-14__ods-cleanup-doc-update.md
2026-02-14__ods-vs-summary-comparison.md
2026-02-14__recording-client-timezone-fix.md
2026-02-14__replace-role-area-new-api-doc.md
2026-02-14__skip-words-remark-fix.md
2026-02-15__admin-web-console-db-migration-audit-reorg.md
2026-02-15__audit-consolidation-doc-reorg.md
2026-02-15__backend-deps-bootstrap.md
2026-02-15__docs-database-merge.md
2026-02-15__docs-devnotes-index-cleanup.md
2026-02-15__monorepo-migration-phase1-8.md
```
## 建议的执行顺序
1. **阶段 1先保全 D 类96 份)**
- 在动任何东西前,先 `git add -A && git commit -m "WIP 清理前快照"` 做一次保护 commit
-`docs/audit/changes/changes/` 下所有 D 类文件复制(不是移动)到 `docs/audit/changes/`
- 检查 `.gitignore` 是否放行 `docs/audit/changes/*.md`,若未放行则先调整白名单
- `git add docs/audit/changes/ && git commit -m "补追未入仓的 96 份审计孤本"`
2. **阶段 2处理 B 类1 份)**
- 针对 `2026-04-06__v1-cleanup-ddl-consolidation.md`,用 `diff docs/audit/changes/<该文件> docs/audit/changes/changes/<该文件>` 查看差异
- 选更完整的一版保留到主目录;将另一版备份到 `_DEL/audit-backup/2026-04-06__v1-cleanup-ddl-consolidation.嵌套版.md` 或类似路径
- commit 消息"内容漂移修正v1-cleanup-ddl-consolidation"
3. **阶段 3恢复 C 类0 份,跳过)**
- 本次无 C 类,无需操作
4. **阶段 4删除嵌套目录**
- 确认阶段 1、2 已 commit 入仓
- `rm -rf docs/audit/changes/changes/`
- `git add -A && git commit -m "清理嵌套目录 docs/audit/changes/changes/"`
## 风险与回滚
- 风险 1D 类补追后,主目录审计时间线会出现大段 2026-02-26 至 2026-04-08 的批量入仓commit 时间与文件日期不一致。可接受,目标是保全历史。
- 风险 2B 类仅 1 份,若选错版本会丢失另一方内容。缓解:另一版强制先备份到 `_DEL/` 再删。
- 风险 3`.gitignore` 可能仍然屏蔽 `docs/audit/changes/*.md`,导致 `git add` 静默忽略。阶段 1 第一次 `git add` 后必须 `git status` 核对文件是否真的进入了暂存区;若未进入,先修 `.gitignore` 白名单再重试。
- 风险 4D 类中 `2026-03-24_fix_cfg_skill_type_missing_records.md` 为单下划线命名,可能与同日双下划线版本功能重叠,补追后若发现重复再单独合并。
- 回滚:所有删除前应已有"WIP 清理前快照"commit任何阶段出问题 `git reset --hard <快照 hash>` 即可恢复。
## 验证
阶段 4 完成后执行以下验证:
- `ls docs/audit/changes/*.md | wc -l` 应等于 33+ 96D 补追)+ 0C 恢复)= 129
- 若 B 类合并后主目录文件未增加,则仍为 129若 B 类创建了新文件名则为 130
- `ls docs/audit/changes/changes/ 2>/dev/null` 应返回空或"目录不存在"
- `git log --oneline -- "docs/audit/changes/"` 应能看到至少 3 次本次操作 commit快照 / 补追 / 清理)
- 抽查 D 类中的 3 份文件,确认 `git log --all -- "docs/audit/changes/<文件名>"` 返回非空
## 不在本次任务范围
- 审计内容本身的正确性复核(只做文件层面的保全,不审查内容)
- `.gitignore` 结构的长期设计(仅在本次清理中按需放行白名单)
- 其他模块的遗漏审计补追
- 审计看板 `docs/audit/audit_dashboard.md` 的刷新(阶段 4 完成后单独跑 `scripts/audit/gen_audit_dashboard.py`