Pendahuluan
Data Dictionary mendokumentasikan definisi lengkap setiap field dalam tabel-tabel utama sistem TemuBelajar sebagai referensi bagi developer backend, frontend, dan database administrator.
Tabel: users
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
school_id | bigint unsigned | — | — | No | FK → schools.id |
name | varchar | 255 | — | No | Nama lengkap pengguna |
username | varchar | 50 | — | No | NISN (siswa) atau NIP (guru), unik |
password | varchar | 255 | — | No | Hash password (bcrypt/Argon2id) |
role | enum | — | student | No | student, teacher, admin, super_admin |
must_change_password | tinyint(1) | — | 1 | No | 1 = wajib ganti, 0 = sudah ganti |
is_active | tinyint(1) | — | 1 | No | 0 = akun dinonaktifkan |
last_login_at | timestamp | — | NULL | Yes | Timestamp login terakhir |
created_at | timestamp | — | CURRENT_TIMESTAMP | No | Dibuat pada |
updated_at | timestamp | — | CURRENT_TIMESTAMP | No | Diperbarui pada |
Tabel: students
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
user_id | bigint unsigned | — | — | No | FK → users.id, UNIQUE |
school_id | bigint unsigned | — | — | No | FK → schools.id |
classroom_id | bigint unsigned | — | — | Yes | FK → classrooms.id |
nisn | varchar | 10 | — | No | NISN siswa, UNIQUE |
level | tinyint unsigned | — | 1 | No | Level gamifikasi (1–50) |
xp | int unsigned | — | 0 | No | Total Experience Points |
sis_score | decimal | 8,2 | 0.00 | No | Social Impact Score |
average_rating | decimal | 3,2 | 0.00 | No | Rating rata-rata sebagai tutor |
total_sessions_as_tutor | int unsigned | — | 0 | No | Total sesi sebagai tutor |
total_sessions_as_learner | int unsigned | — | 0 | No | Total sesi sebagai learner |
Tabel: requests
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
school_id | bigint unsigned | — | — | No | FK → schools.id |
student_id | bigint unsigned | — | — | No | FK → students.id (host) |
subject_id | bigint unsigned | — | — | No | FK → subjects.id |
topic_id | bigint unsigned | — | — | Yes | FK → topics.id |
description | text | — | NULL | Yes | Deskripsi masalah |
preferred_location | varchar | 255 | — | No | Nama lokasi pertemuan |
latitude | decimal | 10,8 | NULL | Yes | Koordinat latitude GPS |
longitude | decimal | 11,8 | NULL | Yes | Koordinat longitude GPS |
preferred_time | datetime | — | — | No | Waktu yang diinginkan |
duration_minutes | smallint unsigned | — | 60 | No | Durasi yang diinginkan (menit) |
tutor_count | tinyint unsigned | — | 1 | No | Jumlah tutor yang dibutuhkan |
status | enum | — | pending | No | Status permintaan |
expired_at | timestamp | — | NULL | Yes | Batas waktu request aktif |
Enum status: pending | searching | accepted | rejected | on_going | completed | cancelled
Tabel: bookings
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
request_id | bigint unsigned | — | — | No | FK → requests.id |
tutor_id | bigint unsigned | — | — | No | FK → students.id |
status | enum | — | pending | No | Status booking |
scheduled_at | datetime | — | NULL | Yes | Jadwal pertemuan disepakati |
matching_score | decimal | 5,2 | NULL | Yes | Skor AI Matching (0–100) |
rejection_reason | text | — | NULL | Yes | Alasan penolakan tutor |
reschedule_time | datetime | — | NULL | Yes | Waktu alternatif dari tutor |
responded_at | timestamp | — | NULL | Yes | Waktu tutor merespons |
Enum status: pending | accepted | rejected | rescheduled | cancelled
Tabel: meetings
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
booking_id | bigint unsigned | — | — | No | FK → bookings.id, UNIQUE |
qr_token | varchar | 100 | — | No | Token unik untuk QR Check-In |
qr_expires_at | timestamp | — | — | No | Waktu kadaluarsa QR |
check_in_lat | decimal | 10,8 | NULL | Yes | Latitude saat check-in |
check_in_lng | decimal | 11,8 | NULL | Yes | Longitude saat check-in |
check_in_at | timestamp | — | NULL | Yes | Waktu check-in |
check_out_at | timestamp | — | NULL | Yes | Waktu check-out |
duration_actual | smallint unsigned | — | NULL | Yes | Durasi nyata (menit) |
summary | text | — | NULL | Yes | Ringkasan hasil diskusi |
completion_status | enum | — | NULL | Yes | Status penyelesaian masalah |
Enum completion_status: solved | partially_solved | not_solved
Tabel: ratings
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
meeting_id | bigint unsigned | — | — | No | FK → meetings.id |
rater_id | bigint unsigned | — | — | No | FK → users.id (pemberi rating) |
ratee_id | bigint unsigned | — | — | No | FK → users.id (penerima rating) |
score | tinyint unsigned | — | — | No | Nilai rating: 1–5 |
comment | text | — | NULL | Yes | Komentar opsional |
is_solved | tinyint(1) | — | NULL | Yes | Apakah masalah terselesaikan |
rated_at | timestamp | — | CURRENT_TIMESTAMP | No | Waktu pemberian rating |
Tabel: social_impact_scores
| Field | Tipe | Panjang | Default | Nullable | Deskripsi |
|---|
id | bigint unsigned | — | AUTO_INCREMENT | No | Primary Key |
student_id | bigint unsigned | — | — | No | FK → students.id |
score | decimal | 8,2 | 0.00 | No | Nilai SIS periode ini |
period | varchar | 20 | — | No | Format: 2026-1 (tahun-semester) |
sessions_count | int unsigned | — | 0 | No | Jumlah sesi sebagai tutor |
avg_rating | decimal | 3,2 | 0.00 | No | Rating rata-rata periode ini |
calculated_at | timestamp | — | — | No | Terakhir dihitung |