fix:修复
This commit is contained in:
161
spec_kit/SuixinTheme/spec.md
Normal file
161
spec_kit/SuixinTheme/spec.md
Normal 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 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.scenery`
|
||||
- `home.theme.color`
|
||||
- `home.theme.suixin`
|
||||
- `home.theme.suixinDesc`(可选:主题描述,用于解释“随心=按问卷画像推荐颜色”)
|
||||
|
||||
#### 文案建议
|
||||
|
||||
- **TC(zh-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 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 套,不新增):
|
||||
|
||||
```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 Theme(1 套):
|
||||
|
||||
```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 顶部主题切换弹窗(与现有位置一致)
|
||||
|
||||
Reference in New Issue
Block a user