Onboarding Peta Pendidikan
Setelah sistem terpasang, wizard ini mengubah beberapa jawaban Anda menjadi graf awal seorang anak. Tiga langkah pertama wajib, sisanya boleh dilewati dan dilengkapi kapan saja.
Mode contoh: jawaban hanya tersimpan di browser ini, tidak dikirim ke serverPrinsip rancangan
Tiga menit sampai berguna
Hanya nama panggilan, tanggal lahir, dan posisi sekolah yang wajib. Dengan itu jalur tahap sudah terbentuk dan graf bisa dibuka.Umur menentukan cabang
Tanggal lahir menghasilkan tebakan jenjang dan kelas. Langkah yang tidak relevan untuk umur itu disembunyikan.Tidak tahu bukan nol
Yang tidak dijawab tidak ditulis. Tahap yang sudah lewat ditandai selesai tanpa level, bukan level rendah.Jawaban awal berbobot rendah
Perkiraan orang tua disimpan dengansource: 'onboarding'dan bobot 0,4, sehingga rapor dan hasil lomba nanti menggesernya.Bisa berhenti dan lanjut
Draf tersimpan di setiap perubahan. Graf baru ditulis saat konfirmasi, dalam satu transaksi, jadi tidak ada anak setengah jadi.Hasilnya terlihat sejak awal
Panel kanan menunjukkan node dan relasi dari setiap jawaban, supaya tidak ada data yang muncul tanpa Anda tahu asalnya.
Cabang menurut umur
Kelas yang disarankan dihitung dari umur pada 1 Juli tahun ajaran berjalan: umur 7 berarti kelas 1. Ini hanya nilai awal, karena anak bisa masuk lebih cepat, akselerasi, atau mengulang.
| Kelompok | Langkah yang muncul | Yang disembunyikan | Fokus graf awal |
|---|---|---|---|
| Pra-sekolah | Anak, posisi, minat dan olahraga, batas jam | Sekolah, kemampuan, lomba, jurusan | Minat dan kesenangan. Belum ada level akademik. |
| SD | Ditambah sekolah, gambaran kemampuan, lomba | Jurusan | Fondasi dan eksplorasi kegiatan. |
| SMP | Semua langkah | Tidak ada | Celah prasyarat, lomba berjenjang, arah jurusan mulai ditanya. |
| SMA | Semua langkah | Tidak ada | Kesiapan menuju jurusan tujuan. |
| Kuliah | Anak, posisi, kampus, minat, tujuan | Kemampuan per tahap sekolah | Riwayat ringkas saja. |
Dari jawaban ke graf
| Langkah | Yang ditulis | Catatan |
|---|---|---|
| Akun | User | Sekali per instalasi. Kata sandi disimpan sebagai hash. |
| Anak | Child, (User)-[:GUARDIAN_OF]->(Child) | Wajib. Hanya nama panggilan, bukan nama lengkap. |
| Posisi | (Child)-[:ENROLLED_IN {status}]->(Stage) | Wajib. Tahap sekarang active, tahap sebelumnya done. |
| Sekolah | School, USES ke Curriculum, ATTENDS | Jenis: public, private, international. |
| Kemampuan | MASTERS {level, enjoyment} dan satu Observation per bidang | Menempel pada kompetensi di tahap sekarang. Bobot 0,4. |
| Minat | Interest, INTERESTED_IN {score} | Entri baru dibuat bila belum ada. |
| Olahraga | PRACTICES {level, enjoyment, hoursPerWeek} | Olahraga di luar katalog ditandai custom untuk ditinjau. |
| Metode | LEARNS_WITH ke Method | Sempoa dan sejenisnya. |
| Lomba | Competition, CompetitionEdition, Round, PARTICIPATES_IN {result} | Babak tertinggi yang dicapai. |
| Tujuan | Child.weeklyHourCap, Child.aiConsent, AIMS_FOR ke Major | Jurusan hanya ditanya mulai SMP. |
Status instalasi
Server menentukan status dari isi database, bukan dari sebuah penanda. Karena itu status tetap benar setelah database dipulihkan dari cadangan.
- Saat server hidup: tunggu ArcadeDB, buat database
education, jalankan migrasi skema, isi katalog awal. Semuanya aman diulang. needs_owner: belum ada pengguna. Halaman utama mengalihkan ke wizard, mulai dari langkah akun.needs_child: akun ada, anak belum. Wizard mulai dari langkah anak, memuat draf bila ada.ready: minimal satu anak tersimpan. Halaman utama terbuka.
Kasus yang perlu ditangani
- Umur dan kelas tidak cocok. Kelas selalu bisa diubah. Saran dari umur tidak pernah mengunci pilihan.
- Sekolah Cambridge. Kurikulum dicatat pada sekolah. Pemetaan kelas ke tahap nasional dikonfirmasi setelah onboarding, karena berbeda antarsekolah.
- Riwayat sekolah lama. Wizard hanya menanyakan sekolah sekarang. Sekolah sebelumnya ditambah dari halaman profil.
- Entri di luar katalog. Olahraga atau metode baru dibuat dengan penanda
custom, lalu bisa digabung dengan entri katalog. - Berhenti di tengah. Draf disimpan pada akun. Tidak ada node anak sebelum konfirmasi.
- Anak kedua. Wizard dijalankan lagi tanpa langkah akun. Katalog dipakai bersama.
- Tanpa persetujuan AI. Graf tetap berjalan. Saran AI dimatikan untuk anak itu.
- Klik Selesai dua kali. Belum ditangani di paket awal: perlu kunci idempotensi supaya anak tidak tercatat ganda.
Setelah onboarding
Yang dilewati berubah menjadi daftar tugas, diurutkan dari yang paling menaikkan mutu sinyal bakat.
- Unggah rapor terakhir. Bukti rapor berbobot 0,8 dan menggantikan perkiraan awal.
- Lengkapi lomba yang pernah diikuti beserta arsipnya.
- Konfirmasi pemetaan tahap bila sekolah memakai Cambridge.
- Isi jam dan biaya kegiatan, supaya beban mingguan terhitung.
- Mulai kelas 8, tambahkan kandidat SMA untuk dibandingkan.
Instalasi sampai onboarding
Paket berisi docker-compose.yml, backend Go awal, migrasi skema, dan wizard ini. Yang dibutuhkan hanya Docker dengan plugin Compose.
unzip education-map.zip && cd education-map cp .env.example .env # lalu isi dua kata sandi di dalamnya docker compose up -d --build docker compose logs -f app # tunggu baris "listening on :8080"
Buka http://localhost:8080. Karena belum ada akun, halaman dialihkan ke /onboarding dan wizard mulai dari langkah akun.
| Endpoint | Guna |
|---|---|
GET /api/setup/status | Mengembalikan needs_owner, needs_child, atau ready. |
POST /api/setup/owner | Membuat akun pertama. Ditolak bila akun sudah ada. |
GET, PUT /api/onboarding/draft | Menyimpan dan memuat draf wizard. |
POST /api/onboarding/complete | Memvalidasi jawaban dan menulis graf dalam satu transaksi. |
GET /api/children | Daftar anak milik akun yang masuk. |