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

12 KiB
Raw Blame History

审计记录补追与嵌套目录清理

发现日期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/ 的路径嵌套。

同时期 .gitignoredocs/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