Files
mindfulness/spec_kit/Splash Consent/spec.md
2026-01-29 23:31:12 +08:00

3.6 KiB
Raw Blame History

Splash Consent高层规范

1. 背景与目标

客户端需要一个开屏页Splash/Welcome用于展示品牌视觉并在首次加载时让用户同意隐私协议与用户使用协议。用户同意后进入后续流程Onboarding/App

目标

  • 视觉开屏:使用 client/assets/images/index/ 下的图片资源作为主视觉
  • 首次同意:底部渐变按钮仅在首次加载时出现,用于“同意并继续”
  • 协议入口:按钮下方提供「隐私协议」「用户使用协议」入口,用户可点击查看
  • 状态持久化:同意后不再显示该按钮(后续启动直接进入后续流程)

非目标(本阶段不做)

  • 不实现复杂的协议版本管理(如协议更新后重新弹出),后续可扩展
  • 不实现后端拉取协议内容(可先使用本地静态页面或外链)

2. 范围与交付物

范围

  • 新增开屏页 UI 与路由接入
  • 新增“首次同意”状态的本地持久化
  • 协议入口(跳转到 WebView/外部浏览器/内置页面,方案在实现阶段确定)

交付物

  • 开屏页(含图片、按钮、协议入口)
  • 本地持久化 key 约定与读写逻辑
  • README/文档更新(可选)

3. 视觉与交互需求

3.1 主视觉

  • 使用 client/assets/images/index/ 下的图片资源(例如 index_flowers.png
  • 布局建议:
    • 图片居中或铺满上半部分(按实际设计微调)
    • 适配不同屏幕尺寸,确保不变形/不裁切关键内容

3.2 底部渐变按钮(仅首次出现)

  • 出现条件:仅在首次加载且未同意协议时显示
  • 按钮文案:建议“同意并继续”(文案可后续调整,需支持 i18n
  • 按钮渐变色:从 #F69F7B#F99CC0
  • 点击行为
    • 写入本地状态:用户已同意
    • 跳转到后续流程入口(例如 Onboarding 或 Home 的启动分发)

3.3 协议入口

  • 位于按钮下方,展示:
    • 隐私协议
    • 用户使用协议
  • 点击行为:打开对应协议内容
    • 支持外链或内置页面(实现阶段确认)

4. 首次加载判定与持久化

4.1 判定规则

  • 首次加载定义App 首次启动且用户未完成协议同意

4.2 存储 Key建议

  • consent.accepted: boolean

说明:后续如需协议版本化,可扩展为 consent.versionAccepted = <version>

5. 路由与流程(与现有客户端集成)

5.1 流程顺序(建议)

  1. App 启动
  2. consent.accepted !== true:进入开屏页(展示按钮与协议入口)
  3. 用户点击“同意并继续”后:
    • 写入 consent.accepted=true
    • 进入后续流程(例如 Onboarding/App Shell 的启动分发)

5.2 与现有功能的关系

  • 开屏页位于 Onboarding 之前(更符合“先同意协议再使用”的要求)
  • 同意后按既有规则继续:
    • 已完成 onboarding进入 Home
    • 未完成 onboarding进入 Onboarding

6. 验收标准

  • 首次启动:
    • 出现开屏页,展示图片
    • 底部渐变按钮可见,颜色正确(#F69F7B#F99CC0
    • “隐私协议/用户使用协议”可点击打开
    • 点击“同意并继续”后进入后续流程
  • 非首次启动:
    • 不再出现“同意按钮”(且开屏页按产品要求可直接跳过或不再展示)
    • 直接进入后续流程

7. 风险与注意事项

  • 协议内容来源若为外链,需要保证链接长期可用;若为本地页面,需要考虑后续更新机制
  • iOS 不同机型安全区(底部 Home Indicator需保证按钮与协议入口不被遮挡