产品需求文档(PRD)

奶茶健康榜单 App — React Native (Expo) 移动端 MVP

项目代号TeaRank / 茶知道
文档版本v1.0
创建日期2026 年 7 月 11 日
目标平台iOS + Android(React Native / Expo)
MVP 周期3-4 周
关联文档CTO_Review.html / milk_tea_brand_nutrition_report.html

一、产品概述

1.1 产品定位

一句话定位:帮助消费者在买奶茶前,3 秒内看懂一杯奶茶的健康真相。

核心理念:不是营养数据库,而是健康决策引擎——把专业营养数据翻译成普通人能理解的购买建议。

1.2 为什么做移动端 App?

维度 原 Web 方案 Native App 方案 选择理由
使用场景 搜索引擎 → 浏览器 排队/点单时打开 App 奶茶消费 90% 发生在手机上,App 更符合场景
体验质感 网页级 原生动画、手势交互 榜单滑动、卡片展开等交互 App 体验更好
离线能力 需网络 本地缓存,无网可用 排队时信号差,离线查看是刚需
推送触达 Push Notification 新品风险提醒、榜单更新推送
SEO 获客 天然优势 需通过社交分享 + 应用商店 ASO 弥补

1.3 目标用户

用户画像 特征 核心需求 使用频率
健康意识型 18-35 岁,关注体重/健身,每周喝 1-3 杯奶茶 想喝但怕胖,需要"最不罪恶"的选择 每次点单前查一下
成分敏感型 对植脂末/反式脂肪酸/咖啡因敏感的消费者 避开特定成分(孕妇避咖啡因、乳糖不耐受等) 尝试新品牌/新品时查询
社交分享型 喜欢在社交媒体分享生活方式 生成好看的健康对比卡片用于分享 周末/约会时

二、MVP 功能范围

2.1 功能优先级矩阵

MVP 原则(源自 CTO 评审):先把"能用"做到极致,而非追求功能全面。MVP 只做 3 件事——看榜单、查单品、懂含义

优先级 功能模块 描述 MVP? 预估工时
P0 首页 / 榜单 展示多维健康榜单(低卡榜、低糖榜、无植脂末榜、咖啡因榜),支持切换榜单类型 V1 必做 3 天
P0 单品详情页 展示单品健康评分、营养雷达图、风险标签、成分解读 V1 必做 3 天
P0 品牌列表页 按品牌浏览所有已收录饮品,展示品牌数据透明度评级 V1 必做 2 天
P1 搜索功能 按饮品名称、品牌搜索,支持拼音/模糊匹配 V1 必做 2 天
P1 健康小贴士 精简版知识卡片(植脂末是什么、咖啡因安全量等),替代 Web 版长文知识库 V1 必做 1 天
P2 饮品对比 选择两款饮品并排对比营养数据 V2 3 天
P2 收藏 / 历史 收藏常喝饮品,记录查看历史 V2 2 天
P2 分享卡片生成 一键生成好看的饮品健康数据卡片图,分享到社交媒体 V2 3 天
P3 扫码查成分 扫描杯身二维码 / 条形码直接跳转饮品详情 V3 5 天
P3 用户提交数据 众包提交品牌未公开的营养数据,社区审核机制 V3 7 天
P3 个性化推荐 设置健康偏好(低糖/低卡/避咖啡因),首页个性化推荐 V3 5 天

三、核心用户故事

3.1 MVP 用户故事(V1 必须实现)

US-01 查看健康榜单
作为一个想喝奶茶又怕胖的用户,我希望打开 App 就能看到低卡/低糖排行榜,这样我可以直接选最健康的那款下单

验收标准:

US-02 查看单品详情
作为一个正在奶茶店排队的用户,我希望点击某个饮品就能看到详细的健康信息和通俗解读,这样我可以在 10 秒内判断这杯奶茶是否值得喝

验收标准:

US-03 按品牌浏览
作为一个特定品牌的常客,我希望能按品牌查看所有已收录的饮品,这样我可以在自己常去的品牌里选出最健康的

验收标准:

US-04 搜索饮品
作为一个知道想喝什么的用户,我希望能搜索具体的饮品名称,这样我可以快速查到它的营养数据

验收标准:

US-05 了解成分含义
作为一个不懂营养学的普通用户,我希望能了解植脂末、反式脂肪酸等成分的含义和风险,这样我可以做出更明智的选择

验收标准:

四、App 信息架构(IA)

4.1 Tab 导航结构

Bottom Tab Navigation (4 个主 Tab)
├── [1] 首页 Home
│   ├── 搜索栏(全局搜索入口)
│   ├── 今日推荐卡片
│   ├── 榜单快捷入口(横向滑动卡片)
│   │   ├── 低卡榜
│   │   ├── 低糖榜
│   │   ├── 低咖啡因榜
│   │   └── 无植脂末榜
│   └── 最新收录饮品
│
├── [2] 榜单 Rankings
│   ├── 榜单分类 Tab(顶部横向 Tab 切换)
│   └── 饮品排行列表(可排序)
│       └── → 点击进入:单品详情页
│
├── [3] 品牌 Brands
│   ├── 品牌网格列表(Logo + 名称 + 收录数)
│   └── → 点击进入:品牌详情页
│       └── 该品牌所有饮品列表
│           └── → 点击进入:单品详情页
│
└── [4] 发现 Discover
    ├── 健康知识卡片列表
    ├── 行业动态(标准更新、品牌公示变化等)
    └── [V2] 对比工具入口

4.2 App 页面流程图

启动 App
  ↓
首页(默认展示低卡榜 Top 5 + 推荐 + 搜索入口)
  ├── 点击搜索 → 搜索结果页 → 单品详情页
  ├── 点击榜单卡片 → 榜单 Tab(定位到对应分类)
  ├── 点击饮品卡片 → 单品详情页
  │    ├── 查看营养数据 + 风险标签
  │    ├── 点击成分术语 → 知识卡片弹窗
  │    ├── [V2] 点击"对比" → 对比页
  │    └── [V2] 点击"分享" → 生成分享卡片
  └── 点击品牌 → 品牌详情页 → 单品详情页

五、核心页面原型描述

5.1 首页 Home

布局:单列垂直滚动

5.2 单品详情页 DrinkDetail

布局:大标题头部 + 数据卡片组

5.3 榜单页 Rankings

布局:顶部分类 Tab + 排行列表

5.4 品牌页 Brands

5.5 发现页 Discover

六、数据模型

6.1 核心数据结构(源自 CTO 评审,针对 App 扩展)

// 饮品 Drink
{
  id: string,              // 唯一标识 "heytea-duoduo-grape"
  brand_id: string,        // 关联品牌
  name: string,            // 饮品名称 "多肉葡萄"
  category: enum,          // 纯茶 | 奶茶 | 果茶 | 咖啡 | 酸奶

  // 营养数据
  calories: number,        // 热量 kcal
  sugar_g: number,         // 含糖量 g
  caffeine_mg: number,     // 咖啡因 mg(可选)
  protein_g: number,       // 蛋白质 g(可选)
  fat_g: number,           // 脂肪 g(可选)
  carbs_g: number,         // 碳水化合物 g(可选)
  trans_fat_g: number,     // 反式脂肪酸 g(可选)

  // 属性标签
  uses_real_milk: boolean | null,  // 是否使用纯奶
  uses_creamer: boolean | null,    // 是否含植脂末
  has_real_tea: boolean | null,    // 是否使用真茶
  sugar_options: string[],         // 可选糖度 ["正常","少糖","半糖","少少糖","不加糖"]

  // 规格
  size_ml: number,         // 杯量 ml
  size_label: string,      // "中杯" | "大杯"
  price_yuan: number,      // 价格 元

  // 评分与标签
  health_score: number,    // 健康评分 0-100(算法计算)
  risk_tags: string[],     // ["高糖","含植脂末","高咖啡因"]

  // 数据来源
  source_type: enum,       // official | third_party | estimated
  source_name: string,     // "喜茶GO小程序" | "上海消保委2024测评"
  updated_at: string,      // ISO 日期

  // App 专用
  thumbnail_url: string,   // 饮品缩略图 URL(可选)
}

// 品牌 Brand
{
  id: string,              // "heytea"
  name: string,            // "喜茶"
  name_en: string,         // "HEYTEA"
  logo_url: string,        // 品牌 Logo
  transparency_tier: number, // 数据透明度 1(最透明) / 2 / 3
  data_summary: string,    // "已公开全线产品营养成分,含第三方检测报告"
  drink_count: number,     // 已收录饮品数量
}

// 知识卡片 KnowledgeCard
{
  id: string,
  title: string,           // "植脂末到底是什么?"
  summary: string,         // 150字以内摘要
  icon: string,            // 图标标识
  related_risk_tags: string[], // 关联的风险标签
}

6.2 健康评分算法(V1 简化版)

评分规则(满分 100):

维度 权重 评分逻辑
热量 25 分 ≤200kcal 满分,每超 50kcal 扣 5 分,≥500kcal 得 0 分
含糖量 25 分 ≤10g 满分,每超 5g 扣 3 分,≥50g 得 0 分
植脂末 20 分 不含 = 20 分,含 = 0 分,未知 = 10 分
脂肪 15 分 ≤5g 满分,每超 5g 扣 5 分
咖啡因 10 分 ≤100mg 满分,每超 50mg 扣 3 分
数据完整性 5 分 字段完整度 bonus,鼓励透明品牌

注:V2 可引入用户可配置权重(如咖啡因敏感人群可调高咖啡因权重)

七、数据采集策略

CTO 评审核心结论:数据获取是整个项目的最大风险。MVP 必须先验证数据可得性。

7.1 MVP 数据范围(基于营养数据调研报告)

批次 品牌 收录数量 数据来源 可行性
第一批 喜茶、霸王茶姬 各 20 款热门产品 官方小程序 + 在线健康计算器 高 — 数据结构化且完整
第二批 奈雪的茶 15 款 官方小程序热量 + ABCD 分级 中 — 有热量但细项不全
第三批 茶百道、沪上阿姨、一点点、茶颜悦色 各 10 款 部分官方 + 消保委报告 中低 — 需要人工整理

MVP 目标:首批 2 个品牌 40 款产品上线,总计收录 5-8 个品牌 100+ 款产品。

7.2 数据存储方案(CTO 评审建议)

阶段 方案 触发迁移条件
MVP 阶段 本地 JSON 文件打包进 App,随版本更新数据
增长阶段 迁移至远程 API(Supabase / 自建后端),App 启动时增量同步 数据超过 300 条 或 需要不发版更新数据
规模阶段 完整后端 + 用户众包提交 + 审核机制 DAU 超过 1000 或 开放用户提交

八、技术方案

8.1 技术选型

层面 技术选择 选择理由
框架 React Native + Expo (SDK 53) 一套代码双端发布;Expo 管理构建和推送;Windows 可开发
导航 Expo Router 基于文件系统的路由,类似 Next.js App Router,学习成本低
UI 组件 NativeWind (Tailwind for RN) 复用 Tailwind 的原子化 CSS 思路,与 CTO 评审的 Tailwind Mobile-first 一致
状态管理 Zustand 轻量、无 boilerplate,适合 MVP 数据量
数据存储(本地) JSON 静态文件 + AsyncStorage MVP 阶段零后端成本,数据打包进 App
搜索 Fuse.js 轻量模糊搜索库,纯前端运行,支持拼音
图表 react-native-svg + 自绘 评分圆环、进度条等简单图表自绘即可,避免重依赖
构建 & 发布 EAS Build + EAS Submit 云构建 iOS/Android,无需 Mac
OTA 更新 EAS Update JS 代码热更新,无需重新上架即可更新数据和 UI

8.2 项目目录结构

tea-rank-app/
├── app/                     # Expo Router 文件路由
│   ├── (tabs)/              # Tab 导航布局
│   │   ├── index.tsx        # 首页 Home
│   │   ├── rankings.tsx     # 榜单页
│   │   ├── brands.tsx       # 品牌页
│   │   └── discover.tsx     # 发现页
│   ├── drink/[id].tsx       # 单品详情页
│   ├── brand/[id].tsx       # 品牌详情页
│   └── search.tsx           # 搜索页
├── components/              # 可复用组件
│   ├── DrinkCard.tsx        # 饮品列表卡片
│   ├── HealthScore.tsx      # 健康评分圆环
│   ├── RiskTag.tsx          # 风险标签
│   ├── NutritionBar.tsx     # 营养数据进度条
│   └── KnowledgeCard.tsx    # 知识卡片
├── data/                    # 静态数据(MVP)
│   ├── drinks.json          # 饮品数据
│   ├── brands.json          # 品牌数据
│   └── knowledge.json       # 知识卡片内容
├── utils/
│   ├── healthScore.ts       # 健康评分算法
│   └── search.ts            # 搜索配置
├── stores/
│   └── appStore.ts          # Zustand 全局状态
└── assets/                  # 图片、字体等静态资源

8.3 关键技术决策

决策 1:MVP 数据打包进 App,不搭建后端

理由:与 CTO 评审建议一致——"静态 JSON 文件,零运维成本"。MVP 阶段 100+ 条饮品数据的 JSON 文件不到 50KB,随 App 发版更新即可。需要频繁更新数据时,通过 EAS Update 做 OTA 推送,不需要用户重新下载 App。

决策 2:对比功能从 MVP 中砍掉

理由:CTO 评审明确指出对比功能开发成本高、初期价值有限。V1 聚焦榜单和单品详情,V2 再加对比。

决策 3:不做用户登录系统

理由:MVP 阶段用户无需注册。收藏功能(V2)使用设备本地存储。用户系统等到需要众包提交数据(V3)时才引入。

九、UI/UX 设计规范

9.1 设计原则

  1. 3 秒原则:用户打开 App 后 3 秒内能看到有价值的信息
  2. 色彩即信息:红黄绿色彩分级贯穿全 App,降低认知负担
  3. 数据可信赖:每一条数据都标注来源,不让用户猜
  4. 移动原生:大按钮、滑动交互、底部导航,符合手机操作习惯

9.2 色彩体系

用途 色值 含义
主品牌色 #059669 (Emerald 600) 健康、自然、可信赖
健康/安全 #16a34a (Green 600) 评分 ≥ 70、安全成分
警示/中等 #d97706 (Amber 600) 评分 40-69、注意成分
危险/高风险 #dc2626 (Red 600) 评分 < 40、风险标签
背景色 #f8fafc (Slate 50) 浅灰背景
正文色 #1e293b (Slate 800) 高对比正文

9.3 组件规范

组件 规格
饮品卡片(列表项) 高度 80px,左侧排名/Logo,中间名称+品牌,右侧评分色块+关键指标
健康评分圆环 直径 120px(详情页)/ 40px(列表),动画填充,数字居中
风险标签 圆角 Chip,红底白字,高度 24px,最多显示 3 个,超出折叠
营养数据条 水平进度条,背景灰,填充色随占比变化(绿→黄→红)
底部 Tab Bar 4 个 Tab,图标 + 文字标签,选中态为品牌色

十、非功能需求

类别 要求 说明
性能 冷启动 ≤ 2 秒,列表滚动 60fps 数据本地化,无网络延迟
离线可用 100% 核心功能离线可用 MVP 数据打包进 App,无需网络
包体积 Android APK ≤ 25MB,iOS ≤ 30MB 控制图片资源,JSON 数据几乎不占空间
适配 iOS 15+ / Android 10+ 覆盖 95%+ 活跃设备
无障碍 VoiceOver / TalkBack 基础支持 所有可交互元素添加 accessibilityLabel
国际化 MVP 仅支持简体中文 V2 考虑繁体中文
数据合规 标注数据来源、不存储用户个人数据 MVP 无账号系统,无隐私数据收集

十一、MVP 开发路线图

阶段 任务 交付物 周期
Phase 0
数据准备
  • 手动采集喜茶 + 霸王茶姬各 20 款热门饮品数据
  • 整理为 JSON 格式,定义数据 Schema
  • 计算健康评分并人工校验
  • 撰写 7 张知识卡片内容
drinks.json
brands.json
knowledge.json
3-5 天
Phase 1
核心框架
  • 初始化 Expo 项目,配置 NativeWind
  • 搭建 Tab 导航 + 路由结构
  • 实现首页布局(搜索栏 + 榜单入口 + 推荐)
  • 实现饮品列表卡片组件
App 骨架可运行
首页可交互
3-4 天
Phase 2
核心页面
  • 实现榜单页(4 个榜单分类 + 排行列表)
  • 实现单品详情页(评分圆环 + 营养数据 + 风险标签 + 来源标注)
  • 实现品牌列表页 + 品牌详情页
  • 接入 Fuse.js 实现搜索功能
全部 V1 页面可用 5-7 天
Phase 3
打磨 & 内容
  • 实现发现页(知识卡片)
  • 补充第二/三批品牌数据
  • UI 打磨:动画、过渡、空状态
  • 添加 App 图标、启动画面
完整 MVP 体验 3-4 天
Phase 4
测试 & 发布
  • 真机测试(Android + iOS via Expo Go)
  • EAS Build 构建 Android APK
  • 内部分发测试
  • (可选)上架 Google Play / App Store
可安装 APK
App Store 提审
2-3 天

总计 MVP 周期:3-4 周(Phase 0 可与 Phase 1 并行推进)

最快路径:先只做喜茶 + 霸王茶姬 2 个品牌、Android APK 内部测试 → 最快 2 周可用

十二、后续版本规划

版本 核心功能 触发条件
V2
  • 饮品对比功能(两款并排比较)
  • 收藏 & 浏览历史(本地存储)
  • 分享卡片生成(社交裂变)
  • EAS Update OTA 数据热更新
  • 更多品牌数据(8-12 个品牌)
MVP 验证用户留存 > 20%
V3
  • 用户账号系统
  • 众包数据提交 + 审核
  • 个性化偏好设置(低糖/低卡/避咖啡因模式)
  • 扫码查成分(相机扫描杯身二维码)
  • Push 推送(新品风险提醒、榜单更新)
  • 后端 API 迁移(Supabase / 自建)
DAU > 1000 或数据量 > 500

十三、风险与应对策略

等级 风险 影响 应对策略
数据获取困难 大部分品牌不公开营养数据,平台内容空洞 MVP 聚焦数据最透明的 2-3 个品牌;利用消保委等第三方报告补充;明确标注"数据缺失"而非不展示
数据准确性争议 品牌方或用户质疑数据真实性 每条数据标注来源和时间;优先使用官方公示数据;使用"估算值"标签标注非官方数据
获客难度(无 SEO) App 无法通过搜索引擎自然获客 设计社交分享卡片促进裂变;应用商店 ASO 优化;小红书/抖音内容营销;考虑同步上线 H5 落地页做 SEO
iOS 发布门槛 需要 Apple 开发者账号($99/年)+ 审核周期 MVP 先发 Android APK 直接分发;iOS 先用 Expo Go 开发预览;用户量验证后再投入 iOS 上架
数据时效性 品牌新品/配方调整导致数据过时 标注数据更新时间;通过 EAS Update 做 OTA 数据更新;V3 引入用户反馈机制
法律合规风险 品牌方投诉数据使用 仅使用公开数据 + 第三方检测报告;标注"仅供参考"声明;不做商业评价只做数据展示

十四、MVP 验收标准

MVP 上线 Checklist

十五、成功指标(上线后 30 天)

指标 目标 衡量方式
安装量 ≥ 200 APK 下载 + App Store 安装
次日留存率 ≥ 25% 第二天再次打开 App 的用户比例
人均查看饮品数 ≥ 5 款/次 单次会话中查看单品详情的次数
核心流程完成率 ≥ 60% 从首页进入 → 查看某款饮品详情的转化率
用户反馈 收集 ≥ 20 条 内嵌反馈入口 / 社群收集