mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-14 22:50:51 +00:00
Extends the v1.4 AI insights memory pattern established in PR #129 (general-status, blood-pressure-status) to the rest of the insight surfaces. Each generator now reads its previous cached narrative via `getPreviousInsightContext()` and injects the formatted block into the user prompt so the model can call out improvements / regressions relative to the user's last analysis instead of restating the status from scratch every day. Scopes wired in this commit: - weight-status - pulse-status - bmi-status - mood-status - medication-compliance-status No UI changes are needed — the insights card already renders the comparison phrases the model emits. No schema change either; the helper reads from the existing audit-log cache rows each generator already writes to. Co-authored-by: Marc-André Bombeck <noreply@anthropic.com>
50 lines
2.4 KiB
TypeScript
50 lines
2.4 KiB
TypeScript
import type { Locale } from "@/lib/i18n/config";
|
|
import { getBaseSystemPrompt } from "./base-system";
|
|
|
|
const MOOD_SECTION_DE = `FACHSPEZIFISCH -- STIMMUNG/WOHLBEFINDEN:
|
|
- Stimmungsskala: 1 (sehr schlecht) bis 5 (sehr gut), Tagesmittelwerte.
|
|
- Trend-Stabilitat: Schwankungen < 0.5 Punkte uber 7 Tage sind normal.
|
|
- Anhaltende Phasen: Mehr als 3 Tage unter 2.5 oder uber 4.5 sind auffallig.
|
|
- Zusammenhange: Stimmung korreliert haufig mit Schlaf, Aktivitat, Blutdruck und Medikamenten-Compliance.
|
|
- Tags: Falls Stimmungs-Tags vorhanden sind, prufe ob bestimmte Tags mit Stimmungslevels korrelieren.
|
|
- Cross-Metrik: Korrelationen zu Gewicht, Blutdruck oder Puls nur erwähnen wenn der jeweilige r-Wert im Snapshot vorhanden und |r| > 0.4 ist. Falls das Feld nicht im Snapshot vorhanden ist, keine Korrelation interpretieren oder erfinden.
|
|
- Erzwinge keine Querverweise wenn kein klares Muster erkennbar ist.`;
|
|
|
|
const MOOD_SECTION_EN = `DOMAIN — MOOD / WELL-BEING:
|
|
- Mood scale: 1 (very bad) to 5 (very good), daily means.
|
|
- Trend stability: Swings < 0.5 points over 7 days are normal.
|
|
- Persistent phases: More than 3 days below 2.5 or above 4.5 are notable.
|
|
- Associations: Mood often correlates with sleep, activity, blood pressure and medication compliance.
|
|
- Tags: If mood tags are present, check whether specific tags align with mood levels.
|
|
- Cross-metric: Mention correlations to weight, blood pressure or pulse only when the relevant r-value is present in the snapshot and |r| > 0.4. If the field is missing, do not interpret or invent a correlation.
|
|
- Do not force cross-links when no clear pattern is visible.`;
|
|
|
|
export function getMoodSystemPrompt(locale: Locale): string {
|
|
const section = locale === "en" ? MOOD_SECTION_EN : MOOD_SECTION_DE;
|
|
return `${getBaseSystemPrompt(locale)}
|
|
|
|
${section}`;
|
|
}
|
|
|
|
export function getMoodUserPrompt(
|
|
snapshotJson: string,
|
|
todayKey: string,
|
|
locale: Locale,
|
|
previousContextBlock?: string,
|
|
): string {
|
|
const ctxBlock =
|
|
previousContextBlock && previousContextBlock.trim().length > 0
|
|
? `\n\n${previousContextBlock}\n`
|
|
: "";
|
|
if (locale === "en") {
|
|
return `Date: ${todayKey} (Europe/Berlin)
|
|
Analyse the mood data with focus on trend, stability and links to other health metrics.${ctxBlock}
|
|
|
|
${snapshotJson}`;
|
|
}
|
|
return `Datum: ${todayKey} (Europe/Berlin)
|
|
Analysiere die Stimmungsdaten mit Fokus auf Trend, Stabilitat und Zusammenhange mit anderen Gesundheitsmetriken.${ctxBlock}
|
|
|
|
${snapshotJson}`;
|
|
}
|