Skip to content

Notifieringar ​

NotificationService är Triggerfish förstklassiga abstraktion för att leverera notifieringar till agentens ägare över alla anslutna kanaler.

Varför en notifieringstjänst? ​

Utan en dedikerad tjänst tenderar notifieringslogik att sprida sig över kodbasen — varje funktion implementerar sitt eget "meddela ägaren"-mönster. Det leder till inkonsekvent beteende, missade notifieringar och dubbletter.

Triggerfish centraliserar all notifieringsleverans via en enda tjänst som hanterar prioritet, köning och deduplicering.

Hur det fungerar ​

Notifieringsdirigering: källor flödar genom NotificationService med prioritetsdirigering, köning och deduplicering till kanaler

När någon komponent behöver meddela ägaren — ett cron-jobb som slutförs, en trigger som identifierar något viktigt, ett webhook som avfyras — anropar den NotificationService. Tjänsten avgör hur och var notifieringen ska levereras.

Gränssnitt ​

typescript
interface NotificationService {
  /** Leverera eller köa en notifiering för en användare. */
  deliver(options: DeliverOptions): Promise<void>;

  /** Hämta väntande (oleverade) notifieringar för en användare. */
  getPending(userId: UserId): Promise<Notification[]>;

  /** Bekräfta att en notifiering är levererad. */
  acknowledge(notificationId: string): Promise<void>;
}

Prioritetsnivåer ​

Varje notifiering bär en prioritet som påverkar leveransbeteendet:

PrioritetBeteende
criticalLevereras omedelbart till alla anslutna kanaler. Kringgår tysta timmar.
normalLevereras till den föredragna kanalen. Köas om användaren är offline.
lowKöas och levereras i batchar. Kan sammanfattas.

Leveransalternativ ​

typescript
interface DeliverOptions {
  readonly userId: UserId;
  readonly message: string;
  readonly priority: NotificationPriority; // "critical" | "normal" | "low"
}

Köning och offline-leverans ​

När målanvändaren är offline eller inga kanaler är anslutna köas notifieringar. De levereras när:

  • Användaren startar en ny session.
  • En kanal återansluter.
  • Användaren explicit begär väntande notifieringar.

Väntande notifieringar kan hämtas med getPending() och bekräftas med acknowledge().

Deduplicering ​

NotificationService förhindrar att dubbla notifieringar når användaren. Om samma notifieringsinnehåll levereras flera gånger inom ett tidsfönster passerar bara den första leveransen igenom.

Konfiguration ​

Konfigurera notifieringsbeteende i triggerfish.yaml:

yaml
notifications:
  preferred_channel: telegram # Standard leveranskanal
  quiet_hours: "22:00-07:00" # Undertryck normal/låg under dessa timmar
  batch_interval: 15m # Batchlägg låg-prioritetsnotifieringar

Användningsexempel ​

Notifieringar används i hela systemet:

  • Cron-jobb meddelar ägaren när en schemalagd uppgift slutförs eller misslyckas.
  • Triggers meddelar ägaren när övervakning identifierar något som behöver uppmärksamhet.
  • Webhooks meddelar ägaren när en extern händelse avfyras (GitHub PR, Sentry-larm).
  • Policyöverträdelser meddelar ägaren när ett blockerat försök görs.
  • Kanalstatus meddelar ägaren när en kanal kopplar från eller återansluter.

Notifieringskön bevaras via StorageProvider (namnrymd: notifications:) med en standard retention på 7 dagar efter leverans. Oleverade notifieringar bevaras tills de bekräftas. :::