From 05eeaab3f7f2bcc7cd21581b811c5d41d6b8ee6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Tue, 31 Mar 2026 22:52:29 +0200 Subject: [PATCH] chore(settings): align default ai model handling --- .../src/components/admin/SystemSettingsClient.tsx | 5 +++-- .../admin/system-settings/AiSettingsPanels.tsx | 5 +++-- .../src/__tests__/settings-procedure-support.test.ts | 12 ++++++------ packages/api/src/router/settings-support.ts | 4 ++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/apps/web/src/components/admin/SystemSettingsClient.tsx b/apps/web/src/components/admin/SystemSettingsClient.tsx index 1558043..efa5236 100644 --- a/apps/web/src/components/admin/SystemSettingsClient.tsx +++ b/apps/web/src/components/admin/SystemSettingsClient.tsx @@ -1,5 +1,6 @@ "use client"; +import { DEFAULT_OPENAI_MODEL } from "@capakraken/shared"; import { useEffect, useState } from "react"; import { trpc } from "~/lib/trpc/client.js"; import { @@ -26,7 +27,7 @@ import { parseAzureUrl, type GeminiTestResult } from "./system-settings/shared.j export function SystemSettingsClient() { const [provider, setProvider] = useState("openai"); const [endpoint, setEndpoint] = useState(""); - const [model, setModel] = useState(""); + const [model, setModel] = useState(DEFAULT_OPENAI_MODEL); const [apiVersion, setApiVersion] = useState("2025-01-01-preview"); const [maxTokens, setMaxTokens] = useState(2000); const [temperature, setTemperature] = useState(1); @@ -80,7 +81,7 @@ export function SystemSettingsClient() { setProvider((settings.aiProvider ?? "openai") as Provider); setEndpoint(settings.azureOpenAiEndpoint ?? ""); - setModel(settings.azureOpenAiDeployment ?? ""); + setModel(settings.azureOpenAiDeployment ?? DEFAULT_OPENAI_MODEL); setApiVersion(settings.azureApiVersion ?? "2025-01-01-preview"); setMaxTokens(settings.aiMaxCompletionTokens ?? 2000); setTemperature(settings.aiTemperature ?? 1); diff --git a/apps/web/src/components/admin/system-settings/AiSettingsPanels.tsx b/apps/web/src/components/admin/system-settings/AiSettingsPanels.tsx index 7aa0b45..8bafd95 100644 --- a/apps/web/src/components/admin/system-settings/AiSettingsPanels.tsx +++ b/apps/web/src/components/admin/system-settings/AiSettingsPanels.tsx @@ -1,3 +1,4 @@ +import { DEFAULT_OPENAI_MODEL } from "@capakraken/shared"; import { InfoTooltip } from "~/components/ui/InfoTooltip.js"; import { INPUT_CLASS, @@ -153,14 +154,14 @@ export function AiProviderPanel({ id="ai-model" type="text" className={INPUT_CLASS} - placeholder={provider === "azure" ? "my-gpt4o-deployment" : "gpt-4o-mini"} + placeholder={provider === "azure" ? "capakraken-gpt-5-4" : DEFAULT_OPENAI_MODEL} value={model} onChange={(event) => onModelChange(event.target.value)} />

{provider === "azure" ? "The deployment name chosen when deploying the model in Azure." - : "The model identifier, for example gpt-4o-mini or gpt-4o."} + : `The model identifier, for example ${DEFAULT_OPENAI_MODEL} or gpt-5.4-pro.`}

diff --git a/packages/api/src/__tests__/settings-procedure-support.test.ts b/packages/api/src/__tests__/settings-procedure-support.test.ts index 8b9a4a3..610c14e 100644 --- a/packages/api/src/__tests__/settings-procedure-support.test.ts +++ b/packages/api/src/__tests__/settings-procedure-support.test.ts @@ -1,4 +1,4 @@ -import { SystemRole } from "@capakraken/shared"; +import { DEFAULT_OPENAI_MODEL, SystemRole } from "@capakraken/shared"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; const { @@ -90,7 +90,7 @@ describe("settings procedure support", () => { }, }), { aiProvider: "openai", - azureOpenAiDeployment: "gpt-4o-mini", + azureOpenAiDeployment: DEFAULT_OPENAI_MODEL, azureOpenAiApiKey: "should-be-ignored", smtpPassword: "also-ignored", }); @@ -105,11 +105,11 @@ describe("settings procedure support", () => { create: { id: "singleton", aiProvider: "openai", - azureOpenAiDeployment: "gpt-4o-mini", + azureOpenAiDeployment: DEFAULT_OPENAI_MODEL, }, update: { aiProvider: "openai", - azureOpenAiDeployment: "gpt-4o-mini", + azureOpenAiDeployment: DEFAULT_OPENAI_MODEL, }, }); expect(createAuditEntry).toHaveBeenCalledWith(expect.objectContaining({ @@ -117,7 +117,7 @@ describe("settings procedure support", () => { action: "UPDATE", after: expect.objectContaining({ aiProvider: "openai", - azureOpenAiDeployment: "gpt-4o-mini", + azureOpenAiDeployment: DEFAULT_OPENAI_MODEL, }), })); }); @@ -182,7 +182,7 @@ describe("settings procedure support", () => { systemSettings: { findUnique: vi.fn().mockResolvedValue({ aiProvider: "openai", - azureOpenAiDeployment: "gpt-4o-mini", + azureOpenAiDeployment: DEFAULT_OPENAI_MODEL, azureOpenAiApiKey: null, }), }, diff --git a/packages/api/src/router/settings-support.ts b/packages/api/src/router/settings-support.ts index bf538e6..7d936f7 100644 --- a/packages/api/src/router/settings-support.ts +++ b/packages/api/src/router/settings-support.ts @@ -1,4 +1,4 @@ -import { VALUE_SCORE_WEIGHTS } from "@capakraken/shared"; +import { DEFAULT_OPENAI_MODEL, VALUE_SCORE_WEIGHTS } from "@capakraken/shared"; import { z } from "zod"; import { isAiConfigured, @@ -238,7 +238,7 @@ export async function testRuntimeAiConnection(settings: { }); } - const model = configuredSettings.azureOpenAiDeployment ?? "gpt-4o-mini"; + const model = configuredSettings.azureOpenAiDeployment ?? DEFAULT_OPENAI_MODEL; return performAiConnectionFetch( provider, "https://api.openai.com/v1/chat/completions",