ADR-001: Blob storage-struktur for saksdokumenter⚓︎
Kontekst⚓︎
Vi har pilotert en MVP for å støtte saksbehandlere i å analysere innkommende filer basert på regelverk. Basert på nye krav og innsikt må vi justere hvordan vi lagrer filer for prosessering.
Et saksnummer er sammensatt av to siffer for år etterfulgt av skråstrek og løpenummer, f.eks. 25/1718. Journalpostnummer følger samme format. En journalpost består av dokumenter — ett hoveddokument og vedlegg.
Nøkkeldrivere⚓︎
- RAG: Saksbehandler skal kunne søke i dokumenter på tvers av saker
- Fakta: Vi trenger å ekstrahere strukturert innhold fra dokumenter (f.eks. fakturaer)
Beslutning⚓︎
Vi lagrer blobs i en hierarkisk struktur som speiler arkivstrukturen:
Begrunnelse⚓︎
- Hierarkiet matcher arkivstrukturen i WebSak, noe som gjør det intuitivt å navigere
- Azure AI Search indexer kan peke direkte på en container og indeksere alle dokumenter
- Separasjon av originaler, markdown og fakta gjør det mulig å bruke forskjellige pipelines
Konsekvenser⚓︎
Positive:
- Strukturerte fakta komprimerer dokumenter til mindre prompt-inndata, sparer tokens
- RAG over saksdokumenter blir mulig
- Blob-stier er forutsigbare fra saksnummer + journalpostnummer
Avveininger:
- Dypt hierarki kan gjøre manuell navigering i Storage Explorer tungvint
- Saksnummerformat med skråstrek (
25/1718) må saniteres for bruk som blob-path - Segmentet for originaldokumenter heter
originaler/(norsk) i koden (JournalpostBlobPath.Originaler), i tråd med navnekonvensjonen i v1. Diagramet over gjenspeiler den faktiske on-disk-strukturen.