Gå til innhold

Drift og overvåking

Når brukes denne prosessen

Løpende drift, ved release av app/API/dokumentasjon, og ved feilsøking av produksjonsproblemer.

Forutsetninger

  • Tilgang: API-serverne (IIS), SQL Server-instansen, Azure DevOps (dev.azure.com/jhlno), ConnectMonitor-maskinen
  • Verktøy: Visual Studio/MSBuild (.NET Framework 4.8), Node 20 + pnpm (appen), SQL Server Management Studio

Komponentene og hvordan de rulles ut

Connect API

  1. Bygg knapphus-connect-api (.NET Framework 4.8).
  2. Publiser til IIS på JHSVMAPP340-01 (prod) eller staging-api2.knapphus.net (staging). Full prosedyre: Utrulling (deploy).
  3. Web.config per miljø — sjekk alltid: connectionStrings (VismaSQL_{id}, ConnectSQL_{id}, FormsDBEntities_{id} for alle selskaper), companiesSection, integrasjonsnøkler, VBS_*-oppsett.
  4. Ved ny funksjonalitet med databasekrav: kjør SQL-skriptene i docs/ (refresh_token_database_setup.sql, survey_kiosk_database_setup.sql) på hver selskapsdatabase.
  5. Verifiser (se under).

Manglende connection string gir 500

RefreshTokenRepository og login feiler hardt for et selskap som mangler ConnectSQL_{id}/VismaSQL_{id} — symptomet er HTTP 500 NullReference/«connection string not found» for akkurat det selskapet.

Appen

  1. Sett riktig API_ENDPOINT i src/app/shared/app-settings.ts.
  2. pnpm run build → web-bygget (www/) deployes til app.knapphus.net.
  3. Android/iOS: Capacitor-bygg og distribusjon gjennom butikkene. Husk å bumpe appVersion i app-settings.ts.
  4. Web-appen har service worker med oppdateringsvarsel («En ny versjon av ePortal er tilgjengelig») — brukerne får ny versjon ved neste lasting.

Dokumentasjonen

Automatisk via Azure Pipelines: azure-pipelines-docs-staging.yml (IonicUpgrade-branch → docs-staging.knapphus.net) og azure-pipelines-docs-prod.yml (master → docs.knapphus.net). Begge kjører mkdocs --strict — brutte lenker stopper deploy. /systemadministrasjon* og /templates* krever rollen docs_technician (Azure AD) på det publiserte nettstedet.

ConnectMonitor

Se egen side. Utrulles manuelt på tjenermaskinen; jobbene planlegges i Task Scheduler.

Logging og overvåking

Komponent Logg Plassering
Connect API NLog, nivå Info+ jhlVismaAPILog.txt i applikasjonskatalogen (mål logfile i NLog.config)
ConnectMonitor NLog Lokal loggfil på tjenermaskinen
Appen (web) Konsoll + service worker-status Nettleserens devtools
Dokumentasjon Pipeline-logger Azure DevOps

Det finnes i dag ingen helsesjekk-endepunkter — overvåking skjer ved loggene og funksjonstest. Raske kontroller:

# API-en oppe? (forventer 200 + selskapsliste)
curl https://staging-api2.knapphus.net/api/Company/GetCompanies

# Refresh-endepunktet deployet? (forventer 401, IKKE 404/500)
curl -X POST https://staging-api2.knapphus.net/api/auth/refresh \
  -H "Content-Type: application/json" \
  -d '{"RefreshToken":"test","CompanyID":106}'

Hemmeligheter

Alle hemmeligheter ligger i Web.config/App.config på serverne (de sjekkes også inn i repo — kjent teknisk gjeld; gjengis aldri i håndboken):

Hemmelighet Hvor Merknad
JWT-signeringsnøkkel JwtManager.cs (hardkodet konstant) Rotasjon krever kodeendring + redeploy; alle tokens ugyldiggjøres
Landax-, ABAX-, DataHost-, Dottie-, SMS-nøkler API Web.config Roter ved mistanke om lekkasje
NorTrace bearer-token Web.config + app-settings.ts (appen!) App-tokenet følger bygget — rotasjon krever ny app-release
SQL-brukere connection strings
Azure-tokens (docs-deploy) Pipeline-variabler Ligger ikke i repo

Verifisering etter deploy

  1. GetCompanies svarer med selskapslisten.
  2. Innlogging med testselskap (9999) og et reelt selskap fungerer, og svaret inneholder RefreshToken.
  3. auth/refresh svarer 401 på ugyldig token (ikke 404/500).
  4. Én ordre kan åpnes og én sjekkliste lastes (Landax-kjeden).
  5. Loggfilen er fri for nye feil de første minuttene.

Nytt selskap (onboarding)

Slik kobler du på et nytt selskap (ClientID {id}):

  1. Visma: selskapet må finnes i Visma Business med sin database (F{id}).
  2. Connection strings i API-ets Web.config (og ConnectMonitor App.config): VismaSQL_{id}, ConnectSQL_{id}, og FormsDBEntities_{id} hvis selskapet bruker skjema. Begge SQL-strengene må finnes — ellers gir login/refresh 500.
  3. companiesSection-rad: clientID, clientName, validateTruckStock, logo, nortraceDepartment, og etter behov UsePlanner, DisableBREG, PayrollPeriodCutoffDay, CustomerClient, DisableUserFilter, DottieClientId/DottieApiKey.
  4. Per-selskap appSettings: {id}_Vol2StdOff, {id}_InternalEmail, {id}_FactNo, {id}_DataHost_ID (−1 hvis ingen DataHost).
  5. DB-skript på selskapsdatabasen: kjør docs/refresh_token_database_setup.sql og (ved kiosk/skjema) docs/survey_kiosk_database_setup.sql.
  6. Integrasjoner med per-selskap-nøkler: Soolo ({id}_NorTrace*), Dottie, DataHost — se Integrasjoner.
  7. Verifiser: selskapet vises i GetCompanies; innlogging gir RefreshToken; auth/refresh svarer 401 (ikke 500) for {id}.

Rollback

  • API: redeploy forrige publiserte build (behold forrige publish-mappe på serveren); Web.config-endringer versjoneres manuelt — ta kopi før endring.
  • App (web): deploy forrige www/-bygg.
  • Dokumentasjon: git revert på master — pipeline deployer forrige innhold.

Vanlige problemer

Symptom Årsak Løsning
Ett selskap får 500 ved innlogging/refresh Manglende ConnectSQL_{id}/VismaSQL_{id} connection string Legg til i Web.config
Brukere må logge inn flere ganger daglig Refresh-kjeden virker ikke i miljøet (404 på auth/refresh, manglende RefreshTokens-tabell, eller gammelt appbygg) Kjør verifiseringen over mot riktig miljø
Alle ordrekall feiler VBS (GenericService) nede på Visma-serveren Start tjenesten; sjekk VBS_Endpoint
Skjema-modulen nede Landax utilgjengelig eller utløpt API-passord Sjekk logg for 401 fra Landax
Kvitteringer sendes ikke SMTP-relay nede Sjekk SMTP-oppsettet i mailSettings; ingen automatisk retry
Docs-deploy feiler mkdocs --strict fant brutt lenke Se pipeline-loggen, rett lenken

Relaterte sider