diff --git a/api/_lib/researchAnalysis.ts b/api/_lib/researchAnalysis.ts index 8b9ef93..f2eca53 100644 --- a/api/_lib/researchAnalysis.ts +++ b/api/_lib/researchAnalysis.ts @@ -102,7 +102,7 @@ const BATCH_SIZE = 5 * claude-sonnet-5 ≈ 0.20 USD * claude-haiku-4-5 ≈ 0.08 USD für eine Ja/Nein-Einordnung meist ausreichend */ -const MODEL = process.env.LIVIA_RESEARCH_MODEL ?? 'claude-opus-5' +export const MODEL = process.env.LIVIA_RESEARCH_MODEL ?? 'claude-opus-5' /** * Wie viel Artikeltext das Modell zu lesen bekommt. diff --git a/api/livia/research/refresh.ts b/api/livia/research/refresh.ts index 8140bcd..1dcfdc0 100644 --- a/api/livia/research/refresh.ts +++ b/api/livia/research/refresh.ts @@ -21,7 +21,7 @@ import { fetchZefixResearch, } from '../../_lib/researchSources.js' import type { ResearchItem } from '../../_lib/researchSources.js' -import { analyzeResearchItems } from '../../_lib/researchAnalysis.js' +import { MODEL, analyzeResearchItems } from '../../_lib/researchAnalysis.js' import type { ResearchRefreshResult, ResearchSourceResult } from '../../../src/domain/researchLead.js' interface Quelle { @@ -80,6 +80,7 @@ export default async function handler(req: IncomingMessage, res: ServerResponse) watchlist: 0, leads: [], refreshedAt: new Date().toISOString(), + model: MODEL, } if (items.length === 0) { diff --git a/src/components/research/ResearchWorkspace.tsx b/src/components/research/ResearchWorkspace.tsx index cbd4f03..608fbd6 100644 --- a/src/components/research/ResearchWorkspace.tsx +++ b/src/components/research/ResearchWorkspace.tsx @@ -80,6 +80,7 @@ export function ResearchWorkspace() { {`${ergebnis.watchlist} Watchlist · `} {`${ergebnis.leads.length} ${ergebnis.leads.length === 1 ? 'relevante Entwicklung' : 'relevante Entwicklungen'}`} {` · Stand ${new Date(ergebnis.refreshedAt).toLocaleTimeString('de-CH', { hour: '2-digit', minute: '2-digit' })}`} + {ergebnis.model && ` · Modell ${ergebnis.model}`} )} diff --git a/src/domain/researchLead.ts b/src/domain/researchLead.ts index 8e2aa06..8e49143 100644 --- a/src/domain/researchLead.ts +++ b/src/domain/researchLead.ts @@ -72,6 +72,14 @@ export interface ResearchRefreshResult { leads: ResearchLead[] /** Zeitpunkt des Laufs, ISO. */ refreshedAt: string + /** + * Welches Modell die Einordnung vorgenommen hat. + * + * Wird angezeigt, weil die Modellwahl über eine Umgebungsvariable läuft und + * man sonst nirgends in der Anwendung sähe, welche gerade gilt — eine + * Einstellung, die man nur im Hosting-Dashboard prüfen kann, prüft niemand. + */ + model: string /** * Gesetzt, wenn die Analyse nicht laufen konnte — etwa weil serverseitig * kein Schlüssel hinterlegt ist. Die Oberfläche sagt das dann offen, statt