Files
mindfulness/spec_kit/User Profile Scoring/spec.md
2026-01-30 18:02:46 +08:00

191 lines
6.9 KiB
Markdown
Raw 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.
# User Profile Scoring高层规范
## 1. 背景与目标
本模块用于将 Onboarding 问卷答案转换为标准化、可计算、可版本化的**用户画像User Profile**,供其他模块(个性化推荐 / Push 推送排序 / 内容过滤)统一调用。
该模块的设计原则:
- **不做心理诊断**:只描述「此刻允许被如何对待」
- 区分 **身份(离散)****状态(连续)**
- 允许「通用」与「高个性化」内容并存,并通过置信度控制“个性化力度”
来源规则文档:`设计说明文档/客戶端問卷打分規則.md`V1 / V1.1 工程补充)
## 2. 模块定位与边界
### 2.1 负责In Scope
- 定义**统一画像结构**(字段、类型、取值范围)
- 定义从问卷答案到画像的**映射规则**V1
- 生成画像的**元信息**V1.1:版本、来源、生成时间、置信度)
- 提供最小可复用的“硬规则”输出(用于下游模块做禁推/降风险)
### 2.2 不负责Out of Scope
- 不负责具体推荐算法实现(相似度计算、排序、探索/利用策略等)
- 不负责内容标签的生成与管理(内容画像 Cᵢ 的维护属于内容/推荐模块)
- 不负责长期行为信号融合(行为修正可在后续版本扩展)
## 3. 关键概念
- **用户画像 U**:由问卷生成,描述用户阶段、状态与当下需求
- **内容画像 Cᵢ**:内容侧标签/强度(由内容模块维护)
- **置信度 conf_U**:画像可靠程度(用于推送等高风险场景的降个性化/降风险)
## 4. 输入与输出(对外接口)
### 4.1 输入(问卷答案)
V1 假设每题为**单选**
- `mom_stage``expecting | parenting | unknown`
- `emotion``low | overwhelmed | tired | neutral | calm | joyful`
- `context``family | work | relationship | friends | health`
- `need``emotional_support | parenting_pressure | self_worth | anxiety_relief | rest_balance`
> 说明:多选 `context/need` 可在后续版本扩展,但 V1 输出结构需保持可兼容升级。
### 4.2 输出(用户画像)
输出为一个 JSON 对象(或等价的 TypeScript 类型),包含:
- **元信息V1.1**
- `profile_version`: string`"v1.1"`
- `profile_source`: `"questionnaire"`(后续可扩展 `"behavior"` / `"mixed"`
- `profile_generated_at`: stringISO8601 时间戳)
- `profile_confidence`: number01
- **四个维度V1**
- `stage`: one-hot
- `emotion_score`: number01
- `context`: one-hot
- `need`: one-hot
推荐的最小输出示例(结构示意):
```json
{
"profile_version": "v1.1",
"profile_source": "questionnaire",
"profile_generated_at": "2026-01-30T00:00:00Z",
"profile_confidence": 1.0,
"stage": { "expecting": 0, "parenting": 1, "unknown": 0 },
"emotion_score": 0.4,
"context": { "work": 1 },
"need": { "rest_balance": 1 }
}
```
## 5. 画像字段定义V1
### 5.1 mom_stage母职阶段离散
映射one-hot
- Pregnant / Preparing → `stage.expecting = 1`
- Parenting → `stage.parenting = 1`
- Prefer not to say → `stage.unknown = 1`
语义约束:
- `unknown` 的语义是:**不希望被母职身份定义**(不是“没有孩子”)
### 5.2 emotion当下情绪连续 01
该分数不是“快乐程度”,而是**可承受刺激与吸收内容的能力**。分数越低越需要减压、陪伴、允许停下;分数越高才适合庆祝、提醒珍惜等高能量调性内容。
映射(固定离散值):
| 选项 | tag | emotion_score |
| --- | --- | --- |
| Low | emotion: low | 0.0 |
| Overwhelmed | emotion: overwhelmed | 0.2 |
| Tired | emotion: tired | 0.4 |
| Okay | emotion: neutral | 0.6 |
| Calm | emotion: calm | 0.8 |
| Joyful | emotion: joyful | 1.0 |
输出:`emotion_score ∈ [0,1]`
### 5.3 context影响来源离散
映射one-hot
- Family → `context.family = 1`
- Work or study → `context.work = 1`
- Relationship → `context.relationship = 1`
- Friends → `context.friends = 1`
- Health → `context.health = 1`
语义说明:
- `context` 不是情绪,而是情绪的“触发场景”
- 用于提升内容共感(语境命中),而非硬性过滤
### 5.4 need最需要的支持离散推荐权重最高
映射one-hot
- Emotional support → `need.emotional_support = 1`
- Parenting pressure → `need.parenting_pressure = 1`
- Self-worth → `need.self_worth = 1`
- Anxiety relief → `need.anxiety_relief = 1`
- Rest & balance → `need.rest_balance = 1`
语义说明:
- `need` 是**推荐权重最高的维度**
- 表示“她现在最缺的是哪一种心理资源”
## 6. 元信息与置信度V1.1
### 6.1 profile_version / source / generated_at
- `profile_version`:用于规则升级与兼容(建议从 `"v1.1"` 起步)
- `profile_source`:固定为 `"questionnaire"`(后续可扩展)
- `profile_generated_at`:画像生成时间(用于推送降风险)
### 6.2 profile_confidenceconf_U
默认规则(可配置参数):
- 问卷刚完成:`conf_U = 1.0`
- 随时间衰减(避免用过期状态强个性化推送):
- 07 天:`conf_U = 1.0`
- 730 天:线性衰减到 `0.7`
- 30 天以上:`conf_U = 0.5`(除非用户重新做问卷或有行为信号更新)
下游使用建议:
- Push 推送等高风险场景:当 `conf_U` 低时,应启用不确定性惩罚(例如 `P_uncertainty`)并限制个性化力度上限。
## 7. 跨维度硬规则Hard Rules输出
本模块应向下游暴露“可直接执行”的硬规则结果(例如 `forbidden_tags``content_tone_blacklist`),以保证在任何排序之前先做安全过滤。
V1 核心禁推规则:
1. **`stage.unknown = 1`**
- 禁推:强指向育儿压力的内容(`need: parenting_pressure`
2. **`stage.parenting = 1`**
- 禁推:明确怀孕 / 孕期 / 胎动等内容
3. **`emotion_score ≤ 0.2`low / overwhelmed**
- 禁推高能量庆祝型joyful 调性)内容
原则说明:
- 这些不是“答案不准”,而是“会造成反感或退出”的高风险匹配,应始终优先执行。
## 8. 兼容性与演进策略
- **向后兼容**:新版本字段可新增,但不得破坏 V1 的四维度结构与含义
- **多选扩展**:后续允许 `context/need` 多选时,输出仍可保持 one-hot但可允许多个 key=1并提供归一化规则
- **行为融合**:后续可引入 `profile_source=mixed`,将行为信号用于修正 `emotion_score` 或补全缺失维度,但必须保留 `questionnaire` 原始画像以便可观测与回溯
## 9. 验收标准(模块级)
- Onboarding 填写完成后,能够生成符合本规范的用户画像对象
- 输出包含元信息(版本、来源、时间、置信度)与四维度字段
- 硬规则输出可被推荐/推送模块直接用于过滤(先过滤、后打分)