cross-platform-products-ai-.../docs/review-DevelopmentPlan-codex.md

7.4 KiB
Raw Permalink Blame History

DevelopmentPlan.md 审阅报告

  • 审阅对象:docs/DevelopmentPlan.md
  • 文档版本Draft v0.2
  • 审阅时间2026-04-02
  • 审阅人Codex

1. 总体结论

当前版本的 DevelopmentPlan.md 还不能作为研发实施基线直接使用,核心问题不在于章节不完整,而在于最关键的实施假设选错了方向。

文档当前把 MVP 建立在“本地部署 + 用户端执行受控浏览器抓取”的前提上,这会把采集执行、会话管理、排障、热修、效率优化和运维能力全部绑定到用户设备,既不利于稳定性,也不利于后续扩大任务量。对这个项目来说,真正需要优先冻结的不是“前端本地还是网页”,而是“采集执行统一放在哪里、默认走哪条采集路径、浏览器自动化在体系中处于什么角色”。

如果要把本项目做成可持续迭代的商品分析工作台,建议把开发计划改为以下基线:

  1. 采集执行统一放在后端服务器,不在用户端运行抓取任务。
  2. 采集路线采用“API 优先、浏览器兜底”,而不是“浏览器为主、接口为辅”。
  3. 受控浏览器的职责收敛为三类登录与人工介入、接口发现与回放辅助、API 路径失效时的最终兜底。
  4. 开发排期先验证三平台接口可行性与能力矩阵,再决定每个平台每个能力点最终落在哪一层采集策略上。

2. 当前版本的主要问题

2.1 抓取执行位置判断错误

当前文档把 Playwright 调度、本地会话恢复和任务执行都放在用户端机器,这个决策会带来四个直接问题:

  1. 无法统一控制采集环境,排障和热修成本高。
  2. 无法集中管理平台限流、重试、代理、观测和审计。
  3. 会话、浏览器版本、网络环境和系统依赖都受用户设备影响,稳定性不可控。
  4. 后续一旦要提升并发或加入协作能力,几乎要重做采集层。

对这类任务型分析系统来说,前端可以是网页,但采集执行应统一放在后端受控环境。

2.2 对“如何爬取”讨论过浅

当前版本虽然写了 Playwright + Adapter,但没有真正回答以下核心实施问题:

  1. 搜索、商品详情、评论抓取分别优先走接口、HTML 内嵌数据还是浏览器 DOM。
  2. 每个平台是否有可复用的接口路由、签名参数、请求头和 Cookie 约束。
  3. 接口失败时如何逐级降级,而不是直接切到全浏览器抓取。
  4. 浏览器在体系中是主通路、辅助通路还是最后兜底。

这部分如果不补齐,研发团队会默认走“先用浏览器抓通,再慢慢优化”,最终大概率得到一个能跑但成本高、速度慢、维护重的版本。

2.3 技术栈与部署形态不再匹配

当前文档选用 SQLite、本地 Fastify 服务和本地加密会话方案,这套组合适合单机工具,不适合后端统一执行采集任务的服务架构。一旦采集放到服务端,至少要重估以下基础设施:

  1. 元数据存储是否切到 PostgreSQL
  2. 任务编排是否引入 Redis + BullMQ 或同类队列。
  3. 原始抓取产物是否放到对象存储,而不是本地文件。
  4. 会话密钥是否放到服务端密钥管理,而不是依赖用户系统密钥链。

2.4 缺少“能力矩阵 + 采集策略矩阵”

当前文档把三平台视为统一适配对象,但在实际实施中,至少要按“平台 x 能力”拆开定义:

  1. 搜索
  2. 商品详情
  3. 评论
  4. 登录与会话恢复
  5. 阻塞恢复

每一项能力都应明确优先策略、备选策略、是否依赖会话、是否依赖浏览器、是否可缓存、预期耗时。没有这张矩阵,后续排期无法真实反映风险。

2.5 缺少效率目标与策略命中率目标

当前文档只保留了任务总耗时 P50 <= 20 分钟,但没有拆解出采集层自身的效率目标,例如:

  1. API 路径命中率目标
  2. 全浏览器兜底占比目标
  3. 单平台搜索耗时目标
  4. 单链接商品详情抓取耗时目标
  5. 评论抓取吞吐目标

没有这些中间指标,团队会到联调后才发现总耗时超标,却无法判断问题到底出在搜索、评论、浏览器阻塞还是 AI 分析。

2.6 P0 中遗漏了删除、留存和旧版本回看实现项

当前文档提到了 30/90 天留存、报告版本快照和历史任务回看,但没有把“任务级删除”“旧版本切换回看”“留存清理作业”明确拆进模块和阶段计划。这会导致这些能力在后期被当作补丁需求,而不是 MVP 的一部分。

3. 建议的修订方向

建议把 DevelopmentPlan.md 按下面四条主线重写。

3.1 先改架构基线

把产品实施基线改为:

  1. Web 前端负责任务创建、结果确认、会话处理入口和报告查看。
  2. 后端 API 和任务引擎统一调度采集、标准化、聚合和 AI 分析。
  3. API 采集 Worker 与 Browser Fallback Worker 分离部署。
  4. 所有抓取、会话恢复、日志和审计统一发生在后端受控环境。

3.2 把采集策略改成分层模型

建议采用四层策略,从高效率到低效率依次尝试:

  1. 直接调用平台页面背后的接口。
  2. 解析 HTML/SSR/Hydration 中的结构化数据。
  3. 通过浏览器辅助发现接口,再回放请求。
  4. 在前三级不可行时,再使用完整浏览器 DOM 抓取。

3.3 把阶段计划改成“先验证采集可行性,再做产品闭环”

相比旧版“先搭前端和本地服务,再跑通一个平台”,更合适的顺序是:

  1. 先做三平台采集能力调研和能力矩阵。
  2. 先跑通一个平台的 API 优先闭环。
  3. 再补浏览器兜底与人工介入方案。
  4. 最后再做多平台扩展、报告版本和试运行。

3.4 把效率和稳定性写成正式验收项

建议新增以下开发与试运行指标:

  1. API 优先路径命中率
  2. 浏览器全量兜底占比
  3. 单平台搜索 P50
  4. 单链接详情抓取 P50
  5. 评论抓取吞吐与失败率
  6. 平台级重试成功率

4. 建议直接补进下一版 DevelopmentPlan 的重点条款

模块 建议补充条款
产品形态 采集执行统一在后端服务器;用户端只承载交互和人工介入入口
采集策略 明确 API -> Hydration -> Browser Replay -> Browser DOM 的分层路由
会话管理 用户通过远程受控浏览器处理登录;服务端保存加密会话快照;不保存账号密码
任务编排 采用服务端队列与 Worker 池;区分 API Worker 和 Browser Worker
存储 元数据、原始产物、证据快照、会话状态分层存储
研发计划 第一阶段先产出平台能力矩阵与单平台 API PoC不再默认以 Playwright 打头
验收标准 新增 API 命中率、浏览器兜底占比、删除与留存、旧版本切换回看等验收项

5. 最终判断

这份 DevelopmentPlan.md 的结构框架是可用的,但最重要的实施假设需要调整。当前版本适合“本地工具型采集器”,不适合作为“后端统一执行、强调效率和可维护性”的研发基线。

要进入下一阶段,建议先完成两件事:

  1. 重写 docs/DevelopmentPlan.md把采集执行迁移到后端服务器并把“API 优先、浏览器兜底”写成正式路线。
  2. 在下一轮同步检查 docs/PRD.mddocs/FeatureSummary.md 中关于“本地部署/用户端执行”的表述,避免上游与下游文档脱节。