Live Share-behörighetsnivåer: kund/partner/intern med återkallelse
Modulspecifikationens sista del implementerad:
- Ny tabell delningar: återkallbara länkar med behörighetsnivå
(kund/partner/intern), organisationsknutna via ärendet.
- Nivåstyrd filtrering på serversidan i GET /api/delad/{kod}:
kund utesluter kategoribyten, hypoteser och AI-dialog; partner
utesluter kategoribyten och AI-dialog (hypoteser visas, märkta ej
verifierade); intern visar allt. Ärendets ursprungliga delningskod
fungerar bakåtkompatibelt som kundnivå. Svaret bär nivån.
- Nya endpoints: skapa/lista delningar per ärende och återkalla per
kod — alltid organisationskontrollerat; en återkallad länk ger 404.
- Klienten: delningshanterare i rapportfliken (självhostat läge) med
skapa per nivå, kopiera och återkalla — varje åtgärd loggas i
ärendet; publika delningssidan visar nivåanpassad notis och renderar
serverfiltrerade händelser utan att dölja partner-/interninnehåll.
- OpenAPI-specen utökad (Delning, DelningsNiva, tre nya operationer)
och maskinvaliderad.
Verifierat: integrationstestets 25 kontroller gröna mot Postgres 16 —
inkl. att kundkoden filtrerar hypoteser, partnernivån visar dem men
döljer kategoribyten, internnivån visar allt, org B inte kan skapa
delning av org A:s ärende och att återkallad länk ger 404. 29
vitest-tester gröna, produktionsbygge ok, Playwright-röktest grönt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
@@ -62,3 +62,16 @@ drop trigger if exists arenden_append_only on felsokning_arenden;
|
||||
create trigger arenden_append_only
|
||||
before update or delete on felsokning_arenden
|
||||
for each row execute function forbjud_andring();
|
||||
|
||||
-- Live Share-delningar: återkallbara länkar med behörighetsnivå.
|
||||
-- (Åtkomststyrning, inte journal — därför ingen append-only-trigger:
|
||||
-- återkallelse sätter aterkallad-tidpunkten.)
|
||||
create table if not exists delningar (
|
||||
kod text primary key,
|
||||
arende_id text not null references felsokning_arenden(id),
|
||||
niva text not null check (niva in ('kund', 'partner', 'intern')),
|
||||
skapad_av uuid references anvandare(id),
|
||||
skapad timestamptz not null default now(),
|
||||
aterkallad timestamptz
|
||||
);
|
||||
create index if not exists delningar_arende_idx on delningar (arende_id);
|
||||
|
||||
Reference in New Issue
Block a user