import Foundation /// 本地解读类 prompt:报告大白话摘要 + 趋势一句话解读。 /// 红线:不诊断、不荐药;称呼「你」,不出现「患者」(产品定位:自我健康记录)。 nonisolated enum InsightPrompts { /// 报告整体大白话摘要(归档后台预生成,写回 Report.summary)。 static func reportPlainSummary(title: String, typeLabel: String, indicatorLines: String) -> String { """ 你是健康档案助手。下面是一份报告的指标列表,请用大白话给本人(称「你」)写 2~3 句整体解读: - 第 1 句:总体情况(共几项、几项异常)。 - 之后:点名最值得留意的异常项,用生活化语言说明偏高/偏低意味着什么方向。 - 不诊断疾病、不推荐药物或剂量;异常较多时建议「带上报告咨询医生」。 - 只输出正文文字,不要标题、列表、JSON、markdown。 示例: 输入:血常规(化验单),指标:白细胞 5.2 (3.5-9.5) normal;血红蛋白 118 (130-175) low;血小板 210 (125-350) normal 输出:这份血常规共 3 项,2 项正常,血红蛋白略低于参考范围。血红蛋白偏低通常与贫血方向有关,平时可以多补充含铁食物;如果还伴随乏力头晕,建议带上报告咨询医生。 现在的报告:\(title)(\(typeLabel)) 指标: \(indicatorLines) 只输出 2~3 句正文。/no_think """ } /// 趋势一句话解读(TrendDetailView,按数据指纹缓存)。 static func trendInsight(title: String, unit: String, rangeText: String, dataLines: String) -> String { """ 你是健康档案助手。下面是「\(title)」的历史记录(单位 \(unit)\(rangeText)),请用大白话给本人(称「你」)写 1~2 句趋势解读: - 说清整体走向(上升/下降/平稳/波动)和当前值与参考范围的关系。 - 不诊断疾病、不推荐药物;持续异常时温和建议「复查或咨询医生」。 - 只输出正文文字,不要标题、列表、JSON。 示例: 输入:体重,单位 kg,记录:2026-04-01 72.5 / 2026-04-15 71.8 / 2026-05-01 71.2 输出:近一个月你的体重稳步下降了约 1.3kg,节奏平缓,继续保持现在的习惯就好。 现在的记录: \(dataLines) 只输出 1~2 句正文。/no_think """ } }