Gå til innhold

ADR-006: Købasert asynkron regelanalyse⚓︎

Kontekst⚓︎

Regelanalyse av en sak innebærer flere tidkrevende steg: hente dokumenter fra WebSak, laste opp til Blob Storage, kjøre Azure AI Search indexer, vente på indeksering, og til slutt kjøre LLM-analyse. Hele prosessen kan ta flere minutter.

Teams-chat har en timeout på responstid. Å kjøre analysen synkront ville blokkere brukergrensesnittet og risikere timeout.

Nøkkeldrivere⚓︎

  • Teams har begrenset responstid for chat-meldinger
  • Analysen tar 1-5 minutter avhengig av antall dokumenter
  • Brukeren skal kunne fortsette å chatte mens analysen kjører

Beslutning⚓︎

Analysen kjøres asynkront via Azure Queue Storage:

  1. MyAgent legger en Job-melding på jobs-køen
  2. QueueWorker (BackgroundService) poller køen hvert 5. sekund
  3. JobProcessor utfører analysen
  4. Resultatet sendes tilbake som proaktiv melding via Bot Service

Alternativ vurdert⚓︎

Inline prosessering med streaming: Kjøre analysen direkte i meldingshåndtereren med statusoppdateringer. Forkastet fordi prosessen tar for lang tid og risikerer timeout i Bot Service-kanalen.

Konsekvenser⚓︎

Positive:

  • Brukeren kan fortsette å chatte mens analysen kjører
  • Ingen risiko for timeout
  • Køen gir naturlig lastbalansering

Avveininger:

  • Kun én jobb prosesseres om gangen (_isRunning-flagg)
  • Feilede jobber gjentas ikke — meldingen slettes alltid for å unngå retry-løkker
  • Proaktive meldinger krever at konversasjonsreferansen er gyldig