kol-insight/doc/review-PRD-claude.md
zfc ac0f086821 feat(init): 完成 Phase 1 基础架构搭建
- 完成 T-001A: 前端项目初始化 (Next.js 14 + TypeScript + Tailwind CSS)
- 完成 T-001B: 后端项目初始化 (FastAPI + SQLAlchemy + asyncpg)
- 完成 T-002: 数据库配置 (KolVideo 模型 + 索引 + 测试)
- 完成 T-003: 基础 UI 框架 (Header/Footer 组件 + 品牌色系)
- 完成 T-004: 环境变量配置 (前后端环境变量)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-28 14:26:46 +08:00

177 lines
7.6 KiB
Markdown
Raw Permalink 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.

# PRD 评审报告
## 概要
| 项目 | 内容 |
|------|------|
| 评审时间 | 2026-01-28 21:30 |
| 目标文档 | doc/PRD.md |
| 参照文档 | doc/RequirementsDoc.md |
| 问题统计 | 3 个严重 / 2 个一般 / 3 个建议 |
## 一致性检查
### 需求覆盖分析
| RequirementsDoc 需求项 | PRD 对应位置 | 状态 |
|------------------------|--------------|------|
| 批量查询 KOL 视频数据 | US-001, US-002, US-003 | ✅ 已覆盖 |
| 支持星图ID精准查询 | US-001 / 3.2.1节 | ✅ 已覆盖 |
| 支持达人unique_id精准查询 | US-002 / 3.2.1节 | ✅ 已覆盖 |
| 支持达人昵称模糊查询 | US-003 / 3.2.1节 | ✅ 已覆盖 |
| 计算预估自然CPM | US-004 / 3.2.2节 | ⚠️ 部分覆盖(缺少公式) |
| 计算预估自然看后搜 | US-004 / 3.2.2节 | ⚠️ 部分覆盖(缺少公式) |
| 计算预估自然看后搜成本 | US-004 / 3.2.2节 | ⚠️ 部分覆盖(缺少公式) |
| 数据导出 | US-005 / 3.2.4节 | ✅ 已覆盖 |
| 调用品牌API获取品牌名称 | - | ❌ 未覆盖 |
| 技术栈Next.js + PostgreSQL | 7.1节 | ✅ 已覆盖 |
| 部署方式Docker / PM2 | 7.1节 | ✅ 已覆盖 |
### 差异说明
PRD 新增但 RequirementsDoc 未明确提及的内容:
1. **用户角色定义**2.1节):细化了"运营人员"和"投放优化师"两个角色,这是对原始需求的合理扩展
2. **用户旅程设计**2.3节):可视化了用户操作流程,增强了需求理解
3. **里程碑规划**第8章增加了MVP和v1.1两个阶段规划
4. **风险评估**第9章识别了数据同步延迟、性能问题等风险
**评估**: 以上新增内容均为合理的 PRD 扩展,有助于后续开发和实施。
## 问题清单
### 严重问题 (Critical)
> 必须修复,否则影响后续文档生成
1. **[位置: [doc/PRD.md:199](doc/PRD.md#L199)]** 缺少外部品牌API依赖说明
- 现状PRD 第6章"接口需求"中仅提及 PostgreSQL未说明需要调用外部品牌API
- 与 RequirementsDoc 的差异RequirementsDoc 明确说明"合作品牌要使用合作品牌id 调用另一个API查找 https://api.internal.intelligrow.cn/docs#/%E4%BA%91%E5%9B%BE/get_yuntu_cookies_v1_yuntu_get_cookie_get /v1/yuntu/brands/{brand_id}"
- 建议:在 6.1 外部接口表格中增加品牌API行
```
| 品牌API | 根据品牌ID获取品牌名称 | https://api.internal.intelligrow.cn/v1/yuntu/brands/{brand_id} |
```
2. **[位置: [doc/PRD.md:273](doc/PRD.md#L273)]** 输出字段映射不完整
- 现状附录B中大部分输出字段的"字段名"列标记为"-",缺少数据库字段映射
- 影响:开发人员无法知道如何从数据库获取这些数据
- 建议:补全所有输出字段对应的数据库字段名,参考 RequirementsDoc 中的字段定义
3. **[位置: [doc/PRD.md:114](doc/PRD.md#L114)]** 计算公式缺失
- 现状3.2.2节"数据计算模块"仅描述了功能,未给出具体计算公式
- 与 RequirementsDoc 的差异RequirementsDoc 明确了三个公式:
- 预估自然CPM = estimated_video_cost / natural_play_cnt * 1000
- 预估自然看后搜人数 = natural_play_cnt / total_play_cnt * after_view_search_uv
- 预估自然看后搜人数成本 = estimated_video_cost / 预估自然看后搜人数
- 建议:在 3.2.2 节的"描述"列或"验收标准"列中添加完整的计算公式
### 一般问题 (Major)
> 建议修复,可提升文档质量
1. **[位置: [doc/PRD.md:119](doc/PRD.md#L119)]** 术语不一致
- 问题PRD 使用"预估自然看后搜"RequirementsDoc 使用"预估自然看后搜人数"
- 影响:可能导致理解偏差(是次数还是人数)
- 建议:统一术语为"预估自然看后搜人数",与计算公式中使用的 after_view_search_uv用户数概念一致
2. **[位置: [doc/PRD.md:168](doc/PRD.md#L168)]** 数据模型与计算公式不匹配
- 问题5.1节数据模型中未列出计算公式所需的关键字段:
- estimated_video_cost预估视频价格- 已在5.2中提及
- natural_play_cnt自然曝光数- 已在5.1中提及
- total_play_cnt总曝光数- 已在5.1中提及
- after_view_search_uv看后搜人数- 未明确提及字段名
- 建议:在 5.1 数据模型图中补充这些关键字段的明确字段名
### 改进建议 (Minor)
> 可选优化项
1. **[位置: [doc/PRD.md:262](doc/PRD.md#L262)]** 术语表可补充
- 建议:在术语表中补充以下术语:
- natural_play_cnt自然曝光次数
- estimated_video_cost预估视频价格
- after_view_search_uv看后搜用户数
2. **[位置: [doc/PRD.md:164](doc/PRD.md#L164)]** 数据需求可细化
- 建议:补充数据库表名(如 videos 或 kol_videos
- 建议补充关键字段的索引建议star_id, star_unique_id, star_nickname
3. **[位置: [doc/PRD.md:208](doc/PRD.md#L208)]** 内部接口设计
- 建议:虽然标注"待补充"但可以在此阶段先列出核心API端点
- POST /api/query - 批量查询接口
- GET /api/export - 数据导出接口
## 用户故事评估
| 评估项 | 结果 |
|--------|------|
| 用户故事总数 | 7 个 |
| 符合格式规范 | 7 / 7 ✅ |
| 有验收标准 | 7 / 7 ✅ |
| 关联功能点 | 7 / 7 ✅ |
| 优先级划分 | 明确P0/P1/P2✅ |
### 用户故事质量评价
**优点**:
- ✅ 所有用户故事都有唯一IDUS-001 ~ US-007
- ✅ 格式规范,符合"作为{角色},我想要{功能},以便{价值}"结构
- ✅ 验收标准清晰、可测试
- ✅ 优先级划分合理核心查询和计算功能为P0
**无明显问题**
## 评审结论
**需修改后通过**
### 结论说明
PRD 整体质量较好,功能需求覆盖完整,用户故事设计规范,文档结构清晰。但存在以下关键问题需要修复:
1. **外部API依赖缺失**未说明需要调用品牌API获取品牌名称这是实现完整功能的必要依赖
2. **计算公式缺失**:开发人员需要明确的计算公式来实现预估指标
3. **字段映射不完整**:输出字段与数据库字段的映射关系不明确
修复上述3个严重问题后PRD 可以作为下一阶段FeatureSummary、UIDesign、DevelopmentPlan的基础文档。
### 下一步行动
- [ ] **必须**:在 6.1 节补充品牌API外部接口说明
- [ ] **必须**:在 3.2.2 节补充完整的计算公式
- [ ] **必须**在附录B中补全所有输出字段的数据库字段名
- [ ] **建议**:统一"预估自然看后搜"术语为"预估自然看后搜人数"
- [ ] **建议**:在 5.1 数据模型中明确标注计算公式所需字段的字段名
---
## 附录RequirementsDoc 原始需求对照
为便于对比,以下是 RequirementsDoc 中的核心需求要点:
### 功能需求
- 批量查询 KOL 视频数据
- 支持星图ID、达人unique_id、达人昵称搜索
- 计算预估自然CPM、看后搜成本等指标
- 数据导出
### 查询规则
- 星图ID → 匹配 star_id 字段(精准匹配)
- 达人unique_id → 匹配 star_unique_id 字段(精准匹配)
- 达人昵称 → 模糊匹配 star_nickname 字段(包含匹配)
### 计算公式
```
预估自然CPM = estimated_video_cost / natural_play_cnt * 1000
预估自然看后搜人数 = natural_play_cnt / total_play_cnt * after_view_search_uv
预估自然看后搜人数成本 = estimated_video_cost / 预估自然看后搜人数
```
### 外部依赖
- 品牌API: `/v1/yuntu/brands/{brand_id}`
- 用途根据合作品牌ID查询品牌名称
### 技术栈
- Next.js (App Router)
- PostgreSQL
- Docker / PM2