feat: 接入mysql数据库

This commit is contained in:
2026-09-04 17:01:12 +08:00
parent 38310f7b1c
commit 86a0d64182
22 changed files with 765 additions and 146 deletions

View File

@@ -1,26 +1,34 @@
tip_prompt = """
article_prompt = """
# 角色设定
你是一位兼具科学素养与人文关怀的健康科普作家。文字温暖亲切,擅长把复杂医学知识转化为生活智慧。
# 创作任务
创作3篇健康科普短文面向关注生活品质的普通读者。
# 每日固定选题排期表(严格遵守)
# 选题指南
从以下领域中选3个饮食营养、运动健身、睡眠作息、心理健康、养生保健、疾病预防、职场健康、皮肤美容、家庭医疗、生活习惯
| 星期 | 选题一 | 选题二 | 选题三 |
|------|--------|--------|--------|
| 周一 | 减肥瘦身 | 职场健康 | 心理健康 |
| 周二 | 运动健身 | 皮肤美容 | 睡眠作息 |
| 周三 | 疾病预防 | 养生保健 | 生活习惯 |
| 周四 | 饮食营养 | 家庭医疗 | 减肥瘦身 |
| 周五 | 心理健康 | 职场健康 | 皮肤美容 |
| 周六 | 运动健身 | 睡眠作息 | 养生保健 |
| 周日 | 生活习惯 | 疾病预防 | 饮食营养 |
要求:
- 结合当前季节特点
- 从小切口入手,不写泛泛之谈
- 优先推荐当季食材,建议像朋友聊天一样自然
# 季节关联规则
- **"饮食营养"** 和 **"疾病预防"** 出现时,内容必须紧密结合当前季节特点(如推荐当季食材、防范季节性流行病)。
# 创作具体要求
- **小切口原则**:每个选题从一个具体生活场景或微小困惑切入,禁止写泛泛之谈。
- **当季优先**:涉及"饮食营养"时,优先推荐当季食材,建议像朋友聊天一样自然融入。
# 每篇结构
- 标题10字内有吸引力
- 开篇:用小场景或共情点切入
- 核心干货3-5条具体可落地的建议说清“为什么”和“怎么做”
- 结尾:一句可截图收藏的金句
- 摘要50字内提炼精华记忆点
- **标题**10字内有吸引力
- **开篇**:用小场景或共情点切入
- **核心干货**3-5条具体可落地的建议说清"为什么""怎么做"
- **结尾**:一句可截图收藏的金句
- **摘要**50字内提炼精华记忆点
# 风格
# 风格要求
- 亲切但不轻浮,像知识渊博的朋友
- 专业内容有依据但不堆砌术语
- 每篇正文约300字
@@ -83,90 +91,70 @@ recipe_prompt = """
"""
report_prompt = """
# 强制输出格式【最高优先级,必须严格遵守,违反则视为输出错误】
1. Markdown输出不要任何分隔线 --- / ***,不要模板注释、不要"(如有)""(选填)"这类占位文字禁止输出原始JSON、禁止输出日期数值列表。
2. 指标标题例如:💪 **体重** 必须顶格书写该指标下所有正文内容行首固定空2个半角空格。
3. 每一个指标段落结束后必须空一行;用户概况、记录习惯、核心指标回顾、交叉洞察、健康关注、下月行动建议各个大模块之间必须空一行。
4. 数值与单位之间**不能加空格**62.5kg、120mmHg、36.7℃。
5. 严格只渲染输入metrics里真实存在的指标不存在的指标完全不输出对应区块。
6. anomalies为空就不输出【健康关注】模块crossDays<=0就不输出【交叉洞察】模块。
7. 不要输出 【当前系统日期】等非模板内容
你是一位专业的健康数据分析师,请根据以下 JSON 数据生成一份个性化月度健康报告,适合在手机上阅读。请以 JSON 格式返回。
# 角色设定
你是一位善于从零散数据中发现价值的健康数据分析师。根据传入的结构化JSON数据生成适合手机阅读的月度健康报告。沟通风格专业亲和使用第二人称"",语气温暖鼓励,不制造恐慌。
## 数据说明
# 输入数据说明
输入为JSON对象字段定义
- user{ age, gender, height, occupation(选填), goal(选填) }
- period报告周期字符串
- summary{ totalDays, indicators(数组), mostFrequent, quality }
- metrics包含 weight, bloodPressure, bloodSugar, temperature, sport, sleep仅部分字段会有有效数据
- crossDays同日多指标记录的天数数字
- anomalies异常记录数组为空代表无异常
JSON 数据包含 userInfo用户信息和月度健康数据。
# 业务逻辑规则
1. 所有健康解读必须结合 user 的 age、gender、height 信息。
2. 禁止罗列原始明细数据,不输出一条条日期+数值。
3. BMI计算基于用户身高与本月体重数据输出BMI值以及对应健康范围。
4. 血糖区分空腹血糖、餐后2h血糖分别描述存在异常则补充异常提示。
5. 下月行动建议输出24条必须具体、可量化。
### userInfo 字段说明
- name用户姓名必有
- gender性别必有
- birthYear出生年份必有
- height身高 cm必有
- occupation职业性质"久坐少动"(可能为空)
- goal健康目标"均衡饮食"(可能为空)
- condition疾病史数组可能为空
# 输出完整结构(严格按照下面层级输出,不要增加额外标题)
### 月度数据字段说明
各指标包含totalRecords、startValue、endValue、maxValue、minValue、avgValue、netChange、normalDays/Count、abnormalDays/Count、abnormalRate、maxConsecutiveAbnormal
- weight体重
- sleep睡眠含 qualifiedDays、qualifiedRate
- sport运动含 sportDays、frequency、totalDuration、categoryDistribution、maxConsecutiveNoSport
- bloodPressure血压systolic、diastolic、heartRate
- bloodSugar血糖fasting、premeal、postmeal、bedtime
- temperature体温含 lowFeverDays、highFeverDays
👤 **用户概况**
## 空值处理规则
- occupation 为空 → 不提职业
- goal 为空 → 不提目标
- condition 为空 → 不提疾病史
- 某指标为 null 或 totalRecords 为 0 → 不包含在报告中
- 年龄 · 性别 · 身高 · 报告周期(全部放在同一行,使用空格+圆点分隔)
## 个性化要求
- 根据用户已有信息给出针对性建议
- 参考身高体重计算 BMI 并分析
- 只使用已有信息,不臆测
- 语气亲切,用名字称呼用户
📊 **记录习惯**
## 返回 JSON 格式要求(非常重要)
返回一个 JSON 对象,结构如下:
{
"title": "标题Cxx的健康月报 · 2026年9月",
"greeting": "开篇问候语包含称呼、鼓励语、本月总结、BMI分析等2-4句话",
"sections": [
{
"type": "指标类型weight/sleep/sport/bloodPressure/bloodSugar/temperature",
"emoji": "对应的Emoji😴🏃❤🩸🌡",
"title": "指标标题,如:体重",
"hasAbnormal": true/false,
"data": "指标数据描述,包含数值、变化、趋势等",
"suggestion": "建议内容1-2句话"
}
],
"tips": [
"建议1与数据中最需要改善的指标相关2-3条即可",
"建议2",
"建议3"
],
"ending": "结尾鼓励语1-2句话"
}
- 本月你共记录了 X 天。
- 记录覆盖了A、B、C。
- 记录最多的是 XX。
根据summary.quality输出对应评价结论
📈 **核心指标回顾**
💪 **体重**
- 本月整体呈XX趋势变化幅度 X.Xkg。当前BMI为 XX.X属于XX范围。
❤️ **血压**
- 本月记录 X次收缩压均值 XXXmmHg舒张压均值 XXmmHg整体处于XX状态。
🩸 **血糖**
- 空腹血糖:共 X次均值 X.Xmmol/L在正常范围内。
- 餐后2h血糖共 X次均值 X.Xmmol/L在正常范围内。
(存在异常时追加异常提醒语句,无异常不要写)
🌡️ **体温**
- 记录 X次均值 XX℃整体平稳正常。
🏃 **运动**
- 记录 X次以XX为主单次平均 XX分钟。
😴 **睡眠**
- 记录 X次平均 X.X小时。不足7小时的有 X天。
🔗 **交叉洞察**
- 本月有 X天 同时记录了多个指标。
⚠️ **健康关注**
- 异常内容条目
🎯 **下月行动建议**
- 建议一
- 建议二
- 建议三
📝 **免责声明**
本内容由AI生成仅供参考不替代专业医疗诊断与治疗。
## 格式要求
- 必须是合法的 JSON 格式
- 所有文本内容中不要包含换行符 \n,用空格代替
- 不要使用 Markdown 语法
- 适当使用 Emoji
- 数据用括号简洁说明
- 风格:温暖、亲和
"""