4dea6d2818
Sex oberoende domängranskningar av metodikbiblioteket, den enda text i systemet som säger åt en tekniker vad den ska göra med ett fordon: chassi, elsystem, högvolt, motor/drivlina, övriga system, plus en maskinell granskning av bibliotekets egna tre regler. Varje fynd verifierat före åtgärd, varje ersättning applicerad med träffkrav. Bokfört i docs/FACKGRANSKNING-2026-08.md (ALVA-DOC-0009); protokollet som gör den mänskliga granskningen per marknad utförbar i docs/FACKGRANSKNINGSPROTOKOLL.md (ALVA-DOC-0010). Granskat-flaggorna är oförändrade — detta höjer golvet, marknadens fackman sätter flaggan. Tio kritiska fynd åtgärdade. Tyngst: högvoltens skyddsutrustning och avspärrning låg SIST i säkerhetssekvensen — efter spänningsfrihets- mätningen — och står nu först med EN 60903/60900-krav; mätningen kräver CAT III och prova–mät–prova; frånskiljaren låses mot återinkoppling; metodiken säger nu vad som är förbjudet utan behörighet. Därtill: klimatets saknade f-gasgrind (nytt säkerhetssteg, högvoltens mönster), ADAS-provkörningen som instruerade att provocera nödbromsingrepp i trafik, öppna-aldrig-varmt för kylsystemet, trycksänkning och högtrycksförbud för bränsle, deaktiverad tändning/ insprutning före kompressionsprov, avgasutsug, provkörningsförbud vid bränsle-/bromsvätskeläckage, SRS-mätförbud — och klistringsfelet som lät engelska styrningsklagomål matcha högvoltsmetodiken (styrningens nyckelord låg i högvoltens lista; bekräftat av fyra granskare oberoende av varandra). Därutöver: referensvärden och villkor på mätningarna (startspänning, spänningsfall, laddspänning med smart laddning-reservation, vilostrom, CAN-terminering med gateway-reservation, AC-tryck vid föreskrivet varvtal), rätt metod där fel stod (säkringar mäts under last, krypström via mV-fall, spolskifte i stället för resistans, glappkontroll med avlastning efter fjädringstyp), och 23 nya kontroller där granskningen fann diagnostiska hål. 153 → 176 kontroller, samtliga med evidenskrav. Fasmodellen fick sista ordet där den och en granskare drog åt olika håll: vibrationens provkörning står kvar sist (Action går inte före Localization) och kör-först-substansen bor i symptomsteget; bromsarnas nya vägprov heter reproduktion och klassas som lokalisering — temperaturjämförelsen per hjul är avgränsning, inte åtgärd. Grindtexten för spänningslöshet kräver nu uttryckligen verifiering genom mätning, på alla tio språken. Grindfixturen fick sitt tredje foto när skyddsnätets felkodskontroll kom till — fixturen följer regeln, inte tvärtom (jfr T-13). 775 enhetstester, genomgång 4/4 inom interaktionsbudgeten (vibration 81/90 med de nya kontrollerna), portalspärr, integrationstest, typkontroll, lint på baslinjen, artefaktmätning och språkrunda gröna. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
108 lines
4.1 KiB
JavaScript
108 lines
4.1 KiB
JavaScript
// ALVA-modellen tillämpad på metodikbiblioteket.
|
|
//
|
|
// ALVA är en metod, inte ett gränssnitt. Om metoden bara fanns i
|
|
// marknadsföringen vore den en etikett på en wizard. Här är den den
|
|
// struktur som varje procedur faktiskt följer:
|
|
//
|
|
// A Analysis Samla fakta. Inte hypoteser.
|
|
// L Localization Avgränsa. Identifiera exakt område.
|
|
// V Verification Verifiera orsaken. Inte symptomet.
|
|
// A Action Utför korrigering. Verifiera resultat. Dokumentera.
|
|
//
|
|
// Varje steg i varje metodik hör till exakt en fas. Klassificeringen är
|
|
// data och inte en gissning i vyn, av två skäl: den ska gå att granska,
|
|
// och en procedur vars faser inte går ihop ska falla i test i stället
|
|
// för att se rätt ut på skärmen.
|
|
//
|
|
// ---- Varför just den här indelningen ---------------------------------
|
|
//
|
|
// Gränsen mellan L och V är den enda som är svår, och den är också den
|
|
// som bär hela metoden. Att mäta spänning vid en komponent är
|
|
// lokalisering — den avgränsar var felet finns. Att mäta spänningsfall
|
|
// över samma komponent under last är verifiering — den fastställer
|
|
// varför. Samma instrument, samma komponent, olika fas.
|
|
//
|
|
// Regeln vi tillämpar: ett steg är Verification när det kan avfärda en
|
|
// kandidatorsak. Kan det bara flytta uppmärksamheten är det Localization.
|
|
|
|
/** Steg-id → fas. Uttömmande; ett okänt steg-id faller i test. */
|
|
export const STEGFAS = {
|
|
// ---- Analysis: vad hände, när, var. Inga slutsatser. ----------------
|
|
sakerhet: "analysis", // Förutsättningen för att få samla fakta alls.
|
|
symptom: "analysis",
|
|
forutsattningar: "analysis",
|
|
grund: "analysis",
|
|
|
|
// ---- Localization: avgränsa området ---------------------------------
|
|
visuell: "localization",
|
|
felkoder: "localization",
|
|
avlasning: "localization",
|
|
koder: "localization",
|
|
buss: "localization",
|
|
inspelning: "localization",
|
|
lokalisering: "localization",
|
|
batteri: "localization",
|
|
glapp: "localization",
|
|
metod: "localization",
|
|
reproduktion: "localization", // vägprovet som pekar ut hjulet — avgränsning, inte åtgärd
|
|
|
|
// ---- Verification: fastställ orsaken --------------------------------
|
|
matningar: "verification",
|
|
kontroller: "verification",
|
|
grundkontroller: "verification",
|
|
rela: "verification",
|
|
start: "verification",
|
|
laddning: "verification",
|
|
krypstrom: "verification",
|
|
mekanik: "verification",
|
|
tandning_bransle: "verification",
|
|
packning: "verification",
|
|
system: "verification",
|
|
styrning: "verification",
|
|
orsak: "verification",
|
|
installning: "verification",
|
|
|
|
// ---- Action: korrigera och verifiera resultatet ---------------------
|
|
provkorning: "action",
|
|
funktionstest: "action",
|
|
kalibrering: "action",
|
|
};
|
|
|
|
export const FASORDNING = ["analysis", "localization", "verification", "action"];
|
|
|
|
/** Fasen för ett steg. Okänt steg → analysis, och testet faller. */
|
|
export const fasFor = (stegId) => STEGFAS[stegId] ?? "analysis";
|
|
|
|
/**
|
|
* Faserna en metodik faktiskt innehåller, i ALVA-ordning.
|
|
*
|
|
* Alla metodiker innehåller inte alla fyra. En läckagemetodik som slutar
|
|
* med lokalisering är inte ofullständig — läckan är hittad, åtgärden är
|
|
* ett annat arbete. Att tvinga in ett Action-steg där hade varit att
|
|
* fylla ut modellen i stället för att tillämpa den.
|
|
*/
|
|
export function faserI(metodik) {
|
|
const funna = new Set((metodik?.steg ?? []).map((s) => fasFor(s.id)));
|
|
return FASORDNING.filter((f) => funna.has(f));
|
|
}
|
|
|
|
/**
|
|
* Klara faser givet loggen: en fas är klar när metodikens samtliga steg i
|
|
* den fasen är dokumenterade.
|
|
*/
|
|
export function klaraFaser(metodik, handelser) {
|
|
const besvarade = new Set();
|
|
const utforda = new Set();
|
|
for (const h of handelser) {
|
|
if (h?.typ === "fraga_besvarad") besvarade.add(`${h.stegId}/${h.frageId}`);
|
|
if (h?.typ === "kontroll_utford") utforda.add(`${h.stegId}/${h.kontrollId}`);
|
|
}
|
|
const klar = (steg) =>
|
|
(steg.fragor ?? []).every((f) => besvarade.has(`${steg.id}/${f.id}`)) &&
|
|
(steg.kontroller ?? []).every((k) => utforda.has(`${steg.id}/${k.id}`));
|
|
|
|
return faserI(metodik).filter((fas) =>
|
|
(metodik.steg ?? []).filter((s) => fasFor(s.id) === fas).every(klar),
|
|
);
|
|
}
|