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

144 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# `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.md``docs/FeatureSummary.md` 中关于“本地部署/用户端执行”的表述,避免上游与下游文档脱节。