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

6.9 KiB
Raw Blame History

User Profile Scoring高层规范

1. 背景与目标

本模块用于将 Onboarding 问卷答案转换为标准化、可计算、可版本化的用户画像User Profile,供其他模块(个性化推荐 / Push 推送排序 / 内容过滤)统一调用。

该模块的设计原则:

  • 不做心理诊断:只描述「此刻允许被如何对待」
  • 区分 身份(离散)状态(连续)
  • 允许「通用」与「高个性化」内容并存,并通过置信度控制“个性化力度”

来源规则文档:设计说明文档/客戶端問卷打分規則.mdV1 / 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_stageexpecting | parenting | unknown
  • emotionlow | overwhelmed | tired | neutral | calm | joyful
  • contextfamily | work | relationship | friends | health
  • needemotional_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

推荐的最小输出示例(结构示意):

{
  "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_tagscontent_tone_blacklist),以保证在任何排序之前先做安全过滤。

V1 核心禁推规则:

  1. stage.unknown = 1
    • 禁推:强指向育儿压力的内容(need: parenting_pressure
  2. stage.parenting = 1
    • 禁推:明确怀孕 / 孕期 / 胎动等内容
  3. emotion_score ≤ 0.2low / overwhelmed
    • 禁推高能量庆祝型joyful 调性)内容

原则说明:

  • 这些不是“答案不准”,而是“会造成反感或退出”的高风险匹配,应始终优先执行。

8. 兼容性与演进策略

  • 向后兼容:新版本字段可新增,但不得破坏 V1 的四维度结构与含义
  • 多选扩展:后续允许 context/need 多选时,输出仍可保持 one-hot但可允许多个 key=1并提供归一化规则
  • 行为融合:后续可引入 profile_source=mixed,将行为信号用于修正 emotion_score 或补全缺失维度,但必须保留 questionnaire 原始画像以便可观测与回溯

9. 验收标准(模块级)

  • Onboarding 填写完成后,能够生成符合本规范的用户画像对象
  • 输出包含元信息(版本、来源、时间、置信度)与四维度字段
  • 硬规则输出可被推荐/推送模块直接用于过滤(先过滤、后打分)