vigo-isi-arkiv
Nodejs script that handles document from vigo-isi
OVERGANG TIL VFK/TFK ved nyttår
- Sett miljørvariabel OVERRIDE_TO_VTFK_ARCHIVE til false, eller fjern den
- Påvirker følgende filer
- ./lib/call-archive.js, velger hvilket arkiv som brukes
- ./jobs/syncElevmappe.js swapper fra skipDSF til manualData i payload
- ./jobs/signOff.js swapper fra vigo-template til archive-template
Flyt
./jobs/queue-ready-documents
./jobs/queue-ready-documents.js
- Generer soap-spørring for ISI-lokal (uuid genereres basert på timestamp for alltid å få unike, "lånt" koden til npm-pakka "soap" for dette)
- Spør ISI-lokal om x antall nye dokumenter for et gitt fylkesnummer
- Lagrer resultatet som enkeltdokumenter (json) i queue-mappe for det gitte fylke
./jobs/handle-queue
- Henter klare dokumenter for et gitt fylkes queue mappe (sjekker om tidspunket i property nextRun er passert), for hvert dokument
- Henter korrekt flow for den gitte dokumenttypen (matches mot filene i ./flows-mappa)
- Sender dokumentet og flow videre til ./jobs/handle-document.js
./jobs/handle-document
- Sjekker hvilke oppgaver som skal gjennomføres på dokumentet basert på flow, og prøver å kjøre disse sekvensielt.
- Dersom en av jobbene feiler (f. eks deadlock i jobben archive)
- Stoppes kjøringen av dette dokumentet
- Antall runs inkrementeres
- Status for kjøringen så langt lagres (slik at den kan plukke opp igjen der den slapp, når den prøver neste gang)
- Error logger, og varsles til Teams (dersom man ønsker)
- Dersom dokumentet har kjørt for mange ganger, legges det i failed-mappen
Jobber som kan sjekkes / kjøres i ./jobs/handle-document (i sekvensiell rekkefølge)
syncElevmappe
Oppretter/oppdaterer privatperson og elevens elevmappe i arkivet, returnerer elevmappe-saksnummer og folkeregister-informasjon om personen.
archive
Arkiverer det innsendte dokumentet i elevens elevmappe, returnerer dokumentnummer.
signOff
Avskriver dokumentet opprettte i archive med koden "Tatt til orientering", retunerer dokumentnummer.
statusVigo
Generer soap-spørrig for ISI-lokal, og sender status ARKIVERT til Vigo, returnerer responsen fra ISI-lokal
archiveResponseLetter
Oppretter og legger inn et svarbrev i arkivet for utsending til eleven, basert på dokumenttypen (i dag bare brukt på typen KONTRAKT). F. eks ved typen KONTRAKT opprettes det et informasjonsbrev som skal sendes til eleven. Returnerer dokumentnummer for det opprettede dokumentet.
sendResponseLetter
Sender brevet opprettet i archiveResponseLetter til eleven via sak-arkiv/SvarUT. Dersom det er noe kødd med adressen eller adressesperring, sendes ikke brevet, men det opprettes en merknad på arkivdokumentet om at utsending må håndteres manuelt.
signOffResponseLetter
Dersom dokumentet fra archiveResponseLetter ble sendt på SvarUT, avsskriver det originale dokumentet fra archive, med koden "Besvart med utgående dokument documentNumber", der doucmentNumber er dokumentNummeret til dokumentet opprettet av archiveResponseLetter.
stats
Oppretter et statistikk-element i felles statistikk-database (basert på hvilket fylke dokumentet tilhører)
finishDocument
Kjører uavhengig av hva som er satt opp i flow for dokumentet. Sjekkes / kjøres som siste jobb, når alle foregående jobber er fullført. Setter finishedTimestamp og flytter dokumentet til finished.
./jobs/delete-finished-documents
./jobs/delete-finished-documents.js
- For hvert dokument som ligger i finished-mappe
- Dersom dokumentetes finishedTimestamp-dato er over miljøvariabel DELETE_FINISHED_AFTER_DAYS (default 30) dager gammel, så slettes dokumentet.
- Ellers blir det liggende
Scripts
queue-and-handle-ready-documents
./scripts/queue-and-handle-ready-documents
Hovedskriptet. Kjører hele flyten beskrevet over.
queue-telemark
For testing. Henter NUMBER_OF_DOCS dokumenter for Telemark fra ISI-lokal, og legger dem i kø uten å gjøre noe mer.
queue-vestfold
For testing. Henter NUMBER_OF_DOCS dokumenter for Vestfold fra ISI-lokal, og legger dem i kø uten å gjøre noe mer.
telemark-handle-queue
./scripts/telemark-handle-queue
For testing. Håndterer dokumenter som ligger i telemark/queue, uten å hente nye dokumenter fra ISI-lokal
vestfold-handle-queue
./scripts/vestfold-handle-queue
For testing. Håndterer dokumenter som ligger i vestfold/queue, uten å hente nye dokumenter fra ISI-lokal
tfk-status-alert
Sjekker hva som ligger av telemark-dokumenter på server (hvor mange i kø, hvor mange om hvem som har feilet, og hvor mange som ble fullført i går), og sender statusrapport til gitte teamskanaler satt i TEAMS_STATUS_WEBHOOK_URLS
vfk-status-alert
Sjekker hva som ligger av vestfold-dokumenter på server (hvor mange i kø, hvor mange om hvem som har feilet, og hvor mange som ble fullført i går), og sender statusrapport til gitte teamskanaler satt i TEAMS_STATUS_WEBHOOK_URLS
Oppsett av løsningen
Klon ned prosjektet der det skal kjøre (lettest å klone det rett inn i VSCode)
git clone {url til repo}
Åpne prosjektet der du klona det ned
cd {path til klona repo}
Installer dependencies
npm i
Lag deg en .env fil med følgende verdier
NUMBER_OF_DOCS="10" # OPTIONAL default 30. Antall dokumenter som skal hentes fra ISI-lokal for hvert fylke av gangen
ISI_LOKAL_URL="https://isi-lokal-url" # Url til ISI-lokal tjeneste
ISI_LOKAL_USERNAME="brukernavn" # Brukernavn for autentisering mot ISI-lokal
ISI_LOKAL_PASSWORD="superhemmelig" # Passord for autentisering mot ISI-lokal
VFK_ARCHIVE_URL="https://arkiv-url" # Url til arkiv-api
VFK_ARCHIVE_CLIENT_ID="client-id app registrering"
VFK_ARCHIVE_TENANT_ID="tenant-id app registrering"
VFK_ARCHIVE_CLIENT_SECRET="client-secret app registrering"
VFK_ARCHIVE_SCOPE="arkiv-api-scope"
TFK_ARCHIVE_CLIENT_ID="client-id app registrering"
TFK_ARCHIVE_TENANT_ID="tenant-id app registrering"
TFK_ARCHIVE_CLIENT_SECRET="client-secret app registrering"
TFK_ARCHIVE_SCOPE="arkiv-api-scope"
VFK_STATS_URL="https://stats-url"
VFK_STATS_KEY="nykkel"
TFK_STATS_URL="https://stats-url"
TFK_STATS_KEY="nykkeligjen"
MOCK_ISI_LOKAL="true" # OPTIONAL default undefined. Settes til "true" dersom du vil teste mock-dokumenter, i stedet for å spørre ISI-lokal
MOCK_FNR="12345678910" # OPTIONAL default undefined. Overkjører alle fnr med verdien i dennee, for testing.
RETRY_INTERVALS_MINUTES="5,10,60" # OPTIONAL. Setter hvor mange ganger vi skal prøve å kjøre et dokument (i dette eksempelet prøver i først en gang til etter 5 minutter, deretter igjen etter 10 minutter, og til slutt etter 60 minutter. Lista kan fylles så mye som trengs)
DELETE_FINISHED_AFTER_DAYS="10" # OPTIONAL default 30. Hvor mange dager skal ferdige dokumenter beholdes før de slettes.
TEAMS_STATUS_WEBHOOK_URLS="https://webhook-url" # OPTIONAL. Hvor skal statusrapport sendes
TEAMS_WEBHOOK_URL="https://webhook-url" # OPTIONAL. Dersom du ønsker at WARN og ERROR skal varsles i en Teams kanal
Kjør / test
For å kjøre eller teste brukes scriptene i ./scripts
Kjøres på følgende måte (HUSK Å KJØRE FRA PROSJEKTETS ROT FOR Å FÅ MED .env):
node ./scripts/{script-navn}.js
Logger
Logger opprettes automatisk og finnes i ./logs. Det opprettes en ny loggfil per mnd
Oppdateringer
Gjør de endringer som trengs, test at ting fungerer lokal eller i test-miljø. Sync så endringer ned til produksjonsområdet.
TODO: Lag fancy funksjonalitet for nye releases og oppdateringer.