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 ustawiamyusos_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.
#1015)
3. Eksport danych o zaliczeniach (API w przygotowaniu,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
.