13 KiB
13 KiB
情绪博物馆 MVP 需求规格书
文档版本: v1.0
最后更新: 2025-07-03 13:42:33
项目类型: iOS 移动应用
开发框架: SwiftUI
📋 目录
1. 项目概述
🎯 产品定位
情绪博物馆是一款基于AI技术的心理健康应用,通过智能对话、情绪分析、个性化成长方案等功能,帮助用户建立健康的情绪管理习惯。
🚀 核心价值
- 情绪陪伴: AI驱动的智能对话系统,提供24/7情绪支持
- 个性化成长: 基于用户数据的个性化心理成长路径
- 社区分享: 安全的情绪表达和经验分享社区
- 数据洞察: 情绪数据可视化,帮助用户了解自己
📱 应用架构
- 平台: iOS (SwiftUI)
- 导航结构: 底部Tab导航,4个主要模块
- 设计风格: 简约温暖,注重用户体验
2. 技术架构
📊 技术栈
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 前端框架 | SwiftUI | iOS原生开发框架 |
| 状态管理 | @StateObject, @ObservedObject | SwiftUI内置状态管理 |
| 网络请求 | URLSession + Async/Await | 现代异步网络编程 |
| 本地存储 | Core Data | iOS原生数据持久化 |
| 地图服务 | 高德地图SDK | 国内地图服务 |
| 语音识别 | Speech Framework | iOS原生语音识别 |
| AI服务 | GPT-4 API | 智能对话服务 |
🏗 架构设计
┌─────────────────────────────────────┐
│ SwiftUI │
├─────────────────────────────────────┤
│ ViewModel Layer │
├─────────────────────────────────────┤
│ Service Layer │
│ ┌─────────┬─────────┬─────────┐ │
│ │ Network │ Storage │ AI │ │
│ │ Service │ Service │ Service │ │
│ └─────────┴─────────┴─────────┘ │
├─────────────────────────────────────┤
│ Model Layer │
└─────────────────────────────────────┘
3. 功能模块详解
3.1 记录页面
定位: 情绪主页 + AI对话入口
🎨 界面组件
| 组件 | 位置 | 功能描述 | 优先级 |
|---|---|---|---|
| 聊天记录入口 | 左上角 | 查看历史对话记录 | P1 |
| 设置按钮 | 右上角 | 主题切换、音效设置 | P2 |
| 日历组件 | 顶部 | 情绪记录、历史回顾 | P1 |
| AI形象 | 中心 | 3D/插图形象展示 | P2 |
| 对话输入框 | 底部 | 语音/文字/图片输入 | P1 |
⚙️ 核心功能
-
智能对话系统
- 支持语音转文字 (Speech Framework)
- 多模态输入:文字、语音、图片
- AI情绪分析和智能回复
- 全屏对话模式
-
情绪日历
- 单行日历视图,可展开
- 日期标记情绪状态
- 支持情绪回顾和趋势查看
-
对话记录管理
- 对话内容自动保存
- 智能分类和标签
- 搜索和筛选功能
📱 用户流程
进入记录页 → 选择输入方式 → 开始对话 → AI分析回复 → 保存记录 → 更新情绪日历
3.2 治愈页面
定位: 个人成长档案 + 课题系统
🎨 界面组件
| 模块 | 功能描述 | 数据来源 | 优先级 |
|---|---|---|---|
| 情绪洞察面板 | 个人情绪分析报告 | 对话数据+AI分析 | P1 |
| 成长课题标签 | 个性化成长任务 | 智能推荐+用户选择 | P1 |
| 五维雷达图 | 用户画像可视化 | 成长数据综合分析 | P2 |
| 互动奖励 | 积分、称号、皮肤 | 完成度计算 | P3 |
⚙️ 核心功能
-
智能情绪洞察
- 基于对话内容的情绪分析
- 个性化成长建议生成
- 情绪模式识别和预警
-
成长课题系统
- 动态课题推荐算法
- 多维度进度追踪
- 阶段性成就解锁
-
用户画像建模
- 五维能力评估模型
- 动态数据更新机制
- 可视化展示组件
📊 数据维度
- 自我感知: 情绪识别和表达能力
- 情绪韧性: 压力应对和恢复能力
- 行动力: 目标设定和执行能力
- 共情力: 理解他人和社交能力
- 生活热度: 兴趣探索和参与程度
3.3 探索页面
定位: 情绪地图 + 社区分享
🎨 界面组件
| 组件 | 功能描述 | 交互方式 | 优先级 |
|---|---|---|---|
| 地图视图 | 展示地理位置和情绪标记 | 缩放、拖拽、点击 | P1 |
| 视图切换 | 地图模式/社区模式切换 | 左上角按钮 | P1 |
| 地标弹窗 | 显示位置详情和笔记 | 点击地标触发 | P1 |
| 分享创建 | 发布图文内容 | 长按地图添加 | P2 |
⚙️ 核心功能
-
智能地图推荐
- AI基于情绪状态推荐地点
- 用户个人收藏和计划
- 情绪-地理位置关联分析
-
社区笔记系统
- 图文分享功能
- 点赞、评论、转发
- 内容审核和推荐算法
-
位置服务集成
- 地理位置获取和标记
- 周边推荐和导航
- 隐私保护机制
🗺 地图功能
- 个人标记: 用户自定义的情绪地点
- AI推荐: 基于情绪匹配的地点推荐
- 社区内容: 其他用户分享的美好角落
- 导航服务: 一键导航到目标地点
3.4 个人页面
定位: 用户信息 + 成就系统
🎨 界面组件
| 模块 | 功能描述 | 更新频率 | 优先级 |
|---|---|---|---|
| 用户资料 | 基础信息和会员状态 | 手动更新 | P1 |
| 成就面板 | 各类数据统计展示 | 实时更新 | P1 |
| 邀请模块 | 好友邀请和奖励 | 事件触发 | P2 |
| 设置中心 | 应用配置和隐私设置 | 手动配置 | P1 |
📈 数据统计
- 本周数据: 心情指数、对话次数、成长轨迹
- 累计成就: 打卡记录、分享统计、影响力数据
- 趋势分析: 情绪变化曲线、活跃度趋势
- 社交数据: 好友互动、内容被访问情况
4. 用户体验流程
🌟 核心用户路径
首次使用流程
graph TD
A[下载应用] --> B[注册登录]
B --> C[个人信息设置]
C --> D[情绪状态评估]
D --> E[AI对话引导]
E --> F[功能介绍]
F --> G[开始使用]
日常使用流程
graph TD
A[打开应用] --> B[查看今日情绪]
B --> C[开始对话/浏览内容]
C --> D[AI分析反馈]
D --> E[查看成长建议]
E --> F[探索推荐内容]
F --> G[记录/分享]
🎮 用户激励机制
| 行为 | 奖励机制 | 说明 |
|---|---|---|
| 每日对话 | 积分+连续天数 | 培养使用习惯 |
| 完成课题 | 经验值+称号 | 促进成长目标 |
| 分享内容 | 影响力积分 | 鼓励社区参与 |
| 邀请好友 | 特殊奖励 | 促进用户增长 |
5. 开发优先级
🚀 MVP开发路线图
Phase 1: 核心对话系统 (2-3周)
- ✅ 基础UI框架搭建
- ✅ AI对话功能实现
- ✅ 语音输入集成
- ✅ 本地数据存储
- ✅ 情绪日历基础版
Phase 2: 个人成长模块 (2-3周)
- ✅ 情绪分析算法
- ✅ 课题推荐系统
- ✅ 用户画像建模
- ✅ 数据可视化组件
- ✅ 成就系统基础版
Phase 3: 地图和社区 (3-4周)
- ✅ 地图SDK集成
- ✅ 位置服务功能
- ✅ 内容分享系统
- ✅ 社区互动功能
- ✅ 内容审核机制
Phase 4: 优化和完善 (1-2周)
- ✅ 性能优化
- ✅ 用户体验改进
- ✅ 数据分析完善
- ✅ 安全和隐私加强
📊 功能优先级矩阵
| 功能模块 | 用户价值 | 技术复杂度 | 开发优先级 | 预估工期 |
|---|---|---|---|---|
| AI对话系统 | 高 | 中 | P0 | 1周 |
| 情绪日历 | 高 | 低 | P0 | 3天 |
| 对话记录 | 高 | 低 | P0 | 2天 |
| 成长课题 | 中 | 中 | P1 | 1周 |
| 情绪分析 | 中 | 高 | P1 | 1.5周 |
| 地图功能 | 中 | 高 | P2 | 2周 |
| 社区分享 | 低 | 中 | P2 | 1周 |
| 用户画像 | 低 | 中 | P3 | 3天 |
6. 技术实现建议
🛠 关键技术组件
AI对话服务
// AI服务协议
protocol AIServiceProtocol {
func sendMessage(_ message: String) async throws -> AIResponse
func analyzeEmotion(_ text: String) async throws -> EmotionAnalysis
}
// GPT-4集成示例
class OpenAIService: AIServiceProtocol {
private let apiKey = "your-api-key"
private let endpoint = "https://api.openai.com/v1/chat/completions"
func sendMessage(_ message: String) async throws -> AIResponse {
// 实现GPT-4 API调用
}
}
语音识别集成
import Speech
class SpeechRecognitionService {
private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "zh-CN"))
func startRecording() async throws -> String {
// 实现语音转文字功能
}
}
情绪数据模型
struct EmotionRecord {
let id: UUID
let date: Date
let emotionType: EmotionType
let intensity: Float // 0.0 - 1.0
let context: String
let aiAnalysis: String?
}
enum EmotionType: String, CaseIterable {
case joy = "喜悦"
case sadness = "悲伤"
case anger = "愤怒"
case fear = "恐惧"
case surprise = "惊讶"
case neutral = "平静"
}
🔧 第三方依赖
| 依赖库 | 用途 | 集成方式 |
|---|---|---|
| AMapFoundation | 地图服务 | SPM/CocoaPods |
| AMapLocation | 定位服务 | SPM/CocoaPods |
| Charts | 数据可视化 | SPM |
| Alamofire | 网络请求 | SPM |
| Kingfisher | 图片加载 | SPM |
7. 数据模型设计
📊 Core Data实体关系
User (用户)
├── conversations: [Conversation] (对话记录)
├── emotionRecords: [EmotionRecord] (情绪记录)
├── growthTopics: [GrowthTopic] (成长课题)
├── achievements: [Achievement] (成就记录)
├── locations: [UserLocation] (用户地点)
└── posts: [CommunityPost] (社区分享)
Conversation (对话)
├── messages: [Message] (消息列表)
├── emotionAnalysis: EmotionAnalysis (情绪分析)
└── topics: [String] (关联话题)
GrowthTopic (成长课题)
├── category: TopicCategory (课题分类)
├── progress: Float (完成进度)
├── interactions: [TopicInteraction] (互动记录)
└── rewards: [Reward] (获得奖励)
🗃 数据表结构
用户表 (User)
| 字段 | 类型 | 说明 | 索引 |
|---|---|---|---|
| id | UUID | 主键 | PK |
| username | String | 用户名 | UNIQUE |
| String | 邮箱 | UNIQUE | |
| profile | UserProfile | 用户档案 | - |
| createdAt | Date | 创建时间 | INDEX |
| lastActiveAt | Date | 最后活跃 | INDEX |
对话表 (Conversation)
| 字段 | 类型 | 说明 | 索引 |
|---|---|---|---|
| id | UUID | 主键 | PK |
| userId | UUID | 用户ID | FK |
| title | String | 对话标题 | - |
| startTime | Date | 开始时间 | INDEX |
| endTime | Date | 结束时间 | INDEX |
| messageCount | Int | 消息数量 | - |
情绪记录表 (EmotionRecord)
| 字段 | 类型 | 说明 | 索引 |
|---|---|---|---|
| id | UUID | 主键 | PK |
| userId | UUID | 用户ID | FK |
| emotionType | String | 情绪类型 | INDEX |
| intensity | Float | 情绪强度 | - |
| recordDate | Date | 记录日期 | INDEX |
| context | String | 情绪背景 | - |
💾 数据同步策略
- 本地优先: 所有数据本地存储,确保离线可用
- 增量同步: 只同步变化的数据,减少网络开销
- 冲突解决: 时间戳优先,客户端胜出策略
- 数据备份: 定期备份到iCloud,支持设备间同步
📄 附录
版本历史
- v1.0 (2025-07-03): 初始版本,完整的MVP需求规格
相关文档
- 设计规范文档
- API接口文档
- 测试用例文档
- 部署运维文档
本文档将根据开发进度持续更新和完善