From 0db412d66cd47e31158d93da2a80a0d1793baa61 Mon Sep 17 00:00:00 2001 From: curo1305 Date: Thu, 4 Jun 2026 23:22:08 +0200 Subject: [PATCH] feat(07-05): frontend AI config client helpers + AdminAiConfigTab system section + Vitest tests - Add getAiConfig/saveAiConfig/testAiConnection to frontend/src/api/client.js - AdminAiConfigTab.vue: add System AI Providers section above existing per-user table - Per-provider accordion (10 providers from PROVIDER_DEFAULTS) - Write-only API key field (never pre-filled), base URL, model, context_chars inputs - Set Active (atomic flip), Save, Test Connection buttons with inline badges - Existing per-user ai-config table and saveConfig logic untouched (Pitfall 6) - Create frontend/tests/api.spec.js: 4 Vitest tests for getAiConfig/saveAiConfig/testAiConnection - All 127 frontend tests pass, build exits 0 (D-11 frontend coverage) --- frontend/src/api/client.js | 21 ++ .../src/components/admin/AdminAiConfigTab.vue | 241 ++++++++++++++++++ frontend/tests/api.spec.js | 84 ++++++ 3 files changed, 346 insertions(+) create mode 100644 frontend/tests/api.spec.js diff --git a/frontend/src/api/client.js b/frontend/src/api/client.js index f6f5f54..d466746 100644 --- a/frontend/src/api/client.js +++ b/frontend/src/api/client.js @@ -290,6 +290,27 @@ export function adminDeleteUser(id, adminPassword) { }) } +// ── System AI Provider Configuration (D-08, D-15) ─────────────────────────── + +export function getAiConfig() { + return request('/api/admin/ai-config', { method: 'GET' }) +} + +export function saveAiConfig(body) { + return request('/api/admin/ai-config', { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(body), + }) +} + +export function testAiConnection(providerId) { + return request( + '/api/admin/ai-config/test-connection?provider_id=' + encodeURIComponent(providerId), + { method: 'GET' } + ) +} + // ── Folders ─────────────────────────────────────────────────────────────────── export function listFolders(parentId = null) { diff --git a/frontend/src/components/admin/AdminAiConfigTab.vue b/frontend/src/components/admin/AdminAiConfigTab.vue index afee257..334751b 100644 --- a/frontend/src/components/admin/AdminAiConfigTab.vue +++ b/frontend/src/components/admin/AdminAiConfigTab.vue @@ -1,5 +1,150 @@