diff --git a/src/pages/felsokning/ArendeSida.tsx b/src/pages/felsokning/ArendeSida.tsx index 14ff123..d2c04ca 100644 --- a/src/pages/felsokning/ArendeSida.tsx +++ b/src/pages/felsokning/ArendeSida.tsx @@ -606,7 +606,11 @@ function RapportFlik({ const b = brief(arende, metodik, nu); const bilder = foton(arende); const fordelning = tidsfordelningsRader(arende, nu); - const kundposter = arende.handelser.filter((p) => p.handelse.typ !== "kategori_byte"); + // Kategoribyten är interna; hypoteser är arbetsmaterial och ingår inte + // i det som delas med kund. + const kundposter = arende.handelser.filter( + (p) => p.handelse.typ !== "kategori_byte" && p.handelse.typ !== "hypotes", + ); // Alla exporter bygger på samma händelselogg och versionsmärks: // version = antal händelser vid exporttillfället. diff --git a/src/pages/felsokning/DelatArende.tsx b/src/pages/felsokning/DelatArende.tsx index cabc034..128c1b1 100644 --- a/src/pages/felsokning/DelatArende.tsx +++ b/src/pages/felsokning/DelatArende.tsx @@ -33,7 +33,11 @@ export default function DelatArende() { const avslutat = arAvslutat(arende); const bilder = foton(arende); const matvarden = arende.handelser.filter((p) => p.handelse.typ === "matvarde"); - const kundposter = arende.handelser.filter((p) => p.handelse.typ !== "kategori_byte"); + // Hypoteser är internt arbetsmaterial och delas inte externt — + // de får aldrig riskera att läsas som konstaterade fel. + const kundposter = arende.handelser.filter( + (p) => p.handelse.typ !== "kategori_byte" && p.handelse.typ !== "hypotes", + ); const pagaende = b.rekommenderatNastaSteg[0]; return ( diff --git a/supabase/migrations/20260802230000_guidad_felsokning.sql b/supabase/migrations/20260802230000_guidad_felsokning.sql index b353192..52244b2 100644 --- a/supabase/migrations/20260802230000_guidad_felsokning.sql +++ b/supabase/migrations/20260802230000_guidad_felsokning.sql @@ -44,7 +44,8 @@ revoke update, delete on public.felsokning_handelser from authenticated, anon; -- Live Share: anonym läsning sker ENDAST via delningskod genom en -- security definer-funktion — tabellerna exponeras aldrig direkt för anon. --- Interna poster (kategoribyten) filtreras bort ur den delade vyn. +-- Interna poster (kategoribyten, hypoteser) filtreras bort ur den delade +-- vyn: hypoteser är arbetsmaterial och får aldrig läsas som konstaterade fel. create or replace function public.hamta_delat_arende(kod text) returns jsonb language sql @@ -58,7 +59,7 @@ as $$ select jsonb_agg(to_jsonb(h) order by h.tidpunkt, h.id) from felsokning_handelser h where h.arende_id = a.id - and h.handelse->>'typ' <> 'kategori_byte' + and h.handelse->>'typ' not in ('kategori_byte', 'hypotes') ), '[]'::jsonb) ) from felsokning_arenden a