|
|
@@ -621,6 +621,9 @@ PLAN_SYSTEM_PROMPT = """你是一个专业的家庭健康方案规划师。根
|
|
|
3. 建议要具体可执行,避免空泛
|
|
|
4. 营养补充部分要具体到产品类型和用量
|
|
|
5. 严重健康问题建议咨询医生
|
|
|
+
|
|
|
+## 画像数据使用指南
|
|
|
+如果提供了用户的画像数据(五维评分、身体指标、心理指标等),请结合这些真实数据给出更有针对性的建议。特别关注异常指标(如睡眠不足、压力偏高、运动频率低等),在方案中明确说明这些指标的现状和改善方向。
|
|
|
"""
|
|
|
|
|
|
REGENERATE_SECTION_SYSTEM_PROMPT = """你是一个家庭健康方案规划师。根据用户反馈重新生成指定部分内容。
|
|
|
@@ -699,6 +702,14 @@ async def health_plan_generate(req: HealthPlanRequest):
|
|
|
|
|
|
members_info, all_indicators, kb_results = await _collect_plan_data(java, retriever, req.member_ids or "", goal, req.dimensions or "")
|
|
|
|
|
|
+ # 获取每个成员的画像数据
|
|
|
+ for member in members_info:
|
|
|
+ try:
|
|
|
+ profile = await java.get_member_profile(int(member["id"]))
|
|
|
+ member["profile"] = profile
|
|
|
+ except Exception:
|
|
|
+ member["profile"] = {}
|
|
|
+
|
|
|
# 构建 prompt
|
|
|
parts = [PLAN_SYSTEM_PROMPT]
|
|
|
parts.append(f"\n## 用户目标\n{goal}")
|
|
|
@@ -706,7 +717,19 @@ async def health_plan_generate(req: HealthPlanRequest):
|
|
|
parts.append(f"\n## 重点关注维度\n{req.dimensions}")
|
|
|
parts.append("\n## 家庭成员")
|
|
|
for m in members_info:
|
|
|
+ profile = m.get("profile", {})
|
|
|
+ dims = profile.get("dimension_scores", {})
|
|
|
+ body = profile.get("body_metrics", {})
|
|
|
+ mind = profile.get("mind_metrics", {})
|
|
|
parts.append(f"- {m['name']} (年龄: {m['age']})")
|
|
|
+ if dims:
|
|
|
+ parts.append(f" 五维评分: 身{dims.get('body','?')} 智{dims.get('wisdom','?')} 心{dims.get('mind','?')} 行{dims.get('action','?')} 富{dims.get('wealth','?')}")
|
|
|
+ if body.get('sleep_dur_avg'):
|
|
|
+ parts.append(f" 平均睡眠: {body['sleep_dur_avg']}小时/天")
|
|
|
+ if mind.get('stress_avg'):
|
|
|
+ parts.append(f" 平均压力: {mind['stress_avg']}/10")
|
|
|
+ if body.get('exercise_count_week'):
|
|
|
+ parts.append(f" 周运动: {body['exercise_count_week']}次")
|
|
|
|
|
|
if all_indicators:
|
|
|
parts.append("\n## 健康指标摘要")
|