Gå til innhold

Lage arbeidsflyt med KAI

KAI kan oversette en beskrivelse i naturlig språk — for eksempel "Når en e-post logges i CRM, minn ansvarlig om oppfølging etter tre uker" — til et utkast i arbeidsflyt-byggeren. Du sparer tid på å huske riktige utløsere, betingelser og handlinger, og kan justere alt før du lagrer.

KAI gjør ikke arbeidet ferdig: Utkastet lagres ikke automatisk. Du må gå gjennom det, eventuelt justere, og deretter selv velge Lagre utkast eller Lagre og aktiver (workflow-builder.component.html:21-26).

Per i dag støttes kun CRM: Workflow-katalogen som KAI bygger på har bare en CRM-modul implementert (Modules/CrmWorkflowModule.cs). Frontend laster katalogen med getRegistry('CRM') (workflow-builder.component.ts:94). Andre moduler (HMS, Prosjekt, Time, Arbeidsordre) blir tilgjengelige etter hvert som de implementeres.


Tilgang

Hvem Hva trengs
Rolle Administrator (siden er en del av Innstillinger og bruker moduleId: 99, se setting-routing.module.ts:44)
KAI-tilgang ObjectType = KAI.WorkflowBuilder med CanCreate = true i Datatilgang. Default er fail-closed (alle felt = 0), så rettigheten må gis eksplisitt per brukernivå (Migration_20261010110000.cs:17-23).

KAI sjekker KAI.WorkflowBuilder.CanCreate før utkastet genereres. Mangler du rettigheten, returnerer endepunktet Ingen tilgang til å lage arbeidsflyt med KAI. (WorkflowController.cs:209-215).

Datatilgang-skjermen med raden "KAI Arbeidsflyt" og kolonnene CanView/CanCreate/CanEdit/CanDelete


Forutsetninger

  • Tenanten har KAI aktivert og en konfigurert AI-tjeneste (IAiService)
  • Du vet hvilken modul arbeidsflyten gjelder — per i dag er det CRM
  • Beskrivelsen din følger mønsteret når X skjer, (hvis Y,) gjør Z
  • Eventuelle eksterne mottakere (brukere, roller) finnes allerede i ePortal

KAI-prompten som styrer utkastsgenereringen heter KAI.Prompt.WorkflowBuilder og er definert i KAIPromptDefaults.cs:691 og registrert i All-katalogen på linje 778. Den hentes via GetComposedPromptAsync (WorkflowController.cs:226) — det vil si: en eventuell tenant-overstyring i KAI-promptadmin brukes hvis den finnes, ellers default-teksten.


Slik ser siden ut

Listen ligger på /settings/portal-setting/workflows. Topplinjen har tre handlinger (workflow-list.component.html:8-20):

Knapp Klasse Hva den gjør
KAI (lilla, med stjerne-ikon) btn-kai-planner Åpner en modal hvor du beskriver arbeidsflyten på norsk
+ Ny arbeidsflyt (mørk) btn-action-dark Tom builder uten KAI-utkast
Oppfrisk (sirkel-ikon) btn-action-outline Laster listen på nytt

Tabellen under viser eksisterende arbeidsflyter med navn, modul, utløser og status. Status-badgen kan være Utkast, Aktiv eller Inaktiv (workflow-list.component.ts:140-143; etiketter i no.json:11-13). Den lilla "KAI"-knappen vises alltid — det er først ved klikk på Lag utkast at backend sjekker KAI.WorkflowBuilder.CanCreate.

arbeidsflyt-listen med "KAI"-knappen (lilla), "+ Ny arbeidsflyt" (mørk) og en rad med status-badge


Slik gjør du

1. Åpne arbeidsflyt-listen

Gå til Innstillinger → Arbeidsflyter (/settings/portal-setting/workflows).

2. Klikk den lilla KAI-knappen

Modalen åpnes med tittel Lag arbeidsflyt med KAI og et tekstfelt (workflow-list.component.html:86-104). Knappen heter rett og slett KAI (Workflow.kaiButton = "KAI" i no.json:114) — det er ikke en egen "+ Ny arbeidsflyt med KAI"-knapp.

3. Skriv beskrivelsen

Bruk et naturlig språk-uttrykk i formen når X, (hvis Y,) så Z. Eksempler:

  • "Når en e-post logges i CRM, minn ansvarlig om oppfølging etter tre uker." (eksempelet fra hjelpeteksten — Workflow.kaiPlaceholder i no.json:118)
  • "Når en CRM-oppgave får status Ferdig, varsle den som opprettet oppgaven."
  • "Når en korrespondanse markeres som Innkommende e-post, lag en oppfølgingsoppgave med 7 dagers frist."

Knappen Lag utkast er deaktivert til feltet inneholder tekst (workflow-list.component.html:99).

4. Klikk Lag utkast

Klienten kaller POST api/Workflow/Draft med beskrivelsen din. Backend:

  1. Sjekker KAI.WorkflowBuilder.CanCreate — feiler hvis nei
  2. Validerer at promptfeltet ikke er tomt
  3. Bygger en katalog over lovlige moduler/objekter/hendelser/felt/handlinger (kun verdier KAI har lov til å bruke)
  4. Kaller AI-tjenesten med systemprompten KAI.Prompt.WorkflowBuilder og din beskrivelse
  5. Tolker svaret og returnerer et ulagret utkast med IsActive = false, IsDraft = true

Se WorkflowController.cs:204-258.

På suksess navigerer klienten til builderen og passer utkastet via state.kaiDraft (workflow-list.component.ts:73-74). Du får en info-toast: "KAI-utkast lastet inn — se over og lagre når du er fornøyd." (Workflow.kaiApplied).

modalen "Lag arbeidsflyt med KAI" med tekstfelt og "Lag utkast"-knapp

5. Gjennomgå utkastet i builderen

Builderen viser arbeidsflyten i tre seksjoner (workflow-builder.component.html:65-203):

  • Generelt — Navn, Beskrivelse, Modul, Omfang (Bare meg / Hele bedriften — Group er ikke aktivert ennå, workflow-builder.component.ts:52)
  • NÅR — Objekt + Type utløser (Hendelse / Tidsbasert / Tidsplan med cron) + selve hendelsen eller datoankret
  • HVIS (valgfritt) — null eller flere betingelser (AND/OR) med felt, operator og verdi
  • GJØR — én eller flere handlinger. Tilgjengelige handlingstyper for CRM: Varsle, Vent, Opprett oppgave, Oppsummering (no.json:171-176)

Gå gjennom hvert felt og vurder:

  • Treffer utløseren den hendelsen du faktisk ønsker å reagere på?
  • Er betingelsene verken for vide eller for snevre?
  • Har handlingene riktig mottaker, tittel og melding?

builderen med fylte NÅR/HVIS/GJØR-blokker generert fra KAI

6. Kjør "Test på eksempel" (anbefalt)

Knappen Test på eksempel øverst til høyre kjører en tørrkjøring mot siste eksempel-objekt i databasen (workflow-builder.component.html:17-19, workflow-builder.component.ts:456-481). Den viser om betingelsene matcher og hvilke verdier handlingene ville fått — men lagrer ikke arbeidsflyten og sender ikke varsler.

Feiltilstander:

  • "Velg et objekt" — Objektfeltet i NÅR-blokken er tomt
  • "Legg til minst én handling" — GJØR-blokken er tom
  • "Kunne ikke kjøre test" — backend-kall feilet (se feilsøking-siden)

7. Lagre

Du har to lagre-knapper (workflow-builder.component.html:21-26):

Knapp Effekt
Lagre utkast Lagrer med IsDraft = true, IsActive = false — status = Utkast
Lagre og aktiver Lagrer med IsDraft = false, IsActive = true — arbeidsflyten begynner å trigge på neste matchende hendelse

Validering før save (workflow-builder.component.ts:386-402):

  • Navn må være satt ("Gi arbeidsflyten et navn.")
  • Objekt må være valgt ("Velg et objekt.")
  • Minst én handling ("Legg til minst én handling.")
  • Hvis utløsertype er Cron, må uttrykket være satt ("Angi et cron-uttrykk for tidsplanen.")

8. Deaktiver / aktiver / slett i listen

I tabellen har hver rad en knapperad (workflow-list.component.html:58-77):

Knapp Hva den gjør
Play/pause-ikon Toggler isActive (kaller Workflow.deactivate / Workflow.activate) — aktivering setter samtidig isDraft = false
Blyant Åpner builderen for redigering
Journal-ikon Åpner kjøringsloggen for arbeidsflyten
Søppelbøtte Bekreftelsesmodal → sletter arbeidsflyten

Det finnes ingen separat "Pause"-status i koden — en arbeidsflyt som ikke kjører er Inaktiv (statusInactive i workflow-list.component.ts:142).


Vanlige problemer

"Lag utkast"-knappen er disabled

Tekstfeltet er tomt eller bare mellomrom — [disabled]="kaiLoading || !kaiPrompt.trim()" (workflow-list.component.html:99). Skriv noe og prøv igjen.

Toast: "KAI kunne ikke lage et utkast. Prøv å omformulere."

Tre mulige årsaker, alle i WorkflowController.cs:204-258:

Underliggende feil Hva som skjedde
"Ingen tilgang til å lage arbeidsflyt med KAI." KAI.WorkflowBuilder.CanCreate = false på ditt brukernivå
"KAI er ikke tilgjengelig akkurat nå." AI-tjenesten svarte ikke eller var avskrudd
"Kunne ikke tolke svaret fra KAI. Prøv å omformulere." KAIs svar var ikke gyldig JSON eller manglet katalog-godkjente verdier — typisk når beskrivelsen er for vag

Toasten du ser i nettleseren er Workflow.kaiFailed ("KAI kunne ikke lage et utkast. Prøv å omformulere.", no.json:121). Konkret bakenforliggende melding finner du i F12-konsollen / i toasten via showApiError.

KAI laget en arbeidsflyt med feil utløser eller felt

KAI får bare bruke verdier som finnes i katalogen for den valgte modulen (per i dag CRM). Hvis arbeidsflyten du beskrev krever et felt eller en hendelse som ikke finnes i CRM-katalogen, vil KAI:

  • enten velge nærmeste lovlige alternativ
  • eller returnere et svar som ikke parses → toast "Kunne ikke tolke svaret fra KAI."

Løsning: bytt Objekt og Hendelse manuelt i builderen, eller bygg arbeidsflyten uten KAI.

Status er fortsatt Utkast etter "Lagre og aktiver"

Toggeren i listen kaller setActive. Hvis kallet feiler, ser du "Kunne ikke lagre arbeidsflyt" og raden forblir Utkast. Sjekk nettverkskonsollen og kjøringsloggen.

"Group"-omfanget mangler

I builderen ser du bare Bare meg og Hele bedriften under Omfang. Teamet mitt (Group) er bevisst skrudd av til team/gruppe-konseptet er på plass (workflow-builder.component.ts:51-52).


Konsekvenser for andre

  • Aktiverte arbeidsflyter trigger på reelle hendelser fra alle brukere i scope — utløste varsler kan ikke rulles tilbake
  • Hver kjøring loggføres i Workflow.logTitle (Kjøringslogg) for den enkelte regel (workflow-list.component.ts:90-92)
  • KAI-utkastsgenerering går mot ekstern AI-tjeneste og medfører token-forbruk på din KAI-konto

Reversibel med forbehold: Du kan deaktivere eller slette arbeidsflyten, men varsler/oppgaver som allerede er sendt eller opprettet, finnes fortsatt i mottakernes innbokser / oppgavelister.


Relaterte sider