export const HEALTH_EVENT_NOTIFICATION_TYPES = Object.freeze({ alert: 'health_event_alert', watch: 'health_event_watch', }); export function shouldCreateWebNotification(severity) { return severity === 'watch' || severity === 'alert'; } export function shouldAttemptWechatNotification(severity) { return severity === 'alert'; } export function healthEventNotificationType(severity) { if (severity === 'alert') return HEALTH_EVENT_NOTIFICATION_TYPES.alert; if (severity === 'watch') return HEALTH_EVENT_NOTIFICATION_TYPES.watch; return null; } export function buildHealthEventNotificationCopy(event = {}) { const severity = String(event.severity ?? 'info'); const message = String(event.message ?? event.agentSummary ?? '检测到新的健康变化').trim(); if (severity === 'alert') { return { title: '健康提醒:需要关注', body: `${message}\n\n这不是医疗诊断。异常会记录在你的健康档案,并在你下次进入时优先展示。`, }; } if (severity === 'watch') { return { title: '健康变化提示', body: `${message}\n\n建议继续按规范测量;如持续变化,可将趋势记录提供给医生评估。`, }; } return { title: '健康记录更新', body: message, }; } export function formatHealthAlertsPreamble(alerts = []) { if (!alerts.length) return ''; const lines = [ '【未读健康提醒】', '以下变化已记录在你的健康档案(不是医疗诊断)。请确认已知晓后再继续操作:', '', ]; for (const alert of alerts.slice(0, 5)) { const prefix = alert.severity === 'alert' ? '⚠️' : '•'; lines.push(`${prefix} ${alert.message ?? alert.agentSummary ?? '健康变化'}`); } if (alerts.length > 5) { lines.push(`… 另有 ${alerts.length - 5} 条提醒`); } lines.push('', '回复「知道了」确认已读;确认后才会显示功能菜单。'); return lines.join('\n'); } export function isHealthAlertsAckText(text = '') { const normalized = String(text ?? '').trim(); return ['知道了', '已知悉', '确认', 'ok', 'OK', '好'].includes(normalized); }