Evidensmotor (ECM v1.0): ingen slutsats utan underlag

Regelmotorn kodar plattformens viktigaste princip: systemet får aldrig
anta att en kontroll är utförd eller att dokumentation finns. Varje
påstående måste kunna härledas till evidens i händelseloggen.

- Nytt versionshanterat regelbibliotek (src/felsokning/ecm.ts, ECM v1.0):
  evidensnivåer E0–E6 härledda ur loggen, fullbordansregler och
  kvalitetsgrind — skilt från applikationslogiken
- Fullbordansregel i guiden: en kontroll slutförs med evidens ELLER
  uttryckligt undantag "Underlag kan inte tas fram" med obligatorisk
  orsak — loggas och flaggas ⚠ i brief, överlämning och rapport
- Kvalitetsgrind före slutrapport: utskriften spärrad tills
  objektidentifiering, metodikens kontroller, fotokrav och evidensnivå
  är gröna; varje röd rad visar exakt vad som saknas
- Orkesterns grundprompt utökad: aldrig "OK/kontrollerad/inga fel" utan
  evidens — skriv "Evidens saknas" och begär rätt underlag (foto/video/
  mätvärde/skärmfoto)
- Visual-first instrumentavläsning: ny vision-uppgift läser multimetrar,
  diagnosskärmar m.m. — värden/enheter/felkoder med konfidens, teknikern
  bekräftar, originalbilden loggas alltid bredvid strukturerad data;
  kameran är integrationslagret, inga verktygsintegrationer krävs
- Terminologi: "AI" ersatt med systemspråk i hela gränssnittet
  (Beslutsstöd, Systemet analyserar, Granskning av underlaget …)
- Dokumentation: docs/moduler/evidensmotor.md; 41 vitest-tester

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
Claude
2026-08-03 09:05:04 +00:00
parent a197ee10ca
commit e8cf6db236
12 changed files with 761 additions and 32 deletions
+5 -1
View File
@@ -34,7 +34,9 @@ Demomanus för visning: [DEMO.md](DEMO.md). Knappen **Skapa demoärende** på st
| Dashboard | ✅ Enligt direktivet: räknare och filter för Alla/Pågående/Klara plus Starta nytt ärende. |
| Ärendestart via arbetsorder | ✅ Primärvägen när ett ärende startas: fota arbetsorderns framsida — orkesterns dokumenttolkning (Claude Sonnet 5, vision) läser kund-, fordons- och verkstadsuppgifter oavsett layout och sätter konfidens per fält. 🟢 ≥95 % godkänns automatiskt, 🟡 8095 % markeras för genomläsning, 🔴 <80 % kräver aktiv bekräftelse — teknikern granskar bara osäkra fält. Visuell granskning med dokumentet bredvid fälten (klick markerar ungefärlig position), sedan skapas hela ärendet med ett tryck. Tolkningen loggas som organisationsintern händelse (`arbetsorder_skannad`) och delas aldrig i kund-/partnervyer. Manuell inmatning finns kvar som andrahandsväg; i lokalt läge visas en tydligt märkt demo-tolkning. Inloggade användare tillfrågas aldrig om namn — kontot vet redan. |
| Inställningar | ✅ Systemadministratören väljer vilka objekttyper och identifieringsmetoder som visas när ett ärende startas (`/felsokning/installningar`). På plattformen gäller valet hela organisationen (sparas på organisationen, endast admin får ändra — verifierat i integrationstestet); i lokalt läge gäller valet enheten. Okända värden filtreras och tomma listor faller tillbaka till standard. |
| Utskrift | ✅ Kundrapport och Live Share-vy skrivs ut svart på vitt; interaktiva element döljs automatiskt. |
| Evidensmotor (ECM) | ✅ Versionshanterat regelbibliotek ([moduler/evidensmotor.md](moduler/evidensmotor.md), `src/felsokning/ecm.ts`, ECM v1.0): evidensnivåer E0E6 härledda ur loggen, fullbordansregeln *evidens eller dokumenterat undantag med obligatorisk orsak* ("Underlag kan inte tas fram" i guiden, flaggas ⚠ i brief/rapport), och **kvalitetsgrind före slutrapport** — utskrift spärrad tills objektidentifiering, kontroller, fotokrav och evidensnivå är gröna. Regeln "skriv aldrig OK/kontrollerad/inga fel utan evidens — skriv Evidens saknas" är kodad i orkesterns grundprompt. |
| Instrumentavläsning (visual-first) | ✅ Kameran som universellt gränssnitt: `📷 Instrument` i Dokumentera-panelen fotograferar multimetrar, diagnosskärmar, batteritestare m.m. — bildtolkningen identifierar instrumenttyp och extraherar värden/enheter/felkoder med konfidens per värde; teknikern bekräftar innan något loggas. Originalbilden loggas alltid tillsammans med de strukturerade mätvärdena — strukturerad data ersätter aldrig originalevidensen. Ingen integration mot diagnossystem krävs. |
| Utskrift | ✅ Kundrapport och Live Share-vy skrivs ut svart på vitt; interaktiva element döljs automatiskt. Utskriften går genom ECM-kvalitetsgrinden. |
| Öppet API | ✅ Plattforms-API:t är dokumenterat med OpenAPI 3.0 (`services/plattform/openapi.yaml`) — auth, användare, ärenden/händelser (append-only), översikt, publik delning och AI-orkestern, med scheman för alla händelsetyper. Specen valideras maskinellt, paritetstestas mot serverns rutter och serveras live på `GET /api/openapi.yaml`. |
## Arkitekturprinciper i koden
@@ -42,6 +44,8 @@ Demomanus för visning: [DEMO.md](DEMO.md). Knappen **Skapa demoärende** på st
- **Händelseloggen är enda sanningskällan.** `src/felsokning/domain.ts` definierar händelsetyperna; poster läggs endast till.
- **Alla vyer är projektioner.** `src/felsokning/projektioner.ts` — brief, tidsfördelning, överlämningstext och kundrapport är rena funktioner av loggen och kan alltid regenereras. Testerna i `src/felsokning/__tests__/` låser detta.
- **Metodikmotorn är deterministisk.** `src/felsokning/metodik.ts` — nästa steg härleds ur vad som redan dokumenterats. Det är här den framtida AI:n ansluter, utan att logg eller projektioner ändras.
- **Ingen slutsats utan evidens.** `src/felsokning/ecm.ts` — regelmotorn (ECM) validerar varje påstående mot händelseloggen: fullbordansregler, evidensnivåer och kvalitetsgrind. Kameran är integrationslagret (visual-first) — det som syns på en skärm eller ett instrument fotograferas och tolkas i stället för att integreras.
- **Terminologi.** Produkten beskrivs som ett evidensbaserat diagnossystem/intelligent beslutsstöd — i UI och kundkommunikation används *systemet/analysen/bedömningen/beslutsstödet*, aldrig "AI" om det inte är tekniskt nödvändigt.
- **Industriellt verkstads-UI (ETKA-inspirerat).** `src/felsokning/ui.tsx` — plana ljusgrå ytor (#ECECEC/#F7F7F7), skarpa kanter, djup marinblå som primärfärg, tät typografi (1115 px), rektangulära knappar (max 4 px radie), verktygsrad ~44 px. Ärendesidan har klassisk trekolumnslayout på skrivbord: navigationsträd (vyer + metodikstegens status) till vänster, arbetsyta i mitten, kontextpanel (teknisk information, tillförlitlighet, teknisk rekommendation) till höger; en kolumn med flikrad på smala skärmar.
## Medvetna avgränsningar
+108
View File
@@ -0,0 +1,108 @@
# Modul: Evidensmotorn (ECM — Evidence & Compliance Matrix)
**Version: ECM v1.0** · Regelbiblioteket är versionshanterat och skilt från
applikationslogiken (`src/felsokning/ecm.ts`). Vyerna anropar bara motorns
rena funktioner — regler kan uppdateras utan att applikationen byggs om.
## Grundprincip
**Inget underlag = ingen slutsats.**
Systemet får aldrig anta att en kontroll är utförd eller påstå att
dokumentation finns om den inte faktiskt är insamlad. Varje påstående i
diagnos, brief och slutrapport ska kunna härledas till minst en
evidenspost i händelseloggen. Systemet skriver aldrig "OK",
"kontrollerad", "inga fel" eller "åtgärdad" utan evidens — i stället:
**"Evidens saknas."** Regeln är kodad i orkesterns grundprompt och kan
inte kringgås från klienten.
## Evidensnivåer
| Nivå | Typ | Bevisvärde |
| --- | --- | --- |
| E0 | Inget underlag | 0 % |
| E1 | Teknikerns observation | Lågt |
| E2 | Foto | Medel |
| E3 | Video | Högt |
| E4 | Mätvärde | Högt |
| E5 | Diagnosdata/dokument (t.ex. skannad arbetsorder) | Mycket högt |
| E6 | Flera oberoende källor | Högsta |
Ärendets nivå härleds ur loggens faktiska innehåll (`evidensNiva`) och
visas i kvalitetsgrinden.
## Fullbordansregler
En kontrollpunkt kan bara slutföras när något av följande är sant:
1. **Krävd evidens är insamlad** — foto för det synliga, mätvärde för det
som mäts, kommentar där inget bättre är möjligt (metodikens
`krav`-fält per kontroll).
2. **Teknikern dokumenterar ett undantag**: *"Underlag kan inte tas
fram"* med **obligatorisk orsak** (komponenten oåtkomlig, fordonet kan
inte lyftas säkert, kunden avböjde demontering, dålig sikt, utrustning
saknas — eller fri text). Undantaget loggas i händelseloggen och
flaggas ⚠ i brief, överlämning och rapport — det redovisas aldrig som
"utförd".
## Kvalitetsgrind före slutrapport
Slutrapporten kan inte genereras förrän grinden är godkänd
(`kvalitetsgrind`/`grindGodkand`):
| Kontroll | Krav |
| --- | --- |
| Fordons-/objektidentifiering verifierad | Obligatorisk |
| Arbetsorder inläst | Rekommenderas |
| Metodikens kontroller: evidens eller dokumenterat undantag | Obligatorisk |
| Foton finns för fotokrävande kontroller | Obligatorisk |
| Hypoteser redovisas som ej verifierade | Informativ (alltid sant per konstruktion) |
| Evidensnivå över E0 | Obligatorisk |
Utskriftsknappen är spärrad tills varje obligatorisk rad är grön; varje
röd rad visar exakt vad som saknas.
## Visual-first: kameran är integrationslagret
Plattformen prioriterar visuell insamling framför systemintegrationer.
När information redan visas på en skärm, ett instrument, en utskrift
eller en etikett fotograferas den — bildtolkningen extraherar, validerar
och strukturerar informationen automatiskt. Ingen specialintegration
behövs mot Bosch, TEXA, Autel, Launch, Hella Gutmann m.fl. så länge en
människa kan läsa informationen.
- **Arbetsorder** → ärendestartens dokumenttolkning (fält + konfidens).
- **Instrument/diagnosskärmar** → `📷 Instrument` i Dokumentera-panelen:
foto → typidentifiering (multimeter, diagnosdator, batteritestare,
mätarkluster, manometer …) → värden med enhet och konfidens → teknikern
bekräftar → **originalbilden loggas alltid tillsammans med de
strukturerade värdena** — strukturerad data ersätter aldrig
originalevidensen.
Värden med hög säkerhet godkänns automatiskt; osäkra markeras för
granskning — samma konfidensmodell som arbetsorderskanningen
(🟢 ≥95 %, 🟡 8095 %, 🔴 <80 %).
## Spårbarhet
Varje evidenspost är en händelse i den append-only-loggen med tidpunkt,
tekniker, ärende och innehåll — omöjlig att ändra i efterhand (triggers i
databasen). Det ger varje slutsats juridiskt spårbart underlag för kund,
försäkringsbolag eller domstol.
## Terminologi
Produkten beskrivs aldrig som en "AI-app" utan som ett **evidensbaserat
diagnossystem** / **intelligent beslutsstöd**. I användargränssnitt och
dokument används *systemet, analysen, bedömningen, tolkningen,
bildtolkningen, beslutsstödet, regelmotorn* — inte "AI", om det inte är
tekniskt nödvändigt (t.ex. i arkitekturdokumentation om modellorkestern).
## Kommande (regelbibliotekets väg framåt)
- Områdesregler per komponent (däck: fyra bilder + DOT + dimension;
bromsar: närbild per ok; motorljud: video med ljud …) som
serverdistribuerade, versionerade regelpaket.
- Video- och ljudevidens (E3) med analys.
- Garanti-/försäkrings-/reklamationsprofiler med egna obligatoriska
fält i kvalitetsgrinden.