Plik z wymaganiami studiów wymagania.json - iiuni/projektzapisy GitHub Wiki

UWAGA: ten dokument jest nieaktualny – dotyczy starej, wycofanej implementacji aplikacji efektów.

Wstęp

Wymagania potrzebne do ukończenia studiów są trzymane w pliku wymagania.json w folderze /zapisy. Można ten plik edytować, bez potrzeby ponownego uruchamiania całej aplikacji. Znaczy to, że jeśli chcemy coś poprawić lub dodać nowe wymagania to wystarczy edytować ten plik. Gdy student wchodzi w zakładkę Moje studia to ładowany jest plik z wymaganiami i na jego podstawie wyświetla się strona z wymaganiami oraz jest liczony progres studenta w drodze do ukończenia studiów. Wyświetlenie informacji związanych z progresem studenta wymaga jednak uzupełnienia w SZ danych związanych z ukończonymi przedmiotami.

Podstawowa składnia

W głównym obiekcie kluczami są id programów studiów, a wartościami obiekty, gdzie kluczem jest rok, od którego dane zasady ukończenia studiów obowiązują, a wartością obiekt z wymaganiami dla danego programu studiów oraz roku. Id programów studiów są brane z bazy danych Systemu Zapisów.

Szablon:

{
  "id_programu": {
    "rok1": {
      wymagania dla danego id i roku
    },
    "rok2": {
      wymagania dla danego id i roku
    }
  },
  "id_innego_programu": {
    "rok1": {
      wymagania dla danego id i roku
    },
    "rok2": {
      wymagania dla danego id i roku
    }
  }
  ...
}

Wymagania dla danego programu i roku

Klucze w obiekcie z wymaganiami mają raczej charakter opisowy i nie mają znaczenia podczas interpretacji dokumentu (wyjątkiem jest klucz ects). Pod tymi kluczami znajdują się obiekty, które opisują konkretne wymaganie do zaliczenia (np. zaliczenie min. 54 ects'ów z przedmiotów informatycznych lub zaliczenie AiSDu).

Poszczególne wymagania

Description

W takim obiekcie wymagany jest klucz description, dla którego wartością będzie napis z opisem wymagania (np. "Przedmioty informatyczne" lub "Algorytmy i Struktury Danych"). Ten opis będzie się wyświetlał w liście wymagań na podstronie Moje studia w SZ. Description jednak może zawierać pusty string, jeśli opis nie jest potrzebny do zrozumienia danego wymagania (Jeśli wymaganie jest związane z efektami i tagami, to one wyświetlają się tak jak w innych miejscach w SZ).

Filter

Innym wymaganym kluczem jest filter. Wartością dla niego będzie obiekt, w którym możliwymi kluczami są type, tag, effect oraz subject. Oznaczają one odpowiednio, typ przedmiotu, tag, efekt oraz przedmiot i odpowiadają one w aplikacji odpowiednio modelom Effects, Tag, Type oraz Proposal. Wartościami będą tutaj listy z id typu string. Te id można znaleźć w tabelach w bazie danych. Są to courses_type, courses_tag oraz courses_effects. Wartości tutaj oznaczają, że przedmioty które spełniają te kryteria (czyli np. są danego typu lub zaliczają dany efekt) będą brane pod uwagę przy liczeniu progresu w zaliczeniu danego wymagania.

Id konkretnych przedmiotów można pozyskać poniższym zapytaniem.

SELECT courses_courseinformation.id, courses_courseinformation.name FROM courses_courseinformation JOIN proposal_proposal ON courses_courseinformation.id = proposal_proposal.courseinformation_ptr_id ORDER BY name;

Sum

sum to klucz, który nie jest wymagany. Jego obecność oznacza, że dane wymaganie dotyczy zdobycia konkretnej liczby punktów ects. Jego brak natomiast oznacza, że dane wymaganie dotyczy zaliczenia jakiegoś efektu/przedmiotu/czegoś jeszcze innego. Wartością jest liczba oznaczająca liczbę ects.

Aggregate i GroupBy

Poniższy przykład oznacza, że należy zdobyć przynajmniej 15 ects za przedmioty z grup I2 oraz S oznaczone tym samym znacznikiem specjalistycznym.

Przykład użycia:

"specialization": {
  "description": "Tagi dziedzinowe",
  "filter": {
    "type": ["6", "14"],
    "tag": ["4", "6", "7", "1", "5"]
  },
  "groupBy": "tag",
  "aggregate": "sum",
  "sum": 15
},

Ects

Jest to wyjątkowe wymaganie, które jest interpretowane w Systemie Zapisów w inny sposób. Klucze description oraz sum są tutaj obowiązkowe. Nie występuje tutaj klucz filter, jednakże może wystąpić klucz filterNot. Zapisujemy dla filterNot informacje tak samo jak dla klucza filter jednakże, oznacza on że danego typu przedmiotów nie bierzemy pod uwagę. Np. dla studiów II stopnia nie liczymy ectsów dla przedmiotów typu Informatyczny I.

Innym kluczem wyjątkowym jest limit, który oznacza ograniczenia punktów ects. Np. dla studiów I stopnia możemy dostać co najwyżej 6 ectsów za przedmioty humanistyczno-społeczne. Dla tego klucza dajemy obiekt, w którym kluczem jest type, a dla niego obiekt, dla którego kluczami są id typów przedmiotów, a wartościami liczba punktów ects. Nie bierzemy pod uwagę limitów ze względu na tagi, efekty czy pojedyncze przedmioty.

Przykład dla studiów II stopnia od 2019:

{
  "ects": {
    "description": "Wymagane punkty ECTS",
    "filterNot": {
      "type": ["36", "5", "17"]
    },
    "limit": {
      "type": {
        "42": 6
      }
    },
    "sum": 100
  },
}

W powyższym przykładzie, przy liczeniu wszystkich punktów ects, nie bierzemy pod uwagę przedmiotów o typie Informatyczny 1, K1 - kurs podstawowy oraz lektoratów.

Dodatkowo ustalamy maksymalną liczbę punktów ects do zdobycia za przedmioty humanistyczno-społeczne na 6.

Ogólne wskazówki

  • Pojedyncze przedmioty i efekty do zaliczenia raczej staramy się zapisywać w osobnych obiektach (obiektach z description, filter itd.). Taka konwencja ułatwia pisanie logiki i wyświetlanie wymagań w SZ.
  • Warto pamiętać, że nawet w przypadku pojedynczych przedmiotów możemy potrzebować kilku obiektów z bazy danych do wzięcia pod uwagę. Np. Logikę dla informatyków możemy zaliczyć zwykłą logiką lub zaawansowaną, a wiele obowiązków na I stopniu dzieli się na przedmioty (L) i (M).
  • Wiele typów przedmiotów w bazie danych jest przestarzałych, więc trzeba zwracać uwagę czy nie używamy nieużywanego obiektu. Np. typ Informatyczny 2 raczej został zastąpiony typami I2.T oraz I2.Z.
  • Jeśli wymaganiem jest zaliczenie jakiegoś efektu lub tagu, to możemy zostawić description jako pusty napis, ponieważ efekty i tagi wyświetlają się w tabeli z wymaganiami. Jeśli są one zaliczone to mają swój domyślny kolor, a jak nie to wyświetlają się na czerwono.

Podsumowanie

Jeśli chcemy dodać nowe zasady zaliczenia studiów dla jakiegoś programu to jest bardzo prawdopodobne, że będą one dosyć podobne do poprzednich, więc w takim wypadku wystarczy skopiować, lekko zmodyfikować i wkleić w odpowiednim miejscu już istniejące wymagania w pliku. W przypadku nowych skomplikowanych wymagań, dla których powyżej opisana składnia nie wystarczy, trzeba będzie zmodyfikować kod by dodać nowe klucze lub zmienić logikę interpretacji tego pliku.