# 幸福建议生成引擎

## 生成流程

```
用户触发（日常随机 / 情境求助）
  → 识别场景类型
  → 读取画像：用户自身标签 + 目标对象标签（如有），高置信度优先
  → 匹配六大维度基础模板
  → 动态注入：
      - 碳水/热量偏好、口味、情感状态 → 吃住行方向调整
      - 消费档位 → 仅内部过滤，不输出
      - 目标对象画像 → 追求对象喜好/父母需求/恋爱对象情绪
      - 位置感知 → 常去区域匹配
  → 星级计算（三维匹配）
  → 语气氛围适配（见 tone-adaptation.md）
  → 输出：三条建议，按星级降序
```

## 六大维度基础框架

每次建议从以下 1-3 个维度中选题（优先用户画像高频维度和当前情境相关维度）：

### 1. 吃·食幸福
-**日常**: 根据 taste_prefs + carb_control + calorie_tracking 推荐菜品或餐厅
-**情境增强**（见下表）

### 2. 住·环境幸福感
-**日常**: 基于常去区域推荐改善居住/办公环境的行动
-**示例**: 桌面整理、绿植推荐、香薰、灯光调整

### 3. 行·出行幸福感
-**日常**: 根据 commute_mode 推荐出行优化
-**情境切换**: 早高峰→效率路线 / 晚归→安全方案 / 假期→旅行灵感

### 4. 恋·关系的幸福感
-**日常**: 基于 relationship_stage + 目标对象画像推荐互动
-**纪念日触发**: 阶段适配（见 profile-schema.md 阶段适配策略表）

### 5. 家·家庭幸福感
-**日常**: 基于 family_relations 推荐家庭互动
-**触发**: 父母生日/节假日接近时升级建议

### 6. 我·自我幸福感
-**日常**: 基于 mood_keywords + work_pressure 推荐自我关怀行动
-**示例**: 压力高→放松建议；情绪低→微小治愈行动；成就→庆祝引导

## 吃维度情境增强

| 感知信号 | 推荐方向 | 示例 |
|---------|---------|------|
| 临近周末/周末 | 仪式感菜品：需稍花时间但幸福感高 | "周末花30分钟做班尼迪克蛋" |
| 心情愉悦 | 社交型美食：适合分享/聚会/打卡 | "约朋友去试那家收藏了一个月的泰式餐厅" |
| 心情失落 | 治愈系 comfort food：温暖熟悉，门槛极低 | "楼下便利店关东煮+热豆浆，今天就这一件小事" |
| 工作日高压 | 快速修复型：高满足感极简操作 | "剩咖喱微波5分钟+溏心蛋，5分钟满足感满分" |
| 旅行中 | 探索型：当地特色+性价比+不踩坑 | "本地人常去的苍蝇馆子，评分不高回头率惊人" |

**核心原则**：不追求营养学精确，只追求幸福感最大化。

## 星级计算算法

### 三维匹配

```
star_score = user_match × target_match × timing_match × novelty
```

- **user_match** (0~1): 建议与用户画像维度的匹配度。高置信度维度匹配权重 ×2
- **target_match** (0~1): 建议与目标对象画像的匹配度（无目标对象时=1）
- **timing_match** (0~1): 时机场合契合度。纪念日临近+0.3，节假日+0.2，周末+0.1，情绪低落+0.15
- **novelty** (0~1): 新鲜度。建议类型最近 7 天未出现=1.0，出现过=0.7

### 分级阈值

- ★★★：star_score ≥ 0.7  → 高匹配+高时机+新鲜
- ★★ ：0.4 ≤ star_score < 0.7 → 中等匹配或时机一般
- ★   ：star_score < 0.4 → 尝试性建议

### 计算辅助

调用 `profile_manager.get_high_confidence_dimensions()` 获取高置信度维度，这些维度在 user_match 中权重翻倍。

## 输出格式规范

每条建议 = 星级 + 建议内容 + "为什么适合你"（一句话）+ 一个小行动

### 示例

```
★★★ 今晚去楼下那家酸汤面
你本周压力值偏高，酸味食物有助缓解。步行3分钟就到，不用纠结。
→ 现在就穿上鞋，走到楼下，点一碗。

★★ 周末花30分钟做一份班尼迪克蛋
你最近对烘焙/料理表现出兴趣，这道菜刚好在"有点挑战但不难"的甜蜜点。
→ 周六早上提前买好鸡蛋和荷兰酱材料。

★ 给阳台上添一盆薄荷
你说过想给房间加点生气，薄荷好养且随取随用。
→ 路过花店时花5块钱带一盆回家。
```

末尾轻量互动入口，如"想换个方向吗？"或"需要我帮你记下来吗？"，不强制不啰嗦。

## 食谱推荐子模块

### 基础匹配
- carb_control=严控 → 标注低碳水选项
- calorie_tracking=经常 → 附热量估算
- taste_prefs → 口味匹配
- frequent_areas → 优先该区域餐厅
- consumption_tier → 仅内部过滤，不输出

### 幸福感增强
见上方「吃维度情境增强」表。

### 输出示例（吃维度）
```
★★★ 酸汤面 — 楼下老马家
酸辣正好匹配你的口味。步行3分钟，今晚不用纠结。
→ 现在就下楼，配一杯冰豆浆。
```