Толық деректер моделі: 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 нысандары (кез келген сыртқы байланыстырудың тірегі — соңғы бөлімді қараңыз).

config

subjects_custom

families_custom

users

school_years

timetables

staffing

absences

panels

events

SCHOOL

string

_id

мекеме домені

string

name

есептік жазба атауы

string

country

есептік жазба елі

string

current_school_year

ағымдағы оқу жылы

CONFIG

SUBJECT

FAMILY

USER

SCHOOL_YEAR

TIMETABLE

STAFFING

ABSENCE

PANEL

EVENT

Ортақ өрістер: _extids және wishes

Екі өріс көптеген нысандарда кездеседі. Оларды әр схемада қайталамау үшін, бұл жерде бір рет сипатталады.

  • _extids (ExternalIds) — нысанның сыртқы жүйелердегі идентификаторлары кестесі, мысалы { "auriga": "12345" }. Синхрондалатын нысандарда болады (пәндер, пән топтары, пайдаланушылар, алаңдар, кабинеттер, ресурстар, мұғалімдер, сыныптар, топтар…). Бұл — сыртқы анықтамалықпен сәйкестендірудің тірек нүктесі (соңғы бөлімді қараңыз).
  • wishes — уақыттық шектеулер: қолжетімділік, қалаған немесе болдырмайтын уақыт аралықтары, ең көп сағат көлемі, қалаған кабинет… Жоспарланатын нысандардың көпшілігінде болады: пайдаланушылар, кестедегі мұғалімдер, курстар (сынып пәндері), топтар, сыныптар, кабинеттер, алаңның уақыт ауқымдары, қадағалау торлары. Ауқымына қарай бұл шектеулер ғаламдық (мектеп деңгейі) немесе белгілі бір кестеге тән болады.

1-деңгей — Мектеп анықтамалығы

Мектеп анықтамалығында кестеге тәуелсіз мекеме үшін шын болатын нәрсе бар: пәндер каталогы, пайдаланушылар анықтамалығы, оқу жылдары күнтізбесі.

family

parent

жыл бойынша тағайындаулар

groups

holidays

FAMILY

string

name

string

code

SUBJECT

string

name

string

short

қысқа атау (көрсету үшін)

string

code

string

parent

басты пән

string

family

пән тобы

string

color

object

_extids

сыртқы идентификаторлар

USER

string

login

string

first_name

string

middle_name

(ел үшін қажет болса)

string

last_name

string

idnumber

ресми идентификатор

array

roles

admin teacher staff student

string

customrole

Теңшелетін рөл

int

servicehours

жұмыс сағаттарының базалық көлемі

bool

external

сыртқы мұғалім

object

subjects

оқытылатын пәндер

object

wishes

ғаламдық қолжетімділік

object

_extids

PLACEMENT

string

class

тағайындалған сынып

string

date_start

string

date_end

array

groups

тағайындалған топтар

PLACEMENT_GROUP

string

group

groupset немесе виртуалды топ

array

weeks

апта ауқымдары

SCHOOL_YEAR

string

name

string

date_start

string

date_end

array

altweeks

кезектесетін апталар

HOLIDAY

string

name

string

begin

string

end

Пәндер — 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 — тұтас жоспарлау бірлігі. Оның мұғалімдердің, сыныптардың, топтардың және пәндердің өз жергілікті көшірмесі бар — жергілікті көшірме қағидасын Деректерді ұйымдастыру бетінен қараңыз.

config

sites

teachers

classes

lessons (топтар тобы, көп топты)

classrooms

resources

subjects

groups

lessons

parent (иерархия)

түпнұсқа (ішінара жергілікті көшірме)

әдепкі teachers

ішінара жергілікті көшірме және идентификатор бойынша жасырын байланыс

құрамдас топтар

TIMETABLE

bool

active

жарияланған ба?

array

lessons

ортақ сабақтар

TIMETABLE_CONFIG

string

type

week cycle calendar

int

time_period

уақыт аралығының ұзақтығы

int

time_unit

уақыт аралығын бөлу

array

weekdays

жұмыс күндері

string

displaymode

hours periods agenda

int

cycle

цикл ұзындығы

array

dates

calendar болса, шектері

object

date_windows

генерация терезелері

TIMETABLE_SITE

string

name

object

distances

алаңдар арасындағы қашықтық

object

hours

уақыт торлары

TIMETABLE_TEACHER

string

first_name

string

last_name

string

virtual_name

толтырылатын орын

array

subjects

виртуалды орынның пәндері

string

idnumber

int

servicehours

кесте бойынша қайта анықталады

string

classroom

қалаған кабинет

TIMETABLE_CLASS

string

name

string

level

string

campus

array

sites

тек бір алаң ескеріледі

int

studentsnb

оқушылардың теориялық саны (қолайлы кабинетті есептеу үшін)

string

classroom

әдепкі кабинет

bool

offgrid

тордан тыс (calendar)

string

videolink

барлық сабақтардағы әдепкі бейнеконференция сілтемесі

string

resourcelink

барлық сабақтардағы әдепкі ресурс сілтемесі (LMS)

LESSON

TIMETABLE_CLASSROOM

string

name

int

capacity

string

specialisation

еркін мамандандыру

int

maxclasses

бір мезгілдегі сыныптар

string

building

string

description

еркін сипаттама

array

tags

сипаттамалар немесе жабдықтар белгілері

TIMETABLE_RESOURCE

string

name

int

number

қолжетімді саны

TIMETABLE_CLASS_SUBJECT

string

code

Subject-тен мұраланған

array

incompatibilities

үйлеспеушіліктер

number

pweight

педагогикалық салмақ

array

teachers

әдепкі мұғалімдер

number

minutes

мақсатты сағат көлемі

string

specialisation

қажетті кабинет

TIMETABLE_CLASS_GROUP

string

name

string

code

bool

free

еркін топ

string

parent

басты топ

int

studentsnb

оқушылардың теориялық саны (қолайлы кабинетті есептеу үшін)

SUBJECT

USER

GROUPSET_ITEM

string

name

string

code

array

groups

топ идентификаторлары

Бапталуы — 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) жалғанады — соңғысы бірнеше сыныпқа ортақ топтар тобы мен көп топты сабақтарға арналған.

lessons (сыныптың сабақтары)

lessons (топтар тобы, көп топты)

assoc · concat · weekalt (күрделі сабақтар)

group

teachers

classroom

resources

memos

position

TIMETABLE_CLASS

LESSON

int

duration

уақыт аралықтарының санымен

int

duration_actual

нақты минуттар

int

duration_accounted

есептелген минуттар

string

modality

in_person remote hybrid self_study

string

subject

пән идентификаторы

string

group

топ идентификаторы

array

teachers

null мұғалімді мәжбүрлеп алып тастайды

string

classroom

null кабинетті мәжбүрлеп алып тастайды

string

status

planned draft canceled done

string

_id

сабақтың тұрақты бірегейлігі

string

_osrev

нұсқа (оптимистік құлыптау)

TIMETABLE

TIMETABLE_CLASS_GROUP

TIMETABLE_TEACHER

TIMETABLE_CLASSROOM

TIMETABLE_RESOURCE

MEMO

string

comment

string

pub

пікірдің көрінуі

string

owner

int

tstp

уақыт белгісі

POSITION

string

day

күні, апта күні немесе цикл күнінің нөмірі

int

period

тордағы уақыт аралығының индексі

string

start

нақты бастау уақыты HH:MM (тек тордан тыс)

string

end

нақты аяқтау уақыты HH:MM (тек тордан тыс)

bool

fixed

бекітілген сабақ (генерацияда қозғалмайды)

Сабақтың өзегі

Сабақ жоспарлау өрістерін — 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, мәртебе), ол субъект бойынша жіктеледі.

teachers

classes

staff

students

substitutes

ABSENCE

ABSENCE_TEACHER

string

date_start

string

date_end

string

reason

аударма кілті немесе атауы

array

subjects

қатысты пәндер

array

classes

қатысты сыныптар

string

status

ABSENCE_CLASS

ABSENCE_STAFF

ABSENCE_STUDENT

string

date_start

string

reason

array

subjects

алынып тасталған пәндер

string

status

SUBSTITUTE

string

substitute

алмастырушының аты

string

date_start

ереженің басы (күні)

string

date_end

ереженің соңы (күні)

array

hours

қатысты уақыт аралықтары (begin/end минутпен, day)

array

classes

қатысты сыныптар

array

subjects

қатысты пәндер

string

comment

пікір

AbsenceTeacher белгілі subjects/classes тізімімен шектелуі мүмкін және алмастыру ережелерінің массивін (substitutes, әрқайсысы AbsenceTeacherSubstitute: алмастырушы, кезең, уақыт аралықтары, қамтылатын сыныптар мен пәндер) алып жүреді. Мәртебелер субъектіге қарай ерекшеленеді (мысалы, сынып үшін ok/aborted). Қараңыз: Алмастыру / Орнын басу сөздігі және Қатыспауды басқару модулі.

Қызметкерлер

Қадағалау және тәрбиелеу қызметтеріне арналған бөлек модуль (жеке де сатылады).

grids

assignments

staff

schedule

needs

STAFFING

STAFFING_GRID

array

dates

белсенділік ауқымдары

array

days

array

periods

уақыт аралықтары

STAFFING_ASSIGNMENT

string

name

int

req

қызметкерлердің ең аз саны

int

ideal

қалаған құрам

string

site

string

priority

high normal low

array

allowed_staff

STAFFING_STAFF_MEMBER

string

first_name

string

last_name

string

virtual_name

толтырылатын орын

string

color

STAFFING_SCHEDULE

object

dates

күн бойынша кезекшіліктер

STAFFING_NEED_SPAN

string

day

күн немесе күні

string

begin

HH:MM

string

end

HH:MM

int

headcount

қажетті құрам

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 моделін сыртқы анықтамалықпен байланыстыру үшін үш қағида басым:

  1. Сөздік кілттері — тұрақты идентификаторлар. Пәндер, пайдаланушылар, мұғалімдер, сыныптар, топтар, кабинеттер, ресурстар атауымен емес, өзгермейтін идентификатормен (JSON кілті) индекстелген. Кез келген сәйкестендіру үшін пайдалану керек тірек — осы, ешқашан name емес.

  2. _extids (ExternalIds) өрісі сыртқы идентификаторларды алып жүреді. Синхрондалатын нысандарда (Subject, Family, TimetableSite, TimetableClassroom, TimetableResource, TimetableTeacher, TimetableClass, TimetableClassGroup, User…) болып, әр нысанды үшінші тарап жүйелеріндегі идентификаторларымен байланыстырады, мысалы { "auriga": "12345", "aimaira": "67890" }. Бұл — екі жақты сәйкестендірудің канондық тірек нүктесі.

  3. Мектеп ↔ кесте жергілікті көшірмесі әдейі жасалған. Сынып пәні немесе кестедегі мұғалім — тірі сілтеме емес, байытылған көшірме. Сондықтан сыртқы анықтамалық қай деңгейде сәйкестендірілетінін шешуі керек: мектеп анықтамалығы (тұрақты каталог) немесе нақты бір кесте (күні бар жоспарлау). Таралу ережелерінің егжей-тегжейі мына жерде: Деректерді ұйымдастыру.

Синхрондау бапталуы 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). Осы бет пен схема арасында алшақтық болса, схема басым.

Сондай-ақ қараңыз