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

162 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 「随心」主题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 套,不新增):
```json
{
"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 套):
```json
["#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 Theme
- `need` 缺失/跳过时必为 Neutral Theme
- 不允许跨 need 插值/切换
- **稳定性**:一次 Home session 内,不因切换文案/刷新/拉取推荐而改变随心主题色系Theme Lock 生效)。
## 11. 依赖与关联模块
- **用户画像来源**:客户端 `User Profile Scoring`(问卷完成后生成 `U` 并写入本地存储)
- **颜色算法来源**`设计说明文档/个性化背景颜色推荐算法.md`(规则与 Hard Rules
- **UI 入口**Home 顶部主题切换弹窗(与现有位置一致)