Landax¶
1. Hva den gjør¶
Landax er kvalitetssystemet bak skjema-modulen: alle sjekklistedefinisjoner,
avvik (incidents), dokumenter og medarbeidere bor i Landax
(knapphus.landax.no). Connect API fungerer som proxy — appen snakker aldri
direkte med Landax.
Flyt¶
flowchart LR
APP[App] --> API[Connect API proxy]
API <-->|OAuth2| LX[Landax]
KI[Kiosk uten innlogging] --> BUF[(SurveySubmissions lokal buffer)]
BUF -->|videresend| API
classDef sys fill:#f8d7da,stroke:#b53b46
class API,BUF sys
2. Når den er aktuell¶
Alle selskaper som bruker Skjema og sjekklister (dags-/månedskontroll, internkontroll, Landax-avvik, kioskskjema).
3. Sync-retning¶
Sanntid, begge veier, per kall:
- Inn til appen: skjemadefinisjoner, spørsmål, alternativer, egne resultater, avvik med status, dokumenter.
- Ut fra appen: nye skjemaresultater og svar, avvik (opprett/oppdater), notater, bilde-/dokumentopplastinger, signaturer.
Kiosk-innsendinger lagres først lokalt (tabellen SurveySubmissions) og
videresendes til Landax — feiler videresendingen blir status Failed og kan
resendes.
4. Datamodeller¶
| Entitet | Bruk |
|---|---|
| SurveyDefinitions / Questions / Alternatives | Sjekklistedefinisjoner (kun IsMainDefinition) |
| SurveyResults / Answers | Innsendte sjekklister; IsDone skiller åpne/fullførte |
| Incidents (+ Types, Categories, Statuses, Priorities, Causes) | Avvik med full statusflyt |
| Notes | Notater på avvik |
| Documents | Vedlegg (to-trinns: opprett dokument → koble til avvik) |
| Coworkers | Medarbeidere — kobles mot app-brukeren |
5. Field-mapping¶
Den kritiske mappingen er app-bruker → Landax-medarbeider (CoworkerId),
som prøves i denne rekkefølgen:
| Prioritet | Vårt felt | Landax-felt |
|---|---|---|
| 1 | {selskapsID}-{brukernavn} |
Coworker.Number (ansattnummer) |
| 2 | Brukernavn | Coworker.Email |
| 3 | Brukernavn | Coworker.Mobile |
| 4 | Brukernavn | Coworker.Name (inneholder) |
Feiler alle fire: «User not mapped to Landax Coworker ID» — brukeren får ikke
sendt inn skjema. Spørsmålstypene mappes 1:1 (radio, flervalg, tekst, tall,
dato, klokkeslett, signatur som base64-PNG i SignatureFileData).
6. Authentication¶
OAuth2 password grant mot https://knapphus.landax.no/authenticate/token med
klient-ID/-hemmelighet og en dedikert API-bruker. Nøklene ligger i API-ets
Web.config (Landax_ApiUrl, Landax_AuthUrl, Landax_ClientId,
Landax_ClientSecret, Landax_Username, Landax_Password). Access-tokens
caches og fornyes med 5 minutters margin. Kiosk-endepunktene
(/api/landax/surveys/kiosk/*) er anonyme og sikres med kiosk-token i stedet.
7. Oppsettssteg¶
Én gang per kunde/selskap:
- Opprett API-klient og servicebruker i Landax; legg nøklene i Web.config.
- Registrer medarbeiderne i Landax med ansattnummer på formen
{selskapsID}-{brukernavn}(eller korrekt e-post). - Bygg skjemadefinisjonene; merk hoveddefinisjoner (
IsMainDefinition). - Verifiser at ID-ene for hurtigvalgene stemmer med appen
(Dagskontroll = 111, Månedskontroll = 105 i
app-settings.ts). - For kiosk: kjør
survey_kiosk_database_setup.sqlpå selskapsdatabasen og opprett tokens i/kiosk-token-admin.
8. Daglig drift¶
- API-loggen (NLog) logger alle Landax-kall med feil.
- Kiosk: overvåk
SurveySubmissionsfor rader medStatus = 'Failed'(SELECT * FROM SurveySubmissions WHERE Status='Failed') og resend. - Tokens fornyes automatisk; ingen manuell rotasjon i daglig drift.
9. Feil-håndtering¶
| Symptom | Årsak | Løsning |
|---|---|---|
| «User not mapped to Landax Coworker ID» | Medarbeider mangler/feil ansattnr i Landax | Rett opp Coworker.Number/Email i Landax |
| Avviksfanen er tom, men avvik finnes | Coworker-mapping feilet — kun ShowForAllUsers-avvik vises |
Samme som over |
| 401 fra Landax i loggen | API-brukerens passord endret/utløpt | Oppdater Landax_Password |
| Dokumentopplasting feiler | To-trinnskoblingen feilet | Prøv på nytt; fallback-mekanismen kobler i etterkant |
| Kiosk-svar mangler i Landax | Videresending feilet | Sjekk SurveySubmissions.ErrorMessage, resend |
| 400-feil på avvikslister | $expand i OData-spørringen |
Kjent — proxyen stripper $expand og beriker separat |
10. Begrensninger¶
- Skjemadefinisjoner kan ikke redigeres fra appen — kun i Landax.
- Avdelingsfeltet på kiosk-tokens er metadata, ikke filtrering.
- Ingen offline-kø i appen for autentiserte innsendinger (kun kiosk har lokal buffer).
- Landax nede ⇒ skjema- og avviksmodulen er utilgjengelig i sanntid.
(Verifisert i API LandaxController/SurveyController/SurveyKioskController,
Knapphus.Landax.Client-biblioteket og
landax-survey-api.service.ts.)