心情日记App 产品原型 (可直接拿去给开发,或作为 PRD 的 1.0 版)
一、一句话定位 “3 秒钟记录心情,30 天后看到情绪变化。”
二、目标用户 • 16-35 岁、情绪波动大、愿意自我觉察的人 • 心理咨询/正念练习人群、长期服药需要情绪追踪的人 • iOS & Android 双端首发,支持中文简体/繁体/英文
三、核心功能(MVP)
极速记录(<3 秒) ① 心情 Emoji 5 级滑杆(😞😔😐🙂😁) ② 可选 3-5 标签:社恐/疲惫/开心/灵感/焦��� ③ 最长 140 字文字备注,支持语音>文字转写 ④ 支持 0-1 张照片或 3 秒短视频 情绪仪表盘 • 30 天折线 + 日历热力图 • 高频标签词云 • 时间轴可一键生成分享卡片(隐私打码) 私密与本地优先 • FaceID/指纹/数字密码 3 层加密 • 默认 100% 本地存储(iCloud/ Google Drive 可增量加密同步) • 用户可一键导出 .csv / .json / .pdf 温柔提醒 • 智能:根据用户最近 7 天活跃时段推 2 次弹窗 • 固定:每日 3 个可选时间,可完全关闭 彩蛋正念 • HRV 相机测情绪(iPhone) • 30 秒呼吸动画(可跳过) 四、非核心(2.0 以后) • AI 情绪文字分析 + 建议(本地模型 CoreML / TensorFlow Lite) • 咨询师协同:加密分享指定日记 • 主题商店、小组件、Apple Watch 速记
五、信息架构
Tab1 今日
Emoji 滑杆 → 标签 → 文字/语音 → 完成 Tab2 时间轴 列表 & 日历热力图 Tab3 统计 折线/词云/周期报告 Tab4 我的 隐私/导出/提醒/主题 六、UI 关键交互
• 主色:静谧紫 #7C5DFA(白天)/ 深夜深蓝 #1E1B4B(夜间) • 首页只有一张渐变卡 + 滑杆 + 圆角按钮(“完成”) • 记录完成后 0.8 秒弹出“碎光”动效,提升多巴胺
七、技术选型
• Flutter 3.x(一套代码双端) • 本地数据库:Drift (SQLite) • 加密:SQLCipher + AES-256-GCM(钥匙链存储) • 同步:iCloud CloudKit / Google Drive REST AP
修订记录 2024-05-28 V1.0 首版完整 PRD,含 UI/UX 标注、接口定义与埋点方案。
产品目标
北极星指标:30 日留存 ≥ 35 %
关键路径:首次打开→完成第 1 条记录→第 7 天仍在记录→第 30 天仍在记录。
用户故事
3.1 作为情绪波动用户,我想 3 秒内完成记录,以免记录本身带来负担。
3.2 作为心理咨询来访者,我希望按周/按月导出 CSV,交给咨询师。
3.3 作为正念练习者,我想用 HRV 相机验证“放松是否真的有效”。
功能细节
4.1 极速记录(完成页)
| 元素 | 规则 |
|---|---|
| Emoji 滑杆 | 默认位于中心;左滑到 😞,右滑到 😁;滑块松手即记录数值 1-5 |
| 标签 | 最多 5 个;提供最近 10 次常用标签作为候选;支持自定义 8 字以内 |
| 文字备注 | 140 字以内;随输入实时计数;支持语音转写(科大迅飞 SDK) |
| 媒体 | 单张 ≤ 5 MB 照片或 ≤ 5 MB、3 秒短视频;压缩后存本地 |
| 完成按钮 | 点击即写库;成功后 0.8 s 碎光动效 & 声音反馈 |
4.2 情绪仪表盘
| 模块 | 计算逻辑 | 展示规则 |
|---|---|---|
| 30 日折线 | 当天所有记录的平均 Emoji 值 | 0:00-23:59 视为一天 |
| 日历热力图 | 颜色深浅 = 当天平均 Emoji 值 | 支持左右滑切换月份 |
| 高频标签词云 | 最近 30 天出现频次 Top 8 | 点击标签跳转列表 |
| 分享卡片 | 导出 1080×1350 图片;自动马赛克文字前 20 字 | 支持保存本地/微信/微博 |
4.3 私密与本地优先
| 功能 | 技术实现 | 备注 |
|---|---|---|
| 加密 | SQLCipher (256-bit AES) + 钥匙链随机 256-bit Key | 卸载 App 后 Key 失效,本地数据永久不可读 |
| 备份 | 首次询问用户是否开启;增量上传加密 .db 文件 | 文件名:mood-diary-{uid}-2024-05-28.db.gz |
| 导出 | CSV 包含:时间、Emoji、标签、文字首 50 字、媒体相对路径 | JSON 为完整 schema |
4.4 温柔提醒
| 类型 | 触发条件 | 文案示例 |
|---|---|---|
| 智能 | 过去 7 天活跃时段均值 ±30 min | “该记录一下此刻的你了~” |
| 固定 | 用户自选的 3 个时间点 | 可关闭或修改 |
4.5 彩蛋正念
| 功能 | 规则 | 数据来源 |
|---|---|---|
| HRV 相机 | iPhone 前摄 30 s PPG;输出 LF/HF 比值 | 结果仅本地展示,不上传 |
| 呼吸动画 | 4-4-4-4 节奏;可提前结束;结束后自动弹窗记录 Emoji | 动画 Lottie 文件 600 KB |
深度链接
mood://today 直达今日记录页
mood://timeline 到时间轴
mood://stats 到统计页
6.2 夜间模式
• 自动跟随系统;强制切换开关放在“我的”-实验室
• 夜间主色 #1E1B4B,文字 #FFFFFF 87 %
6.3 动效
• 碎光:SVG mask + Lottie;帧率 60 fps;包体 100 KB
• Tab 切换:共享元素过渡(Hero);耗时 200 ms
CREATE TABLE mood_entry (
id INTEGER PRIMARY KEY AUTOINCREMENT,
emoji_value INTEGER NOT NULL CHECK (emoji_value BETWEEN 1 AND 5),
tags TEXT, -- JSON ["tag1","tag2"]
text_note TEXT,
media_path TEXT,
created_at INTEGER NOT NULL,
updated_at INTEGER
);
CREATE TABLE hrv_session (
id INTEGER PRIMARY KEY AUTOINCREMENT,
lf_hf_ratio REAL,
session_duration INTEGER,
created_at INTEGER
);
7.2 接口(本地优先,无服务端,仅同步接口)
| 端点 | 方法 | 描述 |
|---|---|---|
| /backup/upload | POST | 上传加密 .db.gz 到 CloudKit/Drive |
| /backup/download | GET | 拉取并覆盖本地前弹窗警告 |
7.3 错误码
E4001 存储空间不足
E4002 加密 Key 丢失(提示用户数据不可恢复)
| 事件 | 属性 |
|---|---|
| record_complete | emoji, tag_count, has_media, duration_ms |
| dashboard_share | share_channel, card_type |
| reminder_open | type: smart/fixed |
| hrv_test_complete | lf_hf_ratio |
权限 & 合规
• 不收集手机号/邮箱;使用 UUID 作为匿名 uid
• 隐私政策在首次启动以弹窗形式展示;需勾选同意
• 中国大陆上架需完成 ICP 备案号展示在“设置-关于”
里程碑
M1 功能冻结 2024-06-15
M2 内测(TestFlight + 内测渠道)2024-06-30
M3 App Store / Google Play 同时上架 2024-07-15
风险
• iOS 17 隐私清单新增限制:需声明 CoreMotion 用途
• Android 14 前台服务权限:提醒弹窗需适配
附件 Figma 文件、切图、Lottie 动效、CSV 导出模版、隐私政策 Markdown。