Gå til innhold

Flyt: Utfylling og innsending (Landax)

Skjemasvar lagres i Landax. Connect API er proxy, og lagrer i tillegg en lokal kopi i SurveySubmissions (to-fase-innsending) slik at ingenting går tapt om Landax er nede.

Hovedflyt

flowchart TD
    subgraph auth[Autentisert]
        A1[Velg skjema] --> A2[createSurveyResult]
        A2 --> A3[Fyll ut + send]
        A3 --> A4[saveSurveyResult]
    end
    subgraph kiosk[Kiosk uten innlogging]
        K1[Token-validering] --> K2[Velg kunde + fyll ut]
        K2 --> K3[kiosk/submit]
    end
    A4 & K3 --> P1[Fase 1: SurveySubmissions<br/>Status = Pending]
    P1 --> P2[Fase 2: Landax<br/>SurveyResults/Save]
    P2 --> P3{OK?}
    P3 -->|ja| S[Status = Submitted<br/>+ LandaxResultId]
    P3 -->|nei| F[Status = Failed/Retry<br/>+ ErrorMessage]
    A4 --> M[markAsDone]

    classDef bruker fill:#cfe2ff,stroke:#3b6db5
    classDef sys fill:#f8d7da,stroke:#b53b46
    class A1,A3,K1,K2 bruker
    class A2,A4,K3,P1,P2,P3,S,F,M sys

To-fase-innsending (sekvens)

sequenceDiagram
    autonumber
    actor U as Bruker/Kiosk
    participant App as Connect-app
    participant API as Connect API
    participant DB as SurveySubmissions
    participant L as Landax
    U->>App: Send inn svar
    App->>API: POST .../save (auth) / kiosk/submit
    API->>DB: INSERT (Status = Pending)
    API->>L: SurveyResults/Save
    alt Landax OK
        L-->>API: LandaxResultId
        API->>DB: UPDATE Status = Submitted
    else Landax feiler
        API->>DB: UPDATE Status = Failed/Retry
    end
    API-->>App: Suksess (svaret er trygt lokalt uansett)

Coworker-mapping (autentisert)

Svar knyttes til Landax-medarbeideren, i denne rekkefølgen:

  1. Ansattnummer {selskap}-{brukernavn} mot Coworker.Number
  2. Coworker.Email
  3. Coworker.Mobile
  4. Coworker.Name (inneholder)

Treffer ingen: «User not mapped to Landax Coworker ID» — medarbeideren må registreres i Landax.

Kiosk: token-validering

kiosk/definition validerer tokenet: IsActive, ValidFrom ≤ nå ≤ ValidTo, og at dagens antall innsendinger er under MaxSubmissionsPerDay. Token opprettes i /kiosk-token-admin (GuidKioskTokens), med URL/QR …/survey-kiosk?token=…&definitionId=…&companyId=….

Datalag

SurveySubmissions (per selskaps-DB): Status (Pending → Submitted / Failed / Retry), LandaxResultId, KioskTokenId, CoworkerId, CustomerId, JsonPayload/AnswersJson, RetryCount, CreatedDate, ErrorMessage, IpAddress/UserAgent.

KioskTokens: Token (unik), DefinitionId, ValidFrom/ValidTo, IsActive, MaxSubmissionsPerDay, CompanyId.

Svarformat per spørsmål: CheckedAlternativeIds (radio/flervalg/nedtrekk), Text/Value, og SignatureFileData (base64-PNG for signaturspørsmål, type 16). Type 7 = avsnitt (kun overskrift, intet svar).

Avvik og reversering

Symptom Årsak Tiltak
«User not mapped …» Mangler/feil medarbeider i Landax Rett Coworker.Number/Email
Innsending ikke i Landax Fase 2 feilet — ligger lokalt med Failed Resend fra SurveySubmissions
Kiosk «token ugyldig» Utløpt/deaktivert/feil definisjons-ID Sjekk/forny token
Kiosk «maks nådd» Dagsgrensen brukt opp Øk MaxSubmissionsPerDay

(Verifisert i Controllers/Landax/SurveyController.cs, SurveyKioskController.cs, KioskTokenController.cs, survey_kiosk_database_setup.sql, landax-survey-api.service.ts.)

Relaterte sider