Notiser till teamschatten
APIBerättar för teamet i dess gruppchatt när något nytt har lagts till i tidslinjen, utan att någon behöver gå in på sidan.
källa: apps/projekt/src/teamsnotis, apps/projekt/src/instrumentation.tsuppdaterad:
Ansvar
- När en ny version startar: jämföra tidslinjens händelser med dem som redan fått en notis, och skicka ett kort per ny händelse som har hänt.
- Vara avstängd tills den slås på, och aldrig väcka gamla händelser: första gången och i läget logg markeras allt utan att skickas.
- Skicka varje ny händelse oavsett slag – den är godkänd innan den lades i tidslinjen (ADR-035) – och högst fem kort per start, resten i ett gemensamt kort.
- Minnas vad som skickats i datavolymen, och inte markera något som inte gick iväg.
Filer
| Sökväg | Roll |
|---|---|
| teamsnotis/urval.ts | Läget ur miljön, och valjNya: vad som är nytt, vad som får egna kort och vad som markeras. Ren logik. |
| teamsnotis/kort.ts | handelsekort och samlingskort: Adaptive Card 1.4 i Microsofts webhook-kuvert, med knappar till den publika adressen. |
| teamsnotis/skicka.ts | skickaNyaHandelser: läser och skriver TEAMS_NOTIS_FIL, postar till webhooken och loggar. Kastar aldrig. |
| instrumentation.ts | Startar skickandet 30 sekunder efter serverstart, och bara när TEAMS_NOTISER inte är av. |
| teamsnotis/teamsnotis.test.ts | Läget, urvalet, korten och hela körningen mot en tillfällig fil och ett fejkat nätanrop. |
| miljo.test.ts | Vaktar att varje process.env.X står under environment i docker-compose.yml. |
API
| Namn | Signatur | Beskrivning |
|---|---|---|
| skickaNyaHandelser | (env?: Record<string, string | undefined>) => Promise<void> | Gör en körning. Anropas vid start; kan anropas igen utan att något skickas två gånger. |
| valjNya | ({ handelser, skickade, idag }) => { forstaGangen, kort, ovriga, markera } | Urvalet. skickade undefined betyder att inget någonsin skickats. |
Kontrakt
| Variabel | Värde | Betyder |
|---|---|---|
| TEAMS_NOTISER | av | logg | pa | Standard av. logg gör allt utom att skicka, också att markera. |
| TEAMS_WEBHOOK_URL | https://… | Flödets HTTP-URL. En hemlighet. |
| TEAMS_NOTIS_FIL | sökväg | Listan över skickade id. I containern /app/data/teams-notiser.json. |
| PUBLIK_BAS_URL | https://start.sundsvall.dev | Adressen knapparna leder till. |
- Flödet i Power Automate: utlösaren När en Teams-webhookbegäran tas emot med Vem som helst, och Publicera kort i en chatt eller kanal som Flödesrobot i gruppchatten. Fältet Adaptivt kort är uttrycket @{triggerBody()?['attachments'][0]['content']} – som text i stället för uttryck svarar Teams 400 med invalid JSON.
- Power Automate svarar 202 när flödet tagit emot. Om kortet kom fram syns bara i flödets körningshistorik.
- För att slå på utan att väcka det som hänt under tiden: kör en start med logg först, sedan pa.
Beroenden och beslut
Beslut: ADR-035, ADR-031
Levererar: TEAMS_NOTISER av | logg | pa, TEAMS_WEBHOOK_URL, Adaptive Card per händelse, samlingskort när fler än fem kommer på en gång
Kvarstår
- Avstängd. Slås på med TEAMS_NOTISER och TEAMS_WEBHOOK_URL i Dokploy.
- Statusrapporterna skickas inte; de skrivs utan deploy och behöver skickas när de sparas.
- Flödet ägs av en person i Power Automate. Ett avstängt eller ändrat flöde märks inte här.
15 delar i projektportalen · gemensamma i devportalen: ai-adapter, anthropic, bygge, designsystem, dokploy, dokumentation, gemensamt, tokens, ui