Skip to content

Domain Glossary

Business meanings are LOCKED in plans/scope/001-mvp.md §1 (source of truth). This file maps each domain term to its canonical code identifier so naming stays consistent. Use these exact identifiers in DB, service, and API code.

Term (domain / UI)Code identifier (table / column / enum)
Sesilesson_sessions table; status = session_status enum
Siswaa users row with user_type = 'SISWA'
Tutora users row with user_type = 'TUTOR'
Tingkattingkats table
Segmentasisegmentasis table
Kategorikategoris table (organizational grouping — NOT a pricing axis)
Subjectsubjects table
SubjectLevelsubject_levels table (optional child of a Subject)
Golongangolongans table (tutor tier; GOL_1 highest)
Tahun Ajaranacademic_years table (Jul–Jun cycle)
Tagihanstudent_settlements (monthly student invoice); per-sesi rate = student_pricing_matrix.amount_idr
Honorariumtutor_settlements (tutor payout — siswa NEVER sees); per-sesi rate = tutor_pricing_matrix.amount_idr
Jadwal tetapschedules table (recurring template)
Slottutor availability window (tutor_slots, iter 2+)
mode_surchargelesson_sessions.mode_surcharge_idr (per-sesi escape hatch)
Billing periodbilling_periods table
  • Tables snake_case, plural. Columns snake_case. (See db-conventions.md.)
  • Bilingual fields use _id / _en suffixes for Indonesian / English: label_id / label_en, name_id / name_en, description_id / description_en. ⚠️ _id here means Indonesian, not a foreign key. FK columns are <entity>_id (e.g. subject_id). Disambiguate by context: a bilingual text pair vs a uuid FK.
  • Permission keys are 3-segment <domain>:<entity>:<action>[_self] (see schema.md).
  • Audit action is entity:verb (e.g. subject:create) — distinct from permission keys.

Full business definitions: plans/scope/001-mvp.md §1.