feat(livia): das verwendete Modell steht im Ergebnis

Die Modellwahl läuft über eine Umgebungsvariable im Hosting-Dashboard. Damit
sah man nirgends in der Anwendung, welches Modell gerade urteilt — und eine
Einstellung, die man nur im Dashboard prüfen kann, prüft niemand.

Der Refresh gibt das Modell jetzt zurück, die Kopfzeile zeigt es neben dem
Zeitstempel. Wer wissen will, ob die Umstellung angekommen ist, sieht es dort,
wo er ohnehin hinschaut.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin SutterandClaude Opus 5 committed 2026-08-30 19:28:04 +02:00
1 parent c19f071acc
commit f0ef9c57d4
4 files changed
+12 -2

No files matched your search

+1 -1
View File
@@ -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.
+2 -1
View File
@@ -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) {
@@ -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}`}
</Typography>
)}
</Box>
+8
View File
@@ -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