fix:句子問卷個性化推薦規則、
This commit is contained in:
190
spec_kit/User Profile Scoring/spec.md
Normal file
190
spec_kit/User Profile Scoring/spec.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# 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`: string(ISO8601 时间戳)
|
||||
- `profile_confidence`: number(0–1)
|
||||
- **四个维度(V1)**
|
||||
- `stage`: one-hot
|
||||
- `emotion_score`: number(0–1)
|
||||
- `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(当下情绪,连续 0–1)
|
||||
|
||||
该分数不是“快乐程度”,而是**可承受刺激与吸收内容的能力**。分数越低越需要减压、陪伴、允许停下;分数越高才适合庆祝、提醒珍惜等高能量调性内容。
|
||||
|
||||
映射(固定离散值):
|
||||
|
||||
| 选项 | 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_confidence(conf_U)
|
||||
|
||||
默认规则(可配置参数):
|
||||
|
||||
- 问卷刚完成:`conf_U = 1.0`
|
||||
- 随时间衰减(避免用过期状态强个性化推送):
|
||||
- 0–7 天:`conf_U = 1.0`
|
||||
- 7–30 天:线性衰减到 `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 填写完成后,能够生成符合本规范的用户画像对象
|
||||
- 输出包含元信息(版本、来源、时间、置信度)与四维度字段
|
||||
- 硬规则输出可被推荐/推送模块直接用于过滤(先过滤、后打分)
|
||||
|
||||
@@ -75,3 +75,14 @@
|
||||
- 新增 `SheetModal`、`ThemeModal`、`ProfileModal` 并在 Home 中接入
|
||||
- 新增 `DailyReminderModal` 并从个人主页弹窗打开
|
||||
- Home:右上角 icon 按钮、主题切换背景、喜欢/讨厌 icon + 动效
|
||||
|
||||
## User Profile Scoring
|
||||
|
||||
- **目标**:将 Onboarding 问卷答案映射为标准化“用户画像 U”,并输出硬规则与置信度元信息,供推荐/Push 等模块统一复用
|
||||
- **核心范围**:mom_stage(离散)、emotion_score(0–1 连续)、context(离散)、need(离散)四维度;以及 `profile_version/source/generated_at/confidence`(V1.1)
|
||||
- **主要约定**:
|
||||
- 输出结构稳定可版本化,便于规则演进
|
||||
- 置信度随时间衰减,用于推送场景降个性化/降风险
|
||||
- 硬规则优先于任何分数计算(例如 `unknown` 禁推育儿压力内容等)
|
||||
- **阶段产物**:
|
||||
- `spec_kit/User Profile Scoring/spec.md`
|
||||
|
||||
Reference in New Issue
Block a user