7.6 KiB
7.6 KiB
「随心」主题(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 Theme(5 套)+ Neutral Theme(1 套)。
- 不做心理诊断:颜色不用于推断用户心理状态,只用于提升阅读与停留的舒适度。
4. 适用范围(Scope)
4.1 适用页面
- 首页 Home 背景(主题模式为「随心」时):输出为“纯色背景”或“轻量渐变背景”(实现形态由工程实现阶段确定,但必须遵循硬约束与稳定性规则)。
4.2 不适用页面
- 首页列表/卡片/CTA 组件背景(不在本需求范围)
- 任何需要高对比/强引导的交互区域(避免降低可用性)
5. 用户体验与交互
5.1 主题切换入口与位置
- 切换位置:与现有主题切换位置一致(即当前 Home 右上角主题按钮打开的主题选择弹窗/面板)。
- 切换项:在「风景」「纯色」旁新增第三项「随心」。
5.2 主题命名与多语言(TC / EN)
i18n Key 建议(示例)
home.theme.sceneryhome.theme.colorhome.theme.suixinhome.theme.suixinDesc(可选:主题描述,用于解释“随心=按问卷画像推荐颜色”)
文案建议
- TC(zh-TW)
home.theme.suixin: 隨心home.theme.suixinDesc: 依照你的問卷狀態,推薦舒適的背景色
- EN
home.theme.suixin: Suixinhome.theme.suixinDesc: A cozy background color, tailored from your questionnaire
说明:主题名「随心」作为品牌/概念名,EN 采用音译
Suixin,避免语义误解(如 “Random”)。
6. 输入输出(与问卷画像的对接)
6.1 输入:用户画像 U
随心主题的颜色推荐以客户端本地存储的用户画像为输入(来源:问卷完成后生成的画像)。
必须使用字段(与现有实现对齐):
U.stage.unknown:用于 Hard Rule(unknown → 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颜色作为背景色 - 轻量渐变输出(可选增强):输出 2~3 个
hex颜色作为背景渐变 stops(必须连续、低感知变化)
7. 颜色算法规则(复用现有文档,Home 场景化)
7.1 主题色系(Base Theme / Neutral Theme)
Base Theme(5 套,不新增):
{
"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 Theme(1 套):
["#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_score 与 profile_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=1且need={},必须输出 Neutral Theme(稳定、安全)。 - emotion_score 为 null:视为不确定 → 禁止动态增强,输出稳定纯色/静态渐变。
- 非法/未知 need key:按跳过处理 → Neutral Theme。
10. 验收标准(Acceptance Criteria)
- 入口一致:Home 的主题切换入口不变位置;新增「随心」选项可选中并持久化。
- 多语言正确:TC 与 EN 下,「随心」主题名称与描述文案正确展示(不出现缺失 key)。
- 规则一致:
stage.unknown=1时必为 Neutral Themeneed缺失/跳过时必为 Neutral Theme- 不允许跨 need 插值/切换
- 稳定性:一次 Home session 内,不因切换文案/刷新/拉取推荐而改变随心主题色系(Theme Lock 生效)。
11. 依赖与关联模块
- 用户画像来源:客户端
User Profile Scoring(问卷完成后生成U并写入本地存储) - 颜色算法来源:
设计说明文档/个性化背景颜色推荐算法.md(规则与 Hard Rules) - UI 入口:Home 顶部主题切换弹窗(与现有位置一致)