禅修软件需求

下面将你给出的初稿,按之前推荐的“分层结构”扩展为一份可评审、可执行、可追溯的 PRD / 综合需求文档示例。可直接用作 1.0 迭代的工作基线。未确定的内容以【待确认】或“Open Question”标注,便于后续跟进。

==============================

  1. Executive Summary(高层概要)

    产品名称(暂定):ZenEEG(【可改】)
    目标:为安卓 / iOS(及后续小程序)用户提供结合脑电(EEG)数据的禅修辅助,帮助用户提高专注与放松质量,并通过可视化与分享促进持续练习。
    核心价值假设:

    • EEG 指标可反馈 → 提升用户自我觉察 → 提高重复练习率
    • 社交分享与课程引导 → 增强动机与留存 首期(MVP)范围(In):
    • 禅修定时(基础 + 背景音)
    • 带课(本地上传 + 公开/授权音频播放; 简单间隔配置)
    • EEG 设备连接与实时指标(专注 / 放松)采集 + 禅修会话日志保存/上传
    • 分享长图(含基本练习统计)
    • 应用内更新(Android);版本提示(iOS);设备驱动/协议包更新机制雏形
    • 基础隐私与数据同意流程 范围外(Out,本期不做):
    • 完整社交社区、排行榜
    • 高级脑波图频谱可视化
    • 个性化训练课程推荐算法
    • 付费订阅 / 课程商城 成功指标(首 3 个月 OKR 示例):
    • 激活用户(首日完成至少一次 ≥5 分钟禅修) ≥ 40% 新增
    • 7 日留存 ≥ 25%
    • 平均单次禅修完成率(未中断完成 / 发起)≥ 70%
    • EEG 成功连接率(成功建链并开始采样 / 连接尝试)≥ 90%
    • 分享功能使用率(周内任一用户至少生成 1 张分享长图)≥ 15%
    • 音频课程使用率(周活跃中使用课程引导 ≥1 次)≥ 35% 价值风险:
    • EEG 指标可信度与用户可理解性不足 → 可能降低信任
    • 连接稳定性差 → 影响核心体验
    • 课程内容不足或质量不均 → 留存风险 时间窗口:
    • 内测(T0+4 周),公测(T0+8 周),应用商店首发(T0+10 周) 商业/合规提示:暂不作为医疗器械,不输出诊断;需在用户协议与免责声明中明确。

==============================

  1. 用户与价值层

    目标用户画像(Personas) P1 入门冥想者:有焦虑 / 睡眠压力,希望建立习惯,缺乏反馈
    P2 进阶练习者:已有每日练习,想量化进步(专注/放松曲线)
    P3 课程创作者(后续 B 端潜力):上传/发布引导音频(本期仅自用或授权播放)

核心使用场景(User Journeys) S1 快速开始禅修:打开 -> 设定 10 分钟 -> 选择背景音 -> 开始 -> EEG 稳定连接 -> 到时提醒 -> 查看本次曲线 & 指标 -> 可分享
S2 带课练习:选择音频课程(含一系列引导口令 + 间隔)-> 播放同步显示剩余阶段 -> 结束汇总
S3 设备连接:首次进入 -> 授权蓝牙/定位 -> 扫描设备 -> 选择 -> 校验电量/信号 -> 状态栏显示连接质量
S4 回顾历史:进入日志 -> 查看统计(总时长、专注提升趋势)-> 进入单次会话详情(时序曲线)
S5 分享激励:完成session -> 一键生成长图 -> 选择分享到微信朋友圈
S6 离线练习:无网络 -> 仍可完成禅修与本地缓存日志 -> 网络恢复自动上传
S7 应用更新:检测新版本 -> 提示更新说明(性能改进/新设备支持)-> 安装(Android 内置;iOS 跳转 Store)

痛点与价值映射

  • 看不见进步 -> 提供趋势与本次对比(与最近 7 次平均)
  • 连接麻烦 -> 一键上次设备重连 + 状态反馈(信号/电量)
  • 课程节奏掌握难 -> 自定义或课程设定的语音提示 + 间隔倒计时
  • 分享困难 -> 生成可读美观长图(含关键指标 + 激励语)

==============================

  1. 功能需求(Functional Requirements)

    格式:用户故事 + 关键说明 + 验收标准(Given/When/Then)+ 优先级(P0/P1/P2) + 依赖

3.1 禅修定时 F-1 设定时长
用户故事:作为用户我可以设定 1~120 分钟禅修时长(默认 10 分钟)。
验收:
Given 打开定时页面
When 我输入或选择 25 分钟
Then 显示倒计时为 25:00 并记录设定值
规则:步进 1 分钟;最近 3 个常用值快捷显示。
优先级:P0

F-2 控制(开始/暂停/继续/结束/取消)
Given 会话进行中
When 我点击暂停
Then 计时停止且界面显示“已暂停”并可继续
取消需二次确认;结束后不可再继续。
优先级:P0

F-3 背景音播放
支持内置 3 种(流水/白噪/风铃),循环;音量独立于系统媒体音量(有衰减策略与语音冲突时减 -15%)。
优先级:P1

F-4 提示音
倒计时结束播放提示音(可在设置关闭)。
优先级:P0

3.2 带课功能 F-5 上传引导音频(本地)
限格式:mp3, m4a ≤ 50MB;批量导入(最多 20 条)。
验收:格式不符给出错误;上传成功显示列表长度。
优先级:P1

F-6 课程结构
一个课程 = 多段口令音频 + 间隔(静默)配置(单位秒/分)。可保存为模板。
优先级:P1

F-7 授权/公开音频下载
须后台鉴权(Token + 权限 Role)。下载前校验授权有效期。
优先级:P2(若首期已有资源则 P1)

F-8 播放控制
显示当前段序号 / 总段数、剩余时间、下一个口令预告。
优先级:P1

3.3 脑电设备数据采集 F-9 设备扫描与配对
支持蓝牙(BLE)扫描:展示设备名称、信号强度、上次连接标记。
验收:扫描超时(10s)显示提示。
优先级:P0

F-10 连接与状态显示
显示:连接中 / 已连接 / 信号弱 / 断开;电量百分比(若设备支持 GATT Characteristic)。
优先级:P0

F-11 实时采样与指标计算
采样频率(示例): 原始脑波 250Hz(【待确认设备实际】)→ 本地计算每 5 秒滑窗专注度 & 放松度(0~100)。
优先级:P0

F-12 会话日志生成
一个会话日志包含:session_id, start_time, duration, avg_focus, avg_relax, focus_curve(时间序列), device_id, interruptions, notes。
优先级:P0

F-13 本地存储与上传
离线缓存(SQLite/Realm),网络恢复后台批量上传。失败重试策略:指数退避,最多 5 次/24h。
优先级:P0

F-14 日志查看
列表:按时间倒序,显示日期、时长、专注/放松平均值。详情:折线图(时间 vs 指标)。
优先级:P1

F-15 日志编辑(备注/标签)
允许添加文本备注(≤ 200 字)及标签(最多 5 个,预设:清晨/晚间/课程/自由练习)
优先级:P1

3.4 分享功能 F-16 生成长图
包含:头像/昵称(可匿名设置)、本次时长、平均专注/放松、趋势小图(最近 7 次)、励志语句(随机库)。
优先级:P1

F-17 分享渠道
支持保存到相册 & 调用微信分享(Android 通过微信 SDK;iOS 通过 UIActivityViewController / 微信 SDK)。
优先级:P1

F-18 分享内容校验
若用户未同意展示昵称 → 使用“禅修者”。
优先级:P1

3.5 自动更新 F-19 Android 应用内更新
检测版本(后台 API 提供 latest_version, force_flag, release_notes, patch_url)。支持差分包(【待确认使用 Tinker 等方案】)。
优先级:P1

F-20 iOS 更新提示
进入首页或设置页时比对 App Store 版本(后台缓存),提示跳转。
优先级:P1

F-21 设备驱动/协议包更新
在启动时检测 EEG 协议定义包版本(JSON),差异时下载并热加载解析配置(不含本地执行代码)。
优先级:P2

3.6 通用/系统 F-22 权限引导(蓝牙、网络、存储、相册)
首次相关功能前弹出教育式提示。
优先级:P0

F-23 隐私与同意
首次启动显示隐私政策与数据用途(EEG 非医疗声明);不同意则禁用上传(仍可离线练习)。
优先级:P0

F-24 设置中心
控制:背景音开关、提示音开关、数据上传策略(Wi-Fi Only【待确认是否需要】)。
优先级:P1

3.7 示例验收(EEG 会话) Given 已连接设备且我开始 10 分钟禅修
When 会话结束
Then 产生日志包含 avg_focus & avg_relax 且上传状态=queued/ uploaded(网络可用时 ≤ 30 秒内成功)

==============================

  1. 非功能需求矩阵(NFR)

    | 维度 | 指标/目标 | 说明 | | 性能 | 主界面冷启动 ≤ 2.5s(P95) | Android 中端机;iOS A13 及以上 | | 性能 | EEG 数据处理延迟 ≤ 1s(计算出最新指标) | 指标显示滑动窗口 | | 可用性 | 会话崩溃率 < 0.5% | Crash / Session Start | | 连接稳定 | BLE 会话中断率 对象存储 + 元数据表),音频文件(对象存储),配置(Redis/DB)

    • 分析:ETL(后期),暂先直接导出报表

5.3 关键接口(示例) POST /api/v1/sessions
Payload: session_id, user_id, device_id, start_time, end_time, avg_focus, avg_relax, focus_curve (compressed), relax_curve, notes(optional), client_version
Response: {status: ok}

GET /api/v1/version/app?platform=android
Return: latest_version, force, release_notes, apk_url, patch_url(optional), checksum

GET /api/v1/version/protocol?device_model=XYZ
Return: protocol_version, config_url, checksum

GET /api/v1/audio/authorized_list
Header: Authorization
Return: [ {audio_id, title, duration, download_url, expire_at} ]

(详细 OpenAPI 规格另附)

5.4 数据结构(示例) SessionLog {
session_id (UUID), user_id, start_time, duration_sec, avg_focus, avg_relax, focus_curve (array compressed), relax_curve(array), interruptions(int), device_id, created_at
}

5.5 曲线压缩策略

  • 原始指标 1 秒 1 点 -> 10 分钟 = 600 点
  • 压缩:Delta + ZigZag + Base64(或采用 ProtoBuf + Gzip)
  • 目标:单会话指标≤ 4KB

5.6 设备连接状态机 INIT -> SCANNING -> SELECTED -> CONNECTING -> CONNECTED -> STREAMING -> DISCONNECTED / ERROR
重连策略:网络正常 & 用户未手动断开时 ≤3 次指数退避。

==============================

  1. 数据与指标(Analytics & Telemetry)

    埋点分类:行为(B)、性能(P)、连接(C)、错误(E)

示例埋点: B_SESSION_START {session_id, duration_plan, has_course, device_connected(bool)} B_SESSION_END {session_id, actual_duration, completed(bool), reason(end/abort/crash), avg_focus, avg_relax} C_DEVICE_CONNECT_ATTEMPT {device_id, method=BLE, rssi, attempt_no} C_DEVICE_CONNECT_RESULT {device_id, success(bool), latency_ms, fail_reason(timeout/auth/unknown)} P_METRIC_COMPUTE {window_sec, latency_ms} B_SHARE_GENERATE {session_id, include_curve(bool), template_version} B_SHARE_SUCCESS {channel=wechat/save} B_AUDIO_UPLOAD {count,total_size_mb, success_count} B_COURSE_PLAY_START {course_id} B_COURSE_PLAY_END {course_id, completed(bool)}

指标口径定义:

  • 会话完成率 = 完成会话数 / 发起会话数(completed=true)
  • EEG 连接成功率 = C_DEVICE_CONNECT_RESULT success=true / attempt
  • 7 日留存 = 注册第 N 日仍有 Session
  • 分享使用率 = 有分享行为用户数 / 活跃用户
  • 平均专注值 = 所有会话 avg_focus 平均(可分桶) 数据质量校验:上传曲线点数需与 duration 接近(允许 ±5%),异常打标签。

==============================

  1. 发布与运营(Release & Ops)

    7.1 版本规划

    • v0.1 内测:定时 + 基础 EEG 采集 + 日志保存
    • v0.2 加入课程播放 + 分享
    • v1.0 上线:自动更新 + 指标/趋势 + 背景音 + 协议包更新雏形

7.2 灰度策略 Android:后台配置可下发灰度百分比(10% / 30% / 100%)控自动更新弹窗
iOS:自然升级(仅提示)

7.3 回滚策略

  • Android:保留上一正式 APK 下载链接;若 crash 率 > 阈值(0.5%)自动在后台标记停止弹窗最新版本
  • 后端:配置开关(Feature Flag)关闭新指标显示或课程下载

7.4 监控(后端)

  • API 成功率 ≥ 99%
  • 上传延迟:p95 30%)→ 发送告警(钉钉/飞书)

7.6 Release Notes 模板 [功能] …
[优化] …
[修复] …
[风险提示] 需要重新授权蓝牙

==============================

  1. 安全与合规(Security & Compliance)

    数据分类:

    • 一般:课程元数据、背景音配置
    • 个人(普通):用户昵称、头像
    • 个人(敏感)【待判断】:脑电指标是否视为健康相关(非医疗) 传输:HTTPS;BLE 加密(若设备支持,或在应用层对数据包再加密)
      本地加密:敏感表使用 SQLCipher;密钥通过系统 Keystore / Keychain
      权限最小化:仅在需要时申请蓝牙、存储、相册
      日志脱敏:不记录原始脑波原始高频数据(仅派生指标),除非用户开启“高级调试”开关
      用户权利:数据导出(后续 P2),删除请求(前台入口 + 后端 7 日内执行)
      第三方 SDK 审核:微信分享、统计(若用)需列清单 & 版本
      免责声明:非医疗用途;不可代替医生建议;在隐私弹窗与设置中可访问

==============================

  1. 培训与支持(Enablement)

    FAQ(初始) Q: 为什么看不到脑波曲线很细?
    A: 我们展示经过处理的专注/放松指标,减少噪声干扰。
    Q: 离线可以练习吗?
    A: 可以,数据稍后自动上传。
    Q: 分享会暴露个人数据吗?
    A: 默认匿名,可在设置更改。

用户引导(首次体验)

  • 3 步 Onboarding:设定目标 -> 连接设备 -> 开始第一次 5 分钟练习
  • 工具提示:定时页、设备连接页、日志页小红点说明

文档/帮助

  • 简易用户手册(图文)
  • 设备佩戴指南(正确接触点)

支持流程

  • 反馈入口:设置 > 意见反馈(收集日志 ID)
  • 日志收集(用户授权后上传 24h 内最近 3 次 debug 日志)【P2】

==============================

  1. 变更 / 决策 / 未决问题

    10.1 最近关键决策(示例 ADR 引用) ADR-001 指标计算在本地完成(而非实时上传云处理) -> 降低延迟与流量
    ADR-002 使用协议配置文件驱动新设备适配 -> 减少发版

10.2 未决问题(Open Questions)

  1. EEG 设备型号与协议细节是否固定一款?还是首期支持多款?(影响适配复杂度) Owner: 技术负责人 截止:T0+5d
  2. 指标算法公式(专注/放松)是否已有科学来源或需自研权重?需验证用户可理解性。 Owner: 数据/算法 截止:T0+10d
  3. 是否需要账号体系(手机号/邮箱登录)还是匿名本地 + 可选绑定?(影响多端同步) Owner: 产品 截止:T0+7d
  4. 课程授权与付费模式是否在 MVP 即布局(需法务/支付)? Owner: 产品/商务 截止:T0+15d
  5. 分享到微信的合规素材(LOGO、版权语)是否已准备? Owner: 设计 截止:T0+12d
  6. 是否引入 Crash/埋点第三方(如 Firebase / 友盟)?需隐私评估。 Owner: 技术 截止:T0+8d
  7. 是否需要青少年模式(时间限制/提示)? Owner: 产品/合规 截止:T0+20d
  8. 是否支持暗黑模式首发? Owner: 设计 截止:T0+6d
  9. 曲线数据保留策略(云端保留时长)?默认永久 or 12 个月? Owner: 法务/产品 截止:T0+14d

10.3 风险与缓解

  • 设备不稳定:准备模拟器/回放数据以便开发与测试
  • 指标可信度:建立内部验证集(多次会话对比)+ 用户反馈收集字段
  • 性能(Flutter + 高频数据):在 isolate 中处理或节流(每 1s 刷新)
  • 分享兼容:不同分辨率长图截断 → 预生成模板自适应

==============================

  1. RACI(核心交付阶段示例)

    • 功能定义:R(产品) C(设计/技术) A(产品负责人) I(支持/市场)
    • 指标算法:R(数据) C(技术/产品) A(技术负责人)
    • 设备适配:R(客户端设备组) C(供应商) A(技术负责人)
    • 隐私合规:R(法务) C(产品) A(合规负责人)
    • 发布管理:R(技术) C(QA/产品) A(技术负责人)
    • 分享模板:R(设计) C(产品) A(设计负责人)

==============================

  1. MVP 最小交付清单对照

    必做(P0):F-1/2/4/9/10/11/12/13/16(基础版可不含趋势)/19/20/22/23
    次级(P1):F-3/5/6/8/14/15/17/18/24
    择机(P2):F-7/21 + 高级可视化/完整差分更新

==============================

  1. 里程碑(示例)

    W1 架构选型 + 设备协议确认 + 指标算法草案
    W2 定时 + 连接 + 基础采样 -> 内部跑通日志
    W3 日志查看 + 曲线压缩 + 上传接口
    W4 课程播放 + 分享初版 + 埋点
    W5 自动更新 + 背景音 + 安全/隐私弹窗 + 性能优化
    W6 测试 & 缺陷修复 + 内测发放
    W7~8 公测反馈 & 上线准备

==============================

  1. 附录(模板 / 示例)

    14.1 验收标准模板 User Story:
    Acceptance (Gherkin):
    Given … When … Then …
    Edge Cases:
    Non-functional Notes: (性能/安全/隐私)

14.2 NFR 表格模板(已填见第 4 节)

============================== 总结

该分层文档让不同角色在各自章节快速定位:高层看 1;核心研发重点在 3/4/5;数据与增长看 6;运维与支持看 7/9;安全法务看 8;决策透明在 10。未决问题明确 Owner + 截止,防止模糊带入开发。可在后续评审会中逐条确认 P0 范围并锁定 v1.0 基线。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注