# 正念 APP｜文案畫像打分標準（Content Profile · Cᵢ · V1）

> **用途**：
> 本文件定義「每一句文案如何被轉換為可計算的內容畫像（Content Profile）」。
> 該畫像將與 **用戶畫像 U** 進行匹配，用於個性化推薦與推送排序。
>
> **使用對象**：
>
> * AI Reviewer（自動打分）
> * 人工內容審稿／校準
> * 推薦系統（selector / ranker）

---

## 一、核心原則（請務必遵守）

1. **不是評價文案好不好**，而是：

   > 這句話「適合對誰說、在什麼狀態下說」

2. **能不標就不標**：

   * 沒有明確指向，就標為 `general`
   * 不要為了打分而硬塞標籤

3. **高個性化 = 高風險**：

   * 指向越具體（孕吐、育兒比較、婆媳），越需要搭配禁推規則

---

## 二、Content Profile 結構總覽

每一句文案 Cᵢ，需產出以下欄位：

```text
C_i.stage                 // general / expecting / parenting / unknown
C_i.emotion_score         // 0–1 或 general
C_i.context_suitability   // 各 context 的 {0, 0.5, 1}
C_i.need_suitability      // 各 need 的 {0, 0.5, 1}
C_i.personalization_power // 0 / 0.5 / 1
C_i.risk_flags            // 風險標記（可多個；Hard Filter / Soft Penalty 會使用）

// Rerank / 去重 / 頻控所需（若資料源可提供，強烈建議補齊）
C_i.content_id            // 句子唯一 ID（建議 stable，不隨文案微調而變）
C_i.author_id             // 作者/來源 ID（可為空）
C_i.template_id           // 模板 ID（可為空；用於多樣性與頻控）

// 置信度（可選；用於 Push 的「不確定性懲罰 / 降個性化」）
C_i.review_confidence     // 0–1；AI/人工對標註結果的置信度（缺省可按流程給預設值）
```

---

## 三、mom_stage（母職階段）定位規則

### 可選值

* `general`（預設）
* `expecting`
* `parenting`
* `unknown`

### 判斷標準

#### `expecting`

**必須出現以下任一類語義**：

* 懷孕、孕期、孕吐、胎動、產檢、待產
* 明確指向「即將成為媽媽」的心理狀態

> 若只是提到「未來」「新階段」，不算 expecting

---

#### `parenting`

**必須出現以下任一類語義**：

* 已有孩子的日常（哄睡、尿布、育兒、學校、教養）
* 明確「身為媽媽正在照顧孩子」

---

#### `unknown`

**僅在以下情況使用**：

* 文案明確「不論你在哪個階段」「不管你是否是媽媽」
* 明確避免母職角色語言

---

#### `general`

* 沒有任何明確母職階段指向（**最常見**）

---

## 四、emotion_score（情緒調性）— 連續型

### 對齊用戶 emotion 軸

| 調性        | emotion_score |
| --------- | ------------- |
| 安撫低落 / 陪伴 | 0.0–0.2       |
| 減壓、縮小世界   | 0.2–0.4       |
| 疲累修復      | 0.4           |
| 中性穩定      | 0.6           |
| 平靜、呼吸     | 0.8           |
| 慶祝、喜悅     | 1.0           |

### 打分規則

* 若文案同時包含多種調性，取**主導語氣**
* 若無明確情緒調性 → 設為 `general`

---

## 五、context_suitability（影響來源適配）

### 可選 context

* family / work / relationship / friends / health

### 打分方式（對每一個 context）

| 分數  | 含義       |
| --- | -------- |
| 1.0 | 明確命中該情境  |
| 0.5 | 通用可推     |
| 0.0 | 不適合／可能刺痛 |

### 示例

* 提到「老公／婆婆／孩子」→ family = 1
* 提到「上班／職場拉扯」→ work = 1
* 完全抽象支持 → 所有 context = 0.5

---

## 六、need_suitability（支持需求適配）— **最重要**

### 可選 need

* emotional_support
* parenting_pressure
* self_worth
* anxiety_relief
* rest_balance

### 打分方式（對每一個 need）

| 分數  | 含義         |
| --- | ---------- |
| 1.0 | 明確回應此 need |
| 0.5 | 部分相關／通用支持  |
| 0.0 | 無關或反向      |

### 判斷原則（舉例）

* 「你不需要撐著，我在」→ emotional_support = 1
* 「你已經做得夠好了」→ self_worth = 1
* 「慢一點、休息一下」→ rest_balance = 1
* 「不是你做錯，只是育兒真的很難」→ parenting_pressure = 1

---

## 七、personalization_power（個性化力度）

> 用於控制「專屬程度 vs 風險」

| 值   | 定義           |
| --- | ------------ |
| 0.0 | 完全通用（任何人都可推） |
| 0.5 | 弱指向（稍微貼近某情境） |
| 1.0 | 強指向（高度具體）    |

### 判斷依據

* 是否提及具體角色／場景／困境
* 是否假設用戶正在經歷某件事

---

## 八、risk_flags（禁推規則標記）

> 用於 **Hard Filter**，優先於任何分數

### 重要語義（工程側必讀）

1. `risk_flags` **描述的是「這句話對哪些用戶/狀態不安全」或「需要降權」**，而不是內容的 `stage`。
2. **命名規範（工程側定死）**：一律使用 `unsafe_for_*` / `block_*` / `soft_*` 前綴。
   - `unsafe_for_*`：對特定用戶狀態不安全，通常進 Hard Filter（場景不同可調）
   - `block_*`：高風險健康/醫療等，進 Hard Filter（特別是 Push）
   - `soft_*`：不做硬性過濾，但在排序中做風險懲罰（Soft Penalty）
3. 若不確定，寧可標更保守的 flag（Push 安全優先）。

### 標準 flags（V1.1，推薦使用）

* `unsafe_for_stage_unknown`

  * 文案假設用戶正在育兒 / 有孩子 / 以「你作為媽媽」為前提（對 `mom_stage=unknown` 容易冒犯）

* `unsafe_for_stage_parenting`

  * 文案明確懷孕語境（對 `mom_stage=parenting` 可能刺痛）

* `unsafe_for_emotion_low`

  * 高昂慶祝型、過嗨、強刺激（對 `emotion_score ≤ 0.2` 不適合）

* `block_health_medical`（Hard Block）

  * 具「醫療/診斷/嚴重暗示」：疾病確診、用藥、治療方案、醫囑、手術、急重症、危險警示等
  * 这类内容属于高风险：**建议全场景（Feed/Push/Widget）Hard Filter**，不依赖用户是否选择 `context: health`

* `soft_health_sensitive`（Soft Penalty）

  * 健康/身心照顧相關，但不含診斷/治療/嚴重暗示：疲憊、睡眠、壓力、呼吸、覺察身體、日常照護
  * 不做禁推，但在 Push/Widget 需降權，避免過度私密或觸發

### 舊 flags（V1，已棄用但需兼容）

> 若歷史資料仍使用舊 flag，工程側需在入庫/讀取時做一次映射，避免語義漂移。

* `block_stage_unknown` → `unsafe_for_stage_unknown`
* `block_stage_parenting` → `unsafe_for_stage_parenting`
* `block_emotion_low` → `unsafe_for_emotion_low`
* `block_health_sensitive` → `block_health_medical` 或 `soft_health_sensitive`

  * 判斷原則：含診斷/治療/嚴重暗示 → `block_health_medical`；否則 → `soft_health_sensitive`

> AI Reviewer 若不確定，寧可標記 flag

### 置信度缺省值（工程约定，V1.2）

* 若数据源未提供 `C_i.review_confidence`：推荐系统侧默认按 `0.7` 处理（用于 `P_uncertainty`），并建议后续补齐可观测与标注流程

---

## 九、AI Reviewer 打分流程（強烈建議）

1. **先判斷是否 general**（能 general 就 general）
2. 再標註：stage（若有）
3. 再決定 emotion_score（主導語氣）
4. 再填 context / need suitability
5. 最後判斷 personalization_power
6. 若有任何「可能翻車」風險 → 加 risk_flag

---

## 十、設計總結（一句話）

> Content Profile 的目的不是把話分門別類，
> 而是避免在錯的時間，用錯的方式，對錯的人說話。

本文件為 V1，可隨實際推送數據進行校準與升級。
