- 删除 5 个 AGENTS.md(根 + 4 子模块)与 .cursor/、.cursorignore,全部已备份 - 在 CLAUDE.md 末尾追加 5 节迁移必需内容(CLI/Shell 中文与编码、Claude Code 资产入口、Hook 与权限、不破坏原则、历史追溯),保留用户选定的 226 行项目规则全集 - 用户级 12 个 skills 从 ~/.cursor/skills/ 剥包装回迁到 ~/.claude/skills/(neozqyy-cursor-migration → neozqyy-claude-code-migration) - docs/ai-env-history/ 顶层 10 文件入仓(含 conversation_index.csv、file_impact_index.csv,已脱敏);sessions/ 原文继续本地保留 - 新增 tools/claude-code/migrate_ai_environment.py(--check 14/14 通过) - 新增 docs/claude_code_migration.md 与 docs/audit/changes/2026-05-02__claude_code_migration.md - .gitignore 调整:开放 2 个 CSV 索引入仓,保留 sessions/ 与 claude-history/ 排除 - 不混入 124 个业务变更(AI 模块重构、runtime_context、sandbox 等保持 unstaged) - 备份位置:~/.claude/backups/pre-claude-code-migration-2026-05-02/ 第二轮迁移(第一轮 commit 6facb2d 已被 git reset 回滚;本轮策略为追加而非重写 CLAUDE.md)
17 KiB
17 KiB
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 拆分方案、历史拆分方案 |
一、当前工作区快照
当前工作区不是干净状态,包含三类混杂内容:
- 已跟踪文件改动:50 个文件,约 2555 行新增、2507 行删除。
- 未跟踪文件/目录:包含
.cursor/、docs/ai-env-history/、docs/claude-history/、docs/ai/、tmp/、tools/、新增后端/前端/迁移文件等。 - 敏感/本地配置风险:
.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 建议验证
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
敏感扫描建议:
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 建议验证
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 建议验证
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 业务大包混在一起。
建议验证:
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 用户和密钥文件路径,提交前建议用户再做一次人工确认。
建议敏感扫描:
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:提交前只读检查
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,建议拆成:
- 后端 AI 核心与 prompts。
- admin-web AI 管理页面。
- 小程序 AI 入口与财务看板展示。
- DB 迁移与 AI 文档。
步骤 5:处理 L1
finance_area_daily.py建议独立验证并提交。
步骤 6:处理 C5 / C4
- C5 配置与部署文档需最终确认。
- C4
tmp/全部保持未提交、未清理。
十一、最终确认点
执行 stage/commit 前需要再次确认:
- 是否先提交 C1,且暂不提交
docs/audit/audit_dashboard.md? CLAUDE.md编码复核通过后是否随 C1 提交?apps/etl/connectors/feiqiu/.env虽含真实API_TOKEN,是否仍按用户确认纳入提交?apps/backend/app/main.py是拆 hunk,还是作为单独“后端启动整合”提交?docs/deployment/SERVER-ACCESS.md是否按当前明文地址/用户/密钥路径提交?- C2 是否按后端/admin-web/小程序/DB 文档继续拆分,而不是单一大提交?
十二、本轮未执行事项
- 未 stage。
- 未 commit。
- 未移动或删除
tmp/。 - 未修改
.gitignore。 - 未运行测试。
- 未执行生产迁移、回填或预热。