Skip to content

Należy zmienić 2-elementowy podział na wydział/jednostkę #438

Description

@mpasternak

O co chodzi

Dziś struktura uczelni jest modelowana dwoma osobnymi tabelami
Wydzial i Jednostka — z płaską relacją wydział → jednostka. To sztywne:
nie obsługuje uczelni bez wydziałów, federacji, ani głębszych hierarchii
(katedra → zakład → pracownia), a „wydział" jest osobnym bytem zamiast
naturalnym poziomem struktury.

Propozycja

Zlikwidować podział i oprzeć wszystko na jednym drzewie (istniejące już
drzewo MPTT Jednostka): na górze uczelnia, poniżej dowolnie zagnieżdżone
jednostki. Wydział staje się jednostką o rodzaju pełniącym rolę wydziału
— rola wydziału to wewnętrzna własność rodzaju, niezależna od poziomu w
drzewie (uczelnia może mieć np. 2 instytuty wprost pod sobą ORAZ wydział
skupiający 5 jednostek, wszystkie na tym samym poziomie).

Kluczowe założenia:

  • Konwersja, nie destrukcja — każdy Wydzial staje się Jednostka;
    dane przeżywają w całości (absorpcja-in-place, nazwa modelu Jednostka
    zostaje, bez nowej tabeli).
  • Nowy słownik RodzajJednostki (edytowalny per-tenant: Wydział,
    Instytut, Klinika, Katedra…) z flagą pelni_role_wydzialu.
  • Historia temporalna zachowanaJednostka_WydzialJednostka_Rodzic
    (od/do), constraint GiST zostaje; trigger bazodanowy zastąpiony logiką w
    Pythonie.
  • Raport wydziałów = wszystkie węzły rodzaju wydziałowego niezależnie od
    pozycji; picker Select2 z podziałem na rodzaj.

Dokumentacja

Pełna analiza wykonalności i zaakceptowany design (na branchu dev):

  • docs/superpowers/specs/2026-07-02-konsolidacja-wydzial-jednostka-analiza.md
  • docs/superpowers/specs/2026-07-02-konsolidacja-wydzial-jednostka-design.md

Skala: ŚREDNIA. Największy blok to mechaniczne przepięcie ~4 podsystemów
raportowych; migracja fazowa (strangler), z drop Wydzial na końcu.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions