first commit
This commit is contained in:
558
mvp-launch-checklist.md
Normal file
558
mvp-launch-checklist.md
Normal file
@@ -0,0 +1,558 @@
|
||||
# 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:** 根据实际开发进度调整里程碑
|
||||
Reference in New Issue
Block a user