Толық деректер моделі: JSON нысандары, байланыстар және онтология
Бұл бет Omniscol есептік жазбасының толық деректер моделін сипаттайды: нысандарды, олардың негізгі өрістерін және байланыстарын. Ол тұжырымдамалық Деректерді ұйымдастыру бетін жалғастырады, ол неге деген сұраққа жауап береді (мектеп анықтамалығы ↔ кесте, жергілікті көшірмелер); мұнда мақсат — не екенін көрсету: пайдалануға жарамды құрылымдық карта, әсіресе модельді сыртқы анықтамалықпен байланыстыру үшін (басқару бағдарламасы, анықтамалық, ақпараттық жүйе).
Техникалық бет. Бұл анықтама интеграцияға және сыртқы жүйемен сәйкестендіруге арналған. Ол Omniscol-ды күнделікті пайдалануға қажет емес: деректердің практикалық ұйымдастырылуын түсіну үшін Деректерді ұйымдастыру бетін қараңыз.
Мекеменің барлық деректері ағаш түрінде ұйымдастырылған. Төменде сипатталған нысандар (пайдаланушылар, оқу жылдары, кестелер, қатыспаулар, оқиғалар және т.б.) осы құрылымның әртүрлі тармақтарына сәйкес келеді. Нормативтік дереккөз — есептік жазбаның JSON схемасы. Оны екі түрде қарауға болады:
- шикі дереккөз (JSON схемасының өзі), есептік жазба
https://api.omniscol.com/api/guest/school_schema.jsonмекенжайында ұсынады; - omniscol.com/fr/datamodel бетіндегі оқуға ыңғайлы ағаш көрінісі (және omniscol.com/fr/developers бетіндегі сәйкес API анықтамасы).
Бұл схема деректер қорындағы физикалық сақтауды JSON құжаты түрінде дәл сипаттайды. Бұл бет оның уақыт өтсе де тұрақты, реттелген оқылымын береді.
Мектеп құжаты: түбір
Түбір құжат мекеменің тұрақты анықтамалығын және оның барлық жоспарлауларын біріктіреді. Бірінші деңгейдегі ішкі ағаштар:
| Түбір кілті | Нысан | Рөлі |
|---|---|---|
config |
SchoolConfig |
Есептік жазба параметрлері (ел, опциялар, уақыт белдеуі, сыртқы синхрондау) |
subjects_custom |
SubjectFull сөздігі |
Мектептің теңшелетін пәндері |
families_custom |
Family сөздігі |
Теңшелетін пән топтары |
users |
User сөздігі |
Пайдаланушылар анықтамалығы (барлық рөлдер) |
school_years |
SchoolYear массиві |
Оқу жылдары және каникул |
timetables |
Timetable сөздігі |
Кестелер |
absences |
Absence* тобы |
Қатыспаулар (мұғалімдер, сыныптар, қызметкерлер, оқушылар) |
staffing |
Staffing |
Қызметкерлер және қадағалау модулі |
panels |
Panel сөздігі |
Ақпарат тақталары |
events |
Event сөздігі |
Күнтізбе түріндегі оқиғалар |
api, snapshots, jobs, translations, logo |
әртүрлі | Техникалық баптаулар және тарих |
«Сөздік» ретінде көрсетілген ішкі ағаштар — кілттері тұрақты идентификаторлар болатын JSON нысандары (кез келген сыртқы байланыстырудың тірегі — соңғы бөлімді қараңыз).
Ортақ өрістер: _extids және wishes
Екі өріс көптеген нысандарда кездеседі. Оларды әр схемада қайталамау үшін, бұл жерде бір рет сипатталады.
_extids(ExternalIds) — нысанның сыртқы жүйелердегі идентификаторлары кестесі, мысалы{ "auriga": "12345" }. Синхрондалатын нысандарда болады (пәндер, пән топтары, пайдаланушылар, алаңдар, кабинеттер, ресурстар, мұғалімдер, сыныптар, топтар…). Бұл — сыртқы анықтамалықпен сәйкестендірудің тірек нүктесі (соңғы бөлімді қараңыз).wishes— уақыттық шектеулер: қолжетімділік, қалаған немесе болдырмайтын уақыт аралықтары, ең көп сағат көлемі, қалаған кабинет… Жоспарланатын нысандардың көпшілігінде болады: пайдаланушылар, кестедегі мұғалімдер, курстар (сынып пәндері), топтар, сыныптар, кабинеттер, алаңның уақыт ауқымдары, қадағалау торлары. Ауқымына қарай бұл шектеулер ғаламдық (мектеп деңгейі) немесе белгілі бір кестеге тән болады.
1-деңгей — Мектеп анықтамалығы
Мектеп анықтамалығында кестеге тәуелсіз мекеме үшін шын болатын нәрсе бар: пәндер каталогы, пайдаланушылар анықтамалығы, оқу жылдары күнтізбесі.
Пәндер — SubjectFull / Subject / Family
Теңшелетін пән (SubjectFull) базалық пәнді (Subject: name, short, code,
type, _extids) parent, family және color өрістерімен кеңейтеді. Мектеп
деңгейінде екі көз қатар өмір сүреді: елдің ортақ пәндері (тек оқуға арналған)
және мекеменің теңшелетін пәндері. Функционалдық мәліметтер:
Пәндерді басқару.
Пайдаланушылар — User (мұғалімдерді қоса)
User — анықтамалықтың жалғыз нысаны: жеке басы (аты, тегі, idnumber,
байланыс), аутентификация (login), roles, жұмыс сағаттарының базалық көлемі
(servicehours), ғаламдық қолжетімділік (wishes өрісі) және placements.
Мұғалім бөлек нысан емес: ол roles ішінде teacher бар User (бір
пайдаланушы бірнеше рөлді қоса алады). placements өрісі (оқу жылы бойынша
индекстелген) оқушыны белгілі бір кезеңде class пен groups топтарына
байланыстырады. Мәліметтер: Мұғалімдерді басқару.
Оқу жылдары — SchoolYear / Holiday
SchoolYear date_start → date_end аралығын, holidays тізімін және altweeks
(кезектесетін апталар) анықтайды. Бұл — уақыттық шеңбер, контейнер емес:
кестелер оның ішінде орналаспай, оған жайылады. Қараңыз:
Оқу жылы.
2-деңгей — Кесте
Timetable — тұтас жоспарлау бірлігі. Оның мұғалімдердің, сыныптардың, топтардың
және пәндердің өз жергілікті көшірмесі бар — жергілікті көшірме қағидасын
Деректерді ұйымдастыру бетінен қараңыз.
Бапталуы — TimetableConfig
Шешуші өріс — type: week (қайталанатын апталық), cycle (көп күнді цикл,
cycle қараңыз) немесе calendar (нақты күндер, dates қараңыз). time_period
және time_unit тордың құрылымын анықтайды; weekdays — жұмыс күндерін;
date_windows — автоматты генерацияның шектеу терезелерін.
Алаңдар, кабинеттер, ресурстар
TimetableSite (алаң) өз classrooms кабинеттерін (TimetableClassroom:
capacity, specialisation, maxclasses, building) және resources
ресурстарын (TimetableResource: number = қолжетімді саны, жүйе оның артық
брондалмауын қамтамасыз етеді) қамтиды. distances алаңдар арасындағы жол уақытын
модельдейді. Қараңыз:
Бөлімшелер, алаңдар, кабинеттер, ресурстар, бірнеше кабинет және
Кабинет мамандандырулары.
Кестедегі мұғалімдер — TimetableTeacher
User жазбасының байытылған ішінара көшірмесі: тек бірнеше сәйкестендіру өрісі
көшіріледі (first_name, last_name, idnumber), оларға жоспарлауға тән өрістер
қосылады (қайта анықталатын servicehours, қалаған classroom, кесте бойынша
wishes). Бос емес virtual_name виртуалды мұғалімді білдіреді (толтырылатын
орын, артында нақты User жоқ).
Сыныптар, сынып пәндері, топтар
TimetableClass:name,level,campus/sites,studentsnbжәне үш негізгі ішкі ағаш —subjects,groups,lessons.TimetableClassSubject: жоспарлау үшін байытылған пәннің жергілікті көшірмесі (Subjectкеңейтеді) —minutes(мақсатты көлем),pweight(педагогикалық салмақ),incompatibilities, әдепкіteachers, кабинеттіңspecialisation. Пәнді сабақ түрімен тағайындау әр түр үшін бөлек жазба жасайды. Қараңыз: Курстар, сабақтар, сабақ түрлері.TimetableClassGroup: сыныптың бөлігі.free=trueсыныптың қалған бөлігімен қайшылықтарды өшіреді (Еркін топтар);parentтоптар иерархиясын орнатады (топтар иерархиясы).
Топтар арасындағы ережелер — сыныпты бөлу, туралау, топтар тобы
Топтар арасындағы байланыстар кестенің groups ішкі ағашында, үш түрде беріледі:
| Схема | Нысан | Мағынасы | Бет |
|---|---|---|---|
TimetableGroupTimeset |
сыныпты бөлу | Бір сыныптың өзара жарыспайтын, қатар қойылатын топтары (жарты сыныптар, факультативтер) | Сыныптарды бөлу |
TimetableGroupSpaceset |
туралау | Әртүрлі сыныптардың айна уақыт аралықтарында бірге жұмыс істейтін топтары | Топ туралаулары |
TimetableGroupGroupset |
топтар тобы | Бірнеше топты біріктіретін метатоп (GroupsetItem: name, code, groups[]) |
Топтар тобы |
Жалпы шолуды да қараңыз: Сынып, топ, кіші топ.
3-деңгей — Сабақтар
Сабақ (Lesson) — кестеге нақты қойылатын оқыту бірлігі: ұзақтығы, пәні,
тобы, мұғалім(дер)і, кабинеті, ресурстары, орны және мәртебесі. Ол сынып пәні
негізінде жасалады (2-деңгейді қараңыз) және не сыныпқа (class.lessons),
не тікелей кестеге (timetable.lessons) жалғанады — соңғысы бірнеше сыныпқа ортақ
топтар тобы мен көп топты сабақтарға арналған.
Сабақтың өзегі
Сабақ жоспарлау өрістерін — duration (уақыт аралықтарымен), duration_actual /
duration_accounted (нақты / есептелген минуттар), modality, subject,
group, teachers, classroom, resources — алып жүреді, оларға position,
status, memos және бірегейлік (_id, _osrev) қосылады. teachers немесе
classroom мәнін null қылу мұғалімнің немесе кабинеттің болмауын анық
мәжбүрлейді.
Күрделі сабақтар
Сабақ басқаларын біріктіре алады:
assoc— байланыстырылған сабақтар: топтар бірге алмасады.concat— біріктірілген сабақтар: қатаң қатарынан.weekalt— кезектесетін апталар: апта сайын сабақтың бір нұсқасы.
Бұл тетіктер күрделі сабақтарды қамтиды — қараңыз Күрделі сабақтар: кезектесетін, біріктірілген, байланыстырылған, бірлесіп өткізілетін.
Сабақтың орны
position — сабақты уақытта орналастыратын нысан. Оған мына өрістер кіреді:
position.day— сабақ күні, кесте режиміне қарай көпформалы: апталық режимде күн атауы (monday…sunday), циклдік режимде цикл күнінің нөмірі ("1","2"…) немесе күнтізбе режиміндеYYYY-MM-DDкүні. Бұл режимге қарай пішінін өзгертетін бір өріс; ол әрқашан болады.position.period— уақыт торындағы уақыт аралығының индексі.periodде,start/endте жоқ сабақ мереке күніне сәйкес келеді.position.start/position.end— бастау және аяқтау нақты уақыты (HH:MM), стандартты уақыт аралығына сәйкес келмейтін тордан тыс немесе күнтізбе режиміндегі сабақтар үшін.position.fixed— логикалық мән (әдепкі жалған): бекітілген сабақ, оны автоматты генерация жылжытпайды.
Сыныптың сабақтары class.lessons ішінде тұрады; timetable.lessons массиві
топтар тобына байланысты ортақ сабақтарды алып жүреді.
Сабақтың бірегейлігі
Әр сабақта екі техникалық бірегейлік өрісі бар, олар Premium есептік жазбаларда болады:
_id— тұрақты идентификатор, сабақ құрылғанда беріледі де, кейін өзгермейді (ол уақыт белгісін және мазмұн ізін біріктіреді). Бұл — бірлесіп өңдеу үшін және сабақтарды уақыт бойынша бақылайтын сыртқы құрал үшін сабақтың кілті. Күнтізбе кестесінің қайталанатын даналары үшін (кезектесетін апталар, біріктірулер, байланыстырулар) әр данасының_idмәні негізгі сабақтың мәнінен туындайды, ол танылатын күйде қалады._osrev— нұсқа таңбалауышы (оптимистік құлыптау), әр өзгерісте (уақыт белгісі + өзгеріс индексі) артады және әліпбилік тұрғыдан қатаң реттелген (бұл бір нұсқаның екіншісінен жаңа екенін оңай білуге мүмкіндік береді). Ол бірлесіп өңдеуге қатарлас өзгерістерді анықтауға және біріктіруге мүмкіндік береді: ескірген клиент нұсқасы қайшылықты көрсетеді, оны сервер үнсіз үстінен жазудың орнына шешеді немесе біріктіреді.
Қатыспаулар
Қатыспаулардың ортақ негізі бар (Absence: date_start, date_end, reason,
hours, comment, мәртебе), ол субъект бойынша жіктеледі.
AbsenceTeacher белгілі subjects/classes тізімімен шектелуі мүмкін және
алмастыру ережелерінің массивін (substitutes, әрқайсысы
AbsenceTeacherSubstitute: алмастырушы, кезең, уақыт аралықтары, қамтылатын
сыныптар мен пәндер) алып жүреді. Мәртебелер субъектіге қарай ерекшеленеді
(мысалы, сынып үшін ok/aborted). Қараңыз:
Алмастыру / Орнын басу сөздігі және Қатыспауды басқару модулі.
Қызметкерлер
Қадағалау және тәрбиелеу қызметтеріне арналған бөлек модуль (жеке де сатылады).
StaffingGrid — үлгі (күндер, уақыт аралықтары); assignments орындарды сипаттайды
(req/ideal, priority, StaffingNeedSpan арқылы уақыт аралығы бойынша
егжей-тегжейлі needs); schedule күн бойынша нақты кезекшіліктерді
көрсетеді. Қараңыз: Қызметкерлерді басқару модулі.
Оқиғалар
Event — тордың үстіне қойылатын күнтізбе жазбасы: мекемеде болатын, бірақ үнемі өтетін
сабақ емес нәрсе — педагогикалық кеңес, ата-аналар жиналысы, бір
күндік емтихан, экскурсия, ашық есік күні. Оқиғалар events сөздігінде
(event-<n> кілттері) сақталады және Premium мүмкіндіктеріне жатады.
Event өрістері (міндетті: title, start, end):
title— көрсетілетін атау.start/end— басы мен соңы,YYYYMMDDTHHmmSSформатында.rrule— болса, қайталану ережесі.attendees— қатысушылар: пайдаланушы, сынып, топ, еркін жазба (custom), не бүкіл мекеме (everybody) / кез келген ерікті (anyone).location— орын(дар): кестедегі кабинет немесе еркін жазба.resources— оқиға үшін брондалған ресурстар.videolink— қашықтан қатысуға арналған бейнеконференция сілтемесі.memos— пікірлер;color— түс (оналтылық).
Пайдалану жағы (құру, торға қою, интерфейс өрістері) мына бетте сипатталған: Бір реттік оқиғалар.
Ақпарат тақталары
Panel — күннің сабақтарын көрсететін ақпарат тақтасы (холл, кабинет,
бастапқы экран…). Ол columns таңдауын, topline, filters/exclusions және
сыртқы түр баптауларын анықтайды. Қараңыз: Ақпарат тақтасы сөздігі.
Идентификаторлар, жергілікті көшірмелер және ERP-мен байланыстыру
Omniscol моделін сыртқы анықтамалықпен байланыстыру үшін үш қағида басым:
-
Сөздік кілттері — тұрақты идентификаторлар. Пәндер, пайдаланушылар, мұғалімдер, сыныптар, топтар, кабинеттер, ресурстар атауымен емес, өзгермейтін идентификатормен (JSON кілті) индекстелген. Кез келген сәйкестендіру үшін пайдалану керек тірек — осы, ешқашан
nameемес. -
_extids(ExternalIds) өрісі сыртқы идентификаторларды алып жүреді. Синхрондалатын нысандарда (Subject,Family,TimetableSite,TimetableClassroom,TimetableResource,TimetableTeacher,TimetableClass,TimetableClassGroup,User…) болып, әр нысанды үшінші тарап жүйелеріндегі идентификаторларымен байланыстырады, мысалы{ "auriga": "12345", "aimaira": "67890" }. Бұл — екі жақты сәйкестендірудің канондық тірек нүктесі. -
Мектеп ↔ кесте жергілікті көшірмесі әдейі жасалған. Сынып пәні немесе кестедегі мұғалім — тірі сілтеме емес, байытылған көшірме. Сондықтан сыртқы анықтамалық қай деңгейде сәйкестендірілетінін шешуі керек: мектеп анықтамалығы (тұрақты каталог) немесе нақты бір кесте (күні бар жоспарлау). Таралу ережелерінің егжей-тегжейі мына жерде: Деректерді ұйымдастыру.
Синхрондау бапталуы config.extsync (SchoolConfigExtsync) ішінде тұрады:
systems (бапталған коннекторлар), sync (бағыт және нысандар), export және
schedules, сондай-ақ Omniscol кілті мен идентификаторы бойынша сәйкестік
кестелері (mappings). Бағдарламалық қол жеткізу жағынан REST API мен токендер
Omniscol API — аутентификация токендері бетінде, синхрондау коннекторлары
Сыртқы жүйелермен синхрондау (ERP) бетінде сипатталған.
Әр өрістің нақты және толық пішіні есептік жазбаның анықтамалық JSON схемасында анықталған (
https://api.omniscol.com/api/guest/school_schema.json, оқуға ыңғайлы көрінісі omniscol.com/fr/datamodel). Осы бет пен схема арасында алшақтық болса, схема басым.