# FocusBuddy MVP 上线清单

**目标**: 4 周内完成可上线版本
**策略**: 最小可行 → 快速上线 → 迭代优化
**创建日期**: 2025年11月22日

---

## 一、MVP 功能精简建议 ⚠️

### 1.1 必须保留（核心价值）

| 功能 | 优先级 | 理由 |
|------|--------|------|
| ✅ 一键开始专注（25分钟固定） | P0 | 降低选择成本 |
| ✅ "I got distracted" 按钮 | P0 | 核心差异化功能 |
| ✅ 4种分心分类 | P0 | 提供情感支持 |
| ✅ 鼓励文案反馈 | P0 | 体现"温柔"定位 |
| ✅ 简单完成统计 | P0 | 提供成就感 |

### 1.2 建议延后（V1.1 迭代）

| 功能 | 延后理由 | 替代方案 |
|------|---------|---------|
| ⏸️ 时长滑动调整（5-60分钟） | 增加开发复杂度 | 固定25分钟 + 设置页预设3个选项 |
| ⏸️ 白噪音播放 | 需要音频资源采购 + 测试 | V1.0 不实现，聚焦核心体验 |
| ⏸️ PDF 报告导出 | 复杂度高，用户需求待验证 | 先用截图分享替代 |
| ⏸️ 成就徽章动画 | 需要 Lottie 资源 | 简化为静态图标 + 文字 |
| ⏸️ 每周趋势图表 | 需要图表库 | 仅显示"今日总时长" |

### 1.3 MVP 最小功能集（3个核心页面）

**页面1: Home Screen**
- 大按钮: "Start Focusing (25 min)"
- 小字提示: "Tap 'I got distracted' anytime — no guilt."
- 底部导航: History | Settings

**页面2: Focus Screen**
- 倒计时: 24:37
- 按钮: "I got distracted" (弹出4选项)
- 按钮: "Pause" | "Stop"

**页面3: Complete Screen**
- 标题: "You focused for 24 minutes"
- 今日统计: "Total today: 47 mins | Distractions: 2"
- 鼓励语: 随机一条
- 按钮: "Start Another"

**附加页面（简化版）:**
- History: 仅显示当天记录（列表）
- Settings: 默认时长选择 | 隐私政策链接 | 去广告按钮

---

## 二、技术实现优化建议

### 2.1 依赖包精简（减少集成风险）

**必须集成:**
```yaml
dependencies:
  flutter: sdk
  hive: ^2.2.3              # 本地存储
  hive_flutter: ^1.1.0
  flutter_local_notifications: ^17.0.0  # 计时完成通知
  path_provider: ^2.1.0     # 存储路径
```

**暂缓集成（V1.1）:**
```yaml
# workmanager: ^0.5.2       # 后台任务（MVP 不需要）
# lottie: ^3.0.0            # 动画（用静态图标替代）
# just_audio: ^0.9.36       # 音频（延后）
# pdf: ^3.10.0              # 报告导出（延后）
```

**广告延后到 V1.0.1:**
```yaml
# google_mobile_ads: ^4.0.0  # 先上架审核通过再加广告
```

### 2.2 数据结构简化

```dart
// 最小可行数据模型
@HiveType(typeId: 0)
class FocusSession {
  @HiveField(0)
  DateTime startTime;

  @HiveField(1)
  int durationMinutes;  // 实际专注时长

  @HiveField(2)
  int distractionCount; // 分心次数（简化为计数）

  @HiveField(3)
  bool completed;       // 是否完成
}

// V1.1 再扩展详细分心类型
```

### 2.3 动画简化策略

| 原设计 | MVP 简化方案 | 节省开发时间 |
|--------|-------------|-------------|
| Lottie 粒子背景 | 纯色背景 + CSS 渐变 | 1天 |
| 计时器呼吸动画 | 静态显示 | 0.5天 |
| 成就徽章弹出 | 简单文字卡片淡入 | 1天 |
| 底部弹窗拖拽 | 标准 showModalBottomSheet | 0.5天 |

**总计节省: 3天开发时间**

---

## 三、上线前必备清单

### 3.1 应用商店准备

#### iOS App Store
- [ ] **开发者账号** ($99/年，需提前注册)
- [ ] **App 图标** 1024×1024 (无透明通道，必须)
- [ ] **截图** 至少3张 (6.5" iPhone)
  - 建议: Home页 | Focus页 | Complete页
- [ ] **隐私政策链接** (托管在 GitHub Pages)
- [ ] **应用描述** (英文，150-200字)
- [ ] **关键词** (最多100字符)
  - 建议: focus,timer,pomodoro,gentle,ADHD,productivity,neurodivergent

#### Google Play Store
- [ ] **开发者账号** ($25 一次性)
- [ ] **App 图标** 512×512
- [ ] **截图** 至少2张 + 1张横幅图 (可选)
- [ ] **隐私政策链接**
- [ ] **内容分级问卷** (选择 "Everyone")
- [ ] **短描述** (80字) + 完整描述 (4000字)

### 3.2 合规文档（必须完成）

**优先级 P0:**
- [x] [privacy-policy.md](privacy-policy.md) - 需填写开发者信息
- [ ] **Terms of Service** (服务条款) - 简单版即可
- [ ] **Support Email** (必须可用)
  - 建议: focusbuddy.support@gmail.com

**模板待补充:**
- [ ] 应用商店描述文案（中英文）
- [ ] 关键词优化列表
- [ ] ASO 元数据表格

### 3.3 测试清单（上线前必测）

#### 功能测试
- [ ] 计时器倒计时准确（误差 < 1秒/分钟）
- [ ] "I got distracted" 不中断计时
- [ ] 数据持久化（关闭 App 重开数据仍在）
- [ ] 完成后统计正确（时长 + 分心次数）
- [ ] 暂停/恢复功能正常

#### 平台测试
- [ ] iOS 真机测试（至少1台，推荐 iPhone 12+）
- [ ] Android 真机测试（至少2台不同品牌）
- [ ] 适配刘海屏/水滴屏
- [ ] 横竖屏切换不崩溃

#### 边界测试
- [ ] 计时到0秒时行为正常
- [ ] 快速点击按钮不崩溃
- [ ] 本地存储达到上限时处理（建议保留最近100条）
- [ ] 系统通知权限被拒绝时提示

#### 性能测试
- [ ] 内存占用 < 100MB
- [ ] 冷启动时间 < 2秒
- [ ] 电池消耗正常（1小时专注 < 5%电量）

---

## 四、风险预警与应对

### 4.1 高风险项（可能导致延期）

| 风险 | 概率 | 影响 | 预防措施 |
|------|------|------|---------|
| **iOS 审核被拒** | 60% | 延期1-2周 | 提前研读 [App Store 审核指南](https://developer.apple.com/app-store/review/guidelines/)，避免医疗声明 |
| **AdMob 账号被封** | 30% | 收入归零 | MVP 先不集成广告，等有用户再加 |
| **Flutter 版本兼容问题** | 40% | 延期3-5天 | 使用稳定版 Flutter 3.16+，依赖包固定版本 |
| **真机测试发现严重 Bug** | 50% | 延期1周 | 第2周即开始真机测试，不要等到最后 |

### 4.2 应对策略

**Plan A (理想):** 4周完成上线
**Plan B (现实):** 5-6周完成（预留缓冲）
**Plan C (保底):** 先上架 Android（审核更快），iOS 延后

---

## 五、MVP 开发路线图（调整版）

### Week 1: 核心框架 + 基础 UI
**目标:** 能跑通主流程，无需完美

- Day 1-2: Flutter 环境搭建 + 项目初始化
  - 创建项目结构（参考 [ui-design-spec.md](ui-design-spec.md:589-619)）
  - 集成 Hive + 配置主题色
- Day 3-4: Home 页 + Focus 页 UI
  - 硬编码数据，先实现布局
  - 按钮可点击，无实际逻辑
- Day 5-7: 计时器核心逻辑
  - 倒计时功能（使用 `Timer.periodic`）
  - 暂停/恢复/停止
  - **里程碑:** 能完整跑一次25分钟计时

### Week 2: 数据持久化 + 分心记录
**目标:** 数据能保存和读取

- Day 8-9: Hive 数据存储
  - 定义 FocusSession 模型
  - 保存到本地数据库
- Day 10-11: 分心按钮 + Bottom Sheet
  - 4种分心类型选择
  - 点击后显示鼓励文案（Toast）
- Day 12-14: Complete 页 + 统计逻辑
  - 显示当次专注时长
  - 计算今日总时长和分心次数
  - **里程碑:** 能看到历史数据

### Week 3: 设置页 + 通知 + 真机测试
**目标:** 功能完整，开始测试

- Day 15-16: Settings 页面
  - 3个预设时长选择（15/25/45分钟）
  - 去广告按钮（占位，不实现）
  - 隐私政策链接
- Day 17-18: 本地通知
  - 计时完成时弹通知
  - 处理权限请求
- Day 19-21: 真机测试 + Bug 修复
  - iOS 和 Android 各测至少2轮
  - 修复崩溃和明显 Bug
  - **里程碑:** 可以交给朋友测试

### Week 4: 上架准备 + 提交审核
**目标:** 提交 App Store 和 Play Store

- Day 22-23: 应用图标 + 截图制作
  - 设计工具: Figma / Canva
  - 准备所有尺寸资源
- Day 24-25: 商店页面填写
  - 撰写应用描述（参考竞品）
  - 上传隐私政策到 GitHub Pages
- Day 26: iOS 提交审核
  - 打包 IPA + 上传 App Store Connect
  - 提交审核（通常需要1-3天）
- Day 27: Android 提交审核
  - 打包 AAB + 上传 Google Play Console
  - 提交审核（通常需要1-7天）
- Day 28: 缓冲时间
  - 处理审核反馈
  - 准备推广素材

---

## 六、产品设计补充建议

### 6.1 增加的必要功能

#### 1. Onboarding 引导页（首次启动）
**为什么需要:**
- 解释 "I got distracted" 按钮的独特价值
- 降低新用户困惑

**设计（2-3页滑动）:**
```
页面1:
标题: "Focus without guilt"
说明: "This app is different — it won't punish you for losing focus."

页面2:
标题: "Tap when you get distracted"
说明: "We'll gently remind you to come back. No shame, no stress."

页面3:
标题: "Track your progress"
说明: "See how you're improving, one session at a time."
[Get Started]
```

**实现:**
- 使用 `SharedPreferences` 存储是否首次启动
- 使用 `PageView` 实现滑动
- **开发时间:** 1天

#### 2. 空状态提示（History 页无数据时）
**当前问题:** 首次使用时 History 是空的，用户不知道发生了什么

**建议设计:**
```
┌─────────────────────────────────┐
│                                 │
│         📊                      │
│                                 │
│   No focus sessions yet         │
│                                 │
│   Start your first session      │
│   to see your progress here!    │
│                                 │
│   [Start Focusing]              │
│                                 │
└─────────────────────────────────┘
```

#### 3. 后台计时提醒
**当前问题:** 用户切到其他 App 可能忘记正在计时

**建议实现:**
- 进入后台时显示系统通知: "Focus session in progress — 12:34 remaining"
- 使用 `flutter_local_notifications` 持续更新
- **开发时间:** 0.5天

#### 4. 计时完成后的行为
**当前缺失:** 用户看到 Complete 页后，下一步做什么？

**建议增加:**
- "Take a 5-min break" 按钮（开始休息倒计时）
- "Start another session" 按钮（直接开始）
- "View history" 按钮（查看统计）

### 6.2 文案优化

#### 当前问题
部分文案过于书面，不够"温柔"

**建议修改:**
| 原文案 | 优化后 | 理由 |
|--------|--------|------|
| "Focus Complete" | "Nice work!" | 更口语化 |
| "Distractions: 2 times" | "Got distracted 2 times — that's okay!" | 强化无惩罚感 |
| "Total today: 47 mins" | "You've focused for 47 mins today" | 更个人化 |

#### 增加失败场景文案
**场景:** 用户点击 "Stop" 提前结束

**当前:** 无提示
**建议:**
```
弹窗:
"Want to stop early?
That's totally fine — you still focused for 12 minutes!"

[Yes, stop]  [Keep going]
```

### 6.3 成就系统简化（MVP 版）

#### 原方案问题
主题皮肤需要大量设计资源 + 广告收益不确定

**MVP 替代方案: 文字徽章**
```dart
// 简单的里程碑系统
Map<int, String> achievements = {
  1: "🌱 First Step",          // 完成第1次
  5: "🔥 Getting Started",     // 完成第5次
  10: "⭐ Steady Focus",       // 完成第10次
  25: "💪 Focus Champion",     // 完成第25次
  50: "🏆 Focus Master",       // 完成第50次
};
```

**显示方式:**
- 完成时弹出简单卡片
- Settings 页显示已解锁徽章列表
- **开发时间:** 0.5天（比主题系统节省2-3天）

---

## 七、商业化路径（上线后）

### 7.1 MVP 上线策略（免费 + 无广告）

**为什么先不加广告？**
1. ✅ iOS 审核通过率更高（广告常被拒）
2. ✅ 用户体验更好，初期口碑传播更快
3. ✅ 先验证产品价值，再考虑变现

**V1.0 → V1.1 加广告时机:**
- 下载量 > 1000
- 日活用户 > 100
- App Store 评分稳定在 4.5+

### 7.2 优化后的变现模型

| 版本 | 变现方式 | 说明 |
|------|---------|------|
| **V1.0 (MVP)** | 完全免费 | 快速获取用户，验证留存 |
| **V1.1** | 激励视频广告 | 看广告解锁"额外鼓励语" |
| **V1.2** | IAP 去广告 | $1.99（比原方案便宜，提高转化） |
| **V2.0** | Pro 订阅 | $0.99/月，含白噪音 + PDF 报告 |

### 7.3 核心指标追踪（手动记录）

**MVP 阶段（前30天）:**
- 下载量（每天记录 App Store / Play Store 数据）
- 留存率: Day1 / Day7 / Day30
- 完成专注次数: 人均完成数
- Crash 率（使用 Firebase Crashlytics 免费版）

**目标:**
- Day1 留存 > 40%
- Day7 留存 > 20%
- 人均完成 > 3次/周

**如果达不到:** 说明产品体验有问题，需要迭代核心功能

---

## 八、应用商店 ASO 素材模板

### 8.1 App Store 文案

**App 名称:**
```
FocusBuddy - Gentle Focus Timer
```

**副标题 (30字符):**
```
Focus without guilt or shame
```

**描述 (英文):**
```
FOCUS WITHOUT GUILT

FocusBuddy is different. It won't punish you for getting distracted.

🌿 TAP "I GOT DISTRACTED" ANYTIME
No shame. No stress. Just a gentle reminder to come back.

💚 BUILT FOR NEURODIVERGENT MINDS
If traditional focus timers make you feel bad, this one's for you.

📊 TRACK YOUR PROGRESS
See how you're improving — without judgment.

✨ PRIVATE & OFFLINE
All your data stays on your device. No cloud sync. No tracking.

---

"Finally, a focus app that doesn't make me hate myself." - Beta tester

Made with care for people who think differently.
```

**关键词 (100字符，逗号分隔):**
```
focus,timer,pomodoro,ADHD,productivity,gentle,neurodivergent,study,work,mindful
```

### 8.2 Google Play 文案

**短描述 (80字):**
```
A focus timer that won't shame you for getting distracted. Track gently.
```

**完整描述:**
```
(同 App Store，格式转为 Markdown)

WHAT MAKES IT DIFFERENT?
• Tap "I got distracted" without stopping the timer
• Get gentle encouragement instead of punishment
• See patterns in what pulls you away
• 100% offline and private

WHO IS IT FOR?
Perfect for anyone who struggles with traditional focus apps:
✓ ADHD / ADD
✓ Anxiety
✓ Autistic individuals
✓ Anyone with attention challenges

FREE. NO ADS (for now). NO TRACKING.

Download and start focusing — gently.
```

---

## 九、上线后 30 天行动计划

### Week 1: 冷启动（目标: 100 下载）
- Day 1: 在 r/ADHD 发帖分享（参考[产品设计方案](product-design.md:179-188)）
- Day 3: 在 ProductHunt 首发（周三上线效果最好）
- Day 5: 发 TikTok 短视频（展示 "I got distracted" 按钮）
- Day 7: 统计数据，回复所有评论和反馈

### Week 2-3: 社区渗透（目标: 500 下载）
- 在 ADHD 相关 Discord/Slack 分享
- 联系 3-5 个 ADHD YouTuber（提供 Pro 版兑换码）
- 在 Indie Hackers / Hacker News 分享开发故事

### Week 4: 优化迭代
- 分析用户反馈，提取高频需求
- 修复 Crash 和严重 Bug
- 规划 V1.1 功能（根据数据决定）

---

## 十、应该删除/推迟的原方案内容

### ❌ 删除（与 MVP 理念冲突）
1. **TopOn 广告聚合** - 过度优化，AdMob 够用
2. **Export PDF Report** - 用户需求未验证
3. **Body Doubling Lite** - 概念模糊，延后到 V2.0

### ⏸️ 推迟到 V1.1+
1. **主题皮肤系统** → 简化为文字徽章
2. **白噪音播放** → 等有收入后再做
3. **每周趋势图表** → 先用简单列表
4. **时长滑动条** → 固定25分钟 + 设置页3选项

### ✅ 保留（核心差异化）
1. ✅ "I got distracted" 按钮
2. ✅ 4种分心分类
3. ✅ 鼓励文案库
4. ✅ 无惩罚机制
5. ✅ 100% 离线

---

## 总结: MVP 成功的3个关键

### 1. 功能聚焦
**只做最能体现差异化的功能** - "I got distracted" + 鼓励文案

### 2. 快速上线
**4周必须提交审核** - 延期会导致热情消退

### 3. 数据驱动
**上线后看留存率** - 如果 Day7 留存 < 20%，说明产品不成立

---

**接下来的行动:**
1. [ ] 确认是否接受 MVP 功能精简建议
2. [ ] 补充 [隐私政策](privacy-policy.md:4) 开发者信息
3. [ ] 准备开发者账号（iOS $99 + Android $25）
4. [ ] 开始 Week 1 开发

---

**Document Status:** ✅ Ready for Review
**Next Update:** 根据实际开发进度调整里程碑
