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 server

Prinsip rancangan

  1. Tiga menit sampai berguna

    Hanya nama panggilan, tanggal lahir, dan posisi sekolah yang wajib. Dengan itu jalur tahap sudah terbentuk dan graf bisa dibuka.
  2. Umur menentukan cabang

    Tanggal lahir menghasilkan tebakan jenjang dan kelas. Langkah yang tidak relevan untuk umur itu disembunyikan.
  3. Tidak tahu bukan nol

    Yang tidak dijawab tidak ditulis. Tahap yang sudah lewat ditandai selesai tanpa level, bukan level rendah.
  4. Jawaban awal berbobot rendah

    Perkiraan orang tua disimpan dengan source: 'onboarding' dan bobot 0,4, sehingga rapor dan hasil lomba nanti menggesernya.
  5. Bisa berhenti dan lanjut

    Draf tersimpan di setiap perubahan. Graf baru ditulis saat konfirmasi, dalam satu transaksi, jadi tidak ada anak setengah jadi.
  6. 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.

KelompokLangkah yang munculYang disembunyikanFokus graf awal
Pra-sekolahAnak, posisi, minat dan olahraga, batas jamSekolah, kemampuan, lomba, jurusanMinat dan kesenangan. Belum ada level akademik.
SDDitambah sekolah, gambaran kemampuan, lombaJurusanFondasi dan eksplorasi kegiatan.
SMPSemua langkahTidak adaCelah prasyarat, lomba berjenjang, arah jurusan mulai ditanya.
SMASemua langkahTidak adaKesiapan menuju jurusan tujuan.
KuliahAnak, posisi, kampus, minat, tujuanKemampuan per tahap sekolahRiwayat ringkas saja.

Dari jawaban ke graf

LangkahYang ditulisCatatan
AkunUserSekali per instalasi. Kata sandi disimpan sebagai hash.
AnakChild, (User)-[:GUARDIAN_OF]->(Child)Wajib. Hanya nama panggilan, bukan nama lengkap.
Posisi(Child)-[:ENROLLED_IN {status}]->(Stage)Wajib. Tahap sekarang active, tahap sebelumnya done.
SekolahSchool, USES ke Curriculum, ATTENDSJenis: public, private, international.
KemampuanMASTERS {level, enjoyment} dan satu Observation per bidangMenempel pada kompetensi di tahap sekarang. Bobot 0,4.
MinatInterest, INTERESTED_IN {score}Entri baru dibuat bila belum ada.
OlahragaPRACTICES {level, enjoyment, hoursPerWeek}Olahraga di luar katalog ditandai custom untuk ditinjau.
MetodeLEARNS_WITH ke MethodSempoa dan sejenisnya.
LombaCompetition, CompetitionEdition, Round, PARTICIPATES_IN {result}Babak tertinggi yang dicapai.
TujuanChild.weeklyHourCap, Child.aiConsent, AIMS_FOR ke MajorJurusan 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.

  1. Saat server hidup: tunggu ArcadeDB, buat database education, jalankan migrasi skema, isi katalog awal. Semuanya aman diulang.
  2. needs_owner: belum ada pengguna. Halaman utama mengalihkan ke wizard, mulai dari langkah akun.
  3. needs_child: akun ada, anak belum. Wizard mulai dari langkah anak, memuat draf bila ada.
  4. 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.

  1. Unggah rapor terakhir. Bukti rapor berbobot 0,8 dan menggantikan perkiraan awal.
  2. Lengkapi lomba yang pernah diikuti beserta arsipnya.
  3. Konfirmasi pemetaan tahap bila sekolah memakai Cambridge.
  4. Isi jam dan biaya kegiatan, supaya beban mingguan terhitung.
  5. 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.

EndpointGuna
GET /api/setup/statusMengembalikan needs_owner, needs_child, atau ready.
POST /api/setup/ownerMembuat akun pertama. Ditolak bila akun sudah ada.
GET, PUT /api/onboarding/draftMenyimpan dan memuat draf wizard.
POST /api/onboarding/completeMemvalidasi jawaban dan menulis graf dalam satu transaksi.
GET /api/childrenDaftar anak milik akun yang masuk.

Peta konsep · Arsitektur sistem