Målarkitekturen ur Master Prompt som kod:
- Webben containeriserad (flerstegs-Dockerfile → oprivilegierad nginx
med SPA-fallback, hashade assets cachas hårt, säkerhetsheaders).
- AI-orkestern som egen tjänst (services/ai-orkester): samma routing
och AI-regler som edge-funktionen men körbar som pod — egen
HS256-JWT-verifiering (fail closed), /halsa, storleksgränser,
read-only container som kör som node-användaren. Livetestad:
hälsokontroll ok, 401 utan/med ogiltig token, 400-validering bakom
giltig JWT.
- Kubernetes-manifest (infra/k8s, kustomize): namespace, Deployments
med readiness/liveness och åtstramad securityContext, Services,
HPA 2–10 pods på 70 % CPU, PodDisruptionBudgets, Ingress med TLS
via cert-manager, secret-mall (riktiga värden skapas utanför git).
- Klienten väljer AI-väg vid bygget: VITE_AI_ORKESTER_URL → tjänsten
i klustret, annars Supabase-edge-funktionen. Samma orkester i båda,
låst av paritetstest.
- CI-arbetsflöde: tester + produktionsbygge + verifierande
containerbyggen av båda bilderna på varje push/PR.
- docs/DRIFT.md: arkitekturdiagram, driftsättningssteg, skalning,
och vad som återstår mot full självhostning.
Verifierat: 27 vitest-tester gröna, produktionsbygge ok, alla
K8s-manifest YAML-validerade, orkestertjänsten livetestad,
Playwright-röktest grönt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
Plattformens AI-endpoint är nu en modellorkester — servern äger hela
routingtabellen (modell, effort, systemprompt, schema per uppgift), så
den justeras utan klientändringar:
- handledning → Claude Sonnet 5 (medium): realtidssvar på varje
bekräftad dokumentation — latenskänsligt på golvet.
- granskning → Claude Opus 5 (hög effort): motsägelser, luckor och
förhastade slutsatser i hela arbetsloggen; ny knapp
'AI-granska underlaget' i briefen.
- sammanfattning → Claude Sonnet 5 (låg effort): AI-komplettering av
överlämningen med risker & osäkerheter; ny knapp i
överlämningsdialogen.
- metodikval → Claude Haiku 4.5: klassificerar felbeskrivningen
när nyckelordsvalet inte träffar en specifik metodik;
valet sparas på ärendet (nytt fält metodikId).
Alla uppgifter delar AI-reglerna och det klassificerade svarsschemat;
modellen som svarade loggas i varje ai_svar-händelse och visas i UI:t.
Felbeskrivningsfältet fick även röstinmatning.
Verifierat: 26 vitest-tester gröna (inkl. att endpointen routar till
tre distinkta modeller och att granskningsprompten innehåller hela
loggen), produktionsbygge ok, båda Playwright-sviterna gröna.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
- Ny edge-funktion supabase/functions/felsokning-ai: äger Claude
API-nyckeln (serverhemligheten ANTHROPIC_API_KEY), systemprompten,
modellvalet (claude-opus-5) och svarsschemat. Kräver inloggad
användare (verify_jwt = true), validerar promptlängd och hanterar
refusal/fallback på serversidan.
- Klienten anropar plattformens endpoint via functions.invoke —
@anthropic-ai/sdk borttagen ur klientberoendena, ingen nyckel
hanteras eller lagras någonsin i webbläsaren.
- Nyckelpanelen på startsidan ersatt med statuspanel: AI-handledning
ingår i tjänsten; i lokalt läge (ej inloggad) guidar den
deterministiska metodiken ensam, utan felbrus.
- Master Prompt: onboarding utan API-nyckelsteg; nytt stycke om att
AI:n drivs av plattformen och att AI-reglerna inte kan kringgås
från klientsidan.
- Test låser att endpointen äger systemprompt, modell och schema.
Verifierat: 25 vitest-tester gröna, produktionsbygge ok, båda
Playwright-sviterna gröna.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
- AI-motor (ai.ts): Claude Opus 5 via officiella TypeScript-SDK:n.
Teknikerns bekräftade dokumentation skickas med ärendebriefen som
kontext; svaret är schema-bundet (structured outputs) och strikt
klassificerat enligt AI-reglerna: observation, verifierat, hypotes
(kräver alltid verifiering) och rekommendation, plus ETT konkret
nästa steg. Fryst systemprompt med promptcache; automatisk
server-side fallback till Anthropics rekommenderade reservmodell
när säkerhetsklassificerarna avböjer; refusal hanteras innan
innehållet läses.
- Onboarding enligt direktivet: organisationens Claude API-nyckel
läggs in på startsidan (maskerat fält). Utan nyckel guidar den
deterministiska metodiken ensam. MVP-varning: nyckeln lagras på
enheten och anropet görs från webbläsaren — i produktion via
backend.
- AI-svaren loggas som händelser med modellnamn och visas i guiden;
de är arbetsmaterial och filtreras ur kundrapport, Live Share och
databasens delningsfunktion, precis som hypoteser.
- Master Prompt uppdaterad: AI-wrapper ovanpå Claude API, standard-
modell claude-opus-5.
Verifierat: 25 vitest-tester gröna (inkl. promptbygge, svarstolkning
och systemprompt-regler), produktionsbygge ok, Playwright-röktest
genom hela flödet.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt