From 45967d086e9124a1360b24edb6851f763a77db57 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Aug 2026 17:44:26 +0000 Subject: [PATCH] =?UTF-8?q?L=C3=A5s=20inte=20in=20=C3=A4renden=20d=C3=A4r?= =?UTF-8?q?=20=C3=A5tg=C3=A4rden=20dokumenterades=20f=C3=B6re=20f=C3=B6rsl?= =?UTF-8?q?aget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit När kundbeskedet blev ett avslutsvillkor i klienten uppstod en fälla: knappen "Lämna åtgärdsförslag till kund" visades bara när ingen åtgärd var dokumenterad, och beskedsrutan bara när ett förslag fanns. En tekniker som skrev åtgärden först hade därmed ingen väg att registrera beskedet, och ärendet gick inte att stänga. Grinden avvisade redan sådana ärenden vid synk — villkoret i klienten flyttade bara upptäckten. Men ett spärrvillkor utan väg ut är ett fel även när spärren i sig är riktig. Förslagsknappen står kvar tills ett förslag faktiskt lämnats. Ordningen förslag → besked → arbete är fortfarande den panelen föreskriver, och loggen är append-only med tidsstämplar, så ett besked som registreras i efterhand syns som just det. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt --- .../src/felsokning/__tests__/slutsats.test.ts | 25 +++++++++++++++++++ .../app/src/pages/felsokning/ArendeSida.tsx | 9 ++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/felsokning/app/src/felsokning/__tests__/slutsats.test.ts b/felsokning/app/src/felsokning/__tests__/slutsats.test.ts index ea76ec1..3893e29 100644 --- a/felsokning/app/src/felsokning/__tests__/slutsats.test.ts +++ b/felsokning/app/src/felsokning/__tests__/slutsats.test.ts @@ -275,3 +275,28 @@ describe("klientens avslutsvillkor täcker hela grindens åtgärdskedja", () => expect(rad).toContain("kundbeslut(arende)"); }); }); + +// ---- Vägen ut måste alltid finnas --------------------------------------- +// +// När kundbeskedet blev ett avslutsvillkor i klienten uppstod en fälla: +// knappen "Lämna åtgärdsförslag till kund" visades bara när ingen åtgärd +// var dokumenterad, och beskedsrutan bara när ett förslag fanns. En +// tekniker som skrev åtgärden först hade därmed inget sätt att registrera +// beskedet — och ärendet gick inte att stänga, utan att gränssnittet +// kunde tala om varför. +// +// Grinden avvisade redan sådana ärenden vid synk; villkoret i klienten +// flyttade bara upptäckten. Ett spärrvillkor utan väg ut är ett fel även +// när spärren i sig är riktig. +describe("kundbeskedet går att registrera även när åtgärden skrevs först", () => { + const kod = readFileSync("src/pages/felsokning/ArendeSida.tsx", "utf8"); + + it("förslagsknappen döljs inte av att en åtgärd redan är dokumenterad", () => { + expect(kod).toContain("{forslag.length === 0 && !forslagsLage && ("); + expect(kod).not.toContain("forslag.length === 0 && !forslagsLage && poster.length === 0"); + }); + + it("beskedsrutan öppnas av att ett förslag finns", () => { + expect(kod).toContain("{forslag.length > 0 && !beslut && ("); + }); +}); diff --git a/felsokning/app/src/pages/felsokning/ArendeSida.tsx b/felsokning/app/src/pages/felsokning/ArendeSida.tsx index e93598c..10dbcb7 100644 --- a/felsokning/app/src/pages/felsokning/ArendeSida.tsx +++ b/felsokning/app/src/pages/felsokning/ArendeSida.tsx @@ -803,7 +803,14 @@ function AtgardsPanel({ arende, skicka }: { arende: Arende; skicka: (h: Handelse

)} - {forslag.length === 0 && !forslagsLage && poster.length === 0 && ( + {/* Förslaget hör före arbetet, och knappen står därför först. Men + den får inte försvinna när arbetet väl dokumenterats: grinden + kräver kundens besked för utfört arbete, och utan den här vägen + blir ett ärende där teknikern skrev åtgärden först omöjligt att + stänga — utan att någonstans säga varför. Loggen är append-only + med tidsstämplar, så ett besked som registreras i efterhand + syns som just det. */} + {forslag.length === 0 && !forslagsLage && (