T2-W01 Domain Map — Academic Master → Timetable
| Item |
Nilai |
| Mode |
Server · /home/scola/odoo |
| Sumber kebenaran |
Runtime FE/BE (bukan docs lama) |
| Scope |
Core W01 only |
Canonical graph
op.academic.year (+ op.academic.term)
│
├── op.course # FE: grade levels / jenjang-kelas
├── op.subject
├── op.classroom # OPTIONAL for Core session
├── scola.lesson.hour.profile ── scola.lesson.hours
├── op.batch # FE: rombel / study-group (SSOT class)
│ └── faculty_id(s) # Core homeroom / wali assignment
└── op.session # SSOT timetable entry
faculty_id + subject_id + batch_id + lesson_hours_id?
+ start/end datetime (+ optional classroom_id)
Ownership classifications
| Concept |
Canonical owner |
Classification |
Notes |
| Academic year |
op.academic.year |
CANONICAL |
API /api/v1/academic/academic-years/* |
| Term / semester |
op.academic.term |
CANONICAL |
Nested under year save; used when present |
| Grade / program |
op.course |
CANONICAL |
FE label “grade levels” |
| Subject |
op.subject |
CANONICAL |
|
| Rombel / class |
op.batch |
CANONICAL |
No parallel scola.class |
| Lesson slot |
scola.lesson.hours (+ profile) |
CANONICAL |
OpenEduCat op.timing = LEGACY |
| Timetable entry |
op.session |
CANONICAL |
FE “schedule”; package scola_timetable |
| Homeroom teacher |
op.batch.faculty_id / faculty_ids |
CANONICAL (Core) |
|
| Subject teaching assignment |
op.teaching.assignment |
OPTIONAL (LMS) |
Model lives in scola_lms; not installed on Golden Core; W01 uses op.session.faculty_id |
| Room |
op.classroom |
OPTIONAL for Core schedule |
Conflict only if classroom_id set |
| Generate / auto-generate |
/api/timetable/sessions/* |
COMPATIBILITY path |
Same op.session store |
Capability / API (Core)
| Surface |
Capability (registry) |
Mutation gate |
| Academic year |
academics.academic_year.* |
_can_manage_academic roles |
| Grade / subject / rombel |
mostly .view in registry |
_can_manage_academic in controller |
| Lesson hours |
schedule_slot.view/manage |
manage routes for save/delete |
| Sessions |
schedule.view/manage |
manage for save/delete |
| Teaching-assignments HTTP |
academics.lms.manage + LMS flag |
Out of Core W01 denominator |
Explicit decisions
- Term: APPLICABLE (
op.academic.term).
- Room: NOT required for Core W01 session create.
- Teaching assignment for Core:
op.session.faculty_id + batch homeroom fields; LMS op.teaching.assignment not certified.
- Overlapping academic years: Product does not enforce unique active year in API — document as permitted unless later Product forbids; do not invent prohibition.
- Conflict engine: Scola
_find_conflicts on op.session (batch / faculty / classroom) — fail closed via ValidationError.
Downstream reads (Core)
| Actor |
Route / API |
Scope |
| Admin |
/schedule → sessions list |
company |
| Teacher |
/faculty/schedule |
own faculty sessions (when faculty linked) |
| Student / parent |
portal schedule |
derived; fixture may still lack student linkage (not W02) |