Filtrera hypoteser ur kunddelade vyer
Hypoteser är internt arbetsmaterial och får aldrig riskera att läsas som konstaterade fel: de visas inte i Live Share-vyn, kundrapportens tidslinje eller databasens delningsfunktion. De finns kvar i den interna loggen, briefen och överlämningsrapporten. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
@@ -606,7 +606,11 @@ function RapportFlik({
|
|||||||
const b = brief(arende, metodik, nu);
|
const b = brief(arende, metodik, nu);
|
||||||
const bilder = foton(arende);
|
const bilder = foton(arende);
|
||||||
const fordelning = tidsfordelningsRader(arende, nu);
|
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:
|
// Alla exporter bygger på samma händelselogg och versionsmärks:
|
||||||
// version = antal händelser vid exporttillfället.
|
// version = antal händelser vid exporttillfället.
|
||||||
|
|||||||
@@ -33,7 +33,11 @@ export default function DelatArende() {
|
|||||||
const avslutat = arAvslutat(arende);
|
const avslutat = arAvslutat(arende);
|
||||||
const bilder = foton(arende);
|
const bilder = foton(arende);
|
||||||
const matvarden = arende.handelser.filter((p) => p.handelse.typ === "matvarde");
|
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];
|
const pagaende = b.rekommenderatNastaSteg[0];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -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
|
-- Live Share: anonym läsning sker ENDAST via delningskod genom en
|
||||||
-- security definer-funktion — tabellerna exponeras aldrig direkt för anon.
|
-- 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)
|
create or replace function public.hamta_delat_arende(kod text)
|
||||||
returns jsonb
|
returns jsonb
|
||||||
language sql
|
language sql
|
||||||
@@ -58,7 +59,7 @@ as $$
|
|||||||
select jsonb_agg(to_jsonb(h) order by h.tidpunkt, h.id)
|
select jsonb_agg(to_jsonb(h) order by h.tidpunkt, h.id)
|
||||||
from felsokning_handelser h
|
from felsokning_handelser h
|
||||||
where h.arende_id = a.id
|
where h.arende_id = a.id
|
||||||
and h.handelse->>'typ' <> 'kategori_byte'
|
and h.handelse->>'typ' not in ('kategori_byte', 'hypotes')
|
||||||
), '[]'::jsonb)
|
), '[]'::jsonb)
|
||||||
)
|
)
|
||||||
from felsokning_arenden a
|
from felsokning_arenden a
|
||||||
|
|||||||
Reference in New Issue
Block a user