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:
- MyAgent legger en
Job-melding påjobs-køen QueueWorker(BackgroundService) poller køen hvert 5. sekundJobProcessorutfører analysen- 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