Candidate supported product surface¶
Backlog klasifikasi sementara sebelum dokumentasi pengguna ditulis. Dokumen ini bukan katalog komersial final, bukan pernyataan production readiness, dan bukan pengganti keputusan Product Owner.
Last verified: 2026-08-08
Mode: server development
Workspace root: /home/scola/odoo
Frontend HEAD: 0275f7061e6e892b1f860eeb825c6f6a21851888 (develop)
Backend HEAD: 44425cc81d8d281ec76e9336c30b3e109a7fc473 (main)
Scope: candidate product surface untuk 36 frontend apps, 67 addon manifest + 4 directory tanpa manifest, 143 menu group, 20 workflow candidate, dan 36 app-entry pages; alias/shared component dideduplikasi
Runtime limitation: database tenant, installed modules, entitlement payload, effective group/capability, dan served bundle tidak diverifikasi; status di bawah tetap kandidat sampai runtime baseline dan keputusan bisnis disahkan
Application-code changes: tidak ada
1. Cara memakai klasifikasi ini¶
Kolom Candidate status selalu memakai tepat satu nilai berikut.
| Status | Decision rule |
|---|---|
| Core supported | Surface dipetakan eksplisit ke SC-CORE atau shell pelanggan yang merupakan jalur utama SIS baseline. Status ini tidak berarti bebas blocker dokumentasi. |
| Optional module | Surface dipetakan eksplisit ke SKU school-standard/professional/operator-managed yang terpisah dari SC-CORE. |
| Pilot or beta | Paket hanya dinyatakan controlled rollout/public-sector atau surface perlu aktivasi/pilot khusus. |
| Legacy or duplicate | Alias, compatibility shim, atau implementasi lama yang sudah memiliki owner kanonis lain. |
| Placeholder or incomplete | Komponen adalah stub, source fragment tidak installable, atau workflow terbukti tidak dapat selesai. |
| Internal platform | Control plane provider, observability/helper, bridge teknis, atau installer tanpa instruksi end-user langsung. |
| Requires product decision | Bukti code/package/docs bertentangan, app mencampur tier tanpa boundary yang dapat diaudit, SKU tidak ada, atau ownership/support intent tidak terbukti. |
Aturan penting:
- Keberadaan route, menu,
application=True, feature flag, atau user guide bukan bukti tunggal bahwa surface didukung. - Paket aktif mengikuti SSOT Juli:
SC-COREhanya siswa, jadwal, attendance manual, dan portal shell; SPMB, fees, dan report card adalah SKU terpisah. Dokumen Professional Juni masih menyebut komposisi lama dan tidak dipakai untuk menaikkan status. Bukti:docs/modular/product-tier-and-feature-flags.md:37-68,docs/modular/plan/package-catalog.yaml:126-186, dandocs/operations/professional-package-inventory.md:13-22. launch_wave_aberarti paket dapat menjadi optional supported surface, bukan otomatis core.operator_ready_full_profileberarti optional dengan provisioning terkontrol.controlled_public_sectordipetakan ke Pilot or beta. Bukti:docs/modular/plan/package-catalog.yaml:19-52.- Compatibility/bridge/install modules tidak menghasilkan artikel pengguna sendiri. Artikel mengikuti domain owner dan hanya menyebut dependency jika dibutuhkan.
- Bila source dan dokumen modular bertentangan, status menjadi Requires product decision atau Placeholder or incomplete, bukan dipaksakan ke kategori yang lebih pasti.
- Existing user guide dipakai sebagai bukti coverage dan potensi drift, bukan bukti support. Portal saat ini mengiklankan role dan tutorial lintas core/add-on (
docs/user-guide/README.md:17-75;docs/user-guide/school-admin/README.md:12-92), sementara recon hanya menemukan exact-route coverage yang terbatas (docs/recon/application-map.md:707-790).
Evidence set¶
- Seluruh snapshot recon:
docs/recon/README.md:1-73,application-map.md:1-790,route-inventory.md:1-1415,role-permission-matrix.md:1-1105,page-relationships.md:1-3531,workflow-candidates.md:1-414, danopen-questions.md:1-81. - Tier/package/module SSOT:
docs/modular/product-tier-and-feature-flags.md:37-98,docs/modular/plan/package-catalog.yaml:19-364, dandocs/modular/module-classification-matrix.md:47-159. - Existing guides: seluruh 88 Markdown yang tercatat pada snapshot (
docs/recon/README.md:26-53), dengan hub aktif padadocs/user-guide/README.md:1-85,docs/user-guide/school-admin/README.md:1-99, dan navigation publikmkdocs.yml:59-167. - Current code: app fragments di
src/config/apps/appFragments/, role assignment disrc/config/apps/roleApps.js, router disrc/router/, serta manifest/controller/model padacustom_addons_scola/gcgscola/.
2. Delta kode sejak snapshot 2026-08-05¶
Tidak ada commit setelah snapshot yang menambah/menghapus component route. Karena itu baseline route tetap 1.003 effective paths = 884 component pages + 119 redirect/alias. Satu duplicate menu leaf dihapus, sehingga candidate leaf count turun dari 529 menjadi 528; jumlah app (36) dan section (143) tidak berubah. Ini adalah inferensi yang dapat diaudit dari diff commit, bukan runtime assertion.
| Delta | Current evidence | Product-surface consequence | Confidence |
|---|---|---|---|
Role switcher sekarang hanya menawarkan assigned_roles; backend auth mengekspor daftar itu. |
src/components/RoleSwitcher.vue:134-159; src/stores/auth.store.js:291-367; ../custom_addons_scola/gcgscola/scola_core/controllers/auth.py:210; commits a625d2d7, 1b4e36bb, c3e4735 |
Memperbaiki discoverability/UX role switching, tetapi tidak menjawab apakah active role mereduksi effective backend authority; NAV/RBAC classification tidak dinaikkan. | Confirmed from code |
Duplicate leaf academic.class-daily-report di Academic hub dihapus; canonical WKS entries sekarang vp_curriculum.class-daily-report dan vp_curriculum.teaching_journal. |
src/config/apps/appFragments/academicApp.js:135; src/config/apps/appFragments/vicePrincipalApps.js:147-188; commit cade8665 |
Menu group tetap 143, leaf menjadi 528. Dokumentasi hanya boleh menunjuk entry WKS, bukan duplicate lama. | Confirmed from code |
| Mobile search memakai seluruh access-filtered leaves. | src/views/MobileMenuPage.vue:444-455; commit cade8665 |
Discoverability meningkat, tetapi tidak membuktikan route guard/entitlement benar. | Confirmed from code |
Assignment create memakai stable client_request_id, timeout lebih panjang, dan lookup hasil setelah timeout; backend menegakkan idempotency. |
src/services/lms/assignment.service.js:110-164; src/views/AssignmentManagement/Faculty/AddAssignmentPage.vue:366-377; ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_item_api.py:276-318; commits 430d9e7d, 0394557c, 68842f9 |
Readiness SC-LEARN membaik, tetapi tetap Optional module dan bukan bukti seluruh LMS workflow siap. | Confirmed from code |
| Parent identity resolver menangani seluruh linked parent rows. | ../custom_addons_scola/gcgscola/scola_core/utils/portal_identity.py:40-86; commit f86b628 |
Memperkuat parent portal core, tetapi runtime/multi-tenant visibility masih perlu verifikasi. | Confirmed from code |
| Student import memiliki job queue, polling progress, idempotency, preflight company config, dan fallback synchronous path. | src/views/AdminViews/StudentDatabase/UploadSiswa.vue:769-835; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:210-286; ../custom_addons_scola/gcgscola/scola_core/models/student_import_job.py:19-117; commits 1663f2c, 0275f706, 44425cc |
W02 tetap Core supported; existing guide perlu direvisi kelak agar menjelaskan queued/progress/error semantics, tetapi tahap ini tidak menulis ulang guide. | Confirmed from code |
| Report-card logging null-parent bug dan leave-type code diperbaiki. | ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:1-40; ../custom_addons_scola/gcgscola/scola_hr/models/hr_leave_type.py:1-35; commits c1311c5, f326e64 |
Tidak mengubah tier atau menyelesaikan blocker workflow promotion/payroll. | Confirmed from code |
3. Frontend application module candidates (36/36)¶
Status app adalah status shell dominan. Menu group di §5 dapat memiliki status berbeda ketika sebuah shell core memuat add-on.
| App | Candidate status | Basis dan boundary | Evidence |
|---|---|---|---|
admin-dashboard |
Core supported | Shell operasi admin untuk core; widget add-on tetap mengikuti status menu/entitlement masing-masing. | docs/recon/application-map.md:19-59; src/config/apps/appFragments/adminDashboardApp.js:16-75 |
teacher-portal |
Core supported | Portal teacher/homeroom termasuk shell SC-CORE; LMS/CBT/rapor/library/personalia di dalamnya bukan core. | docs/modular/plan/package-catalog.yaml:126-143; src/config/apps/appFragments/teacherPortalApp.js:47-578 |
student-portal |
Core supported | Student portal adalah shell core; billing, report card, LMS, CBT, student-services, library dipisahkan pada menu group. | docs/modular/product-tier-and-feature-flags.md:37-52; src/config/apps/appFragments/studentPortalApp.js:34-338 |
parent-portal |
Core supported | Parent identity/portal shell ada di SC-CORE; finance/report/LMS/library adalah add-on. | docs/modular/plan/package-catalog.yaml:126-143; src/config/apps/appFragments/parentPortalApp.js:31-363 |
principal-exec |
Requires product decision | Leadership shell customer-facing ada, tetapi root memakai synthetic scola_principal, menu mencampur core, SC-FEES/FIN/FOUND/LIB/HR, dan recon menemukan drift. |
docs/recon/open-questions.md:12-42 (NAV-01..03); src/config/apps/appFragments/principalApp.js:28-469 |
counselor |
Optional module | Dipetakan ke SC-STUDENT/student services; privacy/RBAC blocker tidak mengubah packaging. | docs/modular/plan/package-catalog.yaml:251-265; src/config/apps/appFragments/counselorApp.js:32-304 |
extracurricular-coach |
Optional module | Surface student services, bukan SC-CORE yang dibuktikan. | docs/modular/plan/package-catalog.yaml:251-265; src/config/apps/appFragments/extracurricularCoachApp.js:4-40 |
librarian |
Optional module | Role portal SC-LIB. | docs/modular/plan/package-catalog.yaml:211-222; src/config/apps/appFragments/librarianApp.js:28-331 |
lab-technician |
Placeholder or incomplete | Enam dari tujuh routed pages adalah literal placeholder; existing role guide mengajarkan workflow yang belum ada. | docs/recon/open-questions.md:44-54; src/views/Laboran/Inventory/LabInventoryList.vue:1-12; docs/user-guide/per-role/lab-technician.md:1-24 |
security-officer |
Requires product decision | Feature flag/role ada, tetapi tidak ada SKU/package owner kanonis dalam katalog. | src/config/apps/appFragments/securityOfficerApp.js:4-40; docs/modular/plan/package-catalog.yaml:126-364 |
school-committee |
Requires product decision | Surface agregat ada tanpa SKU/package owner dan route/news scope perlu disahkan. | src/config/apps/appFragments/schoolCommitteeApp.js:4-40; docs/recon/open-questions.md:35-42 |
bos-admin |
Pilot or beta | SC-BOS hanya controlled public-sector rollout. | docs/modular/plan/package-catalog.yaml:51-53,343-364; src/config/apps/appFragments/bosAdminApp.js:4-61 |
dapodik-operator |
Pilot or beta | SC-DAP hanya controlled public-sector rollout. | docs/modular/plan/package-catalog.yaml:51-53,315-342; src/config/apps/appFragments/dapodikOperatorApp.js:4-55 |
dpo |
Requires product decision | DPO feature flag/role ada tanpa SKU; audit/consent ownership dan privacy policy belum menjadi product contract. | src/config/apps/appFragments/dpoApp.js:5-52; docs/recon/open-questions.md:62,68 (P03/P09) |
foundation-auditor |
Optional module | Read-only foundation oversight mengikuti SC-FOUND operator-managed, dengan UAT contract verification. | docs/modular/plan/package-catalog.yaml:301-314; src/config/apps/appFragments/foundationAuditorApp.js:4-65 |
pickup-officer |
Requires product decision | Satu operational route ada di attendance core, tetapi role/package/support boundary antar-jemput tidak ada di katalog. | src/config/apps/appFragments/pickupOfficerApp.js:4-31; docs/recon/route-inventory.md:1012-1016 |
admin-staff |
Requires product decision | Portal role mencampur core, SPMB, fees, CBT, dan HR; root flag scola_admin_staff tidak dipetakan ke SKU. |
src/config/apps/appFragments/adminStaffApp.js:25-243; docs/recon/open-questions.md:35-42 (NAV-03/FLAG-01) |
foundation |
Optional module | SC-FOUND/operator-managed foundation surface; submenus tetap dependency-gated. | docs/modular/plan/package-catalog.yaml:301-314; src/config/apps/appFragments/foundationApp.js:30-250 |
foundation-hr-ops |
Optional module | People/payroll/foundation HR operations adalah add-on/operator-managed, bukan core. | docs/modular/plan/package-catalog.yaml:266-283; src/config/apps/appFragments/foundationHrOperationsApp.js:26-254 |
vp-curriculum |
Requires product decision | Role shell mencampur core academic, LMS, report card, promotion; current menu discoverability fixed tetapi package boundary tidak ada. | src/config/apps/appFragments/vicePrincipalApps.js:72-211; docs/recon/open-questions.md:35-42 |
vp-student-affairs |
Requires product decision | Role shell mencampur core attendance/student data, SC-STUDENT, dan SPMB. | src/config/apps/appFragments/vicePrincipalApps.js:225-398; docs/recon/open-questions.md:35-42 |
vp-infrastructure |
Requires product decision | Role shell mencampur SC-OPS, SC-BOS, HR self-service tanpa root entitlement contract. | src/config/apps/appFragments/vicePrincipalApps.js:409-508; docs/recon/open-questions.md:35-42 |
vp-public-relations |
Requires product decision | Role shell mencampur core news/calendar dan SC-ADM tanpa package boundary. | src/config/apps/appFragments/vicePrincipalApps.js:525-602; docs/recon/open-questions.md:35-42 |
vp-finance |
Requires product decision | Role shell mencampur SC-FEES/SC-FIN dan HR self-service tanpa canonical product gate. | src/config/apps/appFragments/vicePrincipalApps.js:616-686; docs/recon/open-questions.md:35-42 |
academic |
Core supported | Shell master akademik/jadwal core; report card, LMS, CBT, Dapodik sections dipisahkan sebagai optional/pilot. | docs/modular/product-tier-and-feature-flags.md:37-68; src/config/apps/appFragments/academicApp.js:35-377 |
student-affairs |
Core supported | Data siswa adalah SIS baseline; pembinaan dipisahkan sebagai SC-STUDENT. | docs/modular/plan/package-catalog.yaml:126-143,251-265; src/config/apps/appFragments/studentAffairsApp.js:23-146 |
hr |
Optional module | SC-PEOPLE/SC-ATTEND+ family. | docs/modular/plan/package-catalog.yaml:266-300; src/config/apps/appFragments/hrApp.js:19-186 |
finance |
Optional module | Seluruh shell berada pada SC-FEES, SC-FIN, SC-BOS, atau payroll integration; bukan SC-CORE. | docs/modular/plan/package-catalog.yaml:159-186,223-250,343-364; src/config/apps/appFragments/financeApp.js:37-452 |
inventory |
Optional module | SC-OPS, dengan subgroup BOS sebagai pilot dependency. | docs/modular/plan/package-catalog.yaml:237-250; src/config/apps/appFragments/inventoryApp.js:35-351 |
library |
Optional module | SC-LIB. | docs/modular/plan/package-catalog.yaml:211-222; src/config/apps/appFragments/libraryApp.js:28-253 |
admissions |
Optional module | SC-ADM school-standard SKU terpisah. | docs/modular/product-tier-and-feature-flags.md:54-66; src/config/apps/appFragments/admissionsApp.js:13-142 |
attendance |
Core supported | Manual student attendance adalah SC-CORE; RFID/face sections adalah SC-ATTEND+. | docs/modular/plan/package-catalog.yaml:126-143,284-300; src/config/apps/appFragments/attendanceApp.js:22-128 |
analytics |
Requires product decision | App routes berupa redirect ke destinations yang dimodelkan menolak sebagian assigned roles; SKU analytics generik tidak ada. | docs/recon/open-questions.md:35-39 (NAV-02); src/config/apps/appFragments/analyticsApp.js:13-59; src/router/analyticsAdminRoutes.js:1-18 |
communication |
Core supported | Portal/news/calendar adalah SC-CORE; legacy announcement dan complaint dipisahkan di menu/page matrices. | docs/modular/plan/package-catalog.yaml:126-143; src/config/apps/appFragments/communicationApp.js:7-125 |
settings |
Core supported | Company/access configuration adalah tenant core, tetapi optional settings di section campuran tetap diberi status berbeda. | src/config/apps/appFragments/settingsApp.js:20-112; docs/recon/open-questions.md:31-42 |
platform |
Internal platform | Provider control plane, bukan produk sekolah. | docs/modular/product-tier-and-feature-flags.md:95-98; src/config/apps/appFragments/platformApp.js:9-132 |
4. Backend addon/module candidates¶
Addon technical status menjawab apakah modul menghasilkan product surface sendiri. Installer/bridge yang sehat tetap Internal platform, bukan artikel end-user.
4.1 Addons with manifest (67/67)¶
| Addon | Candidate status | Basis | Evidence |
|---|---|---|---|
scola_account |
Optional module | SC-FIN. | docs/modular/plan/package-catalog.yaml:223-236; ../custom_addons_scola/gcgscola/scola_account/__manifest__.py:1 |
scola_admission |
Optional module | SC-ADM. | docs/modular/plan/package-catalog.yaml:145-158; ../custom_addons_scola/gcgscola/scola_admission/__manifest__.py:1 |
scola_admission_assessment |
Optional module | Overlay SC-ADM + SC-ASSESS. | docs/modular/module-classification-matrix.md:98-104; ../custom_addons_scola/gcgscola/scola_admission_assessment/__manifest__.py:1 |
scola_admission_fees_bridge |
Internal platform | Auto-install glue; no direct surface. | docs/modular/product-tier-and-feature-flags.md:86-93; ../custom_addons_scola/gcgscola/scola_admission_fees_bridge/__manifest__.py:1 |
scola_admission_foundation |
Optional module | Foundation centralized admission overlay. | docs/modular/module-classification-matrix.md:98-104; ../custom_addons_scola/gcgscola/scola_admission_foundation/__manifest__.py:1 |
scola_assessment_bridge |
Requires product decision | Current runtime still depends on it, while classification calls it legacy and the proposed canonical scola_assessment has no manifest. |
docs/modular/module-classification-matrix.md:105; ../custom_addons_scola/gcgscola/scola_lms/__manifest__.py:1; ../custom_addons_scola/gcgscola/scola_assessment_bridge/__manifest__.py:1 |
scola_attendance |
Core supported | Core manual attendance. | docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_attendance/__manifest__.py:1 |
scola_bos_rkas |
Pilot or beta | SC-BOS controlled public-sector rollout. | docs/modular/plan/package-catalog.yaml:343-364; ../custom_addons_scola/gcgscola/scola_bos_rkas/__manifest__.py:1 |
scola_bos_rkas_bridge |
Legacy or duplicate | Manifest and classification identify upgrade shim. | docs/modular/module-classification-matrix.md:107; ../custom_addons_scola/gcgscola/scola_bos_rkas_bridge/__manifest__.py:1 |
scola_bos_rkas_executive_bridge |
Internal platform | Auto-install read-model glue for pilot package. | docs/modular/module-classification-matrix.md:108; ../custom_addons_scola/gcgscola/scola_bos_rkas_executive_bridge/__manifest__.py:1 |
scola_bos_rkas_governance_bridge |
Requires product decision | Classification says legacy but current BOS bundle still depends on it. | docs/modular/module-classification-matrix.md:109,122-127; ../custom_addons_scola/gcgscola/scola_bundle_bos_rkas/__manifest__.py:1 |
scola_bos_rkas_procurement |
Pilot or beta | Canonical procurement consumer within SC-BOS pilot. | docs/modular/plan/package-catalog.yaml:343-364; ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/__manifest__.py:1 |
scola_bos_rkas_procurement_bridge |
Legacy or duplicate | Explicit compatibility shim. | docs/modular/module-classification-matrix.md:110,126; ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement_bridge/__manifest__.py:1 |
scola_bundle_admission |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:145-158; ../custom_addons_scola/gcgscola/scola_bundle_admission/__manifest__.py:1 |
scola_bundle_assessment |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:199-210; ../custom_addons_scola/gcgscola/scola_bundle_assessment/__manifest__.py:1 |
scola_bundle_bos_rkas |
Internal platform | Pilot package installer contract. | docs/modular/plan/package-catalog.yaml:343-364; ../custom_addons_scola/gcgscola/scola_bundle_bos_rkas/__manifest__.py:1 |
scola_bundle_core |
Internal platform | Core installer contract; user docs follow member domains. | docs/modular/module-classification-matrix.md:136; ../custom_addons_scola/gcgscola/scola_bundle_core/__manifest__.py:1 |
scola_bundle_dapodik |
Internal platform | Pilot package installer contract. | docs/modular/plan/package-catalog.yaml:315-342; ../custom_addons_scola/gcgscola/scola_bundle_dapodik/__manifest__.py:1 |
scola_bundle_dapodik_attendance |
Internal platform | Pilot companion installer. | docs/modular/plan/package-catalog.yaml:315-342; ../custom_addons_scola/gcgscola/scola_bundle_dapodik_attendance/__manifest__.py:1 |
scola_bundle_enterprise |
Internal platform | Aggregate installer, not one user workflow. | docs/modular/module-classification-matrix.md:136-158; ../custom_addons_scola/gcgscola/scola_bundle_enterprise/__manifest__.py:1 |
scola_bundle_fees |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:159-172; ../custom_addons_scola/gcgscola/scola_bundle_fees/__manifest__.py:1 |
scola_bundle_finance |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:223-236; ../custom_addons_scola/gcgscola/scola_bundle_finance/__manifest__.py:1 |
scola_bundle_hr_attendance |
Internal platform | Technical installer; overlaps SC-ATTEND+ topology and needs no user article. | docs/recon/application-map.md:626-697; ../custom_addons_scola/gcgscola/scola_bundle_hr_attendance/__manifest__.py:1 |
scola_bundle_learning |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:187-198; ../custom_addons_scola/gcgscola/scola_bundle_learning/__manifest__.py:1 |
scola_bundle_library |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:211-222; ../custom_addons_scola/gcgscola/scola_bundle_library/__manifest__.py:1 |
scola_bundle_operations |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:237-250; ../custom_addons_scola/gcgscola/scola_bundle_operations/__manifest__.py:1 |
scola_bundle_people |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:266-283; ../custom_addons_scola/gcgscola/scola_bundle_people/__manifest__.py:1 |
scola_bundle_profile_negeri |
Internal platform | Deployment profile installer. | docs/modular/plan/package-catalog.yaml:55-63; ../custom_addons_scola/gcgscola/scola_bundle_profile_negeri/__manifest__.py:1 |
scola_bundle_profile_swasta |
Internal platform | Deployment profile installer. | docs/modular/plan/package-catalog.yaml:64-72; ../custom_addons_scola/gcgscola/scola_bundle_profile_swasta/__manifest__.py:1 |
scola_bundle_profile_yayasan |
Internal platform | Deployment profile installer. | docs/modular/plan/package-catalog.yaml:73-83; ../custom_addons_scola/gcgscola/scola_bundle_profile_yayasan/__manifest__.py:1 |
scola_bundle_report_card |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:173-186; ../custom_addons_scola/gcgscola/scola_bundle_report_card/__manifest__.py:1 |
scola_bundle_smart_attendance |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:284-300; ../custom_addons_scola/gcgscola/scola_bundle_smart_attendance/__manifest__.py:1 |
scola_bundle_student_services |
Internal platform | Package installer contract. | docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_bundle_student_services/__manifest__.py:1 |
scola_cbt |
Optional module | SC-ASSESS. | docs/modular/plan/package-catalog.yaml:199-210; ../custom_addons_scola/gcgscola/scola_cbt/__manifest__.py:1 |
scola_core |
Core supported | Auth/tenant/RBAC foundation for SC-CORE. | docs/modular/module-classification-matrix.md:51-55; ../custom_addons_scola/gcgscola/scola_core/__manifest__.py:1 |
scola_counseling |
Optional module | SC-STUDENT; security/privacy blockers tracked separately. | docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_counseling/__manifest__.py:1 |
scola_dapodik_academic_bridge |
Internal platform | Auto-install pilot bridge. | docs/modular/module-classification-matrix.md:111; ../custom_addons_scola/gcgscola/scola_dapodik_academic_bridge/__manifest__.py:1 |
scola_dapodik_attendance_bridge |
Internal platform | Auto-install pilot bridge. | docs/modular/module-classification-matrix.md:112; ../custom_addons_scola/gcgscola/scola_dapodik_attendance_bridge/__manifest__.py:1 |
scola_dapodik_connector |
Pilot or beta | SC-DAP controlled rollout. | docs/modular/plan/package-catalog.yaml:315-342; ../custom_addons_scola/gcgscola/scola_dapodik_connector/__manifest__.py:1 |
scola_dapodik_report_card_bridge |
Internal platform | Auto-install pilot bridge. | docs/modular/module-classification-matrix.md:113; ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/__manifest__.py:1 |
scola_fees |
Optional module | SC-FEES. | docs/modular/plan/package-catalog.yaml:159-172; ../custom_addons_scola/gcgscola/scola_fees/__manifest__.py:1 |
scola_foundation_analytics |
Optional module | SC-FOUND operator-managed. | docs/modular/plan/package-catalog.yaml:301-314; ../custom_addons_scola/gcgscola/scola_foundation_analytics/__manifest__.py:1 |
scola_hr |
Optional module | SC-PEOPLE. | docs/modular/plan/package-catalog.yaml:266-283; ../custom_addons_scola/gcgscola/scola_hr/__manifest__.py:1 |
scola_hr_attendance |
Optional module | SC-ATTEND+. | docs/modular/plan/package-catalog.yaml:284-300; ../custom_addons_scola/gcgscola/scola_hr_attendance/__manifest__.py:1 |
scola_identity_admin |
Core supported | Auto-installed customer-facing tenant identity shell on core. | docs/modular/module-classification-matrix.md:60-68; ../custom_addons_scola/gcgscola/scola_identity_admin/__manifest__.py:1 |
scola_inventory |
Optional module | SC-OPS. | docs/modular/plan/package-catalog.yaml:237-250; ../custom_addons_scola/gcgscola/scola_inventory/__manifest__.py:1 |
scola_inventory_account_bridge |
Requires product decision | Current manifest is active bridge, classification calls it legacy, while proposed canonical owner has no manifest. | docs/modular/module-classification-matrix.md:114,128-130; ../custom_addons_scola/gcgscola/scola_inventory_account_bridge/__manifest__.py:1 |
scola_leadership_hub |
Requires product decision | Customer-facing auto-installed shell exists but is not listed in SC-CORE package; leadership app/RBAC scope drifts. | docs/modular/module-classification-matrix.md:60-68; docs/recon/open-questions.md:35-42; ../custom_addons_scola/gcgscola/scola_leadership_hub/__manifest__.py:1 |
scola_lesson_hours |
Core supported | SC-CORE timetable primitive. | docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_lesson_hours/__manifest__.py:1 |
scola_library |
Optional module | SC-LIB. | docs/modular/plan/package-catalog.yaml:211-222; ../custom_addons_scola/gcgscola/scola_library/__manifest__.py:1 |
scola_lms |
Optional module | SC-LEARN. | docs/modular/plan/package-catalog.yaml:187-198; ../custom_addons_scola/gcgscola/scola_lms/__manifest__.py:1 |
scola_news |
Core supported | SC-CORE canonical news module; legacy announcement remains separate. | docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_news/__manifest__.py:1 |
scola_observability |
Internal platform | Internal-only audit/diagnostic shell. | docs/modular/module-classification-matrix.md:53-55; ../custom_addons_scola/gcgscola/scola_observability/__manifest__.py:1 |
scola_odoo_base |
Internal platform | Upstream prerequisite installer. | docs/modular/module-classification-matrix.md:136-159; ../custom_addons_scola/gcgscola/scola_odoo_base/__manifest__.py:1 |
scola_parent |
Core supported | Parent identity and access in SC-CORE. | docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_parent/__manifest__.py:1 |
scola_parent_fees_bridge |
Internal platform | Auto-install ACL glue. | docs/modular/product-tier-and-feature-flags.md:86-93; ../custom_addons_scola/gcgscola/scola_parent_fees_bridge/__manifest__.py:1 |
scola_payroll |
Optional module | SC-PEOPLE. | docs/modular/plan/package-catalog.yaml:266-283; ../custom_addons_scola/gcgscola/scola_payroll/__manifest__.py:1 |
scola_platform |
Internal platform | Provider control plane. | docs/modular/product-tier-and-feature-flags.md:95-98; ../custom_addons_scola/gcgscola/scola_platform/__manifest__.py:1 |
scola_platform_support |
Internal platform | Shared entitlement/helper kernel. | docs/modular/module-classification-matrix.md:53-55; ../custom_addons_scola/gcgscola/scola_platform_support/__manifest__.py:1 |
scola_portal |
Core supported | Shared customer portal shell in SC-CORE. | docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_portal/__manifest__.py:1 |
scola_portal_fees_bridge |
Internal platform | Auto-install route glue. | docs/modular/product-tier-and-feature-flags.md:86-93; ../custom_addons_scola/gcgscola/scola_portal_fees_bridge/__manifest__.py:1 |
scola_public_complaint |
Requires product decision | No SKU/package owner; internal API authorization is unresolved. | docs/recon/open-questions.md:12-16 (SEC-01); ../custom_addons_scola/gcgscola/scola_public_complaint/__manifest__.py:1 |
scola_report_card |
Optional module | SC-REPORT. Promotion defect does not change package status. | docs/modular/plan/package-catalog.yaml:173-186; docs/recon/open-questions.md:14-18; ../custom_addons_scola/gcgscola/scola_report_card/__manifest__.py:1 |
scola_rules |
Optional module | SC-STUDENT. | docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_rules/__manifest__.py:1 |
scola_smart_attendance |
Optional module | SC-ATTEND+ operator-managed. | docs/modular/plan/package-catalog.yaml:284-300; ../custom_addons_scola/gcgscola/scola_smart_attendance/__manifest__.py:1 |
scola_student_activity |
Optional module | SC-STUDENT. | docs/modular/plan/package-catalog.yaml:251-265; ../custom_addons_scola/gcgscola/scola_student_activity/__manifest__.py:1 |
scola_timetable |
Core supported | SC-CORE timetable owner. | docs/modular/plan/package-catalog.yaml:126-143; ../custom_addons_scola/gcgscola/scola_timetable/__manifest__.py:1 |
4.2 Module-like directories without manifest (4/4)¶
| Directory | Candidate status | Basis | Evidence |
|---|---|---|---|
scola_assessment |
Placeholder or incomplete | Disebut canonical owner di classification matrix tetapi tidak installable pada HEAD. | docs/recon/application-map.md:698-706; docs/modular/module-classification-matrix.md:74; ../custom_addons_scola/gcgscola/scola_assessment/models/ |
scola_bos_rkas_account_bridge |
Placeholder or incomplete | Source fragment tanpa manifest, sementara package notes menganggap accounting bridge tersedia. | docs/recon/application-map.md:698-706; docs/modular/module-classification-matrix.md:106; ../custom_addons_scola/gcgscola/scola_bos_rkas_account_bridge/models/ |
scola_bundle_school_standard |
Legacy or duplicate | Directory tidak installable dan tier SSOT memilih tiga SKU terpisah tanpa combined shim. | docs/recon/application-map.md:698-706; docs/modular/product-tier-and-feature-flags.md:54-66; ../custom_addons_scola/gcgscola/scola_bundle_school_standard/ |
scola_inventory_account |
Placeholder or incomplete | Disebut canonical owner tetapi tidak memiliki manifest; runtime masih memakai bridge lama. | docs/recon/application-map.md:698-706; docs/modular/module-classification-matrix.md:84,114; ../custom_addons_scola/gcgscola/scola_inventory_account/models/ |
5. Menu-group candidates (143/143)¶
Setiap row mewakili tepat satu sections[] pada app fragments. Route yang ditulis adalah entry utama/contoh, bukan daftar semua leaf. Full leaf inventory tetap di docs/recon/application-map.md:60-593. Inference: bila satu group mencampur core dan add-on, atau read dan governance-sensitive mutation tanpa product boundary, statusnya Requires product decision.
| App | Menu group | Primary surface | Candidate status | Basis / current-code evidence |
|---|---|---|---|---|
admin-dashboard |
admin_dashboard.overview (Dashboard) |
/admin/dashboard |
Core supported | Core admin shell; src/config/apps/appFragments/adminDashboardApp.js:34 |
admin-dashboard |
admin_dashboard.hr_personal (Personalia) |
/hr/payslip, /employee/timeoff, /employee/self-attendance |
Optional module | SC-PEOPLE/SC-ATTEND+; src/config/apps/appFragments/adminDashboardApp.js:53 |
teacher-portal |
teacher.today (Beranda) |
/faculty/dashboard (/faculty/home redirect) |
Core supported | Core teacher shell; src/config/apps/appFragments/teacherPortalApp.js:78; docs/recon/route-inventory.md:1349 |
teacher-portal |
teacher.school_calendar (Kalender) |
/calendar |
Core supported | Portal calendar core; src/config/apps/appFragments/teacherPortalApp.js:97 |
teacher-portal |
teacher.teaching (Pengajaran) |
schedule, subject/daily attendance, journal, assignment | Requires product decision | Mencampur timetable/attendance core, LMS, student services, dan mutation W05 yang belum punya correction/completeness contract; src/config/apps/appFragments/teacherPortalApp.js:114-216 |
teacher-portal |
teacher.grades (Penilaian) |
/faculty/report-card* |
Optional module | SC-REPORT; src/config/apps/appFragments/teacherPortalApp.js:228 |
teacher-portal |
teacher.homeroom (Wali Kelas) |
/faculty/homeroom* |
Requires product decision | Mencampur core, SC-REPORT, SC-FEES, LMS, counseling, promotion defect; src/config/apps/appFragments/teacherPortalApp.js:272 |
teacher-portal |
teacher.digital_learning (Pembelajaran Digital) |
/faculty/lms*, CBT, library |
Optional module | SC-LEARN/ASSESS/LIB; src/config/apps/appFragments/teacherPortalApp.js:382 |
teacher-portal |
teacher.kesiswaan (Kesiswaan) |
violations, achievements, permits, referrals | Optional module | SC-STUDENT; src/config/apps/appFragments/teacherPortalApp.js:465 |
teacher-portal |
teacher.hr_personal (Personalia) |
payslip, leave, self-attendance | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/teacherPortalApp.js:523 |
teacher-portal |
teacher.library (Perpustakaan) |
/library/home, reading log |
Optional module | SC-LIB; src/config/apps/appFragments/teacherPortalApp.js:560 |
student-portal |
student.today (Beranda) |
dashboard, billing, permits | Requires product decision | Core dashboard dicampur SC-FEES/SC-STUDENT dalam satu group; src/config/apps/appFragments/studentPortalApp.js:62 |
student-portal |
student.school_calendar (Kalender) |
/calendar |
Core supported | Portal calendar core; src/config/apps/appFragments/studentPortalApp.js:101 |
student-portal |
student.learning (Belajar) |
schedule, attendance, assignment, LMS, CBT | Requires product decision | Core timetable/attendance dicampur optional learning/assessment; src/config/apps/appFragments/studentPortalApp.js:119 |
student-portal |
student.grades (Nilai & Rapor) |
report card, LMS achievements | Optional module | SC-REPORT/LEARN; src/config/apps/appFragments/studentPortalApp.js:190 |
student-portal |
student.discipline (Kesiswaan) |
rules, violations, counseling | Optional module | SC-STUDENT; src/config/apps/appFragments/studentPortalApp.js:221 |
student-portal |
student.extras (Ekstrakurikuler & Insight) |
extracurricular, analytics | Requires product decision | Student-services plus analytics tanpa SKU kanonis; src/config/apps/appFragments/studentPortalApp.js:266 |
student-portal |
student.library (Perpustakaan) |
catalog, loans, wishlist, reading | Optional module | SC-LIB; src/config/apps/appFragments/studentPortalApp.js:295 |
parent-portal |
parent.dashboard (Beranda) |
/parent/dashboard |
Core supported | Core parent shell; src/config/apps/appFragments/parentPortalApp.js:60 |
parent-portal |
parent.academics (Akademik) |
schedule, attendance, grades, LMS, analytics | Requires product decision | Core portal/read paths dicampur SC-REPORT/LEARN dan analytics; src/config/apps/appFragments/parentPortalApp.js:79 |
parent-portal |
parent.finance (Keuangan) |
/parent/payment-list |
Optional module | SC-FEES; src/config/apps/appFragments/parentPortalApp.js:168 |
parent-portal |
parent.studentlife (Kesiswaan) |
rules, violations, permits, counseling | Optional module | SC-STUDENT; src/config/apps/appFragments/parentPortalApp.js:190 |
parent-portal |
parent.communications (Komunikasi) |
chat, legacy announcement, news, calendar | Requires product decision | Core communication mencampur legacy announcement; COMM-01/SEC-10; src/config/apps/appFragments/parentPortalApp.js:257 |
parent-portal |
parent.library (Perpustakaan) |
parent library routes | Optional module | SC-LIB; src/config/apps/appFragments/parentPortalApp.js:316 |
principal-exec |
principal.overview (Dashboard) |
/principal/dashboard |
Requires product decision | Leadership shell/SKU boundary belum kanonis; src/config/apps/appFragments/principalApp.js:58 |
principal-exec |
principal.approvals_bucket (Persetujuan & Kebijakan) |
leave, finance, inventory approvals | Requires product decision | Cross-domain approval ownership belum disahkan; src/config/apps/appFragments/principalApp.js:76 |
principal-exec |
principal.academics (Akademik) |
overview, calendar, outcomes, reports | Requires product decision | Core + LMS/report-card mix; src/config/apps/appFragments/principalApp.js:118 |
principal-exec |
principal.people (People) |
students, attendance, counseling, HR attendance | Requires product decision | Sensitive/core/add-on mix; src/config/apps/appFragments/principalApp.js:189 |
principal-exec |
principal.finance_ops (Finance & Operasi) |
finance reports, tuition, budget | Optional module | SC-FEES/FIN/BOS dependency; src/config/apps/appFragments/principalApp.js:249 |
principal-exec |
principal.admissions (SPMB) |
dashboard, periods, ranking | Optional module | SC-ADM; src/config/apps/appFragments/principalApp.js:283 |
principal-exec |
principal.communication (Komunikasi) |
news, complaint | Requires product decision | News core + complaint owner/security unresolved; src/config/apps/appFragments/principalApp.js:317 |
principal-exec |
principal.analytics (Analitik Strategis) |
analytics, promotion policy | Requires product decision | SC-FOUND gating mixed with broken promotion path; src/config/apps/appFragments/principalApp.js:358 |
principal-exec |
principal.library (Perpustakaan) |
library reports/GLS | Optional module | SC-LIB; src/config/apps/appFragments/principalApp.js:404 |
principal-exec |
principal.hr_personal (Personalia) |
payslip, leave, self-attendance | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/principalApp.js:445 |
counselor |
counselor.overview (Dashboard) |
dashboard, reports | Optional module | SC-STUDENT; privacy blocker applies; src/config/apps/appFragments/counselorApp.js:58 |
counselor |
counselor.students (Siswa) |
student list/timeline/points/attendance | Optional module | SC-STUDENT; src/config/apps/appFragments/counselorApp.js:83 |
counselor |
counselor.sessions (Konseling) |
schedule, notes, visit, conference | Optional module | SC-STUDENT; src/config/apps/appFragments/counselorApp.js:132 |
counselor |
counselor.pembinaan (Pembinaan) |
rules, violations, recap, permits | Optional module | SC-STUDENT; src/config/apps/appFragments/counselorApp.js:183 |
counselor |
counselor.career (Karir & Alumni) |
career, tracer study | Optional module | SC-STUDENT candidate; src/config/apps/appFragments/counselorApp.js:250 |
counselor |
counselor.hr_personal (Personalia) |
payslip, leave, attendance history | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/counselorApp.js:274 |
extracurricular-coach |
extracurricular_coach.overview (Ekstrakurikuler) |
/faculty/extracurricular |
Optional module | SC-STUDENT; duplicate leaf to same component deduped; src/config/apps/appFragments/extracurricularCoachApp.js:23 |
librarian |
librarian.collection (Koleksi) |
catalog/units/purchase/config | Optional module | SC-LIB; src/config/apps/appFragments/librarianApp.js:47 |
librarian |
librarian.circulation (Sirkulasi) |
movement/queue/fines/returns | Optional module | SC-LIB; RULE-04 caveat; src/config/apps/appFragments/librarianApp.js:113 |
librarian |
librarian.textbook (Buku Teks) |
packages/distribution | Optional module | SC-LIB; src/config/apps/appFragments/librarianApp.js:173 |
librarian |
librarian.gls (GLS) |
programs/dashboard | Optional module | SC-LIB; src/config/apps/appFragments/librarianApp.js:197 |
librarian |
librarian.reports (Laporan) |
reports/accreditation | Optional module | SC-LIB; src/config/apps/appFragments/librarianApp.js:222 |
librarian |
librarian.config (Pengaturan) |
cards/types/location/policy | Optional module | SC-LIB; view/manage drift applies; src/config/apps/appFragments/librarianApp.js:247 |
librarian |
librarian.attendance (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/librarianApp.js:303 |
lab-technician |
lab.overview (Dashboard) |
/lab-technician/dashboard |
Placeholder or incomplete | Shell dominan mengarah ke enam stub; src/config/apps/appFragments/labTechnicianApp.js:37; docs/recon/open-questions.md:44-54 |
lab-technician |
lab.inventory (Inventaris Lab) |
inventory/schedule/loans | Placeholder or incomplete | Tiga literal placeholder; src/config/apps/appFragments/labTechnicianApp.js:54; src/views/Laboran/Inventory/LabInventoryList.vue:1-12 |
lab-technician |
lab.maintenance (Pemeliharaan) |
routine/damage | Placeholder or incomplete | Dua literal placeholder; src/config/apps/appFragments/labTechnicianApp.js:89 |
lab-technician |
lab.reports (Laporan) |
/lab-technician/reports |
Placeholder or incomplete | Literal placeholder; src/config/apps/appFragments/labTechnicianApp.js:115 |
lab-technician |
lab.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | Cross-app SC-PEOPLE/ATTEND+ pages are implemented; src/config/apps/appFragments/labTechnicianApp.js:132 |
security-officer |
security.overview (Dashboard) |
dashboard, visitors | Requires product decision | Tidak ada package/SKU owner; src/config/apps/appFragments/securityOfficerApp.js:22 |
school-committee |
committee.overview (Dashboard) |
aggregate dashboard, news | Requires product decision | Tidak ada package/SKU contract; src/config/apps/appFragments/schoolCommitteeApp.js:22 |
bos-admin |
bos.overview (Dashboard) |
budget/report/ledger | Pilot or beta | SC-BOS controlled rollout; src/config/apps/appFragments/bosAdminApp.js:23 |
dapodik-operator |
dapodik.overview (Dashboard) |
settings/sync/report-card | Pilot or beta | SC-DAP controlled rollout; src/config/apps/appFragments/dapodikOperatorApp.js:24 |
dpo |
dpo.overview (Audit & Consent) |
audit, sensitive audit, consent | Requires product decision | DPO product/SKU/privacy contract absent; src/config/apps/appFragments/dpoApp.js:23 |
foundation-auditor |
foundation_auditor.overview (Dashboard) |
schools, finance, accreditation | Optional module | SC-FOUND; src/config/apps/appFragments/foundationAuditorApp.js:24 |
pickup-officer |
pickup.tasks (Tugas) |
/pickup/attendance |
Requires product decision | No product/package owner for transport execution; src/config/apps/appFragments/pickupOfficerApp.js:20 |
admin-staff |
admin_staff.overview (Dashboard) |
/admin-staff/dashboard |
Requires product decision | Synthetic app flag/package boundary; src/config/apps/appFragments/adminStaffApp.js:43 |
admin-staff |
admin_staff.students (Siswa & Orang Tua) |
students/parents/attendance/pickup persons | Requires product decision | Core data plus W05 correction/pickup governance; src/config/apps/appFragments/adminStaffApp.js:60 |
admin-staff |
admin_staff.admissions (Admisi) |
admissions + CBT | Optional module | SC-ADM/ASSESS; src/config/apps/appFragments/adminStaffApp.js:103 |
admin-staff |
admin_staff.finance (Keuangan) |
billing/enrollment | Optional module | SC-FEES; src/config/apps/appFragments/adminStaffApp.js:173 |
admin-staff |
admin_staff.academics (Akademik) |
schedule | Core supported | Timetable core; src/config/apps/appFragments/adminStaffApp.js:198 |
admin-staff |
admin_staff.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/adminStaffApp.js:215 |
foundation |
foundation.overview (Dashboard) |
dashboard/schools/company | Optional module | SC-FOUND; src/config/apps/appFragments/foundationApp.js:49 |
foundation |
foundation.finance (Keuangan) |
P&L/balance/cash-flow/budget | Optional module | SC-FOUND + SC-FIN/BOS dependency; src/config/apps/appFragments/foundationApp.js:85 |
foundation |
foundation.hr (SDM) |
employees/transport/payroll cost | Optional module | Foundation HR/SC-PEOPLE; src/config/apps/appFragments/foundationApp.js:129 |
foundation |
foundation.academic (Akademik) |
students/accreditation/governance/promotion | Optional module | SC-FOUND; promotion blocker applies; src/config/apps/appFragments/foundationApp.js:163 |
foundation |
foundation.admission (Admission Terpusat) |
/foundation/admission |
Optional module | SC-ADM + foundation overlay; src/config/apps/appFragments/foundationApp.js:205 |
foundation |
foundation.hr_personal (Personalia) |
payslip/leave/self-attendance | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/foundationApp.js:223 |
foundation-hr-ops |
foundation_hr.people (Data Pegawai) |
registry/teachers/employees | Optional module | SC-PEOPLE/foundation HR; src/config/apps/appFragments/foundationHrOperationsApp.js:42 |
foundation-hr-ops |
foundation_hr.structure (Struktur Organisasi) |
department/job/contract | Optional module | SC-PEOPLE; src/config/apps/appFragments/foundationHrOperationsApp.js:79 |
foundation-hr-ops |
foundation_hr.operations (Operasional) |
attendance/schedule/rules/transport | Optional module | SC-ATTEND+/foundation HR; src/config/apps/appFragments/foundationHrOperationsApp.js:112 |
foundation-hr-ops |
foundation_hr.leave (Cuti & Izin) |
timeoff/types/balance | Optional module | SC-PEOPLE; src/config/apps/appFragments/foundationHrOperationsApp.js:176 |
foundation-hr-ops |
foundation_hr.compensation (Remunerasi) |
payroll cost | Optional module | SC-PEOPLE/FOUND; src/config/apps/appFragments/foundationHrOperationsApp.js:209 |
foundation-hr-ops |
foundation_hr.personal (Personalia Saya) |
payslip/leave/self-attendance | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/foundationHrOperationsApp.js:227 |
vp-curriculum |
vp_curriculum.overview (Dashboard) |
/vice-principal/curriculum |
Requires product decision | Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:89 |
vp-curriculum |
vp_curriculum.academics (Academic Governance) |
subject/schedule/attendance/RPP/journal | Requires product decision | Core + LMS and W05 write/read boundary; src/config/apps/appFragments/vicePrincipalApps.js:107-158 |
vp-curriculum |
vp_curriculum.review (Review & Keputusan) |
weekly/daily report, quality, promotion | Requires product decision | Approval ownership/RBAC and promotion defect unresolved; src/config/apps/appFragments/vicePrincipalApps.js:164-207 |
vp-curriculum |
vp_curriculum.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41 |
vp-student-affairs |
vp_sa.overview (Dashboard) |
/vice-principal/student-affairs |
Requires product decision | Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:242 |
vp-student-affairs |
vp_sa.core (Operasional Siswa) |
students/attendance/extracurricular | Requires product decision | Core + SC-STUDENT mix; src/config/apps/appFragments/vicePrincipalApps.js:260 |
vp-student-affairs |
vp_sa.guidance (Pembinaan) |
recap/violations/achievements/permits | Optional module | SC-STUDENT; security blocker applies; src/config/apps/appFragments/vicePrincipalApps.js:296 |
vp-student-affairs |
vp_sa.admissions (Admissions) |
dashboard/ranking | Optional module | SC-ADM; src/config/apps/appFragments/vicePrincipalApps.js:380 |
vp-student-affairs |
vp_sa.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41 |
vp-infrastructure |
vp_inf.overview (Dashboard) |
/vice-principal/infrastructure |
Requires product decision | Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:426 |
vp-infrastructure |
vp_inf.inventory (Sarpras) |
inventory/stock/requests/assets | Optional module | SC-OPS; src/config/apps/appFragments/vicePrincipalApps.js:444 |
vp-infrastructure |
vp_inf.approval_maintenance (Approval & Maintenance) |
approvals/maintenance | Requires product decision | SC-OPS + pilot SC-BOS approval ownership; src/config/apps/appFragments/vicePrincipalApps.js:495 |
vp-infrastructure |
vp_inf.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41 |
vp-public-relations |
vp_pr.overview (Dashboard) |
/vice-principal/public-relations |
Requires product decision | Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:542 |
vp-public-relations |
vp_pr.communication (Humas) |
news/events | Core supported | Canonical news/calendar core, subject to role runtime verification; src/config/apps/appFragments/vicePrincipalApps.js:560 |
vp-public-relations |
vp_pr.admissions (Admissions Outreach) |
PPDB/ranking | Optional module | SC-ADM; src/config/apps/appFragments/vicePrincipalApps.js:586 |
vp-public-relations |
vp_pr.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41 |
vp-finance |
vp_fin.overview (Dashboard) |
/vice-principal/finance |
Requires product decision | Role shell not package-mapped; src/config/apps/appFragments/vicePrincipalApps.js:633 |
vp-finance |
vp_fin.core (Finance Oversight) |
reports/tuition/SPP by class | Optional module | SC-FEES/FIN; src/config/apps/appFragments/vicePrincipalApps.js:651 |
vp-finance |
vp_fin.hr_personal (Personalia) |
self-attendance/leave/payslip | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/vicePrincipalApps.js:41 |
academic |
academic.master (Struktur Akademik) |
year/calendar/level/subject/classroom | Core supported | SC-CORE academic prerequisites; src/config/apps/appFragments/academicApp.js:51 |
academic |
academic.schedule (Jadwal & Kelas) |
rombel/schedule/slots/assignment/journal | Requires product decision | Core timetable plus LMS journal in one group; duplicate daily-report leaf removed at HEAD; src/config/apps/appFragments/academicApp.js:100-148 |
academic |
academic.assessment (Kurikulum & Penilaian) |
CP/TP/ATP/types/promotion/P5 | Optional module | SC-REPORT family; promotion incomplete; src/config/apps/appFragments/academicApp.js:153 |
academic |
academic.report_card (E-Rapor) |
report card + Dapodik sync | Optional module | SC-REPORT; Dapodik leaf remains pilot dependency; src/config/apps/appFragments/academicApp.js:210 |
academic |
academic.lms (LMS Hub) |
overview/enrollment/templates/storage/settings | Optional module | SC-LEARN; src/config/apps/appFragments/academicApp.js:253 |
academic |
academic.exam (Ujian) |
OpenEduCat exam config/results | Requires product decision | Tidak ada package boundary kanonis untuk legacy exam vs CBT/report-card exam surfaces; src/config/apps/appFragments/academicApp.js:315 |
academic |
academic.cbt (CBT) |
settings/audit | Optional module | SC-ASSESS; src/config/apps/appFragments/academicApp.js:357 |
student-affairs |
student-affairs.data (Data Siswa) |
/students, /parents |
Core supported | SIS baseline; src/config/apps/appFragments/studentAffairsApp.js:47 |
student-affairs |
student-affairs.pembinaan (Pembinaan) |
rules/achievement/violation/counseling/etc. | Optional module | SC-STUDENT; src/config/apps/appFragments/studentAffairsApp.js:73 |
hr |
hr.employees (Data Pegawai) |
teachers/employee/department/job/contract | Optional module | SC-PEOPLE; src/config/apps/appFragments/hrApp.js:35 |
hr |
hr.attendance (Kehadiran Pegawai) |
attendance/summary/self/schedule/rules | Optional module | SC-ATTEND+; src/config/apps/appFragments/hrApp.js:85 |
hr |
hr.leave (Cuti & Izin) |
personal/admin leave/types/balance | Optional module | SC-PEOPLE; src/config/apps/appFragments/hrApp.js:150 |
finance |
finance.spp (SPP & Biaya) |
schedule/enrollment/templates/scholarship/payment | Optional module | SC-FEES; src/config/apps/appFragments/financeApp.js:61 |
finance |
finance.payables (Pengeluaran) |
vendors/bills/payable/refunds | Optional module | SC-FIN; src/config/apps/appFragments/financeApp.js:141 |
finance |
finance.receivables (Pemasukan) |
customers/invoices/receivable | Optional module | SC-FIN; src/config/apps/appFragments/financeApp.js:183 |
finance |
finance.cash (Kas & Bank) |
transfers/journals/reconciliation | Optional module | SC-FIN; src/config/apps/appFragments/financeApp.js:216 |
finance |
finance.budget_approval (Anggaran & Persetujuan) |
budget/payment approval | Requires product decision | SC-FIN/SC-BOS mix plus approval/idempotency/RBAC issues; src/config/apps/appFragments/financeApp.js:261 |
finance |
finance.reports (Laporan) |
accounting/tax reports | Optional module | SC-FIN; src/config/apps/appFragments/financeApp.js:319 |
finance |
finance.config_assets (Pengaturan Akuntansi & Aset) |
asset/valuation/COA/journal/tax | Optional module | SC-FIN + SC-OPS dependency; valuation owner conflict applies; src/config/apps/appFragments/financeApp.js:354 |
finance |
finance.hr_personal (Personalia) |
payslip/leave/self-attendance | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/financeApp.js:425 |
inventory |
inventory.master (Dashboard & Master Data) |
dashboard/product/warehouse/location/stock | Optional module | SC-OPS; src/config/apps/appFragments/inventoryApp.js:63 |
inventory |
inventory.budget (Anggaran BOS) |
budget/report/ledger/RKAS | Pilot or beta | SC-BOS controlled rollout; src/config/apps/appFragments/inventoryApp.js:123 |
inventory |
inventory.operations (Operasional) |
movement/issue/transfer/return | Optional module | SC-OPS; src/config/apps/appFragments/inventoryApp.js:163 |
inventory |
inventory.procurement (Pengadaan) |
request/order/receipt | Requires product decision | SC-OPS/SC-BOS seam and approval ownership unresolved; src/config/apps/appFragments/inventoryApp.js:204 |
inventory |
inventory.assets (Aset & Sarpras) |
assets/inspection/disposal/maintenance | Optional module | SC-OPS; src/config/apps/appFragments/inventoryApp.js:249 |
inventory |
inventory.hr_personal (Personalia) |
self-attendance/leave | Optional module | SC-PEOPLE/ATTEND+; src/config/apps/appFragments/inventoryApp.js:299 |
inventory |
inventory.reports (Laporan) |
reports/register/audit | Optional module | SC-OPS; src/config/apps/appFragments/inventoryApp.js:325 |
library |
library.management (Manajemen Perpustakaan) |
/library/hub and management pages |
Optional module | SC-LIB; shared routes/components deduped; src/config/apps/appFragments/libraryApp.js:47 |
library |
library.portal (Layanan Mandiri) |
home/loans/wishlist/requests/reading | Optional module | SC-LIB; src/config/apps/appFragments/libraryApp.js:208 |
admissions |
admissions.pipeline (Pendaftaran) |
dashboard/period/test/CBT/results/complaints | Optional module | SC-ADM with optional SC-ASSESS; src/config/apps/appFragments/admissionsApp.js:30 |
admissions |
admissions.config (Konfigurasi) |
levels/pathways/doc types/SIC/test types | Optional module | SC-ADM; config view/manage issue tracked separately; src/config/apps/appFragments/admissionsApp.js:105 |
attendance |
attendance.students (Absensi Siswa) |
hub/pickup/settings | Requires product decision | Manual attendance domain core, tetapi write/correction/approval/completeness/privacy contract W05 belum siap diajarkan; src/config/apps/appFragments/attendanceApp.js:38 |
attendance |
attendance.rfid (RFID Siswa) |
card/device/event/monitoring | Optional module | SC-ATTEND+; src/config/apps/appFragments/attendanceApp.js:74 |
attendance |
attendance.face.students (Wajah Siswa) |
face management | Optional module | SC-ATTEND+; biometric privacy applies; src/config/apps/appFragments/attendanceApp.js:118 |
analytics |
analytics.executive (Eksekutif) |
three redirects | Requires product decision | Destination guards reject modeled roles; src/config/apps/appFragments/analyticsApp.js:35; docs/recon/open-questions.md:35-39 |
communication |
communication.messaging (Chat) |
/messaging |
Requires product decision | SC-CORE shell, tetapi membership/cross-tenant/attachment contract unresolved; src/config/apps/appFragments/communicationApp.js:24; SEC-11 |
communication |
communication.news (Berita) |
/admin/news, /news |
Core supported | Canonical scola_news in SC-CORE; legacy /announcement excluded; src/config/apps/appFragments/communicationApp.js:41 |
communication |
communication.calendar (Kalender) |
/calendar |
Core supported | Portal calendar core; privacy/audience blocker applies; src/config/apps/appFragments/communicationApp.js:66 |
communication |
communication.notifications (Notifikasi) |
/settings/notification-channels |
Core supported | Portal notification core; behavior still needs decision; src/config/apps/appFragments/communicationApp.js:82 |
communication |
communication.complaints (Aduan Masyarakat) |
dashboard/list/config | Requires product decision | No SKU and SEC-01 authorization gap; src/config/apps/appFragments/communicationApp.js:99 |
settings |
settings.school (Sekolah) |
company/capacity/attendance/LMS/Dapodik settings | Requires product decision | Core and three optional/pilot domains mixed; view/manage semantics unresolved; src/config/apps/appFragments/settingsApp.js:36 |
settings |
settings.access (Pengguna & Akses) |
/admin/users |
Core supported | Tenant identity administration shell; src/config/apps/appFragments/settingsApp.js:101 |
platform |
platform.ops (Operasi Platform) |
dashboard/requests/provisioning | Internal platform | Provider control plane; src/config/apps/appFragments/platformApp.js:26 |
platform |
platform.tenants (Tenant & Sekolah) |
tenants/schools/admins | Internal platform | Provider control plane; src/config/apps/appFragments/platformApp.js:58 |
platform |
platform.observability (Kesehatan Sistem) |
role observability pages | Internal platform | Internal support/diagnostics; src/config/apps/appFragments/platformApp.js:102 |
6. Candidate workflow surface — 20/20 workflow reconnaissance¶
Status di bawah adalah status workflow end-to-end, bukan otomatis status setiap modul atau halaman pembacanya. Contoh penting: attendance siswa manual adalah bagian produk inti, tetapi W05 belum dapat dianggap workflow yang siap didukung karena kontrak first-save, penyelesaian, koreksi, dan bukti izin belum konsisten. Itu sebabnya W05 diberi Requires product decision, sedangkan hub attendance dan halaman baca tetap dapat berstatus Core supported.
| ID | Workflow | Candidate status | Basis keputusan dan current-code evidence |
|---|---|---|---|
| W01 | Academic master to timetable | Core supported | Rantai ini adalah prasyarat SC-CORE dan dipakai lintas attendance/LMS/reporting. Inference: urutan setup masih perlu owner/lock-window bisnis; docs/recon/workflow-candidates.md:18; src/router/academicCoreRoutes.js:1; src/services/admin/academics/academicMaster.service.js:8. |
| W02 | Student onboarding | Core supported | SIS/student baseline berada dalam paket inti. HEAD menambah preflight, async job/progress, error export, dan idempotency; existing guide harus direkonsiliasi sebelum dipakai. docs/recon/workflow-candidates.md:19; src/views/AdminViews/StudentDatabase/UploadSiswa.vue:1; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:210-286; ../custom_addons_scola/gcgscola/scola_core/models/student_import_job.py:19-117. |
| W03 | SPMB applicant to enrolled student | Optional module | Termasuk SC-ADM, bukan baseline SC-CORE. State resmi dan momen pembuatan student masih memerlukan konfirmasi bisnis, tetapi itu tidak mengubah package boundary. docs/recon/workflow-candidates.md:20; src/router/spmbRoutes.js:1; ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_lifecycle_api.py:1. |
| W04 | CBT exam lifecycle | Optional module | Termasuk SC-ASSESS professional; retry/reopen/late-submit dan sinkronisasi nilai belum menjadi SOP terkonfirmasi. docs/recon/workflow-candidates.md:21; src/router/learningAssessmentRoutes.js:1; ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:1. |
| W05 | Daily student attendance | Requires product decision | Domain manual attendance adalah core, tetapi workflow write belum documentation-ready: first-save line bergantung ACL/runtime group, roster/completeness tidak ditegakkan, state menjadi done saat save, governance koreksi belum jelas, Sakit terlipat ke Izin, proof-file dan principal/VP boundary belum konsisten. docs/recon/workflow-candidates.md:22; docs/recon/open-questions.md:27,64-70; src/views/AttendanceManagement/Admin/DailyArrivalDeparture.vue:1; src/views/AttendanceManagement/Faculty/Attendance.vue:1; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1; ../custom_addons_scola/gcgscola/scola_attendance/models/op_attendance_sheet.py:1. |
| W06 | Employee self-attendance | Optional module | Bagian SC-ATTEND+, dengan dependency schedule/device/location/face dan exception policy yang belum disahkan. docs/recon/workflow-candidates.md:23; src/router/attendanceRoutes.js:1; ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:1. |
| W07 | Gradebook to report card | Optional module | Bagian SC-REPORT/SC-LEARN, bukan baseline; source-of-truth nilai dan batas edit pasca approval tetap perlu keputusan. docs/recon/workflow-candidates.md:24; ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_weekly_approval_api.py:1; ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:1. |
| W08 | Promotion and retention | Placeholder or incomplete | State machine tersedia, tetapi recon mengonfirmasi endpoint admin memanggil helper yang tidak ada sehingga workflow tidak dapat dituntaskan aman dari UI. Jangan menormalisasi defect ini sebagai SOP. docs/recon/workflow-candidates.md:25; docs/recon/open-questions.md:20,64-65; ../custom_addons_scola/gcgscola/scola_report_card/models/student_promotion.py:527; ../custom_addons_scola/gcgscola/scola_report_card/controllers/promotion_admin_api.py:1. |
| W09 | HR to payroll and payslip | Optional module | Termasuk SC-PEOPLE; approval, recompute, sumber attendance, dan privasi nominal tetap perlu workshop. docs/recon/workflow-candidates.md:26; ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_api.py:1; ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:1. |
| W10 | Billing and payment | Optional module | Termasuk SC-FEES/SC-FIN; reversal/refund, jurnal otomatis, dan approval ownership belum terkonfirmasi sebagai SOP. docs/recon/workflow-candidates.md:27; src/router/financeRoutes.js:1; ../custom_addons_scola/gcgscola/scola_fees/controllers/fee_enrollment_api.py:1. |
| W11 | Accounting transaction lifecycle | Optional module | Termasuk SC-FIN; separation of duties dan view/manage boundary harus diputuskan sebelum panduan mutation final. docs/recon/workflow-candidates.md:28; src/router/financeRoutes.js:1; ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:1. |
| W12 | BOS/RKAS procurement | Pilot or beta | SC-BOS adalah controlled-rollout package; approval idempotency, attachment handling, dan final approver belum siap dianggap kontrak dukungan umum. docs/recon/workflow-candidates.md:29; ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:1; ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:1. |
| W13 | Stock opname | Optional module | Termasuk SC-OPS; freeze window dan siapa yang boleh post adjustment membutuhkan policy bisnis, bukan asumsi dokumentasi. docs/recon/workflow-candidates.md:30; src/views/AdminViews/Inventory/StockOpname.vue:1; ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1. |
| W14 | Library circulation | Optional module | Termasuk SC-LIB; queue concurrency, lost/damaged, waiver, dan pembayaran denda masih perlu konfirmasi. docs/recon/workflow-candidates.md:31; src/router/libraryManagementRoutes.js:1; ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:1. |
| W15 | Counseling and student affairs | Optional module | Termasuk SC-STUDENT/SC-COUNSEL; package status optional, tetapi artikel data sensitif harus menunggu least-privilege/visibility decision. docs/recon/workflow-candidates.md:32; ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_domain_api.py:1; ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_domain_api.py:1. |
| W16 | News publication | Core supported | Hanya canonical scola.news/SC-CORE yang dimaksud. /announcement dan service legacy dikeluarkan sebagai duplicate; approval/audience rules ada di model. docs/recon/workflow-candidates.md:33; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:102; ../custom_addons_scola/gcgscola/scola_news/models/scola_news.py:1343. |
| W17 | Complaint intake and triage | Requires product decision | Tidak ada boundary SKU/support yang disahkan; internal authorization, retention, attachment policy, consent, dan anti-spam fail-open belum aman dijanjikan. docs/recon/workflow-candidates.md:34; src/router/publicComplaintRoutes.js:1; ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:55-107. |
| W18 | Messaging and notification | Requires product decision | Portal communication shell ada, tetapi membership, cross-school scope, attachment ownership, quiet hours, dan notification ownership belum menjadi contract yang konsisten. docs/recon/workflow-candidates.md:35; ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_api.py:18. |
| W19 | Dapodik sync | Pilot or beta | SC-DAP adalah controlled public-sector rollout; matching lintas company, dry-run/conflict/rollback, dan destructive-sync policy belum siap untuk support umum. docs/recon/workflow-candidates.md:36; src/router/settingsRoutes.js:1; ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/dapodik_api.py:1. |
| W20 | RFID attendance ingestion | Optional module | Bagian SC-ATTEND+; bukan bagian pilot W05 dan retry/capability CRUD device-card masih perlu keputusan. docs/recon/workflow-candidates.md:37; ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:1; ../custom_addons_scola/gcgscola/scola_smart_attendance/models/rfid_attendance_processor.py:1. |
7. Primary page-family candidates — 36/36 application entries¶
Satu baris mewakili page family kanonis pada entry utama tiap application app, bukan semua 884 page records. Redirect, alias, dan shared component tidak dihitung sebagai page baru. Status route individual tetap mengikuti guard/capability dan readiness pada evidence; menu visibility bukan bukti authorization.
| Application app | Canonical route / primary page | Component family | Candidate status | Dedupe/readiness evidence |
|---|---|---|---|---|
admin |
/admin/dashboard |
src/views/AdminViews/AdminDashboard.vue |
Core supported | Canonical admin portal entry; src/router/index.js:1; docs/recon/route-inventory.md:636. |
teacher |
/faculty/dashboard |
src/views/FacultyViews/TeacherDashboard.vue |
Core supported | /faculty/home adalah redirect, bukan page kedua; src/router/index.js:1; docs/recon/route-inventory.md:72; docs/recon/route-inventory.md:1349. |
student |
/student/dashboard |
src/views/StudentViews/StudentDashboard.vue |
Core supported | Canonical student portal entry; src/router/index.js:1; docs/recon/route-inventory.md:1126. |
parent |
/parent/dashboard |
src/views/ParentViews/ParentDashboard.vue |
Core supported | Canonical parent portal entry; linked-parent auth delta is in current backend; src/router/index.js:1; docs/recon/route-inventory.md:990; ../custom_addons_scola/gcgscola/scola_core/controllers/auth.py:1. |
principal |
/principal/dashboard |
src/views/Principal/PrincipalDashboard.vue |
Requires product decision | Page shell exists, tetapi attendance/analytics role-contract drift membuat supported principal surface belum dapat disahkan sebagai satu package; src/router/index.js:1; docs/recon/route-inventory.md:1055. |
counselor |
/counseling/dashboard |
src/views/CounselingManagement/CounselorDashboard.vue |
Optional module | SC-COUNSEL/SC-STUDENT; sensitive-record visibility caveat applies; src/router/counselingRoutes.js:1; docs/recon/route-inventory.md:729. |
extracurricular |
/faculty/extracurricular |
src/views/CounselingManagement/Extracurricular/ExtracurricularList.vue |
Optional module | SC-STUDENT app entry; src/router/counselingRoutes.js:1; docs/recon/route-inventory.md:1192. |
librarian |
/librarian/library |
src/views/LibraryManagement/Media/MediaCatalogPage.vue |
Optional module | Librarian role shell on SC-LIB; library management aliases/components are deduped below; src/router/libraryManagementRoutes.js:1; docs/recon/route-inventory.md:936. |
lab |
/lab-technician/dashboard |
src/views/Laboran/LaboranDashboard.vue |
Placeholder or incomplete | Dashboard dan enam subordinate views adalah static placeholders tanpa API; src/router/labTechnicianRoutes.js:4-15; docs/recon/route-inventory.md:914; docs/recon/open-questions.md:44-54. |
security |
/security-officer/dashboard |
src/views/Compliance/SecurityOfficerDashboard.vue |
Requires product decision | Role-facing operations exist but no canonical supported SKU/scope; least-privilege and sensitive visitor/incident ownership need decision. src/router/compliancePortalRoutes.js:78-90; docs/recon/route-inventory.md:1086. |
committee |
/school-committee/dashboard |
src/views/Compliance/SchoolCommitteeDashboard.vue |
Requires product decision | Read-only governance boundary is not package-mapped or runtime-proven; src/router/compliancePortalRoutes.js:105-117; docs/recon/route-inventory.md:1080. |
bos |
/bos/dashboard |
src/views/Compliance/BosAdminDashboard.vue |
Pilot or beta | SC-BOS controlled rollout; src/router/compliancePortalRoutes.js:121-134; docs/recon/route-inventory.md:709. |
dapodik |
/dapodik/dashboard |
src/views/Compliance/DapodikOperatorDashboard.vue |
Pilot or beta | SC-DAP controlled rollout; destructive/matching policy unresolved; src/router/compliancePortalRoutes.js:4-17; docs/recon/route-inventory.md:758. |
dpo |
/dpo/audit-log |
src/views/Dpo/DpoPiiAuditLog.vue |
Requires product decision | DPO access model and purpose/retention of audit data need Security/DPO decision; src/router/compliancePortalRoutes.js:38-74; docs/recon/route-inventory.md:776. |
foundation-auditor |
/foundation-auditor/dashboard |
src/views/Compliance/FoundationAuditorDashboard.vue |
Optional module | SC-FOUND auditor overlay; runtime tenant scope still needs verification. src/router/compliancePortalRoutes.js:21-34; docs/recon/route-inventory.md:851. |
pickup |
/pickup/attendance |
src/views/AttendanceManagement/PickupOfficer/MobileTransportTasks.vue |
Requires product decision | Separate pickup/transport process, explicitly excluded from W05; package and privacy boundary not canonical. src/router/attendanceRoutes.js:1; docs/recon/route-inventory.md:1016. |
admin-staff |
/admin-staff/dashboard |
src/views/AdminViews/StaffTUDashboard.vue |
Requires product decision | Mixed core/optional leaf aggregation and role-capability contract require product selection. src/router/index.js:1; docs/recon/route-inventory.md:662. |
foundation |
/foundation/dashboard |
src/views/Yayasan/YayasanDashboard.vue |
Optional module | SC-FOUND; src/router/foundationRoutes.js:4; docs/recon/route-inventory.md:828. |
foundation-hr-ops |
/foundation/hr/employees |
src/views/Yayasan/FoundationEmployeeRegistry.vue |
Optional module | SC-FOUND/SC-PEOPLE operations; src/router/foundationRoutes.js:74; docs/recon/route-inventory.md:837. |
vp-curriculum |
/vice-principal/curriculum |
src/views/AdminViews/WakasekDashboard.vue |
Requires product decision | Shared shell with infrastructure/PR; role behavior and mixed core/LMS/attendance scope not package-mapped. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1228. |
vp-student-affairs |
/vice-principal/student-affairs |
src/views/Principal/PrincipalStudents.vue |
Requires product decision | Mixed student master, W05 attendance, and optional student-affairs data; src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1278. |
vp-infrastructure |
/vice-principal/infrastructure |
src/views/AdminViews/WakasekDashboard.vue |
Requires product decision | Same component family as VP curriculum/PR; must not become three duplicate help articles unless role output differs. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1257. |
vp-public-relations |
/vice-principal/public-relations |
src/views/AdminViews/WakasekDashboard.vue |
Requires product decision | Same component family; combines core news/calendar and optional admissions. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1270. |
vp-finance |
/vice-principal/finance |
src/views/AdminViews/AcademicConfig/Fees/FeeDashboard.vue |
Requires product decision | Fee dashboard reuse with a role wrapper; SC-FEES/FIN entitlement boundary not proven. src/router/vicePrincipalRoutes.js:1; docs/recon/route-inventory.md:1248. |
academic |
/academic-year |
src/views/AdminViews/AcademicConfig/AcademicYear/AcademicYearList.vue |
Core supported | Canonical academic-master entry; SC-CORE. src/router/academicCoreRoutes.js:1; docs/recon/route-inventory.md:602. |
student-affairs |
/students |
src/views/AdminViews/StudentDatabase/StudentList.vue |
Core supported | Student master list is core; optional pembinaan pages remain separately optional. src/router/studentRoutes.js:1; docs/recon/route-inventory.md:1112. |
hr |
/teachers |
src/views/AdminViews/TeacherDatabase/TeacherList.vue |
Optional module | SC-PEOPLE; teacher DB route is not SC-CORE package proof. src/router/teacherAdminRoutes.js:3-13; docs/recon/route-inventory.md:877. |
finance |
/payment/schedule |
src/views/AdminViews/AcademicConfig/Fees/Schedule/FeeScheduleList.vue |
Optional module | SC-FEES finance entry; src/router/financeRoutes.js:1; docs/recon/route-inventory.md:816. |
inventory |
/inventory/dashboard |
src/views/AdminViews/Inventory/InventoryOfficerDashboard.vue |
Optional module | SC-OPS; src/router/inventoryRoutes.js:1; docs/recon/route-inventory.md:891. |
library |
/library/hub |
src/views/LibraryManagement/Hubs/LibraryManagementHub.vue |
Optional module | Canonical shared management hub; role-specific library aliases are not separate products. src/router/libraryManagementRoutes.js:1; docs/recon/route-inventory.md:963. |
admissions |
/admin/spmb/dashboard |
src/views/AdmissionManagement/AdmissionDashboard.vue |
Optional module | SC-ADM; src/router/spmbRoutes.js:1; docs/recon/route-inventory.md:687. |
attendance |
/attendance/home |
src/views/AttendanceManagement/Admin/AttendanceHome.vue |
Core supported | Read/navigation hub for manual attendance domain is core; this does not bless W05 write/correction pages. src/router/attendanceRoutes.js:1; docs/recon/route-inventory.md:752. |
analytics |
/principal/analytics |
src/views/AnalyticsManagement/Admin/PrincipalDashboard.vue |
Requires product decision | /admin/analytics/principal is redirect only; recon found destination guard rejects modeled source roles. src/router/principalRoutes.js:354-373; src/router/analyticsAdminRoutes.js:3-6; docs/recon/route-inventory.md:1047; docs/recon/route-inventory.md:1308; docs/recon/open-questions.md:35-39. |
communication |
/calendar |
src/views/AdminViews/Calendar/CalendarView.vue |
Core supported | Canonical core calendar entry; messaging/complaints are not folded into this support decision. src/router/communicationAdminRoutes.js:33-53; docs/recon/route-inventory.md:1210. |
settings |
/settings/company |
src/views/SettingsManagement/CompanySettings.vue |
Core supported | Canonical school/company settings entry; optional LMS/attendance/Dapodik settings remain separately gated. src/router/settingsRoutes.js:1; docs/recon/route-inventory.md:845. |
platform |
/platform/dashboard |
src/views/Platform/PlatformDashboard.vue |
Internal platform | Provider control plane, not school-user documentation. src/router/platformRoutes.js:1; docs/recon/route-inventory.md:1022. |
Page-level exceptions that change documentation scope¶
| Canonical page family | Candidate status | Why it is not inherited blindly from its parent app |
|---|---|---|
/attendance/daily and /faculty/attendance |
Requires product decision | W05 mutation surfaces have the first-save ACL/runtime-group, roster/completeness, done-on-save, correction governance, status-loss, proof-file, and role-drift findings described above; src/views/AttendanceManagement/Admin/DailyArrivalDeparture.vue:1; src/views/AttendanceManagement/Faculty/Attendance.vue:1; ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_api_mixin.py:1. |
/student/attendance and /parent/attendance |
Core supported | Read surfaces are part of manual attendance core, subject to runtime verification of child/tenant scoping; src/router/studentRouteFragments/core.js:26; src/router/parentRouteFragments/core.js:36; docs/recon/route-inventory.md:987,1122. |
/students/import |
Requires product decision | W02/domain remains core, tetapi route hanya meminta students.list.view sementara backend mutation memakai admin/user-management authority yang lebih kuat; async job path juga belum runtime-verified. Jangan ajarkan halaman import sebagai generally available sampai FE/API authority diselaraskan. src/router/studentDataAdminRoutes.js:14-20; src/views/AdminViews/StudentDatabase/UploadSiswa.vue:769-835; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:27-40; ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:210-286. |
/announcement plus announcementService.js |
Legacy or duplicate | Parallel legacy publication surface; canonical documentation target is scola.news; docs/recon/open-questions.md:39-40; src/router/sharedExperienceRoutes.js:59; src/services/news/announcementService.js:1. |
Six Laboran child routes plus /lab-technician/dashboard |
Placeholder or incomplete | Static/mock UI with no API dependency; do not publish operational instructions. docs/recon/open-questions.md:44-54; src/router/labTechnicianRoutes.js:4-15; src/views/Laboran/LaboranDashboard.vue:1. |
/register |
Placeholder or incomplete | Public shell/stub is not evidence of a supported registration lifecycle; docs/recon/route-inventory.md:544; src/views/Register.vue:1. |
| Promotion/retention pages | Placeholder or incomplete | UI/model state exists, but the audited admin endpoint has a missing-helper execution defect; docs/recon/workflow-candidates.md:25; ../custom_addons_scola/gcgscola/scola_report_card/controllers/promotion_admin_api.py:1. |
/admin/complaint* and public complaint intake |
Requires product decision | Authorization ownership, retention, attachments/consent, anti-spam mode, and support packaging are unresolved; src/router/publicComplaintRoutes.js:1; ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:55-107. |
VP dashboard aliases sharing WakasekDashboard.vue |
Requires product decision | One component family is reused by three route roles; produce shared help plus role deltas only after runtime capability decisions, not duplicate articles. src/router/vicePrincipalRoutes.js:1; src/views/AdminViews/WakasekDashboard.vue:1. |
8. Auditable coverage and decisions still required¶
| Inventory layer | Recon baseline | Candidate coverage in this file | Audit treatment |
|---|---|---|---|
| Frontend application apps | 36 | 36 | Exactly one app-level candidate per APP_IDS entry. |
| Frontend menu groups | 143 | 143 | One row per section; leaves are summarized inside their owning group, not silently promoted to separate supported products. |
| Frontend leaves | 529 at recon; 528 at HEAD | 528 represented through 143 group rows | HEAD removed one duplicate academic.class-daily-report leaf; alias/shared-component dedupe is explicit. |
| Router records | 1,003 = 884 pages + 119 redirects/aliases | 36 primary app page families + explicit high-risk exceptions | This is a product-surface catalog, not a replacement for the 1,003-record route inventory. Every route remains auditable in docs/recon/route-inventory.md:55-1415. |
| Workflow candidates | 20 | 20 | One exclusive candidate status per W01–W20. |
| Backend manifest modules | 67 | 67 | Every current manifest classified once; bridge/compatibility conflicts are not force-resolved. |
| Backend source directories without manifest | 4 | 4 | Kept separate from installable modules. |
Before this catalog can become a final supported-product statement, Product must decide the role shells that aggregate mixed packages (principal, admin staff, vice principals), the canonical assessment/inventory/BOS bridge names, W05 mutation/correction governance, complaint/messaging/privacy ownership, analytics destination roles, and legacy deprecation dates. Security/DPO must separately approve sensitive student, counseling, messaging, proof-file, biometric, and cross-tenant boundaries. Operations must provide a tenant/runtime installation baseline; static presence, a menu leaf, an existing guide, or a route guard alone is not evidence that a surface is enabled or safe in production.
Net conclusion: the evidence supports a deliberately narrow V1 surface: SC-CORE portals, academic master/timetable, student master/onboarding at domain level (excluding the import UI until its authority drift is resolved), canonical news/calendar/notification shell, and read-oriented manual student attendance. Optional package documentation can proceed package-by-package with explicit entitlement labels. Pilot/beta, placeholder, internal, legacy, and Requires product decision surfaces must not be presented as generally supported until their listed decisions or defects are closed.