git_brcal/misc/notifications.md

3.6 KiB

Benachrichtigungen


Benachrichtigungs-Typen (Auslöser)

1. Teilnehmer wird zugeordnet

Ein Teilnehmer wird über die Anwendung einem Anlauf zugeordnet. Dies ist entweder die Agentur (durch BSMD zugeordnet) oder ein weiterer Teilnehmer außer dem Hafenamt, der durch die Agentur zugeordnet wird. Die Zuordnung des Hafenamts erfolgt automatisch bei Anlage des Anlaufs.

2. Morgenrunde ist relevant

Ein Teilnehmer ist einem Anlauf zugeordnet. Dieser Anlauf findet in den nächsten 24 Stunden statt und ist daher für die "Morgenrunde" relevant. Der Teilnehmer erhält dazu eine Benachrichtigung.

3. Zeitlicher Konflikt ("Ampel")

Durch unterschiedliche Zeitangaben der Teilnehmer wird die Ampel ausgelöst und stellt eine entsprechende Fehlermeldung dar. Die Benachrichtigung wird ausgelöst bei folgenden Ampel-Wechseln:

  • grün -> gelb
  • grün -> rot
  • gelb -> rot

4. Auflösung zeitl. Konflikt

  • rot -> gelb
  • rot -> grün
  • gelb -> grün

5. Abwählen eines Teilnehmer

Der Teilnehmer ist nicht mehr länger dem Anlauf zugeordnet.

6. Fehlende Daten

Dienstleister, die 16 Stunden vor ETA/ETD und Agenturen, die 20 Stunden vor ETA/ETD keine Angaben gemacht haben.

7. Storno

Wird ein Anlauf storniert erhalten alle bis dahin zugeordneten Teilnehmer eine Benachrichtigung.

API

    NotificationType:
      type: string
      description: Type of notification
      enum:
        - assignment
        - next24h
        - time_conflict
        - time_conflict_resolved
        - unassigned
        - missing_data
        - cancelled

Entfernen von Benachrichtigungen

Unter den folgenden Voraussetzungen werden Benachrichtigungen wieder aus dem System entfernt:

  • Die Benachrichtigung ist älter als 3 Tage (n.B.: Zeitraum definieren)
  • Ein Teilnehmer wird wieder abgewählt
  • Ein zeitlicher Konflikt wird aufgelöst

Ablauf der Benachrichtigungen

Eine Benachrichtung enthält folgende Informationen:

  • Verweis auf den Anlauf (shipcall)
  • ein Erstell- und Änderungsdatum
  • einen Benachrichtigungs-Typ
  • einen Zustand ("level")

Der Zustand steuert den Ablauf, wenn die Prüfungsfunktion die Anläufe durchsucht oder ein Anlauf gespeichert wird.

Wird einer der Zustände 1-3 erkannt wird geprüft, ob bereits eine Benachrichtigung vorhanden ist. Ist dies nicht der Fall, wird eine Benachrichtigung neu erstellt im Zustand "0".

Die Prüfungsfunktion durchläuft alle Benachrichtigungen. Abhängig vom Zustand (0-2) werden folgende Aktionen ausgeführt:

  • Ist die Benachrichtigung um Zustand "0" und sind mind. 10 Minuten vergangen, wird die Benachrichtigung in den Zustand "1" versetzt.

  • Ist die Benachrichtigung im Zustand "1" wird versucht, allen dafür eingetragenenen Benutzern eine E-Mail zu senden. Ist dies erfolgreich, wechselt die Benachrichtigung in den Zustand "2".

  • Ist die Benachrichtigung im Zustand "2" und sind mind. 3 Tage vergangen wird die Benachrichtigung gelöscht.

---
title: Ablauf
---
stateDiagram-v2
    state "Level 0" as lvl0
    state "Level 1" as lvl1
    state "Level 2" as lvl2
    [*] --> lvl0: Zustand 1-3 erkannt
    lvl0 --> lvl1: +10 min.
    lvl1 --> lvl2: E-Mail Versand erfolgt
    lvl2 --> [*]: +3 Tage ODER Zustand 1-3 nicht mehr relevant


    lvl0 --> [*]: Zustand 1-3 nicht mehr relevant

Bemerkungen

Für die Zukunft sind ggf. auch Benachrichtigungen via Whatsapp/Signal geplant. Diese verhalten sich analog zu den E-Mail Benachrichtigungen und werden nur einmal versendet. Die Anzahl der Zustände wird dabei erhöht bzw. der Wechsel in den Endzustand ensprechend angepasst.

Benachrichtigungstext

... TBD