fix:修复

This commit is contained in:
吕新雨
2026-02-05 16:06:49 +08:00
parent 2b67a571bb
commit 8e71503169
18 changed files with 924 additions and 22 deletions

View File

@@ -0,0 +1,161 @@
# 「随心」主题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 顶部主题切换弹窗(与现有位置一致)