Skip to content

PEOPLE: Rollen mit Von-Datum in der Zukunft #2237

Description

@mtnstar

Heute ist es bereits möglich Rollen mit End-Datum in der Zukunft zu erstellen. Eine erste Implementation wurde mit #1748 noch verbessert.

Nun soll es neu ebenfalls möglich sein eine Rolle mit Start-Datum (Von) in der Zukunft zu haben:

  • Personen mit zukünftiger Rolle werden standardmässig nicht in Personen-Listen/Exporten einer Gruppe angezeigt
  • Zukünftige Rollen sollen auf dem Verlauf-Tab (history) der Person sichtbar sein
    • Neue Unterteilung mit Überschriften wie im Mockup (Aktive, Künftige, Inaktive Rollen)
  • Das Bis Datum muss immer entweder leer oder min. gleich oder später als das Von Datum sein. Anders gesagt, das Bis Datum darf, wenn ausgefülllt, nie vor dem Von Datum liegen.
  • Bei Rollen mit Start-Datum in der Zukunft wird zusätzlich im Label die Info ab 1.1.2024 angezeigt (ab Start-Datum)
  • In der STI Klasse einer Gruppe kann definiert werden ob Personen mit zukünftiger Rolle standardmässig in dieser Liste angezeigt werden:
    • list_future_people: true
  • Personen mit FutureRole haben standardmässig :basic_permissions_only
  • Personen welche andere Personen in einer Gruppe lesen/bearbeiten können, können auch Personen mit FutureRoles in der selben Gruppe lesen/bearbeiten
  • Bei aktiven Rollen, kann das Von Datum nicht in die Zukunft verschoben werden (Aus einer bestehenden Rolle kann keine FutureRole erstellt werden). Grund: Allfällige create-Hooks sind ja bereits durchgelaufen, wir wollen diese nicht noch einmal ausführen
  • Wird bei einer bestehenden FutureRole das Von Datum auf Heute oder auf ein Datum in der Vergangenheit gesetzt, wird die Rolle sofort aktiv

Mockup

Person Verlauf Tab

image

Person show

image

Person Role Filter

image

Tech-Spec

  • Zukünftige Rolle ohne Callbacks erfassen (after_create Callback sollen erst ausgeführt werden wenn die Rolle aktiv wird)

im Group Model

...
:has_many :people, -> { |include_future = false| select_scope ... }
...
  • PersonReadables und PersonWritables specs ergänzen und sicherstellen das Zugriff auf Personen mit FutureRoles sichergestellt ist (include_future = true)

Person Filter Role

FutureRole als STI Typ

  • FutureRole erbt von Role
  • via eine FutureRole kann die primary_group nicht gesetzt werden
  • Zusätzliches Attribut für zu generierenden Rollen Typ sobald Rolle aktiv wird: future_role_type
  • Neues Attribut create_on
  • Neuer DJ welcher regelmässig die FutureRoles prüft und ggf. aktiviert (create_on)
    • wenn der Job bei einem Role#create! failed, soll dieser eine Exception reporten, jedoch dann einfach mit der nächsten FutureRole weitermachen. Sprich der Job kann nicht durch eine einzelne, failende Rolle blockiert werden
    • es wird eine neue Role vom Typ future_role_type erstellt und der FutureRole entry gelöscht, somit werden die after_create, after_save callbacks ausgeführt
    • future_role_type, create_on ist leer auf dem neuen Role-Entry
    • kann die Rolle nicht erstellt werden, soll eine Exception geraised werden und der FutureRole entry irgendwie als fehlerhaft markiert. z.B. rot markiert mit dem Hinweis: 'Rolle konnte nicht erstellt werden' wir gehen davon aus das in diesem Fall alle 15min wenn der Job läuft eine Exception geraised wird die wir dann im sentry sehen bis das Problem behoben wurde.
  • In Role Base Class sicherstellen das future_role_type und create_on immer leer sind
  • in FutureRole muss future_role_type und create_on immer gesetzt sein
    • create_on muss in der Zukunft liegen
  • FutureRoles werden hard-deleted wenn eine Gruppe archiviert wird

PaperTrail und FutureRole

  • Wenn FutureRole erstellt wird: Mitglied Mitglied in Mitglieder (Familie) ab 1.1.2024 wurde hinzugefügt
  • Log entry das Rolle erstellt/aktiv wurde wenn der Job die effektive Rolle erstellt (converted)

ToDo

  • Bestehender Code im PR Task/sac 97 future roles #2230 studieren
  • FutureRole Model inkl. Validierungen, Scope sowie DB Migration für zusätzliche Attribute erstellen
  • Validierungen auf Role Base class erstellen
  • Fälle handhaben bei welchen die Von/Bis Daten einer bestehenden Rolle bearbeitet werden
    • Aktive Rolle kann nie eine FutureRole werden
    • FutureRole wird sofort in eine aktive Role umgewandelt falls Von Datum Heute oder in der Vergangenheit gesetzt wird
  • Person#history in Aktive, Künftige und Inaktive Rollen unterteilen
  • Person#show Rollen mit Künftige Rollen ergänzen
  • FutureRole label mit Datum ab z.b.: 'ab 1.1.2024' ergänzen
  • Specs für: PersonReadables, PersonWritables, Abilities, PeopleController inkl. Tabular Exports
  • DJ Job ActivateFutureRoleJob oder ähnlich erstellen
  • FutureRoles hard-deleten wenn Gruppe archiviert wird
  • Personen-Filter mit Option 'Zukünftige Rollen miteinbeziehen' erweitern PEOPLE: Anpassen Filter für FutureRoles #2254
  • PaperTrail logging für FutureRoles anpassen
  • Mit angemessener Rolle "durchklicken"
  • CHANGELOG-Eintrag unter "unreleased" unten hinzufügen
  • Durch z.B. Tom testen lassen (manual Testing auf Integration)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions