Wymiana danych z systemem USOS - iiuni/projektzapisy GitHub Wiki

System USOS jest wirtualnym dziekanatem — służy głównie do zarządzania losem studentów (zaliczenia, programy studiów, stypendia, oceny, obronione prace dyplomowe), ale obsługuje też inne biurokratyczne potrzeby uczelni (sylabusy, pensa). Nasz System Zapisów przejmuje lub uzupełnia niektóre z tych zadań. Konieczna jest zatem wymiana danych między systemami — w niektórych sprawach źródłem jest USOS, w innych System Zapisów.

W tym dokumencie opisujemy, jakie dane są przenoszone i kiedy powinno to nastąpić. Potem poruszamy techniczne aspekty identyfikowania i łączenia danych między systemami.

Etapy wymiany danych

Etapy te są opisane z punktu widzenia administratora USOS-a. Eksport oznacza zatem przekazanie danych z USOS-a do Systemu Zapisów, import oznacza przekazanie z Systemu Zapisów do USOS-a.

1. Eksport studentów

Odbywa się to po każdej rekrutacji. Należy dodać do Zapisów nowych studentów, ustawić każdemu z nich usos_id. Konieczne jest też przejechanie się po studentach w Systemie Zapisów i zdeaktywowanie tych, którzy nie są już studentami.

2. Import zapisów

Po zakończeniu zapisów w każdym semestrze importujemy z Systemu Zapisów

  • Informację o prowadzonych przedmiotach (dla każdego ustawiamy w Zapisach usos_kod) i grupach (dla każdej ustawiamy usos_nr);
  • Informację o prowadzących grup (Pracownikom, którzy nie byli wcześniej zidentyfikowani ustawiamy w Zapisach usos_id);
  • Informację o terminach zajęć.
  • Informację o zapisanych studentach.

3. Eksport danych o zaliczeniach (API w przygotowaniu, #1015)

Co semestr, po zakończeniu sesji, przekazujemy do Systemu Zapisów informacje o zaliczeniu przedmiotów przez studenta. Dane te pozwolą studentom identyfikować, które efekty kształcenia mają już zaliczone, a które jeszcze przed nimi.

4. Eksport danych o obronionych tematach prac dyplomowych (API w przygotowaniu)

Zaznaczenie pracy dyplomowej jako obronionej pozwoli studentom odfiltrować ją w module Prac Dyplomowych Systemu Zapisów.

Identyfikowanie obiektów

Obiekty w Systemie Zapisów odpowiadają obiektom w USOS-ie w następujący sposób.

Zapisy USOS (klucz gł.) Pole w modelu w Zapisach
Employee DZ_PRACOWNICY (ID:int) usos_id:int
Student DZ_STUDENCI (ID:int) usos_id:int
Classroom DZ_SALE (ID:int) usos_id:int
Semester DZ_CYKLE_DYDAKTYCZNE (KOD:str) usos_kod:str
CourseInstance DZ_PRZEDMIOTY_CYKLI (PRZ_KOD:string, CDYD_KOD:string) usos_kod:str (odpowiada PRZ_KOD-CDYD_KOD)
Group DZ_GRUPY (ZAJ_CYK_ID:int, NR:int) usos_nr:int (odpowiada NR)
Term DZ_TERMINY_GRUP (ID:int), DZ_TERMINY (ID:int) usos_id:int, usos_term_id:int

Pola w modelach Systemu Zapisów pozwalają zidentyfikować obiekty bez utrzymywania osobnej bazy (lub pliku) mapującej dane między systemami. By zmapować przedmioty, najpierw należy zbudować mapę semestrów (między id w Zapisach i KOD w USOS-ie). Pola semester oraz usos_kod w modelu CourseInstance jednoznacznie przyporządkowują wtedy przedmiot w Zapisach do odpowiadającego mu obiektu w USOS-ie. By zmapować grupy, wykorzystujemy mapę przedmiotów. Każda grupa w Zapisach jest przez API dostarczana razem ze swoim przedmiotem, więc mamy dostęp zarówno do pola usos_kod jak i usos_nr.