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
        """
    }
}
