# P1 反馈响应总报告(第二轮)

> 日期:2026-05-04 / 触发:Neo 在 `00-P1-feedback-response-summary.md` 表格里写下斜体二轮反馈
> 主线 + 1 个子代理(G-1 P4 前置修复深度调研) / 状态:**调研完成,等 Neo 拍板进入实施**

第一轮总报告见 [`00-P1-feedback-response-summary.md`](00-P1-feedback-response-summary.md)。

## 一、Neo 二轮反馈分类

### A. 直接同意 12 项(无需调研,直接进 Wave)

| # | 反馈 | Wave 分配 |
|---|---|---|
| P1-1 | 同意接受方案 A | Wave 2 |
| P1-2 | 同意 | Wave 5 |
| P1-3 | 同意接受 SPEC 化 | Wave 1-3 + Wave 5 |
| P1-4 | (默认接受 A 改文档,从清单消除) | Wave 5 |
| P1-5 | 同意接受 packages/shared 跨包枚举 | Wave 2 |
| P1-6 | 同意接受方案 A 完全合并 | Wave 2 |
| P1-7 | 同意接受 B+D 混合 | 跨 Wave |
| P1-8 | 同意应用 4 三种触发条件 | Wave 1-3 |
| P1-9 | 同意 | Wave 5 |
| P1-10 | (默认接受 B 现状对,从清单移除) | — |
| P1-11 | 同意 | Wave 1 |
| P1-12 | 同意接受 0=散客 + isScattered | Wave 4 |

### B. 要工作的 2 项

| # | Neo 反馈 | 处理 |
|---|---|---|
| **P1-13** | "牵扯的前后依赖和上下文比看起来更复杂,关联性更高,别轻易修改" | **G-1 子代理深度调研** → 见 §二 |
| **extra dev-trace** | "接受 Drop,Wave 排序你来定" | **主线确认 Wave 5** → 见 §三 |

## 二、P1-13 深度调研结论(Neo 担忧严重证实)

**G-1 报告** → [`P1-13-deep-research.md`](P1-13-deep-research.md)

### 1. 4 个 T 当前精确状态(tasks.md 状态严重失实)

| T | tasks.md 标记 | 实际状态 | Diff |
|---|---|---|---|
| T1 | [x] | 真已实现 | OK |
| T2 | [x] | **被 2026-04-08 Fix-13 重写,语义偏离原 spec** | ⚠️ |
| T3 | [ ] | **主体已实现,但有沙箱缺陷**(无 runtime_mode 隔离) | ⚠️ |
| T4 | [ ] | 完全已实现 | OK 但需补 sandbox 兼容 |
| T5 | [ ] | **半实施**:sync handler OK / cron + AI async 仍漏 | ⚠️ |
| T6 | [ ] | 代码默认值改 7:00,**但迁移脚本缺失** | ⚠️ |
| **测试** | tasks.md [x] 8 项 | **实际 0 个测试文件** | ❌ **撒谎状态** |

**关键意义**:**Neo 的直觉完全正确**。如果按原 P1 总报告的"剩余 T3/T4/T5/T6 纳入 Wave 1-3 一并修"动手,会:
- T3 重复改造(已实现,改两次)
- T4 重复改造(同上)
- T5 没修对地方(缺 cron + AI async 路径)
- T6 缺迁移脚本(改代码不改 DB,生产部署后行为不一致)
- **测试全部缺失**(tasks.md 标 [x] 但 0 文件)

### 2. 两条致命风险(spec 完全没记录)

#### 致命 1:Fix-13 引发的"任务创建-顶替"循环污染

- 2026-04-08 Fix-13 让 `recall_detector` 自己开/关 `follow_up_visit`
- 然后又触发 `note_reclassifier` 走 T3+T4 流程
- **每次 `etl_data_updated` 事件触发**,任务表 `coach_tasks` 和历史表 `coach_task_history` **持续被"创建-顶替"循环污染**
- spec 完全没记录这个新行为,无人能发现何时进入死循环

#### 致命 2:note_reclassifier 跨沙箱数据污染

- `note_reclassifier` **完全没有 `runtime_mode` 隔离**
- sandbox 演示期间,它会**跨模式查询/插入**(沙箱触发的事件 → 改 live 数据,反之亦然)
- 可能造成:
  - 误跳过(本应创建任务,因为查到沙箱里有任务而跳过)
  - 数据漏写(应该写 sandbox 但写到 live)
- **与 P0-7 沙箱收口直接冲突**

### 3. 推荐 Phase 0-3 渐进路径

**绝不要按 P1 第一轮报告的"Wave 1-3 一并修"直接动手**。改按:

| Phase | 范围 | 触发条件 |
|---|---|---|
| **Phase 0** | 跑 5 条 SELECT 看测试库 / 生产 DB 实际状态(确认调研结论) | 立即,1h |
| **Phase 1 必修** | 补 T6 迁移脚本 + note_reclassifier 加 `runtime_mode` 列 | Phase 0 通过后,Wave 1 内 |
| **Phase 2 决策** | T5 cron 路径与 AI async path 的 path B/C 双路径策略 + last_run_at 兜底机制 | Phase 1 完成后,Wave 1-2 |
| **Phase 3 测试补漏** | 补全 8 项测试文件(tasks.md 标 [x] 实际 0 个) | Phase 2 完成后,Wave 2-3 |

**绝不混入 Wave 1-3 D Bug 修复批次**(避免一次提交太多变化)。

### 4. 给 Neo 的 15 个决策题

详见 G-1 报告 §九。本总报告聚焦顶层判断:

- **核心 Y/N**:接受 Phase 0-3 渐进路径,不在 Wave 1-3 一次性修?**Y**
- **优先级**:Phase 0 立即跑 SELECT?是否需要主线协助?**Y,主线协助**
- **测试补漏**:tasks.md 标 [x] 但 0 文件 — 是否要先校正 tasks.md 状态再实施?**Y,先校正**

## 三、dev-trace Wave 排序确认 → Wave 5

**主线决定** → [`extra-dev-trace-wave-schedule.md`](extra-dev-trace-wave-schedule.md)

### 排到 Wave 5 的理由

- Wave 1-3 是业务 D Bug 主线,移除工具页分散注意力
- Wave 2 已有 P1-1 schema 迁移 9 人时,不再叠加
- Wave 5 本来就要做大量结构性清理,合并 1 个 PR 即可

### 执行清单

- 删除 admin-web 5 文件 + 后端 4 文件 + 数据库表 DROP + 配置清理 + 文档清理
- **总耗时 1-2h 单 PR**
- 详细 6 步执行 + 风险回滚方案见排程文件

## 四、整合后的 Wave 分配(P0 + P1 全部反馈)

| Wave | 主要任务 | 累积反馈分配 |
|---|---|---|
| **Wave 1** | Runtime Context 沙箱 | P0-3 看板接入 / P0-7 SPEC + §15 patch / P0-1 SCD2 视图入口 / P1-11 chat 后端契约 / **P1-13 Phase 0 SELECT 校核(立即)** |
| **Wave 1-3** | 代码 D Bug | P0-6 临时守卫 / P0-8 DBViewer / **P0-5 致命 1+2(伪 FDW 残留 + JWT aud)** / P1-3 customer_id / 2 个独立 Bug(page_context + ClueCategory)/ **P1-13 Phase 1 必修(T6 迁移 + runtime_mode 列)** |
| **Wave 2** | admin-web AI + schema 迁移 | P1-1 维客线索迁移(9h)/ P1-6 触发器合并 / P1-5 跨包枚举 / **P0-5 Wave 协同 6 项** / **P1-13 Phase 2 决策(T5 path B/C)** |
| **Wave 4** | DWS / RLS / 数据正确 | 4.1 财务看板 5 项 / P0-7 todos P1×8 / P1-12 isScattered / **P1-13 Phase 3 测试补漏** |
| **Wave 5** | 部署 + 文档收尾 | P0-1/2/4 文档 / P0-5 长期治理 5 项 / P0-7 todos P2×7 / P1-2/9/10/13 文档 / **dev-trace Drop** |
| **跨 Wave** | admin API PRD | P1-7 B+D 混合 |
| **P0-6 阶段 2** | 沙箱内/全局清空语义 | P0-7 收口后 |

## 五、本轮 Neo 必须答的关键问题

| # | 问题 | 我的建议 |
|---|---|---|
| 1 | P1-13 接受 Phase 0-3 渐进路径,不一次性修 Y/N | **Y** |
| 2 | P1-13 Phase 0 立即跑 5 条 SELECT,主线协助 Y/N | **Y** |
| 3 | P1-13 先校正 tasks.md 标记状态 Y/N | **Y** |
| 4 | dev-trace 排到 Wave 5 单 PR 1-2h Y/N | **Y** |
| 5 | tasks.md 撒谎状态(标 [x] 实际未做)是否要做项目级审计,看其他 SPEC tasks 是否也有 | **Y(强烈建议)** |

第 5 项是**严重的项目治理问题**:如果 P4-prerequisite-fixes 的 tasks.md 撒谎,**其他 SPEC 的 tasks.md 可能也撒谎**。建议起一个跨 Wave 的"tasks.md 真实性审计"任务,排到 Wave 5 文档收尾时统一做。

## 六、产出文件索引(累积)

```
docs/_overview/04b-feedback/
├── 00-P1-feedback-response-summary.md           (第一轮)
├── 00-P1-round2-feedback-response-summary.md    (本文)
├── P1-1-schema-migration-risk.md                (E-1)
├── P1-2-mvp-cleanup-result.md                   (主线)
├── P1-3-4-cross-page-params.md                  (E-2)
├── P1-5-ai-cache-type-spec.md                   (E-3)
├── P1-6-trigger-api-merge.md                    (E-3)
├── P1-7-admin-api-prd-evaluation.md             (主线)
├── P1-10-customer-detail-entries.md             (E-4)
├── P1-12-scattered-memberid.md                  (E-4)
├── P1-13-prerequisite-fixes-found.md            (主线第一轮)
├── P1-13-deep-research.md                       (G-1 第二轮)
├── extra-dev-trace-perf.md                      (E-4)
└── extra-dev-trace-wave-schedule.md             (主线第二轮)
```

---

> 等 Neo 答 5 个关键问题 + 完成 04c 反馈处理 + 答 P0 二轮 10 问,所有 Wave 进入实施轨道。
