Files
Neo-ZQYY/docs/_overview/04a-feedback/00-P0-round2-feedback-response-summary.md
Neo 509cf43284 chore(docs): Wave 0 调研产出 + P0/P1/P2 反馈调研
建立项目级标杆文档 docs/_overview/ 作为产品全景索引,
解决"PRD 零碎、文档膨胀、跨子系统调研无入口"的问题。

主要内容:
- 00-index 总索引 + 维护协议 + 与 CLAUDE.md 关系
- 01-product-overview 产品全景脑图(6 角色 / 6 子系统 / 数据流 /
  7 业务概念 / 8+1 AI 矩阵 / 22 术语)
- 02a-miniprogram-page-matrix 小程序 21 页业务指纹
- 02b-adminweb-page-matrix admin-web 19 路由业务指纹
- 03-test-spec 测试规范 (L1-L5 分层 + 走查模板 + 75-95 case 估算)
- 04-doc-conflicts 39 条冲突索引(P0×8 / P1×13 / P2×13 + 5 子项)
- 04a/b/c-conflicts-*-detail 业务故事卡(7 字段:关联/逻辑/影响/选项/判定)
- 05-orphan-pages-cleanup admin-web 6 孤儿页面处置(1 归档 + 4 保留)
- WAVES-MASTER-PLAN.md 全 Wave 主计划(0-5,共 22-32 工作日)
- WAVE-1-KICKOFF.md Wave 1 实施 kickoff
- GLOBAL-DECISION-DASHBOARD.md 全局决策仪表板

反馈调研产物:
- 04a-feedback/ P0 两轮反馈(8+8 项决策 + D-1/2/3 + F-1/2 子代理产出)
- 04b-feedback/ P1 两轮反馈(13+1+5 项 + E-1/2/3/4 + G-1/2 子代理产出)
- 04c-feedback/ P2 反馈(13 项 + 5 子项 + H-1/2/3 子代理产出)
- NEO-DECISIONS-LOG 累积决策记录

关键追加发现 8 处 D Bug(原蓝本 0):
- P0-3 看板沙箱接入(Wave 1 W1-T1)
- P0-5 致命 1 (4 处 fdw_etl 残留, 已修 commit 17f045a)
- P0-5 致命 2 (JWT aud 缺失, 已修 commit 17f045a)
- P0-6 clearAllTasks 守卫 (Wave 3)
- P0-8 DBViewer 黑名单漏 (已修 commit 17f045a)
- P1-3 task-detail 跳转传 task_id 而非 customer_id
- P2-7 board-finance 隐式 null
- 2 个独立 Bug (page_context.created_at + ClueCategory 字典)

参考: docs/_overview/00-index.md
2026-05-04 07:38:28 +08:00

9.6 KiB
Raw Blame History

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

日期:2026-05-04 / 触发:Neo 在 00-P0-feedback-response-summary.md 表格里写下斜体二轮反馈 主线 + 2 个子代理(F-1 沙箱+SPI / F-2 工程规范一致性)调研整合 / 状态:调研完成,等 Neo 拍板进入实施

本报告聚合第二轮 6 条 P0 反馈处理状态。第一轮总报告见 00-P0-feedback-response-summary.md

一、第二轮 6 条 P0 反馈处理状态

# 二轮反馈摘要 调研产出 关键结论 等待 Neo 决策
P0-1 沙箱+SPI 每天快照?是否合理?更优雅方案? P0-1-sandbox-snapshot-design.md 不需要每日快照;SCD2 区间方案更优雅;只需让 ETL 改 3 处 SQL 走 app.v_cfg_* 视图(0.5 天) 接受方案 1?P20 SPEC 加 §1.4/§3.5/§5.6/AC14-15/§11.2/T16-T17?
P0-2 同意"主+副"方案 (已确认) Wave 5 落地 已确认
P0-3 同意,等 Wave 0 完成后,Wave 1 据 Wave 0 更新 (已确认) Wave 0 即将收尾,Wave 1 计划基于本轮 P0/P1 反馈更新 已确认
P0-5 倾向工程一致性,要全览 + 实施方案 P0-5-engineering-consistency-overview.md 24 个偏离点 / 14 规范 + 2 个关键发现:4 处必坏残留 + JWT aud 缺失 接受统一治理方案?立即治理 6 项进 Wave 1-3?
P0-6 同意,要记录 P0-6-record.md 两阶段方案:阶段 1 临时止血 1h / 阶段 2 沙箱收口后正式重设计 3-5h 已确认
P0-7 P20 SPEC 是否覆盖成果层走查?(Playwright 6 页 + 微信开发者工具看板 + 切身份) P0-7-spec-acceptance-layer-check.md 成果层走查严重缺失;给出 P20 §15 完整 patch 选 A(直接补到 P20)/ B(单开手册)/ C(走查时即时补)

二、5 件 Neo 必须知道的事(浓缩版)

1. P0-1 — 不需要每日快照,SCD2 视图入口更优雅(0.5 天工作)

F-1 调研结论:

  • 每日参数快照不需要(成本高,数据冗余)
  • SCD2 区间已存在(cfg_index_parameters / cfg_level_price / cfg_performance_tier / cfg_bonus_rules 等 4 张表已有 effective_from/effective_to)
  • 核心裂缝:P20 视图层已加业务日上界,但 ETL 任务直读 dws.cfg_* 裸表绕过视图
  • 修复方案:让所有读取入口走 app.v_cfg_* 视图,3 处 SQL 改造 + 修复一个 NULL 兼容 bug,0.5 天工作量

意外收获:base_dws_task.py:540-581 工资任务 3 个 _load_* 函数不带 effective_from,把所有历史区间行全取出再 Python 挑 — 既是历史 Bug 又是沙箱缺口,需要一并修。

应增加到 P20 SPEC 的 6 处:§1.4 沙箱影响项 / §3.5 NULL 兼容 / §5.6 ETL 读取约定 / AC14-AC15 / §11.2 hack / T16-T17 任务。

2. P0-5 — 24 个偏离点,2 条致命发现

F-2 全项目扫出 24 个工程规范偏离点。最严重的 2 条要立即修(D Bug):

致命 1:4 处"伪 FDW"必坏残留代码

文件:

  • apps/backend/app/routers/tenant_users.py:425, 450
  • apps/backend/app/routers/tenant_excel.py:390, 407
  • apps/backend/app/routers/tenant_clues.py:113-119

症状:

  • get_etl_readonly_connection(site_id) 已经直连 ETL 库
  • 但 SQL 仍写 FROM fdw_etl.*(因为 H2 改造时漏改)
  • 生产必报 schema 不存在,被 try/except 静默吞
  • 接口永远返回空列表,用户看不到错误

与 P0-5 主体同源同性质,但危害更高(因为用户看到的是"空数据"而非"报错")。

修复:每处把 fdw_etl. 改为对应 ETL 库 schema(dwd.app.),不补 FDW(P0-5 主体已结论 FDW 不能用 GUC)。1-2h 工作量

致命 2:JWT aud 缺失,跨端横向越权风险

文件:apps/backend/app/auth/jwt.py

症状:

  • 签发 admin / miniapp token 完全不带 aud 字段
  • decode_access_token 也不校验 aud
  • 只有 tenant-admin 走完整 aud 流程
  • 意味着 admin / 小程序 token 在 payload 层无法区分,跨端横向越权风险
  • CLAUDE.md 规范 R5(JWT 三类 aud 严格隔离)与代码完全脱节

修复:generate_access_tokenaudience= 参数,decode_access_token 校验 aud。2-3h 工作量 + 跨端 token 兼容性测试。

24 偏离点全分布

优先级 数量 主要内容
立即治理 P0 6 4 处 fdw_etl.* 必坏 / JWT aud 缺失 / 测试目录嵌套违规
Wave 协同 6 matching/business_date 透传 / ETL 写连接 / consume_money 划线价 / note_service 调度 / 测试 DSN 加载 / camelCase 一致性
长期治理 5 global_readonly 无 RLS / DWS 双 schema 30+ 缺失 / 飞球 API 硬编码
可接受归档 4 consume_money 零值判定 / SSE 直调 DashScope / tenant_member_id 映射 / demo AGENTS.md
其他 3 (调研中归类)

给 Neo 的核心提问:接受立即治理 6 项进 Wave 1-3 吗?(其中 2 条致命 D Bug 不修会影响生产稳定性 + 安全)

3. P0-7 — 成果层走查严重缺失(已写完整 §15 patch)

P20 SPEC §8 13 条 AC 主要是 SQL/curl 工程层验证,只有零散用户视角点检(AC1/5/7/10)。Neo 强调的:

  • admin-web 6 页 Playwright 实地走 — 0 个 AC 覆盖
  • AIPrewarm 分组 — 0 个 AC
  • 小程序看板沙箱接入(P0-3 主体)— AC 中只字未提
  • 多角色身份切换走查 — 0 个 AC

已产出 P20 § 15 完整 patch(详见 P0-7-spec-acceptance-layer-check.md):

  • §15.1 验证哲学(工程层 vs 成果层)
  • §15.2 admin-web 10 条走查清单
  • §15.3 小程序 10 条走查清单(含 P0-3 看板 3 页必修)
  • §15.4 跨页时间漂移走查
  • §15.5 多角色身份走查 + 看板收口后我主动提醒 Neo 切身份(对齐你的反馈)
  • §15.6 走查产物归档约定

3 个落地选项(等 Neo 选):

  • A 直接补到 P20 §15(推荐,30 分钟)
  • B 单开《沙箱成果层验证手册》
  • C 先列 todos,Wave 1 走查时即时补

4. P0-6 — 已记录两阶段方案

  • 阶段 1 临时止血(1h,Wave 1-3 任意时点):admin-web 加二次确认弹窗 + 输入门店简称
  • 阶段 2 正式重设计(3-5h,P0-7 收口后):拆"全局清空" / "沙箱内清空"语义 + ?scope= query param

详见 P0-6-record.md

5. P0-3 + P0-2 — 已确认,排入 Wave

  • P0-2 BD 手册主源 + 3 处链接 → Wave 5 落地
  • P0-3 看板沙箱接入 → Wave 1 修(等 Wave 0 收尾后,Wave 1 计划基于本轮 P0/P1 反馈更新)

三、按 Wave 重新分配的执行清单(整合两轮 P0)

Wave 主要任务 第二轮新增
Wave 1 P0-3 看板接入(必修) + P0-7 SPEC 投入 + 20 todos(P0×5) + P0-7 §15 成果层走查 + P0-1 SCD2 视图入口改造(0.5 天)+ P0-7 §15 P20 patch 落地
Wave 1-3 P0-6 临时守卫 + P0-8 DBViewer 白名单 + 4 D Bug + 致命 1:4 处 fdw_etl. 残留(1-2h)+ 致命 2:JWT aud 缺失(2-3h)+ 测试目录嵌套违规*
Wave 2 (P1 主体见 P1 总报告) + P0-5 Wave 协同 6 项(matching/ETL 写连接/consume_money 划线价/note_service/测试 DSN/camelCase)
Wave 4 DWS / RLS / 数据正确性 + P0-7 todos(P1×8) (无新增)
Wave 5 P0-1/P0-2/P0-4 文档 + P0-7 todos(P2×7) + P0-5 长期治理 5 项 + 可接受归档 4 项文档化
跨 Wave P1-7 admin API PRD + dev-trace Drop (P1 主体)
P0-6 阶段 2 P0-7 收口后做(等沙箱完成) 沙箱内/全局清空语义重设计

四、给 Neo 的决策提问(本会话剩余可处理的项)

# 问题 类型 我的建议
1 P0-1 接受 SCD2 视图入口方案 + P20 SPEC 加 6 处 patch 路径 Y
2 P0-1 base_dws_task.py 工资任务 3 处 _load_* Bug 是否一并修 Bug 单 Y(独立 P1 Bug,Wave 1-2 修)
3 P0-5 接受 24 偏离点的 4 类分级 校准 Y
4 P0-5 致命 1(4 处 fdw_etl 残留)修复 1-2h 立即进 Wave 1-3 路径 Y(D Bug,影响生产)
5 P0-5 致命 2(JWT aud 缺失)修复 2-3h 立即进 Wave 1-3 路径 Y(D Bug,跨端越权)
6 P0-5 立即治理 6 项 / Wave 协同 6 项 / 长期治理 5 项 / 可接受 4 项 各自纳入哪个 Wave 排程 见 §三 表
7 P0-5 CI 自动化校验建议(静态规则+pre-commit hook+周报)是否落地 工具化 Y(长期投资)
8 P0-7 P20 SPEC §15 成果层走查 落地选 A/B/C 路径 A(直接补到 P20)
9 P0-7 §15.5 多角色身份提醒机制(看板收口后我主动提醒切身份) 协同方式 Y
10 P0-7 §15.2 走查清单是否再加 /tenant-admins / /etl-tasks 范围 Y(补全)

五、产出文件索引(累积)

docs/_overview/04a-feedback/
├── 00-P0-feedback-response-summary.md           (第一轮总报告,Neo 在表格里写斜体二轮反馈)
├── 00-P0-round2-feedback-response-summary.md    (本文)
├── P0-1-SPI-research.md                         (D-1 第一轮)
├── P0-1-sandbox-snapshot-design.md              (F-1 第二轮)
├── P0-2-feedback-resolution.md                  (主线第一轮)
├── P0-3-board-vs-sandbox-analysis.md            (主线第一轮)
├── P0-5-matching-evolution.md                   (D-2 第一轮)
├── P0-5-engineering-consistency-overview.md     (F-2 第二轮)
├── P0-6-record.md                               (主线第二轮)
├── P0-7-runtime-context-todos.md                (D-3 第一轮)
└── P0-7-spec-acceptance-layer-check.md          (主线第二轮)

docs/prd/specs/
└── P20-runtime-context-sandbox.md               (D-3 第一轮 SPEC 草稿)

等 Neo 答这 10 个 Y/N 问题 + 完成 04c 反馈处理,P0 完整收口进入 Wave 实施轨道。