Files
2026-02-05 16:06:49 +08:00

7.6 KiB
Raw Permalink Blame History

「随心」主题Suixin Theme高层规范spec

1. 背景与动机

当前首页Home支持两种主题

  • 风景:使用预置风景图作为背景
  • 纯色:使用预置颜色列表轮换作为背景

现在新增第三种主题 「随心」,其核心是:背景颜色随用户画像个性化并遵循既有的「个性化背景颜色推荐算法」规则与硬约束Hard Rules

2. 目标Goals

  • 新增主题:在现有「风景 / 纯色」基础上新增 「随心」 主题,并与现有主题切换入口保持一致。
  • 个性化颜色:基于用户完成问卷后生成的用户画像 U,输出 Home 背景的推荐颜色(或渐变颜色组),形成“更贴合此刻”的视觉陪伴。
  • 稳定与不冒犯:严格遵循硬规则(例如 mom_stage=unknown 强制 Neutral Theme并在一次 session 内保持稳定,避免跳色造成打扰。
  • 多语言:支持 繁体中文TC / zh-TW英文EN 的主题名称与 UI 文案展示。

3. 非目标Non-Goals

  • 不用于转化:随心主题不承担 CTA/转化引导职责,不为“制造变化”而变化。
  • 不新增色系数量:不新增主题色系数量,复用既定 Base Theme5 套)+ Neutral Theme1 套)。
  • 不做心理诊断:颜色不用于推断用户心理状态,只用于提升阅读与停留的舒适度。

4. 适用范围Scope

4.1 适用页面

  • 首页 Home 背景(主题模式为「随心」时):输出为“纯色背景”或“轻量渐变背景”(实现形态由工程实现阶段确定,但必须遵循硬约束与稳定性规则)。

4.2 不适用页面

  • 首页列表/卡片/CTA 组件背景(不在本需求范围)
  • 任何需要高对比/强引导的交互区域(避免降低可用性)

5. 用户体验与交互

5.1 主题切换入口与位置

  • 切换位置:与现有主题切换位置一致(即当前 Home 右上角主题按钮打开的主题选择弹窗/面板)。
  • 切换项:在「风景」「纯色」旁新增第三项「随心」。

5.2 主题命名与多语言TC / EN

i18n Key 建议(示例)

  • home.theme.scenery
  • home.theme.color
  • home.theme.suixin
  • home.theme.suixinDesc(可选:主题描述,用于解释“随心=按问卷画像推荐颜色”)

文案建议

  • TCzh-TW
    • home.theme.suixin: 隨心
    • home.theme.suixinDesc: 依照你的問卷狀態,推薦舒適的背景色
  • EN
    • home.theme.suixin: Suixin
    • home.theme.suixinDesc: A cozy background color, tailored from your questionnaire

说明:主题名「随心」作为品牌/概念名EN 采用音译 Suixin,避免语义误解(如 “Random”

6. 输入输出(与问卷画像的对接)

6.1 输入:用户画像 U

随心主题的颜色推荐以客户端本地存储的用户画像为输入(来源:问卷完成后生成的画像)。

必须使用字段(与现有实现对齐):

  • U.stage.unknown:用于 Hard Ruleunknown → Neutral Theme
  • U.need:用于选择 Base Theme稀疏 one-hot例如 { "rest_balance": 1 };若为空 {} 视为“need 跳过”)
  • U.emotion_score:用于动态强度/亮度扰动的约束(可为 null
  • U.profile_confidence:用于个性化强度(可信度低则更保守)
  • U.profile_answered:用于判断题目是否跳过(避免伪精确)

6.2 输出Home 背景推荐颜色

输出形态需支持两类(工程阶段二选一或混合):

  • 纯色输出(推荐优先):输出单一 hex 颜色作为背景色
  • 轻量渐变输出(可选增强):输出 23 个 hex 颜色作为背景渐变 stops必须连续、低感知变化

7. 颜色算法规则复用现有文档Home 场景化)

7.1 主题色系Base Theme / Neutral Theme

Base Theme5 套,不新增):

{
  "emotional_support": ["#F6DCE4", "#FFEFF4", "#FFF7FA"],
  "parenting_pressure": ["#D6EAF5", "#EEF6FB", "#F8FCFF"],
  "self_worth": ["#FFD8A8", "#FFE8C9", "#FFF6E5"],
  "anxiety_relief": ["#DFF3EA", "#ECFBF6", "#F6FFFB"],
  "rest_balance": ["#F2E6D8", "#FAF3EC", "#FFFDF9"]
}

Neutral Theme1 套):

["#F4F7F2", "#E8F1EC", "#EDF4F8"]

7.2 Home 场景的主题选择规则Theme Picking

  • Hard Rule:若 U.stage.unknown = 1强制 Neutral Theme
  • U.need 为空对象 {}need 跳过/缺失)→ 使用 Neutral Theme
  • 否则:从 U.need 取出被选中的 need tag稀疏 one-hot 的 key映射到对应 Base Theme

7.3 Home 场景的颜色输出规则Solid/Gradient

Home 没有“长文案滚动阅读”的 scroll因此需要将「连续渐变」规则做“等价映射”

  • 纯色输出(默认):使用所选主题的中间色(例如 theme[1])作为背景色,保证稳定、可读、低感知。
  • 轻量渐变输出(可选):使用主题的 theme[0]theme[2] 作为 top/bottom保持同主题内部变化渐变 stops 仅允许线性分布,不允许 easing/bounce。

备注:是否启用渐变由实现阶段决定;即便启用,也必须遵循「同主题内部变化」与「连续」的约束。

7.4 情绪与置信度调节(强度而非色系)

复用既有规则精神:emotion_scoreprofile_confidence 只影响强度,不得导致色系切换。

  • emotion_score ≤ 0.3:禁止任何动态增强(保持最稳定的纯色/静态渐变)
  • emotion_score ∈ [0.3, 0.6]profile_confidence ≥ 0.6:允许极弱亮度微扰((\Delta L \le \pm 2%)),用于降低“模板感”
  • profile_confidence ≤ 0.4:最大饱和度不超过 60%(若实现包含饱和度调节)

8. 稳定性与 Session 规则Home 版本)

为避免“背景跳色”,随心主题必须具备 Theme Lock

  • 锁定时机:用户进入 Home 且主题模式为「随心」
  • 锁定内容:锁定 Base Theme或 Neutral Theme选择结果必要时也锁定最终输出颜色/渐变 stops
  • 解锁时机
    • 用户离开 Home或 app 重启,按实现策略)
    • 用户主动切换主题模式(从随心切换到风景/纯色,再切回时可重新计算)
  • Session 内禁止重新采样:不得因为画像更新、拉取新文案、上下滑动切换文案而切换 Base Theme

9. 边界条件与兜底

  • 用户未完成问卷 / 跳过全部题目:画像中 stage.unknown=1need={},必须输出 Neutral Theme稳定、安全
  • emotion_score 为 null:视为不确定 → 禁止动态增强,输出稳定纯色/静态渐变。
  • 非法/未知 need key:按跳过处理 → Neutral Theme。

10. 验收标准Acceptance Criteria

  • 入口一致Home 的主题切换入口不变位置;新增「随心」选项可选中并持久化。
  • 多语言正确TC 与 EN 下,「随心」主题名称与描述文案正确展示(不出现缺失 key
  • 规则一致
    • stage.unknown=1 时必为 Neutral Theme
    • need 缺失/跳过时必为 Neutral Theme
    • 不允许跨 need 插值/切换
  • 稳定性:一次 Home session 内,不因切换文案/刷新/拉取推荐而改变随心主题色系Theme Lock 生效)。

11. 依赖与关联模块

  • 用户画像来源:客户端 User Profile Scoring(问卷完成后生成 U 并写入本地存储)
  • 颜色算法来源设计说明文档/个性化背景颜色推荐算法.md(规则与 Hard Rules
  • UI 入口Home 顶部主题切换弹窗(与现有位置一致)