Lewati ke isi

Domain: Komunikasi & Portal

SSOT untuk modul komunikasi Scola — pengumuman, notifikasi, pesan, portal orang tua.

Last verified: 2026-03-31


1. Visi & Best Practice

1.1 Kondisi Ideal

Pengumuman Sekolah: - Broadcast pengumuman ke seluruh sekolah atau per kategori (jenjang, kelas, peran) - Pengumuman dengan attachment (gambar, PDF) - Scheduling (jadwal publish) - Read tracking (siapa yang sudah baca) - Broadcast publik ke channel resmi sekolah tanpa membuka data pribadi siswa

Notifikasi Real-time: - Push notification (FCM) ke device mobile/desktop - In-app notification center - Notification per event: tugas baru, nilai masuk, pengumuman, pembayaran jatuh tempo - User preference: subscribe/unsubscribe per kategori notifikasi - Quiet hours + urgent bypass untuk mencegah spam operasional - Channel config terpusat untuk WhatsApp, Telegram, email, dan push

Portal Orang Tua: - Dashboard: ringkasan nilai, kehadiran, keuangan anak - View jadwal anak - View rapor anak - View tagihan & pembayaran - Pengajuan izin anak - Notifikasi dari sekolah - Multi-anak support

Chat / Messaging: - Pesan langsung antar user (guru ↔ orang tua) - Group chat per kelas - File sharing - Scope komunikasi wali kelas harus dibatasi ke rombel yang diampu

Agenda & Kalender: - Kalender sekolah (libur, ujian, kegiatan) - Event management - RSVP untuk kegiatan sekolah


2. Arsitektur & Data Model

2.1 Frontend Structure

src/views/
├── Communication/
│   ├── AnnouncementList.vue         # Daftar pengumuman
│   ├── AnnouncementDetail.vue       # Detail pengumuman
│   ├── AnnouncementForm.vue         # Buat/edit pengumuman
│   └── NotificationCenter.vue       # Pusat notifikasi
├── Chat/
│   ├── ChatList.vue                 # Daftar percakapan
│   ├── ChatRoom.vue                 # Chat room
│   └── ...
├── ParentViews/
│   ├── ParentDashboard.vue          # Dashboard orang tua
│   ├── ParentSchedule.vue           # Jadwal anak
│   ├── ParentChildAcademic.vue      # Nilai anak
│   ├── ParentFinancePage.vue        # Keuangan anak
│   ├── ParentReportCard.vue         # Rapor anak
│   └── ParentLeaveRequest.vue       # Pengajuan izin anak
├── Calendar/
│   ├── SchoolCalendar.vue           # Kalender sekolah
│   └── EventDetail.vue              # Detail event
└── StudentViews/
    ├── StudentDashboard.vue         # Portal siswa
    └── StudentNotifications.vue     # Notifikasi siswa

2.2 Key Capabilities

Capability Roles
communication.announcements.view all roles
communication.announcements.manage admin, principal, vice_principal_public_relations
communication.chat.view teacher, parent, counselor
parents.dashboard.view parent
parents.children.view parent

2.3 Notification Architecture

Backend Event (Odoo)
  → Firebase Cloud Messaging (FCM)
    → Push Notification (mobile/desktop)
    → In-app notification store (Pinia)
    → Notification Center UI

3. Fitur & Status Implementasi

Fitur Status Catatan
Pengumuman (CRUD) ✅ Done
Pengumuman per kategori ✅ Done Broadcast + filtered
Scheduling pengumuman ✅ Done publish_date + expiry_date di backend pengumuman
Read tracking pengumuman ✅ Done scola.announcement.read + counter baca
Push notification (FCM) ✅ Done
In-app notification center ✅ Done Grouping/timestamp notification center mengikuti timezone sekolah
Quiet hours + urgent bypass ✅ Done User preference tersedia
Notification preferences ✅ Done Subscribe/unsubscribe per tipe sudah ada
Portal orang tua: dashboard ✅ Done ParentDashboard, ringkasan waktu mengikuti timezone sekolah
Portal orang tua: jadwal anak ✅ Done ParentSchedule
Portal orang tua: nilai anak ✅ Done ParentChildAcademic
Portal orang tua: keuangan ✅ Done ParentFinancePage
Portal orang tua: rapor anak ✅ Done ParentReportCard
Portal orang tua: pengajuan izin ✅ Done ParentLeaveRequest
Multi-anak support (parent) ✅ Done Child selector
Portal siswa: dashboard ✅ Done StudentDashboard, label deadline tugas mengikuti timezone sekolah
Portal siswa: notifikasi ✅ Done
Kalender sekolah ✅ Done SchoolCalendar
Chat antar user ✅ Done Direct chat + channel/group messaging, timestamp mengikuti timezone sekolah
Scoped messaging wali kelas ✅ Done Parent contact scope dibatasi rombel wali kelas
WhatsApp integration ✅ Done whatsapp-web.js via admin settings + test channel
Telegram integration ✅ Done Bot admin + broadcast publik + personal link per user
Group chat per kelas ✅ Done Auto-provision rombel untuk wali kelas + orang tua dalam scope
Event RSVP ✅ Done User dapat merespons hadir/tentatif/tidak hadir dari jadwal
Delivery analytics lintas channel ✅ Done Dashboard admin menampilkan performa in-app/email/WA/Telegram/push

4. Gap Analysis & Backlog

Status Saat Ini

Tidak ada gap produksi aktif untuk workflow komunikasi Tier 1. Fitur inti pengumuman, notifikasi lintas channel, portal orang tua/siswa, scoped chat wali kelas, kalender sekolah, RSVP event, Telegram, dan WhatsApp sudah terimplementasi.

Verifikasi 2026-03-31 menutup gap operasional berikut: - filter kategori/prioritas/rentang tanggal pada daftar berita sekarang bekerja tanpa bergantung pada query pencarian - notification center, preview chat/pesan, dan portal parent/student mengikuti timezone sekolah, bukan timezone browser atau hardcode Asia/Jakarta - helper announcement dan messaging yang dipakai lintas halaman sekarang juga mengikuti timezone sekolah untuk fallback tanggal dan upload attachment RPC context

Roadmap Lanjutan

Area Nilai Tambah Catatan
Event attendance recap Admin kesiswaan/humas dapat melihat daftar hadir kegiatan sekolah Pelengkap operasional, bukan blocker komunikasi inti
Health monitor channel Admin dapat memantau status sesi WhatsApp Web dan quota provider lebih detail Berguna untuk operasi harian, tidak memblokir publish/send
Telegram onboarding automation Self-link via deep link bot /start Saat ini linking manual via chat ID/@username sudah tersedia

4.1 Guardrail Operasional Sekolah Indonesia

  • Kanal publik seperti Telegram hanya untuk pengumuman umum sekolah, agenda, dan informasi non-personal.
  • Informasi sensitif siswa seperti absensi, tagihan, atau status akademik tetap diarahkan ke in-app, email, atau WhatsApp/Telegram individual yang sudah ditautkan pengguna.
  • Gunakan nomor WhatsApp resmi sekolah dan jalankan sesi whatsapp-web.js pada device/desktop operasional sekolah, bukan akun pribadi guru/staf.
  • Simpan audit trail baca pengumuman dan gunakan quiet hours untuk menjaga komunikasi tetap profesional.
  • Untuk konteks wali kelas, scope percakapan ke orang tua dalam rombel yang diampu agar tidak terjadi kebocoran data lintas kelas.
  • Event RSVP dipakai untuk agenda sekolah/non-akademik yang memang membutuhkan konfirmasi kehadiran, bukan sebagai pengganti absensi pembelajaran harian.

5. File References

Frontend

  • src/views/AnnouncementList.vue — Konsumsi pengumuman user
  • src/views/NotificationList.vue — Notification center
  • src/views/Messaging.vue — Direct chat + channel/group messaging
  • src/views/ParentViews/Communication/ParentTeacherChat.vue — Komunikasi orang tua ↔ guru
  • src/views/SettingsManagement/NotificationSettings.vue — Preference + quiet hours
  • src/views/SettingsManagement/NotificationChannelConfig.vue — Konfigurasi channel WA/Telegram/Email/Push
  • src/services/calendar/calendarRsvp.service.js — Fetch event user + update RSVP
  • src/views/ScheduleManagement/Student/Schedule.vue — RSVP event siswa
  • src/views/ScheduleManagement/Faculty/Schedule.vue — RSVP event guru
  • src/views/ScheduleManagement/Parent/ParentScheduleView.vue — RSVP event orang tua
  • src/views/Notifications/NotificationAnalytics.vue — Analitik performa notifikasi lintas channel

Backend

  • scola_portal/models/announcement.py — Pengumuman, scheduling, read tracking, Telegram broadcast publik
  • scola_portal/models/notification_preference.py — Preference per user + quiet hours
  • scola_portal/models/notification_config.py — Konfigurasi WhatsApp, Telegram, email, push
  • scola_portal/controllers/portal_api.py — API pengumuman, preferences, dan admin channel settings
  • scola_portal/controllers/calendar_participation_api.py — API event user + RSVP
  • scola_portal/controllers/messaging_api.py — Scoped homeroom messaging + auto-provision group rombel
  • scola_portal/controllers/general_messaging_api.py — General portal messaging API

7. Panduan Konfigurasi Implementor

configuration-guides/komunikasi.md


8. Panduan End User

Semua role — berita di /news, pengumuman di /announcement. Admin: head-admin.md.