# W0-01 工作区边界与提交拆分执行清单 | 字段 | 内容 | |------|------| | 生成时间 | 2026-05-02 01:41 | | 执行范围 | 仅整理当前工作区边界、提交批次、风险与验证建议 | | 执行限制 | 未 stage、未 commit、未删除、未移动、未清理 `tmp/`,未修改业务逻辑 | | 依据 | `git status --short`、`git diff --name-status`、`git diff --stat`、`git ls-files --others --exclude-standard`、W0-01 拆分方案、历史拆分方案 | ## 一、当前工作区快照 当前工作区不是干净状态,包含三类混杂内容: 1. 已跟踪文件改动:50 个文件,约 2555 行新增、2507 行删除。 2. 未跟踪文件/目录:包含 `.cursor/`、`docs/ai-env-history/`、`docs/claude-history/`、`docs/ai/`、`tmp/`、`tools/`、新增后端/前端/迁移文件等。 3. 敏感/本地配置风险:`.mcp.json`、`apps/etl/connectors/feiqiu/.env`、`docs/deployment/SERVER-ACCESS.md`。 已确认策略: - `RuntimeContext / 业务日期沙箱` 独立为 `R1` 批次。 - Cursor 迁移资产并入 `C1`。 - `.mcp.json` 纳入迁移/安全修正批次。 - `apps/etl/connectors/feiqiu/.env` 用户确认可纳入对应批次,但执行前仍必须标注真实 `API_TOKEN` 风险。 - `tmp/` 仅列为排除项,不移动、不删除、不改 `.gitignore`。 - `docs/deployment/SERVER-ACCESS.md` 可纳入文档批次。 ## 二、批次总览 | 批次 | 主题 | 是否建议提交 | 主要风险 | |------|------|--------------|----------| | C1 | Claude/Codex/Cursor 迁移与追溯资产 | 可优先提交 | `.mcp.json` 为本地工具配置;`audit_dashboard` 有交叉索引 | | R1 | RuntimeContext / 业务日期沙箱 | 先验证再提交 | 牵涉业务日期、AI cache、任务、看板,且 `main.py` 为交叉文件 | | C2 | Claude AI/App2-App2a 业务改动 | 验证后拆提交 | 跨后端、admin-web、小程序、DB、脚本,范围大 | | L1 | ETL 日志与 App2a 区域修复 | 可独立验证后提交 | 与 App2a 业务相关,但来源是 `20260501.log` 问题 | | C5 | 配置与部署文档 | 逐项审查 | 包含真实 API token、服务器地址、SSH 用户/密钥路径 | | C4 | 临时产物/导出文件 | 不提交 | 多为 Excel、HTML、PDF、截图、临时报表脚本 | | X | 交叉文件 | 暂不直接提交 | 单文件包含多个批次的变更 | ## 三、C1:迁移与追溯资产 ### 建议包含 | 路径 | 状态 | 归属理由 | |------|------|----------| | `AGENTS.md` | 未跟踪 | 根级 Codex/Cursor 规则入口 | | `apps/backend/AGENTS.md` | 未跟踪 | 后端模块规则迁移 | | `apps/etl/connectors/feiqiu/AGENTS.md` | 未跟踪 | ETL 模块规则迁移 | | `apps/demo-miniprogram/AGENTS.md` | 未跟踪 | Demo 小程序模块规则迁移 | | `db/AGENTS.md` | 未跟踪 | 数据库目录规则迁移 | | `.cursor/` | 未跟踪目录 | Cursor rules、hooks、skills 迁移资产 | | `tools/codex/` | 未跟踪目录 | Codex MCP 与迁移脚本 | | `tools/cursor/` | 未跟踪目录 | Cursor 环境迁移脚本 | | `docs/claude-history/` | 未跟踪目录 | Claude 会话摘要、进度报告、旧拆分方案 | | `docs/ai-env-history/` | 未跟踪目录 | Claude/Codex/Cursor 会话索引、历史追溯、当前工作清单 | | `docs/codex_migration.md` | 未跟踪 | Codex 迁移说明 | | `docs/codex_migration_status_report_2026-04-29.md` | 未跟踪 | Codex 迁移状态报告 | | `docs/cursor_migration.md` | 未跟踪 | Cursor 迁移说明 | | `docs/audit/changes/2026-04-29__codex_migration_and_claude_history_archive.md` | 未跟踪 | Codex/Claude 迁移审计 | | `docs/audit/changes/2026-05-01__cursor_migration.md` | 未跟踪 | Cursor 迁移审计 | | `.mcp.json` | 已修改 | 去除已跟踪明文 PostgreSQL DSN,改为环境变量脚本读取 | ### C1 注意事项 - `.mcp.json` 当前不再包含明文 PostgreSQL DSN,只引用 `PG_DSN`、`TEST_DB_DSN`、`APP_DB_DSN`、`TEST_APP_DB_DSN`。 - `.mcp.json` 仍包含本机绝对路径、微信开发者工具路径、`npx.cmd` 路径,属于开发环境配置;用户已确认纳入迁移/安全修正批次。 - `docs/audit/audit_dashboard.md` 不直接放入 C1,因为它同时新增了迁移审计、AI 修复审计和 App3 审计索引。 - `CLAUDE.md` 可随规则迁移,但当前 diff 中有一处终端显示为乱码,执行前需要复核文件实际 UTF-8 内容。 ### C1 建议验证 ```powershell git diff --check -- .mcp.json AGENTS.md apps/backend/AGENTS.md apps/etl/connectors/feiqiu/AGENTS.md apps/demo-miniprogram/AGENTS.md db/AGENTS.md docs/codex_migration.md docs/cursor_migration.md ``` 敏感扫描建议: ```powershell git grep -n -I -E "postgresql://|postgres://|password|secret|token|api[_-]?key" -- .mcp.json tools/codex tools/cursor docs/codex_migration.md docs/cursor_migration.md ``` ## 四、R1:RuntimeContext / 业务日期沙箱 ### 建议包含 | 路径 | 状态 | 归属理由 | |------|------|----------| | `apps/backend/app/services/runtime_context.py` | 未跟踪 | 运行时上下文服务 | | `apps/backend/app/routers/admin_runtime_context.py` | 未跟踪 | admin runtime context API | | `apps/backend/app/schemas/runtime_context.py` | 未跟踪 | runtime context schema | | `db/zqyy_app/migrations/20260501__runtime_context_sandbox.sql` | 未跟踪 | 沙箱上下文 schema 迁移 | ### R1 交叉文件 | 路径 | 交叉原因 | 建议 | |------|----------|------| | `apps/backend/app/main.py` | 同时包含 AI WebSocket、孤儿 run_logs 清理、dispatcher 注入、RuntimeContext router 挂载 | 暂列为 X 交叉文件;执行时按 hunk 或后续小提交拆开 | ### R1 建议验证 ```powershell cd apps/backend pytest tests -k "runtime_context or business_day" ``` 如果没有现成测试,应至少补充或执行: - live 模式不改变当前日期口径。 - sandbox 模式返回配置的业务日期。 - admin router 能读取/更新上下文配置。 - migration 有回滚策略与验证 SQL。 ## 五、C2:Claude AI / App2-App2a 业务改动 ### 后端 AI 核心 | 路径 | 状态 | 归属理由 | |------|------|----------| | `apps/backend/app/ai/apps/__init__.py` | 删除 | 删除旧 8 app 死代码目录 | | `apps/backend/app/ai/apps/app1_chat.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app2_finance.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app3_clue.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app4_analysis.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app5_tactics.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app6_note.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app7_customer.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/apps/app8_consolidation.py` | 删除 | 删除旧实现 | | `apps/backend/app/ai/cache_service.py` | 修改 | AI cache 类型、过期、读写策略 | | `apps/backend/app/ai/dashscope_client.py` | 修改 | DashScope 调用与 tokens 提取 | | `apps/backend/app/ai/dispatcher.py` | 修改 | AI 事件编排与 App2/App2a | | `apps/backend/app/ai/run_log_service.py` | 修改 | AI run log | | `apps/backend/app/ai/event_bus.py` | 未跟踪 | AI 事件广播 | | `apps/backend/app/ai/references.py` | 未跟踪 | AI references 注入 | | `apps/backend/app/ai/prompts/app2_finance_prompt.py` | 修改 | App2 财务 prompt | | `apps/backend/app/ai/prompts/app2a_finance_area_prompt.py` | 修改 | App2a 区域 prompt | | `apps/backend/app/ai/prompts/app8_consolidation_prompt.py` | 修改 | App8 合并 prompt | | `apps/backend/app/ai/prompts/app3_clue_prompt.py` | 未跟踪 | App3 prompt | | `apps/backend/app/ai/prompts/app4_analysis_prompt.py` | 未跟踪 | App4 prompt | | `apps/backend/app/ai/prompts/app5_tactics_prompt.py` | 未跟踪 | App5 prompt | | `apps/backend/app/ai/prompts/app6_note_prompt.py` | 未跟踪 | App6 prompt | | `apps/backend/app/ai/prompts/app7_customer_prompt.py` | 未跟踪 | App7 prompt | ### 后端 API 与服务 | 路径 | 状态 | 归属理由 | |------|------|----------| | `apps/backend/app/routers/admin_task_engine.py` | 修改 | admin 任务引擎/AI 管理相关 | | `apps/backend/app/routers/internal_events.py` | 修改 | internal event/AI 调用链 | | `apps/backend/app/routers/xcx_chat.py` | 修改 | 小程序 AI chat | | `apps/backend/app/schemas/admin_ai.py` | 修改 | admin AI schema | | `apps/backend/app/services/ai/admin_service.py` | 修改 | admin AI 服务 | | `apps/backend/app/services/board_service.py` | 修改 | 财务看板/区域读取 | | `apps/backend/app/services/chat_service.py` | 修改 | APP1 chat | | `apps/backend/app/services/note_service.py` | 修改 | note/APP6 相关 | | `apps/backend/app/services/recall_detector.py` | 修改 | 召回检测/AI 链路 | | `apps/backend/app/services/task_expiry.py` | 修改 | 任务过期 | | `apps/backend/app/services/task_generator.py` | 修改 | 任务生成 | | `apps/backend/app/services/task_manager.py` | 修改 | 任务管理 | | `apps/backend/app/services/trigger_scheduler.py` | 修改 | 触发器调度 | | `apps/backend/app/ws/ai_events.py` | 未跟踪 | AI WebSocket 告警 | | `apps/backend/pytest.ini` | 修改 | 测试配置 | ### admin-web | 路径 | 状态 | 归属理由 | |------|------|----------| | `apps/admin-web/src/App.tsx` | 修改 | AI 管理路由/菜单 | | `apps/admin-web/src/api/adminAI.ts` | 修改 | admin AI API | | `apps/admin-web/src/pages/AIDashboard.tsx` | 修改 | AI 总览 | | `apps/admin-web/src/pages/AIOperations.tsx` | 修改 | AI 手动操作 | | `apps/admin-web/src/pages/AIRunLogs.tsx` | 修改 | AI 运行日志 | | `apps/admin-web/src/pages/TriggerManager.tsx` | 修改 | 触发器页面接入 | | `apps/admin-web/src/pages/AITriggers.tsx` | 未跟踪 | AI 触发器管理 | | `apps/admin-web/src/__tests__/adminAiAppTypes.test.ts` | 未跟踪 | admin AI app type 测试 | ### 小程序 | 路径 | 状态 | 归属理由 | |------|------|----------| | `apps/miniprogram/miniprogram/components/ai-float-button/ai-float-button.ts` | 修改 | AI 浮动按钮上下文 | | `apps/miniprogram/miniprogram/pages/board-finance/board-finance.wxml` | 修改 | 财务看板 AI 洞察展示 | | `apps/miniprogram/miniprogram/pages/board-finance/board-finance.wxss` | 修改 | 财务看板 AI 样式 | | `apps/miniprogram/miniprogram/pages/chat/chat.ts` | 修改 | AI chat / SSE / 上下文 | | `apps/miniprogram/miniprogram/pages/chat/chat.wxml` | 修改 | AI chat 展示 | | `apps/miniprogram/miniprogram/pages/customer-detail/customer-detail.ts` | 修改 | 客户详情 AI 线索 | | `apps/miniprogram/miniprogram/services/api.ts` | 修改 | 小程序 API 客户端 | ### DB / 文档 / 脚本 | 路径 | 状态 | 归属理由 | |------|------|----------| | `db/zqyy_app/migrations/20260420_ai_trigger_jobs_and_app2_prewarm.sql` | 未跟踪 | AI trigger jobs 与 App2 预热 | | `db/zqyy_app/migrations/20260421_app2_prewarm_cron_reschedule.sql` | 未跟踪 | App2 cron 调整 | | `docs/ai/` | 未跟踪目录 | AI 验收、prompt、版本历史 | | `docs/database/BD_manual_ai_trigger_jobs_register.md` | 未跟踪 | AI trigger jobs 数据库文档 | | `scripts/ab_test_app2_prompt.py` | 未跟踪 | App2 prompt 测试 | | `scripts/analyze_ab_content_quality.py` | 未跟踪 | App2 prompt 分析 | | `scripts/analyze_store_manager_quality.py` | 未跟踪 | App2 prompt 分析 | | `scripts/dump_app2_prompt.py` | 未跟踪 | App2 prompt 导出 | | `scripts/gen_app2_v6_md.py` | 未跟踪 | App2 prompt 文档生成 | | `scripts/test_app2_new_system_prompt.py` | 未跟踪 | App2 prompt 测试 | ### C2 建议验证 ```powershell cd apps/backend pytest tests cd ..\admin-web pnpm test pnpm lint cd ..\miniprogram npm test ``` 如果全量测试时间过长,应按后端 AI、admin-web、miniprogram 分批执行,并在最终提交前记录未覆盖风险。 ## 六、L1:ETL 日志与 App2a 区域修复 | 路径 | 状态 | 归属理由 | |------|------|----------| | `apps/etl/connectors/feiqiu/tasks/dws/finance_area_daily.py` | 修改 | `20260501.log` 中 `DWS_FINANCE_AREA_DAILY` 区域未匹配问题,同时与 App2a 区域财务数据相关 | 建议独立验证后提交,避免和 C2 的 AI 业务大包混在一起。 建议验证: ```powershell cd apps/etl/connectors/feiqiu pytest tests -k "finance_area_daily" ``` 如涉及真实 ETL 数据,还需使用测试库执行 dry-run 或指定日期回放,禁止直接连生产库。 ## 七、C5:配置与部署文档 | 路径 | 状态 | 归属建议 | 风险 | |------|------|----------|------| | `.mcp.json` | 修改 | 纳入 C1 | 已移除明文 PostgreSQL DSN;仍含本机路径和工具路径 | | `apps/etl/connectors/feiqiu/.env` | 修改 | 用户确认可纳入,但必须最终确认 | 包含真实 `API_TOKEN` 替换 | | `docs/deployment/SERVER-ACCESS.md` | 未跟踪 | 可纳入文档批次 | 含服务器地址、SSH 用户、密钥路径、公网入口;无密码/私钥正文 | | `docs/deployment/LAUNCH-CHECKLIST.md` | 修改 | 文档批次 | 仅新增指向 `SERVER-ACCESS.md` 的说明 | ### 配置审查结论 - `.mcp.json` 当前使用 `tools/codex/mcp-postgres.ps1` 读取 DSN,未在当前 diff 中新增明文 PostgreSQL URL。 - `apps/etl/connectors/feiqiu/.env` 当前 diff 是真实 JWT/API token 的替换;用户已确认可纳入对应批次,但此处仍标为高敏配置。 - `SERVER-ACCESS.md` 明确禁止写入私钥、密码、数据库密码、token、证书私钥;当前内容未发现私钥正文或密码正文。 - `SERVER-ACCESS.md` 仍包含内网 IP、SSH 用户和密钥文件路径,提交前建议用户再做一次人工确认。 建议敏感扫描: ```powershell git diff -- .mcp.json apps/etl/connectors/feiqiu/.env docs/deployment/SERVER-ACCESS.md docs/deployment/LAUNCH-CHECKLIST.md git grep -n -I -E "postgresql://|postgres://|BEGIN .*PRIVATE KEY|password=|api[_-]?key|secret" -- .mcp.json docs/deployment tools/codex tools/cursor ``` ## 八、X:交叉文件 | 路径 | 当前差异 | 建议归属 | |------|----------|----------| | `apps/backend/app/main.py` | 包含 RuntimeContext router 挂载、AI WebSocket router、孤儿 run_logs 清理、dispatcher 注入 | 交叉文件;建议在 R1/C2 提交前拆 hunk 或单独提交为后端启动整合 | | `docs/audit/audit_dashboard.md` | 自动生成,新增 2026-04-29、04-30、05-01 多条审计索引 | 交叉文件;建议等 C1/R1/C2/L1 审计归属确认后再统一提交 | | `CLAUDE.md` | 新增 CLI/UTF-8 中文处理规则 | 可入 C1,但当前 diff 终端显示一处乱码,提交前需复核实际文件编码 | | `docs/deployment/LAUNCH-CHECKLIST.md` | 新增 `SERVER-ACCESS.md` 引用 | 可入 C5 文档批次 | ## 九、C4:临时产物排除项 本轮不移动、不删除、不改 `.gitignore`,仅明确这些文件不进入提交批次: | 路径 | 类型 | |------|------| | `tmp/LOG.txt` | 日志/临时记录 | | `tmp/board-finance-debug.png` | 调试截图 | | `tmp/churned_customer_report.html` | 临时报表 | | `tmp/churned_customer_report.pdf` | 临时报表 | | `tmp/excel_analysis_report.txt` | Excel 分析临时输出 | | `tmp/revenue_report.md` | 临时报表 | | `tmp/revenue_report.py` | 临时报表脚本 | | `tmp/revenue_report.xlsx` | 临时报表 | | `tmp/revenue_report_xlsx.py` | 临时报表脚本 | | `tmp/sheet_structure.txt` | Excel 分析临时输出 | | `tmp/hlm/` | 汇来米/交易筛选导出 | | `tmp/web/` | 汇来米商户控台对账单导出 | | `tmp/*.xlsx` | Excel 导出 | | `tmp/分组与面积.txt` | 经营区域/面积分析源文件 | ## 十、建议执行顺序 ### 步骤 1:提交前只读检查 ```powershell git status --short git diff --check git diff --name-status ``` ### 步骤 2:优先处理 C1 建议先固化迁移/追溯资产,但需要排除交叉文件: - 包含:`AGENTS.md`、各 `AGENTS.md`、`.cursor/`、`docs/ai-env-history/`、`docs/claude-history/`、`docs/codex_migration*.md`、`docs/cursor_migration.md`、`tools/codex/`、`tools/cursor/`、`.mcp.json`。 - 暂不包含:`docs/audit/audit_dashboard.md`。 - 是否包含 `CLAUDE.md`:建议先复核编码后纳入 C1。 ### 步骤 3:处理 R1 - 先确认 `RuntimeContext` 文件能否独立通过后端测试。 - `apps/backend/app/main.py` 暂不直接纳入 R1,除非拆分 hunk 或确认整文件作为后端启动整合提交。 ### 步骤 4:处理 C2 - 按后端、admin-web、小程序、DB/脚本分组验证。 - 不建议一次性提交全部 C2,建议拆成: 1. 后端 AI 核心与 prompts。 2. admin-web AI 管理页面。 3. 小程序 AI 入口与财务看板展示。 4. DB 迁移与 AI 文档。 ### 步骤 5:处理 L1 - `finance_area_daily.py` 建议独立验证并提交。 ### 步骤 6:处理 C5 / C4 - C5 配置与部署文档需最终确认。 - C4 `tmp/` 全部保持未提交、未清理。 ## 十一、最终确认点 执行 stage/commit 前需要再次确认: 1. 是否先提交 C1,且暂不提交 `docs/audit/audit_dashboard.md`? 2. `CLAUDE.md` 编码复核通过后是否随 C1 提交? 3. `apps/etl/connectors/feiqiu/.env` 虽含真实 `API_TOKEN`,是否仍按用户确认纳入提交? 4. `apps/backend/app/main.py` 是拆 hunk,还是作为单独“后端启动整合”提交? 5. `docs/deployment/SERVER-ACCESS.md` 是否按当前明文地址/用户/密钥路径提交? 6. C2 是否按后端/admin-web/小程序/DB 文档继续拆分,而不是单一大提交? ## 十二、本轮未执行事项 - 未 stage。 - 未 commit。 - 未移动或删除 `tmp/`。 - 未修改 `.gitignore`。 - 未运行测试。 - 未执行生产迁移、回填或预热。