Lewati ke isi

B. Route and page inventory

Snapshot reconnaissance statis untuk perancangan dokumentasi pengguna berbasis role dan contextual help.

Last verified: 2026-08-05 Mode: server development Workspace root: /home/scola/odoo Scope: seluruh component route serta redirect/alias frontend Runtime limitation: Missing or unclear — audit ini tidak memeriksa database tenant, modul yang terpasang, group efektif per user, atau perilaku bundle production

Status bukti yang dipakai secara eksklusif: Confirmed from code, Inferred from code, Requires business confirmation, dan Missing or unclear.

Baseline

  • Confirmed from code — 1003 effective route records, terdiri dari 884 component pages dan 119 redirect/alias records.
  • Confirmed from code — 581 unique component files dipakai oleh component routes.
  • Missing or unclear — field/action dinamis, label hasil i18n, slot tabel reusable, dan endpoint yang dibangun runtime dapat tidak tertangkap oleh ekstraksi statis.

Kontrak kolom

Setiap halaman memakai 14 kolom yang diminta. Allowed roles membedakan guard role eksplisit dari role hasil pemodelan capability. Downstream impact tidak mengklaim efek bisnis jika hanya bentuk endpoint yang diketahui.

B1. Component pages

Admin (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Admin principal-complaint-detail /principal/complaints/:id src/views/AdminViews/ComplaintDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-complaint-detail pada /principal/complaints/:id; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.push, toggleReadStatus, toggleFilePreview, downloadFile Confirmed from code — /api/complaint/detail @ src/services/public/publicComplaint.service.js:69 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:223; Confirmed from code — /api/complaint/mark-unread @ src/services/public/publicComplaint.service.js:93 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:305; Confirmed from code — /api/complaint/mark-read @ src/services/public/publicComplaint.service.js:81 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:288 Confirmed from code — sesi autentik; allowedRoles principal; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/complaint/mark-unread, /api/complaint/mark-read; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/complaints/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Admission (5 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Admission Daftar Sekolah Lebih Mudah & Cepat /spmb src/views/AdmissionManagement/Public/SPMBLanding.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman Daftar Sekolah Lebih Mudah & Cepat pada /spmb; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Pendaftaran Online, Pantau Status, Multi Jalur, Buat Akun, Isi Data Confirmed from code — Daftar Sekarang, router.push, goToLogin, goToRegister, goToStatistics, set sections.features, set sections.steps, set sections.registers, set faq.open Confirmed from code — /api/SPMB/registers @ src/services/spmb/spmbPublicRegisters.service.js:94 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_public_api.py:8 Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /spmb/register, /spmb/login, /spmb/statistics, /spmb, /spmb/status P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Admission SPMBQuotaMonitor /spmb/public/quota-monitor src/views/AdmissionManagement/Public/SPMBQuotaMonitor.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman SPMBQuotaMonitor pada /spmb/public/quota-monitor; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — loadQuota Confirmed from code — /api/SPMB/public/quota-monitor @ src/services/spmb/spmbPublicRegisters.service.js:123 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_api.py:553 Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Admission SPMBStatistics /spmb/statistics src/views/AdmissionManagement/Public/SPMBStatistics.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman SPMBStatistics pada /spmb/statistics; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — router.push Confirmed from code — /api/SPMB/registers @ src/services/spmb/spmbPublicRegisters.service.js:94 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_public_api.py:8 Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /spmb P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Admission SPMBStatusCheck /spmb/status src/views/AdmissionManagement/Public/SPMBStatusCheck.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman SPMBStatusCheck pada /spmb/status; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchInput; filter=searchInput; aturan field=searchInput: type=text Confirmed from code — checkStatus Confirmed from code — /api/SPMB/status @ src/services/spmb/spmbPublicRegisters.service.js:109 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_public_api.py:12 Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /spmb/login, /spmb P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Admission SPMBVerifyEmail /spmb/verify-email src/views/AdmissionManagement/Public/SPMBVerifyEmail.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman SPMBVerifyEmail pada /spmb/verify-email; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=email, otp, [email protected], Masukkan 6 digit OTP, Kode OTP; sinyal validasi=required, min/max; aturan field=email: required, type=email, otp: required, maxlength=6, type=text Confirmed from code — Kirim Ulang OTP, Kembali ke Login, goToLogin, handleVerify, handleResendOtp Confirmed from code — /api/SPMB/account/resend-otp @ src/services/spmb/spmb.service.js:79 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_account_api.py:16; Confirmed from code — /api/SPMB/account/verify-email @ src/services/spmb/spmb.service.js:75 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_account_api.py:12 Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/account/resend-otp, /api/SPMB/account/verify-email; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Akademik (57 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Akademik Tambah Peserta Ujian /admin/examattendeesnew src/views/ExamManagement/Admin/Exams/ExamAttendeesNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tambah Peserta Ujian pada /admin/examattendeesnew; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.student_id, form.exam_id, form.status, form.marks, form.room_id, form.note, Contoh: 0, Ruangan, Tambahkan catatan bila diperlukan; filter=form.status; sinyal validasi=required, custom validate; aturan field=form.student_id: required, form.exam_id: required, form.status: required, form.marks: type=number; Inferred from code — option/status/display-label candidates=Hadir Confirmed from code — router.back, saveExamAttendee, fetchReferenceData, goToList Confirmed from code — /api/v1/academic/exams/attendees/save @ src/services/admin/academics/examOperations.service.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:294; Confirmed from code — /api/v1/academic/exams/options @ src/services/admin/academics/examOperations.service.js:16 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:199 Confirmed from code — sesi autentik; capability academics.exam_attendees.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field student_id, exam_id, room_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/attendees/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/examattendees P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Tambah Ruangan Ujian /admin/examroomnew src/views/ExamManagement/Admin/ConfigurationExam/ExamRoomNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tambah Ruangan Ujian pada /admin/examroomnew; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=examRoom.name, examRoom.capacity, examRoom.classroom_id, Nama Ruangan, Contoh: Lab Komputer 1, Kapasitas, Contoh: 30; filter=examRoom.classroom_id; sinyal validasi=required, custom validate; aturan field=examRoom.name: required, examRoom.capacity: required, type=number, examRoom.classroom_id: required Confirmed from code — router.back, saveExamRoom, fetchClassrooms, goToList Confirmed from code — /api/v1/academic/exams/rooms/save @ src/services/admin/academics/examOperations.service.js:37 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:270; Confirmed from code — /api/v1/academic/exams/options @ src/services/admin/academics/examOperations.service.js:16 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:199 Confirmed from code — sesi autentik; capability academics.exam_rooms.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field classroom_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/rooms/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/examroom P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-exams /admin/exams src/views/ExamManagement/Admin/Exams/Exams.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-exams pada /admin/exams; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; kolom=Sesi, Mapel, Rombel; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — router.push Confirmed from code — /api/v1/academic/exams/items @ src/services/admin/academics/examOperations.service.js:61 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:521 Confirmed from code — sesi autentik; capability academics.exam_menu.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/examsnew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Buat Sesi Ujian /admin/examsessionnew src/views/ExamManagement/Admin/Exams/ExamSessionNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Buat Sesi Ujian pada /admin/examsessionnew; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.exam_code, form.start_date, form.end_date, form.course_id, form.exam_type, form.venue, form.evaluation_type, Nama Sesi, Contoh: UAS Ganjil 2026, Kode Sesi, Digenerate otomatis, +5 lainnya; filter=form.start_date, form.end_date, form.course_id; sinyal validasi=required, custom validate; aturan field=form.name: required, form.start_date: required, type=date, form.end_date: required, type=date, form.course_id: required, form.exam_type: required, form.venue: required, form.evaluation_type: required, field: type=checkbox; Inferred from code — option/status/display-label candidates=Normal Confirmed from code — router.back, createExamSession, toggleBatch, fetchReferenceData, goToExamMenu Confirmed from code — /api/v1/academic/exams/options @ src/services/admin/academics/examOperations.service.js:16 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:199; Confirmed from code — /api/v1/academic/exams/sessions/save @ src/services/admin/academics/examOperations.service.js:25 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:333 Confirmed from code — sesi autentik; capability academics.exam_menu.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field course_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/sessions/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/exam P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-examsnew /admin/examsnew src/views/ExamManagement/Admin/Exams/ExamsNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-examsnew pada /admin/examsnew; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.session_id, form.name, form.subject_id, form.batch_id, form.exam_code, form.total_marks, form.min_marks, form.start_time, form.end_time, form.note, Mulai; filter=form.batch_id; sinyal validasi=required, min/max; aturan field=form.session_id: required, form.name: required, form.subject_id: required, form.batch_id: required, form.exam_code: required, maxlength=16, form.total_marks: required, min=1, type=number, form.min_marks: required, min=1, type=number, form.start_time: required, type=datetime-local, form.end_time: required, type=datetime-local Confirmed from code — saveExam, router.push Confirmed from code — /api/v1/academic/exams/items/save @ src/services/admin/academics/examOperations.service.js:65 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:536; Confirmed from code — /api/v1/academic/exams/options @ src/services/admin/academics/examOperations.service.js:16 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:199 Confirmed from code — sesi autentik; capability academics.exam_menu.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field session_id, subject_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/items/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/exams P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-gradeconfig /admin/gradeconfig src/views/ExamManagement/Admin/ConfigurationExam/GradeConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-gradeconfig pada /admin/gradeconfig; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; kolom=Minimum %, Maksimum %, Predikat; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — router.push Confirmed from code — /api/v1/academic/exams/grade-configs @ src/services/admin/academics/examOperations.service.js:103 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:689 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/grade-configs; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/gradeconfignew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-gradeconfignew /admin/gradeconfignew src/views/ExamManagement/Admin/ConfigurationExam/GradeConfigNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-gradeconfignew pada /admin/gradeconfignew; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.min_per, form.max_per, form.result, A / Baik / Tuntas, Minimum %, Maksimum %, Predikat; sinyal validasi=required, min/max; aturan field=form.min_per: required, min=0, max=100, type=number, form.max_per: required, min=0, max=100, type=number, form.result: required Confirmed from code — saveGrade, router.push Confirmed from code — /api/v1/academic/exams/grade-configs/save @ src/services/admin/academics/examOperations.service.js:107 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:696 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/grade-configs/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/gradeconfig P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-marksheetlines /admin/marksheetlines src/views/ExamManagement/Admin/Exams/MarksheetLines.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-marksheetlines pada /admin/marksheetlines; tujuan diringkas dari tabel/kolom data, filter/pencarian Confirmed from code — field=searchQuery; kolom=Register, Persentase, Predikat; filter=searchQuery; aturan field=searchQuery: type=text Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /api/v1/academic/exams/marksheet-lines @ src/services/admin/academics/examOperations.service.js:95 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:661 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-marksheetlinesnew /admin/marksheetlinesnew src/views/ExamManagement/Admin/Exams/MarkSheetLinesNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-marksheetlinesnew pada /admin/marksheetlinesnew; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.push Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/resulttemplatesnew, /admin/marksheetlines P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-marksheetregisternew /admin/marksheetregisternew src/views/ExamManagement/Admin/Exams/MarkSheetRegisterNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-marksheetregisternew pada /admin/marksheetregisternew; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.generated_date, form.exam_session_id, form.result_template_id, Nama Register; filter=form.generated_date; sinyal validasi=required; aturan field=form.generated_date: required, type=date, form.exam_session_id: required, form.result_template_id: required Confirmed from code — saveRegister, router.push Confirmed from code — /api/v1/academic/exams/marksheet-registers/save @ src/services/admin/academics/examOperations.service.js:86 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:627; Confirmed from code — /api/v1/academic/exams/options @ src/services/admin/academics/examOperations.service.js:16 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:199 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field exam_session_id, result_template_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/marksheet-registers/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/marksheetregister P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Penilaian P5 /admin/p5/assessment/:assessmentId src/views/AdminViews/P5/P5AssessmentDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Penilaian P5 pada /admin/p5/assessment/:assessmentId; tujuan diringkas dari aksi interaktif Confirmed from code — field=line.rating, line.description, overallDescription, Deskripsi keseluruhan pencapaian siswa dalam proyek P5 ini..., placeholder, Rating, Pilih Rating, Deskripsi Pencapaian; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Mulai Berkembang, Berkembang Sesuai Harapan, Sangat Berkembang, Sukses, Error Confirmed from code — Gunakan Deskripsi Otomatis, Gunakan Saran, Refresh, Gunakan, saveAssessment, set isEditMode, cancelEdit, saveAndSubmit, selectRubrik, useSuggestion, fetchSuggestion Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/p5Admin.service.js, src/services/auth/auth.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.project_p5.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; parameter route assessmentId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-p5-project-detail /admin/p5/project/:projectId src/views/AdminViews/P5/P5ProjectDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-p5-project-detail pada /admin/p5/project/:projectId; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=generateBatchId, form.name, form.description, form.phase_id, form.url, Rombongan Belajar, Deskripsi singkat dokumen ini..., Jenis Dokumen, Deskripsi (Opsional), File; filter=generateBatchId; sinyal validasi=required; aturan field=generateBatchId: required, field: type=file; Inferred from code — option/status/display-label candidates=Fase Proyek, Portofolio, Penilaian, Error, Sukses, Foto, Video, Dokumen, Link Confirmed from code — pilih file, completeProject, set activeTab, set showGenerateModal, viewAssessment, editAssessment, handleGenerate, toggleItem, startPhase, completePhase, reactivatePhase, openChecklist, generatePhases, set showUploadModal, +8 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.project_p5.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; parameter route projectId; Inferred from code — data prerequisite: referenced records dari field phase_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-exam-list /admin/report-card/exams src/views/ReportCardManagement/Admin/ExamList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-exam-list pada /admin/report-card/exams; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Source Raport, Policy Publish, Catatan Refresh, KKM; Inferred from code — option/status/display-label candidates=Error Confirmed from code — navigateToNewExam Confirmed from code — /api/v1/report-card/setup/exams @ src/services/reportCard/reportCardSetup.service.js:13 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:46 Confirmed from code — sesi autentik; capability academics.exam_menu.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/examsessionnew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-resultlines /admin/resultlines src/views/ExamManagement/Admin/Exams/ResultLines.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-resultlines pada /admin/resultlines; tujuan diringkas dari tabel/kolom data, filter/pencarian Confirmed from code — field=searchQuery; kolom=Mapel, Predikat; filter=searchQuery; aturan field=searchQuery: type=text Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /api/v1/academic/exams/result-lines @ src/services/admin/academics/examOperations.service.js:99 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:674 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-resulttemplates /admin/resulttemplates src/views/ExamManagement/Admin/Exams/ResultTemplates.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-resulttemplates pada /admin/resulttemplates; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; kolom=Tanggal Hasil, Skala; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — router.push Confirmed from code — /api/v1/academic/exams/result-templates @ src/services/admin/academics/examOperations.service.js:73 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:579 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/resulttemplatesnew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik admin-resulttemplatesnew /admin/resulttemplatesnew src/views/ExamManagement/Admin/Exams/ResultTemplatesNew.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-resulttemplatesnew pada /admin/resulttemplatesnew; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.result_date, form.exam_session_id, form.grade_ids, Nama Template, Tanggal Hasil; filter=form.result_date; sinyal validasi=required; aturan field=form.name: required, form.result_date: required, type=date, form.exam_session_id: required, form.grade_ids: type=checkbox Confirmed from code — saveTemplate, router.push Confirmed from code — /api/v1/academic/exams/options @ src/services/admin/academics/examOperations.service.js:16 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:199; Confirmed from code — /api/v1/academic/exams/result-templates/save @ src/services/admin/academics/examOperations.service.js:77 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:592 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field exam_session_id, grade_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/exams/result-templates/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/resulttemplates P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik class-assignments /class-assignments src/views/StudentClassAssignment/ClassAssignmentList.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman class-assignments pada /class-assignments; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — Kelas, Tambah Kelas, set selectedTab, handleAddClass, goToClassDetail Confirmed from code — /api/v1/academic/classrooms/list @ src/services/admin/classAssignment.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:220 Confirmed from code — sesi autentik; capability academics.class_group.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /classes/create, /classes/:id P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik class-list /class-list src/views/AdminViews/StudentDatabase/ListKelas.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman class-list pada /class-list; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, selectedClasses, searchQuery; filter=selectedClasses, searchQuery Confirmed from code — navigateToTambahSiswa, navigateToUploadPage, handleViewSelected, navigateToKelas Confirmed from code — /api/v1/admin/students/classes @ src/services/admin/student.service.js:15 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:308 Confirmed from code — sesi autentik; capability academics.class_group.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /students/create, /students/import P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik class-detail /classes/:id src/views/StudentClassAssignment/ClassDetail.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman class-detail pada /classes/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=editedKelas.name, editedKelas.code, editedKelas.capacity, editedKelas.faculty_id; aturan field=editedKelas.capacity: type=number Confirmed from code — Hapus Kelas, deleteKelas, enableEditing, saveChanges, cancelEditing Confirmed from code — /api/v1/academic/classrooms/detail @ src/services/admin/classAssignment.service.js:21 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:230; Confirmed from code — /api/v1/academic/classrooms/save @ src/services/admin/classAssignment.service.js:36 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:259; Confirmed from code — /api/v1/academic/classrooms/delete @ src/services/admin/classAssignment.service.js:44 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:279; Confirmed from code — /api/v1/academic/faculty/lookup @ src/services/admin/classAssignment.service.js:51 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:245 Confirmed from code — sesi autentik; capability academics.class_group.view; parameter route id; Inferred from code — data prerequisite: referenced records dari field faculty_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/classrooms/save, /api/v1/academic/classrooms/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /daftarkelas P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik class-assignment-create /classes/create src/views/StudentClassAssignment/ClassAssignmentForm.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman class-assignment-create pada /classes/create; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=className, capacity, classCode, Masukkan nama kelas, Masukkan kapasitas kelas, Masukkan kode kelas, Nama Kelas, Kapasitas, Kode Kelas; filter=className, classCode; aturan field=className: type=text, capacity: type=number, classCode: type=text Confirmed from code — saveClass Confirmed from code — /api/v1/academic/classrooms/save @ src/services/admin/classAssignment.service.js:36 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:259 Confirmed from code — sesi autentik; capability academics.class_group.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/classrooms/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik Penilaian Tugas /faculty/assignments/:id/grading src/views/AssignmentManagement/Faculty/components/AssignmentGradingPage.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Penilaian Tugas pada /faculty/assignments/:id/grading; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, filterStatus, student.marks, student.note; filter=searchQuery, filterStatus; sinyal validasi=min/max; aturan field=searchQuery: type=search, student.marks: min=0, max=100, type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — File Lampiran, goBack, openSubmissionPreview, saveGrade, toggleFilePreview, downloadFile, closePreviewModal Missing or unclear — /lms/items/:param @ src/services/lms/lmsSubmission.service.js:17; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /lms/attachments @ src/services/lms/lmsSubmission.service.js:32; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/attachments @ src/services/lms/sessionMaterial.service.js:29; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/items/:param/grade @ src/services/lms/assignment.service.js:230 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_assessment_api.py:403 Confirmed from code — sesi autentik; capability academics.assignments.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/items/:param/grade; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik assignment-create /faculty/assignments/create src/views/AssignmentManagement/Faculty/AddAssignmentPage.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman assignment-create pada /faculty/assignments/create; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.course_id, form.name, form.description, attachmentFiles, form.lock_at, form.published_at, form.visibility; filter=form.course_id; sinyal validasi=required, custom validate; aturan field=form.course_id: required, form.name: required, form.lock_at: required, type=datetime-local, form.published_at: type=datetime-local, form.visibility: required; Inferred from code — option/status/display-label candidates=Terjadwal Confirmed from code — router.back, submitForm Confirmed from code — /api/lms/courses @ src/services/lms/assignment.service.js:21 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_api.py:90; Confirmed from code — /api/lms/courses/:param/items @ src/services/lms/assignment.service.js:116 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_item_api.py:56; Confirmed from code — /lms/attachments @ src/services/lms/assignment.service.js:147; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.assignments.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Inferred from code — data prerequisite: referenced records dari field course_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/assignments P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik exam-create /faculty/assignments/exam-create src/views/AssignmentManagement/Faculty/AddExamPage.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman exam-create pada /faculty/assignments/exam-create; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.course_id, form.exam_type_id, form.name, form.exam_code, form.total_marks, form.min_marks, form.start_time, form.end_time, form.question_set_id, form.cbt_duration, form.grade_component_type, form.grade_component_weight, +15 lainnya; filter=form.course_id, Status Ulangan; sinyal validasi=required, custom validate; aturan field=form.course_id: required, form.exam_type_id: required, form.name: required, form.exam_code: required, form.total_marks: required, type=number, form.min_marks: type=number, form.start_time: required, type=datetime-local, form.end_time: required, type=datetime-local, form.cbt_duration: type=number, form.grade_component_type: required, +3 lainnya; Inferred from code — option/status/display-label candidates=PH - Penilaian Harian, PTS - Penilaian Tengah Semester, PAS - Penilaian Akhir Semester, Publikasi (Langsung Terlihat) Confirmed from code — router.back, submitForm Confirmed from code — /api/lms/courses @ src/services/lms/assignment.service.js:21 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_api.py:90; Confirmed from code — /v1/academic/cbt/exams/save @ src/services/cbt/examService.js:45 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:16; Confirmed from code — /v1/academic/cbt/exams/options/exam-types @ src/services/cbt/examService.js:305 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:31; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability academics.assignments.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field course_id, exam_type_id, question_set_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTExamDetail /faculty/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? src/views/ExamManagement/Faculty/Exam/CBTExamDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CBTExamDetail pada /faculty/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeWorkspaceTab, editForm.name, editForm.question_set_id, editForm.cbt_duration, editForm.total_marks, editForm.min_marks, editForm.start_time, editForm.end_time, editForm.cbt_shuffle_questions, editForm.cbt_shuffle_options, editForm.cbt_show_result, editForm.remedial_policy, +8 lainnya; kolom=Aksi; sinyal validasi=required, rules/schema; aturan field=editForm.name: required, editForm.question_set_id: required, editForm.cbt_duration: type=number, editForm.total_marks: type=number, editForm.min_marks: type=number, editForm.start_time: type=datetime-local, editForm.end_time: type=datetime-local, editForm.cbt_shuffle_questions: type=checkbox, editForm.cbt_shuffle_options: type=checkbox, editForm.cbt_show_result: type=checkbox, +3 lainnya; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goBack, switchToSettingsTab, openMappingModal, openRemedialpolicyModal, openPublishGradebookModal, navigateToItemAnalysis, navigateToIntegrityReport, openAnalytics, handleExportXlsx, handleRegenerateToken, openStaffModal, handleTransition, openProctorConsole, handleUpdate, +13 lainnya Confirmed from code — /v1/academic/cbt/grading/exams/ @ src/views/ExamManagement/Faculty/Exam/CBTExamDetail.vue:1805; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /v1/academic/cbt/exams/:param/get @ src/services/cbt/examService.js:31 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:105; Confirmed from code — /v1/academic/cbt/exams/:param/regenerate-token @ src/services/cbt/examService.js:87 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:289; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/list @ src/services/cbt/examService.js:117 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:15; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/:param/remove @ src/services/cbt/examService.js:159 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:110; Confirmed from code — /v1/academic/cbt/exams/:param/save @ src/services/cbt/examService.js:59 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:172; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/add @ src/services/cbt/examService.js:145 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:83; Confirmed from code — /v1/academic/cbt/exams/:param/transition @ src/services/cbt/examService.js:101 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:308; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15; Confirmed from code — /v1/academic/cbt/exams/options/students @ src/services/cbt/examService.js:383 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:123; Confirmed from code — /v1/academic/cbt/exams/:param/participants/list @ src/services/cbt/examService.js:175 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:379; Confirmed from code — /v1/academic/cbt/exams/:param/participants/save @ src/services/cbt/examService.js:189 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:410; Confirmed from code — /v1/academic/cbt/exams/:param/participants/import @ src/services/cbt/examService.js:203 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:435; Confirmed from code — /v1/academic/cbt/exams/:param/participants/:param/status @ src/services/cbt/examService.js:217 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:601; Confirmed from code — /v1/academic/cbt/exams/:param/participants/:param/delete @ src/services/cbt/examService.js:231 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:630; Confirmed from code — /v1/academic/cbt/exams/:param/staff/save @ src/services/cbt/examService.js:289 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_staff_api.py:54; Confirmed from code — /v1/academic/cbt/exams/options/staff-users @ src/services/cbt/examService.js:397 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:154; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability academics.cbt_exams.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route examId, tab; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field question_set_id, student_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/:param/attendees/:param/remove, /v1/academic/cbt/exams/:param/save, /v1/academic/cbt/exams/:param/participants/save, /v1/academic/cbt/exams/:param/participants/import, /v1/academic/cbt/exams/:param/participants/:param/delete, /v1/academic/cbt/exams/:param/staff/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?, /admin/spmb/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTExamAnalytics /faculty/cbt/exams/:examId/analytics src/views/ExamManagement/Faculty/Exam/CBTExamAnalytics.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CBTExamAnalytics pada /faculty/cbt/exams/:examId/analytics; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterEasy, filterMedium, filterHard; kolom=Peserta, Kode, Tipe, Status, Attempt, Flags, Nilai, No, Soal, Dijawab, +3 lainnya; filter=filterEasy, filterMedium, filterHard; sinyal validasi=min/max; aturan field=filterEasy: type=checkbox, filterMedium: type=checkbox, filterHard: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Akses Ditolak Confirmed from code — goBack, handleExport Confirmed from code — /v1/academic/cbt/results/exams/:param/analytics @ src/services/cbt/examService.js:418 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:16; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15 Confirmed from code — sesi autentik; capability academics.cbt_exams.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/analytics, /admin/spmb/cbt/exams/:examId/analytics P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTGradingWorkspace /faculty/cbt/exams/:examId/grading/:attemptId src/views/ExamManagement/Faculty/Exam/GradingWorkspace.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CBTGradingWorkspace pada /faculty/cbt/exams/:examId/grading/:attemptId; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=essayFilter, answer.points_earned, answer.grader_comment, Tambahkan komentar..., Nilai, Komentar (opsional); filter=essayFilter; sinyal validasi=min/max, custom validate; aturan field=essayFilter: type=checkbox, answer.points_earned: min=0, max=answer.question_points, type=number, answer.grader_comment: type=text; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — goBack, saveAllScores, finalizeGrading, prevEssay, nextEssay, openRubricBuilder, openRegradeModal, saveScore Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/cbt/gradingService.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.cbt_exams.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route examId, attemptId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/grading/:attemptId, /admin/spmb/cbt/exams/:examId/grading/:attemptId P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Laporan Integritas Ujian /faculty/cbt/exams/:examId/integrity-report src/views/ExamManagement/Faculty/Exam/CBTIntegrityReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Integritas Ujian pada /faculty/cbt/exams/:examId/integrity-report; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.integrity_status, filters.flag_type, searchQuery, Status Integritas, Tipe Flag; kolom=Peserta, Status, Total Flags, Flags, Aksi; filter=filters.integrity_status, filters.flag_type, searchQuery, Status Integritas; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Clean, Flagged, Blocked, Tab Switch, Copy-Paste, Multi-Login, Pola Mencurigakan, Error, Export Dibatasi Confirmed from code — handleExportXlsx, loadIntegrityReport, viewParticipantDetail, set showDetailModal Confirmed from code — /v1/academic/cbt/results/exams/:param/integrity @ src/services/cbt/examService.js:437 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:114; Confirmed from code — /v1/academic/cbt/results/exams/:param/integrity.xlsx @ src/services/cbt/examService.js:483 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:144; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189 Confirmed from code — sesi autentik; capability academics.cbt_exams.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/integrity-report, /admin/spmb/cbt/exams/:examId/integrity-report P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Analisis Butir Soal /faculty/cbt/exams/:examId/item-analysis src/views/ExamManagement/Faculty/Exam/CBTItemAnalysis.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Analisis Butir Soal pada /faculty/cbt/exams/:examId/item-analysis; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.difficulty_level, filters.discrimination_level, filters.quality, Tingkat Kesulitan, Daya Beda, Kualitas Soal; kolom=No, Soal, Difficulty Index, Discrimination Index, Kualitas, Rekomendasi; filter=filters.difficulty_level, filters.discrimination_level, filters.quality; Inferred from code — option/status/display-label candidates=Mudah (71-100%), Sukar (0-30%), Baik (> 0.40), Cukup (0.20-0.40), Buruk (< 0.20), Excellent, Good, Fair, Poor, Error, +1 lainnya Confirmed from code — handleExportXlsx, loadAnalysis, markQuestionForRevision, setQuestionReviewStatus Confirmed from code — /v1/academic/cbt/question-bank/questions/update @ src/services/cbt/questionService.js:98 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:736; Confirmed from code — /v1/academic/cbt/results/exams/:param/analytics @ src/services/cbt/examService.js:418 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:16; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15 Confirmed from code — sesi autentik; capability academics.cbt_exams.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/questions/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/item-analysis, /admin/spmb/cbt/exams/:examId/item-analysis P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik faculty-dashboard /faculty/dashboard src/views/FacultyViews/TeacherDashboard.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-dashboard pada /faculty/dashboard; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — fetchDashboardData, router.push, set selectedUnitFilter, actionGoToAttendance, actionGoToJournal, closeActionModal Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useDashboardLoader.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.dashboard.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/attendance, /faculty/homeroom, /faculty/schedule, /faculty/student-timeline, /faculty/assignments/:id/grading, /faculty/attendance/sheet/:id P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik teacher-digital-learning-hub /faculty/digital-learning src/views/FacultyViews/TeacherSectionHub.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman teacher-digital-learning-hub pada /faculty/digital-learning; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/assessment, /faculty/hr, /faculty/student-affairs, /faculty/teaching P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik ExamResultsReport /faculty/exam-results/:examId src/views/ExamManagement/Faculty/ExamResultsReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman ExamResultsReport pada /faculty/exam-results/:examId; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=sortBy; kolom=No, Nama, Kelas, Skor PG, Skor Essay, Total, Status; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=0-20, 21-40, 41-60, 61-80, 81-100, Grading, Gradebook, eRapor, Akses Ditolak, Error Confirmed from code — exportReport, exportExcel, exportPdf, publishToGradebook Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/audit/audit.service.js, src/services/auth/auth.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.exam_results.view; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/academics/exam-results P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik exam-detail /faculty/exam/detail/:id src/views/AssignmentManagement/Faculty/components/ExamDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman exam-detail pada /faculty/exam/detail/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.subject_id, form.question_set_id, form.cbt_duration, form.grade_component_type, form.grade_component_weight, form.auto_publish_to_gradebook, form.exam_code, form.total_marks, form.start_time, form.end_time, form.min_marks, +14 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.name: required, form.subject_id: required, form.cbt_duration: type=number, form.grade_component_type: required, form.grade_component_weight: type=number, form.auto_publish_to_gradebook: type=checkbox, form.exam_code: required, form.total_marks: required, type=number, form.start_time: type=datetime-local, form.end_time: type=datetime-local, +2 lainnya; Inferred from code — option/status/display-label candidates=Publikasi, PH - Penilaian Harian, PTS - Penilaian Tengah Semester, PAS - Penilaian Akhir Semester Confirmed from code — handleClose, submitForm, goBackToExamList, fetchExamDetail, scheduleExam, finishExam, set showEditModal, set showDeleteConfirm, deleteExam Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279; Confirmed from code — /v1/academic/cbt/exams/options/subjects @ src/services/cbt/examService.js:319 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:63; Confirmed from code — /v1/academic/cbt/exams/:param/save @ src/services/cbt/examService.js:59 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:172; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/list @ src/services/cbt/examService.js:117 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:15; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/:param/marks @ src/services/cbt/examService.js:131 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:46; Confirmed from code — /v1/academic/cbt/exams/:param/delete @ src/services/cbt/examService.js:73 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:252; Confirmed from code — /v1/academic/cbt/exams/:param/get @ src/services/cbt/examService.js:31 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:105; Confirmed from code — /v1/academic/cbt/exams/:param/transition @ src/services/cbt/examService.js:101 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:308 Confirmed from code — sesi autentik; capability academics.assignments.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route id; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field subject_id, question_set_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/:param/save, /v1/academic/cbt/exams/:param/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments?tab=exams, /faculty/assignments P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik FacultyCourseAnalytics /faculty/lms/analytics src/views/LearningManagement/Faculty/CourseAnalytics.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyCourseAnalytics pada /faculty/lms/analytics; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedCourseId; filter=selectedCourseId; sinyal validasi=min/max Confirmed from code — router.back, fetchAnalytics Confirmed from code — /lms/courses/:param/analytics @ src/views/LearningManagement/Faculty/CourseAnalytics.vue:61; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/lms/analytics/:courseId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik FacultyCourseAnalyticsDetail /faculty/lms/analytics/:courseId src/views/LearningManagement/Faculty/CourseAnalytics.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyCourseAnalyticsDetail pada /faculty/lms/analytics/:courseId; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedCourseId; filter=selectedCourseId; sinyal validasi=min/max Confirmed from code — router.back, fetchAnalytics Confirmed from code — /lms/courses/:param/analytics @ src/views/LearningManagement/Faculty/CourseAnalytics.vue:61; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route courseId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/lms/analytics P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik FacultyCourseDetail /faculty/lms/course/:batchId/:subjectId src/views/LearningManagement/Faculty/CourseDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyCourseDetail pada /faculty/lms/course/:batchId/:subjectId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, attendanceDate, selectedAttendanceSessionId, row.status, row.remark, Tanpa sesi spesifik; kolom=Rate; filter=attendanceDate, row.status; aturan field=attendanceDate: type=date; Inferred from code — option/status/display-label candidates=Pertemuan, Materi, Tugas, Modul Ajar, Diskusi, Pesan Ortu, Tanpa sesi spesifik, Terlambat Confirmed from code — router.back, router.push, refreshData, openMaterialModal, downloadMaterial, goToCreateAssignment, goToAssignmentGrading, goToTeachingModuleDetail, loadAttendanceRoster, saveAttendanceMarks Confirmed from code — /lms/courses/:param/attendance-summary @ src/services/lms/attendance.service.js:12; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/attendance/roster @ src/services/lms/attendance.service.js:30; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/attendance/mark @ src/services/lms/attendance.service.js:41; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route batchId, subjectId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/courses/:param/attendance/mark; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments, /faculty/assignments/:id/grading, /faculty/lms/course/:courseId/modul-ajar/:moduleId, /faculty/lms/course/:courseOfferingId P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Bulk Publish Konten /faculty/lms/course/:courseId/bulk-publish src/views/LearningManagement/Faculty/BulkContentPublish.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Bulk Publish Konten pada /faculty/lms/course/:courseId/bulk-publish; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Draft, Published Confirmed from code — router.back, fetchItems, toggleAll, set visibilityFilter, bulkSetVisibility, toggleItem Confirmed from code — /lms/courses/:param/items @ src/views/LearningManagement/Faculty/BulkContentPublish.vue:81; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/items/bulk-publish @ src/views/LearningManagement/Faculty/BulkContentPublish.vue:95; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route courseId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik FacultyCourseLeaderboard /faculty/lms/course/:courseId/leaderboard src/views/LearningManagement/Faculty/CourseLeaderboard.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyCourseLeaderboard pada /faculty/lms/course/:courseId/leaderboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back, toggleLeaderboard, fetchLeaderboard Confirmed from code — /lms/courses/:param/leaderboard @ src/views/LearningManagement/Faculty/CourseLeaderboard.vue:52; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/leaderboard/toggle @ src/views/LearningManagement/Faculty/CourseLeaderboard.vue:64; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route courseId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik FacultyTeachingModuleDetail /faculty/lms/course/:courseId/modul-ajar/:moduleId src/views/LearningManagement/Faculty/TeachingModuleDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyTeachingModuleDetail pada /faculty/lms/course/:courseId/modul-ajar/:moduleId; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — router.back, router.push, loadModule, downloadAttachment Missing or unclear — /lms/teaching-modules/:param @ src/services/lms/teachingModule.service.js:66; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route courseId, moduleId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik FacultyCourseDetailByOffering /faculty/lms/course/:courseOfferingId src/views/LearningManagement/Faculty/CourseDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyCourseDetailByOffering pada /faculty/lms/course/:courseOfferingId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, attendanceDate, selectedAttendanceSessionId, row.status, row.remark, Tanpa sesi spesifik; kolom=Rate; filter=attendanceDate, row.status; aturan field=attendanceDate: type=date; Inferred from code — option/status/display-label candidates=Pertemuan, Materi, Tugas, Modul Ajar, Diskusi, Pesan Ortu, Tanpa sesi spesifik, Terlambat Confirmed from code — router.back, router.push, refreshData, openMaterialModal, downloadMaterial, goToCreateAssignment, goToAssignmentGrading, goToTeachingModuleDetail, loadAttendanceRoster, saveAttendanceMarks Confirmed from code — /lms/courses/:param/attendance-summary @ src/services/lms/attendance.service.js:12; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/attendance/roster @ src/services/lms/attendance.service.js:30; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/attendance/mark @ src/services/lms/attendance.service.js:41; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; parameter route courseOfferingId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/courses/:param/attendance/mark; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments, /faculty/assignments/:id/grading, /faculty/lms/course/:courseId/modul-ajar/:moduleId, /faculty/lms/course/:batchId/:subjectId P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Antrian Enrolmen /faculty/lms/enrollments src/views/LearningManagement/Faculty/EnrollmentQueue.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Antrian Enrolmen pada /faculty/lms/enrollments; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=stateFilter, search, bulkNote, decisionNotes[item.id], Tambahkan catatan keputusan (opsional); filter=stateFilter, search; aturan field=search: type=search, field: type=checkbox; Inferred from code — option/status/display-label candidates=Requested, Approved, Rejected, Withdrawn Confirmed from code — router.back, fetchEnrollments, toggleSelectAll, bulkAction, toggleSelect, updateState Confirmed from code — /lms/enrollments @ src/services/lms/enrollment.service.js:4; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/enrollments/:param @ src/services/lms/enrollment.service.js:14; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/enrollments/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTQuestionSetDetail /faculty/question-bank/:setId src/views/ExamManagement/Faculty/QuestionBank/CBTQuestionSetDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CBTQuestionSetDetail pada /faculty/question-bank/:setId; tujuan diringkas dari aksi interaktif Confirmed from code — field=importModal.continueOnError, File Import; aturan field=field: type=file; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goToAddQuestion, openImportModal, downloadQtiExport, downloadImportTemplate, goToEditQuestion, handleImportFileChange, closeImportModal, submitImport Confirmed from code — /v1/academic/cbt/question-bank/sets/get @ src/services/cbt/questionService.js:33 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:321; Confirmed from code — /v1/academic/cbt/question-bank/questions/import @ src/services/cbt/questionService.js:199 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:850; Confirmed from code — /v1/academic/cbt/question-bank/questions/list @ src/services/cbt/questionService.js:71 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:578 Confirmed from code — sesi autentik; capability academics.question_bank.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route setId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/questions/import; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTQuestionEdit /faculty/question-bank/:setId/question/:questionId src/views/ExamManagement/Faculty/QuestionBank/CBTQuestionForm.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CBTQuestionEdit pada /faculty/question-bank/:setId/question/:questionId; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.question_type, form.difficulty, form.review_status, form.points, form.course_id, form.chapter_id, form.learning_objective_code, form.learning_outcome_code, form.cognitive_level, form.grade_phase_code, form.tags, form.content, +18 lainnya; filter=form.review_status, form.course_id; sinyal validasi=required, min/max, custom validate; aturan field=form.question_type: required, form.points: type=number, form.short_answer_key: required, form.short_answer_similarity_threshold: min=0, max=1, type=number, form.essay_auto_grading_threshold: min=0, max=1, type=number, choice.is_correct: type=checkbox, field: type=radio, field: type=file, asset.decorative: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — handleSave, set showRubricBuilder, addChoice, setCorrectAnswer, removeChoice, addAsset, removeAsset, setAssetSourceType, handleAssetFileChange, goBack Confirmed from code — /v1/academic/cbt/question-bank/questions/save @ src/services/cbt/questionService.js:89 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:651; Confirmed from code — /v1/academic/cbt/question-bank/options/tags/save @ src/services/cbt/questionService.js:159 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1235; Confirmed from code — /v1/academic/cbt/question-bank/questions/get @ src/services/cbt/questionService.js:80 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:630; Confirmed from code — /v1/academic/cbt/question-bank/sets/get @ src/services/cbt/questionService.js:33 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:321; Confirmed from code — /v1/academic/cbt/question-bank/options/chapters @ src/services/cbt/questionService.js:134 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1180; Confirmed from code — /v1/academic/cbt/question-bank/options/courses @ src/services/cbt/questionService.js:125 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1151; Confirmed from code — /v1/academic/cbt/question-bank/options/tags @ src/services/cbt/questionService.js:150 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1213; Confirmed from code — /v1/academic/cbt/question-bank/questions/update @ src/services/cbt/questionService.js:98 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:736 Confirmed from code — sesi autentik; capability academics.question_bank.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route setId, questionId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field course_id, chapter_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/questions/save, /v1/academic/cbt/question-bank/options/tags/save, /v1/academic/cbt/question-bank/questions/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/question-bank/:setId/question/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTQuestionCreate /faculty/question-bank/:setId/question/new src/views/ExamManagement/Faculty/QuestionBank/CBTQuestionForm.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CBTQuestionCreate pada /faculty/question-bank/:setId/question/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.question_type, form.difficulty, form.review_status, form.points, form.course_id, form.chapter_id, form.learning_objective_code, form.learning_outcome_code, form.cognitive_level, form.grade_phase_code, form.tags, form.content, +18 lainnya; filter=form.review_status, form.course_id; sinyal validasi=required, min/max, custom validate; aturan field=form.question_type: required, form.points: type=number, form.short_answer_key: required, form.short_answer_similarity_threshold: min=0, max=1, type=number, form.essay_auto_grading_threshold: min=0, max=1, type=number, choice.is_correct: type=checkbox, field: type=radio, field: type=file, asset.decorative: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — handleSave, set showRubricBuilder, addChoice, setCorrectAnswer, removeChoice, addAsset, removeAsset, setAssetSourceType, handleAssetFileChange, goBack Confirmed from code — /v1/academic/cbt/question-bank/questions/save @ src/services/cbt/questionService.js:89 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:651; Confirmed from code — /v1/academic/cbt/question-bank/options/tags/save @ src/services/cbt/questionService.js:159 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1235; Confirmed from code — /v1/academic/cbt/question-bank/questions/get @ src/services/cbt/questionService.js:80 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:630; Confirmed from code — /v1/academic/cbt/question-bank/sets/get @ src/services/cbt/questionService.js:33 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:321; Confirmed from code — /v1/academic/cbt/question-bank/options/chapters @ src/services/cbt/questionService.js:134 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1180; Confirmed from code — /v1/academic/cbt/question-bank/options/courses @ src/services/cbt/questionService.js:125 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1151; Confirmed from code — /v1/academic/cbt/question-bank/options/tags @ src/services/cbt/questionService.js:150 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1213; Confirmed from code — /v1/academic/cbt/question-bank/questions/update @ src/services/cbt/questionService.js:98 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:736 Confirmed from code — sesi autentik; capability academics.question_bank.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; parameter route setId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field course_id, chapter_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/questions/save, /v1/academic/cbt/question-bank/options/tags/save, /v1/academic/cbt/question-bank/questions/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/question-bank/:setId/question/:questionId P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik faculty-teaching-hub /faculty/teaching src/views/FacultyViews/TeacherSectionHub.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-teaching-hub pada /faculty/teaching; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/assessment, /faculty/digital-learning, /faculty/hr, /faculty/student-affairs P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik grade-levels /grade-levels src/views/AdminViews/AcademicConfig/GradeLevel/GradeLevelList.vue:1 Inferred from code — admin, school_admin, principal, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.grade_level.view; izin sesi backend dapat berbeda Inferred from code — halaman grade-levels pada /grade-levels; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedCourses, form.name, form.code, form.evaluation_type, subjectSearchQuery, form.subject_ids, form.active, Kode Tingkatan, Tipe Evaluasi *, Mata Pelajaran, Status; filter=selectedCourses, subjectSearchQuery, Status; sinyal validasi=required, custom validate; aturan field=form.name: required, form.code: required, subjectSearchQuery: type=text, form.subject_ids: type=checkbox, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Akses Ditolak, Error, Sukses Confirmed from code — openAddModal, openDetailModal, openEditModal, confirmDelete, handleSubmit, closeDetailModal, handleDeleteConfirm Confirmed from code — /api/v1/academic/grade-levels/delete @ src/services/admin/academics/academicMaster.service.js:57 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:353; Confirmed from code — /api/v1/academic/grade-levels/save @ src/services/admin/academics/academicMaster.service.js:49 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:333; Confirmed from code — /api/v1/academic/subjects/list @ src/services/admin/academics/academicMaster.service.js:65 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:385; Confirmed from code — /api/v1/academic/grade-levels/list @ src/services/admin/academics/academicMaster.service.js:44 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:323 Confirmed from code — sesi autentik; capability academics.grade_level.view; Inferred from code — data prerequisite: referenced records dari field subject_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/grade-levels/delete, /api/v1/academic/grade-levels/save, /api/v1/academic/grade-levels/list; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik Modul Ajar /modul-ajar src/views/AdminViews/AcademicConfig/ModulAjar/ModulAjarList.vue:1 Inferred from code — admin, school_admin, principal, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.curriculum.view; izin sesi backend dapat berbeda Inferred from code — halaman Modul Ajar pada /modul-ajar; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=search, stateFilter, form.name, form.subject_id, form.course_id, form.phase, form.hours_allocated, form.learning_objectives, form.trigger_questions, form.activity_steps, form.assessment_plan, Pendahuluan, Inti, Penutup..., +8 lainnya; filter=search, stateFilter, form.course_id; sinyal validasi=min/max; aturan field=search: type=text, form.name: type=text, form.hours_allocated: min=1, type=number Confirmed from code — openCreateModal, editModul, publishModul, deleteModul, set showModal, saveModul Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.curriculum.view; Inferred from code — data prerequisite: referenced records dari field subject_id, course_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik Kurikulum /principal/academics/curriculum src/views/Principal/PrincipalCurriculum.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Kurikulum pada /principal/academics/curriculum; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterYear, filterStatus, Contoh: 2024/2025, Tahun Ajaran; kolom=SKS; filter=filterYear, filterStatus; aturan field=filterYear: type=text Confirmed from code — &#10005;, openDetail, closeDetail Confirmed from code — /v1/principal/curriculum @ src/services/principal/principalCurriculum.service.js:4 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_academic_api.py:857; Missing or unclear — /v1/principal/curriculum/:param @ src/services/principal/principalCurriculum.service.js:8; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.curriculum.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik principal-exam-results /principal/academics/exam-results src/views/ExamManagement/Faculty/ExamResultsReport.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-exam-results pada /principal/academics/exam-results; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=sortBy; kolom=No, Nama, Kelas, Skor PG, Skor Essay, Total, Status; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=0-20, 21-40, 41-60, 61-80, 81-100, Grading, Gradebook, eRapor, Akses Ditolak, Error Confirmed from code — exportReport, exportExcel, exportPdf, publishToGradebook Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/audit/audit.service.js, src/services/auth/auth.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.exam_results.view; allowedRoles principal; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/exam-results/:examId P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Mata Pelajaran /principal/academics/subjects src/views/Principal/PrincipalSubjects.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Mata Pelajaran pada /principal/academics/subjects; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, filterLevel, filterSemester, filterStatus, Contoh: X, XI, XII, Tingkat, Semester; kolom=Tingkat, SKS, Pengajar, Rata-rata; filter=searchTerm, filterLevel, filterSemester, filterStatus; sinyal validasi=min/max; aturan field=searchTerm: type=text, filterLevel: type=text, filterSemester: type=text Confirmed from code — Refresh, &#10005;, refreshData, openDetail, changePage, closeDetail Confirmed from code — /v1/principal/subjects @ src/services/principal/principalSubject.service.js:4 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_academic_api.py:300; Missing or unclear — /v1/principal/subjects/:param @ src/services/principal/principalSubject.service.js:8; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.subject.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik Tambah Jam Pelajaran /schedule-slots/create src/views/AdminViews/ScheduleConfig/TambahJamPel.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.schedule_slot.manage; izin sesi backend dapat berbeda Inferred from code — halaman Tambah Jam Pelajaran pada /schedule-slots/create; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedProfileId, jumlahJam, jam.code, jam.mulai, jam.akhir, showOverlapDialog, Jumlah Jam Pelajaran, Masukkan jumlah jam pelajaran, e.g 3, JP${index + 1}, Profil Jam Pelajaran *, Detail Jam Pelajaran; kolom=Kode Jam, Jam Mulai, Jam Selesai; sinyal validasi=required, min/max; aturan field=jumlahJam: required, min=1, type=number, jam.code: type=text, jam.mulai: type=time, jam.akhir: type=time; Inferred from code — option/status/display-label candidates=Akses Ditolak, Validasi Gagal, Error Confirmed from code — router.push, handleSave, saveWithForce Confirmed from code — /api/v1/academic/lesson-hours/save @ src/services/admin/academics/academicMaster.service.js:182 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1983; Confirmed from code — /api/v1/academic/lesson-hour-profiles/ensure-default @ src/services/admin/academics/academicMaster.service.js:218 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1921; Confirmed from code — /api/v1/academic/lesson-hour-profiles/list @ src/services/admin/academics/academicMaster.service.js:198 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1754 Confirmed from code — sesi autentik; capability academics.schedule_slot.manage; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/lesson-hours/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /schedule-slots P1 — mutasi data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Akademik AssignmentDetailStudent /student/assignment/:id src/views/AssignmentManagement/Student/AssignmentDetail.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman AssignmentDetailStudent pada /student/assignment/:id; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1 Confirmed from code — Kembali ke daftar tugas, router.push, set activeTab Confirmed from code — /lms/items/:param/my-submission @ src/services/lms/lmsSubmission.service.js:22; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/courses @ src/services/lms/assignment.service.js:249 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_api.py:90 Confirmed from code — sesi autentik; capability academics.assignments.view; allowedRoles student, alumni; feature flag scola_lms; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/assignment P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik CBTRunner /student/cbt/runner/:exam_id src/views/ExamManagement/Student/CBTRunner.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman CBTRunner pada /student/cbt/runner/:exam_id; tujuan diringkas dari aksi interaktif Confirmed from code — field=answers[currentQuestion.id], Tuliskan jawaban lengkap Anda di sini...; sinyal validasi=required; aturan field=answers[currentQuestion.id]: type=radio, answers[currentQuestion.id]: type=checkbox; Inferred from code — option/status/display-label candidates=Tindakan Dilarang Confirmed from code — redirectAfterFeatureDisabled, redirectAfterSebRequired, redirectAfterInitFailure, confirmFinish, goToQuestion, toggleQuestionFlag, handleAnswerChange, prevQuestion, nextQuestion, submitExam, enterFullscreen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/cbt/useExamState.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/cbt/cbtEventSchema.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.cbt_exams.sit; allowedRoles student, alumni; feature flag scola_cbt; parameter route exam_id; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /cbt/public, /spmb/cbt, /student/cbt, /cbt/public/runner/:exam_id, /spmb/cbt/runner/:exam_id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik student-learning-hub /student/learning src/views/StudentViews/StudentSectionHub.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-learning-hub pada /student/learning; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles student, alumni; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /student/extras, /student/grades, /student/student-life, /student/today P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik StudentCourseDetail /student/lms/course/:batchId/:subjectId src/views/LearningManagement/Student/CourseDetail.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentCourseDetail pada /student/lms/course/:batchId/:subjectId; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab; Inferred from code — option/status/display-label candidates=Pertemuan, Materi, Tugas, Konten, Diskusi Confirmed from code — router.back, router.push, refreshData, openMaterialModal, downloadMaterial, goToAssignmentDetail Confirmed from code — /lms/courses/:param/items @ src/views/LearningManagement/Student/CourseDetail.vue:380; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/attendance-summary @ src/services/lms/attendance.service.js:12; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.self.view; allowedRoles student, alumni; feature flag scola_lms; parameter route batchId, subjectId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/assignment/:id, /student/lms/course/:courseOfferingId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik StudentCourseLeaderboard /student/lms/course/:courseId/leaderboard src/views/LearningManagement/Student/CourseLeaderboard.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentCourseLeaderboard pada /student/lms/course/:courseId/leaderboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back, fetchLeaderboard Confirmed from code — /lms/courses/:param/leaderboard @ src/views/LearningManagement/Student/CourseLeaderboard.vue:49; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.self.view; allowedRoles student, alumni; feature flag scola_lms; parameter route courseId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik StudentCourseDetailByOffering /student/lms/course/:courseOfferingId src/views/LearningManagement/Student/CourseDetail.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentCourseDetailByOffering pada /student/lms/course/:courseOfferingId; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab; Inferred from code — option/status/display-label candidates=Pertemuan, Materi, Tugas, Konten, Diskusi Confirmed from code — router.back, router.push, refreshData, openMaterialModal, downloadMaterial, goToAssignmentDetail Confirmed from code — /lms/courses/:param/items @ src/views/LearningManagement/Student/CourseDetail.vue:380; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/attendance-summary @ src/services/lms/attendance.service.js:12; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.self.view; allowedRoles student, alumni; feature flag scola_lms; parameter route courseOfferingId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/assignment/:id, /student/lms/course/:batchId/:subjectId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akademik study-group-detail /study-groups/:id src/views/AdminViews/AcademicConfig/StudyGroup/StudyGroupDetail.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman study-group-detail pada /study-groups/:id; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedReligions, row.subject_id, row.faculty_search, row.faculty_id, schedule.dayIndex, schedule.lessonHourStartId, schedule.lessonHourEndId, schedule.startDate, schedule.endDate, search, selectedIds, studentSearch, +3 lainnya; kolom=Pilih, Agama, Siswa, Nama pecahan, Status, Pecahan, Mapel Agama, Guru, Nama Siswa, NISN, +2 lainnya; filter=row.faculty_search, schedule.startDate, schedule.endDate, search, studentSearch; aturan field=selectedReligions: type=checkbox, row.faculty_search: type=text, schedule.startDate: type=date, schedule.endDate: type=date, search: type=text, field: type=checkbox, selectedIds: type=checkbox, studentSearch: type=text; Inferred from code — option/status/display-label candidates=Jadwal, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu, Error, Peringatan, +4 lainnya Confirmed from code — onPrimary, onLessonStartChange, emitClose, onSync, toggleAllFiltered, onSave, set showParallelWizard, set showMembersModal, exportToExcel Confirmed from code — /api/v1/academic/study-groups/create-parallel @ src/services/admin/academics/academicMaster.service.js:127 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1092; Confirmed from code — /api/v1/academic/study-groups/parallel-preview @ src/services/admin/academics/academicMaster.service.js:120 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1077; Confirmed from code — /api/v1/academic/lesson-hours/list @ src/services/admin/academics/academicMaster.service.js:177 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1947; Confirmed from code — /api/v1/academic/study-groups/assign-parallel-teachers @ src/services/admin/academics/academicMaster.service.js:145 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1357; Confirmed from code — /api/v1/academic/study-groups/schedule-parallel @ src/services/admin/academics/academicMaster.service.js:163 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1512; Confirmed from code — /api/v1/academic/study-groups/parallel-members @ src/services/admin/academics/academicMaster.service.js:136 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1299 Confirmed from code — sesi autentik; capability academics.class_group.view; parameter route id; Inferred from code — data prerequisite: referenced records dari field subject_id, faculty_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/study-groups/create-parallel, /api/v1/academic/study-groups/assign-parallel-teachers; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

Akuntansi (38 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Akuntansi accounting-assets-create /accounting/assets/create src/views/AccountingManagement/AssetDepreciation/AssetCreate.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman accounting-assets-create pada /accounting/assets/create; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.name, form.code, form.category_id, form.date, form.original_value, form.salvage_value, form.method, form.method_number, form.method_period, Nama Aset, Contoh: Laptop Dell Latitude 5540, Kode Aset, +7 lainnya; filter=form.date, form.method_period, Jumlah Periode Depresiasi; sinyal validasi=required; aturan field=form.name: required, form.date: required, type=date, form.original_value: required, type=number, form.salvage_value: type=number, form.method_number: type=number; Inferred from code — option/status/display-label candidates=Garis Lurus (Straight Line), Saldo Menurun (Declining Balance), Bulanan, Tahunan, Validasi Confirmed from code — router.back, handleSave Confirmed from code — /api/v1/accounting/asset-depreciations/categories/list @ src/services/accounting/asset-depreciation.service.js:42 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_asset_depreciations_api.py:105; Confirmed from code — /api/v1/accounting/asset-depreciations/assets/save @ src/services/accounting/asset-depreciation.service.js:17 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_asset_depreciations_api.py:64 Confirmed from code — sesi autentik; capability accounting.assets.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field category_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/asset-depreciations/assets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi bank-reconciliation-detail /accounting/bank-reconciliation/:id src/views/AccountingManagement/BankReconciliation/BankReconciliationDetail.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman bank-reconciliation-detail pada /accounting/bank-reconciliation/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Date, Description, Reference, Action, Matched With; sinyal validasi=custom validate Confirmed from code — ← Back to Reconciliations, Auto Reconcile, Validate, Match, Unmatch, Back to Reconciliations, Close, goBack, autoReconcile, validate, openMatchModal, unmatch, matchManual, set showMatchModal Confirmed from code — /api/v1/accounting/bank-reconciliation/action @ src/services/accounting/bank-reconciliation.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:263; Confirmed from code — /api/v1/accounting/bank-reconciliation/detail @ src/services/accounting/bank-reconciliation.service.js:28 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:227; Confirmed from code — /api/v1/accounting/bank-reconciliation/statement-line/action @ src/services/accounting/bank-reconciliation.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:284; Confirmed from code — /api/v1/accounting/bank-reconciliation/unmatched-entries @ src/services/accounting/bank-reconciliation.service.js:97 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:314 Confirmed from code — sesi autentik; capability accounting.bank.reconcile; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/bank-reconciliation P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Dana BOS /accounting/bos-fund src/views/AccountingManagement/BosFund/BosFundList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Dana BOS pada /accounting/bos-fund; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterYear, createForm.fiscal_year, createForm.period_name, createForm.date_from, createForm.date_to, createForm.total_students, createForm.bos_per_student, line.allocated_amount, 2025/2026, Rp, Tahun Ajaran *, Periode *, +4 lainnya; kolom=BOS Diterima, Dialokasikan, Realisasi, Komponen, Anggaran, Selisih; filter=filterYear, createForm.period_name, createForm.date_from, createForm.date_to, Periode *; sinyal validasi=min/max; aturan field=filterYear: type=text, createForm.fiscal_year: type=text, createForm.date_from: type=date, createForm.date_to: type=date, createForm.total_students: min=0, type=number, createForm.bos_per_student: min=0, type=number, line.allocated_amount: min=0, type=number Confirmed from code — Tutup, Batal, Simpan, openCreateModal, viewDetail, confirmAlloc, approveAlloc, set showDetail, set showCreate, submitCreate Confirmed from code — /api/v1/bos/allocations/:param/approve @ src/services/finance/bosFund.service.js:39 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/bos_fund_api.py:200; Missing or unclear — /api/v1/bos/allocations:param @ src/services/finance/bosFund.service.js:11; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Missing or unclear — /api/v1/bos/allocations/:param @ src/services/finance/bosFund.service.js:16; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/bos/components @ src/services/finance/bosFund.service.js:5 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/bos_fund_api.py:39; Confirmed from code — /api/v1/bos/allocations/:param/confirm @ src/services/finance/bosFund.service.js:30 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/bos_fund_api.py:185; Confirmed from code — /api/v1/bos/allocations @ src/services/finance/bosFund.service.js:21 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/bos_fund_api.py:64 Confirmed from code — sesi autentik; capability accounting.reports.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_bos_rkas; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/bos/allocations/:param/approve, /api/v1/bos/allocations/:param/confirm; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi budget-detail /accounting/budget/:id src/views/AccountingManagement/Budget/BudgetDetail.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman budget-detail pada /accounting/budget/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=rejectionReason, Please provide reason for rejection..., Rejection Reason *; kolom=Account, Planned, Actual, Available, Variance Confirmed from code — Submit for Approval, Approve, Reject, Activate, Close, Back, Cancel, Reject Budget, router.push, handleSubmit, handleApprove, set showRejectModal, handleActivate, handleClose, +2 lainnya Confirmed from code — /api/v1/accounting/budget/action @ src/services/accounting/budget.service.js:59 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:142; Confirmed from code — /api/v1/accounting/budget/detail @ src/services/accounting/budget.service.js:28 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:85 Confirmed from code — sesi autentik; capability accounting.budget.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_bos_rkas; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi budget-edit /accounting/budget/:id/edit src/views/AccountingManagement/Budget/BudgetForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman budget-edit pada /accounting/budget/:id/edit; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.code, formData.fiscal_year_id, formData.department_id, formData.date_from, formData.date_to, newLine.account_id, newLine.planned_amount, newLine.notes, formData.approver_ids, formData.notes, Contoh: Anggaran Operasional 2026, +12 lainnya; kolom=Akun, Direncanakan, Catatan, Aksi; filter=formData.date_from, formData.date_to; sinyal validasi=required, min/max; aturan field=formData.name: required, type=text, formData.code: required, type=text, formData.fiscal_year_id: required, formData.date_from: required, type=date, formData.date_to: required, type=date, newLine.planned_amount: min=0, type=number, newLine.notes: type=text Confirmed from code — goBack, handleSubmit, addBudgetLine, removeBudgetLine Confirmed from code — /api/v1/accounting/budget/save @ src/services/accounting/budget.service.js:35 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:115; Confirmed from code — /api/v1/accounting/budget/detail @ src/services/accounting/budget.service.js:28 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:85 Confirmed from code — sesi autentik; capability accounting.budget.edit; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_bos_rkas; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field fiscal_year_id, department_id, account_id, approver_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/budget/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/budget, /accounting/budget/create P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Informasi Dasar /accounting/configuration/coa/:id/edit src/views/AccountingManagement/Configuration/coa/COAForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Informasi Dasar pada /accounting/configuration/coa/:id/edit; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.code, form.name, form.type, form.parent_id, form.tax_ids, form.tags, form.reconcile, form.deprecated, Kode Akun, eg. 1000, Nama Akun, eg. Kas, +6 lainnya; sinyal validasi=required, custom validate; aturan field=form.code: required, form.name: required, form.type: type=radio, form.reconcile: type=checkbox, form.deprecated: type=checkbox; Inferred from code — option/status/display-label candidates=No Default Tax, PPN 10%, PPN 11%, PPh 23 (2%), Receivable, Bank and Cash, Current Assets, Non-current Assets, Prepayments, Fixed Assets, +12 lainnya Confirmed from code — handleSubmit, handleCancel Confirmed from code — /api/v1/accounting/accounts/detail @ src/services/admin/accountingAdmin.service.js:146 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:313; Confirmed from code — /api/v1/accounting/accounts/save @ src/services/admin/accountingAdmin.service.js:154 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:323; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291 Confirmed from code — sesi autentik; capability accounting.chart_of_accounts.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field parent_id, tax_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/accounts/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/configuration/coa, /accounting/configuration/coa/create P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Informasi Dasar /accounting/configuration/coa/create src/views/AccountingManagement/Configuration/coa/COAForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Informasi Dasar pada /accounting/configuration/coa/create; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.code, form.name, form.type, form.parent_id, form.tax_ids, form.tags, form.reconcile, form.deprecated, Kode Akun, eg. 1000, Nama Akun, eg. Kas, +6 lainnya; sinyal validasi=required, custom validate; aturan field=form.code: required, form.name: required, form.type: type=radio, form.reconcile: type=checkbox, form.deprecated: type=checkbox; Inferred from code — option/status/display-label candidates=No Default Tax, PPN 10%, PPN 11%, PPh 23 (2%), Receivable, Bank and Cash, Current Assets, Non-current Assets, Prepayments, Fixed Assets, +12 lainnya Confirmed from code — handleSubmit, handleCancel Confirmed from code — /api/v1/accounting/accounts/detail @ src/services/admin/accountingAdmin.service.js:146 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:313; Confirmed from code — /api/v1/accounting/accounts/save @ src/services/admin/accountingAdmin.service.js:154 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:323; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291 Confirmed from code — sesi autentik; capability accounting.chart_of_accounts.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field parent_id, tax_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/accounts/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/configuration/coa, /accounting/configuration/coa/:id/edit P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Account Configuration /accounting/configuration/journals/:id/configure src/views/AccountingManagement/Configuration/journal/JournalConfig.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Account Configuration pada /accounting/configuration/journals/:id/configure; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=config.default_account_id, config.default_credit_account_id, config.suspense_account_id, config.profit_account_id, config.sequence_prefix, config.sequence_padding, config.sequence_number_next, config.restrict_mode_hash_table, config.auto_post, config.require_reference, config.refund_sequence, config.allow_date_past, +8 lainnya; filter=config.allow_date_past; sinyal validasi=min/max, custom validate; aturan field=config.sequence_prefix: type=text, config.sequence_padding: min=1, max=10, type=number, config.sequence_number_next: min=1, type=number, config.restrict_mode_hash_table: type=checkbox, config.auto_post: type=checkbox, config.require_reference: type=checkbox, config.refund_sequence: type=checkbox, config.allow_date_past: type=checkbox; Inferred from code — option/status/display-label candidates=Accounts, Sequence, Advanced Confirmed from code — set activeTab, updateConfig, router.push, saveConfiguration Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field default_account_id, default_credit_account_id, suspense_account_id, profit_account_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/configuration/journal P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Basic Information /accounting/configuration/journals/:id/edit src/views/AccountingManagement/Configuration/journal/JournalForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Basic Information pada /accounting/configuration/journals/:id/edit; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.code, formData.currency_id, formData.default_account_id, formData.default_credit_account_id, formData.sequence_number_next, formData.active, formData.show_on_dashboard, formData.post_at_bank_rec, e.g., Customer Invoices, Vendor Bills, e.g., INV, BILL, Journal Name *, +5 lainnya; sinyal validasi=required, min/max; aturan field=formData.name: required, type=text, formData.code: required, maxlength=5, type=text, formData.sequence_number_next: min=1, type=number, formData.active: type=checkbox, formData.show_on_dashboard: type=checkbox, formData.post_at_bank_rec: type=checkbox; Inferred from code — option/status/display-label candidates=Sales, Purchase, Misc Confirmed from code — handleSubmit, set formData.type, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field currency_id, default_account_id, default_credit_account_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/configuration/journal, /accounting/configuration/journals/new P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Basic Information /accounting/configuration/journals/new src/views/AccountingManagement/Configuration/journal/JournalForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Basic Information pada /accounting/configuration/journals/new; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.code, formData.currency_id, formData.default_account_id, formData.default_credit_account_id, formData.sequence_number_next, formData.active, formData.show_on_dashboard, formData.post_at_bank_rec, e.g., Customer Invoices, Vendor Bills, e.g., INV, BILL, Journal Name *, +5 lainnya; sinyal validasi=required, min/max; aturan field=formData.name: required, type=text, formData.code: required, maxlength=5, type=text, formData.sequence_number_next: min=1, type=number, formData.active: type=checkbox, formData.show_on_dashboard: type=checkbox, formData.post_at_bank_rec: type=checkbox; Inferred from code — option/status/display-label candidates=Sales, Purchase, Misc Confirmed from code — handleSubmit, set formData.type, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field currency_id, default_account_id, default_credit_account_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/configuration/journal, /accounting/configuration/journals/:id/edit P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Informasi Dasar /accounting/configuration/taxes/:id/edit src/views/AccountingManagement/Configuration/taxes/TaxesForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Informasi Dasar pada /accounting/configuration/taxes/:id/edit; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.name, form.description, form.tax_group_id, form.type_tax_use, form.tax_scope, form.amount_type, form.amount, form.price_include, form.include_base_amount, form.active, form.invoice_repartition_line_ids, form.refund_repartition_line_ids, +12 lainnya; sinyal validasi=required, custom validate; aturan field=form.name: required, form.type_tax_use: required, form.amount_type: required, form.amount: required, type=number, form.price_include: type=checkbox, form.include_base_amount: type=checkbox, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Penjualan, Pembelian, Tanpa Batasan, Refund, Konsumsi, Layanan, Persentase, Nominal Tetap, Pembagian Confirmed from code — handleSubmit, handleCancel Confirmed from code — /api/v1/accounting/taxes/detail @ src/services/admin/accountingAdmin.service.js:375 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:721; Confirmed from code — /api/v1/accounting/taxes/save @ src/services/admin/accountingAdmin.service.js:383 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:734; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291; Confirmed from code — /api/v1/accounting/tax-groups/list @ src/services/admin/accountingAdmin.service.js:398 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:761 Confirmed from code — sesi autentik; capability accounting.tax.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field tax_group_id, invoice_repartition_line_ids, refund_repartition_line_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/taxes/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/configuration/taxes, /accounting/configuration/taxes/create P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Informasi Dasar /accounting/configuration/taxes/create src/views/AccountingManagement/Configuration/taxes/TaxesForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Informasi Dasar pada /accounting/configuration/taxes/create; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.name, form.description, form.tax_group_id, form.type_tax_use, form.tax_scope, form.amount_type, form.amount, form.price_include, form.include_base_amount, form.active, form.invoice_repartition_line_ids, form.refund_repartition_line_ids, +12 lainnya; sinyal validasi=required, custom validate; aturan field=form.name: required, form.type_tax_use: required, form.amount_type: required, form.amount: required, type=number, form.price_include: type=checkbox, form.include_base_amount: type=checkbox, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Penjualan, Pembelian, Tanpa Batasan, Refund, Konsumsi, Layanan, Persentase, Nominal Tetap, Pembagian Confirmed from code — handleSubmit, handleCancel Confirmed from code — /api/v1/accounting/taxes/detail @ src/services/admin/accountingAdmin.service.js:375 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:721; Confirmed from code — /api/v1/accounting/taxes/save @ src/services/admin/accountingAdmin.service.js:383 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:734; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291; Confirmed from code — /api/v1/accounting/tax-groups/list @ src/services/admin/accountingAdmin.service.js:398 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:761 Confirmed from code — sesi autentik; capability accounting.tax.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field tax_group_id, invoice_repartition_line_ids, refund_repartition_line_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/taxes/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/configuration/taxes, /accounting/configuration/taxes/:id/edit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi customer-dashboard /accounting/customer-dashboard src/views/AccountingManagement/Customer/CustomerDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman customer-dashboard pada /accounting/customer-dashboard; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.dateRange, Periode; kolom=Pelanggan, Sisa; filter=filters.period, filters.dateRange, Periode; Inferred from code — option/status/display-label candidates=Pendapatan Bersih, Faktur - Refund, Penerimaan, Piutang, Total outstanding, Piutang overdue, Pendapatan Confirmed from code — set showFilterModal, toggleStatVisibility, goToInvoices, set filters.period, resetFilters, applyFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/admin/accounting/accountsReceivable.service.js, src/services/admin/accounting/customerInvoice.service.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.customers.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/customer-invoices P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi customer-invoice-detail /accounting/customer-invoices/:id src/views/AccountingManagement/Customer/CustomerInvoiceDetail.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman customer-invoice-detail pada /accounting/customer-invoices/:id; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=confirmShow, showPaymentModal, activeTab, paymentForm.journal_id, paymentForm.amount, paymentForm.payment_method_id, paymentForm.date, paymentForm.communication, paymentForm.payment_difference_handling, Nomor Invoice, Pelanggan, Journal, +5 lainnya; kolom=Produk, Deskripsi, Qty, Harga, Total, Account, Label, Debit, Credit; filter=paymentForm.date, Invoice Status; sinyal validasi=required; aturan field=paymentForm.journal_id: required, paymentForm.amount: required, type=number, paymentForm.payment_method_id: required, paymentForm.date: required, paymentForm.payment_difference_handling: type=radio; Inferred from code — option/status/display-label candidates=Paid, Not Paid, Journal Items, Posting Invoice?, Kembalikan ke Draft?, Faktur, Pelanggan, Validation Error, Already Paid, Payment Registered, +1 lainnya Confirmed from code — handleConfirmAction, handleEdit, handlePost, handleRegisterPayment, handleReset, handleDelete, $router.push, submit, handleClose Confirmed from code — /api/v1/accounting/moves/detail @ src/services/admin/accountingAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:134; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207; Confirmed from code — /api/v1/accounting/moves/delete @ src/services/admin/accountingAdmin.service.js:63 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:195 Confirmed from code — sesi autentik; capability accounting.customer_invoices.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id, payment_method_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/moves/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/customer-invoices, /accounting/customer-invoices/edit/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Invoice /accounting/customer-invoices/edit/:id src/views/AccountingManagement/Customer/CustomerInvoiceForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Invoice pada /accounting/customer-invoices/edit/:id; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.partner_id, form.ref, form.invoice_date, form.date, form.auto_complete_ref, form.payment_reference, form.partner_bank_id, form.invoice_date_due, form.invoice_payment_term_id, form.journal_id, activeTab, selectedLineIds, +19 lainnya; kolom=Product, Label, Account, Quantity, Price, Taxes, Total, Date, Debit, Credit, +1 lainnya; filter=form.invoice_date, form.date, form.invoice_date_due, Invoice Date, Select invoice date, Accounting Date, Select accounting date, Due Date, +1 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.partner_id: required, form.invoice_date: required, form.date: required, form.journal_id: required, selectedLineIds: type=checkbox, line.quantity: min=0, type=number, line.price_unit: min=0, type=number; Inferred from code — option/status/display-label candidates=Paid, Not Paid, Journal Items, Load Journal Failed, Invoice Diupdate, Invoice Dibuat, Error Confirmed from code — Save & Confirm, goBack, save, clearSelectedLines, deleteSelectedLines, addLine, removeLine, fetchJournalItems Confirmed from code — /api/v1/accounting/customer-invoice/form-meta @ src/services/admin/accountingAdmin.service.js:467 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:826; Confirmed from code — /api/v1/accounting/moves/detail @ src/services/admin/accountingAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:134; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/create @ src/services/admin/accountingAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:172; Confirmed from code — /api/v1/accounting/moves/write @ src/services/admin/accountingAdmin.service.js:55 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:182; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207 Confirmed from code — sesi autentik; capability accounting.customer_invoices.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field partner_id, partner_bank_id, invoice_payment_term_id, journal_id, product_id, account_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/moves/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/customer-invoices, /accounting/customer-invoices/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Invoice /accounting/customer-invoices/new src/views/AccountingManagement/Customer/CustomerInvoiceForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Invoice pada /accounting/customer-invoices/new; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.partner_id, form.ref, form.invoice_date, form.date, form.auto_complete_ref, form.payment_reference, form.partner_bank_id, form.invoice_date_due, form.invoice_payment_term_id, form.journal_id, activeTab, selectedLineIds, +19 lainnya; kolom=Product, Label, Account, Quantity, Price, Taxes, Total, Date, Debit, Credit, +1 lainnya; filter=form.invoice_date, form.date, form.invoice_date_due, Invoice Date, Select invoice date, Accounting Date, Select accounting date, Due Date, +1 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.partner_id: required, form.invoice_date: required, form.date: required, form.journal_id: required, selectedLineIds: type=checkbox, line.quantity: min=0, type=number, line.price_unit: min=0, type=number; Inferred from code — option/status/display-label candidates=Paid, Not Paid, Journal Items, Load Journal Failed, Invoice Diupdate, Invoice Dibuat, Error Confirmed from code — Save & Confirm, goBack, save, clearSelectedLines, deleteSelectedLines, addLine, removeLine, fetchJournalItems Confirmed from code — /api/v1/accounting/customer-invoice/form-meta @ src/services/admin/accountingAdmin.service.js:467 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:826; Confirmed from code — /api/v1/accounting/moves/detail @ src/services/admin/accountingAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:134; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/create @ src/services/admin/accountingAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:172; Confirmed from code — /api/v1/accounting/moves/write @ src/services/admin/accountingAdmin.service.js:55 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:182; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207 Confirmed from code — sesi autentik; capability accounting.customer_invoices.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field partner_id, partner_bank_id, invoice_payment_term_id, journal_id, product_id, account_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/moves/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/customer-invoices, /accounting/customer-invoices/edit/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi journal-entry-detail /accounting/journal/journal-entry/:id src/views/AccountingManagement/Journal/JournalEntryDetail.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman journal-entry-detail pada /accounting/journal/journal-entry/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=confirmShow, Nomor Entri, Jurnal, Mitra; kolom=Akun, Mitra, Debit, Kredit; Inferred from code — option/status/display-label candidates=Posting jurnal?, Kembalikan ke draft?, Akuntansi, Journal Entries Confirmed from code — handleConfirmAction, handleEdit, handlePost, handleReset, handleDelete, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi journal-entry-edit /accounting/journal/journal-entry/:id/edit src/views/AccountingManagement/Journal/JournalEntryForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman journal-entry-edit pada /accounting/journal/journal-entry/:id/edit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.journal_id, form.date, form.ref, form.partner_id, item.account_id, item.name, item.partner_id, item.debit, item.credit, showCancelDialog, Jurnal, Masukkan nomor referensi (opsional), +4 lainnya; kolom=Akun, Mitra, Debit, Kredit; filter=form.date; sinyal validasi=required, custom validate; aturan field=form.journal_id: required, form.date: required, item.name: type=text, item.debit: type=number, item.credit: type=number; Inferred from code — option/status/display-label candidates=Reset Baris, Hapus Baris, Akuntansi, Jurnal Akuntansi Confirmed from code — set showCancelDialog, handleSave, addLine, set isSummaryExpanded, handleCancel Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id, partner_id, account_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/journal/journal-entry, /accounting/journal/journal-entry/:id, /accounting/journal/journal-entry/create P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi journal-entry-create /accounting/journal/journal-entry/create src/views/AccountingManagement/Journal/JournalEntryForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman journal-entry-create pada /accounting/journal/journal-entry/create; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.journal_id, form.date, form.ref, form.partner_id, item.account_id, item.name, item.partner_id, item.debit, item.credit, showCancelDialog, Jurnal, Masukkan nomor referensi (opsional), +4 lainnya; kolom=Akun, Mitra, Debit, Kredit; filter=form.date; sinyal validasi=required, custom validate; aturan field=form.journal_id: required, form.date: required, item.name: type=text, item.debit: type=number, item.credit: type=number; Inferred from code — option/status/display-label candidates=Reset Baris, Hapus Baris, Akuntansi, Jurnal Akuntansi Confirmed from code — set showCancelDialog, handleSave, addLine, set isSummaryExpanded, handleCancel Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id, partner_id, account_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/journal/journal-entry, /accounting/journal/journal-entry/:id, /accounting/journal/journal-entry/:id/edit P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Delegasi Persetujuan /accounting/payment-approval/delegations src/views/AccountingManagement/PaymentApproval/ApprovalDelegations.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Delegasi Persetujuan pada /accounting/payment-approval/delegations; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.delegator_id, form.delegate_id, form.date_from, form.date_to, form.reason, ID Pemberi Delegasi, ID user pemberi delegasi, ID Penerima Delegasi, ID user penerima delegasi, Tanggal Berakhir; kolom=Pemberi Delegasi, Penerima Delegasi, Mulai, Berakhir; filter=form.date_from, form.date_to; sinyal validasi=required; aturan field=form.delegator_id: type=number, form.delegate_id: type=number, form.date_from: required, type=date, form.date_to: type=date Confirmed from code — router.back, openCreate, openEdit, confirmDelete, handleSave, handleDelete Confirmed from code — /api/v1/accounting/payment-approvals/delegations/:param/save @ src/services/accounting/payment-approval.service.js:99 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:248; Confirmed from code — /api/v1/accounting/payment-approvals/delegations/:param/delete @ src/services/accounting/payment-approval.service.js:107 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:260; Confirmed from code — /api/v1/accounting/payment-approvals/delegations/list @ src/services/accounting/payment-approval.service.js:77 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:203; Confirmed from code — /api/v1/accounting/payment-approvals/delegations/save @ src/services/accounting/payment-approval.service.js:92 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:239 Confirmed from code — sesi autentik; capability accounting.payment_approval.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field delegator_id, delegate_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payment-approvals/delegations/:param/save, /api/v1/accounting/payment-approvals/delegations/:param/delete, /api/v1/accounting/payment-approvals/delegations/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Aturan Persetujuan /accounting/payment-approval/rules src/views/AccountingManagement/PaymentApproval/ApprovalRules.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Aturan Persetujuan pada /accounting/payment-approval/rules; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=form.name, form.min_amount, form.max_amount, form.approval_type, Nama Aturan, Contoh: Persetujuan di atas 10 juta, Nominal Minimal (Rp), Nominal Maksimal (Rp), Tipe Persetujuan; kolom=Minimal, Maksimal; sinyal validasi=required; aturan field=form.name: required, form.min_amount: type=number, form.max_amount: type=number Confirmed from code — router.back, openCreate, openEdit, confirmDelete, handleSave, handleDelete Confirmed from code — /api/v1/accounting/payment-approvals/rules/list @ src/services/accounting/payment-approval.service.js:49 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:138; Confirmed from code — /api/v1/accounting/payment-approvals/rules/:param/delete @ src/services/accounting/payment-approval.service.js:72 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:192; Confirmed from code — /api/v1/accounting/payment-approvals/rules/save @ src/services/accounting/payment-approval.service.js:61 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:171; Confirmed from code — /api/v1/accounting/payment-approvals/rules/:param/save @ src/services/accounting/payment-approval.service.js:67 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:180 Confirmed from code — sesi autentik; capability accounting.payment_approval.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payment-approvals/rules/:param/delete, /api/v1/accounting/payment-approvals/rules/save, /api/v1/accounting/payment-approvals/rules/:param/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Konfigurasi Reminder /accounting/reminder/config src/views/AccountingManagement/Reminder/ReminderConfig.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi Reminder pada /accounting/reminder/config; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.active, form.before_due_days, form.after_due_days, form.escalation_days, Contoh: Default Reminder, Hari Sebelum Jatuh Tempo, Hari Setelah Jatuh Tempo, 3,7,14, Hari Eskalasi, 30; aturan field=form.before_due_days: type=number, form.escalation_days: type=number Confirmed from code — router.back, handleSave Confirmed from code — /api/v1/accounting/invoice-reminders/config @ src/services/accounting/invoice-reminder.service.js:46 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:384; Confirmed from code — /api/v1/accounting/invoice-reminders/config/save @ src/services/accounting/invoice-reminder.service.js:50 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:400 Confirmed from code — sesi autentik; capability accounting.reminder.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/invoice-reminders/config/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Buat Reminder Manual /accounting/reminder/create src/views/AccountingManagement/Reminder/ReminderCreate.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Buat Reminder Manual pada /accounting/reminder/create; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.invoiceId, form.reminderType, ID Invoice, Masukkan ID invoice, Tipe Reminder; sinyal validasi=required; aturan field=form.invoiceId: required, type=number; Inferred from code — option/status/display-label candidates=Sebelum Jatuh Tempo, Tanggal Jatuh Tempo, Setelah Jatuh Tempo, Eskalasi Confirmed from code — router.back, handleSend Confirmed from code — /api/v1/accounting/invoice-reminders/send @ src/services/accounting/invoice-reminder.service.js:38 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:369 Confirmed from code — sesi autentik; capability accounting.reminder.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi balance-sheet-report /accounting/reports/balance-sheet src/views/AccountingManagement/Reports/BalanceSheetView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman balance-sheet-report pada /accounting/reports/balance-sheet; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=reportDate; kolom=Nama Akun, Balance; filter=reportDate Confirmed from code — resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160 Confirmed from code — sesi autentik; capability accounting.report_balance_sheet.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/finance/reports/balance-sheet P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi cash-flow-report /accounting/reports/cash-flow src/views/AccountingManagement/Reports/CashFlowView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman cash-flow-report pada /accounting/reports/cash-flow; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, selectedYear, Tanggal Akhir; kolom=Keterangan; filter=dateFrom, dateTo; sinyal validasi=min/max; aturan field=selectedYear: min=2010, max=new Date().getFullYear(); Inferred from code — option/status/display-label candidates=Ringkasan, Per Bulan Confirmed from code — set viewMode, resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291 Confirmed from code — sesi autentik; capability accounting.report_cash_flow.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/finance/reports/cash-flow P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi general-ledger-report /accounting/reports/general-ledger src/views/AccountingManagement/Reports/GeneralLedgerView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman general-ledger-report pada /accounting/reports/general-ledger; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, selectedAccount, selectedJournal, Tanggal Akhir, Akun, Jurnal; kolom=No. Jurnal, Keterangan, Jurnal, Debit, Kredit, Saldo; filter=dateFrom, dateTo Confirmed from code — resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291; Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160 Confirmed from code — sesi autentik; capability accounting.report_general_ledger.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi journal-audit-report /accounting/reports/journal-audit src/views/AccountingManagement/Reports/JournalAuditView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman journal-audit-report pada /accounting/reports/journal-audit; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, selectedJournal, Tanggal Akhir, Jurnal; kolom=No. Jurnal, Akun, Keterangan, Debit, Kredit; filter=dateFrom, dateTo Confirmed from code — resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234; Confirmed from code — /api/v1/accounting/moves/list @ src/services/admin/accountingAdmin.service.js:10 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:111; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148 Confirmed from code — sesi autentik; capability accounting.reports.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Perbandingan Keuangan Multi-Tahun /accounting/reports/multi-year src/views/AccountingManagement/Reports/MultiYearComparison.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Perbandingan Keuangan Multi-Tahun pada /accounting/reports/multi-year; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=reportType, year1, year2, 2024/2025, 2025/2026, Tahun 1, Tahun 2; kolom=Akun, Selisih; aturan field=year1: type=text, year2: type=text Confirmed from code — Bandingkan, fetchComparison Missing or unclear — /api/v1/finance/comparison?:param @ src/services/finance/bosFund.service.js:52; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability accounting.reports.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi partner-ledger-report /accounting/reports/partner-ledger src/views/AccountingManagement/Reports/PartnerLedgerView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman partner-ledger-report pada /accounting/reports/partner-ledger; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, partnerType, selectedPartner, Tanggal Akhir, Tipe Mitra, Mitra; kolom=No. Jurnal, Keterangan, Akun, Debit, Kredit, Saldo; filter=dateFrom, dateTo Confirmed from code — resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/partners/list @ src/services/admin/accountingAdmin.service.js:202 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:402; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160 Confirmed from code — sesi autentik; capability accounting.reports.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi profit-loss-report /accounting/reports/profit-loss src/views/AccountingManagement/Reports/ProfitLossView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman profit-loss-report pada /accounting/reports/profit-loss; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, selectedYear, Tanggal Akhir, Tahun; kolom=Nama Akun, Jumlah, Total; filter=dateFrom, dateTo; sinyal validasi=min/max; aturan field=selectedYear: min=2010, max=new Date().getFullYear(); Inferred from code — option/status/display-label candidates=Ringkasan, Per Bulan Confirmed from code — set viewMode, resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148 Confirmed from code — sesi autentik; capability accounting.report_profit_loss.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/finance/reports/profit-loss P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi trial-balance-report /accounting/reports/trial-balance src/views/AccountingManagement/Reports/TrialBalanceView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman trial-balance-report pada /accounting/reports/trial-balance; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, Tanggal Akhir; kolom=Nama Akun, Debit, Kredit, Saldo; filter=dateFrom, dateTo Confirmed from code — resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291 Confirmed from code — sesi autentik; capability accounting.report_trial_balance.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi tax-configuration /accounting/tax/configuration src/views/AccountingManagement/Tax/TaxConfiguration.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman tax-configuration pada /accounting/tax/configuration; tujuan diringkas dari 2 form, tabel/kolom data, aksi interaktif Confirmed from code — form=2; field=selectedYear, ptkpForm.code, ptkpForm.amount, bracketForm.name, bracketForm.min_income, bracketForm.max_income, bracketForm.rate, Kode PTKP, Jumlah Tahunan (Rp), Contoh: 54000000, Nama Bracket, Contoh: Bracket 1: Sampai 60 Juta, +4 lainnya; kolom=Jumlah Tahunan, Jumlah Bulanan, Bracket, Penghasilan Min, Penghasilan Max, Tarif; sinyal validasi=required; aturan field=ptkpForm.code: required, ptkpForm.amount: required, type=number, bracketForm.name: required, bracketForm.min_income: required, type=number, bracketForm.max_income: type=number, bracketForm.rate: required, type=number; Inferred from code — option/status/display-label candidates=K/0 - Kawin, 0 Tanggungan, K/1 - Kawin, 1 Tanggungan, K/2 - Kawin, 2 Tanggungan, K/3 - Kawin, 3 Tanggungan, 2025, 2026, 2027, 2028 Confirmed from code — Konfigurasi PTKP, Bracket Pajak PPh21, set activeTab, set showPTKPForm, set showBracketForm, savePTKP, saveBracket Confirmed from code — /api/v1/accounting/tax-compliance/ptkp/save @ src/services/accounting/tax-compliance.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:429; Confirmed from code — /api/v1/accounting/tax-compliance/pph21-brackets/save @ src/services/accounting/tax-compliance.service.js:39 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:460 Confirmed from code — sesi autentik; capability accounting.tax.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/tax-compliance/ptkp/save, /api/v1/accounting/tax-compliance/pph21-brackets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi tax-report-detail /accounting/tax/reports/:id src/views/AccountingManagement/Tax/TaxReportDetail.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman tax-report-detail pada /accounting/tax/reports/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Reference, Description, Direction, Base Amount, Tax Amount Confirmed from code — ← Back to Reports, Export CSV, Back to Reports, goBack, downloadCSV Confirmed from code — /api/v1/accounting/tax-compliance/reports/detail @ src/services/accounting/tax-compliance.service.js:82 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:509; Missing or unclear — /web/tax/report/export/:param @ src/services/accounting/tax-compliance.service.js:101; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability accounting.tax.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/tax/reports P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi tax-report-create /accounting/tax/reports/create src/views/AccountingManagement/Tax/TaxReportCreate.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman tax-report-create pada /accounting/tax/reports/create; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.report_type, form.name, form.period_start, form.period_end, Periode Awal, Periode Akhir; filter=form.period_start, form.period_end, Periode Awal, Periode Akhir; sinyal validasi=required; aturan field=form.report_type: type=radio, form.period_start: required, type=date, form.period_end: required, type=date; Inferred from code — option/status/display-label candidates=PPh 21, PPh 23, PPN Confirmed from code — router.back, router.push, createReport Confirmed from code — /api/v1/accounting/tax-compliance/reports/generate @ src/services/accounting/tax-compliance.service.js:95 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:542; Confirmed from code — /api/v1/accounting/tax-compliance/reports/save @ src/services/accounting/tax-compliance.service.js:88 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:526 Confirmed from code — sesi autentik; capability accounting.tax.create; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/tax-compliance/reports/generate, /api/v1/accounting/tax-compliance/reports/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/tax/reports P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi vendor-bill-detail /accounting/vendor-bills/:id src/views/AccountingManagement/Vendor/VendorBillDetail.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman vendor-bill-detail pada /accounting/vendor-bills/:id; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=confirmShow, showPaymentModal, activeTab, paymentForm.journal_id, paymentForm.amount, paymentForm.payment_method_id, paymentForm.date, paymentForm.communication, paymentForm.payment_difference_handling, Nomor Bill, Vendor, Journal, +6 lainnya; kolom=Deskripsi, Account, Qty, Harga, Total, Label, Debit, Credit; filter=paymentForm.date, Bill Status; sinyal validasi=required; aturan field=paymentForm.journal_id: required, paymentForm.amount: required, type=number, paymentForm.payment_method_id: required, paymentForm.date: required, paymentForm.payment_difference_handling: type=radio; Inferred from code — option/status/display-label candidates=Paid, Not Paid, Journal Items, Posting Bill?, Kembalikan ke Draft?, Validation Error, Already Paid, Payment Registered, Payment Failed Confirmed from code — handleConfirmAction, handleEdit, handlePost, handleRegisterPayment, handleReset, handleDelete, $router.push, submit, handleClose Confirmed from code — /api/v1/accounting/moves/detail @ src/services/admin/accountingAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:134; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207; Confirmed from code — /api/v1/accounting/moves/delete @ src/services/admin/accountingAdmin.service.js:63 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:195 Confirmed from code — sesi autentik; capability accounting.vendor_bills.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id, payment_method_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/moves/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/vendor-bills, /accounting/vendor-bills/edit/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Bill /accounting/vendor-bills/edit/:id src/views/AccountingManagement/Vendor/VendorBillForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Bill pada /accounting/vendor-bills/edit/:id; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.partner_id, form.ref, form.invoice_date, form.date, form.auto_complete_ref, form.payment_reference, form.partner_bank_id, form.invoice_date_due, form.invoice_payment_term_id, form.journal_id, activeTab, selectedLineIds, +19 lainnya; kolom=Product, Label, Account, Quantity, Price, Taxes, Total, Date, Debit, Credit, +1 lainnya; filter=form.invoice_date, form.date, form.invoice_date_due, Bill Date, Select invoice date, Accounting Date, Select accounting date, Due Date, +1 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.partner_id: required, form.invoice_date: required, form.date: required, form.journal_id: required, selectedLineIds: type=checkbox, line.quantity: min=0, type=number, line.price_unit: min=0, type=number; Inferred from code — option/status/display-label candidates=Paid, Not Paid, Journal Items, Load Journal Failed Confirmed from code — Save & Confirm, goBack, save, clearSelectedLines, deleteSelectedLines, addLine, removeLine, fetchJournalItems Confirmed from code — /api/v1/accounting/vendor-bill/form-meta @ src/services/admin/accountingAdmin.service.js:462 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:880; Confirmed from code — /api/v1/accounting/moves/detail @ src/services/admin/accountingAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:134; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/create @ src/services/admin/accountingAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:172; Confirmed from code — /api/v1/accounting/moves/write @ src/services/admin/accountingAdmin.service.js:55 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:182; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207 Confirmed from code — sesi autentik; capability accounting.vendor_bills.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field partner_id, partner_bank_id, invoice_payment_term_id, journal_id, product_id, account_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/moves/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/vendor-bills, /accounting/vendor-bills/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Bill /accounting/vendor-bills/new src/views/AccountingManagement/Vendor/VendorBillForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Bill pada /accounting/vendor-bills/new; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.partner_id, form.ref, form.invoice_date, form.date, form.auto_complete_ref, form.payment_reference, form.partner_bank_id, form.invoice_date_due, form.invoice_payment_term_id, form.journal_id, activeTab, selectedLineIds, +19 lainnya; kolom=Product, Label, Account, Quantity, Price, Taxes, Total, Date, Debit, Credit, +1 lainnya; filter=form.invoice_date, form.date, form.invoice_date_due, Bill Date, Select invoice date, Accounting Date, Select accounting date, Due Date, +1 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.partner_id: required, form.invoice_date: required, form.date: required, form.journal_id: required, selectedLineIds: type=checkbox, line.quantity: min=0, type=number, line.price_unit: min=0, type=number; Inferred from code — option/status/display-label candidates=Paid, Not Paid, Journal Items, Load Journal Failed Confirmed from code — Save & Confirm, goBack, save, clearSelectedLines, deleteSelectedLines, addLine, removeLine, fetchJournalItems Confirmed from code — /api/v1/accounting/vendor-bill/form-meta @ src/services/admin/accountingAdmin.service.js:462 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:880; Confirmed from code — /api/v1/accounting/moves/detail @ src/services/admin/accountingAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:134; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/moves/create @ src/services/admin/accountingAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:172; Confirmed from code — /api/v1/accounting/moves/write @ src/services/admin/accountingAdmin.service.js:55 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:182; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207 Confirmed from code — sesi autentik; capability accounting.vendor_bills.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field partner_id, partner_bank_id, invoice_payment_term_id, journal_id, product_id, account_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/moves/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/vendor-bills, /accounting/vendor-bills/edit/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Akuntansi Dashboard Pembayaran Vendor /accounting/vendor-dashboard src/views/AccountingManagement/Vendor/Dashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Dashboard Pembayaran Vendor pada /accounting/vendor-dashboard; tujuan diringkas dari konten halaman Inferred from code — option/status/display-label candidates=Pengeluaran, Total Pengeluaran Harian, Vendor Bills, Vendor Payments, Payslips Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /api/v1/accounting/moves/list @ src/services/admin/accountingAdmin.service.js:10 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:111; Confirmed from code — /api/v1/accounting/payments/list @ src/services/admin/accountingAdmin.service.js:261 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:510; Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/partners/count @ src/services/admin/accountingAdmin.service.js:214 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:417 Confirmed from code — sesi autentik; capability accounting.vendors.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Analitik (3 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Analitik ParentCourseDetail /parent/lms/course/:courseId/student/:studentId src/views/LearningManagement/Parent/CourseDetailView.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentCourseDetail pada /parent/lms/course/:courseId/student/:studentId; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab Confirmed from code — router.back, fetchData Confirmed from code — /lms/courses/:param/items @ src/views/LearningManagement/Parent/CourseDetailView.vue:70; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/progress @ src/views/LearningManagement/Parent/CourseDetailView.vue:71; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability analytics.family.view; allowedRoles parent; parameter route courseId, studentId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Analitik principal-lms-overview /principal/lms/overview src/views/LearningManagement/Admin/LMSOverview.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-lms-overview pada /principal/lms/overview; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — fetchOverview Confirmed from code — /lms/admin/overview @ src/views/LearningManagement/Admin/LMSOverview.vue:43; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability analytics.executive.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/lms/overview P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Analitik Analitik Kelas /teacher/analytics/class/:id src/views/AnalyticsManagement/Faculty/ClassAnalytics.vue:1 Inferred from code — teacher, foundation_chairman, homeroom; diturunkan dari pola capability frontend untuk analytics.classroom.view; izin sesi backend dapat berbeda Inferred from code — halaman Analitik Kelas pada /teacher/analytics/class/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=periodFilter, selectedBatchId, statusFilter, searchQuery; filter=periodFilter, selectedBatchId, statusFilter, searchQuery; aturan field=searchQuery: type=text Confirmed from code — handlePeriodChange, handleBatchChange, filterByStatus, openStudentProfile Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability analytics.classroom.view; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /teacher/analytics/class P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

Aset (6 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Aset inventory-assets-detail /inventory/assets/:id src/views/AdminViews/Inventory/AssetForm.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-assets-detail pada /inventory/assets/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.x_asset_number, form.category_id, form.x_location_id, form.x_condition, form.x_funding_source, form.x_purchase_date, form.x_purchase_value, form.x_specs, Nama Aset, Contoh: Laptop Dell Latitude 3420, Nomor Inventaris, +7 lainnya; filter=form.x_purchase_date; sinyal validasi=required; aturan field=form.name: required, form.category_id: required, form.x_location_id: required, form.x_condition: required, form.x_purchase_date: type=date, form.x_purchase_value: type=number; Inferred from code — option/status/display-label candidates=Baik, Rusak Ringan, Rusak Berat, Hilang, BOS, Yayasan, Hibah, Error Confirmed from code — handleSubmit, router.back Confirmed from code — /api/v1/inventory/assets/save @ src/services/admin/asset.service.js:49 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1063; Confirmed from code — /api/v1/inventory/assets/detail @ src/services/admin/asset.service.js:34 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1053; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field category_id, x_location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets, /inventory/assets/:id/edit, /inventory/assets/create, /vice-principal/infrastructure/assets/:id P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Aset inventory-assets-edit /inventory/assets/:id/edit src/views/AdminViews/Inventory/AssetForm.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-assets-edit pada /inventory/assets/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.x_asset_number, form.category_id, form.x_location_id, form.x_condition, form.x_funding_source, form.x_purchase_date, form.x_purchase_value, form.x_specs, Nama Aset, Contoh: Laptop Dell Latitude 3420, Nomor Inventaris, +7 lainnya; filter=form.x_purchase_date; sinyal validasi=required; aturan field=form.name: required, form.category_id: required, form.x_location_id: required, form.x_condition: required, form.x_purchase_date: type=date, form.x_purchase_value: type=number; Inferred from code — option/status/display-label candidates=Baik, Rusak Ringan, Rusak Berat, Hilang, BOS, Yayasan, Hibah, Error Confirmed from code — handleSubmit, router.back Confirmed from code — /api/v1/inventory/assets/save @ src/services/admin/asset.service.js:49 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1063; Confirmed from code — /api/v1/inventory/assets/detail @ src/services/admin/asset.service.js:34 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1053; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field category_id, x_location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets, /inventory/assets/:id, /inventory/assets/create, /vice-principal/infrastructure/assets/:id P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Aset inventory-assets-create /inventory/assets/create src/views/AdminViews/Inventory/AssetForm.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-assets-create pada /inventory/assets/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.x_asset_number, form.category_id, form.x_location_id, form.x_condition, form.x_funding_source, form.x_purchase_date, form.x_purchase_value, form.x_specs, Nama Aset, Contoh: Laptop Dell Latitude 3420, Nomor Inventaris, +7 lainnya; filter=form.x_purchase_date; sinyal validasi=required; aturan field=form.name: required, form.category_id: required, form.x_location_id: required, form.x_condition: required, form.x_purchase_date: type=date, form.x_purchase_value: type=number; Inferred from code — option/status/display-label candidates=Baik, Rusak Ringan, Rusak Berat, Hilang, BOS, Yayasan, Hibah, Error Confirmed from code — handleSubmit, router.back Confirmed from code — /api/v1/inventory/assets/save @ src/services/admin/asset.service.js:49 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1063; Confirmed from code — /api/v1/inventory/assets/detail @ src/services/admin/asset.service.js:34 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1053; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field category_id, x_location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets, /inventory/assets/:id, /inventory/assets/:id/edit, /vice-principal/infrastructure/assets/:id P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Aset inventory-assets-import /inventory/assets/import src/views/AdminViews/Inventory/AssetImport.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-assets-import pada /inventory/assets/import; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=uploadedFile; kolom=Nama, No. Inv, Kategori, Lokasi, Kondisi, Status; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Download Template, Upload File, Validasi, Error, Import Selesai Confirmed from code — downloadTemplate, set currentStep, removeFile, parseExcel, importAssets, goToAssetList, resetImport Confirmed from code — /api/v1/inventory/assets/save @ src/services/admin/asset.service.js:49 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1063; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; source file dan master reference yang sesuai format import Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Aset principal-inventory-assets /principal/inventory/assets src/views/AdminViews/Inventory/AssetList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-inventory-assets pada /principal/inventory/assets; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, selectedLocation, Lokasi; kolom=Nama Aset, Lokasi, Kondisi; filter=searchQuery; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goToCreate, handleSearch, goToDetail, goToEdit, handleDelete Confirmed from code — /api/v1/inventory/assets/list @ src/services/admin/asset.service.js:15 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1036; Confirmed from code — /api/v1/inventory/assets/delete @ src/services/admin/asset.service.js:77 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1079; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles principal; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets/create, /inventory/assets, /vice-principal/infrastructure/assets P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Aset vice-principal-asset-detail /vice-principal/infrastructure/assets/:id src/views/AdminViews/Inventory/AssetForm.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman vice-principal-asset-detail pada /vice-principal/infrastructure/assets/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.x_asset_number, form.category_id, form.x_location_id, form.x_condition, form.x_funding_source, form.x_purchase_date, form.x_purchase_value, form.x_specs, Nama Aset, Contoh: Laptop Dell Latitude 3420, Nomor Inventaris, +7 lainnya; filter=form.x_purchase_date; sinyal validasi=required; aturan field=form.name: required, form.category_id: required, form.x_location_id: required, form.x_condition: required, form.x_purchase_date: type=date, form.x_purchase_value: type=number; Inferred from code — option/status/display-label candidates=Baik, Rusak Ringan, Rusak Berat, Hilang, BOS, Yayasan, Hibah, Error Confirmed from code — handleSubmit, router.back Confirmed from code — /api/v1/inventory/assets/save @ src/services/admin/asset.service.js:49 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1063; Confirmed from code — /api/v1/inventory/assets/detail @ src/services/admin/asset.service.js:34 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1053; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field category_id, x_location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets, /inventory/assets/:id, /inventory/assets/:id/edit, /inventory/assets/create P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Data Orang Tua (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Data Orang Tua parent-academics /parent/academics src/views/ParentViews/ParentSectionHub.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-academics pada /parent/academics; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem, onChildChange Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256 Confirmed from code — sesi autentik; capability parents.children.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/communications, /parent/finance, /parent/library, /parent/more, /parent/student-life P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Data Orang Tua Informasi Utama /parents/:id src/views/AdminViews/ParentDatabase/DetailOrtu.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Informasi Utama pada /parents/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.company_type, form.name, form.mobile, form.email, form.street, form.street2, form.city, form.zip, relationForm.relationship_id, searchStudentEdit, relationForm.student_ids, Tipe Entitas, +14 lainnya; filter=form.company_type, searchStudentEdit; sinyal validasi=required; aturan field=form.name: required, form.email: type=email, relationForm.student_ids: type=checkbox; Inferred from code — option/status/display-label candidates=Individual, Company Confirmed from code — enableEditing, cancelEditing, saveParent Confirmed from code — /api/v1/admin/parents/detail @ src/services/admin/parent.service.js:19 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:315; Confirmed from code — /api/v1/admin/parents/options @ src/services/admin/parent.service.js:14 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:516; Confirmed from code — /api/v1/admin/parents/partner/save @ src/services/admin/parent.service.js:27 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:347; Confirmed from code — /api/v1/admin/parents/relation/save @ src/services/admin/parent.service.js:44 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:435 Confirmed from code — sesi autentik; capability parents.list.view; allowedRoles admin, school_admin, head_admin; parameter route id; Inferred from code — data prerequisite: referenced records dari field relationship_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/parents/partner/save, /api/v1/admin/parents/relation/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Exam (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Exam CBTPublicStart /cbt/public src/views/ExamManagement/Public/CBTPublicStart.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman CBTPublicStart pada /cbt/public; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.examId, form.token, form.participantCode, Contoh: 24, Kode peserta eksternal; sinyal validasi=required, min/max; aturan field=form.examId: required, min=1, type=number, form.token: required, type=text, form.participantCode: required, type=text Confirmed from code — startExam Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — tidak memerlukan sesi menurut route meta; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /cbt/public/runner/:exam_id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Exam CBTPublicRunner /cbt/public/runner/:exam_id src/views/ExamManagement/Student/CBTRunner.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman CBTPublicRunner pada /cbt/public/runner/:exam_id; tujuan diringkas dari aksi interaktif Confirmed from code — field=answers[currentQuestion.id], Tuliskan jawaban lengkap Anda di sini...; sinyal validasi=required; aturan field=answers[currentQuestion.id]: type=radio, answers[currentQuestion.id]: type=checkbox; Inferred from code — option/status/display-label candidates=Tindakan Dilarang Confirmed from code — redirectAfterFeatureDisabled, redirectAfterSebRequired, redirectAfterInitFailure, confirmFinish, goToQuestion, toggleQuestionFlag, handleAnswerChange, prevQuestion, nextQuestion, submitExam, enterFullscreen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/cbt/useExamState.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/cbt/cbtEventSchema.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — tidak memerlukan sesi menurut route meta; feature flag scola_cbt; parameter route exam_id; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /cbt/public, /spmb/cbt, /student/cbt, /spmb/cbt/runner/:exam_id, /student/cbt/runner/:exam_id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

FeatureUnavailableView.vue (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
FeatureUnavailableView.vue Fitur Belum Tersedia /feature-unavailable src/views/FeatureUnavailableView.vue:1 Missing or unclear — route hanya mensyaratkan autentikasi atau tidak memiliki metadata role/capability eksplisit Inferred from code — halaman Fitur Belum Tersedia pada /feature-unavailable; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — goBack, goHome Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P3 — halaman sederhana/statis Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

Inventaris (21 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Inventaris inventory-audit-trail /inventory/audit-trail src/views/AdminViews/Inventory/AuditTrail.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-audit-trail pada /inventory/audit-trail; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.dateFrom, filters.dateTo, filters.userId, filters.model, User, Modul; kolom=Timestamp, User, Modul, Aktivitas; filter=filters.dateFrom, filters.dateTo, filters.userId, filters.model; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Permintaan/Transfer, Stock Opname, Stock Quant, Purchase Request, Purchase Order, Error Confirmed from code — fetchLogs Confirmed from code — /api/v1/inventory/reports/audit-trail @ src/services/admin/inventory.service.js:675 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:725; Confirmed from code — /api/v1/inventory/users/list @ src/services/admin/inventory.service.js:282 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:445 Confirmed from code — sesi autentik; capability inventory.audit_log.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris budget-planning-page /inventory/budget/plan/:id src/views/AdminViews/Budget/BudgetPlanningPage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman budget-planning-page pada /inventory/budget/plan/:id; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=lineForm.rkas_component, lineForm.planned_amount, Uraian / Komponen RKAS *, Jumlah Anggaran (Rp) *; kolom=Komponen RKAS, Anggaran, Komitmen, Realisasi, Sisa; sinyal validasi=required; aturan field=lineForm.rkas_component: required, lineForm.planned_amount: required, type=number Confirmed from code — confirmSubmit, confirmApprove, confirmLock, confirmReset, openAddLineModal, editLine, deleteLine, router.push, handleSaveLine Missing or unclear — /budget/planning/:param @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:229; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /budget/planning/:param/lines @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:233; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /budget/planning/lines/:param @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:268; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /budget/planning/:param/submit @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:299; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /budget/planning/:param/approve @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:308; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /budget/planning/:param/lock @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:317; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /budget/planning/:param/reset @ src/views/AdminViews/Budget/BudgetPlanningPage.vue:326; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability inventory.budget.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_bos_rkas; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /budget/planning/lines/:param, /budget/planning/:param/submit, /budget/planning/:param/approve, /budget/planning/:param/lock; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /budget P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-movement-edit /inventory/movements/:id/edit src/views/AdminViews/Inventory/MovementCreate.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-movement-edit pada /inventory/movements/:id/edit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.picking_type_id, form.scheduled_date, form.location_id, form.location_dest_id, form.origin, form.request_reason, form.note, item.product_id, item.qty, Tipe Transfer, Lokasi Asal, Lokasi Tujuan, +4 lainnya; kolom=Produk, Qty, Stok Tersedia; filter=form.scheduled_date; sinyal validasi=required, min/max, custom validate; aturan field=form.picking_type_id: required, form.scheduled_date: required, form.location_id: required, form.location_dest_id: required, item.qty: min=1, type=number; Inferred from code — option/status/display-label candidates=Buat Retur Barang, Buat Mutasi Barang, Error Confirmed from code — addItem, removeItem, goBack, saveDraft, saveAndSubmit Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/write @ src/services/admin/inventory.service.js:194 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:371 Confirmed from code — sesi autentik; capability inventory.movements.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field picking_type_id, location_id, location_dest_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/movements, /inventory/movements/create P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-movement-create /inventory/movements/create src/views/AdminViews/Inventory/MovementCreate.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-movement-create pada /inventory/movements/create; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.picking_type_id, form.scheduled_date, form.location_id, form.location_dest_id, form.origin, form.request_reason, form.note, item.product_id, item.qty, Tipe Transfer, Lokasi Asal, Lokasi Tujuan, +4 lainnya; kolom=Produk, Qty, Stok Tersedia; filter=form.scheduled_date; sinyal validasi=required, min/max, custom validate; aturan field=form.picking_type_id: required, form.scheduled_date: required, form.location_id: required, form.location_dest_id: required, item.qty: min=1, type=number; Inferred from code — option/status/display-label candidates=Buat Retur Barang, Buat Mutasi Barang, Error Confirmed from code — addItem, removeItem, goBack, saveDraft, saveAndSubmit Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/write @ src/services/admin/inventory.service.js:194 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:371 Confirmed from code — sesi autentik; capability inventory.movements.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field picking_type_id, location_id, location_dest_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/movements, /inventory/movements/:id/edit P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-mutations /inventory/mutations src/views/AdminViews/Inventory/MutationReport.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-mutations pada /inventory/mutations; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, filters.warehouseId, filters.status, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=No. Mutasi, Lokasi, Referensi, Dibuat Oleh; filter=searchQuery, filters.warehouseId, filters.status, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Dibatalkan, Error Confirmed from code — set showFilterModal, fetchMutations, goToDetail, applyFilters Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/mutations/list @ src/services/admin/inventory.service.js:128 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:303 Confirmed from code — sesi autentik; capability inventory.movements.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris 3-Way Matching /inventory/procurement/invoice-matching/:id src/views/AdminViews/Inventory/InvoiceMatchingPage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman 3-Way Matching pada /inventory/procurement/invoice-matching/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Produk, PO Qty, Received, Invoiced, PO Price, Invoice Price; Inferred from code — option/status/display-label candidates=Error Confirmed from code — handleReconcile Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/inventory.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability inventory.receipts.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /inventory/procurement/orders P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-procurement-orders-detail /inventory/procurement/orders/:id src/views/AdminViews/Inventory/PurchaseOrderDetail.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-procurement-orders-detail pada /inventory/procurement/orders/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Produk, Qty, Satuan, Harga, Subtotal, No. Penerimaan, Lokasi; sinyal validasi=custom validate; Inferred from code — option/status/display-label candidates=Error Confirmed from code — handleConfirm, handleCancel, goToReceipts, handleValidateReceipt Confirmed from code — /api/v1/procurement/orders/detail @ src/services/admin/procurement.service.js:255 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:213; Confirmed from code — /api/v1/procurement/orders/action @ src/services/admin/procurement.service.js:268 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:252; Confirmed from code — /api/v1/procurement/receipts/list @ src/services/admin/procurement.service.js:300 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:267; Confirmed from code — /api/v1/procurement/receipts/action @ src/services/admin/procurement.service.js:316 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:342 Confirmed from code — sesi autentik; capability inventory.purchase_orders.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/procurement/receipts P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-procurement-receipt-detail /inventory/procurement/receipts/:id src/views/AdminViews/Inventory/ReceiptDetail.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-procurement-receipt-detail pada /inventory/procurement/receipts/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Produk, Permintaan, Diterima, Satuan; sinyal validasi=custom validate; aturan field=field: type=file; Inferred from code — option/status/display-label candidates=Error, Ukuran File Confirmed from code — handleValidate, goToOrder, onFileSelected, triggerUpload, handleDeleteAttachment Confirmed from code — /api/v1/procurement/receipts/detail @ src/services/admin/procurement.service.js:329 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:302; Confirmed from code — /api/v1/procurement/receipts/action @ src/services/admin/procurement.service.js:316 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:342; Confirmed from code — /api/v1/procurement/attachments/upload @ src/services/admin/procurement.service.js:355 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:365; Confirmed from code — /api/v1/procurement/attachments/list @ src/services/admin/procurement.service.js:342 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:355; Confirmed from code — /api/v1/procurement/attachments/delete @ src/services/admin/procurement.service.js:370 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:378 Confirmed from code — sesi autentik; capability inventory.receipts.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/procurement/attachments/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-procurement-requests-detail /inventory/procurement/requests/:id src/views/AdminViews/Inventory/PurchaseRequestDetail.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-procurement-requests-detail pada /inventory/procurement/requests/:id; tujuan diringkas dari 2 form, tabel/kolom data, aksi interaktif Confirmed from code — form=2; field=checklist[item.key], selectedVendor, Vendor; kolom=Produk, Qty, Satuan, Harga, Subtotal, No. PO, Vendor, Tanggal, Status, Total, +1 lainnya; aturan field=field: type=file, checklist[item.key]: type=checkbox; Inferred from code — option/status/display-label candidates=Surat Penawaran, Berita Acara Penerimaan, Faktur / Invoice, Kwitansi, SPK / Kontrak, Error, Submit Purchase Request, Approve Purchase Request, Tolak Purchase Request, Ukuran File Confirmed from code — goToEdit, openActionModal, openRfqModal, goToPurchaseOrder, onFileSelected, triggerUpload, handleDeleteAttachment, saveChecklist, goToComparison, submitAction, handleCreateRfq Confirmed from code — /api/v1/procurement/requests/detail @ src/services/admin/procurement.service.js:65 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:99; Confirmed from code — /api/v1/procurement/requests/action @ src/services/admin/procurement.service.js:147 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:143; Confirmed from code — /api/v1/procurement/vendors/list @ src/services/admin/procurement.service.js:213 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:166; Confirmed from code — /api/v1/procurement/orders/list @ src/services/admin/procurement.service.js:232 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:174; Confirmed from code — /api/v1/procurement/attachments/upload @ src/services/admin/procurement.service.js:355 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:365; Confirmed from code — /api/v1/procurement/attachments/list @ src/services/admin/procurement.service.js:342 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:355; Confirmed from code — /api/v1/procurement/attachments/delete @ src/services/admin/procurement.service.js:370 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:378; Confirmed from code — /api/v1/inventory/purchase-requests/checklist @ src/services/admin/inventory.service.js:426 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:562 Confirmed from code — sesi autentik; capability inventory.purchase_requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/procurement/attachments/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris Perbandingan Vendor /inventory/procurement/requests/:id/compare src/views/AdminViews/Inventory/VendorComparisonPage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Perbandingan Vendor pada /inventory/procurement/requests/:id/compare; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=selectedVendor, Vendor; kolom=Item Produk, Qty; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error, Action Denied, PO Confirmed, Cleanup Confirmed from code — openRfqModal, goToOrder, confirmSelection, handleCreateRfq Confirmed from code — /api/v1/procurement/requests/detail @ src/services/admin/procurement.service.js:65 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:99; Confirmed from code — /api/v1/procurement/orders/list @ src/services/admin/procurement.service.js:232 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:174; Confirmed from code — /api/v1/procurement/orders/detail @ src/services/admin/procurement.service.js:255 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:213; Confirmed from code — /api/v1/procurement/vendors/list @ src/services/admin/procurement.service.js:213 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:166; Confirmed from code — /api/v1/procurement/requests/action @ src/services/admin/procurement.service.js:199 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:143; Confirmed from code — /api/v1/procurement/orders/action @ src/services/admin/procurement.service.js:268 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:252 Confirmed from code — sesi autentik; capability inventory.purchase_requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-procurement-requests-edit /inventory/procurement/requests/:id/edit src/views/AdminViews/Inventory/PurchaseRequestCreate.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-procurement-requests-edit pada /inventory/procurement/requests/:id/edit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.request_date, form.required_date, form.location_id, form.academic_year_id, form.budget_program_id, form.budget_line_id, form.reason, form.note, item.product_id, item.qty, item.price_unit, Tanggal PR, +8 lainnya; kolom=Produk, Qty, Est. Harga, Subtotal; filter=form.request_date, form.required_date; sinyal validasi=required, min/max, custom validate; aturan field=form.request_date: required, item.qty: min=1, type=number, item.price_unit: min=0, type=number; Inferred from code — option/status/display-label candidates=Error, Compliance Alert Confirmed from code — addItem, removeItem, goBack, saveDraft, saveAndSubmit Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/procurement/requests/save @ src/services/admin/procurement.service.js:89 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:131; Confirmed from code — /api/v1/procurement/requests/action @ src/services/admin/procurement.service.js:147 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:143; Confirmed from code — /api/v1/procurement/requests/detail @ src/services/admin/procurement.service.js:65 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:99; Confirmed from code — /api/v1/budget/academic-years/list @ src/services/admin/budget.service.js:171 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:191; Confirmed from code — /api/v1/budget/programs/list @ src/services/admin/budget.service.js:9 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:64; Confirmed from code — /api/v1/budget/lines/list @ src/services/admin/budget.service.js:61 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:124; Confirmed from code — /api/v1/budget/programs/detail @ src/services/admin/budget.service.js:24 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:76; Confirmed from code — /api/v1/budget/lines/detail @ src/services/admin/budget.service.js:71 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:133 Confirmed from code — sesi autentik; capability inventory.purchase_requests.edit; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field location_id, academic_year_id, budget_program_id, budget_line_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/procurement/requests/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/procurement/requests, /inventory/procurement/requests/create P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-procurement-requests-create /inventory/procurement/requests/create src/views/AdminViews/Inventory/PurchaseRequestCreate.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-procurement-requests-create pada /inventory/procurement/requests/create; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.request_date, form.required_date, form.location_id, form.academic_year_id, form.budget_program_id, form.budget_line_id, form.reason, form.note, item.product_id, item.qty, item.price_unit, Tanggal PR, +8 lainnya; kolom=Produk, Qty, Est. Harga, Subtotal; filter=form.request_date, form.required_date; sinyal validasi=required, min/max, custom validate; aturan field=form.request_date: required, item.qty: min=1, type=number, item.price_unit: min=0, type=number; Inferred from code — option/status/display-label candidates=Error, Compliance Alert Confirmed from code — addItem, removeItem, goBack, saveDraft, saveAndSubmit Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/procurement/requests/save @ src/services/admin/procurement.service.js:89 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:131; Confirmed from code — /api/v1/procurement/requests/action @ src/services/admin/procurement.service.js:147 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:143; Confirmed from code — /api/v1/procurement/requests/detail @ src/services/admin/procurement.service.js:65 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:99; Confirmed from code — /api/v1/budget/academic-years/list @ src/services/admin/budget.service.js:171 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:191; Confirmed from code — /api/v1/budget/programs/list @ src/services/admin/budget.service.js:9 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:64; Confirmed from code — /api/v1/budget/lines/list @ src/services/admin/budget.service.js:61 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:124; Confirmed from code — /api/v1/budget/programs/detail @ src/services/admin/budget.service.js:24 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:76; Confirmed from code — /api/v1/budget/lines/detail @ src/services/admin/budget.service.js:71 -> ../custom_addons_scola/gcgscola/scola_bos_rkas/controllers/budget_admin_api.py:133 Confirmed from code — sesi autentik; capability inventory.purchase_requests.create; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field location_id, academic_year_id, budget_program_id, budget_line_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/procurement/requests/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/procurement/requests, /inventory/procurement/requests/:id/edit P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-report-buku-induk /inventory/report/buku-induk src/views/AdminViews/Inventory/ReportBukuInduk.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-report-buku-induk pada /inventory/report/buku-induk; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.productId, filters.locationId, Produk, Lokasi; kolom=Nama Produk, Lokasi, Stok, Satuan; filter=filters.productId, filters.locationId; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchReport, exportExcel Confirmed from code — /api/v1/inventory/reports/buku-induk @ src/services/admin/inventory.service.js:648 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:670; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412 Confirmed from code — sesi autentik; capability inventory.reports.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-report-mutasi /inventory/report/mutasi src/views/AdminViews/Inventory/ReportMutasi.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-report-mutasi pada /inventory/report/mutasi; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.dateFrom, filters.dateTo, filters.productId, filters.locationId, Produk, Lokasi; kolom=Referensi, Produk, Ke, Qty, Satuan; filter=filters.dateFrom, filters.dateTo, filters.productId, filters.locationId; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchReport, exportExcel Confirmed from code — /api/v1/inventory/reports/mutasi @ src/services/admin/inventory.service.js:661 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:694; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412 Confirmed from code — sesi autentik; capability inventory.reports.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-report-bku /inventory/reports/bku src/views/AdminViews/Inventory/Reports/BukuKasUmum.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-report-bku pada /inventory/reports/bku; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.startDate, filters.endDate, Sampai Tanggal; kolom=No. Bukti, Uraian, Kode Rekening, Penerimaan, Pengeluaran, Saldo; filter=filters.startDate, filters.endDate; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchReport, exportExcel Confirmed from code — /inventory/budget/ledger @ src/services/admin/inventoryBudgetLedger.service.js:20; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability inventory.reports.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-request-detail /inventory/request/:id src/views/AdminViews/Inventory/RequestDetail.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-request-detail pada /inventory/request/:id; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=actionNote, Catatan, Tambahkan catatan (opsional); kolom=Produk, Qty Diminta, Qty Selesai, Satuan, Status; sinyal validasi=min/max, custom validate; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Akses Ditolak, Error Confirmed from code — goToEdit, handleSubmit, openActionModal, handleMarkDone, submitAction Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381 Confirmed from code — sesi autentik; capability inventory.requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/approvals/inventory/:id, /vice-principal/infrastructure/approvals/:id, /vice-principal/infrastructure/requests/:id P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-request-edit /inventory/request/:id/edit src/views/AdminViews/Inventory/RequestCreate.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-request-edit pada /inventory/request/:id/edit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.picking_type_id, form.scheduled_date, form.location_id, form.location_dest_id, form.origin, form.request_reason, form.budget_line_id, form.note, item.product_id, item.qty, Lokasi Asal, Lokasi Tujuan, +4 lainnya; kolom=Produk, Qty, Stok Tersedia; filter=form.scheduled_date; sinyal validasi=required, min/max, custom validate; aturan field=form.picking_type_id: required, form.scheduled_date: required, form.location_id: required, form.location_dest_id: required, item.qty: min=1, type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — addItem, removeItem, goBack, saveDraft, saveAndSubmit Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/budget-lines/list @ src/services/admin/inventory.service.js:391 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:533; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/write @ src/services/admin/inventory.service.js:194 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:371 Confirmed from code — sesi autentik; capability inventory.requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field picking_type_id, location_id, location_dest_id, budget_line_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/requests, /inventory/request/create P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris inventory-request-create /inventory/request/create src/views/AdminViews/Inventory/RequestCreate.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman inventory-request-create pada /inventory/request/create; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.picking_type_id, form.scheduled_date, form.location_id, form.location_dest_id, form.origin, form.request_reason, form.budget_line_id, form.note, item.product_id, item.qty, Lokasi Asal, Lokasi Tujuan, +4 lainnya; kolom=Produk, Qty, Stok Tersedia; filter=form.scheduled_date; sinyal validasi=required, min/max, custom validate; aturan field=form.picking_type_id: required, form.scheduled_date: required, form.location_id: required, form.location_dest_id: required, item.qty: min=1, type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — addItem, removeItem, goBack, saveDraft, saveAndSubmit Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/budget-lines/list @ src/services/admin/inventory.service.js:391 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:533; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/write @ src/services/admin/inventory.service.js:194 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:371 Confirmed from code — sesi autentik; capability inventory.requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field picking_type_id, location_id, location_dest_id, budget_line_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/requests, /inventory/request/:id/edit P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris principal-inventory-approval-detail /principal/approvals/inventory/:id src/views/AdminViews/Inventory/RequestDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-inventory-approval-detail pada /principal/approvals/inventory/:id; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=actionNote, Catatan, Tambahkan catatan (opsional); kolom=Produk, Qty Diminta, Qty Selesai, Satuan, Status; sinyal validasi=min/max, custom validate; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Akses Ditolak, Error Confirmed from code — goToEdit, handleSubmit, openActionModal, handleMarkDone, submitAction Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381 Confirmed from code — sesi autentik; capability inventory.requests.approve; allowedRoles principal; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/request/:id, /vice-principal/infrastructure/approvals/:id, /vice-principal/infrastructure/requests/:id P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris vice-principal-inventory-approval-detail /vice-principal/infrastructure/approvals/:id src/views/AdminViews/Inventory/RequestDetail.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman vice-principal-inventory-approval-detail pada /vice-principal/infrastructure/approvals/:id; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=actionNote, Catatan, Tambahkan catatan (opsional); kolom=Produk, Qty Diminta, Qty Selesai, Satuan, Status; sinyal validasi=min/max, custom validate; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Akses Ditolak, Error Confirmed from code — goToEdit, handleSubmit, openActionModal, handleMarkDone, submitAction Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381 Confirmed from code — sesi autentik; capability inventory.requests.approve; allowedRoles vice_principal_infrastructure; feature flag scola_bos_rkas; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/request/:id, /principal/approvals/inventory/:id, /vice-principal/infrastructure/requests/:id P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Inventaris vice-principal-inventory-request-detail /vice-principal/infrastructure/requests/:id src/views/AdminViews/Inventory/RequestDetail.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman vice-principal-inventory-request-detail pada /vice-principal/infrastructure/requests/:id; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=actionNote, Catatan, Tambahkan catatan (opsional); kolom=Produk, Qty Diminta, Qty Selesai, Satuan, Status; sinyal validasi=min/max, custom validate; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Akses Ditolak, Error Confirmed from code — goToEdit, handleSubmit, openActionModal, handleMarkDone, submitAction Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381 Confirmed from code — sesi autentik; capability inventory.requests.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; parameter route id; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/request/:id, /principal/approvals/inventory/:id, /vice-principal/infrastructure/approvals/:id P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Kepegawaian (42 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Kepegawaian counseling-payslip-detail /counseling/employee/payslip/:id src/views/FacultyViews/Payroll/PayslipDetail.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-payslip-detail pada /counseling/employee/payslip/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Qty Confirmed from code — router.back, downloadPDF Missing or unclear — /api/payroll/my/payslips/:param @ src/services/hr/employeePayrollSelf.service.js:22; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles counselor; feature flag scola_payroll; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/employee/payslip/:id, /librarian/employee/payslip/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian PayslipDetailFaculty /faculty/employee/payslip/:id src/views/FacultyViews/Payroll/PayslipDetail.vue:1 Confirmed from code — teacher, homeroom, lab_technician, principal, foundation, foundation_chairman, treasurer, admin_staff, counselor, inventory_officer, librarian; guard route memakai allowedRoles Inferred from code — halaman PayslipDetailFaculty pada /faculty/employee/payslip/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Qty Confirmed from code — router.back, downloadPDF Missing or unclear — /api/payroll/my/payslips/:param @ src/services/hr/employeePayrollSelf.service.js:22; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles teacher, homeroom, lab_technician, principal, foundation, foundation_chairman, treasurer, admin_staff, counselor, inventory_officer, librarian; feature flag scola_payroll; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/employee/payslip/:id, /librarian/employee/payslip/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian faculty-hr-hub /faculty/hr src/views/FacultyViews/TeacherSectionHub.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-hr-hub pada /faculty/hr; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles teacher, homeroom; feature flag scola_payroll; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/assessment, /faculty/digital-learning, /faculty/student-affairs, /faculty/teaching P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-dashboard /hr-dashboard src/views/AdminViews/HR/HRDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-dashboard pada /hr-dashboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateTo Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/hr/contract.service.js, src/services/hr/department.service.js, src/services/hr/employee.service.js, src/services/hr/hrAdminApi.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.overview.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-attendance-detail /hr/attendance/:id src/views/AttendanceManagement/Staff/AttendanceDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-attendance-detail pada /hr/attendance/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goBack, editAttendance, confirmDelete, fetchAttendance, deleteAttendance Confirmed from code — /api/v1/attendance/validate-location @ src/views/AttendanceManagement/Staff/AttendanceDetail.vue:698 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:130; Confirmed from code — /api/v1/attendance/hr-admin/detail @ src/services/admin/hrAttendanceAdmin.service.js:23 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:272; Confirmed from code — /api/v1/attendance/hr-admin/scola-link @ src/services/admin/hrAttendanceAdmin.service.js:65 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:283; Confirmed from code — /api/v1/attendance/hr-admin/delete @ src/services/admin/hrAttendanceAdmin.service.js:58 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:411 Confirmed from code — sesi autentik; capability hr.attendance.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/hr-admin/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/attendance/:id/edit, /principal/hr/attendance, /hr/attendance, /principal/hr/attendance/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-attendance-edit /hr/attendance/:id/edit src/views/AttendanceManagement/Staff/AttendanceForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-attendance-edit pada /hr/attendance/:id/edit; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=formData.employee_id, formData.check_in, formData.check_out, formData.in_latitude, formData.in_longitude, formData.out_latitude, formData.out_longitude, formData.in_mode, e.g., -6.2088, e.g., 106.8456; sinyal validasi=required; aturan field=formData.employee_id: required, formData.check_in: required, type=datetime-local, formData.check_out: type=datetime-local, formData.in_latitude: type=number, formData.in_longitude: type=number, formData.out_latitude: type=number, formData.out_longitude: type=number; Inferred from code — option/status/display-label candidates=Manual, Kiosk, Systray, Error Confirmed from code — handleSubmit, goBack Confirmed from code — /api/v1/attendance/hr-admin/employee-options @ src/services/admin/hrAttendanceAdmin.service.js:45 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:359; Confirmed from code — /api/v1/attendance/hr-admin/detail @ src/services/admin/hrAttendanceAdmin.service.js:23 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:272; Confirmed from code — /api/v1/attendance/hr-admin/save @ src/services/admin/hrAttendanceAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:381 Confirmed from code — sesi autentik; capability hr.attendance.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field employee_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/hr-admin/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/attendance, /hr/attendance/create P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-attendance-create /hr/attendance/create src/views/AttendanceManagement/Staff/AttendanceForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-attendance-create pada /hr/attendance/create; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=formData.employee_id, formData.check_in, formData.check_out, formData.in_latitude, formData.in_longitude, formData.out_latitude, formData.out_longitude, formData.in_mode, e.g., -6.2088, e.g., 106.8456; sinyal validasi=required; aturan field=formData.employee_id: required, formData.check_in: required, type=datetime-local, formData.check_out: type=datetime-local, formData.in_latitude: type=number, formData.in_longitude: type=number, formData.out_latitude: type=number, formData.out_longitude: type=number; Inferred from code — option/status/display-label candidates=Manual, Kiosk, Systray, Error Confirmed from code — handleSubmit, goBack Confirmed from code — /api/v1/attendance/hr-admin/employee-options @ src/services/admin/hrAttendanceAdmin.service.js:45 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:359; Confirmed from code — /api/v1/attendance/hr-admin/detail @ src/services/admin/hrAttendanceAdmin.service.js:23 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:272; Confirmed from code — /api/v1/attendance/hr-admin/save @ src/services/admin/hrAttendanceAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:381 Confirmed from code — sesi autentik; capability hr.attendance.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field employee_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/hr-admin/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/attendance, /hr/attendance/:id/edit P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-attendance-period /hr/attendance/period/:employeeId src/views/AttendanceManagement/Staff/AttendancePeriodDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-attendance-period pada /hr/attendance/period/:employeeId; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Band potongan Confirmed from code — goBack, loadPeriod, openPunchDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/hr/attendance-summary.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.attendance_summary.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; parameter route employeeId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; employee/company dan contract/periode yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/hr/attendance/period/:employeeId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-config-accounting /hr/config/accounting src/views/AdminViews/HR/config/AccountingConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-config-accounting pada /hr/config/accounting; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=formData.journal_id, formData.salary_expense_account, formData.bpjs_expense_account, formData.salary_payable_account, formData.tax_payable_account, formData.bpjs_payable_account, Jurnal Payroll, Beban Gaji, Beban BPJS Perusahaan, Utang Gaji, Utang PPh21, Utang BPJS; sinyal validasi=required; aturan field=formData.journal_id: required, formData.salary_expense_account: required, formData.salary_payable_account: required Confirmed from code — 🔄 Reset, saveConfig, resetForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useErrorHandler.js, src/composables/useNotification.js, src/services/accounting/journal-entry.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.accounting.config; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-config-bpjs /hr/config/bpjs src/views/AdminViews/HR/config/BPJSConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-config-bpjs pada /hr/config/bpjs; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.bpjs_kesehatan_enabled, formData.bpjs_kesehatan_rate_company, formData.bpjs_kesehatan_rate_employee, formData.bpjs_kesehatan_max_salary, formData.bpjs_jht_enabled, formData.bpjs_jht_rate_company, formData.bpjs_jht_rate_employee, formData.bpjs_jp_enabled, formData.bpjs_jp_rate_company, formData.bpjs_jp_rate_employee, formData.bpjs_jp_max_salary, formData.bpjs_jkk_enabled, +13 lainnya; filter=formData.bpjs_kesehatan_rate_company, formData.bpjs_jht_rate_company, formData.bpjs_jp_rate_company; sinyal validasi=min/max; aturan field=formData.bpjs_kesehatan_enabled: type=checkbox, formData.bpjs_kesehatan_rate_company: min=0, type=number, formData.bpjs_kesehatan_rate_employee: min=0, type=number, formData.bpjs_kesehatan_max_salary: type=number, formData.bpjs_jht_enabled: type=checkbox, formData.bpjs_jht_rate_company: type=number, formData.bpjs_jht_rate_employee: type=number, formData.bpjs_jp_enabled: type=checkbox, formData.bpjs_jp_rate_company: type=number, formData.bpjs_jp_rate_employee: type=number, +5 lainnya Confirmed from code — 🔄 Reset, saveConfig, updateJKKRate, resetToDefault Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useErrorHandler.js, src/composables/useNotification.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.bpjs.config; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-config-tax /hr/config/tax src/views/AdminViews/HR/config/TaxConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-config-tax pada /hr/config/tax; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.tax_method, formData.ptkp_rates[status], bracket.min, bracket.max, bracket.rate, formData.position_allowance_rate, formData.position_allowance_max, calculatorInput.salary, calculatorInput.ptkp_status, Metode Pajak, Persentase (%), Maksimum per Tahun (Rp), +2 lainnya; kolom=Layer, PKP Minimum (Rp), PKP Maksimum (Rp), Tarif (%); filter=formData.ptkp_rates[status], calculatorInput.ptkp_status, Status PTKP; sinyal validasi=min/max; aturan field=formData.ptkp_rates[status]: type=number, bracket.min: type=number, bracket.max: type=number, bracket.rate: min=0, max=100, type=number, formData.position_allowance_rate: min=0, max=100, type=number, formData.position_allowance_max: type=number, calculatorInput.salary: type=number Confirmed from code — 🔄 Reset, saveConfig, calculateTaxPreview, resetToDefault Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useErrorHandler.js, src/composables/useNotification.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.tax.config; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-contract-detail /hr/contract/:id src/views/AdminViews/HR/contract/ContractForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-contract-detail pada /hr/contract/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.employee_id, formData.teacher_status, formData.department_id, formData.job_id, formData.golongan, formData.masa_kerja_tahun, formData.date_start, formData.date_end, formData.trial_date_end, formData.contract_type_id, formData.resource_calendar_id, +19 lainnya; filter=formData.teacher_status, formData.date_start, formData.date_end, formData.trial_date_end, formData.certification_date, Status Kepegawaian, date_start; sinyal validasi=required, custom validate; aturan field=formData.name: required, formData.employee_id: required, formData.masa_kerja_tahun: type=number, formData.date_start: required, type=date, formData.date_end: type=date, formData.trial_date_end: type=date, formData.resource_calendar_id: required, formData.schedule_pay: required, formData.wage: type=number, formData.struct_id: required, +11 lainnya; Inferred from code — option/status/display-label candidates=Bulanan, Mingguan, Dua Mingguan, Dua Bulanan, Triwulanan, Semesteran, Tahunan, PNS (Pegawai Negeri Sipil), I/A, I/B, +16 lainnya Confirmed from code — submitForm, router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/common/jsonRpc.js, src/services/hr/contract.service.js, src/services/hr/department.service.js, src/services/hr/employee.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.contracts.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field employee_id, department_id, job_id, contract_type_id, resource_calendar_id, structure_type_id, +1 lainnya Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/contract, /hr/contract/:id/edit, /hr/contract/create P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-contract-edit /hr/contract/:id/edit src/views/AdminViews/HR/contract/ContractForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-contract-edit pada /hr/contract/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.employee_id, formData.teacher_status, formData.department_id, formData.job_id, formData.golongan, formData.masa_kerja_tahun, formData.date_start, formData.date_end, formData.trial_date_end, formData.contract_type_id, formData.resource_calendar_id, +19 lainnya; filter=formData.teacher_status, formData.date_start, formData.date_end, formData.trial_date_end, formData.certification_date, Status Kepegawaian, date_start; sinyal validasi=required, custom validate; aturan field=formData.name: required, formData.employee_id: required, formData.masa_kerja_tahun: type=number, formData.date_start: required, type=date, formData.date_end: type=date, formData.trial_date_end: type=date, formData.resource_calendar_id: required, formData.schedule_pay: required, formData.wage: type=number, formData.struct_id: required, +11 lainnya; Inferred from code — option/status/display-label candidates=Bulanan, Mingguan, Dua Mingguan, Dua Bulanan, Triwulanan, Semesteran, Tahunan, PNS (Pegawai Negeri Sipil), I/A, I/B, +16 lainnya Confirmed from code — submitForm, router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/common/jsonRpc.js, src/services/hr/contract.service.js, src/services/hr/department.service.js, src/services/hr/employee.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.contracts.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field employee_id, department_id, job_id, contract_type_id, resource_calendar_id, structure_type_id, +1 lainnya Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/contract, /hr/contract/:id, /hr/contract/create P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-contract-create /hr/contract/create src/views/AdminViews/HR/contract/ContractForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-contract-create pada /hr/contract/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.employee_id, formData.teacher_status, formData.department_id, formData.job_id, formData.golongan, formData.masa_kerja_tahun, formData.date_start, formData.date_end, formData.trial_date_end, formData.contract_type_id, formData.resource_calendar_id, +19 lainnya; filter=formData.teacher_status, formData.date_start, formData.date_end, formData.trial_date_end, formData.certification_date, Status Kepegawaian, date_start; sinyal validasi=required, custom validate; aturan field=formData.name: required, formData.employee_id: required, formData.masa_kerja_tahun: type=number, formData.date_start: required, type=date, formData.date_end: type=date, formData.trial_date_end: type=date, formData.resource_calendar_id: required, formData.schedule_pay: required, formData.wage: type=number, formData.struct_id: required, +11 lainnya; Inferred from code — option/status/display-label candidates=Bulanan, Mingguan, Dua Mingguan, Dua Bulanan, Triwulanan, Semesteran, Tahunan, PNS (Pegawai Negeri Sipil), I/A, I/B, +16 lainnya Confirmed from code — submitForm, router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/common/jsonRpc.js, src/services/hr/contract.service.js, src/services/hr/department.service.js, src/services/hr/employee.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.contracts.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field employee_id, department_id, job_id, contract_type_id, resource_calendar_id, structure_type_id, +1 lainnya Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/contract, /hr/contract/:id, /hr/contract/:id/edit P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-document-repo /hr/documents src/views/AdminViews/HR/HRDocumentRepo.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-document-repo pada /hr/documents; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.search, filters.document_type, filters.state, form.employee_id, form.name, form.document_type, form.document_number, form.issue_date, form.expiry_date, form.issuing_authority, form.notes, Pegawai, +7 lainnya; kolom=Pegawai, Dokumen, Jenis, Nomor, Tgl Terbit, Kadaluarsa, File; filter=filters.search, filters.document_type, filters.state, form.issue_date, form.expiry_date; sinyal validasi=required; aturan field=filters.search: type=text, form.employee_id: required, form.name: required, type=text, form.document_type: required, form.document_number: type=text, form.issue_date: type=date, form.expiry_date: type=date, form.issuing_authority: type=text, field: type=file; Inferred from code — option/status/display-label candidates=Dokumen Tersimpan Confirmed from code — set showCreateModal, fetchDocuments, set selectedDoc, handleCreate, handleFileUpload Confirmed from code — /api/v1/hr/documents @ src/services/hr/hrDocument.service.js:124 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/hr_document_api.py:48; Confirmed from code — /api/v1/hr/document-types @ src/services/hr/hrDocument.service.js:137 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/hr_document_api.py:270 Confirmed from code — sesi autentik; capability hr.employees.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field employee_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-employee-detail /hr/employee/:id src/views/AdminViews/HR/employee/EmployeeForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-employee-detail pada /hr/employee/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.gender, formData.birthday, formData.place_of_birth, formData.marital, formData.religion, formData.children, formData.spouse_complete_name, formData.private_street, nikValue, formData.work_email, formData.private_email, +19 lainnya; filter=formData.ptkp_status, formData.pkg_date, Status Pernikahan, Status PTKP; sinyal validasi=required, min/max, custom validate; aturan field=field: type=file, formData.name: required, formData.birthday: type=date, formData.children: type=number, nikValue: maxlength=16, formData.work_email: type=email, formData.private_email: type=email, formData.daily_allowance_amount: min=0, type=number, formData.employee_type: required, formData.pin: type=password, +2 lainnya; Inferred from code — option/status/display-label candidates=Laki-laki, Perempuan, Menikah, Tinggal Bersama, Duda/Janda, Cerai, Islam, Kristen, Katolik, Hindu, +15 lainnya Confirmed from code — Buka Data Guru, router.push, submitForm, handleImageUpload, $refs.fileInput.click, generateBarcode Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350; Confirmed from code — /api/v1/admin/employees/detail @ src/services/admin/employee.service.js:35 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:380; Confirmed from code — /api/v1/admin/employees/save @ src/services/admin/employee.service.js:42 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:391 Confirmed from code — sesi autentik; capability hr.employees.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field department_id, job_id, parent_id, leave_manager_id, coach_id, resource_calendar_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/employees/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/employee, /hr/employee/:id/edit, /hr/employee/create P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-employee-edit /hr/employee/:id/edit src/views/AdminViews/HR/employee/EmployeeForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-employee-edit pada /hr/employee/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.gender, formData.birthday, formData.place_of_birth, formData.marital, formData.religion, formData.children, formData.spouse_complete_name, formData.private_street, nikValue, formData.work_email, formData.private_email, +19 lainnya; filter=formData.ptkp_status, formData.pkg_date, Status Pernikahan, Status PTKP; sinyal validasi=required, min/max, custom validate; aturan field=field: type=file, formData.name: required, formData.birthday: type=date, formData.children: type=number, nikValue: maxlength=16, formData.work_email: type=email, formData.private_email: type=email, formData.daily_allowance_amount: min=0, type=number, formData.employee_type: required, formData.pin: type=password, +2 lainnya; Inferred from code — option/status/display-label candidates=Laki-laki, Perempuan, Menikah, Tinggal Bersama, Duda/Janda, Cerai, Islam, Kristen, Katolik, Hindu, +15 lainnya Confirmed from code — Buka Data Guru, router.push, submitForm, handleImageUpload, $refs.fileInput.click, generateBarcode Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350; Confirmed from code — /api/v1/admin/employees/detail @ src/services/admin/employee.service.js:35 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:380; Confirmed from code — /api/v1/admin/employees/save @ src/services/admin/employee.service.js:42 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:391 Confirmed from code — sesi autentik; capability hr.employees.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field department_id, job_id, parent_id, leave_manager_id, coach_id, resource_calendar_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/employees/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/employee, /hr/employee/:id, /hr/employee/create P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-employee-create /hr/employee/create src/views/AdminViews/HR/employee/EmployeeForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-employee-create pada /hr/employee/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.gender, formData.birthday, formData.place_of_birth, formData.marital, formData.religion, formData.children, formData.spouse_complete_name, formData.private_street, nikValue, formData.work_email, formData.private_email, +19 lainnya; filter=formData.ptkp_status, formData.pkg_date, Status Pernikahan, Status PTKP; sinyal validasi=required, min/max, custom validate; aturan field=field: type=file, formData.name: required, formData.birthday: type=date, formData.children: type=number, nikValue: maxlength=16, formData.work_email: type=email, formData.private_email: type=email, formData.daily_allowance_amount: min=0, type=number, formData.employee_type: required, formData.pin: type=password, +2 lainnya; Inferred from code — option/status/display-label candidates=Laki-laki, Perempuan, Menikah, Tinggal Bersama, Duda/Janda, Cerai, Islam, Kristen, Katolik, Hindu, +15 lainnya Confirmed from code — Buka Data Guru, router.push, submitForm, handleImageUpload, $refs.fileInput.click, generateBarcode Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350; Confirmed from code — /api/v1/admin/employees/detail @ src/services/admin/employee.service.js:35 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:380; Confirmed from code — /api/v1/admin/employees/save @ src/services/admin/employee.service.js:42 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:391 Confirmed from code — sesi autentik; capability hr.employees.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field department_id, job_id, parent_id, leave_manager_id, coach_id, resource_calendar_id, +1 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/employees/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/employee, /hr/employee/:id, /hr/employee/:id/edit P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian upload-employee /hr/employee/import src/views/AdminViews/HR/employee/UploadEmployee.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman upload-employee pada /hr/employee/import; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=editable.name, editable.nik, editable.gender, editable.religion, editable.birth_place, editable.birthday, editable.job_title, editable.department, editable.job, editable.work_email, editable.mobile_phone, editable.work_phone, +16 lainnya; kolom=NIK, Jenis Kelamin, Tempat Lahir, Tanggal Lahir, Jabatan, Departemen, Posisi, No HP, NPWP, Agama; filter=searchQuery; sinyal validasi=min/max; aturan field=editable.birthday: type=date, editable.work_email: type=email; Inferred from code — option/status/display-label candidates=25, 50, 100, Laki-laki, Perempuan, Upload karyawan selesai, Error, Data Karyawan, Upload Karyawan Confirmed from code — downloadTemplate, set uploadResultSummary, prevItem, nextItem, applyEdit, handlePageSizeChange, deleteSelectedPreview, uploadToOdoo, deleteOne Confirmed from code — /api/v1/admin/employees/import @ src/services/admin/employee.service.js:58 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:460 Confirmed from code — sesi autentik; capability hr.employees.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; source file dan master reference yang sesuai format import Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/employees/import; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-employment-history /hr/employment-history src/views/AdminViews/HR/HREmploymentHistory.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-employment-history pada /hr/employment-history; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.search, filters.change_type, form.employee_id, form.change_type, form.effective_date, form.job_title, form.golongan, form.sk_number, form.sk_date, form.teacher_status, form.notes, Pegawai, +8 lainnya; filter=filters.search, filters.change_type, form.effective_date, form.sk_date, form.teacher_status, Status Kepegawaian; sinyal validasi=required; aturan field=filters.search: type=text, form.employee_id: required, form.change_type: required, form.effective_date: required, type=date, form.job_title: type=text, form.sk_number: type=text, form.sk_date: type=date; Inferred from code — option/status/display-label candidates=Pengangkatan Awal, Kenaikan Pangkat/Golongan, Mutasi/Pindah Tugas, Perubahan Jabatan, Perpanjangan Kontrak, Perubahan Status Kepegawaian, Sertifikasi, Pensiun, Pengunduran Diri, Pemberhentian, +18 lainnya Confirmed from code — set showCreateModal, fetchHistory, handleCreate Confirmed from code — /api/v1/hr/history @ src/services/hr/hrDocument.service.js:158 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/hr_document_api.py:180 Confirmed from code — sesi autentik; capability hr.employees.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field employee_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-leave-approvals /hr/leave/approvals src/views/AdminViews/HR/leave/LeaveApprovalDashboard.vue:1 Inferred from code — foundation_hr_admin; diturunkan dari pola capability frontend untuk hr.leave.manage; izin sesi backend dapat berbeda Inferred from code — halaman hr-leave-approvals pada /hr/leave/approvals; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, filterLeaveType, rejectReason, Jelaskan alasan penolakan..., Alasan Penolakan *; filter=searchQuery, filterLeaveType; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Menunggu Approval, Disetujui, Ditolak, Diajukan, Manager, HR Confirmed from code — set activeTab, confirmReject, closeRejectModal Confirmed from code — /api/workflow/by-entity @ src/services/workflow/workflow.service.js:45; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/workflow/:param/approve @ src/services/workflow/workflow.service.js:62; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/workflow/:param/reject @ src/services/workflow/workflow.service.js:81; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability hr.leave.manage; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/workflow/:param/approve, /api/workflow/:param/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/timeoff P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Kepegawaian hr-leave-request /hr/leave/request src/views/AdminViews/HR/leave/LeaveRequestForm.vue:1 Inferred from code — foundation_hr_admin; diturunkan dari pola capability frontend untuk hr.leave.manage; izin sesi backend dapat berbeda Inferred from code — halaman hr-leave-request pada /hr/leave/request; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.employee_id, formData.leave_type_id, formData.date_from, formData.date_to, formData.reason, Pegawai, Tanggal Mulai, Tanggal Selesai, Jelaskan alasan pengajuan cuti..., File Pendukung (opsional, max 5MB); filter=formData.date_from, formData.date_to; sinyal validasi=required; aturan field=formData.employee_id: required, formData.leave_type_id: required, formData.date_from: required, type=date, formData.date_to: required, type=date, formData.reason: required, field: type=file Confirmed from code — submitLeaveRequest, handleFileUpload, resetForm Confirmed from code — /api/workflow/initiate @ src/services/workflow/workflow.service.js:19; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability hr.leave.manage; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field employee_id, leave_type_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /hr/leave/requests P1 — form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Kepegawaian hr-payslip-batch /hr/payslip-batch src/views/AdminViews/HR/payroll/PayslipBatch.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-payslip-batch pada /hr/payslip-batch; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=batchData.name, batchData.date_start, batchData.date_end, batchData.structure_id, employeeSearch, filterDepartment, Nama Batch, Contoh: Gaji Desember 2024, Tanggal Mulai, Tanggal Akhir, Struktur Gaji; filter=batchData.name, batchData.date_start, batchData.date_end, batchData.structure_id, employeeSearch, filterDepartment, Nama Batch; sinyal validasi=required; aturan field=batchData.name: required, batchData.date_start: required, type=date, batchData.date_end: required, type=date, employeeSearch: type=search, field: type=checkbox; Inferred from code — option/status/display-label candidates=Konfigurasi, Proses, Proses Selesai Confirmed from code — goToStep, toggleSelectAll, toggleEmployee, generatePayslips, router.push, resetBatch Confirmed from code — /api/v1/payroll/admin/options/employees @ src/services/admin/payslipAdmin.service.js:35 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:249; Confirmed from code — /api/v1/payroll/admin/options/structures @ src/services/admin/payslipAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:259; Confirmed from code — /api/v1/payroll/admin/options/departments @ src/services/admin/payslipAdmin.service.js:45 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:267; Confirmed from code — /api/v1/payroll/admin/batch/create @ src/services/admin/payslipAdmin.service.js:160 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:523 Confirmed from code — sesi autentik; capability hr.payslip_batch.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field structure_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/admin/batch/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/payslip P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-payslip-detail /hr/payslip/:id src/views/AdminViews/HR/payroll/PayslipForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-payslip-detail pada /hr/payslip/:id; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=formData.employee_id, formData.date_from, formData.date_to, newInput.name, newInput.code, newInput.amount, activeTab, formData.note, Tanggal Mulai, Tanggal Selesai, Nama Slip Gaji, Otomatis terisi, +4 lainnya; kolom=Jumlah Hari, Jumlah Jam, Kontrak, Qty, Rate; filter=formData.date_from, formData.date_to; sinyal validasi=required, custom validate; aturan field=formData.employee_id: required, formData.date_from: required, type=date, formData.date_to: required, type=date, newInput.name: type=text, newInput.code: type=text, newInput.amount: type=number; Inferred from code — option/status/display-label candidates=Hari Kerja & Input, Perhitungan Gaji, Informasi Akuntansi, Error Confirmed from code — addNewInputRow, removeTemporaryInput, saveTemporaryInput, cancelNewInput, removeInput, saveNewInput, refreshAttendance, router.back, savePayslip, updatePayslip, computeSheet, confirmPayslip, cancelPayslip, refundPayslip, +1 lainnya Confirmed from code — /api/v1/payroll/admin/detail @ src/services/admin/payslipAdmin.service.js:28 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:218; Confirmed from code — /api/v1/payroll/admin/options/employees @ src/services/admin/payslipAdmin.service.js:35 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:249; Confirmed from code — /api/v1/payroll/admin/options/structures @ src/services/admin/payslipAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:259; Confirmed from code — /api/v1/payroll/admin/options/contracts @ src/services/admin/payslipAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:276; Confirmed from code — /api/v1/payroll/admin/onchange-employee @ src/services/admin/payslipAdmin.service.js:62 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:295; Confirmed from code — /api/v1/payroll/admin/save @ src/services/admin/payslipAdmin.service.js:78 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:326; Confirmed from code — /api/v1/payroll/admin/update @ src/services/admin/payslipAdmin.service.js:89 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:362; Confirmed from code — /api/v1/payroll/admin/compute @ src/services/admin/payslipAdmin.service.js:97 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:366; Confirmed from code — /api/v1/payroll/admin/confirm @ src/services/admin/payslipAdmin.service.js:104 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:391; Confirmed from code — /api/v1/payroll/admin/cancel @ src/services/admin/payslipAdmin.service.js:111 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:395; Confirmed from code — /api/v1/payroll/admin/draft @ src/services/admin/payslipAdmin.service.js:118 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:399; Confirmed from code — /api/v1/payroll/admin/refund @ src/services/admin/payslipAdmin.service.js:125 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:403; Confirmed from code — /api/v1/payroll/admin/refresh-attendance @ src/services/admin/payslipAdmin.service.js:132 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:416; Confirmed from code — /api/v1/payroll/admin/input/save @ src/services/admin/payslipAdmin.service.js:139 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:422; Confirmed from code — /api/v1/payroll/admin/input/delete @ src/services/admin/payslipAdmin.service.js:147 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:509 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field employee_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/admin/save, /api/v1/payroll/admin/update, /api/v1/payroll/admin/compute, /api/v1/payroll/admin/confirm, /api/v1/payroll/admin/cancel, /api/v1/payroll/admin/input/save, /api/v1/payroll/admin/input/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/payslip, /hr/payslip/:id/edit, /hr/payslip/create P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-payslip-edit /hr/payslip/:id/edit src/views/AdminViews/HR/payroll/PayslipForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-payslip-edit pada /hr/payslip/:id/edit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=formData.employee_id, formData.date_from, formData.date_to, newInput.name, newInput.code, newInput.amount, activeTab, formData.note, Tanggal Mulai, Tanggal Selesai, Nama Slip Gaji, Otomatis terisi, +4 lainnya; kolom=Jumlah Hari, Jumlah Jam, Kontrak, Qty, Rate; filter=formData.date_from, formData.date_to; sinyal validasi=required, custom validate; aturan field=formData.employee_id: required, formData.date_from: required, type=date, formData.date_to: required, type=date, newInput.name: type=text, newInput.code: type=text, newInput.amount: type=number; Inferred from code — option/status/display-label candidates=Hari Kerja & Input, Perhitungan Gaji, Informasi Akuntansi, Error Confirmed from code — addNewInputRow, removeTemporaryInput, saveTemporaryInput, cancelNewInput, removeInput, saveNewInput, refreshAttendance, router.back, savePayslip, updatePayslip, computeSheet, confirmPayslip, cancelPayslip, refundPayslip, +1 lainnya Confirmed from code — /api/v1/payroll/admin/detail @ src/services/admin/payslipAdmin.service.js:28 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:218; Confirmed from code — /api/v1/payroll/admin/options/employees @ src/services/admin/payslipAdmin.service.js:35 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:249; Confirmed from code — /api/v1/payroll/admin/options/structures @ src/services/admin/payslipAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:259; Confirmed from code — /api/v1/payroll/admin/options/contracts @ src/services/admin/payslipAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:276; Confirmed from code — /api/v1/payroll/admin/onchange-employee @ src/services/admin/payslipAdmin.service.js:62 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:295; Confirmed from code — /api/v1/payroll/admin/save @ src/services/admin/payslipAdmin.service.js:78 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:326; Confirmed from code — /api/v1/payroll/admin/update @ src/services/admin/payslipAdmin.service.js:89 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:362; Confirmed from code — /api/v1/payroll/admin/compute @ src/services/admin/payslipAdmin.service.js:97 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:366; Confirmed from code — /api/v1/payroll/admin/confirm @ src/services/admin/payslipAdmin.service.js:104 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:391; Confirmed from code — /api/v1/payroll/admin/cancel @ src/services/admin/payslipAdmin.service.js:111 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:395; Confirmed from code — /api/v1/payroll/admin/draft @ src/services/admin/payslipAdmin.service.js:118 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:399; Confirmed from code — /api/v1/payroll/admin/refund @ src/services/admin/payslipAdmin.service.js:125 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:403; Confirmed from code — /api/v1/payroll/admin/refresh-attendance @ src/services/admin/payslipAdmin.service.js:132 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:416; Confirmed from code — /api/v1/payroll/admin/input/save @ src/services/admin/payslipAdmin.service.js:139 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:422; Confirmed from code — /api/v1/payroll/admin/input/delete @ src/services/admin/payslipAdmin.service.js:147 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:509 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field employee_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/admin/save, /api/v1/payroll/admin/update, /api/v1/payroll/admin/compute, /api/v1/payroll/admin/confirm, /api/v1/payroll/admin/cancel, /api/v1/payroll/admin/input/save, /api/v1/payroll/admin/input/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/payslip, /hr/payslip/:id, /hr/payslip/create P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-payslip-create /hr/payslip/create src/views/AdminViews/HR/payroll/PayslipForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-payslip-create pada /hr/payslip/create; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=formData.employee_id, formData.date_from, formData.date_to, newInput.name, newInput.code, newInput.amount, activeTab, formData.note, Tanggal Mulai, Tanggal Selesai, Nama Slip Gaji, Otomatis terisi, +4 lainnya; kolom=Jumlah Hari, Jumlah Jam, Kontrak, Qty, Rate; filter=formData.date_from, formData.date_to; sinyal validasi=required, custom validate; aturan field=formData.employee_id: required, formData.date_from: required, type=date, formData.date_to: required, type=date, newInput.name: type=text, newInput.code: type=text, newInput.amount: type=number; Inferred from code — option/status/display-label candidates=Hari Kerja & Input, Perhitungan Gaji, Informasi Akuntansi, Error Confirmed from code — addNewInputRow, removeTemporaryInput, saveTemporaryInput, cancelNewInput, removeInput, saveNewInput, refreshAttendance, router.back, savePayslip, updatePayslip, computeSheet, confirmPayslip, cancelPayslip, refundPayslip, +1 lainnya Confirmed from code — /api/v1/payroll/admin/detail @ src/services/admin/payslipAdmin.service.js:28 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:218; Confirmed from code — /api/v1/payroll/admin/options/employees @ src/services/admin/payslipAdmin.service.js:35 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:249; Confirmed from code — /api/v1/payroll/admin/options/structures @ src/services/admin/payslipAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:259; Confirmed from code — /api/v1/payroll/admin/options/contracts @ src/services/admin/payslipAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:276; Confirmed from code — /api/v1/payroll/admin/onchange-employee @ src/services/admin/payslipAdmin.service.js:62 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:295; Confirmed from code — /api/v1/payroll/admin/save @ src/services/admin/payslipAdmin.service.js:78 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:326; Confirmed from code — /api/v1/payroll/admin/update @ src/services/admin/payslipAdmin.service.js:89 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:362; Confirmed from code — /api/v1/payroll/admin/compute @ src/services/admin/payslipAdmin.service.js:97 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:366; Confirmed from code — /api/v1/payroll/admin/confirm @ src/services/admin/payslipAdmin.service.js:104 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:391; Confirmed from code — /api/v1/payroll/admin/cancel @ src/services/admin/payslipAdmin.service.js:111 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:395; Confirmed from code — /api/v1/payroll/admin/draft @ src/services/admin/payslipAdmin.service.js:118 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:399; Confirmed from code — /api/v1/payroll/admin/refund @ src/services/admin/payslipAdmin.service.js:125 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:403; Confirmed from code — /api/v1/payroll/admin/refresh-attendance @ src/services/admin/payslipAdmin.service.js:132 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:416; Confirmed from code — /api/v1/payroll/admin/input/save @ src/services/admin/payslipAdmin.service.js:139 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:422; Confirmed from code — /api/v1/payroll/admin/input/delete @ src/services/admin/payslipAdmin.service.js:147 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:509 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field employee_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/admin/save, /api/v1/payroll/admin/update, /api/v1/payroll/admin/compute, /api/v1/payroll/admin/confirm, /api/v1/payroll/admin/cancel, /api/v1/payroll/admin/input/save, /api/v1/payroll/admin/input/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/payslip, /hr/payslip/:id, /hr/payslip/:id/edit P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-salary-rule-list /hr/salary-rule src/views/AdminViews/HR/payroll/SalaryRuleList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-salary-rule-list pada /hr/salary-rule; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=activeCategory, searchQuery, formData.name, formData.code, formData.category_id, formData.register_id, formData.sequence, formData.amount_select, formData.amount_fix, formData.quantity, formData.amount_percentage, formData.amount_percentage_base, +18 lainnya; filter=searchQuery; sinyal validasi=required, rules/schema; aturan field=searchQuery: type=search, formData.name: required, formData.code: required, formData.category_id: required, formData.sequence: type=number, formData.amount_select: required, formData.amount_fix: type=number, formData.quantity: type=number, formData.amount_percentage: type=number, formData.active: type=checkbox, +1 lainnya; Inferred from code — option/status/display-label candidates=Jumlah Tetap, Persentase, Kode Python, Error Confirmed from code — openModal, confirmDelete, saveRule, deleteRule Confirmed from code — /api/v1/payroll/config/salary-rules/list @ src/services/admin/payrollConfigAdmin.service.js:4 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:61; Confirmed from code — /api/v1/payroll/config/salary-rules/options @ src/services/admin/payrollConfigAdmin.service.js:11 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:78; Confirmed from code — /api/v1/payroll/config/salary-rules/save @ src/services/admin/payrollConfigAdmin.service.js:16 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:86; Confirmed from code — /api/v1/payroll/config/salary-rules/delete @ src/services/admin/payrollConfigAdmin.service.js:24 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:102 Confirmed from code — sesi autentik; capability hr.salary_rule.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field category_id, register_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/config/salary-rules/save, /api/v1/payroll/config/salary-rules/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-salary-structure-list /hr/salary-structure src/views/AdminViews/HR/payroll/SalaryStructureList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-salary-structure-list pada /hr/salary-structure; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, formData.name, formData.code, formData.parent_id, formData.company_id, ruleSearchQuery, formData.note, showDeleteModal, Nama Struktur, Kode Referensi, Contoh: SCH_TETAP, Parent Struktur, +1 lainnya; filter=searchQuery, formData.company_id, ruleSearchQuery; sinyal validasi=required, min/max, rules/schema; aturan field=searchQuery: type=search, formData.name: required, formData.code: required, formData.company_id: required, ruleSearchQuery: type=search, field: type=checkbox; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openModal, confirmDelete, saveStructure, selectAllRules, clearAllRules, removeRule, toggleRule, deleteStructure Confirmed from code — /api/v1/payroll/config/structures/list @ src/services/admin/payrollConfigAdmin.service.js:35 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:113; Confirmed from code — /api/v1/payroll/config/structures/options @ src/services/admin/payrollConfigAdmin.service.js:44 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:141; Confirmed from code — /api/v1/payroll/config/structures/save @ src/services/admin/payrollConfigAdmin.service.js:49 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:161; Confirmed from code — /api/v1/payroll/config/structures/delete @ src/services/admin/payrollConfigAdmin.service.js:57 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:179 Confirmed from code — sesi autentik; capability hr.salary_structure.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field parent_id, company_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/config/structures/save, /api/v1/payroll/config/structures/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-salary-structure-type-list /hr/salary-structure-type src/views/AdminViews/HR/payroll/SalaryStructureTypeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-salary-structure-type-list pada /hr/salary-structure-type; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, formData.name, formData.sequence, formData.default_resource_calendar_id, formData.default_struct_id, formData.default_schedule_pay, formData.country_id, formData.active, formData.description, showDeleteModal, Nama Tipe, Urutan, +4 lainnya; filter=searchQuery; sinyal validasi=required, min/max; aturan field=searchQuery: type=search, formData.name: required, formData.sequence: type=number, formData.active: type=checkbox; Inferred from code — option/status/display-label candidates=Bulanan (Monthly), Triwulan (Quarterly), Semester (Semi-annually), Tahunan (Annually), Mingguan (Weekly), Dua Mingguan (Bi-weekly), Dua Bulanan (Bi-monthly), Error Confirmed from code — openModal, confirmDelete, saveStructureType, deleteStructureType Confirmed from code — /api/v1/payroll/config/structure-types/list @ src/services/admin/payrollConfigAdmin.service.js:68 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:190; Confirmed from code — /api/v1/payroll/config/structure-types/options @ src/services/admin/payrollConfigAdmin.service.js:77 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:217; Confirmed from code — /api/v1/payroll/config/structure-types/save @ src/services/admin/payrollConfigAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:233; Confirmed from code — /api/v1/payroll/config/structure-types/delete @ src/services/admin/payrollConfigAdmin.service.js:93 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_config_api.py:249 Confirmed from code — sesi autentik; capability hr.salary_structure.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field default_resource_calendar_id, default_struct_id, country_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/config/structure-types/save, /api/v1/payroll/config/structure-types/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-timeoff-detail /hr/timeoff/:id src/views/AdminViews/HR/timeoff/TimeOffForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-timeoff-detail pada /hr/timeoff/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=formData.employee_id, formData.holiday_status_id, formData.request_date_from, formData.request_date_to, formData.notes; filter=formData.holiday_status_id, formData.request_date_from, formData.request_date_to; sinyal validasi=required, custom validate; aturan field=formData.employee_id: required, formData.holiday_status_id: required, formData.request_date_from: required, type=date, formData.request_date_to: required, type=date, field: type=file; Inferred from code — option/status/display-label candidates=Kembalikan ke Draft, File Terlalu Besar, Error Confirmed from code — calculateDuration, handleFileUpload, removeUploadedFile, router.push, saveLeave, openConfirmDialog, handleConfirmedAction Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/composables/usePermission.js, src/services/auth/auth.service.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.leave.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: referenced records dari field employee_id, holiday_status_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/timeoff/create P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian hr-timeoff-create /hr/timeoff/create src/views/AdminViews/HR/timeoff/TimeOffForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman hr-timeoff-create pada /hr/timeoff/create; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=formData.employee_id, formData.holiday_status_id, formData.request_date_from, formData.request_date_to, formData.notes; filter=formData.holiday_status_id, formData.request_date_from, formData.request_date_to; sinyal validasi=required, custom validate; aturan field=formData.employee_id: required, formData.holiday_status_id: required, formData.request_date_from: required, type=date, formData.request_date_to: required, type=date, field: type=file; Inferred from code — option/status/display-label candidates=Kembalikan ke Draft, File Terlalu Besar, Error Confirmed from code — calculateDuration, handleFileUpload, removeUploadedFile, router.push, saveLeave, openConfirmDialog, handleConfirmedAction Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/composables/usePermission.js, src/services/auth/auth.service.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.leave.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field employee_id, holiday_status_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/timeoff/:id P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian librarian-payslip-detail /librarian/employee/payslip/:id src/views/FacultyViews/Payroll/PayslipDetail.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman librarian-payslip-detail pada /librarian/employee/payslip/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Qty Confirmed from code — router.back, downloadPDF Missing or unclear — /api/payroll/my/payslips/:param @ src/services/hr/employeePayrollSelf.service.js:22; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles librarian; feature flag scola_payroll; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/employee/payslip/:id, /faculty/employee/payslip/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian Kepegawaian /principal/hr src/views/Principal/PrincipalHR.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Kepegawaian pada /principal/hr; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/hr/hrAdminApi.js, src/services/hr/principalHrOverview.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.overview.view; allowedRoles principal; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/hr/attendance P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian principal-hr-attendance-detail /principal/hr/attendance/:id src/views/AttendanceManagement/Staff/AttendanceDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-hr-attendance-detail pada /principal/hr/attendance/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goBack, editAttendance, confirmDelete, fetchAttendance, deleteAttendance Confirmed from code — /api/v1/attendance/validate-location @ src/views/AttendanceManagement/Staff/AttendanceDetail.vue:698 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:130; Confirmed from code — /api/v1/attendance/hr-admin/detail @ src/services/admin/hrAttendanceAdmin.service.js:23 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:272; Confirmed from code — /api/v1/attendance/hr-admin/scola-link @ src/services/admin/hrAttendanceAdmin.service.js:65 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:283; Confirmed from code — /api/v1/attendance/hr-admin/delete @ src/services/admin/hrAttendanceAdmin.service.js:58 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:411 Confirmed from code — sesi autentik; capability hr.attendance.view; allowedRoles principal; feature flag scola_hr_attendance; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/hr-admin/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/attendance/:id/edit, /principal/hr/attendance, /hr/attendance, /hr/attendance/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian principal-hr-attendance-period /principal/hr/attendance/period/:employeeId src/views/AttendanceManagement/Staff/AttendancePeriodDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-hr-attendance-period pada /principal/hr/attendance/period/:employeeId; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Band potongan Confirmed from code — goBack, loadPeriod, openPunchDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/hr/attendance-summary.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.attendance_summary.view; allowedRoles principal; feature flag scola_hr_attendance; parameter route employeeId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; employee/company dan contract/periode yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/attendance/period/:employeeId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian principal-employee-detail /principal/hr/employees/:id src/views/AdminViews/TeacherDatabase/TeacherDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-employee-detail pada /principal/hr/employees/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, teacherDetail.name, teacherDetail.nuptk, teacherDetail.nip, teacherDetail.npwp, teacherDetail.employee_status, teacherDetail.jenis_ptk, teacherDetail.birth_date, teacherDetail.religion, teacherDetail.street, teacherDetail.mobile, teacherDetail.gender, +19 lainnya; filter=teacherDetail.employee_status, teacherDetail.birth_date, teacherDetail.marital_status, Status Kepegawaian, Status Perkawinan; aturan field=teacherDetail.is_certified: type=checkbox, teacherDetail.certification_year: type=number; Inferred from code — option/status/display-label candidates=Guru, Personal, Laki - Laki, Perempuan, Menikah, Cerai Hidup, Cerai Mati, Kepala Sekolah, Wakil Kepala Sekolah, Tenaga Administrasi, +6 lainnya Confirmed from code — Rombel, enableEditing, cancelEditing, saveTeacher, router.push Confirmed from code — /api/v1/admin/faculty/detail @ src/services/admin/faculty.service.js:13 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:301; Confirmed from code — /api/v1/admin/faculty/save @ src/services/admin/faculty.service.js:20 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:312; Confirmed from code — /api/v1/admin/faculty/lookup/country @ src/services/admin/faculty.service.js:42 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:475; Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350 Confirmed from code — sesi autentik; capability hr.employees.view; allowedRoles principal; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field library_card_id, resource_calendar_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/schedule, /teachers/:id/edit, /teachers/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian principal-leave /principal/hr/leave src/views/Principal/PrincipalLeave.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-leave pada /principal/hr/leave; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=statusFilter, leaveTypeFilter, departmentFilter, rejectReason, Tuliskan alasan penolakan..., Departemen, Alasan Penolakan; kolom=Pegawai, Jenis, Durasi; filter=statusFilter, leaveTypeFilter, departmentFilter; sinyal validasi=min/max Confirmed from code — Refresh, &#10005;, refreshData, applyFilters, resetFilters, handleApprove, openRejectModal, changePage, closeRejectModal, confirmReject Confirmed from code — /v1/principal/leave @ src/services/principal/principalLeave.service.js:36 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_people_api.py:21; Confirmed from code — /v1/principal/leave/:param/approve @ src/services/principal/principalLeave.service.js:58 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_people_api.py:148 Confirmed from code — sesi autentik; capability hr.leave.view; allowedRoles principal; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /v1/principal/leave/:param/approve; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian Performa Pegawai /principal/hr/performance src/views/Principal/PrincipalPerformance.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Performa Pegawai pada /principal/hr/performance; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterDepartment, periodStart, periodEnd, statusFilter, Departemen, Mulai Periode, Akhir Periode, Status Evaluasi; kolom=Departemen, Pegawai, Dinilai, Rata-rata, Tertinggi, Jabatan, Skor Terakhir, Periode, Skor; filter=filterDepartment, periodStart, periodEnd, statusFilter, Mulai Periode, Akhir Periode, Status Evaluasi; sinyal validasi=min/max; aturan field=periodStart: type=date, periodEnd: type=date Confirmed from code — Refresh, &#10005;, refreshData, applyFilters, resetFilters, openDetail, changePage, closeDetail Confirmed from code — /v1/principal/performance @ src/services/principal/principalPerformance.service.js:85 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_people_api.py:381; Missing or unclear — /v1/principal/performance/employee/:param @ src/services/principal/principalPerformance.service.js:108; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability hr.performance.view; allowedRoles principal; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian teacher-detail /teachers/:id src/views/AdminViews/TeacherDatabase/TeacherDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman teacher-detail pada /teachers/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, teacherDetail.name, teacherDetail.nuptk, teacherDetail.nip, teacherDetail.npwp, teacherDetail.employee_status, teacherDetail.jenis_ptk, teacherDetail.birth_date, teacherDetail.religion, teacherDetail.street, teacherDetail.mobile, teacherDetail.gender, +19 lainnya; filter=teacherDetail.employee_status, teacherDetail.birth_date, teacherDetail.marital_status, Status Kepegawaian, Status Perkawinan; aturan field=teacherDetail.is_certified: type=checkbox, teacherDetail.certification_year: type=number; Inferred from code — option/status/display-label candidates=Guru, Personal, Laki - Laki, Perempuan, Menikah, Cerai Hidup, Cerai Mati, Kepala Sekolah, Wakil Kepala Sekolah, Tenaga Administrasi, +6 lainnya Confirmed from code — Rombel, enableEditing, cancelEditing, saveTeacher, router.push Confirmed from code — /api/v1/admin/faculty/detail @ src/services/admin/faculty.service.js:13 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:301; Confirmed from code — /api/v1/admin/faculty/save @ src/services/admin/faculty.service.js:20 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:312; Confirmed from code — /api/v1/admin/faculty/lookup/country @ src/services/admin/faculty.service.js:42 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:475; Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350 Confirmed from code — sesi autentik; capability hr.teachers.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: referenced records dari field library_card_id, resource_calendar_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/schedule, /teachers/:id/edit, /teachers/:id, /principal/hr/employees/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian teacher-edit /teachers/:id/edit src/views/AdminViews/TeacherDatabase/TeacherDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman teacher-edit pada /teachers/:id/edit; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, teacherDetail.name, teacherDetail.nuptk, teacherDetail.nip, teacherDetail.npwp, teacherDetail.employee_status, teacherDetail.jenis_ptk, teacherDetail.birth_date, teacherDetail.religion, teacherDetail.street, teacherDetail.mobile, teacherDetail.gender, +19 lainnya; filter=teacherDetail.employee_status, teacherDetail.birth_date, teacherDetail.marital_status, Status Kepegawaian, Status Perkawinan; aturan field=teacherDetail.is_certified: type=checkbox, teacherDetail.certification_year: type=number; Inferred from code — option/status/display-label candidates=Guru, Personal, Laki - Laki, Perempuan, Menikah, Cerai Hidup, Cerai Mati, Kepala Sekolah, Wakil Kepala Sekolah, Tenaga Administrasi, +6 lainnya Confirmed from code — Rombel, enableEditing, cancelEditing, saveTeacher, router.push Confirmed from code — /api/v1/admin/faculty/detail @ src/services/admin/faculty.service.js:13 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:301; Confirmed from code — /api/v1/admin/faculty/save @ src/services/admin/faculty.service.js:20 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:312; Confirmed from code — /api/v1/admin/faculty/lookup/country @ src/services/admin/faculty.service.js:42 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:475; Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350 Confirmed from code — sesi autentik; capability hr.teachers.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; parameter route id; Inferred from code — data prerequisite: referenced records dari field library_card_id, resource_calendar_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/schedule, /teachers/:id/edit, /teachers/:id, /principal/hr/employees/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian teacher-create /teachers/create src/views/AdminViews/TeacherDatabase/TeacherCreate.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman teacher-create pada /teachers/create; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab, form[field.model], field.label, field.placeholder; sinyal validasi=required, min/max; aturan field=form[field.model]: required, form[field.model]: type=checkbox, form[field.model]: required, maxlength=field.maxlength \|\| undefined, type=field.type; Inferred from code — option/status/display-label candidates=Guru, NUPTK, NIP, NPWP, Status Kepegawaian, Pangkat Golongan, Personal, NIK, Jenis Kelamin, Laki - Laki, +17 lainnya Confirmed from code — saveTeacher, goToNextTab Confirmed from code — /api/v1/admin/faculty/create @ src/services/admin/faculty.service.js:28 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:354; Confirmed from code — /api/v1/admin/faculty/lookup/country @ src/services/admin/faculty.service.js:42 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:475; Confirmed from code — /api/v1/admin/faculty/lookup/state @ src/services/admin/faculty.service.js:49 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:484 Confirmed from code — sesi autentik; capability hr.teachers.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /teachers P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kepegawaian teacher-import /teachers/import src/views/AdminViews/TeacherDatabase/TeacherImport.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman teacher-import pada /teachers/import; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=editable.name, editable.nuptk, editable.nip, editable.gender, editable.employee_status, editable.religion, editable.birth_place, editable.birth_date, editable.mobile, editable.blood_group, editable.npwp, editable.nationality, +16 lainnya; kolom=NUPTK, Jenis Kelamin, Tempat Lahir, Tanggal Lahir, NIP, Status Kepegawaian, Golongan Darah, Agama, No HP, Kewarganegaraan; filter=editable.employee_status, editable.birth_date, searchQuery, Status Kepegawaian; sinyal validasi=min/max; aturan field=editable.birth_date: type=date, editable.email: type=email; Inferred from code — option/status/display-label candidates=25, 50, 100, Laki-laki, Perempuan, Upload guru selesai, Data Duplikat Ditemukan, Error Confirmed from code — downloadTemplate, set uploadResultSummary, prevItem, nextItem, applyEdit, handlePageSizeChange, deleteSelectedPreview, uploadToOdoo, deleteOne Confirmed from code — /api/v1/admin/faculty/import @ src/services/admin/faculty.service.js:57 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:423 Confirmed from code — sesi autentik; capability hr.teachers.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: source file dan master reference yang sesuai format import Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/import; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Kesiswaan (41 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Kesiswaan AdminEkskulDetail /admin/extracurriculars/:id src/views/CounselingManagement/Extracurricular/Admin/ExtracurricularAdminDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminEkskulDetail pada /admin/extracurriculars/:id; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedAssessmentTermId, bulkAssessmentRating, row.rating, row.description, showDeleteDialog, newMember.student_id, newMember.role, newMember.note, bulkSelectedBatchIds, bulkSelectedStudentIds, bulkRole, bulkNote, +8 lainnya; kolom=Siswa, Rombel, Kategori, Deskripsi; filter=bulkSelectedBatchIds; sinyal validasi=required; aturan field=newMember.student_id: required, bulkSelectedBatchIds: type=checkbox, bulkSelectedStudentIds: type=checkbox; Inferred from code — option/status/display-label candidates=Sangat Baik, Baik, Cukup, Perlu Bimbingan, Anggota, Ketua, Wakil Ketua, Sekretaris, Bendahara Confirmed from code — router.back, $router.push, set showDeleteDialog, openAddMemberModal, openBulkAddMemberModal, set activeTab, approveMember, rejectMember, removeMember, applyBulkAssessmentRating, saveAssessments, handleDelete, set showAddMemberModal, handleAddMember, +4 lainnya Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/extracurricular.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/extracurriculars P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan AdminEkskulEdit /admin/extracurriculars/:id/edit src/views/CounselingManagement/Extracurricular/Admin/ExtracurricularAdminForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminEkskulEdit pada /admin/extracurriculars/:id/edit; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.code, form.activity_kind, form.category, form.academic_year_id, form.description, form.coach_id, form.schedule_day, form.schedule_time_start, form.schedule_time_end, form.location, form.min_members, +7 lainnya; sinyal validasi=required, custom validate; aturan field=form.name: required, form.code: required, form.activity_kind: required, form.category: required, form.academic_year_id: required, form.coach_id: required, form.schedule_time_start: type=time, form.schedule_time_end: type=time, form.min_members: type=number, form.max_members: type=number, +3 lainnya Confirmed from code — $router.back, handleSubmit Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/extracurricular.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, coach_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/extracurriculars, /admin/extracurriculars/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan AdminEkskulTambah /admin/extracurriculars/new src/views/CounselingManagement/Extracurricular/Admin/ExtracurricularAdminForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminEkskulTambah pada /admin/extracurriculars/new; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.code, form.activity_kind, form.category, form.academic_year_id, form.description, form.coach_id, form.schedule_day, form.schedule_time_start, form.schedule_time_end, form.location, form.min_members, +7 lainnya; sinyal validasi=required, custom validate; aturan field=form.name: required, form.code: required, form.activity_kind: required, form.category: required, form.academic_year_id: required, form.coach_id: required, form.schedule_time_start: type=time, form.schedule_time_end: type=time, form.min_members: type=number, form.max_members: type=number, +3 lainnya Confirmed from code — $router.back, handleSubmit Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/extracurricular.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, coach_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/extracurriculars, /admin/extracurriculars/:id/edit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Inbox Pendaftaran Ekskul /admin/extracurriculars/pending src/views/CounselingManagement/Extracurricular/PendingRegistrationsInbox.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Inbox Pendaftaran Ekskul pada /admin/extracurriculars/pending; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery Confirmed from code — router.back, loadData, handleReject, handleApprove, openExtracurricularDetail, openExtracurricular, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/extracurriculars/pending, /vice-principal/student-affairs/extracurricular/pending P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Kehadiran Kelas /attendance/class/:batchId src/views/AttendanceManagement/Admin/AttendanceByClass.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman Kehadiran Kelas pada /attendance/class/:batchId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=periodMode, periodAnchor, customStartDate, customEndDate, statusFilter, searchQuery, selectedLines; kolom=Hadir, Sakit, Izin, Alpa; filter=periodMode, periodAnchor, customStartDate, customEndDate, statusFilter, searchQuery; sinyal validasi=min/max, pattern/regex; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Bulanan, Mingguan, Rentang Confirmed from code — applyPeriod, resetFilters, downloadPDF, downloadExcel Confirmed from code — /api/v1/attendance/admin/lines/by-batch @ src/services/attendance/adminAttendance.service.js:115 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:81 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; parameter route batchId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan attendanceLineList /attendance/lines src/views/AttendanceManagement/Admin/AttendanceLineList.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman attendanceLineList pada /attendance/lines; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, Search...; filter=searchQuery, Search...; aturan field=searchQuery: type=search Confirmed from code — changeScope, createNewAttendanceLine, goToClassDetail Confirmed from code — /api/v1/attendance/admin/lines/class-summary @ src/services/attendance/adminAttendance.service.js:94 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:73 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/class/:batchId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan attendanceRegisterList /attendance/registers src/views/AttendanceManagement/Admin/AttendanceRegList.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman attendanceRegisterList pada /attendance/registers; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Register, Course, Batch, Nama Register Confirmed from code — goToRegisterForm, previewMassRegistration, removePreviewItem, saveMassRegistration Confirmed from code — /api/v1/attendance/admin/registers/bulk-create @ src/services/attendance/adminAttendance.service.js:33 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:30; Confirmed from code — /api/v1/attendance/admin/registers @ src/services/attendance/adminAttendance.service.js:4 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:8; Confirmed from code — /api/v1/attendance/admin/registers/preview @ src/services/attendance/adminAttendance.service.js:21 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:16 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/registers/create P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan attendanceRegisterCreate /attendance/registers/create src/views/AttendanceManagement/Admin/AttendanceRegNew.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman attendanceRegisterCreate pada /attendance/registers/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.code, formData.course_id, formData.batch_id, Nama Register, *Course, *Batch; filter=formData.course_id, formData.batch_id, *Course, *Batch; aturan field=formData.name: type=text, formData.code: type=text Confirmed from code — submitForm Confirmed from code — /api/v1/attendance/admin/registers/create @ src/services/attendance/adminAttendance.service.js:27 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:20; Confirmed from code — /api/v1/attendance/admin/register-options @ src/services/attendance/adminAttendance.service.js:10 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:12 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field course_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/admin/registers/create, /api/v1/attendance/admin/register-options; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /attendance/registers P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Sesi: (Tanggal: ) /attendance/session/:sheetId src/views/AttendanceManagement/Admin/AttendanceBySession.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman Sesi: (Tanggal: ) pada /attendance/session/:sheetId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, statusFilter, searchQuery; kolom=Hadir, Sakit, Alpa; filter=startDate, endDate, statusFilter, searchQuery; sinyal validasi=min/max, pattern/regex; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Izin, Kesiswaan Confirmed from code — set statusFilter, downloadPDF, downloadExcel Confirmed from code — /api/v1/attendance/admin/sheet-lines @ src/services/attendance/adminAttendance.service.js:84 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:69 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; parameter route sheetId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/students/attendance/session/:sheetId, /vice-principal/student-affairs/attendance/session/:sheetId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan attendanceSheetList /attendance/sheets src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman attendanceSheetList pada /attendance/sheets; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=pendingDate, searchQuery, dateFilter; kolom=Register, Session; filter=pendingDate, searchQuery, dateFilter; aturan field=pendingDate: type=date, searchQuery: type=search, dateFilter: type=date; Inferred from code — option/status/display-label candidates=Dashboard, Kesiswaan, Pantau rekap kehadiran siswa per sesi. Confirmed from code — goCreateManual, fetchPendingSessions, goFillSession, handleRefresh, goToSessionDetail Confirmed from code — /api/v1/attendance/admin/sheets @ src/services/attendance/adminAttendance.service.js:65 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:65; Confirmed from code — /api/v1/attendance/admin/pending-sessions @ src/services/attendance/adminAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:38 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/students/attendance/sheets, /vice-principal/student-affairs/attendance P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan attendanceSheetCreate /attendance/sheets/create src/views/AttendanceManagement/Admin/AttendanceSheetNew.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman attendanceSheetCreate pada /attendance/sheets/create; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.register_id, formData.session_id, formData.attendance_date, item.remark, Register, Session; kolom=Hadir, Telat, Izin, Alpa; filter=formData.attendance_date; aturan field=field: type=checkbox, item.remark: type=text Confirmed from code — submitAttendanceSheet, toggleMarkAllPresent, setLineStatus Confirmed from code — /api/v1/attendance/admin/sheet/create @ src/services/attendance/adminAttendance.service.js:125 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:55; Confirmed from code — /api/v1/attendance/admin/sheet/draft @ src/services/attendance/adminAttendance.service.js:75 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:46; Confirmed from code — /api/v1/attendance/admin/sheet/options @ src/services/attendance/adminAttendance.service.js:40 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:34; Confirmed from code — /api/v1/attendance/admin/pending-sessions @ src/services/attendance/adminAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:38 Confirmed from code — sesi autentik; capability students.attendance.edit; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field register_id, session_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/admin/sheet/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan counseling-extracurriculars-detail /counseling/extracurriculars/:id src/views/CounselingManagement/Extracurricular/ExtracurricularDetail.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-extracurriculars-detail pada /counseling/extracurriculars/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=registerNote; sinyal validasi=min/max Confirmed from code — router.back, loadData, $router.push, set showRegisterModal, handleReject, handleApprove, handleApproveAll, handleRegister Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/composables/useNotification.js, src/services/admin/faculty.service.js, +9 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular, /faculty/extracurricular/:id, /vice-principal/student-affairs/extracurricular/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Absensi — /counseling/extracurriculars/:id/absensi src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Absensi — pada /counseling/extracurriculars/:id/absensi; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — $router.back, $router.push, loadData Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular, /faculty/extracurricular/:id/absensi, /vice-principal/student-affairs/extracurricular/:id/absensi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan counseling-extracurriculars-absensi-detail /counseling/extracurriculars/:id/absensi/:sessionId(\d+) src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceForm.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-extracurriculars-absensi-detail pada /counseling/extracurriculars/:id/absensi/:sessionId(\d+); tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.date, form.note, Tanggal Sesi; filter=form.date; aturan field=form.date: type=date Confirmed from code — $router.back, setAll, handleSave Missing or unclear — /api/v1/kesiswaan/:param @ src/services/counseling/kesiswaanApiClient.js:11; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles counselor; feature flag scola_student_services; parameter route id, sessionId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/extracurricular, /faculty/extracurricular/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/new, /vice-principal/student-affairs/extracurricular/:id/absensi/:sessionId(\d+), /vice-principal/student-affairs/extracurricular/:id/absensi/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Inbox Pendaftaran Ekskul /counseling/extracurriculars/pending src/views/CounselingManagement/Extracurricular/PendingRegistrationsInbox.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Inbox Pendaftaran Ekskul pada /counseling/extracurriculars/pending; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery Confirmed from code — router.back, loadData, handleReject, handleApprove, openExtracurricularDetail, openExtracurricular, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.manage; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/extracurriculars/pending, /vice-principal/student-affairs/extracurricular/pending P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan counseling-student-detail /counseling/students/:id src/views/CounselingManagement/CounselingStudentDetail.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-student-detail pada /counseling/students/:id; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back, fetchStudent, goToTimeline, goToNewViolation, goToNewAchievement, goToNewNote Confirmed from code — /api/v1/admin/students/detail @ src/services/admin/student.service.js:42 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:407 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles counselor; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan facultyAttendanceSheet /faculty/attendance/sheet/:id src/views/AttendanceManagement/Faculty/AttendanceSheet.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman facultyAttendanceSheet pada /faculty/attendance/sheet/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, selectedBatchFilter, proofData.remarkType, proofData.remarkDetail, proofData.withoutProof, Semua rombel, isViewMode ? t(, Upload Bukti; filter=searchQuery, selectedBatchFilter; aturan field=searchQuery: type=search, field: type=file; Inferred from code — option/status/display-label candidates=Semua rombel Confirmed from code — toggleSelectAll, set student.status, enableEditMode, saveAttendance, downloadFile, handleFileUpload Confirmed from code — /api/v1/attendance/faculty/session-sheet @ src/services/attendance/studentAttendance.service.js:428 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:12; Confirmed from code — /api/v1/attendance/faculty/session-sheet/save @ src/services/attendance/studentAttendance.service.js:440 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:20 Confirmed from code — sesi autentik; capability students.attendance.edit; allowedRoles teacher, homeroom; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/faculty/session-sheet/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Detail Rekap Presensi Siswa /faculty/attendance/subject-report/student/:studentId src/views/AttendanceManagement/Faculty/FacultyStudentAttendanceDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Detail Rekap Presensi Siswa pada /faculty/attendance/subject-report/student/:studentId; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Hadir, Izin, Sakit, Alpa, Terlambat Confirmed from code — window.print, goBack Confirmed from code — /api/v1/attendance/faculty/subject-report @ src/services/attendance/facultySubjectAttendance.service.js:24 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:54 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles teacher, homeroom; parameter route studentId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/attendance/subject-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan faculty-ekskul-detail /faculty/extracurricular/:id src/views/CounselingManagement/Extracurricular/ExtracurricularDetail.vue:1 Confirmed from code — teacher, homeroom, extracurricular_coach; guard route memakai allowedRoles Inferred from code — halaman faculty-ekskul-detail pada /faculty/extracurricular/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=registerNote; sinyal validasi=min/max Confirmed from code — router.back, loadData, $router.push, set showRegisterModal, handleReject, handleApprove, handleApproveAll, handleRegister Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/composables/useNotification.js, src/services/admin/faculty.service.js, +9 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles teacher, homeroom, extracurricular_coach; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id, /vice-principal/student-affairs/extracurricular/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Absensi — /faculty/extracurricular/:id/absensi src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceList.vue:1 Confirmed from code — teacher, homeroom, extracurricular_coach; guard route memakai allowedRoles Inferred from code — halaman Absensi — pada /faculty/extracurricular/:id/absensi; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — $router.back, $router.push, loadData Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles teacher, homeroom, extracurricular_coach; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id/absensi, /vice-principal/student-affairs/extracurricular/:id/absensi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan faculty-ekskul-absensi-detail /faculty/extracurricular/:id/absensi/:sessionId(\d+) src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceForm.vue:1 Confirmed from code — teacher, homeroom, extracurricular_coach; guard route memakai allowedRoles Inferred from code — halaman faculty-ekskul-absensi-detail pada /faculty/extracurricular/:id/absensi/:sessionId(\d+); tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.date, form.note, Tanggal Sesi; filter=form.date; aturan field=form.date: type=date Confirmed from code — $router.back, setAll, handleSave Missing or unclear — /api/v1/kesiswaan/:param @ src/services/counseling/kesiswaanApiClient.js:11; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles teacher, homeroom, extracurricular_coach; feature flag scola_student_services; parameter route id, sessionId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/new, /vice-principal/student-affairs/extracurricular/:id/absensi/:sessionId(\d+), /vice-principal/student-affairs/extracurricular/:id/absensi/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan faculty-ekskul-absensi-new /faculty/extracurricular/:id/absensi/new src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceForm.vue:1 Confirmed from code — teacher, homeroom, extracurricular_coach; guard route memakai allowedRoles Inferred from code — halaman faculty-ekskul-absensi-new pada /faculty/extracurricular/:id/absensi/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.date, form.note, Tanggal Sesi; filter=form.date; aturan field=form.date: type=date Confirmed from code — $router.back, setAll, handleSave Missing or unclear — /api/v1/kesiswaan/:param @ src/services/counseling/kesiswaanApiClient.js:11; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles teacher, homeroom, extracurricular_coach; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/:sessionId(\d+), /vice-principal/student-affairs/extracurricular/:id/absensi/:sessionId(\d+), /vice-principal/student-affairs/extracurricular/:id/absensi/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan homeroom-orchestrator /faculty/homeroom/orchestrator src/views/ReportCardManagement/Faculty/HomeroomReportList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman homeroom-orchestrator pada /faculty/homeroom/orchestrator; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.academic_year_id, form.academic_term_id, form.batch_id, filters.academic_year_id, filters.academic_term_id, Guru Pengajar (otomatis dari penugasan mengajar); filter=form.batch_id, filters.academic_year_id, filters.academic_term_id; sinyal validasi=required, min/max; aturan field=form.academic_year_id: required, form.academic_term_id: required, form.batch_id: required; Inferred from code — option/status/display-label candidates=Ranking Ditahan, Sukses, Error, Submitted, Kepala Sekolah, Published, Rejected, Pastikan draft tersisa sesuai target, Proses antrian review, Kelengkapan publish kelas Confirmed from code — handleCompute, handleGenerate, confirmBulkSubmit, set showGenerateModal, set showRankingModal, selectBatch, viewReport, openWorkflowDialog, handleWorkflowAction, executeBulkSubmit Confirmed from code — /api/v1/report-card/compute-ranking @ src/services/reportCard/reportCard.service.js:155 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:472; Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/reports @ src/services/reportCard/reportCard.service.js:36 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:299; Confirmed from code — /api/v1/report-card/generate @ src/services/reportCard/reportCard.service.js:137 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:422; Confirmed from code — /api/v1/report-card/generate-preview @ src/services/reportCard/reportCard.service.js:146 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:645 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: referenced records dari field academic_year_id, academic_term_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/compute-ranking, /api/v1/report-card/generate, /api/v1/report-card/generate-preview; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/homeroom/report-card/:reportId, /faculty/homeroom/report-card P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan homeroom-report-detail /faculty/homeroom/report-card/:reportId src/views/ReportCardManagement/Faculty/HomeroomReportDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman homeroom-report-detail pada /faculty/homeroom/report-card/:reportId; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedTeacherId, components[idx].score_status, components[idx].score, components[idx].is_remedial, components[idx].remedial_date, components[idx].remedial_notes, remedialSummary.is_remedial, remedialSummary.remedial_score, remedialSummary.remedial_date, remedialSummary.remedial_notes, newLine.subject_id, newLine.teacher_id, +8 lainnya; kolom=Nilai Akhir; filter=components[idx].score_status, components[idx].remedial_date, remedialSummary.remedial_date, Status Komponen, getScorePlaceholder(components[idx].score_status); sinyal validasi=min/max; aturan field=components[idx].score: min=0, max=100, type=number, components[idx].is_remedial: type=checkbox, components[idx].remedial_date: type=date, remedialSummary.is_remedial: type=checkbox, remedialSummary.remedial_score: min=0, max=100, type=number, remedialSummary.remedial_date: type=date; Inferred from code — option/status/display-label candidates=Sukses, Error Confirmed from code — Tambah Mapel, Detail, Edit, handleSave, handleRefreshAll, openWorkflowDialog, openAddLineModal, openLineDetail, openLineEdit, confirmDeleteLine, handleWorkflowAction, handleDeleteLine, closeAddLineModal, handleAddLine Missing or unclear — /api/v1/report-card/report-lines/:param @ src/services/reportCard/reportCard.service.js:93; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/report-lines/:param/refresh @ src/services/reportCard/reportCard.service.js:120 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:259; Confirmed from code — /api/v1/report-card/report-lines/:param/save @ src/services/reportCard/reportCard.service.js:109 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:142; Confirmed from code — /api/v1/report-card/reports/:param/report-lines/add @ src/services/reportCard/reportCard.service.js:99 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:96; Confirmed from code — /api/v1/report-card/report-lines/:param/delete @ src/services/reportCard/reportCard.service.js:127 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:297; Missing or unclear — /api/v1/report-card/reports/:param @ src/services/reportCard/reportCard.service.js:50; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/reports/:param/line-options @ src/services/reportCard/reportCard.service.js:55 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:485; Confirmed from code — /api/v1/report-card/reports/:param/p5 @ src/services/reportCard/p5Report.service.js:49 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:405 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; parameter route reportId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field subject_id, teacher_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/report-lines/:param/save, /api/v1/report-card/report-lines/:param/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/homeroom/report-card P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan students-select-student /faculty/students/batch/:id src/views/FacultyViews/Students/SelectStudent.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman students-select-student pada /faculty/students/batch/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — goBack Confirmed from code — /api/v1/core/students/search @ src/services/common/coreReference.service.js:35 -> ../custom_addons_scola/gcgscola/scola_core/controllers/core_reference_api.py:64; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/students/select-class P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan principal-students /principal/students src/views/Principal/PrincipalStudents.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-students pada /principal/students; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Total Poin, Tanggal Terakhir; Inferred from code — option/status/display-label candidates=Prestasi Bulan Ini, Monitoring Ekskul, Rekap Bulanan, Tata Tertib & Peraturan, Insiden Umum, Rekap Kesiswaan Confirmed from code — loadInsights, goTo Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/counseling.service.js, +9 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.overview.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/student-affairs P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Sesi: (Tanggal: ) /principal/students/attendance/session/:sheetId src/views/AttendanceManagement/Admin/AttendanceBySession.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Sesi: (Tanggal: ) pada /principal/students/attendance/session/:sheetId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, statusFilter, searchQuery; kolom=Hadir, Sakit, Alpa; filter=startDate, endDate, statusFilter, searchQuery; sinyal validasi=min/max, pattern/regex; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Izin, Kesiswaan Confirmed from code — set statusFilter, downloadPDF, downloadExcel Confirmed from code — /api/v1/attendance/admin/sheet-lines @ src/services/attendance/adminAttendance.service.js:84 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:69 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles principal; parameter route sheetId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/session/:sheetId, /vice-principal/student-affairs/attendance/session/:sheetId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan principal-students-attendance-sheets /principal/students/attendance/sheets src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-students-attendance-sheets pada /principal/students/attendance/sheets; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=pendingDate, searchQuery, dateFilter; kolom=Register, Session; filter=pendingDate, searchQuery, dateFilter; aturan field=pendingDate: type=date, searchQuery: type=search, dateFilter: type=date; Inferred from code — option/status/display-label candidates=Dashboard, Kesiswaan, Pantau rekap kehadiran siswa per sesi. Confirmed from code — goCreateManual, fetchPendingSessions, goFillSession, handleRefresh, goToSessionDetail Confirmed from code — /api/v1/attendance/admin/sheets @ src/services/attendance/adminAttendance.service.js:65 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:65; Confirmed from code — /api/v1/attendance/admin/pending-sessions @ src/services/attendance/adminAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:38 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles principal; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/sheets, /vice-principal/student-affairs/attendance P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan student-extras-hub /student/extras src/views/StudentViews/StudentSectionHub.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-extras-hub pada /student/extras; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles student, alumni; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /student/grades, /student/learning, /student/student-life, /student/today P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan student-today-hub /student/today src/views/StudentViews/StudentSectionHub.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-today-hub pada /student/today; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.dashboard.view; allowedRoles student, alumni; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /student/extras, /student/grades, /student/learning, /student/student-life P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Informasi Utama /students/:id src/views/AdminViews/StudentDatabase/DetailSiswa.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Informasi Utama pada /students/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.full_name, form.nickname, form.sic, form.nsn, form.nid, form.gender, form.mobile, form.blood_group, form.religion, form.point, form.current_batch_name, form.place_of_birth, +19 lainnya; filter=form.current_batch_name, form.birth_date; sinyal validasi=required, min/max; aturan field=form.full_name: required, form.nid: maxlength=16, form.point: type=number, form.birth_date: type=date; Inferred from code — option/status/display-label candidates=Laki-laki, Perempuan, Error, Sukses Confirmed from code — enableEditing, cancelEditing, saveStudent Confirmed from code — /api/v1/admin/students/detail @ src/services/admin/student.service.js:42 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:407; Confirmed from code — /api/v1/admin/students/save @ src/services/admin/student.service.js:49 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:428 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles admin, school_admin, head_admin; parameter route id; Inferred from code — data prerequisite: referenced records dari field library_card_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/students/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan kelasdetail /students/by-class/:kelasId src/views/AdminViews/StudentDatabase/ListSiswa.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman kelasdetail pada /students/by-class/:kelasId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedStudents, searchQuery; kolom=NIS, Poin; filter=searchQuery Confirmed from code — refreshData, handleViewSelected, navigateToDetail Confirmed from code — /api/v1/admin/students/class/detail @ src/services/admin/student.service.js:27 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:286; Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles admin, school_admin, head_admin; parameter route kelasId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /students/:id P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan student-create /students/create src/views/AdminViews/StudentDatabase/TambahSiswa.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman student-create pada /students/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=newStudent.full_name, newStudent.nickname, newStudent.sic, newStudent.nsn, newStudent.nid, newStudent.gender, newStudent.place_of_birth, newStudent.birth_date, newStudent.mobile, newStudent.blood_group, newStudent.email, newStudent.street, +10 lainnya; filter=newStudent.birth_date; sinyal validasi=required, min/max; aturan field=newStudent.full_name: required, newStudent.nsn: maxlength=10, newStudent.nid: maxlength=16, newStudent.gender: required, newStudent.birth_date: required, type=date, newStudent.email: type=email, newStudent.parent_email: type=email, newStudent.family_group_id: maxlength=16; Inferred from code — option/status/display-label candidates=A+, A-, B+, B-, AB, AB+, AB-, O+, O-, Islam, +13 lainnya Confirmed from code — resetForm, uploadToOdoo, addStudent, clearStudents, startEdit, removeStudent Confirmed from code — /api/v1/admin/import/students-with-parents @ src/views/AdminViews/StudentDatabase/TambahSiswa.vue:549 -> ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:164; Confirmed from code — /api/v1/admin/students/check-nsn @ src/services/admin/student.service.js:20 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:356; Confirmed from code — /api/v1/academic/classrooms/list @ src/services/admin/academics/classroom.service.js:5 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:220 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: referenced records dari field family_group_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/import/students-with-parents; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan student-import /students/import src/views/AdminViews/StudentDatabase/UploadSiswa.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman student-import pada /students/import; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=editable.full_name, editable.nickname, editable.sic, editable.nsn, editable.nid, editable.gender, editable.place_of_birth, editable.birth_date, editable.mobile, editable.blood_group, editable.email, editable.street, +11 lainnya; filter=editable.birth_date, searchQuery; sinyal validasi=required, min/max, pattern/regex; aturan field=editable.full_name: required, editable.nsn: maxlength=10, editable.nid: maxlength=16, editable.gender: required, editable.birth_date: required, type=date, editable.email: type=email, editable.parent_email: type=email; Inferred from code — option/status/display-label candidates=25, 50, 100, A+, A-, B+, B-, AB, AB+, AB-, +8 lainnya Confirmed from code — downloadTemplate, set uploadResultSummary, prevItem, nextItem, applyEdit, handlePageSizeChange, deleteSelectedPreview, uploadToOdoo, deleteOne Confirmed from code — /api/v1/admin/import/students-with-parents @ src/views/AdminViews/StudentDatabase/UploadSiswa.vue:792 -> ../custom_addons_scola/gcgscola/scola_core/controllers/admin_import_api.py:164 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: source file dan master reference yang sesuai format import; referenced records dari field family_group_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/import/students-with-parents; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Sesi: (Tanggal: ) /vice-principal/student-affairs/attendance/session/:sheetId src/views/AttendanceManagement/Admin/AttendanceBySession.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Sesi: (Tanggal: ) pada /vice-principal/student-affairs/attendance/session/:sheetId; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, statusFilter, searchQuery; kolom=Hadir, Sakit, Alpa; filter=startDate, endDate, statusFilter, searchQuery; sinyal validasi=min/max, pattern/regex; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Izin, Kesiswaan Confirmed from code — set statusFilter, downloadPDF, downloadExcel Confirmed from code — /api/v1/attendance/admin/sheet-lines @ src/services/attendance/adminAttendance.service.js:84 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:69 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles vice_principal_student_affairs; parameter route sheetId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/session/:sheetId, /principal/students/attendance/session/:sheetId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan vice-principal-extracurricular-detail /vice-principal/student-affairs/extracurricular/:id src/views/CounselingManagement/Extracurricular/ExtracurricularDetail.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-extracurricular-detail pada /vice-principal/student-affairs/extracurricular/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=registerNote; sinyal validasi=min/max Confirmed from code — router.back, loadData, $router.push, set showRegisterModal, handleReject, handleApprove, handleApproveAll, handleRegister Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/composables/useNotification.js, src/services/admin/faculty.service.js, +9 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id, /faculty/extracurricular/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Absensi — /vice-principal/student-affairs/extracurricular/:id/absensi src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Absensi — pada /vice-principal/student-affairs/extracurricular/:id/absensi; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — $router.back, $router.push, loadData Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id/absensi, /faculty/extracurricular/:id/absensi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan vice-principal-extracurricular-absensi-detail /vice-principal/student-affairs/extracurricular/:id/absensi/:sessionId(\d+) src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceForm.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-extracurricular-absensi-detail pada /vice-principal/student-affairs/extracurricular/:id/absensi/:sessionId(\d+); tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.date, form.note, Tanggal Sesi; filter=form.date; aturan field=form.date: type=date Confirmed from code — $router.back, setAll, handleSave Missing or unclear — /api/v1/kesiswaan/:param @ src/services/counseling/kesiswaanApiClient.js:11; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id, sessionId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/new, /vice-principal/student-affairs/extracurricular/:id/absensi/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan vice-principal-extracurricular-absensi-new /vice-principal/student-affairs/extracurricular/:id/absensi/new src/views/CounselingManagement/Extracurricular/ExtracurricularAttendanceForm.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-extracurricular-absensi-new pada /vice-principal/student-affairs/extracurricular/:id/absensi/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.date, form.note, Tanggal Sesi; filter=form.date; aturan field=form.date: type=date Confirmed from code — $router.back, setAll, handleSave Missing or unclear — /api/v1/kesiswaan/:param @ src/services/counseling/kesiswaanApiClient.js:11; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.extracurricular.manage; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/extracurricular, /counseling/extracurriculars/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/:sessionId(\d+), /faculty/extracurricular/:id/absensi/new, /vice-principal/student-affairs/extracurricular/:id/absensi/:sessionId(\d+) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan Inbox Pendaftaran Ekskul /vice-principal/student-affairs/extracurricular/pending src/views/CounselingManagement/Extracurricular/PendingRegistrationsInbox.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Inbox Pendaftaran Ekskul pada /vice-principal/student-affairs/extracurricular/pending; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery Confirmed from code — router.back, loadData, handleReject, handleApprove, openExtracurricularDetail, openExtracurricular, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.manage; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/extracurriculars/pending, /counseling/extracurriculars/pending P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Kesiswaan vice-principal-student-timeline /vice-principal/student-affairs/student-timeline src/views/CounselingManagement/Timeline/StudentTimeline.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-student-timeline pada /vice-principal/student-affairs/student-timeline; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=studentSearch, selectedAcademicYear, selectedSemester, selectedStudent ? $t(; filter=studentSearch; sinyal validasi=min/max; aturan field=studentSearch: type=text; Inferred from code — option/status/display-label candidates=Prestasi, Pelanggaran, Konseling, Perizinan, Ekskul, Insiden Umum, Referral BK/Kesiswaan Confirmed from code — clearStudent, set activeFilter, selectStudent Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51; Confirmed from code — /api/v1/attendance/analytics/student-progress @ src/services/attendance/attendanceAnalytics.service.js:63 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_analytics_api.py:260; Confirmed from code — /api/v1/attendance/analytics/student-risk @ src/services/attendance/attendanceAnalytics.service.js:71 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_analytics_api.py:322 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles vice_principal_student_affairs; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/student-timeline, /faculty/student-timeline P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Keuangan (12 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Keuangan admin-staff-finance-tunggakan /admin-staff/finance/tunggakan src/views/AdminViews/AcademicConfig/Fees/TunggakanReport.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-finance-tunggakan pada /admin-staff/finance/tunggakan; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterYear, filterMonth, searchQuery, Nama siswa...; kolom=No., Bulan/Tahun, Jatuh Tempo; filter=filterYear, filterMonth, searchQuery; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Keuangan Confirmed from code — Export CSV, exportCSV Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useBreadcrumbs.js, src/services/admin/feeConfigAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles admin, school_admin, admin_staff; feature flag scola_fees; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan KonfirmasiPembayaranTunai /admin/finance/konfirmasi-pembayaran-tunai src/views/AdminViews/PaymentConfig/KonfirmasiPembayaranTunai.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman KonfirmasiPembayaranTunai pada /admin/finance/konfirmasi-pembayaran-tunai; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, dateFrom, dateTo, Nama siswa, nomor kwitansi..., Sampai Tanggal; kolom=Nomor Kwitansi, Tanggal Terima, Diterima Oleh; filter=searchQuery, dateFrom, dateTo; aturan field=searchQuery: type=text, dateFrom: type=date, dateTo: type=date Confirmed from code — Refresh, loadData, handleDateFilter, clearFilters, prevPage, nextPage Confirmed from code — /api/v1/payment/cash/transactions @ src/services/finance/manualPayment.service.js:115; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability finance.billing.receive_cash; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan parent-finance /parent/finance src/views/ParentViews/ParentSectionHub.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-finance pada /parent/finance; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem, onChildChange Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles parent; feature flag scola_fees; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/academics, /parent/communications, /parent/library, /parent/more, /parent/student-life P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan ParentInvoicePrint /parent/invoice/:id/print src/views/ParentViews/SPP/InvoicePrint.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentInvoicePrint pada /parent/invoice/:id/print; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back, downloadPDF, printReceipt Missing or unclear — /api/v1/parent/invoices/:param @ src/services/finance/parentBilling.service.js:157; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles parent; feature flag scola_fees; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan ParentPaymentDetail /parent/payment/:id src/views/ParentViews/SPP/formBayar.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentPaymentDetail pada /parent/payment/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedMethod, senderName, transferDate, proofNotes; filter=transferDate; aturan field=senderName: type=text, transferDate: type=date, proofNotes: type=text, field: type=file Confirmed from code — Gateway, set paymentMode, startGatewayPayment, set selectedBankAccount, handleFileSelect, submitManualTransfer, openPrint, refreshGatewayStatus, scrollToPaymentPanel Missing or unclear — /api/v1/parent/invoices/:param @ src/services/finance/parentBilling.service.js:157; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/payment/create @ src/services/finance/paymentGateway.service.js:139 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_gateway_api.py:190; Confirmed from code — /api/v1/payment/methods @ src/services/finance/paymentGateway.service.js:132 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_gateway_api.py:311; Missing or unclear — /api/v1/payment/status/:param @ src/services/finance/paymentGateway.service.js:152; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/payment/bank-accounts @ src/services/finance/manualPayment.service.js:28 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:101; Confirmed from code — /api/v1/payment/manual/:param/proof @ src/services/finance/manualPayment.service.js:52 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:196; Confirmed from code — /api/v1/payment/pending-verification @ src/services/finance/manualPayment.service.js:98 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:435; Confirmed from code — /api/v1/payment/manual/create @ src/services/finance/manualPayment.service.js:36 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:127 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles parent; feature flag scola_fees; parameter route id; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payment/create, /api/v1/payment/manual/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /parent/invoice/:id/print P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan fee-spp-by-class-report /payment/spp-by-class src/views/AdminViews/AcademicConfig/Fees/FeeDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, admin_staff, treasurer; guard route memakai allowedRoles Inferred from code — halaman fee-spp-by-class-report pada /payment/spp-by-class; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.course_id, filters.batch_id, filters.period, exportType, Jenjang, Periode, Ringkasan Dashboard, Aging Piutang; kolom=Jumlah Invoice, Total Tunggakan, Terlama Overdue, Total Dibayar, Total Piutang, Collection Rate, No. Invoice; filter=filters.course_id, filters.batch_id, filters.period, Jenjang, Periode; sinyal validasi=min/max; aturan field=exportType: type=radio; Inferred from code — option/status/display-label candidates=0-30 hari, 31-60 hari, 61-90 hari, >90 hari Confirmed from code — set showFilterModal, exportReport, toggleStatVisibility, goToSchedules, viewStudentDetail, resetFilters, applyFilters, doExport Confirmed from code — /api/v1/finance/spp/by-class @ src/services/finance/sppReport.service.js:124 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_spp_report_api.py:177 Confirmed from code — sesi autentik; capability finance.spp_by_class.view; allowedRoles admin, school_admin, head_admin, admin_staff, treasurer; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field course_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /payment/schedule, /faculty/homeroom/spp-by-class, /vice-principal/finance, /vice-principal/finance/spp-by-class P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan Ringkasan Keuangan Sekolah /principal/finance src/views/Principal/PrincipalFinance.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Ringkasan Keuangan Sekolah pada /principal/finance; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Ringkasan Keuangan, Laba Rugi, Neraca Confirmed from code — loadSnapshot Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFormatCurrency.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.overview.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/finance/tuition, /principal/finance/reports/expense, /principal/finance/budget P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan principal-finance-reports-balance-sheet /principal/finance/reports/balance-sheet src/views/AccountingManagement/Reports/BalanceSheetView.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-finance-reports-balance-sheet pada /principal/finance/reports/balance-sheet; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=reportDate; kolom=Nama Akun, Balance; filter=reportDate Confirmed from code — resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160 Confirmed from code — sesi autentik; capability finance.report_balance_sheet.view; allowedRoles principal; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/reports/balance-sheet P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan principal-finance-reports-cash-flow /principal/finance/reports/cash-flow src/views/AccountingManagement/Reports/CashFlowView.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-finance-reports-cash-flow pada /principal/finance/reports/cash-flow; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, selectedYear, Tanggal Akhir; kolom=Keterangan; filter=dateFrom, dateTo; sinyal validasi=min/max; aturan field=selectedYear: min=2010, max=new Date().getFullYear(); Inferred from code — option/status/display-label candidates=Ringkasan, Per Bulan Confirmed from code — set viewMode, resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291 Confirmed from code — sesi autentik; capability finance.report_cash_flow.view; allowedRoles principal; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/reports/cash-flow P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan Vendor dengan Pengeluaran Terbesar /principal/finance/reports/expense src/views/Principal/PrincipalExpenseReport.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Vendor dengan Pengeluaran Terbesar pada /principal/finance/reports/expense; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear, filters.query; kolom=Tanggal, Transaksi, Vendor, Jurnal, Referensi, Jumlah; filter=filters.period, filters.fiscalYear, filters.query; aturan field=filters.query: type=text Confirmed from code — Refresh, Download CSV, loadReport, downloadCsv Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.reports.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan principal-finance-reports-income /principal/finance/reports/income src/views/AccountingManagement/IncomeDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-finance-reports-income pada /principal/finance/reports/income; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, searchQuery; kolom=Nama Transaksi, Sumber Pemasukan; filter=startDate, endDate, searchQuery; sinyal validasi=min/max; aturan field=startDate: type=date, endDate: type=date, searchQuery: type=text; Inferred from code — option/status/display-label candidates=Pemasukan, Total Pemasukan Harian Confirmed from code — Ringkasan, Laporan Pengeluaran, Download PDF, router.push, downloadPDF Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148; Confirmed from code — /api/v1/accounting/payments/list @ src/services/admin/accountingAdmin.service.js:261 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:510; Confirmed from code — /api/v1/accounting/moves/list @ src/services/admin/accountingAdmin.service.js:10 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:111; Confirmed from code — /api/v1/accounting/partners/count @ src/services/admin/accountingAdmin.service.js:214 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:417 Confirmed from code — sesi autentik; capability finance.reports.view; allowedRoles principal; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/finance/reports, /principal/finance/reports/expense P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Keuangan Dashboard Bendahara /treasurer/dashboard src/views/AdminViews/BendaharaDashboard.vue:1 Inferred from code — admin, school_admin, treasurer; diturunkan dari pola capability frontend untuk finance.dashboard.view; izin sesi backend dapat berbeda Inferred from code — halaman Dashboard Bendahara pada /treasurer/dashboard; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Pengeluaran, Gaji Pegawai, Anggaran Confirmed from code — Lihat Semua, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFormatCurrency.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.dashboard.view; feature flag scola_fees; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/spp, /admin/transactions, /admin/expense, /admin/finance/reports, /admin/payroll, /admin/budget P3 — halaman sederhana/statis Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

Komunikasi (15 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Komunikasi PublicComplaintDetail /admin/complaints/:id src/views/AdminViews/ComplaintDetail.vue:1 Confirmed from code — admin, school_admin, principal; guard route memakai allowedRoles Inferred from code — halaman PublicComplaintDetail pada /admin/complaints/:id; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.push, toggleReadStatus, toggleFilePreview, downloadFile Confirmed from code — /api/complaint/detail @ src/services/public/publicComplaint.service.js:69 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:223; Confirmed from code — /api/complaint/mark-unread @ src/services/public/publicComplaint.service.js:93 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:305; Confirmed from code — /api/complaint/mark-read @ src/services/public/publicComplaint.service.js:81 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:288 Confirmed from code — sesi autentik; capability communication.complaint_dashboard.view; allowedRoles admin, school_admin, principal; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/complaint/mark-unread, /api/complaint/mark-read; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /principal/complaints/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi Pesan /admin/messaging src/views/Messaging.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pesan pada /admin/messaging; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedAssignmentId, newMessage, selectedChildId, userSearchQuery, bulkDraftMessage, Tulis pesan..., Pesan / keterangan foto untuk ortu terpilih; filter=userSearchQuery; sinyal validasi=custom validate; aturan field=field: type=file, newMessage: type=text, userSearchQuery: type=text, field: type=checkbox; Inferred from code — option/status/display-label candidates=Wali kelas, Mapel, Umum, Grup, Pesan Confirmed from code — Mulai Percakapan, Percakapan Baru, Muat pesan sebelumnya, Chat, set messagingScope, set activeTab, set showNewChatModal, openRoom, closeRoom, set showRoomInfo, loadMoreMessages, openAttachment, removeFile, handleFileSelect, +7 lainnya Confirmed from code — /api/v1/messaging/channels @ src/services/notifications/messagingService.js:132 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/rooms @ src/services/notifications/messagingService.js:464 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/channels/:param/messages @ src/services/notifications/messagingService.js:262 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/messages @ src/services/notifications/messagingService.js:488 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/channels/:param/send @ src/services/notifications/messagingService.js:331 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:22; Confirmed from code — /api/v1/messaging/homeroom/send-message @ src/services/notifications/messagingService.js:525 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/send-message-bulk @ src/services/notifications/messagingService.js:560 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/channels/create @ src/services/notifications/messagingService.js:404 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:25; Confirmed from code — /api/v1/messaging/homeroom/channel-get @ src/services/notifications/messagingService.js:449 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/parent-contacts @ src/services/notifications/messagingService.js:425 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/subject/rooms @ src/services/notifications/messagingService.js:598 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:28; Confirmed from code — /api/v1/messaging/subject/messages @ src/services/notifications/messagingService.js:620 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/subject/send-message @ src/services/notifications/messagingService.js:649 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/subject/send-message-bulk @ src/services/notifications/messagingService.js:687 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/subject/channel-get @ src/services/notifications/messagingService.js:592 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/subject/parent-contacts @ src/services/notifications/messagingService.js:572 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/parent/teacher-contacts @ src/services/notifications/messagingService.js:357 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:16; Confirmed from code — /api/v1/messaging/channels/:param/read @ src/services/notifications/messagingService.js:350 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:32; Confirmed from code — /api/v1/messaging/users/search @ src/services/notifications/messagingService.js:713 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:34; Confirmed from code — /longpolling/poll @ src/services/common/odooLongpoll.js:76; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability communication.messages.manage; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/messaging/channels/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /messaging, /parent/chat-teacher, /parent/messaging P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi NewsDetail /admin/news/:id src/components/news/NewsDetail.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman NewsDetail pada /admin/news/:id; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=rejectDialog.notes, Mis. Perlu perbaikan ejaan / lampiran belum lengkap; sinyal validasi=required; aturan field=rejectDialog.notes: required; Inferred from code — option/status/display-label candidates=Info Sekolah Confirmed from code — goBackToList, runAction, openRejectDialog, goToEdit, openLightbox, set lightbox.open, handleReject Confirmed from code — /api/manage/news/:param/transition @ src/services/news/newsService.js:764 -> ../custom_addons_scola/gcgscola/scola_news/controllers/news_manage_api.py:172 Confirmed from code — sesi autentik; capability communication.news.manage; allowedRoles admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/news/:id/edit, /admin/news P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi EditNews /admin/news/:id/edit src/views/AdminViews/News/NewsWizard.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman EditNews pada /admin/news/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=createCategoryDialog.name, formData.targetAudienceType, formData.priority, formData.classIds, formData.gradeIds, formData.isPinned, formData.categoryId, formData.title, formData.subtitle, formData.content, formData.summary, formData.publishMode, +18 lainnya; filter=formData.classIds, formData.publishDate, formData.publishDateTo, Target Jenjang *; sinyal validasi=required, min/max, pattern/regex, custom validate; aturan field=createCategoryDialog.name: required, formData.isPinned: type=checkbox, formData.categoryId: required, formData.title: required, maxlength=200, formData.summary: maxlength=240, field: type=file, formData.publishMode: type=radio, formData.publishDate: type=datetime-local, formData.publishDateTo: type=datetime-local; Inferred from code — option/status/display-label candidates=Normal, Penting, Kritis, Berita kritikal — perlu persetujuan., Berita disimpan sebagai draft., Publikasikan sekarang, Jadwalkan Confirmed from code — router.back, handleRestoreDraft, handleDiscardDraft, prevStep, handleNext, handleSubmit, handleCreateCategory, removeImage, triggerFileInput, handleFile Confirmed from code — /api/manage/news/:param/transition @ src/services/news/newsService.js:764 -> ../custom_addons_scola/gcgscola/scola_news/controllers/news_manage_api.py:172; Confirmed from code — /api/manage/news/preview_audience @ src/services/news/newsService.js:883 -> ../custom_addons_scola/gcgscola/scola_news/controllers/news_manage_api.py:39 Confirmed from code — sesi autentik; capability communication.news.manage; allowedRoles admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; parameter route id; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/news, /admin/news/create P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi CreateNews /admin/news/create src/views/AdminViews/News/NewsWizard.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman CreateNews pada /admin/news/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=createCategoryDialog.name, formData.targetAudienceType, formData.priority, formData.classIds, formData.gradeIds, formData.isPinned, formData.categoryId, formData.title, formData.subtitle, formData.content, formData.summary, formData.publishMode, +18 lainnya; filter=formData.classIds, formData.publishDate, formData.publishDateTo, Target Jenjang *; sinyal validasi=required, min/max, pattern/regex, custom validate; aturan field=createCategoryDialog.name: required, formData.isPinned: type=checkbox, formData.categoryId: required, formData.title: required, maxlength=200, formData.summary: maxlength=240, field: type=file, formData.publishMode: type=radio, formData.publishDate: type=datetime-local, formData.publishDateTo: type=datetime-local; Inferred from code — option/status/display-label candidates=Normal, Penting, Kritis, Berita kritikal — perlu persetujuan., Berita disimpan sebagai draft., Publikasikan sekarang, Jadwalkan Confirmed from code — router.back, handleRestoreDraft, handleDiscardDraft, prevStep, handleNext, handleSubmit, handleCreateCategory, removeImage, triggerFileInput, handleFile Confirmed from code — /api/manage/news/:param/transition @ src/services/news/newsService.js:764 -> ../custom_addons_scola/gcgscola/scola_news/controllers/news_manage_api.py:172; Confirmed from code — /api/manage/news/preview_audience @ src/services/news/newsService.js:883 -> ../custom_addons_scola/gcgscola/scola_news/controllers/news_manage_api.py:39 Confirmed from code — sesi autentik; capability communication.news.manage; allowedRoles admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/news, /admin/news/:id/edit P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi admin-notification-config /admin/notification-config src/views/AdminViews/NotificationConfig/NotificationConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-notification-config pada /admin/notification-config; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Absensi, Rekap Absensi Mingguan, Pengingat Jatuh Tempo, Pembayaran Diterima, Pengumuman & Berita, Pengumuman Baru, Berita Baru, PPDB, Perubahan Status Pendaftaran, Pendaftaran Diterima, +2 lainnya Confirmed from code — toggleEvent, saveConfig Confirmed from code — /api/v1/admin/notification-config @ src/services/notifications/notificationConfig.service.js:15 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/notification_config_api.py:34; Confirmed from code — /api/v1/admin/notification-config/save @ src/services/notifications/notificationConfig.service.js:20 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/notification_config_api.py:47 Confirmed from code — sesi autentik; capability communication.notifications.config; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/notification-config/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi Analitik Notifikasi /admin/notifications/analytics src/views/Notifications/NotificationAnalytics.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Analitik Notifikasi pada /admin/notifications/analytics; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — Refresh, Export CSV, Export JSON, Coba Lagi, $router.back, refreshData, exportCSV, exportJSON Confirmed from code — /api/portal/notifications/analytics @ src/views/Notifications/NotificationAnalytics.vue:337 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_observability_api.py:16 Confirmed from code — sesi autentik; capability communication.notifications.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi Notification Templates /admin/notifications/templates src/views/Notifications/NotificationTemplates.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Notification Templates pada /admin/notifications/templates; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=selectedCategory, formData.name, formData.code, formData.category, formData.title_id, formData.title_en, formData.content_id, formData.content_en, Template Name, Template Code, Title (Indonesian), Title (English), +2 lainnya; sinyal validasi=required; aturan field=formData.name: required, formData.code: required, formData.category: required, formData.title_id: required, formData.content_id: required Confirmed from code — Create Template, Preview, Delete, Cancel, Save, Close, set showCreateModal, loadTemplates, previewTemplate, editTemplate, deleteTemplate, closeModals, saveTemplate, set showPreviewModal Confirmed from code — /api/portal/notification-templates/search @ src/services/common/templateService.js:14 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_template_api.py:12; Confirmed from code — /api/portal/notification-templates/:param/delete @ src/services/common/templateService.js:43 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_template_api.py:28; Confirmed from code — /api/portal/notification-templates/:param/update @ src/services/common/templateService.js:35 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_template_api.py:24; Confirmed from code — /api/portal/notification-templates/:param/preview @ src/services/common/templateService.js:51 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_template_api.py:32; Confirmed from code — /api/portal/notification-templates @ src/services/common/templateService.js:28 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_template_api.py:20 Confirmed from code — sesi autentik; capability communication.notifications.config; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: referenced records dari field title_id, content_id Inferred from code — memanggil endpoint berbentuk mutasi /api/portal/notification-templates/:param/delete, /api/portal/notification-templates/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi announcement /announcement src/views/AnnouncementList.vue:1 Inferred from code — admin, school_admin, parent, principal, vice_principal_student_affairs, vice_principal_public_relations; diturunkan dari pola capability frontend untuk communication.announcements.view; izin sesi backend dapat berbeda Inferred from code — halaman announcement pada /announcement; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — set activeFilter, loadAnnouncements, openAnnouncement, loadMore, set selectedAnnouncement Confirmed from code — /portal/announcements @ src/services/news/announcementService.js:41 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_announcement_api.py:12; Missing or unclear — /portal/announcements/:param @ src/services/news/announcementService.js:58; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability communication.announcements.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/news/create, /parent/announcement P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Komunikasi detailevent /calendar/detailevent/:eventId src/views/AdminViews/Calendar/EventDetail.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman detailevent pada /calendar/detailevent/:eventId; tujuan diringkas dari aksi interaktif Confirmed from code — field=event.name, formattedStart, formattedStop, event.location, formattedDescription, event.privacy, Event Name, Start Time, End Time, Location, Description, Organizer, +1 lainnya; aturan field=formattedStart: type=datetime-local, formattedStop: type=datetime-local Confirmed from code — Save, saveEvent Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/admin/calendarAdmin.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.calendar.view; allowedRoles admin, school_admin; parameter route eventId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /calendar P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi newevent /calendar/newevent src/views/AdminViews/Calendar/EventNew.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman newevent pada /calendar/newevent; tujuan diringkas dari aksi interaktif Confirmed from code — field=event.subject, event.start, event.end, event.duration, event.location, event.videocall, event.privacy, event.user_id, event.description, event.attendees, e.g. Business Lunch, e.g. 1 hour, +3 lainnya; aturan field=event.subject: type=text, event.start: type=datetime-local, event.end: type=datetime-local, event.duration: type=text, event.location: type=text, event.videocall: type=text, event.attendees: type=text; Inferred from code — option/status/display-label candidates=Error Confirmed from code — Simpan Acara, submitEvent Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/calendarAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.calendar.view; allowedRoles admin, school_admin; Inferred from code — data prerequisite: referenced records dari field user_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — named route tidak ter-resolve: kalenderberita P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi newsdetail /news/detail/:newsId src/views/NewsDetail.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, admin_staff, counselor, librarian, lab_technician, school_committee, foundation_auditor, inventory_officer, foundation, foundation_chairman, head_admin, treasurer, homeroom, alumni, vice_principal_curriculum, +4 lainnya; diturunkan dari pola capability frontend untuk communication.news.view; izin sesi backend dapat berbeda Inferred from code — halaman newsdetail pada /news/detail/:newsId; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back, fetchNewsDetail, openLightbox, selectHeroImage, closeLightbox Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNews.js, src/composables/useNotifications.js, src/composables/useSSE.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.news.view; parameter route newsId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P3 — halaman sederhana/statis Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Komunikasi parent-communications /parent/communications src/views/ParentViews/ParentSectionHub.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-communications pada /parent/communications; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem, onChildChange Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256 Confirmed from code — sesi autentik; capability communication.announcements.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/academics, /parent/finance, /parent/library, /parent/more, /parent/student-life P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi Pesan /parent/messaging src/views/Messaging.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Pesan pada /parent/messaging; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedAssignmentId, newMessage, selectedChildId, userSearchQuery, bulkDraftMessage, Tulis pesan..., Pesan / keterangan foto untuk ortu terpilih; filter=userSearchQuery; sinyal validasi=custom validate; aturan field=field: type=file, newMessage: type=text, userSearchQuery: type=text, field: type=checkbox; Inferred from code — option/status/display-label candidates=Wali kelas, Mapel, Umum, Grup, Pesan Confirmed from code — Mulai Percakapan, Percakapan Baru, Muat pesan sebelumnya, Chat, set messagingScope, set activeTab, set showNewChatModal, openRoom, closeRoom, set showRoomInfo, loadMoreMessages, openAttachment, removeFile, handleFileSelect, +7 lainnya Confirmed from code — /api/v1/messaging/channels @ src/services/notifications/messagingService.js:132 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/rooms @ src/services/notifications/messagingService.js:464 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/channels/:param/messages @ src/services/notifications/messagingService.js:262 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/messages @ src/services/notifications/messagingService.js:488 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/channels/:param/send @ src/services/notifications/messagingService.js:331 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:22; Confirmed from code — /api/v1/messaging/homeroom/send-message @ src/services/notifications/messagingService.js:525 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/send-message-bulk @ src/services/notifications/messagingService.js:560 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/channels/create @ src/services/notifications/messagingService.js:404 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:25; Confirmed from code — /api/v1/messaging/homeroom/channel-get @ src/services/notifications/messagingService.js:449 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/parent-contacts @ src/services/notifications/messagingService.js:425 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/subject/rooms @ src/services/notifications/messagingService.js:598 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:28; Confirmed from code — /api/v1/messaging/subject/messages @ src/services/notifications/messagingService.js:620 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/subject/send-message @ src/services/notifications/messagingService.js:649 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/subject/send-message-bulk @ src/services/notifications/messagingService.js:687 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/subject/channel-get @ src/services/notifications/messagingService.js:592 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/subject/parent-contacts @ src/services/notifications/messagingService.js:572 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/parent/teacher-contacts @ src/services/notifications/messagingService.js:357 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:16; Confirmed from code — /api/v1/messaging/channels/:param/read @ src/services/notifications/messagingService.js:350 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:32; Confirmed from code — /api/v1/messaging/users/search @ src/services/notifications/messagingService.js:713 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:34; Confirmed from code — /longpolling/poll @ src/services/common/odooLongpoll.js:76; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability communication.messages.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/messaging/channels/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/messaging, /messaging, /parent/chat-teacher P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Komunikasi Pengaturan Notifikasi /settings/notifications src/views/SettingsManagement/NotificationSettings.vue:1 Inferred from code — admin, school_admin, vice_principal_student_affairs, vice_principal_public_relations; diturunkan dari pola capability frontend untuk communication.notifications.config; izin sesi backend dapat berbeda Inferred from code — halaman Pengaturan Notifikasi pada /settings/notifications; tujuan diringkas dari aksi interaktif Confirmed from code — field=quietHours.startTime, quietHours.endTime, quietHours.allowUrgent, telegramProfile.chat_id, telegramProfile.chat_label, @username atau -1001234567890, Telegram Pribadi, Mulai, Chat ID / @username, Label; aturan field=quietHours.startTime: type=time, quietHours.endTime: type=time, quietHours.allowUrgent: type=checkbox, telegramProfile.chat_id: type=text, telegramProfile.chat_label: type=text; Inferred from code — option/status/display-label candidates=Error, Sukses, Telegram Dilepas Confirmed from code — Lepas Tautan, $router.back, togglePushNotification, set quietHours.enabled, handleTelegramTest, handleTelegramUnlink, toggleChannel, savePreferences Confirmed from code — /portal/quiet-hours/update @ src/services/notifications/notificationChannelService.js:84 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_preference_api.py:33; Confirmed from code — /portal/notification-config @ src/services/notifications/notificationChannelService.js:96 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:14; Confirmed from code — /portal/preferences @ src/services/notifications/notificationChannelService.js:16 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_preference_api.py:12; Confirmed from code — /portal/preferences/telegram-link @ src/services/notifications/notificationChannelService.js:70 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_preference_api.py:20; Confirmed from code — /portal/preferences/telegram-test @ src/services/notifications/notificationChannelService.js:79 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_preference_api.py:29 Confirmed from code — sesi autentik; capability communication.notifications.config; Inferred from code — data prerequisite: referenced records dari field chat_id Inferred from code — memanggil endpoint berbentuk mutasi /portal/quiet-hours/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

Konseling & Kedisiplinan (95 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Konseling & Kedisiplinan DetailPrestasi /admin/achievements/:id src/views/CounselingManagement/Prestasi/DetailPrestasi.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman DetailPrestasi pada /admin/achievements/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=showCancelDialog, rejectReason, Alasan penolakan...; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/:id, /faculty/achievements/:id, /principal/students/achievements/:id, /vice-principal/student-affairs/achievements/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminIncidentDetail /admin/incidents/:id src/views/CounselingManagement/Incident/IncidentDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminIncidentDetail pada /admin/incidents/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=resolveNotes, escalateNotes; sinyal validasi=custom validate Confirmed from code — router.back, loadDetail, handleTriage, handleInvestigate, openResolveModal, openEscalateModal, goToReferral, set showResolveModal, confirmResolve, set showEscalateModal, confirmEscalate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/incidents/:id, /faculty/incidents/:id, /principal/students/incidents/:id, /vice-principal/student-affairs/incidents/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminIncidentNew /admin/incidents/new src/views/CounselingManagement/Incident/IncidentForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminIncidentNew pada /admin/incidents/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.title, form.category, form.incident_date, form.incident_time, form.location, form.involved_parties, form.victim_id, form.description, Judul Insiden, Ringkasan singkat insiden, Tanggal Kejadian, Waktu Kejadian, +2 lainnya; filter=form.incident_date; sinyal validasi=required; aturan field=form.title: required, form.category: required, form.incident_date: required, type=date, form.incident_time: type=time, form.location: required, form.description: required, field: type=file; Inferred from code — option/status/display-label candidates=Rendah, Tinggi, Darurat Confirmed from code — router.back, submitForm, handleFileUpload, set form.urgency Confirmed from code — /web/session/get_session_info @ src/views/CounselingManagement/Incident/IncidentForm.vue:249; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability discipline.incident.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field victim_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/incidents/new, /faculty/incidents/new, /vice-principal/student-affairs/incidents/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan Informasi Dasar /admin/rules/:id src/views/CounselingManagement/Rules/Admin/EditRules.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Informasi Dasar pada /admin/rules/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.name, form.rule_type, form.version, form.description, form.published_date, uploadedFile, form.tag_ids, Judul Peraturan, Masukkan judul peraturan, Jenis Peraturan, Versi, Contoh: 1.0, +2 lainnya; filter=form.published_date; sinyal validasi=required, custom validate; aturan field=form.name: required, form.rule_type: required; Inferred from code — option/status/display-label candidates=Tata Tertib, Hak, Kewajiban Confirmed from code — $router.push, submitEdit Confirmed from code — /api/v1/student-affairs/rules/tag-create @ src/services/studentAffairs/rules.service.js:19 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:113; Confirmed from code — /api/v1/student-affairs/rules/detail @ src/services/studentAffairs/rules.service.js:35 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:152; Confirmed from code — /api/v1/student-affairs/rules/tags @ src/services/studentAffairs/rules.service.js:13 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:99; Confirmed from code — /api/v1/student-affairs/rules/save @ src/services/studentAffairs/rules.service.js:42 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:171 Confirmed from code — sesi autentik; capability discipline.rules.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field tag_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/student-affairs/rules/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/rules P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan Informasi Dasar /admin/rules/add src/views/CounselingManagement/Rules/Admin/TambahRules.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Informasi Dasar pada /admin/rules/add; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.name, form.rule_type, form.version, form.description, form.published_date, uploadedFile, form.tag_ids, Judul Peraturan, Masukkan judul peraturan, Jenis Peraturan, Versi, Contoh: 1.0, +2 lainnya; filter=form.published_date; sinyal validasi=required, custom validate; aturan field=form.name: required, form.rule_type: required; Inferred from code — option/status/display-label candidates=Tata Tertib, Hak, Kewajiban Confirmed from code — $router.push, submitForm Confirmed from code — /api/v1/student-affairs/rules/tag-create @ src/services/studentAffairs/rules.service.js:19 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:113; Confirmed from code — /api/v1/student-affairs/rules/tags @ src/services/studentAffairs/rules.service.js:13 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:99; Confirmed from code — /api/v1/student-affairs/rules/save @ src/services/studentAffairs/rules.service.js:42 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:171 Confirmed from code — sesi autentik; capability discipline.rules.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field tag_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/student-affairs/rules/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/rules P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminPerizinanDetail /admin/student-permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminPerizinanDetail pada /admin/student-permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /counseling/student-permits/:id, /faculty/student-permits/:id, /parent/permits/:id, /principal/students/permits/:id, /student/permits/:id, /vice-principal/student-affairs/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminPerizinanEdit /admin/student-permits/:id/edit src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminPerizinanEdit pada /admin/student-permits/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminPerizinanTambah /admin/student-permits/new src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminPerizinanTambah pada /admin/student-permits/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan DetailPelanggaran /admin/violations/:id src/views/CounselingManagement/Pelanggaran/DetailPelanggaran.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman DetailPelanggaran pada /admin/violations/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedLetterTemplate, showCancelDialog, rejectReason, Alasan penolakan (wajib diisi)..., Template Surat; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, set showLetterSection, handleDownloadLetter, handlePrintLetter, goToReferral, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/:id, /faculty/violations/:id, /principal/students/violations/:id, /vice-principal/student-affairs/violations/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminViolationCategories /admin/violations/categories src/views/CounselingManagement/Pelanggaran/ListCategoryPelanggaran.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminViolationCategories pada /admin/violations/categories; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=confirmDialog.show; kolom=Rentang Poin, Warna, Actions; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddKategori, goToDetail, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/categories, /principal/students/violations/categories, /vice-principal/student-affairs/violations/categories P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminViolationCategoryDetail /admin/violations/categories/:id src/views/CounselingManagement/Pelanggaran/DetailCategory.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminViolationCategoryDetail pada /admin/violations/categories/:id; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/categories/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminViolationCategoryNew /admin/violations/categories/new src/views/CounselingManagement/Pelanggaran/TambahKategori.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminViolationCategoryNew pada /admin/violations/categories/new; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.color, form.min_point, form.max_point, errorDialog.show, Contoh: 1, Contoh: 10, Warna Indikator, Poin Minimum, Poin Maksimum; sinyal validasi=min/max; aturan field=form.name: type=text, form.min_point: min=0, type=number, form.max_point: min=0, type=number Confirmed from code — set showSuccess, cancel, submitForm, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/categories, /counseling/violations/categories/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminPelanggaranNew /admin/violations/new src/views/CounselingManagement/Pelanggaran/TambahPelanggaran.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminPelanggaranNew pada /admin/violations/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.date, type.aspect, type.type_id, formData.sanction, formData.start_date, formData.end_date, formData.description, validationDialog.show, errorDialog.show, Tanggal Kejadian, +5 lainnya; filter=filterBatchId, formData.date, formData.start_date, formData.end_date; sinyal validasi=required, min/max; aturan field=formData.student_id: required, formData.date: type=date, field: type=file, formData.start_date: type=date, formData.end_date: type=date; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — Tambah Pelanggaran Lain, router.back, removeViolation, addViolation, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, type_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/new, /faculty/violations/new, /vice-principal/student-affairs/violations/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminViolationTypes /admin/violations/types src/views/CounselingManagement/Pelanggaran/BentukPelanggaran.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminViolationTypes pada /admin/violations/types; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedAspect, confirmDialog.show; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddType, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/types, /principal/students/violations/types, /vice-principal/student-affairs/violations/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan AdminViolationTypeNew /admin/violations/types/new src/views/CounselingManagement/Pelanggaran/TambahBentukPelanggaran.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdminViolationTypeNew pada /admin/violations/types/new; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedAspect, item.name, item.point, validationDialog.show, errorDialog.show, Jumlah Poin Berkurang; aturan field=item.name: type=text, item.point: type=number; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — set showSuccess, cancel, removeViolationType, addViolationType, submitForm, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/types, /counseling/violations/types/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievements-detail /counseling/achievements/:id src/views/CounselingManagement/Prestasi/DetailPrestasi.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievements-detail pada /counseling/achievements/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=showCancelDialog, rejectReason, Alasan penolakan...; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/achievements/:id, /faculty/achievements/:id, /principal/students/achievements/:id, /vice-principal/student-affairs/achievements/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievements-edit /counseling/achievements/:id/edit src/views/CounselingManagement/Prestasi/EditPrestasi.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievements-edit pada /counseling/achievements/:id/edit; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.category, formData.type, formData.level_id, formData.name, formData.organizer_name, formData.date, formData.ranking, formData.point, validationDialog.show, errorDialog.show, +11 lainnya; filter=filterBatchId, formData.date; sinyal validasi=required; aturan field=formData.student_id: required, formData.category: type=radio, formData.type: type=radio, formData.date: type=date, field: type=file, formData.point: type=number; Inferred from code — option/status/display-label candidates=Gagal Memuat Data, Poin Tidak Valid, Gagal Menyimpan Confirmed from code — router.back, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, level_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievement-levels /counseling/achievements/levels src/views/CounselingManagement/Prestasi/ListTingkatan.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievement-levels pada /counseling/achievements/levels; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedLevelId, confirmDialog.show; Inferred from code — option/status/display-label candidates=Dashboard, Prestasi, Tingkat Prestasi Confirmed from code — goToAdd, goToDetail, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useBreadcrumbs.js, src/composables/useNotification.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels/new, /counseling/achievements P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievement-levels-detail /counseling/achievements/levels/:id src/views/CounselingManagement/Prestasi/DetailTingkatan.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievement-levels-detail pada /counseling/achievements/levels/:id; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Dashboard, Prestasi, Tingkat Prestasi Confirmed from code — router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useBreadcrumbs.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievement-levels-edit /counseling/achievements/levels/:id/edit src/views/CounselingManagement/Prestasi/EditTingkatPrestasi.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievement-levels-edit pada /counseling/achievements/levels/:id/edit; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.min_point, form.max_point, form.color, Poin Minimum *, Poin Maksimum *; sinyal validasi=min/max, custom validate; aturan field=form.name: type=text, form.min_point: min=0, type=number, form.max_point: min=0, type=number Confirmed from code — cancel, submitForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.manage; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievement-levels-new /counseling/achievements/levels/new src/views/CounselingManagement/Prestasi/TambahTingkatan.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievement-levels-new pada /counseling/achievements/levels/new; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.min_point, form.max_point, form.color, Poin Minimum, Poin Maksimum; aturan field=form.name: type=text, form.min_point: type=number, form.max_point: type=number Confirmed from code — goBack, submitForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-achievements-new /counseling/achievements/new src/views/CounselingManagement/Prestasi/TambahPrestasi.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-achievements-new pada /counseling/achievements/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.category, formData.type, formData.level_id, formData.name, formData.organizer_name, formData.date, formData.ranking, formData.point, validationDialog.show, errorDialog.show, +12 lainnya; filter=filterBatchId, formData.date; sinyal validasi=required; aturan field=formData.student_id: required, formData.category: type=radio, formData.type: type=radio, formData.date: type=date, field: type=file, formData.point: type=number Confirmed from code — router.back, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, level_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/achievements/new, /vice-principal/student-affairs/achievements/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-conference-new /counseling/conference/new src/views/CounselingManagement/Operations/TambahOperasiKonseling.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-conference-new pada /counseling/conference/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.title, form.studentSearch, form.jenisLaporan, form.bidangLayanan, form.agenda, form.participants, form.location, form.deskripsi, pageMeta.titlePlaceholder, form.studentName \|\|, Contoh: Evaluasi perkembangan kasus – Budi Santoso, Contoh: Ruang BK / Google Meet, +5 lainnya; filter=form.studentSearch; sinyal validasi=required; aturan field=form.title: type=text, form.studentSearch: type=text, form.agenda: type=text, form.participants: type=checkbox, form.location: type=text; Inferred from code — option/status/display-label candidates=Buat laporan kunjungan rumah siswa baru., Buat laporan konferensi kasus konseling baru., Rendah, Tinggi, Darurat, Kepala Sekolah, Wakasek Kesiswaan Confirmed from code — goBack, selectStudent, set form.urgensi, handleCreate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counselingOperations.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/home-visit/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-home-visit-new /counseling/home-visit/new src/views/CounselingManagement/Operations/TambahOperasiKonseling.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-home-visit-new pada /counseling/home-visit/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.title, form.studentSearch, form.jenisLaporan, form.bidangLayanan, form.agenda, form.participants, form.location, form.deskripsi, pageMeta.titlePlaceholder, form.studentName \|\|, Contoh: Evaluasi perkembangan kasus – Budi Santoso, Contoh: Ruang BK / Google Meet, +5 lainnya; filter=form.studentSearch; sinyal validasi=required; aturan field=form.title: type=text, form.studentSearch: type=text, form.agenda: type=text, form.participants: type=checkbox, form.location: type=text; Inferred from code — option/status/display-label candidates=Buat laporan kunjungan rumah siswa baru., Buat laporan konferensi kasus konseling baru., Rendah, Tinggi, Darurat, Kepala Sekolah, Wakasek Kesiswaan Confirmed from code — goBack, selectStudent, set form.urgensi, handleCreate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counselingOperations.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/conference/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-incidents-detail /counseling/incidents/:id src/views/CounselingManagement/Incident/IncidentDetail.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-incidents-detail pada /counseling/incidents/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=resolveNotes, escalateNotes; sinyal validasi=custom validate Confirmed from code — router.back, loadDetail, handleTriage, handleInvestigate, openResolveModal, openEscalateModal, goToReferral, set showResolveModal, confirmResolve, set showEscalateModal, confirmEscalate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents/:id, /faculty/incidents/:id, /principal/students/incidents/:id, /vice-principal/student-affairs/incidents/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-incidents-new /counseling/incidents/new src/views/CounselingManagement/Incident/IncidentForm.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-incidents-new pada /counseling/incidents/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.title, form.category, form.incident_date, form.incident_time, form.location, form.involved_parties, form.victim_id, form.description, Judul Insiden, Ringkasan singkat insiden, Tanggal Kejadian, Waktu Kejadian, +2 lainnya; filter=form.incident_date; sinyal validasi=required; aturan field=form.title: required, form.category: required, form.incident_date: required, type=date, form.incident_time: type=time, form.location: required, form.description: required, field: type=file; Inferred from code — option/status/display-label candidates=Rendah, Tinggi, Darurat Confirmed from code — router.back, submitForm, handleFileUpload, set form.urgency Confirmed from code — /web/session/get_session_info @ src/views/CounselingManagement/Incident/IncidentForm.vue:249; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability discipline.incident.manage; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field victim_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/incidents/new, /faculty/incidents/new, /vice-principal/student-affairs/incidents/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-report-detail /counseling/notes/:id src/views/CounselingManagement/Counseling/DetailCounseling.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-report-detail pada /counseling/notes/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=responseText, createMeeting, inviteParent, meetingDatetime, meetingType, meetingLink, meetingLocation, workflowOutcome, workflowRekomendasi, workflowReopenReason, Link pertemuan online, Lokasi pertemuan, +10 lainnya; filter=meetingDatetime; aturan field=createMeeting: type=checkbox, inviteParent: type=checkbox, meetingDatetime: type=datetime-local, meetingLink: type=url, meetingLocation: type=text Confirmed from code — router.back, fetchDetail, handleMarkResolved, handleCloseCase, handleReopenCase, submitResponse, set showResolveModal, confirmResolve, set showCloseModal, confirmClose, set showReopenModal, confirmReopen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/counseling/:id, /principal/students/counseling/:id, /vice-principal/student-affairs/counseling/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-rules-edit /counseling/rules/:id src/views/CounselingManagement/Rules/EditRules.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-rules-edit pada /counseling/rules/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.name, form.rule_type, form.description, form.version, form.published_date, form.tag_ids, newTag, Masukkan judul peraturan, Jenis, Masukkan deskripsi, Versi, Contoh: 1.0, +2 lainnya; filter=form.published_date; sinyal validasi=custom validate; aturan field=form.published_date: type=date, field: type=file, form.tag_ids: type=checkbox; Inferred from code — option/status/display-label candidates=Tata Tertib, Hak, Kewajiban Confirmed from code — router.back, handleFileUpload, addNewTag, submitEdit Confirmed from code — /api/v1/student-affairs/rules/tag-create @ src/services/studentAffairs/rules.service.js:19 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:113; Confirmed from code — /api/v1/student-affairs/rules/detail @ src/services/studentAffairs/rules.service.js:35 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:152; Confirmed from code — /api/v1/student-affairs/rules/tags @ src/services/studentAffairs/rules.service.js:13 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:99; Confirmed from code — /api/v1/student-affairs/rules/save @ src/services/studentAffairs/rules.service.js:42 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:171 Confirmed from code — sesi autentik; capability discipline.rules.manage; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field tag_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/student-affairs/rules/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /counseling/rules P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-rules-new /counseling/rules/new src/views/CounselingManagement/Rules/TambahRules.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-rules-new pada /counseling/rules/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.name, form.rule_type, form.description, form.version, form.published_date, form.tag_ids, newTag, Masukkan judul peraturan, Jenis, Masukkan deskripsi, Versi, Contoh: 1.0, +2 lainnya; filter=form.published_date; sinyal validasi=required, custom validate; aturan field=form.name: required, form.published_date: type=date, field: type=file, form.tag_ids: type=checkbox; Inferred from code — option/status/display-label candidates=Tata Tertib, Hak, Kewajiban Confirmed from code — router.back, handleFileUpload, addNewTag, submitForm Confirmed from code — /api/v1/student-affairs/rules/tag-create @ src/services/studentAffairs/rules.service.js:19 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:113; Confirmed from code — /api/v1/student-affairs/rules/tags @ src/services/studentAffairs/rules.service.js:13 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:99; Confirmed from code — /api/v1/student-affairs/rules/save @ src/services/studentAffairs/rules.service.js:42 -> ../custom_addons_scola/gcgscola/scola_rules/controllers/rules_api.py:171 Confirmed from code — sesi autentik; capability discipline.rules.manage; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field tag_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/student-affairs/rules/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /counseling/rules P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-student-permits-detail /counseling/student-permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-student-permits-detail pada /counseling/student-permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id, /faculty/student-permits/:id, /parent/permits/:id, /principal/students/permits/:id, /student/permits/:id, /vice-principal/student-affairs/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-student-permits-edit /counseling/student-permits/:id/edit src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-student-permits-edit pada /counseling/student-permits/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-student-permits-new /counseling/student-permits/new src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-student-permits-new pada /counseling/student-permits/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-detail /counseling/violations/:id src/views/CounselingManagement/Pelanggaran/DetailPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-detail pada /counseling/violations/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedLetterTemplate, showCancelDialog, rejectReason, Alasan penolakan (wajib diisi)..., Template Surat; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, set showLetterSection, handleDownloadLetter, handlePrintLetter, goToReferral, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/:id, /faculty/violations/:id, /principal/students/violations/:id, /vice-principal/student-affairs/violations/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-edit /counseling/violations/:id/edit src/views/CounselingManagement/Pelanggaran/EditPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-edit pada /counseling/violations/:id/edit; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.date, type.aspect, type.type_id, formData.sanction, formData.start_date, formData.end_date, formData.category_id, formData.name, formData.description, validationDialog.show, +5 lainnya; filter=filterBatchId, formData.date, formData.start_date, formData.end_date; sinyal validasi=required, min/max; aturan field=formData.student_id: required, formData.date: type=date, field: type=file, formData.start_date: type=date, formData.end_date: type=date; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — router.back, removeViolation, addViolation, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, type_id, category_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-categories /counseling/violations/categories src/views/CounselingManagement/Pelanggaran/ListCategoryPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-categories pada /counseling/violations/categories; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=confirmDialog.show; kolom=Rentang Poin, Warna, Actions; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddKategori, goToDetail, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/categories, /principal/students/violations/categories, /vice-principal/student-affairs/violations/categories P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-categories-detail /counseling/violations/categories/:id src/views/CounselingManagement/Pelanggaran/DetailCategory.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-categories-detail pada /counseling/violations/categories/:id; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.view; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/categories/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-categories-edit /counseling/violations/categories/:id/edit src/views/CounselingManagement/Pelanggaran/EditCategoryPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-categories-edit pada /counseling/violations/categories/:id/edit; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.color, form.min_point, form.max_point, Minimal Poin Berkurang *, Maksimal Poin Berkurang *; sinyal validasi=min/max, custom validate; aturan field=form.name: type=text, form.min_point: min=0, type=number, form.max_point: min=0, type=number Confirmed from code — cancel, submitForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.manage; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/categories P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-categories-new /counseling/violations/categories/new src/views/CounselingManagement/Pelanggaran/TambahKategori.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-categories-new pada /counseling/violations/categories/new; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.color, form.min_point, form.max_point, errorDialog.show, Contoh: 1, Contoh: 10, Warna Indikator, Poin Minimum, Poin Maksimum; sinyal validasi=min/max; aturan field=form.name: type=text, form.min_point: min=0, type=number, form.max_point: min=0, type=number Confirmed from code — set showSuccess, cancel, submitForm, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.manage; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/categories, /admin/violations/categories/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-new /counseling/violations/new src/views/CounselingManagement/Pelanggaran/TambahPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-new pada /counseling/violations/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.date, type.aspect, type.type_id, formData.sanction, formData.start_date, formData.end_date, formData.description, validationDialog.show, errorDialog.show, Tanggal Kejadian, +5 lainnya; filter=filterBatchId, formData.date, formData.start_date, formData.end_date; sinyal validasi=required, min/max; aturan field=formData.student_id: required, formData.date: type=date, field: type=file, formData.start_date: type=date, formData.end_date: type=date; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — Tambah Pelanggaran Lain, router.back, removeViolation, addViolation, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, type_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/new, /faculty/violations/new, /vice-principal/student-affairs/violations/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-types /counseling/violations/types src/views/CounselingManagement/Pelanggaran/BentukPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-types pada /counseling/violations/types; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedAspect, confirmDialog.show; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddType, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/types, /principal/students/violations/types, /vice-principal/student-affairs/violations/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-types-edit /counseling/violations/types/:id/edit src/views/CounselingManagement/Pelanggaran/EditBentukPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-types-edit pada /counseling/violations/types/:id/edit; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.aspect, form.name, form.point, Jumlah Poin Berkurang *; sinyal validasi=min/max, custom validate; aturan field=form.name: type=text, form.point: min=0, type=number; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — cancel, submitForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.manage; allowedRoles counselor; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-violations-types-new /counseling/violations/types/new src/views/CounselingManagement/Pelanggaran/TambahBentukPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-violations-types-new pada /counseling/violations/types/new; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedAspect, item.name, item.point, validationDialog.show, errorDialog.show, Jumlah Poin Berkurang; aturan field=item.name: type=text, item.point: type=number; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — set showSuccess, cancel, removeViolationType, addViolationType, submitForm, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.manage; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations/types, /admin/violations/types/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan counseling-warning-letters /counseling/violations/warning-letters src/views/CounselingManagement/Pelanggaran/WarningLetterList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman counseling-warning-letters pada /counseling/violations/warning-letters; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, levelFilter, statusFilter; kolom=No. SP, Sisa Poin; filter=searchQuery, levelFilter, statusFilter; Inferred from code — option/status/display-label candidates=Total SP, SP-1, SP-2, SP-3 Confirmed from code — Export CSV, exportCsv, resetFilters, printSP Confirmed from code — /api/v1/kesiswaan/warning-letters @ src/services/counseling/warningLetter.service.js:35 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:561; Confirmed from code — /api/v1/kesiswaan/warning-letters/print @ src/services/counseling/warningLetter.service.js:67 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:670; Confirmed from code — /api/v1/kesiswaan/export/dapodik @ src/services/counseling/warningLetter.service.js:84 -> ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/kesiswaan_dapodik_api.py:64 Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/pelanggaran P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-detailprestasi /faculty/achievements/:id src/views/CounselingManagement/Prestasi/DetailPrestasi.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman faculty-detailprestasi pada /faculty/achievements/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=showCancelDialog, rejectReason, Alasan penolakan...; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles homeroom, teacher; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/achievements/:id, /counseling/achievements/:id, /principal/students/achievements/:id, /vice-principal/student-affairs/achievements/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-addprestasi /faculty/achievements/new src/views/CounselingManagement/Prestasi/TambahPrestasi.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman faculty-addprestasi pada /faculty/achievements/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.category, formData.type, formData.level_id, formData.name, formData.organizer_name, formData.date, formData.ranking, formData.point, validationDialog.show, errorDialog.show, +12 lainnya; filter=filterBatchId, formData.date; sinyal validasi=required; aturan field=formData.student_id: required, formData.category: type=radio, formData.type: type=radio, formData.date: type=date, field: type=file, formData.point: type=number Confirmed from code — router.back, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles homeroom, teacher; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, level_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/new, /vice-principal/student-affairs/achievements/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-counseling-detail /faculty/counseling/:id src/views/CounselingManagement/Counseling/DetailCounseling.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-counseling-detail pada /faculty/counseling/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=responseText, createMeeting, inviteParent, meetingDatetime, meetingType, meetingLink, meetingLocation, workflowOutcome, workflowRekomendasi, workflowReopenReason, Link pertemuan online, Lokasi pertemuan, +10 lainnya; filter=meetingDatetime; aturan field=createMeeting: type=checkbox, inviteParent: type=checkbox, meetingDatetime: type=datetime-local, meetingLink: type=url, meetingLocation: type=text Confirmed from code — router.back, fetchDetail, handleMarkResolved, handleCloseCase, handleReopenCase, submitResponse, set showResolveModal, confirmResolve, set showCloseModal, confirmClose, set showReopenModal, confirmReopen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles teacher, homeroom; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes/:id, /principal/students/counseling/:id, /vice-principal/student-affairs/counseling/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-incidents-detail /faculty/incidents/:id src/views/CounselingManagement/Incident/IncidentDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-incidents-detail pada /faculty/incidents/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=resolveNotes, escalateNotes; sinyal validasi=custom validate Confirmed from code — router.back, loadDetail, handleTriage, handleInvestigate, openResolveModal, openEscalateModal, goToReferral, set showResolveModal, confirmResolve, set showEscalateModal, confirmEscalate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles teacher, homeroom; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents/:id, /counseling/incidents/:id, /principal/students/incidents/:id, /vice-principal/student-affairs/incidents/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-incidents-new /faculty/incidents/new src/views/CounselingManagement/Incident/IncidentForm.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-incidents-new pada /faculty/incidents/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.title, form.category, form.incident_date, form.incident_time, form.location, form.involved_parties, form.victim_id, form.description, Judul Insiden, Ringkasan singkat insiden, Tanggal Kejadian, Waktu Kejadian, +2 lainnya; filter=form.incident_date; sinyal validasi=required; aturan field=form.title: required, form.category: required, form.incident_date: required, type=date, form.incident_time: type=time, form.location: required, form.description: required, field: type=file; Inferred from code — option/status/display-label candidates=Rendah, Tinggi, Darurat Confirmed from code — router.back, submitForm, handleFileUpload, set form.urgency Confirmed from code — /web/session/get_session_info @ src/views/CounselingManagement/Incident/IncidentForm.vue:249; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability discipline.incident.manage; allowedRoles teacher, homeroom; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field victim_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/incidents/new, /counseling/incidents/new, /vice-principal/student-affairs/incidents/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-student-affairs-hub /faculty/student-affairs src/views/FacultyViews/TeacherSectionHub.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman faculty-student-affairs-hub pada /faculty/student-affairs; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles teacher, homeroom; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/assessment, /faculty/digital-learning, /faculty/hr, /faculty/teaching P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan FacultyStudentPermitsDetail /faculty/student-permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyStudentPermitsDetail pada /faculty/student-permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles teacher, homeroom; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id, /counseling/student-permits/:id, /parent/permits/:id, /principal/students/permits/:id, /student/permits/:id, /vice-principal/student-affairs/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan FacultyStudentPermitsEdit /faculty/student-permits/:id/edit src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyStudentPermitsEdit pada /faculty/student-permits/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles teacher, homeroom; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan FacultyStudentPermitsNew /faculty/student-permits/new src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman FacultyStudentPermitsNew pada /faculty/student-permits/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles teacher, homeroom; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-detailpelanggaran /faculty/violations/:id src/views/CounselingManagement/Pelanggaran/DetailPelanggaran.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman faculty-detailpelanggaran pada /faculty/violations/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedLetterTemplate, showCancelDialog, rejectReason, Alasan penolakan (wajib diisi)..., Template Surat; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, set showLetterSection, handleDownloadLetter, handlePrintLetter, goToReferral, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles homeroom, teacher; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/:id, /counseling/violations/:id, /principal/students/violations/:id, /vice-principal/student-affairs/violations/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan faculty-addpelanggaran /faculty/violations/new src/views/CounselingManagement/Pelanggaran/TambahPelanggaran.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman faculty-addpelanggaran pada /faculty/violations/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.date, type.aspect, type.type_id, formData.sanction, formData.start_date, formData.end_date, formData.description, validationDialog.show, errorDialog.show, Tanggal Kejadian, +5 lainnya; filter=filterBatchId, formData.date, formData.start_date, formData.end_date; sinyal validasi=required, min/max; aturan field=formData.student_id: required, formData.date: type=date, field: type=file, formData.start_date: type=date, formData.end_date: type=date; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — Tambah Pelanggaran Lain, router.back, removeViolation, addViolation, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles homeroom, teacher; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, type_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/new, /counseling/violations/new, /vice-principal/student-affairs/violations/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan ParentPrestasiDetail /parent/achievements/:id src/views/ParentViews/Counseling/DetailPrestasi.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentPrestasiDetail pada /parent/achievements/:id; tujuan diringkas dari konten halaman Confirmed from code — sinyal validasi=custom validate Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — /api/v1/parent/achievements/:param @ src/services/portal/parentAchievement.service.js:32; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles parent; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan parent-report-detail /parent/counseling/:id src/views/ParentViews/Counseling/DetailCounseling.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-report-detail pada /parent/counseling/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=custom validate Confirmed from code — router.back Confirmed from code — /api/v1/counseling/portal/reports/detail @ src/services/counseling/counselingPortal.service.js:13 -> ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_portal_api.py:114; Confirmed from code — /api/v1/counseling/portal/reports/responses @ src/services/counseling/counselingPortal.service.js:20 -> ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_portal_api.py:124 Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles parent; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan parent-report-add /parent/counseling/add src/views/ParentViews/Counseling/TambahLaporan.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-report-add pada /parent/counseling/add; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles parent; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan ParentPermissionsDetail /parent/permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentPermissionsDetail pada /parent/permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles parent; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id, /counseling/student-permits/:id, /faculty/student-permits/:id, /principal/students/permits/:id, /student/permits/:id, /vice-principal/student-affairs/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan ParentPermissionsEdit /parent/permits/:id/edit src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentPermissionsEdit pada /parent/permits/:id/edit; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles parent; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/new, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan ParentPermissionsNew /parent/permits/new src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentPermissionsNew pada /parent/permits/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles parent; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /student/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan parent-student-life /parent/student-life src/views/ParentViews/ParentSectionHub.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-student-life pada /parent/student-life; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem, onChildChange Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256 Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles parent; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/academics, /parent/communications, /parent/finance, /parent/library, /parent/more P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan ParentPelanggaranDetail /parent/violations/:id src/views/ParentViews/Counseling/DetailPelanggaran.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman ParentPelanggaranDetail pada /parent/violations/:id; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — /api/v1/parent/violations/:param @ src/services/portal/parentViolation.service.js:81; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles parent; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-achievements /principal/students/achievements src/views/CounselingManagement/Prestasi/ListPrestasi.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-achievements pada /principal/students/achievements; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory, statusFilter, deleteDialog.show; kolom=Kejuaraan, Peringkat; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Total Prestasi, Disetujui, Akademik, Tingkat Prestasi Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels, /admin/achievements, /counseling/achievements, /faculty/achievements, /vice-principal/student-affairs/achievements P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-achievements-detail /principal/students/achievements/:id src/views/CounselingManagement/Prestasi/DetailPrestasi.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-achievements-detail pada /principal/students/achievements/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=showCancelDialog, rejectReason, Alasan penolakan...; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles principal; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/achievements/:id, /counseling/achievements/:id, /faculty/achievements/:id, /vice-principal/student-affairs/achievements/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-counseling /principal/students/counseling src/views/CounselingManagement/Counseling/CounselingList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-counseling pada /principal/students/counseling; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedClassroom, searchPlaceholder; filter=searchTerm, selectedClassroom, searchPlaceholder; sinyal validasi=min/max Confirmed from code — fetchReports, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counseling.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes, /faculty/counseling, /vice-principal/student-affairs/counseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-counseling-detail /principal/students/counseling/:id src/views/CounselingManagement/Counseling/DetailCounseling.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-counseling-detail pada /principal/students/counseling/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=responseText, createMeeting, inviteParent, meetingDatetime, meetingType, meetingLink, meetingLocation, workflowOutcome, workflowRekomendasi, workflowReopenReason, Link pertemuan online, Lokasi pertemuan, +10 lainnya; filter=meetingDatetime; aturan field=createMeeting: type=checkbox, inviteParent: type=checkbox, meetingDatetime: type=datetime-local, meetingLink: type=url, meetingLocation: type=text Confirmed from code — router.back, fetchDetail, handleMarkResolved, handleCloseCase, handleReopenCase, submitResponse, set showResolveModal, confirmResolve, set showCloseModal, confirmClose, set showReopenModal, confirmReopen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles principal; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes/:id, /faculty/counseling/:id, /vice-principal/student-affairs/counseling/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-discipline /principal/students/discipline src/views/Principal/PrincipalRules.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-discipline pada /principal/students/discipline; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles principal; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-incidents /principal/students/incidents src/views/CounselingManagement/Incident/IncidentList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-incidents pada /principal/students/incidents; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedCategory, selectedStatus; filter=searchTerm, selectedStatus; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua Status, Dilaporkan, Triage, Investigasi, Selesai, Dieskalasi Confirmed from code — goToAdd, loadIncidents, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/incident.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents, /counseling/incidents, /faculty/incidents, /vice-principal/student-affairs/incidents P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-incidents-detail /principal/students/incidents/:id src/views/CounselingManagement/Incident/IncidentDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-incidents-detail pada /principal/students/incidents/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=resolveNotes, escalateNotes; sinyal validasi=custom validate Confirmed from code — router.back, loadDetail, handleTriage, handleInvestigate, openResolveModal, openEscalateModal, goToReferral, set showResolveModal, confirmResolve, set showEscalateModal, confirmEscalate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles principal; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents/:id, /counseling/incidents/:id, /faculty/incidents/:id, /vice-principal/student-affairs/incidents/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-permits /principal/students/permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-permits pada /principal/students/permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/student-permits, /counseling/student-permits, /faculty/student-permits, /parent/permits, /student/permits, /vice-principal/student-affairs/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-permits-detail /principal/students/permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-permits-detail pada /principal/students/permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles principal; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id, /counseling/student-permits/:id, /faculty/student-permits/:id, /parent/permits/:id, /student/permits/:id, /vice-principal/student-affairs/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-referrals /principal/students/referrals src/views/FacultyViews/Counseling/ReferralList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-referrals pada /principal/students/referrals; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, selectedTargetRole, form.student_id, form.target_role, form.source_type, form.source_record_id, form.source_reference, form.safe_summary, form.notes, closeNotes; filter=searchQuery, selectedStatus; sinyal validasi=required; aturan field=form.source_record_id: type=number Confirmed from code — Coba Lagi, openCreateModal, resetFilters, loadReferrals, handleAccept, openCloseModal, closeCreateModal, handleCreateReferral, set isCloseModalOpen, confirmClose Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_referral.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, source_record_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/referrals, /counseling/referrals, /faculty/referrals, /vice-principal/student-affairs/referrals P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-violations /principal/students/violations src/views/CounselingManagement/Pelanggaran/ListPelanggaran.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-violations pada /principal/students/violations; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, statusFilter, deleteDialog.show; kolom=Bentuk, Poin; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations, /counseling/violations, /faculty/violations, /vice-principal/student-affairs/violations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-violations-detail /principal/students/violations/:id src/views/CounselingManagement/Pelanggaran/DetailPelanggaran.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-violations-detail pada /principal/students/violations/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedLetterTemplate, showCancelDialog, rejectReason, Alasan penolakan (wajib diisi)..., Template Surat; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, set showLetterSection, handleDownloadLetter, handlePrintLetter, goToReferral, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles principal; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/:id, /counseling/violations/:id, /faculty/violations/:id, /vice-principal/student-affairs/violations/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-violations-categories /principal/students/violations/categories src/views/CounselingManagement/Pelanggaran/ListCategoryPelanggaran.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-violations-categories pada /principal/students/violations/categories; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=confirmDialog.show; kolom=Rentang Poin, Warna, Actions; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddKategori, goToDetail, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/categories, /counseling/violations/categories, /vice-principal/student-affairs/violations/categories P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan principal-violations-types /principal/students/violations/types src/views/CounselingManagement/Pelanggaran/BentukPelanggaran.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-violations-types pada /principal/students/violations/types; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedAspect, confirmDialog.show; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddType, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/types, /counseling/violations/types, /vice-principal/student-affairs/violations/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan StudentPrestasiDetail /student/achievements/:id src/views/StudentViews/Counseling/DetailPrestasi.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentPrestasiDetail pada /student/achievements/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=custom validate Confirmed from code — router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useStudent.js, src/services/audit/audit.service.js, src/services/auth/auth.service.js, +8 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles student, alumni; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan student-report-detail /student/counseling/:id src/views/StudentViews/Counseling/DetailCounseling.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-report-detail pada /student/counseling/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=custom validate Confirmed from code — router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useStudent.js, src/services/audit/audit.service.js, src/services/auth/auth.service.js, +9 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles student, alumni; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan student-report-add /student/counseling/add src/views/StudentViews/Counseling/TambahLaporan.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-report-add pada /student/counseling/add; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles student, alumni; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan StudentPermitsDetail /student/permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentPermitsDetail pada /student/permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles student, alumni; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id, /counseling/student-permits/:id, /faculty/student-permits/:id, /parent/permits/:id, /principal/students/permits/:id, /vice-principal/student-affairs/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan StudentPermitsNew /student/permits/new src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentPermitsNew pada /student/permits/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles student, alumni; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /vice-principal/student-affairs/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan student-student-life-hub /student/student-life src/views/StudentViews/StudentSectionHub.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-student-life-hub pada /student/student-life; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles student, alumni; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /student/extras, /student/grades, /student/learning, /student/today P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan StudentPelanggaranDetail /student/violations/:id src/views/StudentViews/Counseling/DetailPelanggaran.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman StudentPelanggaranDetail pada /student/violations/:id; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=custom validate Confirmed from code — router.back Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useStudent.js, src/services/audit/audit.service.js, src/services/auth/auth.service.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles student, alumni; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-achievements-detail /vice-principal/student-affairs/achievements/:id src/views/CounselingManagement/Prestasi/DetailPrestasi.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-achievements-detail pada /vice-principal/student-affairs/achievements/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=showCancelDialog, rejectReason, Alasan penolakan...; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/achievements/:id, /counseling/achievements/:id, /faculty/achievements/:id, /principal/students/achievements/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-achievements-new /vice-principal/student-affairs/achievements/new src/views/CounselingManagement/Prestasi/TambahPrestasi.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-achievements-new pada /vice-principal/student-affairs/achievements/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.category, formData.type, formData.level_id, formData.name, formData.organizer_name, formData.date, formData.ranking, formData.point, validationDialog.show, errorDialog.show, +12 lainnya; filter=filterBatchId, formData.date; sinyal validasi=required; aturan field=formData.student_id: required, formData.category: type=radio, formData.type: type=radio, formData.date: type=date, field: type=file, formData.point: type=number Confirmed from code — router.back, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, level_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/new, /faculty/achievements/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-counseling-detail /vice-principal/student-affairs/counseling/:id src/views/CounselingManagement/Counseling/DetailCounseling.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-counseling-detail pada /vice-principal/student-affairs/counseling/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=responseText, createMeeting, inviteParent, meetingDatetime, meetingType, meetingLink, meetingLocation, workflowOutcome, workflowRekomendasi, workflowReopenReason, Link pertemuan online, Lokasi pertemuan, +10 lainnya; filter=meetingDatetime; aturan field=createMeeting: type=checkbox, inviteParent: type=checkbox, meetingDatetime: type=datetime-local, meetingLink: type=url, meetingLocation: type=text Confirmed from code — router.back, fetchDetail, handleMarkResolved, handleCloseCase, handleReopenCase, submitResponse, set showResolveModal, confirmResolve, set showCloseModal, confirmClose, set showReopenModal, confirmReopen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes/:id, /faculty/counseling/:id, /principal/students/counseling/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-incidents-detail /vice-principal/student-affairs/incidents/:id src/views/CounselingManagement/Incident/IncidentDetail.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-incidents-detail pada /vice-principal/student-affairs/incidents/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=resolveNotes, escalateNotes; sinyal validasi=custom validate Confirmed from code — router.back, loadDetail, handleTriage, handleInvestigate, openResolveModal, openEscalateModal, goToReferral, set showResolveModal, confirmResolve, set showEscalateModal, confirmEscalate Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents/:id, /counseling/incidents/:id, /faculty/incidents/:id, /principal/students/incidents/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-incidents-new /vice-principal/student-affairs/incidents/new src/views/CounselingManagement/Incident/IncidentForm.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-incidents-new pada /vice-principal/student-affairs/incidents/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.title, form.category, form.incident_date, form.incident_time, form.location, form.involved_parties, form.victim_id, form.description, Judul Insiden, Ringkasan singkat insiden, Tanggal Kejadian, Waktu Kejadian, +2 lainnya; filter=form.incident_date; sinyal validasi=required; aturan field=form.title: required, form.category: required, form.incident_date: required, type=date, form.incident_time: type=time, form.location: required, form.description: required, field: type=file; Inferred from code — option/status/display-label candidates=Rendah, Tinggi, Darurat Confirmed from code — router.back, submitForm, handleFileUpload, set form.urgency Confirmed from code — /web/session/get_session_info @ src/views/CounselingManagement/Incident/IncidentForm.vue:249; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability discipline.incident.manage; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field victim_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/incidents/new, /counseling/incidents/new, /faculty/incidents/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-permits-detail /vice-principal/student-affairs/permits/:id src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-permits-detail pada /vice-principal/student-affairs/permits/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=rejectReason; sinyal validasi=custom validate Confirmed from code — router.back, loadData, downloadLetter, printLetter, handleSubmit, handleApproveWali, set showRejectModal, handleApprove, handleGenerateLetter, handleCancel, handleReject Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveDetail.vue:352 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Confirmed from code — /api/v1/parent/permits/action/cancel @ src/services/counseling/permit.service.js:218 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:866 Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/action/submit, /api/v1/parent/permits/action/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id, /counseling/student-permits/:id, /faculty/student-permits/:id, /parent/permits/:id, /principal/students/permits/:id, /student/permits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-permits-new /vice-principal/student-affairs/permits/new src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-permits-new pada /vice-principal/student-affairs/permits/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filterBatchId, form.permit_type, form.student_id, form.date_start, form.date_end, timeLeave, timeReturn, form.reason, form.parent_phone, form.notes; filter=filterBatchId, form.date_start, form.date_end; sinyal validasi=required, custom validate; aturan field=form.permit_type: required, form.student_id: required, form.date_start: required, type=date, form.date_end: required, type=date, timeLeave: required, type=time, timeReturn: required, type=time, form.reason: required, form.parent_phone: type=tel, field: type=file Confirmed from code — router.back, handleSubmit, set form.date_end, handleFileUpload, handleSaveDraft Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveForm.vue:363 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Confirmed from code — /api/v1/parent/permits/save @ src/services/counseling/permit.service.js:107 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:651; Confirmed from code — /api/v1/parent/permits/action/submit @ src/services/counseling/permit.service.js:161 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:819; Missing or unclear — /api/v1/parent/permits/:param @ src/services/counseling/permit.service.js:65; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.manage; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/parent/permits/save, /api/v1/parent/permits/action/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/student-permits/:id/edit, /admin/student-permits/new, /counseling/student-permits/:id/edit, /counseling/student-permits/new, /faculty/student-permits/:id/edit, /faculty/student-permits/new, /parent/permits/:id/edit, /parent/permits/new, /student/permits/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-rekap-bulanan /vice-principal/student-affairs/rekap-bulanan src/views/Kesiswaan/RekapBulanan.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-rekap-bulanan pada /vice-principal/student-affairs/rekap-bulanan; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=dateFrom, dateTo, Sampai; kolom=Bulan, Pelanggaran, Prestasi, Perizinan; filter=dateFrom, dateTo; Inferred from code — option/status/display-label candidates=Rekap Bulanan Confirmed from code — exportPDF, loadData Confirmed from code — /api/v1/kesiswaan/rekap/bulanan @ src/views/Kesiswaan/RekapBulanan.vue:205 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:454 Confirmed from code — sesi autentik; capability discipline.report.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/students/rekap-bulanan P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-violations-detail /vice-principal/student-affairs/violations/:id src/views/CounselingManagement/Pelanggaran/DetailPelanggaran.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-violations-detail pada /vice-principal/student-affairs/violations/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedLetterTemplate, showCancelDialog, rejectReason, Alasan penolakan (wajib diisi)..., Template Surat; sinyal validasi=custom validate Confirmed from code — router.back, handleApprove, set showRejectModal, set showLetterSection, handleDownloadLetter, handlePrintLetter, goToReferral, handleCancel, handleReject Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; parameter route id; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/:id, /counseling/violations/:id, /faculty/violations/:id, /principal/students/violations/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-violations-categories /vice-principal/student-affairs/violations/categories src/views/CounselingManagement/Pelanggaran/ListCategoryPelanggaran.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-violations-categories pada /vice-principal/student-affairs/violations/categories; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=confirmDialog.show; kolom=Rentang Poin, Warna, Actions; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddKategori, goToDetail, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_category.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/categories, /counseling/violations/categories, /principal/students/violations/categories P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-violations-new /vice-principal/student-affairs/violations/new src/views/CounselingManagement/Pelanggaran/TambahPelanggaran.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-violations-new pada /vice-principal/student-affairs/violations/new; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterBatchId, formData.student_id, formData.date, type.aspect, type.type_id, formData.sanction, formData.start_date, formData.end_date, formData.description, validationDialog.show, errorDialog.show, Tanggal Kejadian, +5 lainnya; filter=filterBatchId, formData.date, formData.start_date, formData.end_date; sinyal validasi=required, min/max; aturan field=formData.student_id: required, formData.date: type=date, field: type=file, formData.start_date: type=date, formData.end_date: type=date; Inferred from code — option/status/display-label candidates=Kerajinan, Sikap Perilaku, Kerapian Confirmed from code — Tambah Pelanggaran Lain, router.back, removeViolation, addViolation, handleFileUpload, submitForm, set showSuccess, set validationDialog.show, set errorDialog.show Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/counseling/violation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, type_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/new, /counseling/violations/new, /faculty/violations/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Konseling & Kedisiplinan vice-principal-violations-types /vice-principal/student-affairs/violations/types src/views/CounselingManagement/Pelanggaran/BentukPelanggaran.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-violations-types pada /vice-principal/student-affairs/violations/types; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedAspect, confirmDialog.show; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAddType, handleEdit, handleDelete, confirmDialog.onConfirm, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violation_type.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations/types, /counseling/violations/types, /principal/students/violations/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Login.vue (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Login.vue login /login src/views/Login.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman login pada /login; tujuan diringkas dari aksi interaktif Confirmed from code — field=email, password, Ingat saya; aturan field=password: type=showPassword ?, field: type=checkbox, email: type=text Confirmed from code — toggleShowPassword, handleLogin, goToSPMB Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — tidak memerlukan sesi menurut route meta; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Manajemen Pengguna (10 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Manajemen Pengguna ResetUserPassword /admin/reset-password src/views/AdminViews/User/ResetPasswordView.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman ResetUserPassword pada /admin/reset-password; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=showResetDialog; kolom=Nama Pengguna, Login / Email Confirmed from code — openResetDialog Confirmed from code — /api/v1/users/list @ src/api/userManagementApi.js:28 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:275 Confirmed from code — sesi autentik; capability users.manage; allowedRoles admin, school_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna user-audit-log /admin/users/audit-log src/views/AdminViews/User/UserAuditLog.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman user-audit-log pada /admin/users/audit-log; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedAction, dateFrom, dateTo; kolom=Target Pengguna, Dilakukan Oleh; filter=searchQuery, dateFrom, dateTo; sinyal validasi=min/max; aturan field=searchQuery: type=text, dateFrom: type=date, dateTo: type=date; Inferred from code — option/status/display-label candidates=Total Log, Buat Pengguna, Error, Reset Password Confirmed from code — fetchLogs, exportLogs, clearFilters, openDetail, prevPage, nextPage, set selectedLog Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/audit/audit.service.js, src/services/auth/auth.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability users.manage; allowedRoles admin, school_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna adminprofile /adminprofile src/views/AdminViews/AdminProfile/AdminProfile.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman adminprofile pada /adminprofile; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — set showChangePasswordDialog, handleLogout Confirmed from code — /api/auth/profile @ src/services/auth/auth.service.js:41 -> ../custom_addons_scola/gcgscola/scola_core/controllers/auth.py:402 Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login, /profile P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna Profil Counseling /counseling/profile src/views/CounselingManagement/CounselingProfile.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Profil Counseling pada /counseling/profile; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — Ganti Password, handleLogout, set showChangePasswordDialog Confirmed from code — /api/v1/student/portal/profile @ src/services/portal/studentPortal.service.js:231 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_student_portal_api.py:20 Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles counselor; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna Profil Guru /faculty/profile src/views/FacultyViews/TeacherProfile.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Profil Guru pada /faculty/profile; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=NIP, NPWP, NUPTK Confirmed from code — Buka, goToHomeroomBatch, set showChangePasswordDialog, handleLogout Confirmed from code — /api/v1/teacher/profile @ src/services/faculty/facultySelf.service.js:4 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:44; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna librarian-profile /librarian/profile src/views/LibraryManagement/LibrarianProfile.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman librarian-profile pada /librarian/profile; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — Ganti Password, handleLogout, set showChangePasswordDialog Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles librarian; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /login P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna parent-more /parent/more src/views/ParentViews/ParentSectionHub.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-more pada /parent/more; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem, onChildChange Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256 Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/academics, /parent/communications, /parent/finance, /parent/library, /parent/student-life P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna parent-profile /parent/profile src/views/ParentViews/ParentProfile.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-profile pada /parent/profile; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedStudent; kolom=No.; sinyal validasi=required Confirmed from code — setActiveTab, set showChangePasswordDialog, handleLogout Confirmed from code — /api/v1/parent/portal/profile @ src/services/portal/parentPortal.service.js:193 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:177 Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Manajemen Pengguna user-profile /profile src/views/AdminViews/AdminProfile/AdminProfile.vue:1 Inferred from code — admin, school_admin, teacher, extracurricular_coach, student, parent, principal, platform_operator, admin_staff, pickup_officer, counselor, librarian, lab_technician, dpo, security_officer, school_committee, bos_admin, dapodik_operator, foundation_auditor, inventory_officer, +8 lainnya; diturunkan dari pola capability frontend untuk users.profile.view; izin sesi backend dapat berbeda Inferred from code — halaman user-profile pada /profile; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — set showChangePasswordDialog, handleLogout Confirmed from code — /api/auth/profile @ src/services/auth/auth.service.js:41 -> ../custom_addons_scola/gcgscola/scola_core/controllers/auth.py:402 Confirmed from code — sesi autentik; capability users.profile.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login, /adminprofile P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Manajemen Pengguna Profil Siswa /student/profile src/views/StudentViews/StudentProfile.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Profil Siswa pada /student/profile; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=No., Predikat, Hadir, Izin, Telat, Alpa; sinyal validasi=required Confirmed from code — Absensi, set activeTab, set showChangePasswordDialog, handleLogout Confirmed from code — /api/v1/student/portal/profile @ src/services/portal/studentPortal.service.js:231 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_student_portal_api.py:20 Confirmed from code — sesi autentik; capability users.profile.view; allowedRoles student, alumni; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

MobileMenuPage.vue (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
MobileMenuPage.vue mobile-apps /apps src/views/MobileMenuPage.vue:1 Missing or unclear — route hanya mensyaratkan autentikasi atau tidak memiliki metadata role/capability eksplisit Inferred from code — halaman mobile-apps pada /apps; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; sinyal validasi=min/max, pattern/regex; aturan field=searchQuery: type=text Confirmed from code — closeSearchOverlay, handleMenuClick, openGroup, closeGroup, handleAccountAction Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppDialog.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /login P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

NotFoundView.vue (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
NotFoundView.vue Sedang Dalam Pemeliharaan /:catchAll(.*) src/views/NotFoundView.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman Sedang Dalam Pemeliharaan pada /:catchAll(.*); tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — goBack Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — tidak memerlukan sesi menurut route meta; parameter route catchAll; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Pengaturan (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Pengaturan Riwayat Permintaan Add-on /settings/addon-requests src/views/SettingsManagement/AddonRequestReview.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Riwayat Permintaan Add-on pada /settings/addon-requests; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — fetchRequests Confirmed from code — /api/v1/subscription/my-requests @ src/services/admin/subscription.service.js:62 -> ../custom_addons_scola/gcgscola/scola_core/controllers/subscription_api.py:204 Confirmed from code — sesi autentik; capability settings.school.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /settings/modules P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Pengaturan Katalog Modul /settings/modules src/views/SettingsManagement/ModuleCatalog.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Katalog Modul pada /settings/modules; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=requestNote, Jelaskan alasan permintaan aktivasi modul ini..., Catatan (opsional) Confirmed from code — fetchCatalog, openRequestModal, submitRequest Confirmed from code — /api/v1/subscription/request-addon @ src/services/admin/subscription.service.js:45 -> ../custom_addons_scola/gcgscola/scola_core/controllers/subscription_api.py:138; Confirmed from code — /api/v1/subscription/catalog @ src/services/admin/subscription.service.js:26 -> ../custom_addons_scola/gcgscola/scola_core/controllers/subscription_api.py:101; Confirmed from code — /api/v1/subscription/my-requests @ src/services/admin/subscription.service.js:62 -> ../custom_addons_scola/gcgscola/scola_core/controllers/subscription_api.py:204 Confirmed from code — sesi autentik; capability settings.school.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /settings/addon-requests, /settings/subscription P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Perpustakaan (34 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Perpustakaan konfigurasipenulis /config/authors src/views/LibraryManagement/Konfigurasi/AuthorsPage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman konfigurasipenulis pada /config/authors; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.address_partner_id, searchQuery, Masukkan nama penulis, Alamat (Partner); filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteAuthor Confirmed from code — /api/v1/library/admin/authors/create @ src/services/library/library.service.js:416 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:136; Confirmed from code — /api/v1/library/admin/authors/update @ src/services/library/library.service.js:421 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:158; Confirmed from code — /api/v1/library/admin/authors/list @ src/services/library/library.service.js:406 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:234; Confirmed from code — /api/v1/library/admin/authors/delete @ src/services/library/library.service.js:426 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:190 Confirmed from code — sesi autentik; capability library.authors.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field address_partner_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/authors/create, /api/v1/library/admin/authors/update, /api/v1/library/admin/authors/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/authors P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan konfigurasitipekartuperpus /config/library-card-types src/views/LibraryManagement/Konfigurasi/LibraryCardTypesPage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman konfigurasitipekartuperpus pada /config/library-card-types; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.allow_media, form.duration, form.penalty_amt_per_day, searchQuery, Masukkan nama, Jumlah Buku, Masukkan jumlah, Durasi (hari), Masukkan durasi, Denda / Hari, Masukkan denda; kolom=Maks Buku, Durasi (hari), Denda / Hari; filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteCardType Confirmed from code — /api/v1/library/admin/library-card-types/create @ src/services/library/library.service.js:943 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:515; Confirmed from code — /api/v1/library/admin/library-card-types/update @ src/services/library/library.service.js:948 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:546; Confirmed from code — /api/v1/library/admin/library-card-types/list @ src/services/library/library.service.js:456 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:347; Confirmed from code — /api/v1/library/admin/library-card-types/delete @ src/services/library/library.service.js:953 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:584 Confirmed from code — sesi autentik; capability library.card_types.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/library-card-types/create, /api/v1/library/admin/library-card-types/update, /api/v1/library/admin/library-card-types/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/library-card-types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan konfigurasikartudetail /config/library-cards/detail/:id src/views/LibraryManagement/Konfigurasi/LibraryCardsDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman konfigurasikartudetail pada /config/library-cards/detail/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=cardData.number, cardData.issue_date, cardData.partner_name, cardData.card_type_name, Anggota; filter=cardData.issue_date; aturan field=cardData.issue_date: type=date Confirmed from code — saveChanges, goBack Confirmed from code — /api/v1/library/admin/library-cards/detail @ src/services/library/library.service.js:451 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:323; Confirmed from code — /api/v1/library/admin/library-cards/update @ src/services/library/library.service.js:476 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:546 Confirmed from code — sesi autentik; capability library.cards.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/library-cards/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/library-cards/detail/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan konfigurasitipemedia /config/media-types src/views/LibraryManagement/Konfigurasi/MediaTypePage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman konfigurasitipemedia pada /config/media-types; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.code, searchQuery, Masukkan nama, Masukkan kode; filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteMediaType Confirmed from code — /api/v1/library/admin/media-types/create @ src/services/library/library.service.js:908 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:376; Confirmed from code — /api/v1/library/admin/media-types/update @ src/services/library/library.service.js:913 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:393; Confirmed from code — /api/v1/library/admin/media-types/list @ src/services/library/library.service.js:903 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:356; Confirmed from code — /api/v1/library/admin/media-types/delete @ src/services/library/library.service.js:918 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:418 Confirmed from code — sesi autentik; capability library.media_types.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media-types/create, /api/v1/library/admin/media-types/update, /api/v1/library/admin/media-types/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/media-types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan konfigurasipenerbit /config/publishers src/views/LibraryManagement/Konfigurasi/Publishers.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman konfigurasipenerbit pada /config/publishers; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, form.name, form.address_text, Masukkan nama penerbit, Masukkan alamat penerbit; filter=searchQuery Confirmed from code — openCreateModal, openEditModal, deletePublisher, submitForm Confirmed from code — /api/v1/library/admin/publishers/list @ src/services/library/library.service.js:411 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:263; Confirmed from code — /api/v1/library/admin/publishers/delete @ src/services/library/library.service.js:441 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:272; Confirmed from code — /api/v1/library/admin/publishers/create @ src/services/library/library.service.js:431 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:212; Confirmed from code — /api/v1/library/admin/publishers/update @ src/services/library/library.service.js:436 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:238 Confirmed from code — sesi autentik; capability library.publishers.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/publishers/delete, /api/v1/library/admin/publishers/create, /api/v1/library/admin/publishers/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/publishers P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan quickcirculationlibrarian /librarian/circulation/quick src/views/LibraryManagement/Circulation/QuickCirculation.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman quickcirculationlibrarian pada /librarian/circulation/quick; tujuan diringkas dari aksi interaktif Confirmed from code — field=memberCardNumber, bookBarcode, returnBarcode Confirmed from code — goBack, set mode, lookupMember, clearMember, addBookToCart, set checkoutCart, checkoutCart.splice, processCheckout, processReturn Confirmed from code — /api/v1/library/circulation/checkin @ src/services/library/library.service.js:626 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:318; Confirmed from code — /api/v1/library/circulation/checkout @ src/services/library/library.service.js:618 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:266; Confirmed from code — /api/v1/library/circulation/book-lookup @ src/services/library/library.service.js:613 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:231; Confirmed from code — /api/v1/library/circulation/member-lookup @ src/services/library/library.service.js:606 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:186 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/hub?tab=circulation, /library/quick-circulation P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan konfigurasikartudetaillibrarian /librarian/config/library-cards/detail/:id src/views/LibraryManagement/Konfigurasi/LibraryCardsDetail.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman konfigurasikartudetaillibrarian pada /librarian/config/library-cards/detail/:id; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=cardData.number, cardData.issue_date, cardData.partner_name, cardData.card_type_name, Anggota; filter=cardData.issue_date; aturan field=cardData.issue_date: type=date Confirmed from code — saveChanges, goBack Confirmed from code — /api/v1/library/admin/library-cards/detail @ src/services/library/library.service.js:451 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:323; Confirmed from code — /api/v1/library/admin/library-cards/update @ src/services/library/library.service.js:476 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:546 Confirmed from code — sesi autentik; capability library.cards.view; allowedRoles librarian; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/library-cards/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/library-cards/detail/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan librarian-dashboard /librarian/dashboard src/views/LibraryManagement/LibrarianDashboard.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman librarian-dashboard pada /librarian/dashboard; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Katalog, Peminjaman, Pengembalian, Anggota, Inventaris, Anggota Baru Confirmed from code — Lihat Semua, router.push, item.action Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, src/services/dashboard/index.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.dashboard.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/library/movement, /librarian/library, /librarian/config/library-cards, /librarian/library/units, /librarian/reports, /librarian/settings P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan perpustakaanDetailslibrarian /librarian/library/:id src/views/LibraryManagement/Media/MediaDetails.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman perpustakaanDetailslibrarian pada /librarian/library/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=bookData.name, bookData.isbn, selectedPenulis, selectedPenerbit, bookData.edition, bookData.ddc_classification, bookData.call_number, bookData.publication_place, bookData.language, bookData.pages, bookData.physical_size, bookData.series, +19 lainnya; filter=bookData.ddc_classification; sinyal validasi=required; aturan field=bookData.name: type=text, bookData.isbn: type=text, selectedPenulis: required, bookData.edition: type=text, bookData.ddc_classification: type=text, bookData.call_number: type=text, bookData.publication_place: type=text, bookData.pages: type=number, bookData.physical_size: type=text, bookData.series: type=text, +2 lainnya; Inferred from code — option/status/display-label candidates=Indonesian, Arabic, Other Confirmed from code — submitForm Confirmed from code — /api/v1/library/admin/media/detail @ src/services/library/library.service.js:501 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:487; Confirmed from code — /api/v1/library/admin/media/update @ src/services/library/library.service.js:511 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:311 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles librarian; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/:id P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan addMedialibrarian /librarian/library/addmedia src/views/LibraryManagement/Media/AddLibraryHome.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman addMedialibrarian pada /librarian/library/addmedia; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=bookData.name, bookData.isbn, bookData.internal_code, selectedPenulis, selectedPenerbit, bookData.edition, bookData.ddc_classification, bookData.call_number, bookData.publication_place, bookData.language, bookData.pages, bookData.physical_size, +19 lainnya; filter=bookData.ddc_classification; sinyal validasi=required; aturan field=bookData.name: required, type=text, bookData.isbn: type=text, bookData.internal_code: type=text, selectedPenulis: required, selectedPenerbit: required, bookData.edition: type=text, bookData.ddc_classification: type=text, bookData.call_number: type=text, bookData.publication_place: type=text, bookData.pages: type=number, +5 lainnya; Inferred from code — option/status/display-label candidates=Indonesian, Arabic, Other Confirmed from code — submitForm, deleteRecord Confirmed from code — /api/v1/library/admin/authors/search @ src/services/library/library.service.js:481 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:435; Confirmed from code — /api/v1/library/admin/publishers/search @ src/services/library/library.service.js:486 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:448; Confirmed from code — /api/v1/library/admin/media-types/search @ src/services/library/library.service.js:491 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:461; Confirmed from code — /api/v1/library/admin/tags/search @ src/services/library/library.service.js:496 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:474; Confirmed from code — /api/v1/library/admin/media/detail @ src/services/library/library.service.js:501 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:487; Confirmed from code — /api/v1/library/admin/media/create @ src/services/library/library.service.js:506 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:294; Confirmed from code — /api/v1/library/admin/media/update @ src/services/library/library.service.js:511 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:311; Confirmed from code — /api/v1/library/admin/media/delete @ src/services/library/library.service.js:516 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:335 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media/create, /api/v1/library/admin/media/update, /api/v1/library/admin/media/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/addmedia P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan unitsdetaillibrarian /librarian/library/mediaunits/:id src/views/LibraryManagement/Media/MediaUnitsDetail.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman unitsdetaillibrarian pada /librarian/library/mediaunits/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=editedMediaUnit.name, editedMediaUnit.barcode, editedMediaUnit.state; kolom=Library Card, Person, Issued Date, Due Date, Actual Return Date, Actions Confirmed from code — ← Kembali ke daftar media unit, Save, Delete, router.push, deleteMovement, set isEditing, saveMediaUnit, deleteMediaUnit Confirmed from code — /api/v1/library/admin/media-units/detail @ src/services/library/library.service.js:878 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:260; Confirmed from code — /api/v1/library/admin/media-units/update @ src/services/library/library.service.js:893 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:312; Confirmed from code — /api/v1/library/admin/media-units/delete @ src/services/library/library.service.js:898 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:334; Confirmed from code — /api/v1/library/admin/circulation/movement/delete @ src/services/library/library.service.js:1023 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:953 Confirmed from code — sesi autentik; capability library.media_units.view; allowedRoles librarian; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media-units/update, /api/v1/library/admin/media-units/delete, /api/v1/library/admin/circulation/movement/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/mediaunits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan purchasedetaillibrarian /librarian/library/purchase/:id src/views/LibraryManagement/Media/MediaPurchaseDetail.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman purchasedetaillibrarian pada /librarian/library/purchase/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=purchaseDetail.state; Inferred from code — option/status/display-label candidates=Approved Confirmed from code — ← Kembali ke daftar pembelian, router.push, updatePurchaseStatus Confirmed from code — /api/v1/library/purchase-requests/detail @ src/services/library/library.service.js:1033 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:315; Confirmed from code — /api/v1/library/purchase-requests/update @ src/services/library/library.service.js:1038 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:344 Confirmed from code — sesi autentik; capability library.purchases.view; allowedRoles librarian; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/purchase-requests/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/purchase/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan returnworkflowlibrarian /librarian/returns src/views/LibraryManagement/Returns/ReturnWorkflow.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman returnworkflowlibrarian pada /librarian/returns; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Anggota Confirmed from code — fetchLoans, selectLoan Confirmed from code — /api/v1/library/admin/movements/list @ src/services/library/library.service.js:378 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:190 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/returns P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan librarysettingslibrarian /librarian/settings src/views/LibraryManagement/Settings/LibrarySettings.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman librarysettingslibrarian pada /librarian/settings; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=circulationSettings.default_loan_days, circulationSettings.max_renewals, circulationSettings.grace_period_days, circulationSettings.fine_enabled, circulationSettings.fine_per_day, circulationSettings.max_fine_cap, circulationSettings.block_on_overdue, circulationSettings.block_threshold_days, memberSettings.student_loan_limit, memberSettings.student_loan_days, memberSettings.teacher_loan_limit, memberSettings.teacher_loan_days, +19 lainnya; filter=circulationSettings.grace_period_days, calendarSettings.holiday_dates, Grace Period (hari); sinyal validasi=min/max; aturan field=circulationSettings.default_loan_days: min=1, type=number, circulationSettings.max_renewals: min=0, type=number, circulationSettings.grace_period_days: min=0, type=number, circulationSettings.fine_enabled: type=checkbox, circulationSettings.fine_per_day: min=0, type=number, circulationSettings.max_fine_cap: min=0, type=number, circulationSettings.block_on_overdue: type=checkbox, circulationSettings.block_threshold_days: min=1, type=number, memberSettings.student_loan_limit: min=1, type=number, memberSettings.student_loan_days: min=1, type=number, +11 lainnya Confirmed from code — set activeTab, saveSettings Confirmed from code — /api/v1/library/settings/get @ src/services/library/library.service.js:760 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:63; Confirmed from code — /api/v1/library/settings/save @ src/services/library/library.service.js:795 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:72 Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/settings/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/settings P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan perpustakaanDetails /library/:id src/views/LibraryManagement/Media/MediaDetails.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman perpustakaanDetails pada /library/:id; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=bookData.name, bookData.isbn, selectedPenulis, selectedPenerbit, bookData.edition, bookData.ddc_classification, bookData.call_number, bookData.publication_place, bookData.language, bookData.pages, bookData.physical_size, bookData.series, +19 lainnya; filter=bookData.ddc_classification; sinyal validasi=required; aturan field=bookData.name: type=text, bookData.isbn: type=text, selectedPenulis: required, bookData.edition: type=text, bookData.ddc_classification: type=text, bookData.call_number: type=text, bookData.publication_place: type=text, bookData.pages: type=number, bookData.physical_size: type=text, bookData.series: type=text, +2 lainnya; Inferred from code — option/status/display-label candidates=Indonesian, Arabic, Other Confirmed from code — submitForm Confirmed from code — /api/v1/library/admin/media/detail @ src/services/library/library.service.js:501 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:487; Confirmed from code — /api/v1/library/admin/media/update @ src/services/library/library.service.js:511 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:311 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/:id P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan addMedia /library/addmedia src/views/LibraryManagement/Media/AddLibraryHome.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman addMedia pada /library/addmedia; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=bookData.name, bookData.isbn, bookData.internal_code, selectedPenulis, selectedPenerbit, bookData.edition, bookData.ddc_classification, bookData.call_number, bookData.publication_place, bookData.language, bookData.pages, bookData.physical_size, +19 lainnya; filter=bookData.ddc_classification; sinyal validasi=required; aturan field=bookData.name: required, type=text, bookData.isbn: type=text, bookData.internal_code: type=text, selectedPenulis: required, selectedPenerbit: required, bookData.edition: type=text, bookData.ddc_classification: type=text, bookData.call_number: type=text, bookData.publication_place: type=text, bookData.pages: type=number, +5 lainnya; Inferred from code — option/status/display-label candidates=Indonesian, Arabic, Other Confirmed from code — submitForm, deleteRecord Confirmed from code — /api/v1/library/admin/authors/search @ src/services/library/library.service.js:481 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:435; Confirmed from code — /api/v1/library/admin/publishers/search @ src/services/library/library.service.js:486 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:448; Confirmed from code — /api/v1/library/admin/media-types/search @ src/services/library/library.service.js:491 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:461; Confirmed from code — /api/v1/library/admin/tags/search @ src/services/library/library.service.js:496 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:474; Confirmed from code — /api/v1/library/admin/media/detail @ src/services/library/library.service.js:501 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:487; Confirmed from code — /api/v1/library/admin/media/create @ src/services/library/library.service.js:506 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:294; Confirmed from code — /api/v1/library/admin/media/update @ src/services/library/library.service.js:511 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:311; Confirmed from code — /api/v1/library/admin/media/delete @ src/services/library/library.service.js:516 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:335 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media/create, /api/v1/library/admin/media/update, /api/v1/library/admin/media/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/addmedia P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan advanced-library-search /library/advanced-search src/views/Library/AdvancedSearch.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, counselor, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.catalog.view; izin sesi backend dapat berbeda Inferred from code — halaman advanced-library-search pada /library/advanced-search; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedAuthor, selectedPublisher, selectedMediaType, selectedDDC, yearFrom, yearTo, selectedTag; filter=searchQuery; sinyal validasi=min/max; aturan field=yearFrom: type=number, yearTo: type=number Confirmed from code — router.back, searchBooks, resetFilters, goToBookDetail Confirmed from code — /api/v1/library/catalog/filter-options @ src/services/library/library.service.js:526 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:366; Confirmed from code — /api/v1/library/catalog/list @ src/services/library/library.service.js:338 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:299 Confirmed from code — sesi autentik; capability library.catalog.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/book/:id, /parent/library/advanced-search P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Perpustakaan library-book-detail /library/book/:id src/views/Library/BookDetail.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, counselor, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.catalog.view; izin sesi backend dapat berbeda Inferred from code — halaman library-book-detail pada /library/book/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab Confirmed from code — router.back, set showReserveConfirm, router.push, toggleWishlist, handleReserve Confirmed from code — /api/v1/library/wishlist/remove @ src/services/library/libraryWishlist.service.js:28 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:57; Confirmed from code — /api/v1/library/wishlist/add @ src/services/library/libraryWishlist.service.js:9 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:35; Confirmed from code — /api/v1/library/queue/create @ src/services/library/library.service.js:543 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:96; Confirmed from code — /api/v1/library/catalog/detail @ src/services/library/library.service.js:538 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:349 Confirmed from code — sesi autentik; capability library.catalog.view; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/wishlist/remove, /api/v1/library/queue/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/my-library, /parent/library/book/:id P1 — mutasi data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Perpustakaan library-book-unit /library/bookunit/:id src/components/Library/BookUnits.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, counselor, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.catalog.view; izin sesi backend dapat berbeda Inferred from code — halaman library-book-unit pada /library/bookunit/:id; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.dateFrom, form.dateTo; kolom=Barcode; filter=form.dateFrom, form.dateTo; sinyal validasi=required; aturan field=form.dateFrom: type=date, form.dateTo: type=date Confirmed from code — Lihat Semua →, Pinjam, Tidak Tersedia, Ya, Pinjam, openConfirmation, set isModalOpen, borrowBook, set isSuccessModalOpen Confirmed from code — /api/v1/library/catalog/detail @ src/services/library/library.service.js:538 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:349; Confirmed from code — /api/v1/library/queue/create @ src/services/library/library.service.js:543 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:96; Confirmed from code — /api/v1/library/catalog/list @ src/services/library/library.service.js:368 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:299; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148 Confirmed from code — sesi autentik; capability library.catalog.view; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/queue/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/bookunit/:id P1 — mutasi data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Perpustakaan library-loans-detail /library/loans/detail/:id src/views/Library/DetailReserv.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.circulation.view; izin sesi backend dapat berbeda Inferred from code — halaman library-loans-detail pada /library/loans/detail/:id; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.back, handleReturn Confirmed from code — /api/v1/library/loans/detail @ src/services/library/library.service.js:572 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:456; Confirmed from code — /api/v1/library/loans/renew @ src/services/library/library.service.js:577 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:473 Confirmed from code — sesi autentik; capability library.circulation.view; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Perpustakaan unitsdetail /library/mediaunits/:id src/views/LibraryManagement/Media/MediaUnitsDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman unitsdetail pada /library/mediaunits/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=editedMediaUnit.name, editedMediaUnit.barcode, editedMediaUnit.state; kolom=Library Card, Person, Issued Date, Due Date, Actual Return Date, Actions Confirmed from code — ← Kembali ke daftar media unit, Save, Delete, router.push, deleteMovement, set isEditing, saveMediaUnit, deleteMediaUnit Confirmed from code — /api/v1/library/admin/media-units/detail @ src/services/library/library.service.js:878 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:260; Confirmed from code — /api/v1/library/admin/media-units/update @ src/services/library/library.service.js:893 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:312; Confirmed from code — /api/v1/library/admin/media-units/delete @ src/services/library/library.service.js:898 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:334; Confirmed from code — /api/v1/library/admin/circulation/movement/delete @ src/services/library/library.service.js:1023 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:953 Confirmed from code — sesi autentik; capability library.media_units.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media-units/update, /api/v1/library/admin/media-units/delete, /api/v1/library/admin/circulation/movement/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/mediaunits/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan my-library /library/my-library src/views/Library/MyLibrary.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.circulation.view; izin sesi backend dapat berbeda Inferred from code — halaman my-library pada /library/my-library; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedChildUserId Confirmed from code — set activeTab, goToCatalog, renewLoan, goToReservations, goToWishlist, fetchLoans Confirmed from code — /api/v1/library/loans/list @ src/services/library/library.service.js:562 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:422; Confirmed from code — /api/v1/library/parent/children @ src/services/library/library.service.js:567 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:438; Confirmed from code — /api/v1/library/loans/renew @ src/services/library/library.service.js:577 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:473 Confirmed from code — sesi autentik; capability library.circulation.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/loans, /parent/library/loans P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Perpustakaan library-purchase-requests-new /library/purchase-requests/new src/views/Library/ReqForm.vue:1 Inferred from code — admin, school_admin, teacher, librarian, homeroom; diturunkan dari pola capability frontend untuk library.purchase_requests.create; izin sesi backend dapat berbeda Inferred from code — halaman library-purchase-requests-new pada /library/purchase-requests/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.title, formData.authors, formData.publishers, formData.edition, formData.mediaType, formData.course, formData.subject, formData.requestedBy; filter=formData.course; sinyal validasi=required; aturan field=formData.title: required, type=text, formData.authors: required, type=text, formData.publishers: type=text, formData.edition: type=text, formData.mediaType: required, formData.requestedBy: type=text Confirmed from code — openConfirmation, $router.push, set isConfirmationOpen, confirmSubmit, closeSuccess Confirmed from code — /api/v1/library/purchase-requests/create @ src/services/library/library.service.js:750 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:246; Confirmed from code — /api/v1/library/purchase-requests/options @ src/services/library/library.service.js:739 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:190 Confirmed from code — sesi autentik; capability library.purchase_requests.create; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/purchase-requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/purchase-requests P1 — mutasi data, form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
Perpustakaan purchasedetail /library/purchase/:id src/views/LibraryManagement/Media/MediaPurchaseDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman purchasedetail pada /library/purchase/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=purchaseDetail.state; Inferred from code — option/status/display-label candidates=Approved Confirmed from code — ← Kembali ke daftar pembelian, router.push, updatePurchaseStatus Confirmed from code — /api/v1/library/purchase-requests/detail @ src/services/library/library.service.js:1033 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:315; Confirmed from code — /api/v1/library/purchase-requests/update @ src/services/library/library.service.js:1038 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:344 Confirmed from code — sesi autentik; capability library.purchases.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/purchase-requests/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/purchase/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan Laporan Akreditasi Perpustakaan /library/reports/accreditation src/views/LibraryManagement/Reports/AccreditationReport.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Laporan Akreditasi Perpustakaan pada /library/reports/accreditation; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, Tanggal Mulai, Tanggal Akhir, Periode Laporan; kolom=Eksemplar, Persentase, Program, Jumlah Kegiatan, Peserta, Tipe Anggota, Peminjaman, Judul Buku; filter=startDate, endDate, Periode Laporan; aturan field=startDate: type=date, endDate: type=date Confirmed from code — generateReport, exportPDF, exportExcel, set activeTab Confirmed from code — /api/v1/library/reports/accreditation @ src/services/library/library.service.js:648 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:422 Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /librarian/reports/accreditation, /principal/library/reports/accreditation P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan library-collection-policy /library/settings/collection-policy src/views/LibraryManagement/Settings/CollectionPolicy.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman library-collection-policy pada /library/settings/collection-policy; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Inferred from code — model references library.residual.collectionPolicy.mengalihkanKePengaturanPerpustakaan; endpoint tidak eksplisit Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/settings/collection-policy P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan library-locations /library/settings/locations src/views/LibraryManagement/Settings/LibraryLocations.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman library-locations pada /library/settings/locations; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, formData.name, formData.code, formData.parent_id, formData.capacity, formData.active, formData.ddc_range_start, formData.ddc_range_end, formData.description, Nama Lokasi, Contoh: Rak A, Ruang Baca, Kode Lokasi, +8 lainnya; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, formData.name: required, formData.code: required, formData.capacity: type=number, formData.active: type=checkbox Confirmed from code — openCreate, retryLoad, toggleExpand, editLocation, confirmDelete, submitForm, deleteLocation Confirmed from code — /api/v1/library/admin/locations/list @ src/services/library/library.service.js:853 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:145; Confirmed from code — /api/v1/library/admin/locations/create @ src/services/library/library.service.js:863 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:178; Confirmed from code — /api/v1/library/admin/locations/update @ src/services/library/library.service.js:868 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:205; Confirmed from code — /api/v1/library/admin/locations/delete @ src/services/library/library.service.js:873 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:238 Confirmed from code — sesi autentik; capability library.locations.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field parent_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/locations/create, /api/v1/library/admin/locations/update, /api/v1/library/admin/locations/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/settings/locations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan library-privacy /library/settings/privacy src/views/LibraryManagement/Settings/PrivacySettings.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman library-privacy pada /library/settings/privacy; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Inferred from code — model references library.residual.privacySettings.mengalihkanKePengaturanPerpustakaan; endpoint tidak eksplisit Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/settings/privacy P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan library-service-calendar /library/settings/service-calendar src/views/LibraryManagement/Settings/ServiceCalendar.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman library-service-calendar pada /library/settings/service-calendar; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Inferred from code — model references library.residual.serviceCalendar.mengalihkanKePengaturanPerpustakaan; endpoint tidak eksplisit Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/settings/service-calendar P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan parent-library /parent/library src/views/ParentViews/ParentSectionHub.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-library pada /parent/library; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem, onChildChange Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/academics, /parent/communications, /parent/finance, /parent/more, /parent/student-life P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan parent-library-advanced-search /parent/library/advanced-search src/views/Library/AdvancedSearch.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-library-advanced-search pada /parent/library/advanced-search; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedAuthor, selectedPublisher, selectedMediaType, selectedDDC, yearFrom, yearTo, selectedTag; filter=searchQuery; sinyal validasi=min/max; aturan field=yearFrom: type=number, yearTo: type=number Confirmed from code — router.back, searchBooks, resetFilters, goToBookDetail Confirmed from code — /api/v1/library/catalog/filter-options @ src/services/library/library.service.js:526 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:366; Confirmed from code — /api/v1/library/catalog/list @ src/services/library/library.service.js:338 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:299 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/book/:id, /library/advanced-search P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan parent-library-book-detail /parent/library/book/:id src/views/Library/BookDetail.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-library-book-detail pada /parent/library/book/:id; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab Confirmed from code — router.back, set showReserveConfirm, router.push, toggleWishlist, handleReserve Confirmed from code — /api/v1/library/wishlist/remove @ src/services/library/libraryWishlist.service.js:28 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:57; Confirmed from code — /api/v1/library/wishlist/add @ src/services/library/libraryWishlist.service.js:9 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:35; Confirmed from code — /api/v1/library/queue/create @ src/services/library/library.service.js:543 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:96; Confirmed from code — /api/v1/library/catalog/detail @ src/services/library/library.service.js:538 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:349 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; parameter route id; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/wishlist/remove, /api/v1/library/queue/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/my-library, /library/book/:id P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan home-library /parent/library/home src/views/Library/HomeLibrary.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman home-library pada /parent/library/home; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateTo Missing or unclear — service closure terdeteksi (src/composables/useLibraryRouteBase.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/home P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Perpustakaan parent-library-purchase-requests /parent/library/purchase-requests src/views/Library/Purchase.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman parent-library-purchase-requests pada /parent/library/purchase-requests; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateToRequestForm Confirmed from code — /api/v1/library/purchase-requests/list @ src/services/library/library.service.js:755 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:232 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/purchase-requests P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Public (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Public tenant-landing / src/views/Public/TenantLanding.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman tenant-landing pada /; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — SPMB, Masuk Aplikasi, Pendaftaran SPMB, goTo Confirmed from code — /api/public/landing-page @ src/services/public/tenantLanding.service.js:145 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/shared_experience_api.py:359; Confirmed from code — /api/public/company-info @ src/services/public/tenantLanding.service.js:153 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/shared_experience_api.py:343 Confirmed from code — tidak memerlukan sesi menurut route meta; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /login P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Public Aduan Masyarakat /complaint src/views/Public/PublicComplaintForm.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman Aduan Masyarakat pada /complaint; tujuan diringkas dari aksi interaktif Confirmed from code — field=honeypot, answers[field.field_key], selectedFiles, turnstileToken, _hp_email, field.label, field.placeholder, field.placeholder \|\| $t(, (field.consent_text \|\| field.label) + (field.is_required ?; sinyal validasi=required, min/max; aturan field=honeypot: type=email, answers[field.field_key]: required, maxlength=field.max_length \|\| undefined, type=field.field_type ===, answers[field.field_key]: required, maxlength=field.max_length \|\| undefined, answers[field.field_key]: required Confirmed from code — resetForm, handleSubmit Confirmed from code — /api/public/complaint/submit @ src/services/public/publicComplaint.service.js:27 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:53; Confirmed from code — /api/public/complaint/form-config @ src/services/public/publicComplaint.service.js:9 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:27 Confirmed from code — tidak memerlukan sesi menurut route meta; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/public/complaint/submit; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Rapor (9 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Rapor admin-report-detail /admin/report-card/:reportId src/views/ReportCardManagement/Admin/AdminReportDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman admin-report-detail pada /admin/report-card/:reportId; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=newLineSubjectId, newLineTeacherId, selectedTeacherId, components[idx].score_status, components[idx].score, components[idx].is_remedial, components[idx].remedial_date, components[idx].remedial_notes, remedialSummary.is_remedial, remedialSummary.remedial_score, remedialSummary.remedial_date, remedialSummary.remedial_notes, +8 lainnya; filter=components[idx].score_status, components[idx].remedial_date, remedialSummary.remedial_date, Status Komponen, getScorePlaceholder(components[idx].score_status); sinyal validasi=min/max; aturan field=components[idx].score: min=0, max=100, type=number, components[idx].is_remedial: type=checkbox, components[idx].remedial_date: type=date, remedialSummary.is_remedial: type=checkbox, remedialSummary.remedial_score: min=0, max=100, type=number, remedialSummary.remedial_date: type=date; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — openAddSubjectModal, openLineDetail, openLineEdit, confirmDeleteLine, handleDeleteLine, closeAddSubjectModal, handleAddSubject, handleSave, handleRefreshAll Confirmed from code — /api/v1/report-card/reports/:param/report-lines/add @ src/services/reportCard/reportCard.service.js:99 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:96; Confirmed from code — /api/v1/report-card/report-lines/:param/delete @ src/services/reportCard/reportCard.service.js:127 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:297; Missing or unclear — /api/v1/report-card/reports/:param @ src/services/reportCard/reportCard.service.js:50; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/reports/:param/line-options @ src/services/reportCard/reportCard.service.js:55 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:485; Confirmed from code — /api/v1/report-card/reports/:param/p5 @ src/services/reportCard/p5Report.service.js:49 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:405; Missing or unclear — /api/v1/report-card/report-lines/:param @ src/services/reportCard/reportCard.service.js:93; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/report-lines/:param/refresh @ src/services/reportCard/reportCard.service.js:120 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:259; Confirmed from code — /api/v1/report-card/report-lines/:param/save @ src/services/reportCard/reportCard.service.js:109 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:142 Confirmed from code — sesi autentik; capability report_cards.list.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; parameter route reportId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/report-lines/:param/delete, /api/v1/report-card/report-lines/:param/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/report-card P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor Komponen Penilaian /admin/report-card/curriculum/:curriculumId/components src/views/ReportCardManagement/Admin/AssessmentComponentTree.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Komponen Penilaian pada /admin/report-card/curriculum/:curriculumId/components; tujuan diringkas dari 2 form, aksi interaktif Confirmed from code — form=2; field=form.name, form.code, form.parent_id, form.weight, form.source_type, form.exam_type_id, form.assignment_type_id, form.input_type, form.min_score, form.max_score, form.sequence, form.description, +7 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.name: required, form.code: required, form.weight: min=0, max=100, type=number, form.source_type: required, form.input_type: required, form.min_score: min=0, type=number, form.max_score: min=0, type=number, form.sequence: min=0, type=number; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — handleSubmit, openAddModal, toggleExpand, openEditModal, openDeleteConfirm, handleDelete Confirmed from code — /api/v1/report-card/setup/options @ src/services/reportCard/reportCardSetup.service.js:4 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:16; Confirmed from code — /api/v1/report-card/setup/assessment-components/:param/delete @ src/services/reportCard/reportCardSetup.service.js:105; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/report-card/setup/grading-policy-summary @ src/services/reportCard/reportCardSetup.service.js:69 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:198; Missing or unclear — /api/v1/report-card/setup/curriculums/:param @ src/services/reportCard/reportCardSetup.service.js:35; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/setup/curriculums/:param/components @ src/services/reportCard/reportCardSetup.service.js:64 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:177; Confirmed from code — /api/v1/report-card/setup/assessment-components/save @ src/services/reportCard/reportCardSetup.service.js:88; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability report_cards.curriculum.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; parameter route curriculumId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field parent_id, exam_type_id, assignment_type_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/setup/assessment-components/:param/delete, /api/v1/report-card/setup/assessment-components/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/report-card/curriculum P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor Konfigurasi KKTP /admin/report-card/kktp src/views/ReportCardManagement/Admin/KKTPConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi KKTP pada /admin/report-card/kktp; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=defaultKktp, searchQuery, subject.kktp_value, String(defaultKktp \|\| 0), Default KKTP; kolom=KKTP, Efektif, Visibilitas Raport; filter=searchQuery; sinyal validasi=min/max; aturan field=defaultKktp: min=0, max=100, type=number, searchQuery: type=search, subject.kktp_value: min=0, max=100, type=number Confirmed from code — saveConfig Confirmed from code — /api/v1/report-card/kktp/list @ src/services/reportCard/reportCardSetup.service.js:214 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_scale_api.py:185; Confirmed from code — /api/v1/report-card/kktp/save @ src/services/reportCard/reportCardSetup.service.js:225 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_scale_api.py:235 Confirmed from code — sesi autentik; capability report_cards.curriculum.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/kktp/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor teacher-assessment-hub /faculty/assessment src/views/FacultyViews/TeacherSectionHub.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman teacher-assessment-hub pada /faculty/assessment; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/digital-learning, /faculty/hr, /faculty/student-affairs, /faculty/teaching P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor Perumusan Tujuan Pembelajaran (TP) /faculty/report-card/objective-builder src/views/ReportCardManagement/Faculty/CpTp/TeacherObjectiveBuilder.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Perumusan Tujuan Pembelajaran (TP) pada /faculty/report-card/objective-builder; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id, formData.code, formData.name, formData.description, formData.sequence, formData.academic_term_id, formData.assessment_criteria, Cth: TP-01, Label Ringkas TP, +8 lainnya; filter=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id; sinyal validasi=required, min/max; aturan field=formData.code: required, formData.name: required, formData.description: required, formData.sequence: type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — $router.push, openFormModal, confirmDelete, saveTP, deleteTP Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/learning/objectives/delete @ src/services/reportCard/cpTpTeacher.service.js:138 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:426; Confirmed from code — /api/v1/report-card/learning/outcomes @ src/services/reportCard/cpTpTeacher.service.js:45 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:94; Confirmed from code — /api/v1/report-card/learning/subjects @ src/services/reportCard/cpTpTeacher.service.js:27 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:60; Confirmed from code — /api/v1/report-card/learning/objectives/save @ src/services/reportCard/cpTpTeacher.service.js:120 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:366 Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id, subject_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/learning/objectives/delete, /api/v1/report-card/learning/objectives/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/report-card/objectives P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor Penilaian Proyek P5 /faculty/report-card/p5/:projectId src/views/ReportCardManagement/Faculty/P5/TeacherP5GradingPage.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Penilaian Proyek P5 pada /faculty/report-card/p5/:projectId; tujuan diringkas dari aksi interaktif Confirmed from code — field=line.rating, line.description, selectedAssessment.overall_description, placeholder, Pilih Rating, Deskripsi Pencapaian, Catatan / Deskripsi Proses Projek Siswa (E-Rapor); sinyal validasi=required; Inferred from code — option/status/display-label candidates=Error Confirmed from code — Gunakan Deskripsi Otomatis, Gunakan Saran, Refresh, Gunakan, selectRubrik, useSuggestion, fetchSuggestion, goBack, saveAllAssessments, selectAssessment, set selectedDimensionIndex, markDirty Confirmed from code — /api/v1/report-card/p5/projects/:param/assessments @ src/services/reportCard/p5Teacher.service.js:30 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_p5_teacher_api.py:191; Confirmed from code — /api/v1/report-card/p5/assessments/:param/save @ src/services/reportCard/p5Teacher.service.js:39 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_p5_teacher_api.py:230 Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; parameter route projectId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/p5/assessments/:param/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/report-card/p5 P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor principal-report-detail /principal/academics/reports/:reportId src/views/ReportCardManagement/Principal/PrincipalReportDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-report-detail pada /principal/academics/reports/:reportId; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Deskripsi Capaian; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — router.back, openWorkflowDialog, handleWorkflowAction Missing or unclear — /api/v1/report-card/reports/:param @ src/services/reportCard/reportCard.service.js:50; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability report_cards.list.view; allowedRoles principal; feature flag scola_report_card; parameter route reportId; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/academics/reports P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor student-grades-hub /student/grades src/views/StudentViews/StudentSectionHub.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-grades-hub pada /student/grades; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — openItem Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability report_cards.self.view; allowedRoles student, alumni; feature flag scola_report_card; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /student/extras, /student/learning, /student/student-life, /student/today P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
Rapor student-report-card-detail /student/report-card/:reportId src/views/ReportCardManagement/Student/StudentReportDetail.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman student-report-card-detail pada /student/report-card/:reportId; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Capaian; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openLineDetail Missing or unclear — /api/v1/report-card/report-lines/:param @ src/services/reportCard/reportCard.service.js:93; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Missing or unclear — /api/v1/report-card/reports/:param @ src/services/reportCard/reportCard.service.js:50; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/reports/:param/p5 @ src/services/reportCard/p5Report.service.js:49 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:405 Confirmed from code — sesi autentik; capability report_cards.self.view; allowedRoles student, alumni; feature flag scola_report_card; parameter route reportId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/report-card P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

Register.vue (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
Register.vue Register /register src/views/Register.vue:1 Confirmed from code — akses publik menurut route meta Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — tidak memerlukan sesi menurut route meta; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub

SPMB (47 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
SPMB admin-staff-admissions-detail /admin-staff/admissions/admission/:id src/views/AdmissionManagement/AdmissionDetail.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-detail pada /admin-staff/admissions/admission/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, confirmDialog.show, previewModal.show; kolom=Jenis, Tingkat, Nama File; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Data Pribadi, Data Jalur, Jadikan Cadangan, Tolak Pendaftaran, Gagal Confirmed from code — showAction, viewDocument, downloadDocument, verifyDocument, rejectDocument, handleDialogConfirm, set previewModal.show, downloadFromPreview Confirmed from code — /api/SPMB/admissions/:param/detail @ src/services/spmb/spmbAdminAdmissions.service.js:228 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:987; Confirmed from code — /api/SPMB/documents/:param/reject @ src/services/spmb/spmbAdminAdmissions.service.js:246 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1085; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/documents/:param/verify @ src/services/spmb/spmbAdminAdmissions.service.js:238 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1066 Confirmed from code — sesi autentik; capability admissions.period.view; allowedRoles admin, school_admin, admin_staff; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/documents/:param/reject, /api/SPMB/documents/:param/verify; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/periode/admission/:id, /principal/admissions/admission/:id, /vice-principal/public-relations/admissions/admission/:id, /vice-principal/student-affairs/admissions/admission/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB AdminStaffSPMBCBTExamDetail /admin-staff/admissions/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? src/views/ExamManagement/Faculty/Exam/CBTExamDetail.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman AdminStaffSPMBCBTExamDetail pada /admin-staff/admissions/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeWorkspaceTab, editForm.name, editForm.question_set_id, editForm.cbt_duration, editForm.total_marks, editForm.min_marks, editForm.start_time, editForm.end_time, editForm.cbt_shuffle_questions, editForm.cbt_shuffle_options, editForm.cbt_show_result, editForm.remedial_policy, +8 lainnya; kolom=Aksi; sinyal validasi=required, rules/schema; aturan field=editForm.name: required, editForm.question_set_id: required, editForm.cbt_duration: type=number, editForm.total_marks: type=number, editForm.min_marks: type=number, editForm.start_time: type=datetime-local, editForm.end_time: type=datetime-local, editForm.cbt_shuffle_questions: type=checkbox, editForm.cbt_shuffle_options: type=checkbox, editForm.cbt_show_result: type=checkbox, +3 lainnya; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goBack, switchToSettingsTab, openMappingModal, openRemedialpolicyModal, openPublishGradebookModal, navigateToItemAnalysis, navigateToIntegrityReport, openAnalytics, handleExportXlsx, handleRegenerateToken, openStaffModal, handleTransition, openProctorConsole, handleUpdate, +13 lainnya Confirmed from code — /v1/academic/cbt/grading/exams/ @ src/views/ExamManagement/Faculty/Exam/CBTExamDetail.vue:1805; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /v1/academic/cbt/exams/:param/get @ src/services/cbt/examService.js:31 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:105; Confirmed from code — /v1/academic/cbt/exams/:param/regenerate-token @ src/services/cbt/examService.js:87 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:289; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/list @ src/services/cbt/examService.js:117 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:15; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/:param/remove @ src/services/cbt/examService.js:159 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:110; Confirmed from code — /v1/academic/cbt/exams/:param/save @ src/services/cbt/examService.js:59 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:172; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/add @ src/services/cbt/examService.js:145 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:83; Confirmed from code — /v1/academic/cbt/exams/:param/transition @ src/services/cbt/examService.js:101 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:308; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15; Confirmed from code — /v1/academic/cbt/exams/options/students @ src/services/cbt/examService.js:383 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:123; Confirmed from code — /v1/academic/cbt/exams/:param/participants/list @ src/services/cbt/examService.js:175 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:379; Confirmed from code — /v1/academic/cbt/exams/:param/participants/save @ src/services/cbt/examService.js:189 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:410; Confirmed from code — /v1/academic/cbt/exams/:param/participants/import @ src/services/cbt/examService.js:203 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:435; Confirmed from code — /v1/academic/cbt/exams/:param/participants/:param/status @ src/services/cbt/examService.js:217 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:601; Confirmed from code — /v1/academic/cbt/exams/:param/participants/:param/delete @ src/services/cbt/examService.js:231 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:630; Confirmed from code — /v1/academic/cbt/exams/:param/staff/save @ src/services/cbt/examService.js:289 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_staff_api.py:54; Confirmed from code — /v1/academic/cbt/exams/options/staff-users @ src/services/cbt/examService.js:397 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:154; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability admissions.cbt_author.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; parameter route examId, tab; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan; referenced records dari field question_set_id, student_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/:param/attendees/:param/remove, /v1/academic/cbt/exams/:param/save, /v1/academic/cbt/exams/:param/participants/save, /v1/academic/cbt/exams/:param/participants/import, /v1/academic/cbt/exams/:param/participants/:param/delete, /v1/academic/cbt/exams/:param/staff/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?, /faculty/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB AdminStaffSPMBCBTExamAnalytics /admin-staff/admissions/cbt/exams/:examId/analytics src/views/ExamManagement/Faculty/Exam/CBTExamAnalytics.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman AdminStaffSPMBCBTExamAnalytics pada /admin-staff/admissions/cbt/exams/:examId/analytics; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterEasy, filterMedium, filterHard; kolom=Peserta, Kode, Tipe, Status, Attempt, Flags, Nilai, No, Soal, Dijawab, +3 lainnya; filter=filterEasy, filterMedium, filterHard; sinyal validasi=min/max; aturan field=filterEasy: type=checkbox, filterMedium: type=checkbox, filterHard: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Akses Ditolak Confirmed from code — goBack, handleExport Confirmed from code — /v1/academic/cbt/results/exams/:param/analytics @ src/services/cbt/examService.js:418 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:16; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15 Confirmed from code — sesi autentik; capability admissions.cbt_grade.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/cbt/exams/:examId/analytics, /faculty/cbt/exams/:examId/analytics P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB AdminStaffSPMBCBTGradingWorkspace /admin-staff/admissions/cbt/exams/:examId/grading/:attemptId src/views/ExamManagement/Faculty/Exam/GradingWorkspace.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman AdminStaffSPMBCBTGradingWorkspace pada /admin-staff/admissions/cbt/exams/:examId/grading/:attemptId; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=essayFilter, answer.points_earned, answer.grader_comment, Tambahkan komentar..., Nilai, Komentar (opsional); filter=essayFilter; sinyal validasi=min/max, custom validate; aturan field=essayFilter: type=checkbox, answer.points_earned: min=0, max=answer.question_points, type=number, answer.grader_comment: type=text; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — goBack, saveAllScores, finalizeGrading, prevEssay, nextEssay, openRubricBuilder, openRegradeModal, saveScore Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/cbt/gradingService.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability admissions.cbt_grade.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; parameter route examId, attemptId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/spmb/cbt/exams/:examId/grading/:attemptId, /faculty/cbt/exams/:examId/grading/:attemptId P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Laporan Integritas Ujian /admin-staff/admissions/cbt/exams/:examId/integrity-report src/views/ExamManagement/Faculty/Exam/CBTIntegrityReport.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Laporan Integritas Ujian pada /admin-staff/admissions/cbt/exams/:examId/integrity-report; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.integrity_status, filters.flag_type, searchQuery, Status Integritas, Tipe Flag; kolom=Peserta, Status, Total Flags, Flags, Aksi; filter=filters.integrity_status, filters.flag_type, searchQuery, Status Integritas; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Clean, Flagged, Blocked, Tab Switch, Copy-Paste, Multi-Login, Pola Mencurigakan, Error, Export Dibatasi Confirmed from code — handleExportXlsx, loadIntegrityReport, viewParticipantDetail, set showDetailModal Confirmed from code — /v1/academic/cbt/results/exams/:param/integrity @ src/services/cbt/examService.js:437 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:114; Confirmed from code — /v1/academic/cbt/results/exams/:param/integrity.xlsx @ src/services/cbt/examService.js:483 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:144; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189 Confirmed from code — sesi autentik; capability admissions.cbt_proctor.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/cbt/exams/:examId/integrity-report, /faculty/cbt/exams/:examId/integrity-report P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Analisis Butir Soal /admin-staff/admissions/cbt/exams/:examId/item-analysis src/views/ExamManagement/Faculty/Exam/CBTItemAnalysis.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Analisis Butir Soal pada /admin-staff/admissions/cbt/exams/:examId/item-analysis; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.difficulty_level, filters.discrimination_level, filters.quality, Tingkat Kesulitan, Daya Beda, Kualitas Soal; kolom=No, Soal, Difficulty Index, Discrimination Index, Kualitas, Rekomendasi; filter=filters.difficulty_level, filters.discrimination_level, filters.quality; Inferred from code — option/status/display-label candidates=Mudah (71-100%), Sukar (0-30%), Baik (> 0.40), Cukup (0.20-0.40), Buruk (< 0.20), Excellent, Good, Fair, Poor, Error, +1 lainnya Confirmed from code — handleExportXlsx, loadAnalysis, markQuestionForRevision, setQuestionReviewStatus Confirmed from code — /v1/academic/cbt/question-bank/questions/update @ src/services/cbt/questionService.js:98 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:736; Confirmed from code — /v1/academic/cbt/results/exams/:param/analytics @ src/services/cbt/examService.js:418 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:16; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15 Confirmed from code — sesi autentik; capability admissions.cbt_grade.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/questions/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/cbt/exams/:examId/item-analysis, /faculty/cbt/exams/:examId/item-analysis P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB admin-staff-admissions-register-applications /admin-staff/admissions/periods/register/:id/applications src/views/AdmissionManagement/AdmissionApplicationList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-register-applications pada /admin-staff/admissions/periods/register/:id/applications; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.pathway, filters.state, filters.documents, confirmDialog.show; filter=filters.search, filters.pathway, filters.state, filters.documents; sinyal validasi=min/max Confirmed from code — confirmCalculateRanks, exportToCSV, exportToXLSX, confirmPromoteWaitlist, exportRejected, exportRankingPDF, set showMobileActions, viewDetail, submitAdmission, confirmAdmission, admitStudent, setPending, enrollStudent, rejectAdmission, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/registers/:param/applications @ src/services/spmb/spmbAdminAdmissions.service.js:181 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:804; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/registers/:param/promote-waitlist @ src/services/spmb/spmbAdminAdmissions.service.js:212 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:885; Confirmed from code — /api/SPMB/registers/:param/export-rejected @ src/services/spmb/spmbAdminAdmissions.service.js:216 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:910 Confirmed from code — sesi autentik; capability admissions.period.view; allowedRoles admin, school_admin, admin_staff; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/periode/register/:id/applications, /principal/admissions/periods/register/:id/applications, /vice-principal/public-relations/admissions/periods/register/:id/applications, /vice-principal/student-affairs/admissions/periods/register/:id/applications P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB admin-staff-admissions-ranking /admin-staff/admissions/ranking src/views/AdmissionManagement/RankingList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-ranking pada /admin-staff/admissions/ranking; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.register_id, filters.pathway_id, filters.state, showProcessDialog, Gelombang; kolom=Nama Peserta, Gelombang, Total Skor; filter=filters.register_id, filters.pathway_id, filters.state; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — set showProcessDialog, exportCSV, fetchData, viewDetail, handleProcessSelection Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796 Confirmed from code — sesi autentik; capability admissions.ranking.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, pathway_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/ranking, /principal/admissions/ranking, /vice-principal/public-relations/admissions/ranking, /vice-principal/student-affairs/admissions/ranking P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB admin-staff-admissions-test-participants /admin-staff/admissions/test/participants src/views/AdmissionManagement/TestParticipantList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-test-participants pada /admin-staff/admissions/test/participants; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.schedule_id, filters.attendance_status, scoreForm.score, scoreForm.notes, Masukkan nilai..., Peserta, Jadwal; filter=filters.schedule_id, filters.attendance_status; sinyal validasi=required, min/max; aturan field=scoreForm.score: required, min=0, type=number; Inferred from code — option/status/display-label candidates=Hadir, Error Confirmed from code — markAttendance, openScoreModal, saveScore Confirmed from code — /api/SPMB/test-participants/options @ src/services/spmb/spmbAdminTestParticipants.service.js:42 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:28; Confirmed from code — /api/SPMB/test-participants/list @ src/services/spmb/spmbAdminTestParticipants.service.js:33 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:32; Confirmed from code — /api/SPMB/test-participants/:param/attendance @ src/services/spmb/spmbAdminTestParticipants.service.js:52 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:36; Confirmed from code — /api/SPMB/test-participants/:param/score @ src/services/spmb/spmbAdminTestParticipants.service.js:57 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:40 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field schedule_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/test/participants P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB admin-staff-admissions-test-results /admin-staff/admissions/test/results src/views/AdmissionManagement/TestResultList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-test-results pada /admin-staff/admissions/test/results; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.test_type_id, editForm.score, editForm.notes, Masukkan nilai..., Nilai Terbobot; filter=filters.test_type_id; sinyal validasi=required, min/max; aturan field=editForm.score: required, min=0, type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openEditModal, saveRecord Confirmed from code — /api/SPMB/test-results/options @ src/services/spmb/spmbAdminTestResults.service.js:38 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:44; Confirmed from code — /api/SPMB/test-results/list @ src/services/spmb/spmbAdminTestResults.service.js:30 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:48; Confirmed from code — /api/SPMB/test-results/:param/update @ src/services/spmb/spmbAdminTestResults.service.js:48 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:52 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field test_type_id Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/test-results/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/test/results P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB admin-staff-admissions-test-schedule /admin-staff/admissions/test/schedule src/views/AdmissionManagement/TestSchedule.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-test-schedule pada /admin-staff/admissions/test/schedule; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.search, filters.date, filters.register_id, form.register_id, form.test_type_id, form.test_date, form.test_time_start, form.test_time_end, form.location, form.capacity, form.state, activeTab, +5 lainnya; kolom=Waktu Hadir; filter=filters.search, filters.date, filters.register_id, form.test_date; sinyal validasi=required, min/max; aturan field=filters.search: type=search, form.register_id: required, form.test_type_id: required, form.test_date: required, type=date, form.test_time_start: required, type=time, form.test_time_end: required, type=time, form.capacity: min=1, type=number, line.admission_id: required; Inferred from code — option/status/display-label candidates=Peserta, CBT Admission, Error, Data tersimpan Confirmed from code — Add a line, openModal, resetFilters, deleteRecord, handleCardSyncCbt, saveRecord, markPresent, markAbsent, removeParticipantRow, addParticipantRow, handleModalSyncCbt, handleConfirmDelete Confirmed from code — /v1/academic/cbt/exams/list @ src/services/cbt/examService.js:17 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:16; Confirmed from code — /api/SPMB/test-schedules/list @ src/services/spmb/spmbAdminTestSchedule.service.js:149 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:16; Confirmed from code — /api/SPMB/test-schedules/options @ src/services/spmb/spmbAdminTestSchedule.service.js:161 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:20; Confirmed from code — /api/SPMB/test-schedules/:param/detail @ src/services/spmb/spmbAdminTestSchedule.service.js:169 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:28; Confirmed from code — /api/SPMB/test-schedules/create @ src/services/spmb/spmbAdminTestSchedule.service.js:175 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:24; Confirmed from code — /api/SPMB/test-schedules/:param/update @ src/services/spmb/spmbAdminTestSchedule.service.js:183 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:36; Confirmed from code — /api/SPMB/test-schedules/:param/delete @ src/services/spmb/spmbAdminTestSchedule.service.js:190 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:40; Confirmed from code — /api/SPMB/test-schedules/:param/sync-cbt @ src/services/spmb/spmbAdminTestSchedule.service.js:194 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:44 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, test_type_id, admission_id, cbt_exam_id Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/test-schedules/create, /api/SPMB/test-schedules/:param/update, /api/SPMB/test-schedules/:param/delete, /api/SPMB/test-schedules/:param/sync-cbt; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/test/schedule P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB admin-staff-admissions-test-types /admin-staff/admissions/test/types src/views/AdmissionManagement/TestTypeList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman admin-staff-admissions-test-types pada /admin-staff/admissions/test/types; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=form.name, form.code, form.sequence, form.duration_minutes, form.max_score, form.weight, form.is_required, form.active, form.description, confirmDialog.show; kolom=Durasi, Skor Maks, Bobot; sinyal validasi=required, min/max; aturan field=form.name: required, form.code: required, form.sequence: min=0, type=number, form.duration_minutes: min=1, type=number, form.max_score: min=0, type=number, form.weight: min=0, max=100, type=number, form.is_required: type=checkbox, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openModal, deleteRecord, saveRecord, handleConfirmDelete Confirmed from code — /api/SPMB/test-types/create @ src/services/spmb/spmbAdminTestTypes.service.js:49 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:16; Confirmed from code — /api/SPMB/test-types/:param/delete @ src/services/spmb/spmbAdminTestTypes.service.js:62 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:24; Confirmed from code — /api/SPMB/test-types/list @ src/services/spmb/spmbAdminTestTypes.service.js:44 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:12; Confirmed from code — /api/SPMB/test-types/:param/update @ src/services/spmb/spmbAdminTestTypes.service.js:55 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:20 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/test-types/create, /api/SPMB/test-types/:param/delete, /api/SPMB/test-types/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/test/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB AdmissionConfig /admin/spmb-config src/views/AdmissionManagement/AdmissionConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdmissionConfig pada /admin/spmb-config; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Tipe Dokumen, Konfigurasi NIS, Tipe Beasiswa/Afirmasi Confirmed from code — goTo Confirmed from code — /api/v1/admissions/config/counts @ src/services/admissions/admissionConfig.service.js:12 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:201 Confirmed from code — sesi autentik; capability admissions.general.config; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB ScholarshipTypeConfig /admin/spmb-config/scholarship-types src/views/AdmissionManagement/Config/ScholarshipTypeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman ScholarshipTypeConfig pada /admin/spmb-config/scholarship-types; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.active, form.name, form.sequence, form.category, form.default_percentage, form.requires_approval, form.description, form.active, confirmDialog.show, Nama Tipe Beasiswa, e.g. KIP, PKH, DTKS, Persentase Diskon (%), +1 lainnya; kolom=Nama Tipe, Diskon (%), Persetujuan; filter=filters.active; sinyal validasi=required; aturan field=form.name: required, form.sequence: type=number, form.default_percentage: type=number, form.requires_approval: type=checkbox, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Full Scholarship (100%), Partial Scholarship Confirmed from code — openModal, deleteRecord, saveRecord, handleConfirmDelete Confirmed from code — /api/v1/admissions/config/scholarship-types/save @ src/services/admissions/admissionConfig.service.js:123 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:451; Confirmed from code — /api/v1/admissions/config/scholarship-types/delete @ src/services/admissions/admissionConfig.service.js:131 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:471; Confirmed from code — /api/v1/admissions/config/scholarship-types/list @ src/services/admissions/admissionConfig.service.js:116 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:431 Confirmed from code — sesi autentik; capability admissions.scholarship.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admissions/config/scholarship-types/save, /api/v1/admissions/config/scholarship-types/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB SPMBAdminCBTExamDetail /admin/spmb/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? src/views/ExamManagement/Faculty/Exam/CBTExamDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman SPMBAdminCBTExamDetail pada /admin/spmb/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeWorkspaceTab, editForm.name, editForm.question_set_id, editForm.cbt_duration, editForm.total_marks, editForm.min_marks, editForm.start_time, editForm.end_time, editForm.cbt_shuffle_questions, editForm.cbt_shuffle_options, editForm.cbt_show_result, editForm.remedial_policy, +8 lainnya; kolom=Aksi; sinyal validasi=required, rules/schema; aturan field=editForm.name: required, editForm.question_set_id: required, editForm.cbt_duration: type=number, editForm.total_marks: type=number, editForm.min_marks: type=number, editForm.start_time: type=datetime-local, editForm.end_time: type=datetime-local, editForm.cbt_shuffle_questions: type=checkbox, editForm.cbt_shuffle_options: type=checkbox, editForm.cbt_show_result: type=checkbox, +3 lainnya; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goBack, switchToSettingsTab, openMappingModal, openRemedialpolicyModal, openPublishGradebookModal, navigateToItemAnalysis, navigateToIntegrityReport, openAnalytics, handleExportXlsx, handleRegenerateToken, openStaffModal, handleTransition, openProctorConsole, handleUpdate, +13 lainnya Confirmed from code — /v1/academic/cbt/grading/exams/ @ src/views/ExamManagement/Faculty/Exam/CBTExamDetail.vue:1805; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /v1/academic/cbt/exams/:param/get @ src/services/cbt/examService.js:31 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:105; Confirmed from code — /v1/academic/cbt/exams/:param/regenerate-token @ src/services/cbt/examService.js:87 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:289; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/list @ src/services/cbt/examService.js:117 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:15; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/:param/remove @ src/services/cbt/examService.js:159 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:110; Confirmed from code — /v1/academic/cbt/exams/:param/save @ src/services/cbt/examService.js:59 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:172; Confirmed from code — /v1/academic/cbt/exams/:param/attendees/add @ src/services/cbt/examService.js:145 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_attendee_api.py:83; Confirmed from code — /v1/academic/cbt/exams/:param/transition @ src/services/cbt/examService.js:101 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:308; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15; Confirmed from code — /v1/academic/cbt/exams/options/students @ src/services/cbt/examService.js:383 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:123; Confirmed from code — /v1/academic/cbt/exams/:param/participants/list @ src/services/cbt/examService.js:175 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:379; Confirmed from code — /v1/academic/cbt/exams/:param/participants/save @ src/services/cbt/examService.js:189 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:410; Confirmed from code — /v1/academic/cbt/exams/:param/participants/import @ src/services/cbt/examService.js:203 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:435; Confirmed from code — /v1/academic/cbt/exams/:param/participants/:param/status @ src/services/cbt/examService.js:217 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:601; Confirmed from code — /v1/academic/cbt/exams/:param/participants/:param/delete @ src/services/cbt/examService.js:231 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/participant.py:630; Confirmed from code — /v1/academic/cbt/exams/:param/staff/save @ src/services/cbt/examService.js:289 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_staff_api.py:54; Confirmed from code — /v1/academic/cbt/exams/options/staff-users @ src/services/cbt/examService.js:397 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:154; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability admissions.cbt_author.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; parameter route examId, tab; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan; referenced records dari field question_set_id, student_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/:param/attendees/:param/remove, /v1/academic/cbt/exams/:param/save, /v1/academic/cbt/exams/:param/participants/save, /v1/academic/cbt/exams/:param/participants/import, /v1/academic/cbt/exams/:param/participants/:param/delete, /v1/academic/cbt/exams/:param/staff/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?, /faculty/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)? P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB SPMBAdminCBTExamAnalytics /admin/spmb/cbt/exams/:examId/analytics src/views/ExamManagement/Faculty/Exam/CBTExamAnalytics.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman SPMBAdminCBTExamAnalytics pada /admin/spmb/cbt/exams/:examId/analytics; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterEasy, filterMedium, filterHard; kolom=Peserta, Kode, Tipe, Status, Attempt, Flags, Nilai, No, Soal, Dijawab, +3 lainnya; filter=filterEasy, filterMedium, filterHard; sinyal validasi=min/max; aturan field=filterEasy: type=checkbox, filterMedium: type=checkbox, filterHard: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Akses Ditolak Confirmed from code — goBack, handleExport Confirmed from code — /v1/academic/cbt/results/exams/:param/analytics @ src/services/cbt/examService.js:418 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:16; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15 Confirmed from code — sesi autentik; capability admissions.cbt_grade.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/analytics, /faculty/cbt/exams/:examId/analytics P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB SPMBAdminCBTGradingWorkspace /admin/spmb/cbt/exams/:examId/grading/:attemptId src/views/ExamManagement/Faculty/Exam/GradingWorkspace.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman SPMBAdminCBTGradingWorkspace pada /admin/spmb/cbt/exams/:examId/grading/:attemptId; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=essayFilter, answer.points_earned, answer.grader_comment, Tambahkan komentar..., Nilai, Komentar (opsional); filter=essayFilter; sinyal validasi=min/max, custom validate; aturan field=essayFilter: type=checkbox, answer.points_earned: min=0, max=answer.question_points, type=number, answer.grader_comment: type=text; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — goBack, saveAllScores, finalizeGrading, prevEssay, nextEssay, openRubricBuilder, openRegradeModal, saveScore Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/cbt/gradingService.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability admissions.cbt_grade.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; parameter route examId, attemptId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/grading/:attemptId, /faculty/cbt/exams/:examId/grading/:attemptId P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Laporan Integritas Ujian /admin/spmb/cbt/exams/:examId/integrity-report src/views/ExamManagement/Faculty/Exam/CBTIntegrityReport.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Laporan Integritas Ujian pada /admin/spmb/cbt/exams/:examId/integrity-report; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.integrity_status, filters.flag_type, searchQuery, Status Integritas, Tipe Flag; kolom=Peserta, Status, Total Flags, Flags, Aksi; filter=filters.integrity_status, filters.flag_type, searchQuery, Status Integritas; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Clean, Flagged, Blocked, Tab Switch, Copy-Paste, Multi-Login, Pola Mencurigakan, Error, Export Dibatasi Confirmed from code — handleExportXlsx, loadIntegrityReport, viewParticipantDetail, set showDetailModal Confirmed from code — /v1/academic/cbt/results/exams/:param/integrity @ src/services/cbt/examService.js:437 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:114; Confirmed from code — /v1/academic/cbt/results/exams/:param/integrity.xlsx @ src/services/cbt/examService.js:483 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:144; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189 Confirmed from code — sesi autentik; capability admissions.cbt_proctor.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/integrity-report, /faculty/cbt/exams/:examId/integrity-report P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Analisis Butir Soal /admin/spmb/cbt/exams/:examId/item-analysis src/views/ExamManagement/Faculty/Exam/CBTItemAnalysis.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Analisis Butir Soal pada /admin/spmb/cbt/exams/:examId/item-analysis; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.difficulty_level, filters.discrimination_level, filters.quality, Tingkat Kesulitan, Daya Beda, Kualitas Soal; kolom=No, Soal, Difficulty Index, Discrimination Index, Kualitas, Rekomendasi; filter=filters.difficulty_level, filters.discrimination_level, filters.quality; Inferred from code — option/status/display-label candidates=Mudah (71-100%), Sukar (0-30%), Baik (> 0.40), Cukup (0.20-0.40), Buruk (< 0.20), Excellent, Good, Fair, Poor, Error, +1 lainnya Confirmed from code — handleExportXlsx, loadAnalysis, markQuestionForRevision, setQuestionReviewStatus Confirmed from code — /v1/academic/cbt/question-bank/questions/update @ src/services/cbt/questionService.js:98 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:736; Confirmed from code — /v1/academic/cbt/results/exams/:param/analytics @ src/services/cbt/examService.js:418 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_analytics_api.py:16; Confirmed from code — /v1/academic/cbt/results/exams/:param/export.xlsx @ src/services/cbt/examService.js:474 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/report_export_api.py:15 Confirmed from code — sesi autentik; capability admissions.cbt_grade.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; parameter route examId; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/questions/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/exams/:examId/item-analysis, /faculty/cbt/exams/:examId/item-analysis P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB AdmissionDetail /admin/spmb/periode/admission/:id src/views/AdmissionManagement/AdmissionDetail.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman AdmissionDetail pada /admin/spmb/periode/admission/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, confirmDialog.show, previewModal.show; kolom=Jenis, Tingkat, Nama File; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Data Pribadi, Data Jalur, Jadikan Cadangan, Tolak Pendaftaran, Gagal Confirmed from code — showAction, viewDocument, downloadDocument, verifyDocument, rejectDocument, handleDialogConfirm, set previewModal.show, downloadFromPreview Confirmed from code — /api/SPMB/admissions/:param/detail @ src/services/spmb/spmbAdminAdmissions.service.js:228 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:987; Confirmed from code — /api/SPMB/documents/:param/reject @ src/services/spmb/spmbAdminAdmissions.service.js:246 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1085; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/documents/:param/verify @ src/services/spmb/spmbAdminAdmissions.service.js:238 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1066 Confirmed from code — sesi autentik; capability admissions.period.view; allowedRoles admin, school_admin, head_admin; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/documents/:param/reject, /api/SPMB/documents/:param/verify; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/admission/:id, /principal/admissions/admission/:id, /vice-principal/public-relations/admissions/admission/:id, /vice-principal/student-affairs/admissions/admission/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB RegisterApplications /admin/spmb/periode/register/:id/applications src/views/AdmissionManagement/AdmissionApplicationList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman RegisterApplications pada /admin/spmb/periode/register/:id/applications; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.pathway, filters.state, filters.documents, confirmDialog.show; filter=filters.search, filters.pathway, filters.state, filters.documents; sinyal validasi=min/max Confirmed from code — confirmCalculateRanks, exportToCSV, exportToXLSX, confirmPromoteWaitlist, exportRejected, exportRankingPDF, set showMobileActions, viewDetail, submitAdmission, confirmAdmission, admitStudent, setPending, enrollStudent, rejectAdmission, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/registers/:param/applications @ src/services/spmb/spmbAdminAdmissions.service.js:181 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:804; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/registers/:param/promote-waitlist @ src/services/spmb/spmbAdminAdmissions.service.js:212 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:885; Confirmed from code — /api/SPMB/registers/:param/export-rejected @ src/services/spmb/spmbAdminAdmissions.service.js:216 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:910 Confirmed from code — sesi autentik; capability admissions.period.view; allowedRoles admin, school_admin, head_admin; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/periods/register/:id/applications, /principal/admissions/periods/register/:id/applications, /vice-principal/public-relations/admissions/periods/register/:id/applications, /vice-principal/student-affairs/admissions/periods/register/:id/applications P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB SPMBProctorDashboard /admin/spmb/proctor/:scheduleId? src/views/ExamManagement/Faculty/Proctor/ProctorDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman SPMBProctorDashboard pada /admin/spmb/proctor/:scheduleId?; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedExamId, extendTimeModal.minutes, extendTimeModal.reason, forceSubmitDialog.reason, resetDialog.reason, resetDialog.fullReset, Tambahan Waktu (menit), 10, Alasan (wajib), Masukkan alasan penambahan waktu..., Masukkan alasan...; kolom=Peserta, Sesi, Progress, Sisa Waktu, Flags; sinyal validasi=required; aturan field=extendTimeModal.minutes: type=number, extendTimeModal.reason: required; Inferred from code — option/status/display-label candidates=Error, Tambah Waktu, CBT, Proctor Console Confirmed from code — router.back, handleExamChange, loadExamStatus, showFlagsModal, set extendTimeModal.show, handleExtendTime, handleForceSubmit, handleResetAttempt Confirmed from code — /v1/academic/cbt/proctor/exams @ src/services/cbt/proctorService.js:11 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:13; Confirmed from code — /v1/academic/cbt/proctor/exams/:param/status @ src/services/cbt/proctorService.js:30 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:50; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/extend-time @ src/services/cbt/proctorService.js:72 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:11; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/force-submit @ src/services/cbt/proctorService.js:92 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:40; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/reset @ src/services/cbt/proctorService.js:113 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:65 Confirmed from code — sesi autentik; capability admissions.cbt_proctor.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; parameter route scheduleId; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/proctor, /admin/spmb/cbt/proctor, /faculty/cbt/proctor P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB RankingList /admin/spmb/ranking src/views/AdmissionManagement/RankingList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman RankingList pada /admin/spmb/ranking; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.register_id, filters.pathway_id, filters.state, showProcessDialog, Gelombang; kolom=Nama Peserta, Gelombang, Total Skor; filter=filters.register_id, filters.pathway_id, filters.state; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — set showProcessDialog, exportCSV, fetchData, viewDetail, handleProcessSelection Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796 Confirmed from code — sesi autentik; capability admissions.ranking.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, pathway_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/ranking, /principal/admissions/ranking, /vice-principal/public-relations/admissions/ranking, /vice-principal/student-affairs/admissions/ranking P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB TestParticipantList /admin/spmb/test/participants src/views/AdmissionManagement/TestParticipantList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman TestParticipantList pada /admin/spmb/test/participants; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.schedule_id, filters.attendance_status, scoreForm.score, scoreForm.notes, Masukkan nilai..., Peserta, Jadwal; filter=filters.schedule_id, filters.attendance_status; sinyal validasi=required, min/max; aturan field=scoreForm.score: required, min=0, type=number; Inferred from code — option/status/display-label candidates=Hadir, Error Confirmed from code — markAttendance, openScoreModal, saveScore Confirmed from code — /api/SPMB/test-participants/options @ src/services/spmb/spmbAdminTestParticipants.service.js:42 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:28; Confirmed from code — /api/SPMB/test-participants/list @ src/services/spmb/spmbAdminTestParticipants.service.js:33 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:32; Confirmed from code — /api/SPMB/test-participants/:param/attendance @ src/services/spmb/spmbAdminTestParticipants.service.js:52 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:36; Confirmed from code — /api/SPMB/test-participants/:param/score @ src/services/spmb/spmbAdminTestParticipants.service.js:57 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:40 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field schedule_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/test/participants P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB TestResultList /admin/spmb/test/results src/views/AdmissionManagement/TestResultList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman TestResultList pada /admin/spmb/test/results; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.test_type_id, editForm.score, editForm.notes, Masukkan nilai..., Nilai Terbobot; filter=filters.test_type_id; sinyal validasi=required, min/max; aturan field=editForm.score: required, min=0, type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openEditModal, saveRecord Confirmed from code — /api/SPMB/test-results/options @ src/services/spmb/spmbAdminTestResults.service.js:38 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:44; Confirmed from code — /api/SPMB/test-results/list @ src/services/spmb/spmbAdminTestResults.service.js:30 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:48; Confirmed from code — /api/SPMB/test-results/:param/update @ src/services/spmb/spmbAdminTestResults.service.js:48 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:52 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field test_type_id Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/test-results/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/test/results P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB TestSchedule /admin/spmb/test/schedule src/views/AdmissionManagement/TestSchedule.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman TestSchedule pada /admin/spmb/test/schedule; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.search, filters.date, filters.register_id, form.register_id, form.test_type_id, form.test_date, form.test_time_start, form.test_time_end, form.location, form.capacity, form.state, activeTab, +5 lainnya; kolom=Waktu Hadir; filter=filters.search, filters.date, filters.register_id, form.test_date; sinyal validasi=required, min/max; aturan field=filters.search: type=search, form.register_id: required, form.test_type_id: required, form.test_date: required, type=date, form.test_time_start: required, type=time, form.test_time_end: required, type=time, form.capacity: min=1, type=number, line.admission_id: required; Inferred from code — option/status/display-label candidates=Peserta, CBT Admission, Error, Data tersimpan Confirmed from code — Add a line, openModal, resetFilters, deleteRecord, handleCardSyncCbt, saveRecord, markPresent, markAbsent, removeParticipantRow, addParticipantRow, handleModalSyncCbt, handleConfirmDelete Confirmed from code — /v1/academic/cbt/exams/list @ src/services/cbt/examService.js:17 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:16; Confirmed from code — /api/SPMB/test-schedules/list @ src/services/spmb/spmbAdminTestSchedule.service.js:149 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:16; Confirmed from code — /api/SPMB/test-schedules/options @ src/services/spmb/spmbAdminTestSchedule.service.js:161 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:20; Confirmed from code — /api/SPMB/test-schedules/:param/detail @ src/services/spmb/spmbAdminTestSchedule.service.js:169 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:28; Confirmed from code — /api/SPMB/test-schedules/create @ src/services/spmb/spmbAdminTestSchedule.service.js:175 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:24; Confirmed from code — /api/SPMB/test-schedules/:param/update @ src/services/spmb/spmbAdminTestSchedule.service.js:183 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:36; Confirmed from code — /api/SPMB/test-schedules/:param/delete @ src/services/spmb/spmbAdminTestSchedule.service.js:190 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:40; Confirmed from code — /api/SPMB/test-schedules/:param/sync-cbt @ src/services/spmb/spmbAdminTestSchedule.service.js:194 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_schedules_api.py:44 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, test_type_id, admission_id, cbt_exam_id Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/test-schedules/create, /api/SPMB/test-schedules/:param/update, /api/SPMB/test-schedules/:param/delete, /api/SPMB/test-schedules/:param/sync-cbt; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/test/schedule P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB TestTypeList /admin/spmb/test/types src/views/AdmissionManagement/TestTypeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman TestTypeList pada /admin/spmb/test/types; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=form.name, form.code, form.sequence, form.duration_minutes, form.max_score, form.weight, form.is_required, form.active, form.description, confirmDialog.show; kolom=Durasi, Skor Maks, Bobot; sinyal validasi=required, min/max; aturan field=form.name: required, form.code: required, form.sequence: min=0, type=number, form.duration_minutes: min=1, type=number, form.max_score: min=0, type=number, form.weight: min=0, max=100, type=number, form.is_required: type=checkbox, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openModal, deleteRecord, saveRecord, handleConfirmDelete Confirmed from code — /api/SPMB/test-types/create @ src/services/spmb/spmbAdminTestTypes.service.js:49 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:16; Confirmed from code — /api/SPMB/test-types/:param/delete @ src/services/spmb/spmbAdminTestTypes.service.js:62 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:24; Confirmed from code — /api/SPMB/test-types/list @ src/services/spmb/spmbAdminTestTypes.service.js:44 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:12; Confirmed from code — /api/SPMB/test-types/:param/update @ src/services/spmb/spmbAdminTestTypes.service.js:55 -> ../custom_addons_scola/gcgscola/scola_admission_assessment/controllers/spmb_assessment_tests_api.py:20 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/test-types/create, /api/SPMB/test-types/:param/delete, /api/SPMB/test-types/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/test/types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB principal-admissions-detail /principal/admissions/admission/:id src/views/AdmissionManagement/AdmissionDetail.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-admissions-detail pada /principal/admissions/admission/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, confirmDialog.show, previewModal.show; kolom=Jenis, Tingkat, Nama File; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Data Pribadi, Data Jalur, Jadikan Cadangan, Tolak Pendaftaran, Gagal Confirmed from code — showAction, viewDocument, downloadDocument, verifyDocument, rejectDocument, handleDialogConfirm, set previewModal.show, downloadFromPreview Confirmed from code — /api/SPMB/admissions/:param/detail @ src/services/spmb/spmbAdminAdmissions.service.js:228 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:987; Confirmed from code — /api/SPMB/documents/:param/reject @ src/services/spmb/spmbAdminAdmissions.service.js:246 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1085; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/documents/:param/verify @ src/services/spmb/spmbAdminAdmissions.service.js:238 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1066 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles principal; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/documents/:param/reject, /api/SPMB/documents/:param/verify; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/admission/:id, /admin/spmb/periode/admission/:id, /vice-principal/public-relations/admissions/admission/:id, /vice-principal/student-affairs/admissions/admission/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB principal-admissions-register-applications /principal/admissions/periods/register/:id/applications src/views/AdmissionManagement/AdmissionApplicationList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman principal-admissions-register-applications pada /principal/admissions/periods/register/:id/applications; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.pathway, filters.state, filters.documents, confirmDialog.show; filter=filters.search, filters.pathway, filters.state, filters.documents; sinyal validasi=min/max Confirmed from code — confirmCalculateRanks, exportToCSV, exportToXLSX, confirmPromoteWaitlist, exportRejected, exportRankingPDF, set showMobileActions, viewDetail, submitAdmission, confirmAdmission, admitStudent, setPending, enrollStudent, rejectAdmission, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/registers/:param/applications @ src/services/spmb/spmbAdminAdmissions.service.js:181 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:804; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/registers/:param/promote-waitlist @ src/services/spmb/spmbAdminAdmissions.service.js:212 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:885; Confirmed from code — /api/SPMB/registers/:param/export-rejected @ src/services/spmb/spmbAdminAdmissions.service.js:216 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:910 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles principal; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/periods/register/:id/applications, /admin/spmb/periode/register/:id/applications, /vice-principal/public-relations/admissions/periods/register/:id/applications, /vice-principal/student-affairs/admissions/periods/register/:id/applications P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB PendaftarAdmissionDetail /spmb/admission/:id(\d+) src/views/AdmissionManagement/Public/SPMBAdmissionDetail.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman PendaftarAdmissionDetail pada /spmb/admission/:id(\d+); tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.first_name, form.middle_name, form.last_name, form.gender, form.place_of_birth, form.birth_date, form.religion, form.mobile, form.nisn, form.kk_number, form.akta_number, form.parent_name, +19 lainnya; filter=form.birth_date, form.prev_school_name, form.prev_school_npsn; sinyal validasi=min/max, custom validate; aturan field=form.birth_date: type=date, form.nisn: maxlength=10, field: maxlength=20, form.kk_number: maxlength=16, form.rapor_average: type=number; Inferred from code — option/status/display-label candidates=Proses Seleksi, Profil Pendaftar, Dokumen & Prestasi, Penilaian, Prestasi Confirmed from code — SUBMIT SEKARANG, Verifikasi, Ada pertanyaan atau keberatan? Hubungi kami, SIMPAN, goBack, handleLogout, handleSubmit, copyToClipboard, set tab.id, handleVerifyNISN, handleVerifyNIK, navigateSubTab, goToComplaints, printRegistrationReceipt, +2 lainnya Confirmed from code — /api/SPMB/parent-relationships @ src/services/spmb/spmb.service.js:99 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_public_api.py:24; Confirmed from code — /api/SPMB/my/admission/submit @ src/services/spmb/spmb.service.js:123 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:43; Confirmed from code — /api/SPMB/my/admission/update @ src/services/spmb/spmb.service.js:116 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:38; Confirmed from code — /api/SPMB/my/admission @ src/services/spmb/spmb.service.js:107 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:23; Confirmed from code — /api/SPMB/my/test-schedules @ src/services/spmb/spmbTests.service.js:11 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_api.py:2041 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/my/admission/submit, /api/SPMB/my/admission/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /spmb, /spmb/login, /spmb/admission/:id(\d+)/documents P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB PendaftarAdmissionAchievements /spmb/admission/:id(\d+)/achievements src/views/AdmissionManagement/Public/SPMBAchievements.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman PendaftarAdmissionAchievements pada /spmb/admission/:id(\d+)/achievements; tujuan diringkas dari aksi interaktif Confirmed from code — field=raporSlots[idx].average_grade, form.achievement_type, form.name, form.level, form.rank, form.year, 0 – 100, Contoh: Olimpiade Matematika, Jenis Prestasi *, Nama Prestasi/Lomba *, Tingkat *, Sertifikat; sinyal validasi=required, min/max; aturan field=raporSlots[idx].average_grade: min=0, max=100, type=number, form.year: min=2000, max=new Date().getFullYear(), type=number, field: type=file; Inferred from code — option/status/display-label candidates=Akademik, Olahraga, Seni, Sains/Olimpiade, Keagamaan, Kecamatan, Kota/Kabupaten, Provinsi, Nasional, Internasional, +5 lainnya Confirmed from code — goBack, handleSaveRapor, openAddModal, openEditModal, handleDelete, set showModal, handleFileUpload, handleSubmit Confirmed from code — /api/SPMB/my/admission/achievement/add @ src/services/spmb/spmb.service.js:151 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:26; Confirmed from code — /api/SPMB/my/admission/rapor/save @ src/services/spmb/spmb.service.js:173 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:50; Confirmed from code — /api/SPMB/my/admission/achievement/delete @ src/services/spmb/spmb.service.js:166 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:38; Confirmed from code — /api/SPMB/my/admission/achievements @ src/services/spmb/spmb.service.js:147 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:46; Confirmed from code — /api/SPMB/my/admission/achievement/update @ src/services/spmb/spmb.service.js:158 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:30 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/my/admission/rapor/save, /api/SPMB/my/admission/achievement/delete, /api/SPMB/my/admission/achievement/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB PendaftarAdmissionComplaints /spmb/admission/:id(\d+)/complaints src/views/AdmissionManagement/Public/SPMBComplaint.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman PendaftarAdmissionComplaints pada /spmb/admission/:id(\d+)/complaints; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.category, form.subject, form.description, Ringkasan pengaduan, Jelaskan pengaduan Anda secara detail..., Kategori *, Subjek *, Uraian Pengaduan *, Lampiran Pendukung; sinyal validasi=min/max; aturan field=form.subject: type=text, field: type=file; Inferred from code — option/status/display-label candidates=Penilaian/Scoring, Jarak Domisili / Zonasi, Kuota, Teknis Sistem, Diajukan, Diproses Confirmed from code — Buat Pengaduan, Buat Pengaduan Pertama, goBack, set showForm, handleAttachmentChange, removeAttachment, handleSubmit, toggleAttachmentPreview, downloadAttachment Confirmed from code — /api/SPMB/my/complaint/create @ src/services/spmb/spmb.service.js:187 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_complaint_api.py:12; Confirmed from code — /api/SPMB/my/complaints @ src/services/spmb/spmb.service.js:180 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_complaint_api.py:8 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/my/complaint/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB PendaftarAdmissionDocuments /spmb/admission/:id(\d+)/documents src/views/AdmissionManagement/Public/SPMBDocuments.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman PendaftarAdmissionDocuments pada /spmb/admission/:id(\d+)/documents; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required; aturan field=field: type=file; Inferred from code — option/status/display-label candidates=Kartu Keluarga, Akta Kelahiran, Ijazah/SKL, Pas Foto, Kartu Indonesia Pintar, Kartu PKH, Surat DTKS, SKTM, Surat Keterangan Disabilitas, SK Mutasi, +12 lainnya Confirmed from code — goBack, handleDelete Confirmed from code — /api/SPMB/my/admission/document/delete @ src/services/spmb/spmb.service.js:140 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:18; Confirmed from code — /api/SPMB/my/admission/document/upload @ src/services/spmb/spmb.service.js:131 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:8; Confirmed from code — /api/SPMB/my/admission/documents @ src/services/spmb/spmb.service.js:127 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_document_api.py:22 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/my/admission/document/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB PendaftarAdmissionEnrollment /spmb/admission/:id(\d+)/enrollment src/views/AdmissionManagement/Public/SPMBDaftarUlang.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman PendaftarAdmissionEnrollment pada /spmb/admission/:id(\d+)/enrollment; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required Confirmed from code — Lanjut ke Pembayaran, Cetak Invoice, Buat Tagihan Daftar Ulang, Konfirmasi Daftar Ulang, goBack, navigateToDocuments, openPaymentDetail, openInvoicePrint, handleCreateInvoice, confirmEnrollment, set showConfirmModal, doConfirmEnrollment Confirmed from code — /api/SPMB/my/admission/confirm-enrollment @ src/services/spmb/spmb.service.js:215 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:58; Confirmed from code — /api/SPMB/my/admission @ src/services/spmb/spmb.service.js:107 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:23; Confirmed from code — /api/SPMB/my/admission/formulir/invoice @ src/services/spmb/spmbEnrollment.service.js:143 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_payment_api.py:90; Confirmed from code — /api/SPMB/my/admission/payment/status @ src/services/spmb/spmbEnrollment.service.js:149 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_payment_api.py:311 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/my/admission/confirm-enrollment; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Missing or unclear — relasi navigasi eksplisit tidak terdeteksi P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB PendaftarAdmissionTests /spmb/admission/:id(\d+)/tests src/views/AdmissionManagement/Public/SPMBTestSchedule.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman PendaftarAdmissionTests pada /spmb/admission/:id(\d+)/tests; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Maks, Bobot Confirmed from code — Mulai CBT, Lihat Semua CBT, goBack, launchCbt, router.push Confirmed from code — /api/SPMB/my/test-schedules @ src/services/spmb/spmbTests.service.js:11 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_api.py:2041; Confirmed from code — /api/SPMB/my/test-results @ src/services/spmb/spmbTests.service.js:17 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_api.py:2109 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; parameter route id; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /spmb/cbt/runner/:exam_id, /spmb/cbt P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Selamat Datang di SPMB /spmb/admission/new src/views/AdmissionManagement/Public/SPMBAdmissionCreate.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman Selamat Datang di SPMB pada /spmb/admission/new; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.first_name, form.last_name, form.gender, form.birth_date, form.place_of_birth, form.phone; filter=form.birth_date; sinyal validasi=required, custom validate; aturan field=form.first_name: required, form.gender: required, form.birth_date: required, type=date; Inferred from code — option/status/display-label candidates=Domisili, Zonasi, Afirmasi, Prestasi, Mutasi, Perpindahan, Umum Confirmed from code — BUAT PENDAFTARAN, goToLanding, handleLogout, handleSubmit Confirmed from code — /api/SPMB/my/admission/update @ src/services/spmb/spmb.service.js:116 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:38; Confirmed from code — /api/SPMB/my/admission/create @ src/services/spmb/spmb.service.js:111 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:13 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/my/admission/update, /api/SPMB/my/admission/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /spmb/login, /spmb P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB CBT Admission /spmb/cbt src/views/AdmissionManagement/Public/SPMBCBTStart.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman CBT Admission pada /spmb/cbt; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — Lihat Jadwal, router.push, openAdmissionSchedule, startSchedule Confirmed from code — /api/SPMB/my/admissions @ src/services/spmb/spmb.service.js:103 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_portal_admission_api.py:18; Confirmed from code — /api/SPMB/my/test-schedules @ src/services/spmb/spmbTests.service.js:11 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_api.py:2041 Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /spmb, /spmb/cbt/runner/:exam_id P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB SPMBCBTRunner /spmb/cbt/runner/:exam_id src/views/ExamManagement/Student/CBTRunner.vue:1 Confirmed from code — pendaftar; guard route memakai allowedRoles Inferred from code — halaman SPMBCBTRunner pada /spmb/cbt/runner/:exam_id; tujuan diringkas dari aksi interaktif Confirmed from code — field=answers[currentQuestion.id], Tuliskan jawaban lengkap Anda di sini...; sinyal validasi=required; aturan field=answers[currentQuestion.id]: type=radio, answers[currentQuestion.id]: type=checkbox; Inferred from code — option/status/display-label candidates=Tindakan Dilarang Confirmed from code — redirectAfterFeatureDisabled, redirectAfterSebRequired, redirectAfterInitFailure, confirmFinish, goToQuestion, toggleQuestionFlag, handleAnswerChange, prevQuestion, nextQuestion, submitExam, enterFullscreen Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/cbt/useExamState.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/cbt/cbtEventSchema.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability admissions.portal.view; allowedRoles pendaftar; feature flag scola_cbt; parameter route exam_id; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /cbt/public, /spmb/cbt, /student/cbt, /cbt/public/runner/:exam_id, /student/cbt/runner/:exam_id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Masuk - Pendaftar /spmb/login src/views/SPMB/PendaftarLogin.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman Masuk - Pendaftar pada /spmb/login; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=email, password, [email protected], Masukkan password, Password; sinyal validasi=required, pattern/regex; aturan field=email: required, type=email, password: required, type=showPassword ? Confirmed from code — Verifikasi Email Sekarang, Daftar di sini, goToLanding, goToVerifyEmail, handleLogin, set showPassword, goToRegister Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /spmb/admission/new, /spmb/register, /spmb P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB Akun Berhasil Dibuat! /spmb/register src/views/SPMB/PendaftarRegister.vue:1 Confirmed from code — akses publik menurut route meta Inferred from code — halaman Akun Berhasil Dibuat! pada /spmb/register; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedPeriod, form.name, form.email, form.phone, form.password, form.confirmPassword, Nama lengkap Anda, [email protected], 08123456789, Minimal 6 karakter, Ulangi password, Pilih Periode Pendaftaran, +4 lainnya; filter=selectedPeriod, Pilih Periode Pendaftaran; sinyal validasi=required, min/max, pattern/regex, custom validate; aturan field=form.name: required, type=text, form.email: required, type=email, form.phone: required, type=tel, form.password: required, minlength=6, type=showPassword ?, form.confirmPassword: required, type=showConfirmPassword ? Confirmed from code — Verifikasi Email Sekarang, Sudah punya kode? Masuk langsung, Daftar, Masuk di sini, goToLanding, goToVerifyEmail, goToLogin, handleRegister, set showPassword, set showConfirmPassword Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — tidak memerlukan sesi menurut route meta; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /spmb/login, /spmb P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-public-relations-admissions-detail /vice-principal/public-relations/admissions/admission/:id src/views/AdmissionManagement/AdmissionDetail.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman vice-principal-public-relations-admissions-detail pada /vice-principal/public-relations/admissions/admission/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, confirmDialog.show, previewModal.show; kolom=Jenis, Tingkat, Nama File; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Data Pribadi, Data Jalur, Jadikan Cadangan, Tolak Pendaftaran, Gagal Confirmed from code — showAction, viewDocument, downloadDocument, verifyDocument, rejectDocument, handleDialogConfirm, set previewModal.show, downloadFromPreview Confirmed from code — /api/SPMB/admissions/:param/detail @ src/services/spmb/spmbAdminAdmissions.service.js:228 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:987; Confirmed from code — /api/SPMB/documents/:param/reject @ src/services/spmb/spmbAdminAdmissions.service.js:246 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1085; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/documents/:param/verify @ src/services/spmb/spmbAdminAdmissions.service.js:238 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1066 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_public_relations; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/documents/:param/reject, /api/SPMB/documents/:param/verify; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/admission/:id, /admin/spmb/periode/admission/:id, /principal/admissions/admission/:id, /vice-principal/student-affairs/admissions/admission/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-public-relations-admissions-dashboard /vice-principal/public-relations/admissions/dashboard src/views/AdmissionManagement/AdmissionDashboard.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman vice-principal-public-relations-admissions-dashboard pada /vice-principal/public-relations/admissions/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedRegister; kolom=Gelombang, Menunggu, Publikasi Hasil; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Status diperbarui, Buka Gelombang, Konfigurasi Jalur, Menunggu Verifikasi, Error Confirmed from code — fetchDashboardData, handleKpiClick, router.push, quickTransition, viewDetail Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/dashboard/stats @ src/services/spmb/spmbAdminAdmissions.service.js:113 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1121; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_public_relations; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/periode, /admin-staff/admissions/dashboard, /admin/spmb/dashboard, /principal/admissions/dashboard, /vice-principal/student-affairs/admissions/dashboard P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-public-relations-admissions-periods /vice-principal/public-relations/admissions/periods src/views/AdmissionManagement/AdmissionRegisterList.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman vice-principal-public-relations-admissions-periods pada /vice-principal/public-relations/admissions/periods; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedYear, selectedTerm, selectedStatus, showModal, form.name, form.education_level_id, form.academic_years_id, form.academic_term_id, form.course_id, form.start_date, form.end_date, form.min_count, +19 lainnya; filter=selectedStatus, form.course_id, form.start_date, form.end_date, form.school_latitude, form.school_longitude; sinyal validasi=required, min/max; aturan field=form.name: required, type=text, form.education_level_id: required, form.academic_years_id: required, form.academic_term_id: required, form.start_date: required, form.end_date: required, form.min_count: min=0, type=number, form.max_count: required, type=number, form.minimum_age_criteria: type=number, quota.quota: type=number, +9 lainnya; Inferred from code — option/status/display-label candidates=Pengumpulan Pendaftaran, Proses Seleksi, Persiapan, Pendaftaran, Seleksi, Buka Pendaftaran (Portal), Mulai Proses Seleksi, Selesaikan Periode, Update Status, Biaya Formulir, +12 lainnya Confirmed from code — See all, + Tambah Jalur, tambahPendaftaran, openDeleteDialog, editRegister, toggleStatusMenu, changeStatus, goToApplications, confirmDelete, confirmStatusChange, submitForm, addPathwayQuota, removePathwayQuota, addFeeRule, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/delete @ src/services/spmb/spmbAdminRegisters.service.js:239 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1002; Confirmed from code — /api/SPMB/registers/options @ src/services/spmb/spmbAdminRegisters.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:912; Confirmed from code — /api/SPMB/registers/list @ src/services/spmb/spmbAdminRegisters.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:922; Confirmed from code — /api/SPMB/registers/:param/transition @ src/services/spmb/spmbAdminRegisters.service.js:243 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1020; Confirmed from code — /api/SPMB/registers/create @ src/services/spmb/spmbAdminRegisters.service.js:226 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:964; Confirmed from code — /api/SPMB/registers/:param/update @ src/services/spmb/spmbAdminRegisters.service.js:232 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:981 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_public_relations; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field education_level_id, academic_years_id, academic_term_id, course_id, pathway_id, fee_template_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/registers/:param/delete, /api/SPMB/registers/create, /api/SPMB/registers/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/periods, /admin/spmb/periode, /principal/admissions/periods, /vice-principal/student-affairs/admissions/periods P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-public-relations-admissions-register-applications /vice-principal/public-relations/admissions/periods/register/:id/applications src/views/AdmissionManagement/AdmissionApplicationList.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman vice-principal-public-relations-admissions-register-applications pada /vice-principal/public-relations/admissions/periods/register/:id/applications; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.pathway, filters.state, filters.documents, confirmDialog.show; filter=filters.search, filters.pathway, filters.state, filters.documents; sinyal validasi=min/max Confirmed from code — confirmCalculateRanks, exportToCSV, exportToXLSX, confirmPromoteWaitlist, exportRejected, exportRankingPDF, set showMobileActions, viewDetail, submitAdmission, confirmAdmission, admitStudent, setPending, enrollStudent, rejectAdmission, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/registers/:param/applications @ src/services/spmb/spmbAdminAdmissions.service.js:181 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:804; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/registers/:param/promote-waitlist @ src/services/spmb/spmbAdminAdmissions.service.js:212 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:885; Confirmed from code — /api/SPMB/registers/:param/export-rejected @ src/services/spmb/spmbAdminAdmissions.service.js:216 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:910 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_public_relations; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/periods/register/:id/applications, /admin/spmb/periode/register/:id/applications, /principal/admissions/periods/register/:id/applications, /vice-principal/student-affairs/admissions/periods/register/:id/applications P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-student-affairs-admissions-detail /vice-principal/student-affairs/admissions/admission/:id src/views/AdmissionManagement/AdmissionDetail.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-student-affairs-admissions-detail pada /vice-principal/student-affairs/admissions/admission/:id; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, confirmDialog.show, previewModal.show; kolom=Jenis, Tingkat, Nama File; sinyal validasi=required; Inferred from code — option/status/display-label candidates=Data Pribadi, Data Jalur, Jadikan Cadangan, Tolak Pendaftaran, Gagal Confirmed from code — showAction, viewDocument, downloadDocument, verifyDocument, rejectDocument, handleDialogConfirm, set previewModal.show, downloadFromPreview Confirmed from code — /api/SPMB/admissions/:param/detail @ src/services/spmb/spmbAdminAdmissions.service.js:228 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:987; Confirmed from code — /api/SPMB/documents/:param/reject @ src/services/spmb/spmbAdminAdmissions.service.js:246 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1085; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/documents/:param/verify @ src/services/spmb/spmbAdminAdmissions.service.js:238 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:1066 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_student_affairs; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/documents/:param/reject, /api/SPMB/documents/:param/verify; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/admission/:id, /admin/spmb/periode/admission/:id, /principal/admissions/admission/:id, /vice-principal/public-relations/admissions/admission/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-student-affairs-admissions-periods /vice-principal/student-affairs/admissions/periods src/views/AdmissionManagement/AdmissionRegisterList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-student-affairs-admissions-periods pada /vice-principal/student-affairs/admissions/periods; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedYear, selectedTerm, selectedStatus, showModal, form.name, form.education_level_id, form.academic_years_id, form.academic_term_id, form.course_id, form.start_date, form.end_date, form.min_count, +19 lainnya; filter=selectedStatus, form.course_id, form.start_date, form.end_date, form.school_latitude, form.school_longitude; sinyal validasi=required, min/max; aturan field=form.name: required, type=text, form.education_level_id: required, form.academic_years_id: required, form.academic_term_id: required, form.start_date: required, form.end_date: required, form.min_count: min=0, type=number, form.max_count: required, type=number, form.minimum_age_criteria: type=number, quota.quota: type=number, +9 lainnya; Inferred from code — option/status/display-label candidates=Pengumpulan Pendaftaran, Proses Seleksi, Persiapan, Pendaftaran, Seleksi, Buka Pendaftaran (Portal), Mulai Proses Seleksi, Selesaikan Periode, Update Status, Biaya Formulir, +12 lainnya Confirmed from code — See all, + Tambah Jalur, tambahPendaftaran, openDeleteDialog, editRegister, toggleStatusMenu, changeStatus, goToApplications, confirmDelete, confirmStatusChange, submitForm, addPathwayQuota, removePathwayQuota, addFeeRule, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/delete @ src/services/spmb/spmbAdminRegisters.service.js:239 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1002; Confirmed from code — /api/SPMB/registers/options @ src/services/spmb/spmbAdminRegisters.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:912; Confirmed from code — /api/SPMB/registers/list @ src/services/spmb/spmbAdminRegisters.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:922; Confirmed from code — /api/SPMB/registers/:param/transition @ src/services/spmb/spmbAdminRegisters.service.js:243 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1020; Confirmed from code — /api/SPMB/registers/create @ src/services/spmb/spmbAdminRegisters.service.js:226 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:964; Confirmed from code — /api/SPMB/registers/:param/update @ src/services/spmb/spmbAdminRegisters.service.js:232 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:981 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_student_affairs; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field education_level_id, academic_years_id, academic_term_id, course_id, pathway_id, fee_template_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/registers/:param/delete, /api/SPMB/registers/create, /api/SPMB/registers/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/periods, /admin/spmb/periode, /principal/admissions/periods, /vice-principal/public-relations/admissions/periods P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
SPMB vice-principal-student-affairs-admissions-register-applications /vice-principal/student-affairs/admissions/periods/register/:id/applications src/views/AdmissionManagement/AdmissionApplicationList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman vice-principal-student-affairs-admissions-register-applications pada /vice-principal/student-affairs/admissions/periods/register/:id/applications; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.pathway, filters.state, filters.documents, confirmDialog.show; filter=filters.search, filters.pathway, filters.state, filters.documents; sinyal validasi=min/max Confirmed from code — confirmCalculateRanks, exportToCSV, exportToXLSX, confirmPromoteWaitlist, exportRejected, exportRankingPDF, set showMobileActions, viewDetail, submitAdmission, confirmAdmission, admitStudent, setPending, enrollStudent, rejectAdmission, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/registers/:param/applications @ src/services/spmb/spmbAdminAdmissions.service.js:181 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:804; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047; Confirmed from code — /api/SPMB/registers/:param/promote-waitlist @ src/services/spmb/spmbAdminAdmissions.service.js:212 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:885; Confirmed from code — /api/SPMB/registers/:param/export-rejected @ src/services/spmb/spmbAdminAdmissions.service.js:216 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:910 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_student_affairs; parameter route id; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/periods/register/:id/applications, /admin/spmb/periode/register/:id/applications, /principal/admissions/periods/register/:id/applications, /vice-principal/public-relations/admissions/periods/register/:id/applications P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

academic (29 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
academic Tahun Ajaran /academic-year src/views/AdminViews/AcademicConfig/AcademicYear/AcademicYearList.vue:1 Inferred from code — admin, school_admin, principal, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.academic_year.view; izin sesi backend dapat berbeda Inferred from code — halaman Tahun Ajaran pada /academic-year; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedYears, form.name, form.start_date, form.end_date, term.name, term.term_start_date, term.term_end_date; filter=form.start_date, form.end_date, term.term_start_date, term.term_end_date; sinyal validasi=required, min/max, custom validate; aturan field=form.name: required, form.start_date: required, form.end_date: required, min=form.start_date, term.name: required, term.term_start_date: required, min=form.start_date, max=form.end_date, term.term_end_date: required, min=term.term_start_date, max=form.end_date Confirmed from code — openAddModal, openDetailModal, openEditModal, confirmDelete, handleSubmit, addTerm, removeTerm, closeDetailModal, handleDeleteConfirm Confirmed from code — /api/v1/academic/academic-years/term-count @ src/services/admin/academics/academicMaster.service.js:24 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2100; Confirmed from code — /api/v1/academic/academic-years/terms @ src/services/admin/academics/academicMaster.service.js:17 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2089; Confirmed from code — /api/v1/academic/academic-years/list @ src/services/admin/academics/academicMaster.service.js:12 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2078; Confirmed from code — /api/v1/academic/academic-years/delete @ src/services/admin/academics/academicMaster.service.js:37 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2156; Confirmed from code — /api/v1/academic/academic-years/save @ src/services/admin/academics/academicMaster.service.js:29 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2107 Confirmed from code — sesi autentik; capability academics.academic_year.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/academic-years/delete, /api/v1/academic/academic-years/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.master (Struktur Akademik) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Jenis Asesmen /academic/assessment-types src/views/AdminViews/AcademicConfig/AssessmentTypes/AssessmentTypesPage.vue:1 Inferred from code — admin, school_admin, principal, foundation_chairman, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.assessment_types.view; izin sesi backend dapat berbeda Inferred from code — halaman Jenis Asesmen pada /academic/assessment-types; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=activeKind, searchQuery, purposeFilter, instrumentFilter, form.name, form.code, form.assessment_purpose, form.instrument_type, form.sequence, Nama, Contoh: Tugas Harian, Kode, +6 lainnya; kolom=Tujuan, Instrumen, Satuan Pendidikan, Jenjang Sekolah, Formatif, Sumatif; filter=searchQuery, purposeFilter, instrumentFilter; sinyal validasi=required, min/max, custom validate; aturan field=searchQuery: type=search, form.name: required, form.code: required, form.sequence: type=number; Inferred from code — option/status/display-label candidates=Tugas/LMS, Diagnostik, Administratif, Penugasan, Tes Tertulis, Observasi, Unjuk Kerja, Projek, Portofolio, Akses Ditolak Confirmed from code — openForm, fetchRows, confirmArchive, toggleActive, changePage, saveForm, archiveSelected Confirmed from code — /api/v1/academic/assessment-types/save @ src/services/admin/academics/assessmentTypes.service.js:28 -> ../custom_addons_scola/gcgscola/scola_assessment_bridge/controllers/assessment_type_api.py:240; Confirmed from code — /api/v1/academic/assessment-types/archive @ src/services/admin/academics/assessmentTypes.service.js:37 -> ../custom_addons_scola/gcgscola/scola_assessment_bridge/controllers/assessment_type_api.py:281; Confirmed from code — /api/v1/academic/assessment-types/options @ src/services/admin/academics/assessmentTypes.service.js:23 -> ../custom_addons_scola/gcgscola/scola_assessment_bridge/controllers/assessment_type_api.py:218; Confirmed from code — /api/v1/academic/assessment-types/list @ src/services/admin/academics/assessmentTypes.service.js:10 -> ../custom_addons_scola/gcgscola/scola_assessment_bridge/controllers/assessment_type_api.py:192 Confirmed from code — sesi autentik; capability academics.assessment_types.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/assessment-types/save, /api/v1/academic/assessment-types/archive; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.assessment (Kurikulum & Penilaian) P1 — mutasi data, form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Alur TP (ATP) /admin/atp src/views/AdminViews/LearningOutcome/LearningAtpList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Alur TP (ATP) pada /admin/atp; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.academic_term_id, filters.subject_id, filters.search, formData.learning_outcome_id, formData.objective_id, formData.academic_term_id, formData.week_number, formData.sequence, formData.duration_hours, formData.assessment_criteria, Semester, Mata Pelajaran, +6 lainnya; kolom=Urutan, Kode TP, Nama TP, CP, Semester, Durasi; filter=filters.academic_term_id, filters.subject_id, filters.search; sinyal validasi=required, custom validate; aturan field=filters.search: type=search, formData.learning_outcome_id: required, formData.objective_id: required, formData.academic_term_id: required, formData.week_number: required, type=number, formData.sequence: required, type=number, formData.duration_hours: type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openCreateModal, resetFilters, saveItem, deleteItem Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.learning_outcome.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field academic_term_id, subject_id, learning_outcome_id, objective_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu academic.assessment (Kurikulum & Penilaian) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Log Audit CBT /admin/cbt/audit src/views/AdminViews/CBT/CBTAuditLog.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Log Audit CBT pada /admin/cbt/audit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.event_type, filters.event_code, filters.user_id, filters.exam_id, filters.attempt_id, filters.schema_version, filters.date_from, filters.date_to, Jenis Event, Event Code, CBT_RUNNER_TAB_SWITCH, User ID, +5 lainnya; kolom=Event, User, Keterangan; filter=filters.event_type, filters.event_code, filters.user_id, filters.exam_id, filters.attempt_id, filters.schema_version, filters.date_from, filters.date_to; aturan field=filters.user_id: type=number, filters.exam_id: type=number, filters.attempt_id: type=number, filters.date_from: type=date, filters.date_to: type=date; Inferred from code — option/status/display-label candidates=Mulai Mengerjakan, Submit Jawaban, Force Submit, Waktu Diperpanjang, Reset Percobaan, Policy Diubah, Multi-Login Confirmed from code — fetchLogs, clearFilters Confirmed from code — /v1/academic/cbt/audit-logs/list @ src/services/cbt/cbtService.js:68 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/main.py:106 Confirmed from code — sesi autentik; capability academics.cbt_audit.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field user_id, exam_id, attempt_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu academic.cbt (CBT) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Pengaturan CBT /admin/cbt/settings src/views/AdminViews/CBT/CBTSettings.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pengaturan CBT pada /admin/cbt/settings; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=policy.default_duration_minutes, policy.grace_period_minutes, policy.auto_submit_on_timeout, policy.allow_back_navigation, policy.allow_question_flag, policy.show_question_navigator, policy.flag_tab_switch, policy.flag_blur_event, policy.flag_paste_event, policy.block_multi_login, policy.fullscreen_required, policy.max_flag_count, +19 lainnya; filter=policy.grace_period_minutes, Grace Period (menit); aturan field=policy.default_duration_minutes: type=number, policy.grace_period_minutes: type=number, policy.max_flag_count: type=number, policy.negative_mark_percentage: type=number, policy.max_attempts: type=number, policy.autosave_interval_seconds: type=number, policy.autosave_debounce_ms: type=number, policy.attempts_retention_days: type=number, policy.answers_retention_days: type=number, policy.integrity_flags_retention_days: type=number, +2 lainnya; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — savePolicy Confirmed from code — /v1/academic/cbt/policy/get @ src/services/cbt/cbtService.js:29 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/main.py:26; Confirmed from code — /v1/academic/cbt/policy/update @ src/services/cbt/cbtService.js:48 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/main.py:64 Confirmed from code — sesi autentik; capability academics.cbt.config; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/policy/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.cbt (CBT) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Sesi Ujian /admin/exam src/views/ExamManagement/Admin/ExamMenu.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Sesi Ujian pada /admin/exam; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedExamSession, Pilih Sesi Ujian; kolom=Nama Ujian, Kode, Mapel, Kelas, Mulai, Selesai, Status; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — &times;, openModal, navigateToNewForm, navigateTo, closeModal, printTicket Confirmed from code — /api/v1/academic/exams/sessions @ src/services/admin/academics/examOperations.service.js:21 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:374 Confirmed from code — sesi autentik; capability academics.exam_menu.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/examsessionnew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Peserta Ujian /admin/examattendees src/views/ExamManagement/Admin/Exams/ExamAttendees.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Peserta Ujian pada /admin/examattendees; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; kolom=Siswa, Ujian, Status, Nilai, Ruangan, Catatan; filter=searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Hadir, Izin Confirmed from code — fetchExamAttendees, createNewAttendee Confirmed from code — /api/v1/academic/exams/attendees @ src/services/admin/academics/examOperations.service.js:45 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:401 Confirmed from code — sesi autentik; capability academics.exam_attendees.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/examattendeesnew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Ruang Ujian /admin/examroom src/views/ExamManagement/Admin/ConfigurationExam/ExamRoom.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Ruang Ujian pada /admin/examroom; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, Contoh: Lab Komputer 1; kolom=Kapasitas; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — navigateToNewRoom Confirmed from code — /api/v1/academic/exams/rooms @ src/services/admin/academics/examOperations.service.js:33 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:390 Confirmed from code — sesi autentik; capability academics.exam_rooms.view; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/examroomnew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Capaian Pembelajaran (CP) /admin/learning-outcome src/views/AdminViews/LearningOutcome/LearningOutcomeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Capaian Pembelajaran (CP) pada /admin/learning-outcome; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.subject_id, filters.phase, filters.curriculum_id, filters.search, formData.subject_id, formData.phase, formData.curriculum_id, formData.code, formData.name, formData.description, draft.code, draft.name, +19 lainnya; filter=filters.subject_id, filters.phase, filters.curriculum_id, filters.search; sinyal validasi=required; aturan field=filters.search: type=search, field: type=file, formData.subject_id: required, formData.phase: required, formData.code: required, formData.name: required, formData.description: required, draft.code: required, draft.name: required, draft.description: required, +8 lainnya; Inferred from code — option/status/display-label candidates=Formatif, Sumatif, Error, Validasi, Format Salah Confirmed from code — set showImportModal, openCreateCpModal, resetFilters, handleImport, onFileSelected, $refs.fileInput.click, set selectedFile, downloadTemplate, saveItem, addCpDraft, removeCpDraft, addIndicatorDraft, removeIndicatorDraft, resetIndicatorForm, +9 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.learning_outcome.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field subject_id, curriculum_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/academics/learning-outcomes P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Log Audit LMS /admin/lms/audit src/views/LearningManagement/Admin/LMSAuditLog.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Log Audit LMS pada /admin/lms/audit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.action, filters.model; kolom=Waktu, Action, Model, Record, Deskripsi; filter=filters.search, filters.action, filters.model; aturan field=filters.search: type=search Confirmed from code — loadLogs, exportCsv Confirmed from code — /lms/audit-logs @ src/services/lms/audit.service.js:101; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.config; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu academic.lms (LMS Hub) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Antrian Enrolmen /admin/lms/enrollments src/views/LearningManagement/Admin/EnrollmentQueue.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Antrian Enrolmen pada /admin/lms/enrollments; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=stateFilter, search, bulkNote, decisionNotes[item.id], Tambahkan catatan keputusan (opsional); filter=stateFilter, search; aturan field=search: type=search, field: type=checkbox; Inferred from code — option/status/display-label candidates=Requested, Approved, Rejected, Withdrawn Confirmed from code — router.back, fetchEnrollments, toggleSelectAll, bulkAction, toggleSelect, updateState Confirmed from code — /lms/enrollments @ src/services/lms/enrollment.service.js:4; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/enrollments/:param @ src/services/lms/enrollment.service.js:14; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.config; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/enrollments/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.lms (LMS Hub) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Overview LMS /admin/lms/overview src/views/LearningManagement/Admin/LMSOverview.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Overview LMS pada /admin/lms/overview; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — fetchOverview Confirmed from code — /lms/admin/overview @ src/views/LearningManagement/Admin/LMSOverview.vue:43; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.config; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/lms/overview P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Pengaturan LMS /admin/lms/settings src/views/LearningManagement/Admin/LMSSettings.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pengaturan LMS pada /admin/lms/settings; tujuan diringkas dari aksi interaktif Confirmed from code — field=activeTab, settings.features[key], settings.policies.allowLateSubmission, settings.policies.latePenaltyPercent, settings.policies.maxLateDays, settings.policies.allowResubmission, settings.policies.parentDiscussionCanReply, settings.policies.parentDiscussionCanFlag, settings.policies.advisorDiscussionCanReply, settings.policies.advisorDiscussionCanModerate, settings.storage.maxFileSizeMB, settings.storage.maxFilesPerSubmission, +19 lainnya; sinyal validasi=min/max, rules/schema; aturan field=settings.features[key]: type=checkbox, settings.policies.allowLateSubmission: type=checkbox, settings.policies.latePenaltyPercent: min=0, max=100, type=number, settings.policies.maxLateDays: min=1, max=30, type=number, settings.policies.allowResubmission: type=checkbox, settings.policies.parentDiscussionCanReply: type=checkbox, settings.policies.parentDiscussionCanFlag: type=checkbox, settings.policies.advisorDiscussionCanReply: type=checkbox, settings.policies.advisorDiscussionCanModerate: type=checkbox, settings.storage.maxFileSizeMB: min=1, max=100, type=number, +11 lainnya; Inferred from code — option/status/display-label candidates=Fitur, Kebijakan, Storage, Penilaian, Bobot, Mapping, Notifikasi, Penilaian Harian, Penilaian Tengah Semester, Penilaian Akhir Semester, +10 lainnya Confirmed from code — + Tambah Komponen, + Tambah Rule, saveSettings, startNewWeightProfile, selectWeightProfile, addWeightLine, removeWeightLine, saveGradingWeightProfile, runWeightProfileAction, startNewTemplate, selectTemplate, addTemplateRule, removeTemplateRule, saveGradeMappingTemplate, +1 lainnya Confirmed from code — /lms/settings @ src/services/lms/settings.service.js:126; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/grade-mapping-templates @ src/services/lms/settings.service.js:197; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/grade-mapping-templates/:param @ src/services/lms/settings.service.js:233; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /lms/grade-mapping-templates/:param/action @ src/services/lms/settings.service.js:245; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/grading-weight-profiles @ src/services/lms/settings.service.js:262; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/grading-weight-profiles/:param @ src/services/lms/settings.service.js:298; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /lms/grading-weight-profiles/:param/action @ src/services/lms/settings.service.js:310; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/grades/components @ src/services/lms/gradebook.service.js:497; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.config; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/grade-mapping-templates, /lms/grade-mapping-templates/:param, /lms/grade-mapping-templates/:param/action, /lms/grading-weight-profiles/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.lms (LMS Hub) P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Kuota Penyimpanan /admin/lms/storage src/views/LearningManagement/Admin/LMSStorageQuota.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kuota Penyimpanan pada /admin/lms/storage; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=search, item.draft_quota_mb; kolom=Siswa, Digunakan, Quota (MB), Usage, Aksi; filter=search; aturan field=search: type=search, item.draft_quota_mb: type=number Confirmed from code — loadQuotas, saveQuota Confirmed from code — /lms/storage/quotas @ src/services/lms/storage.service.js:4; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/storage/quotas/:param @ src/services/lms/storage.service.js:9; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.config; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/storage/quotas/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.lms (LMS Hub) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Template Kursus /admin/lms/templates src/views/LearningManagement/Admin/CourseTemplates.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Template Kursus pada /admin/lms/templates; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.q, filters.subject_id, editor.name, editor.subject_id, line.sequence, line.name, line.description, selectedCourseId, clearExistingDraft, Nama Template, Mata Pelajaran, Urutan, +3 lainnya; filter=filters.q, filters.subject_id, selectedCourseId, Course Space; sinyal validasi=required; aturan field=editor.name: required, editor.subject_id: required, line.sequence: type=number, selectedCourseId: required, clearExistingDraft: type=checkbox; Inferred from code — option/status/display-label candidates=Validasi Confirmed from code — loadTemplates, openCreateModal, openEditModal, openApplyModal, deleteTemplate, saveTemplate, addLine, removeLine, closeEditor, applyTemplateToCourse, closeApplyModal Confirmed from code — /v1/lms/subjects @ src/views/LearningManagement/Admin/CourseTemplates.vue:232 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_reference_api.py:365; Confirmed from code — /lms/courses @ src/views/LearningManagement/Admin/CourseTemplates.vue:247; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/course-templates/:param/apply @ src/services/lms/courseTemplate.service.js:27; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/course-templates @ src/services/lms/courseTemplate.service.js:9; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/course-templates/:param @ src/services/lms/courseTemplate.service.js:21; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.config; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Inferred from code — data prerequisite: referenced records dari field subject_id Inferred from code — memanggil endpoint berbentuk mutasi /lms/course-templates/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.lms (LMS Hub) P0 — aksi sensitif/workflow, aksi hapus Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Daftar Nilai /admin/marksheetregister src/views/ExamManagement/Admin/Exams/MarkSheetRegister.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Daftar Nilai pada /admin/marksheetregister; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; kolom=Dibuat Oleh, Lulus, Nama Register; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — createNewMarksheetRegister Confirmed from code — /api/v1/academic/exams/marksheet-registers @ src/services/admin/academics/examOperations.service.js:57 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/academic_exam_api.py:426 Confirmed from code — sesi autentik; capability academics.exam_marksheet.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/marksheetregisternew P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Proyek P5 /admin/p5 src/views/AdminViews/P5/P5ProjectList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Proyek P5 pada /admin/p5; tujuan diringkas dari 5 form, filter/pencarian, aksi interaktif Confirmed from code — form=5; field=activeTab, elementFilter.dimension_id, elementFilter.parent_id, rubrikDimensionId, dimensionForm.name, dimensionForm.code, dimensionForm.description, elementForm.dimension_id, elementForm.parent_id, elementForm.name, elementForm.description, rubrikForm.rating, +19 lainnya; filter=elementFilter.dimension_id, elementFilter.parent_id, form.start_date, form.end_date, form.course_id, form.batch_ids, filters.academic_year_id, filters.academic_term_id, +1 lainnya; sinyal validasi=required, custom validate; aturan field=dimensionForm.name: required, dimensionForm.code: required, elementForm.dimension_id: required, elementForm.name: required, rubrikForm.rating: required, rubrikForm.indicator: required, form.name: required, form.code: required, form.theme: required, form.academic_year_id: required, +10 lainnya; Inferred from code — option/status/display-label candidates=Tema, Dimensi, Elemen, Rubrik, 2 - Mulai Berkembang, 3 - Berkembang Sesuai Harapan, 4 - Sangat Berkembang, Error, Validasi, Sukses Confirmed from code — Manual, Dari Template, openDimensionForm, openElementForm, removeElement, openRubrikForm, removeRubrik, saveDimension, saveElement, saveRubrik, handleSubmit, set useTemplate, handleTemplateConfirm, toggleAllStudents, +11 lainnya Confirmed from code — /api/v1/report-card/p5/templates/:param/create-project @ src/services/reportCard/p5Template.service.js:28 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_p5_template_api.py:81; Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/report-card/p5/templates @ src/services/reportCard/p5Template.service.js:11 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_p5_template_api.py:16; Missing or unclear — /api/v1/report-card/p5/templates/:param @ src/services/reportCard/p5Template.service.js:19; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.project_p5.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field dimension_id, parent_id, academic_year_id, academic_term_id, course_id, batch_ids, +5 lainnya Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/p5/templates/:param/create-project; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.assessment (Kurikulum & Penilaian) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Kenaikan Kelas /admin/promotion src/views/AdminViews/Promotion/StudentPromotionList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kenaikan Kelas pada /admin/promotion; tujuan diringkas dari 3 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=action, decision, nextBatchId, retentionReason, form.homeroom_notes, form.decision, form.next_batch_id, form.retention_reason, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, +7 lainnya; kolom=Rata-rata, Rekomendasi, Keputusan; filter=nextBatchId, form.next_batch_id, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, generateForm.batch_id; sinyal validasi=required; aturan field=action: required, decision: required, nextBatchId: required, form.retention_reason: required, generateForm.academic_year_id: required, generateForm.batch_id: required; Inferred from code — option/status/display-label candidates=Sukses, Error, Perlu Review, Data Dilewati Confirmed from code — handleSubmit, set form.homeroom_recommendation, set showGenerateModal, openBulkModal, openDetailModal, openEditModal, handleGenerate Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.promotion.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field next_batch_id, academic_year_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/homeroom/promotion, /principal/academics/promotion, /vice-principal/curriculum/promotion P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Daftar Rapor /admin/report-card src/views/ReportCardManagement/Admin/AdminReportList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Daftar Rapor pada /admin/report-card; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.state, form.academic_year_id, form.academic_term_id, form.batch_id, Guru Pengajar (otomatis dari penugasan mengajar); filter=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.state, form.batch_id; sinyal validasi=required, min/max; aturan field=form.academic_year_id: required, form.academic_term_id: required, form.batch_id: required; Inferred from code — option/status/display-label candidates=Error, Sukses, Ranking Ditahan Confirmed from code — set showGenerateModal, set showRankingModal, handleSyncGroups, viewReport, confirmDelete, handleDelete, handleCompute, handleGenerate Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/reports @ src/services/reportCard/reportCard.service.js:36 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:299; Confirmed from code — /api/v1/report-card/sync-groups @ src/services/reportCard/reportCard.service.js:165 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:543; Confirmed from code — /api/v1/report-card/compute-ranking @ src/services/reportCard/reportCard.service.js:155 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:472; Confirmed from code — /api/v1/report-card/generate @ src/services/reportCard/reportCard.service.js:137 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:422; Confirmed from code — /api/v1/report-card/generate-preview @ src/services/reportCard/reportCard.service.js:146 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:645 Confirmed from code — sesi autentik; capability report_cards.list.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/sync-groups, /api/v1/report-card/compute-ranking, /api/v1/report-card/generate, /api/v1/report-card/generate-preview; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.report_card (E-Rapor) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Kurikulum Rapor /admin/report-card/curriculum src/views/ReportCardManagement/Admin/CurriculumList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kurikulum Rapor pada /admin/report-card/curriculum; tujuan diringkas dari 2 form, tabel/kolom data, aksi interaktif Confirmed from code — form=2; field=form.name, form.code, form.grade_scale_id, form.is_active, form.description, Nama Kurikulum, Contoh: Kurikulum Merdeka 2024, Contoh: KURMER24, Deskripsi tentang kurikulum ini..., Kurikulum Aktif; kolom=Komponen; sinyal validasi=required, custom validate; aturan field=form.name: required, form.code: required, form.is_active: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — handleSubmit, openAddModal, goToComponents, openDetailModal, openEditModal, openDeleteConfirm, closeDetailModal, handleDelete Confirmed from code — /api/v1/report-card/setup/options @ src/services/reportCard/reportCardSetup.service.js:4 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:16; Confirmed from code — /api/v1/report-card/setup/curriculums/:param/delete @ src/services/reportCard/reportCardSetup.service.js:59 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:160; Confirmed from code — /api/v1/report-card/setup/grading-policy-summary @ src/services/reportCard/reportCardSetup.service.js:69 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:198; Confirmed from code — /api/v1/report-card/setup/curriculums @ src/services/reportCard/reportCardSetup.service.js:26 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:75; Confirmed from code — /api/v1/report-card/setup/curriculums/save @ src/services/reportCard/reportCardSetup.service.js:47 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:116 Confirmed from code — sesi autentik; capability report_cards.curriculum.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field grade_scale_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/setup/curriculums/:param/delete, /api/v1/report-card/setup/curriculums/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.report_card (E-Rapor) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Skala Nilai /admin/report-card/grade-scale src/views/ReportCardManagement/Admin/GradeScaleList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Skala Nilai pada /admin/report-card/grade-scale; tujuan diringkas dari 2 form, tabel/kolom data, aksi interaktif Confirmed from code — form=2; field=form.name, form.scale_type, line.grade_label, line.min_score, line.max_score, line.description, Contoh: Skala 1-100, Tipe Skala, Min, 85, Max, 100, +2 lainnya; kolom=Rentang, Keterangan, Nama Skala, Jumlah Level, Dipakai Kurikulum; sinyal validasi=required, custom validate; aturan field=form.name: required, line.min_score: type=number, line.max_score: type=number; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — handleSubmit, addLine, removeLine, openAddModal, openDetailModal, openEditModal, openDeleteConfirm, closeDetailModal, handleDelete Confirmed from code — /api/v1/report-card/setup/grade-scales/:param/delete @ src/services/reportCard/reportCardSetup.service.js:143 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_scale_api.py:159; Missing or unclear — /api/v1/report-card/setup/grade-scales/:param @ src/services/reportCard/reportCardSetup.service.js:123; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/setup/grade-scales @ src/services/reportCard/reportCardSetup.service.js:114 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_scale_api.py:16; Confirmed from code — /api/v1/report-card/setup/grade-scales/save @ src/services/reportCard/reportCardSetup.service.js:133 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_scale_api.py:60 Confirmed from code — sesi autentik; capability report_cards.grade_scale.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/setup/grade-scales/:param/delete, /api/v1/report-card/setup/grade-scales/:param, /api/v1/report-card/setup/grade-scales, /api/v1/report-card/setup/grade-scales/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.report_card (E-Rapor) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Jurnal Mengajar /admin/reports/teaching-journal src/views/Reports/TeachingJournalReport.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Jurnal Mengajar pada /admin/reports/teaching-journal; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; filter=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; aturan field=filters.date_from: type=date, filters.date_to: type=date, filters.has_subject_daily: type=checkbox, filters.has_attachment: type=checkbox Confirmed from code — onSearch, onExport, onToday, onReset Confirmed from code — /lms/teaching-journals @ src/services/lms/teachingJournal.service.js:42; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/export.pdf @ src/services/lms/teachingJournal.service.js:61; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/filter-options @ src/services/lms/teachingJournal.service.js:85; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.teaching_journal.view; allowedRoles admin, school_admin, head_admin; feature flag scola_lms; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field semester_id, faculty_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/teaching-journal, /principal/academics/teaching-journal, /vice-principal/curriculum/teaching-journal P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Tujuan Pembelajaran (TP) /admin/tp src/views/AdminViews/LearningOutcome/LearningObjectiveList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tujuan Pembelajaran (TP) pada /admin/tp; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.subject_id, filters.learning_outcome_id, filters.search, formData.learning_outcome_id, formData.code, formData.name, formData.indicator_id, formData.academic_term_id, formData.week_number, formData.sequence, formData.duration_hours, formData.description, +19 lainnya; kolom=Kode TP, Nama TP, Capaian Pembelajaran, Mata Pelajaran, Indikator, Minggu ATP, Urutan; filter=filters.subject_id, filters.learning_outcome_id, filters.search; sinyal validasi=required, custom validate; aturan field=filters.search: type=search, formData.learning_outcome_id: required, formData.code: required, formData.name: required, formData.week_number: type=number, formData.sequence: type=number, formData.duration_hours: type=number, row.code: required, row.name: required, row.sequence: type=number, +2 lainnya; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openCreateModal, resetFilters, saveItem, addTpRow, removeTpRow, deleteItem Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.learning_outcome.view; allowedRoles admin, school_admin, head_admin; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field subject_id, learning_outcome_id, indicator_id, academic_term_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu academic.assessment (Kurikulum & Penilaian) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
academic Ruang Kelas /classrooms src/views/AdminViews/AcademicConfig/Classroom/ClassroomList.vue:1 Inferred from code — admin, school_admin, principal, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.classroom.view; izin sesi backend dapat berbeda Inferred from code — halaman Ruang Kelas pada /classrooms; tujuan diringkas dari 2 form, tabel/kolom data, aksi interaktif Confirmed from code — form=2; field=selectedItems, form.name, form.code, form.room_type, form.capacity, form.floor, form.facilities, form.active, Contoh: Ruang A1, Kode Ruang, Contoh: R-A1, Kapasitas, +6 lainnya; kolom=Nama Ruang, Kapasitas, Lantai; sinyal validasi=required, custom validate; aturan field=form.name: required, form.code: required, form.capacity: required, type=number, form.floor: type=number, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Akses Ditolak, Laboratorium, Perpustakaan, Aula, Kantor, Error, Error Validasi Confirmed from code — openCreateModal, openEditModal, confirmDelete, confirmBulkDelete, handleSubmit, handleDelete Confirmed from code — /api/v1/academic/classrooms/save @ src/services/admin/academics/classroom.service.js:10 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:259; Confirmed from code — /api/v1/academic/classrooms/delete @ src/services/admin/academics/classroom.service.js:18 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:279; Confirmed from code — /api/v1/academic/classrooms/dependency-count @ src/services/admin/academics/classroom.service.js:25 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:296; Confirmed from code — /api/v1/academic/classrooms/list @ src/services/admin/academics/classroom.service.js:5 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:220 Confirmed from code — sesi autentik; capability academics.classroom.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/classrooms/save, /api/v1/academic/classrooms/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.master (Struktur Akademik) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Jadwal Pelajaran /schedule src/views/AdminViews/AcademicConfig/Session/SessionList.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, admin_staff, head_admin, homeroom, alumni, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.schedule.view; izin sesi backend dapat berbeda Inferred from code — halaman Jadwal Pelajaran pada /schedule; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=form.course_id, form.start_date, form.end_date, form.hours_per_subject, searchQueries.batch, searchQueries.subject, searchQueries.faculty, searchQueries.classroom, searchQueries.scheduleStart, searchQueries.scheduleEnd, form.date, form.combined_across_batches, +19 lainnya; kolom=Tanggal & Waktu, Mata Pelajaran, Rombel, Ruangan; filter=form.course_id, form.start_date, form.end_date, searchQueries.batch, searchQueries.subject, searchQueries.faculty, searchQueries.classroom, searchQueries.scheduleStart, +6 lainnya; sinyal validasi=required, min/max; aturan field=form.start_date: type=date, form.end_date: type=date, form.hours_per_subject: min=1, max=10, type=number, searchQueries.batch: required, type=text, searchQueries.subject: required, type=text, searchQueries.faculty: required, type=text, searchQueries.classroom: type=text, searchQueries.scheduleStart: type=text, searchQueries.scheduleEnd: type=text, form.date: required, type=date, +6 lainnya; Inferred from code — option/status/display-label candidates=Akses Ditolak, Error, Success, (Kosongkan), Mata pelajaran, Validasi, Fetch Failed Confirmed from code — Tambah Sesi di, doGenerate, handleSubmit, selectBatch, selectSubject, selectFaculty, selectClassroom, selectScheduleStart, selectScheduleEnd, set selectedDay, removeLine, addLine, set showAutoGenerate, openCreateModal, +6 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/lesson-hours/list @ src/services/admin/academics/academicMaster.service.js:177 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1947 Confirmed from code — sesi autentik; capability academics.schedule.view; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field course_id, batch_ids, lesson_schedule_start_id, lesson_schedule_end_id, subject_id, faculty_id, +1 lainnya Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/academics/schedule, /vice-principal/curriculum/schedule P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Jam Pelajaran /schedule-slots src/views/AdminViews/ScheduleConfig/ScheduleList.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.schedule_slot.view; izin sesi backend dapat berbeda Inferred from code — halaman Jam Pelajaran pada /schedule-slots; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedProfileId, editData.code, editData.start_time, editData.end_time, showDeleteDialog, profileForm.name, profileForm.code, profileForm.education_level, profileForm.school_start_time, profileForm.school_end_time, profileForm.is_default, Kode jam (JP1, JP2), +7 lainnya; kolom=Profil, Kode Jam, Jam Mulai, Jam Selesai, Aksi; filter=profileForm.school_start_time, profileForm.school_end_time, Jenjang (opsional); sinyal validasi=required, min/max; aturan field=editData.start_time: type=time, editData.end_time: type=time, profileForm.name: required, maxlength=80, type=text, profileForm.code: maxlength=20, type=text, profileForm.school_start_time: required, type=time, profileForm.school_end_time: required, type=time, profileForm.is_default: type=checkbox; Inferred from code — option/status/display-label candidates=PAUD, SD/MI, SMP/MTs, SMA/MA/SMK/MAK, Akses Ditolak, Error, Tersinkron, Profil tersimpan, Berhasil Confirmed from code — fetchLessonSchedules, openProfileModal, syncDefaultProfile, handleAdd, saveEdit, cancelEdit, startEdit, requestDelete, handleDelete, saveProfile Confirmed from code — /api/v1/academic/lesson-hour-profiles/list @ src/services/admin/academics/academicMaster.service.js:198 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1754; Confirmed from code — /api/v1/academic/lesson-hour-profiles/ensure-default @ src/services/admin/academics/academicMaster.service.js:218 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1921; Confirmed from code — /api/v1/academic/lesson-hours/list @ src/services/admin/academics/academicMaster.service.js:177 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1947; Confirmed from code — /api/v1/academic/lesson-hours/save @ src/services/admin/academics/academicMaster.service.js:182 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1983; Confirmed from code — /api/v1/academic/lesson-hour-profiles/save @ src/services/admin/academics/academicMaster.service.js:203 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1787; Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/lesson-hours/delete @ src/services/admin/academics/academicMaster.service.js:191 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2029 Confirmed from code — sesi autentik; capability academics.schedule_slot.view; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/lesson-hours/save, /api/v1/academic/lesson-hour-profiles/save, /api/v1/academic/lesson-hours/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /schedule-slots/create P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Rombel /study-groups src/views/AdminViews/AcademicConfig/StudyGroup/StudyGroupList.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman Rombel pada /study-groups; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedAcademicYearFilter, selectedRombelTypeFilter, selectedStatusFilter, selectedItems, form.name, searchQueries.academicYear, form.code, searchQueries.course, searchQueries.classroom, searchQueries.faculty, form.lesson_hour_profile_id, form.rombel_type, +19 lainnya; filter=selectedAcademicYearFilter, selectedRombelTypeFilter, selectedStatusFilter, searchQueries.academicYear, searchQueries.course, searchQueries.classroom, searchQueries.faculty, form.start_date, +2 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.name: required, searchQueries.academicYear: type=text, form.code: required, searchQueries.course: type=text, searchQueries.classroom: type=text, searchQueries.faculty: type=text, form.start_date: type=date, form.end_date: type=date, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Akses Ditolak, PAUD, SD/MI, SMP/MTs, SMA/MA/SMK/MAK, SDLB, SMPLB, SMALB, Paket A, Paket B, +11 lainnya Confirmed from code — Generate Kode, openCreateModal, set showInfo, handleFilterChange, clearFilters, goToDetail, openParallelWizard, openEditModal, confirmDelete, confirmBulkDeactivate, confirmBulkActivate, confirmBulkDelete, handleSubmit, selectAcademicYear, +7 lainnya Confirmed from code — /api/v1/academic/study-groups/status @ src/services/admin/academics/academicMaster.service.js:112 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:749; Confirmed from code — /api/v1/academic/lesson-hour-profiles/list @ src/services/admin/academics/academicMaster.service.js:198 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1754; Confirmed from code — /api/v1/academic/study-groups/list @ src/services/admin/academics/academicMaster.service.js:92 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:550; Confirmed from code — /api/v1/academic/study-groups/delete @ src/services/admin/academics/academicMaster.service.js:105 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:733; Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/study-groups/save @ src/services/admin/academics/academicMaster.service.js:97 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:619; Missing or unclear — /api/v1/users/:param @ src/services/faculty/facultyLink.service.js:96; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/users/:param/roles @ src/services/faculty/facultyLink.service.js:121 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:821; Confirmed from code — /api/v1/settings/company/profile @ src/services/settings/companySettings.service.js:5 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:196 Confirmed from code — sesi autentik; capability academics.class_group.view; Inferred from code — data prerequisite: referenced records dari field lesson_hour_profile_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/study-groups/delete, /api/v1/academic/study-groups/save, /api/v1/users/:param/roles; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /study-groups/:id P0 — komponen >=1400 baris, aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Mata Pelajaran /subjects src/views/AdminViews/AcademicConfig/Subject/SubjectList.vue:1 Inferred from code — admin, school_admin, principal, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.subject.view; izin sesi backend dapat berbeda Inferred from code — halaman Mata Pelajaran pada /subjects; tujuan diringkas dari 3 form, tabel/kolom data, aksi interaktif Confirmed from code — form=3; field=selectedSubjects, form.name, form.code, form.type, form.subject_type, form.grade_weightage, Nama Mata Pelajaran, Contoh: Matematika, Kode Mata Pelajaran, Contoh: MAT, 0.0, Tipe *, +1 lainnya; kolom=Nama Mata Pelajaran, Jenis; sinyal validasi=required, min/max, custom validate; aturan field=form.name: required, form.code: required, form.grade_weightage: min=0, max=100, type=number; Inferred from code — option/status/display-label candidates=Akses Ditolak, Error, Sukses Confirmed from code — openAddModal, openDetailModal, openEditModal, confirmDelete, handleSubmit, closeDetailModal, handleDelete Confirmed from code — /api/v1/academic/subjects/save @ src/services/admin/academics/academicMaster.service.js:70 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:399; Confirmed from code — /api/v1/academic/subjects/list @ src/services/admin/academics/academicMaster.service.js:65 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:385; Confirmed from code — /api/v1/academic/subjects/delete @ src/services/admin/academics/academicMaster.service.js:78 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:417; Confirmed from code — /api/v1/academic/subjects/dependency-count @ src/services/admin/academics/academicMaster.service.js:85 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:434 Confirmed from code — sesi autentik; capability academics.subject.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/subjects/save, /api/v1/academic/subjects/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /vice-principal/curriculum/subjects P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
academic Penugasan Mengajar /teacher-assignments src/views/AdminViews/TeacherDatabase/TeacherAssignmentPage.vue:1 Inferred from code — admin, school_admin, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.class_group.view; izin sesi backend dapat berbeda Inferred from code — halaman Penugasan Mengajar pada /teacher-assignments; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=homeroomSearch, subjectFilters.faculty_id, subjectFilters.batch_id, subjectFilters.subject_id, homeroomForm.faculty_id, subjectForm.academic_year_id, subjectForm.faculty_id, subjectForm.subject_id, subjectForm.batch_id, subjectForm.term_id, Mata Pelajaran, Semester; filter=homeroomSearch, subjectFilters.faculty_id, subjectFilters.batch_id, subjectFilters.subject_id, subjectForm.batch_id; sinyal validasi=required; aturan field=homeroomSearch: type=search, homeroomForm.faculty_id: required, subjectForm.academic_year_id: required, subjectForm.faculty_id: required, subjectForm.subject_id: required, subjectForm.batch_id: required, subjectForm.term_id: required Confirmed from code — openCreateModal, set activeTab, set homeroomSearch, editHomeroomAssignment, confirmRemoveHomeroom, resetSubjectFilters, editSubjectAssignment, confirmDeleteSubject, saveHomeroomAssignment, saveSubjectAssignment, doRemoveHomeroom, doDeleteSubject Confirmed from code — /teaching-assignments @ src/services/lms/teachingAssignment.service.js:63; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /teaching-assignments/:param @ src/services/lms/teachingAssignment.service.js:79; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/academic/study-groups/list @ src/services/admin/academics/academicMaster.service.js:92 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:550; Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/study-groups/save @ src/services/admin/academics/academicMaster.service.js:97 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:619 Confirmed from code — sesi autentik; capability academics.class_group.view; Inferred from code — data prerequisite: referenced records dari field faculty_id, batch_id, subject_id, academic_year_id, term_id Inferred from code — memanggil endpoint berbentuk mutasi /teaching-assignments/:param, /api/v1/academic/study-groups/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu academic.schedule (Jadwal & Kelas) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

admin-dashboard (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
admin-dashboard Dashboard /admin/dashboard src/views/AdminViews/AdminDashboard.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /admin/dashboard; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedSort Confirmed from code — router.push Confirmed from code — /api/inventory/low-stock @ src/views/AdminViews/AdminDashboard.vue:317 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_api.py:276 Confirmed from code — sesi autentik; capability dashboard.operations.view; allowedRoles admin, school_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /students, /admin/extracurriculars/pending, /inventory/stock P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-dashboard Slip Gaji /hr/payslip src/views/AdminViews/HR/payroll/PayslipList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Slip Gaji pada /hr/payslip; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeStatus, searchQuery, filterMonth, selectedPayslips, currentPage; filter=activeStatus, searchQuery, filterMonth; aturan field=searchQuery: type=search, filterMonth: type=month, selectedPayslips: type=checkbox; Inferred from code — option/status/display-label candidates=Error Confirmed from code — batchCompute, batchConfirm, router.push, goToDetail, computePayslip, confirmPayslip, printPayslip Confirmed from code — /api/v1/payroll/admin/list @ src/services/admin/payslipAdmin.service.js:11 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:193; Confirmed from code — /api/v1/payroll/admin/state-counts @ src/services/admin/payslipAdmin.service.js:23 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:203; Confirmed from code — /api/v1/payroll/admin/compute @ src/services/admin/payslipAdmin.service.js:97 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:366; Confirmed from code — /api/v1/payroll/admin/confirm @ src/services/admin/payslipAdmin.service.js:104 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:391 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles admin, school_admin, head_admin; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payroll/admin/compute, /api/v1/payroll/admin/confirm; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/payslip-batch, /hr/payslip/create P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

admin-dashboard / teacher-portal / principal-exec / +13 lainnya (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
admin-dashboard / teacher-portal / principal-exec / +13 lainnya Presensi Pribadi / Absensi Saya /employee/self-attendance src/views/AttendanceManagement/Staff/SelfAttendance.vue:1 Inferred from code — admin, school_admin, teacher, principal, admin_staff, counselor, librarian, lab_technician, inventory_officer, foundation, foundation_hr_admin, foundation_chairman, head_admin, treasurer, homeroom, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance; diturunkan dari pola capability frontend untuk hr.attendance.view; izin sesi backend dapat berbeda Inferred from code — halaman Presensi Pribadi / Absensi Saya pada /employee/self-attendance; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; sinyal validasi=required, min/max, custom validate; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openCheckinModal, retryLiveness, toggleCamera, captureFace, retryAutoPunch, resetCapture, closeCheckinModal, registerFace, submitAttendance Confirmed from code — /api/v1/attendance/employee/current @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:778 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_reports_api.py:300; Confirmed from code — /api/v1/attendance/validate-location @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:947 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:130; Confirmed from code — /api/v1/attendance/face/register @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:1283 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:207; Confirmed from code — /api/v1/attendance/check-out @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:1508 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:407; Confirmed from code — /api/v1/attendance/check-in @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:1542 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:352; Confirmed from code — /api/v1/attendance/self/policy @ src/services/hr/hrAttendanceSelf.service.js:8 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:570; Confirmed from code — /api/v1/attendance/self/history @ src/services/hr/hrAttendanceSelf.service.js:13 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:594 Confirmed from code — sesi autentik; capability hr.attendance.view; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; employee/company dan contract/periode yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/face/register; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /counseling/attendance-history P0 — komponen >=1400 baris, aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

admin-dashboard / teacher-portal / principal-exec / +14 lainnya (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
admin-dashboard / teacher-portal / principal-exec / +14 lainnya Cuti & Izin / Cuti Saya / Cuti & Izin Saya /employee/timeoff src/views/FacultyViews/TimeOff/TimeOffList.vue:1 Inferred from code — admin, school_admin, teacher, principal, admin_staff, counselor, librarian, lab_technician, inventory_officer, foundation, foundation_hr_admin, foundation_chairman, head_admin, treasurer, homeroom, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance; diturunkan dari pola capability frontend untuk hr.leave_personal.view; izin sesi backend dapat berbeda Inferred from code — halaman Cuti & Izin / Cuti Saya / Cuti & Izin Saya pada /employee/timeoff; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, form.holiday_status_id, form.request_date_from, form.request_date_to, form.private_name; filter=searchQuery, form.holiday_status_id, form.request_date_from, form.request_date_to; sinyal validasi=required, min/max; aturan field=searchQuery: type=text, form.holiday_status_id: required, form.request_date_from: required, type=date, form.request_date_to: required, type=date, form.private_name: maxlength=500, field: type=file Confirmed from code — set showCreateModal, set selectedStatus, resetFilters, loadData, confirmCancel, handleFileUpload, removeUploadedFile, closeCreateModal, handleSubmit, handleCancel Confirmed from code — /api/v1/attendance/employee/current @ src/views/FacultyViews/TimeOff/TimeOffList.vue:479 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_reports_api.py:300; Confirmed from code — /web/session/get_session_info @ src/views/FacultyViews/TimeOff/TimeOffList.vue:491; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/hr/self/leaves/list @ src/services/hr/employeeLeaveSelf.service.js:4 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_self_api.py:34; Confirmed from code — /api/v1/hr/self/leave-types @ src/services/hr/employeeLeaveSelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_self_api.py:49; Confirmed from code — /api/v1/hr/self/leaves/create @ src/services/hr/employeeLeaveSelf.service.js:23 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_self_api.py:59; Confirmed from code — /api/v1/hr/self/leaves/cancel @ src/services/hr/employeeLeaveSelf.service.js:37 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_self_api.py:93 Confirmed from code — sesi autentik; capability hr.leave_personal.view; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field holiday_status_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/hr/self/leaves/create, /api/v1/hr/self/leaves/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admin_dashboard.hr_personal (Personalia), teacher.hr_personal (Personalia), principal.hr_personal (Personalia), counselor.hr_personal (Personalia), librarian.attendance (Personalia), +12 lainnya P1 — mutasi data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

admin-staff (13 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
admin-staff Jadwal Pelajaran /admin-staff/academics/schedule src/views/AdminViews/AcademicConfig/Session/SessionList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Jadwal Pelajaran pada /admin-staff/academics/schedule; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=form.course_id, form.start_date, form.end_date, form.hours_per_subject, searchQueries.batch, searchQueries.subject, searchQueries.faculty, searchQueries.classroom, searchQueries.scheduleStart, searchQueries.scheduleEnd, form.date, form.combined_across_batches, +19 lainnya; kolom=Tanggal & Waktu, Mata Pelajaran, Rombel, Ruangan; filter=form.course_id, form.start_date, form.end_date, searchQueries.batch, searchQueries.subject, searchQueries.faculty, searchQueries.classroom, searchQueries.scheduleStart, +6 lainnya; sinyal validasi=required, min/max; aturan field=form.start_date: type=date, form.end_date: type=date, form.hours_per_subject: min=1, max=10, type=number, searchQueries.batch: required, type=text, searchQueries.subject: required, type=text, searchQueries.faculty: required, type=text, searchQueries.classroom: type=text, searchQueries.scheduleStart: type=text, searchQueries.scheduleEnd: type=text, form.date: required, type=date, +6 lainnya; Inferred from code — option/status/display-label candidates=Akses Ditolak, Error, Success, (Kosongkan), Mata pelajaran, Validasi, Fetch Failed Confirmed from code — Tambah Sesi di, doGenerate, handleSubmit, selectBatch, selectSubject, selectFaculty, selectClassroom, selectScheduleStart, selectScheduleEnd, set selectedDay, removeLine, addLine, set showAutoGenerate, openCreateModal, +6 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/lesson-hours/list @ src/services/admin/academics/academicMaster.service.js:177 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1947 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field course_id, batch_ids, lesson_schedule_start_id, lesson_schedule_end_id, subject_id, faculty_id, +1 lainnya Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /schedule, /vice-principal/curriculum/schedule P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff CBT SPMB /admin-staff/admissions/cbt/exams src/views/ExamManagement/Faculty/Exam/CBTExamList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman CBT SPMB pada /admin-staff/admissions/cbt/exams; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.state, newExam.name, newExam.exam_context, newExam.exam_type_id, newExam.question_set_id, Try Out Nasional 2026, Koleksi Soal, Context Ujian; filter=filters.search, filters.state; sinyal validasi=required, min/max; aturan field=newExam.name: required, newExam.exam_context: required, newExam.exam_type_id: required, newExam.question_set_id: required; Inferred from code — option/status/display-label candidates=Draft, Publikasi, Independent — Try out, olimpiade, tes publik, Admission — Tes SPMB/penerimaan siswa baru, Error, Sukses Confirmed from code — openCreateModal, goToLearningExams, goToQuestionBank, handleSearch, goToDetail, toggleTokenVisibility, openPreviewModal, handleDelete, goToPage, set showCreateModal, handleCreate, togglePreviewTokenVisibility, set showPreviewModal, handleConfirmDialog Confirmed from code — /v1/academic/cbt/exams/list @ src/services/cbt/examService.js:17 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:16; Confirmed from code — /v1/academic/cbt/exams/save @ src/services/cbt/examService.js:45 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:16; Confirmed from code — /v1/academic/cbt/exams/options/exam-types @ src/services/cbt/examService.js:305 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:31; Confirmed from code — /v1/academic/cbt/exams/:param/delete @ src/services/cbt/examService.js:73 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:252; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability admissions.cbt_author.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan; referenced records dari field exam_type_id, question_set_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/save, /v1/academic/cbt/exams/:param/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments, /faculty/question-bank, /admin/spmb/cbt/exams, /faculty/cbt/exams P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Proctor CBT /admin-staff/admissions/cbt/proctor src/views/ExamManagement/Faculty/Proctor/ProctorDashboard.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Proctor CBT pada /admin-staff/admissions/cbt/proctor; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedExamId, extendTimeModal.minutes, extendTimeModal.reason, forceSubmitDialog.reason, resetDialog.reason, resetDialog.fullReset, Tambahan Waktu (menit), 10, Alasan (wajib), Masukkan alasan penambahan waktu..., Masukkan alasan...; kolom=Peserta, Sesi, Progress, Sisa Waktu, Flags; sinyal validasi=required; aturan field=extendTimeModal.minutes: type=number, extendTimeModal.reason: required; Inferred from code — option/status/display-label candidates=Error, Tambah Waktu, CBT, Proctor Console Confirmed from code — router.back, handleExamChange, loadExamStatus, showFlagsModal, set extendTimeModal.show, handleExtendTime, handleForceSubmit, handleResetAttempt Confirmed from code — /v1/academic/cbt/proctor/exams @ src/services/cbt/proctorService.js:11 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:13; Confirmed from code — /v1/academic/cbt/proctor/exams/:param/status @ src/services/cbt/proctorService.js:30 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:50; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/extend-time @ src/services/cbt/proctorService.js:72 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:11; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/force-submit @ src/services/cbt/proctorService.js:92 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:40; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/reset @ src/services/cbt/proctorService.js:113 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:65 Confirmed from code — sesi autentik; capability admissions.cbt_proctor.manage; allowedRoles admin, school_admin, admin_staff; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/cbt/proctor, /admin/spmb/proctor/:scheduleId?, /faculty/cbt/proctor P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Keluhan /admin-staff/admissions/complaints src/views/AdmissionManagement/ComplaintList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Keluhan pada /admin-staff/admissions/complaints; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.state, activeTab, responseText, resolutionNotesText, Tulis tanggapan..., Tulis catatan penyelesaian (opsional)..., Pendaftaran, Gelombang, Nama Pelapor, No. HP Pelapor, Email Pelapor, Subjek, +6 lainnya; kolom=No. Pengaduan, Pelapor, Subjek; filter=filters.state; Inferred from code — option/status/display-label candidates=Uraian Pengaduan, Tanggapan, Diajukan, Diproses, Penilaian, Jarak Domisili / Zonasi, Kuota, Teknis Confirmed from code — openDetail, processComplaint, resolveComplaint, rejectComplaint, toggleAttachmentPreview, downloadAttachment, set showDetailModal, handleProcess, handleReject, handleResolve Confirmed from code — /api/SPMB/complaints/:param/detail @ src/services/spmb/spmbAdminComplaints.service.js:63 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_complaints_ranking_api.py:795; Confirmed from code — /api/SPMB/complaints/list @ src/services/spmb/spmbAdminComplaints.service.js:55 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_complaints_ranking_api.py:776 Confirmed from code — sesi autentik; capability admissions.complaints.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/complaints P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Dashboard SPMB /admin-staff/admissions/dashboard src/views/AdmissionManagement/AdmissionDashboard.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Dashboard SPMB pada /admin-staff/admissions/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedRegister; kolom=Gelombang, Menunggu, Publikasi Hasil; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Status diperbarui, Buka Gelombang, Konfigurasi Jalur, Menunggu Verifikasi, Error Confirmed from code — fetchDashboardData, handleKpiClick, router.push, quickTransition, viewDetail Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/dashboard/stats @ src/services/spmb/spmbAdminAdmissions.service.js:113 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1121; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/periode, /admin/spmb/dashboard, /principal/admissions/dashboard, /vice-principal/public-relations/admissions/dashboard, /vice-principal/student-affairs/admissions/dashboard P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Periode /admin-staff/admissions/periods src/views/AdmissionManagement/AdmissionRegisterList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Periode pada /admin-staff/admissions/periods; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedYear, selectedTerm, selectedStatus, showModal, form.name, form.education_level_id, form.academic_years_id, form.academic_term_id, form.course_id, form.start_date, form.end_date, form.min_count, +19 lainnya; filter=selectedStatus, form.course_id, form.start_date, form.end_date, form.school_latitude, form.school_longitude; sinyal validasi=required, min/max; aturan field=form.name: required, type=text, form.education_level_id: required, form.academic_years_id: required, form.academic_term_id: required, form.start_date: required, form.end_date: required, form.min_count: min=0, type=number, form.max_count: required, type=number, form.minimum_age_criteria: type=number, quota.quota: type=number, +9 lainnya; Inferred from code — option/status/display-label candidates=Pengumpulan Pendaftaran, Proses Seleksi, Persiapan, Pendaftaran, Seleksi, Buka Pendaftaran (Portal), Mulai Proses Seleksi, Selesaikan Periode, Update Status, Biaya Formulir, +12 lainnya Confirmed from code — See all, + Tambah Jalur, tambahPendaftaran, openDeleteDialog, editRegister, toggleStatusMenu, changeStatus, goToApplications, confirmDelete, confirmStatusChange, submitForm, addPathwayQuota, removePathwayQuota, addFeeRule, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/delete @ src/services/spmb/spmbAdminRegisters.service.js:239 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1002; Confirmed from code — /api/SPMB/registers/options @ src/services/spmb/spmbAdminRegisters.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:912; Confirmed from code — /api/SPMB/registers/list @ src/services/spmb/spmbAdminRegisters.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:922; Confirmed from code — /api/SPMB/registers/:param/transition @ src/services/spmb/spmbAdminRegisters.service.js:243 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1020; Confirmed from code — /api/SPMB/registers/create @ src/services/spmb/spmbAdminRegisters.service.js:226 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:964; Confirmed from code — /api/SPMB/registers/:param/update @ src/services/spmb/spmbAdminRegisters.service.js:232 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:981 Confirmed from code — sesi autentik; capability admissions.period.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field education_level_id, academic_years_id, academic_term_id, course_id, pathway_id, fee_template_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/registers/:param/delete, /api/SPMB/registers/create, /api/SPMB/registers/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/spmb/periode, /principal/admissions/periods, /vice-principal/public-relations/admissions/periods, /vice-principal/student-affairs/admissions/periods P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Tes Masuk /admin-staff/admissions/test src/views/AdmissionManagement/AdmissionTest.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Tes Masuk pada /admin-staff/admissions/test; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Peserta Tes, Hasil Tes Confirmed from code — goTo Confirmed from code — /api/v1/admissions/config/test-counts @ src/services/admissions/admissionConfig.service.js:17 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:221 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/test P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Dashboard /admin-staff/dashboard src/views/AdminViews/StaffTUDashboard.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /admin-staff/dashboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.push, item.action Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, src/services/dashboard/index.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability dashboard.operations.view; allowedRoles admin, school_admin, admin_staff; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin-staff/students/list, /admin-staff/parents/list, /admin-staff/students/attendance, /admin-staff/academics/schedule, /admin-staff/admissions/dashboard, /admin-staff/admissions/complaints, /admin-staff/finance/billing, /admin-staff/finance/enrollment P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Tagihan /admin-staff/finance/billing src/views/AdminViews/AcademicConfig/Fees/Schedule/FeeScheduleList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Tagihan pada /admin-staff/finance/billing; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.state, filters.period, filters.template_id, generateForm.template_id, generateForm.month, generateForm.year, generateForm.skip_existing, generateForm.auto_invoice, generateForm.filter_type, generateForm.course_id, generateForm.batch_id, generateForm.student_ids, +1 lainnya; filter=filters.state, filters.period, filters.template_id, generateForm.filter_type, generateForm.course_id, generateForm.batch_id, filter_type; sinyal validasi=required; aturan field=generateForm.template_id: required, generateForm.month: required, generateForm.year: required; Inferred from code — option/status/display-label candidates=Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, +4 lainnya Confirmed from code — openGenerateModal, set showMobileFilters, resetFilters, openDetailModal, markAsGenerated, createInvoice, viewInvoice, resetToDraft, confirmDelete, closeDetailModal, handleGenerate, closeGenerateModal, deleteSchedule Confirmed from code — /api/v1/finance/fee-schedules/stats @ src/services/finance/feeSchedule.service.js:9 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:296; Confirmed from code — /api/v1/finance/fee-schedules/generate @ src/services/finance/feeSchedule.service.js:19 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:346; Confirmed from code — /api/v1/finance/fee-schedules/list @ src/services/finance/feeSchedule.service.js:4 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:274; Confirmed from code — /api/v1/finance/fee-templates/options @ src/services/finance/feeSchedule.service.js:32 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:426; Confirmed from code — /api/v1/finance/fee-schedules/generate-preview @ src/services/finance/feeSchedule.service.js:14 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:325; Confirmed from code — /api/v1/finance/fee-options @ src/services/finance/feeSchedule.service.js:37 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:488; Confirmed from code — /api/v1/finance/fee-schedule/create-invoice @ src/services/finance/parentBilling.service.js:183 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/bendahara_dashboard_api.py:191 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles admin, school_admin, admin_staff; feature flag scola_fees; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field template_id, course_id, batch_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/finance/fee-schedules/generate, /api/v1/finance/fee-schedules/generate-preview, /api/v1/finance/fee-schedule/create-invoice; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/customer-invoices/:id, /payment/schedule, /vice-principal/finance/tuition P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Biaya Siswa /admin-staff/finance/enrollment src/views/AdminViews/AcademicConfig/Fees/Enrollment/FeeEnrollmentList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Biaya Siswa pada /admin-staff/finance/enrollment; tujuan diringkas dari 7 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=7; field=line.amount, line.due_date, line.note, filters.state, filters.template_id, filters.payment_type, filters.has_scholarship, generateFeeForm.month, generateFeeForm.year, bulkFormData, formData, Mode Cicilan, +18 lainnya; kolom=Term, Periode, Diskon, Jatuh Tempo, Invoice, Status Bayar, Konfigurasi Bayar, Beasiswa, Total Bayar; filter=line.due_date, filters.state, filters.template_id, filters.payment_type, filters.has_scholarship; sinyal validasi=required, min/max; aturan field=field: required, field: type=radio, Jumlah Term: min=2, max=12, type=number, 1: min=1, type=number, Tanggal Jatuh Tempo Pertama: type=date, field: type=checkbox, Diskon Tambahan (%): min=0, max=100, type=number, Template Biaya: required, Jumlah Term: type=number, 1: type=number, +6 lainnya; Inferred from code — option/status/display-label candidates=Gunakan Preset, Auto Split, Sama Rata, Term Pertama Lebih Besar (40%), Term Terakhir Lebih Kecil (15%), Hari, Fully Custom, Term Pertama Lebih Besar, Term Terakhir Lebih Kecil, Draft, +21 lainnya Confirmed from code — updateForm, handleScholarshipToggle, openBulkModal, openAddModal, resetFilters, openDetailModal, submitApproval, approveEnrollment, openGenerateFeeModal, openEditModal, resetToDraft, openDeleteModal, handleModalSubmit, handleDelete, +4 lainnya Confirmed from code — /api/v1/finance/fee-enrollments/list @ src/services/admin/feeEnrollment.service.js:15 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/fee_enrollment_api.py:116 Confirmed from code — sesi autentik; capability finance.fees.view; allowedRoles admin, school_admin, admin_staff; feature flag scola_fees; Inferred from code — data prerequisite: referenced records dari field template_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /payment/schedule, /payment/enrollment P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Data Orang Tua /admin-staff/parents/list src/views/AdminViews/ParentDatabase/ParentList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Data Orang Tua pada /admin-staff/parents/list; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=activeTab, pageSizeOption, selectedParents, searchQueryRelasi, editRelation.partner_id, editRelation.relationship_id, searchStudentEdit, editRelation.student_ids; filter=searchQueryRelasi, searchStudentEdit; sinyal validasi=required, min/max; aturan field=editRelation.partner_id: required, editRelation.student_ids: type=checkbox; Inferred from code — option/status/display-label candidates=10, 25, 50, 100 Confirmed from code — generateParentAccounts, resetParentPasswords, handleDelete, reactivateSelectedParents, openCreateRelation, goToStudentImport, goToAddStudent, exportParentsXlsx, set accountGenerationSummary, handlePageSizeChange, handleViewPartner, handleDeletePartner, reactivatePartner, handleViewRelation, +3 lainnya Confirmed from code — /api/v1/admin-staff/parents/list @ src/services/adminStaff/studentScope.service.js:21 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_staff_api.py:18; Confirmed from code — /api/v1/admin/parents/options @ src/services/admin/parent.service.js:14 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:516; Confirmed from code — /api/v1/admin/parents/list @ src/services/admin/parent.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:292; Confirmed from code — /api/v1/admin/parents/relation/save @ src/services/admin/parent.service.js:44 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:435; Confirmed from code — /api/v1/admin/parents/set-active @ src/services/admin/parent.service.js:35 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:407; Confirmed from code — /api/v1/admin/parents/relation/delete @ src/services/admin/parent.service.js:54 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:492 Confirmed from code — sesi autentik; capability parents.list.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: referenced records dari field partner_id, relationship_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/parents/relation/save, /api/v1/admin/parents/relation/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students/import, /students/create, /parents/:id, /parents P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Kehadiran Siswa /admin-staff/students/attendance src/views/AttendanceManagement/Admin/AttendanceHome.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Kehadiran Siswa pada /admin-staff/students/attendance; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateTo Confirmed from code — /api/v1/attendance/student/settings @ src/services/attendance/studentAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:8 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, admin_staff; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/home P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admin-staff Data Siswa /admin-staff/students/list src/views/AdminViews/StudentDatabase/StudentList.vue:1 Confirmed from code — admin, school_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Data Siswa pada /admin-staff/students/list; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, pageSizeOption, selectedStudents; kolom=NISN, Akun, Poin; Inferred from code — option/status/display-label candidates=Arsip, 10, 25, 50, 100 Confirmed from code — navigateToTambahSiswa, navigateToUploadPage, generateStudentAccounts, deleteSelected, reactivateSelected, set accountGenerationSummary, setClassFilter, handlePageSizeChange, navigateToDetail, deleteStudent, reactivateStudent Confirmed from code — /api/v1/admin/accounts/generate-students @ src/views/AdminViews/StudentDatabase/StudentList.vue:508 -> ../custom_addons_scola/gcgscola/scola_core/controllers/account_generation_api.py:44; Confirmed from code — /api/v1/admin-staff/students/list @ src/services/adminStaff/studentScope.service.js:10 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_staff_api.py:8; Confirmed from code — /api/v1/admin/students/classes @ src/services/admin/student.service.js:15 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:308; Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/admin/students/set-active @ src/services/admin/student.service.js:34 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:387 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles admin, school_admin, admin_staff; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/accounts/generate-students; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students/create, /students/:id, /students/import, /principal/students/list, /students, /vice-principal/student-affairs/students P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

admin-staff / attendance (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
admin-staff / attendance Penjemput Siswa /attendance/pickup-persons src/views/AttendanceManagement/Admin/PickupRegistry.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman Penjemput Siswa pada /attendance/pickup-persons; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedBatchId, selectedStudentId, form.name, form.relation, form.phone, form.identityNo, form.note; filter=selectedBatchId; aturan field=form.name: type=text, form.relation: type=text, form.phone: type=tel, form.identityNo: type=text Confirmed from code — loadRoster, loadPickupPersons, editPerson, archivePerson, submitForm, resetForm Confirmed from code — /api/v1/attendance/pickup-persons/archive @ src/services/attendance/studentAttendance.service.js:268 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:121; Confirmed from code — /api/v1/attendance/daily/roster @ src/services/attendance/studentAttendance.service.js:100 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:16; Confirmed from code — /api/v1/attendance/pickup-persons/list @ src/services/attendance/studentAttendance.service.js:236 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:113; Confirmed from code — /api/v1/attendance/pickup-persons/save @ src/services/attendance/studentAttendance.service.js:254 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:117 Confirmed from code — sesi autentik; capability students.attendance.edit; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/pickup-persons/archive, /api/v1/attendance/pickup-persons/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admin_staff.students (Siswa & Orang Tua), attendance.students (Absensi Siswa) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

admissions (11 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
admissions Tipe Dokumen /admin/spmb-config/document-types src/views/AdmissionManagement/Config/DocumentTypeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tipe Dokumen pada /admin/spmb-config/document-types; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=form.name, form.code, form.max_file_size, form.allowed_extensions, form.is_mandatory_default, form.description, Nama Dokumen, e.g. Kartu Keluarga, e.g. kk, Max File Size (MB), Ekstensi, pdf,jpg,png, +3 lainnya; kolom=Nama Dokumen, Max Size, Ekstensi; sinyal validasi=required; aturan field=form.name: required, form.code: required, form.max_file_size: type=number, form.is_mandatory_default: type=checkbox Confirmed from code — openModal, deleteRecord, saveRecord Confirmed from code — /api/v1/admissions/config/document-types/delete @ src/services/admissions/admissionConfig.service.js:73 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:347; Confirmed from code — /api/v1/admissions/config/document-types/list @ src/services/admissions/admissionConfig.service.js:52 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:302; Confirmed from code — /api/v1/admissions/config/document-types/save @ src/services/admissions/admissionConfig.service.js:65 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:327 Confirmed from code — sesi autentik; capability admissions.document_type.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admissions/config/document-types/delete, /api/v1/admissions/config/document-types/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admissions.config (Konfigurasi) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Jenjang Pendidikan /admin/spmb-config/education-levels src/views/AdmissionManagement/Config/EducationLevelList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Jenjang Pendidikan pada /admin/spmb-config/education-levels; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, form.name, form.code, form.sequence, form.min_age, form.max_age, form.exception_min_age, form.age_reference_date, form.rapor_semester_count, form.rapor_weight, form.achievement_weight, form.notes, +13 lainnya; kolom=Nama Jenjang, Usia Min, Usia Max; filter=form.age_reference_date, Nama Jenjang; sinyal validasi=required; aturan field=form.name: required, form.code: required, form.sequence: type=number, form.min_age: required, type=number, form.max_age: type=number, form.exception_min_age: type=number, form.rapor_semester_count: type=number, form.rapor_weight: type=number, form.achievement_weight: type=number, form.active: type=checkbox, +2 lainnya; Inferred from code — option/status/display-label candidates=Info Dasar, Jalur & Kuota, 1 Juli Tahun Berjalan, Tanggal Pendaftaran, Error Confirmed from code — openModal, deleteRecord, saveRecord, addPathwayQuota, removePathwayQuota, handleConfirmDelete Confirmed from code — /api/v1/admissions/config/pathways/options @ src/services/admissions/admissionConfig.service.js:30 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:260; Confirmed from code — /api/v1/admissions/config/education-levels/list @ src/services/admissions/admissionConfig.service.js:81 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:359; Confirmed from code — /api/v1/admissions/config/document-types/options @ src/services/admissions/admissionConfig.service.js:59 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:319; Confirmed from code — /api/v1/admissions/config/education-levels/delete @ src/services/admissions/admissionConfig.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:419; Confirmed from code — /api/v1/admissions/config/education-levels/detail @ src/services/admissions/admissionConfig.service.js:88 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:377; Confirmed from code — /api/v1/admissions/config/education-levels/save @ src/services/admissions/admissionConfig.service.js:99 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:393 Confirmed from code — sesi autentik; capability admissions.education_level.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field pathway_id, required_document_type_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admissions/config/education-levels/delete, /api/v1/admissions/config/education-levels/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admissions.config (Konfigurasi) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Hubungan Ortu /admin/spmb-config/parent-relationships src/views/AdmissionManagement/Config/ParentRelationshipList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Hubungan Ortu pada /admin/spmb-config/parent-relationships; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=form.name, confirmDialog.show, Nama Hubungan, e.g. Ayah, Ibu, Wali; kolom=Nama Hubungan; sinyal validasi=required; aturan field=form.name: required Confirmed from code — openModal, deleteRecord, saveRecord, handleConfirmDelete Confirmed from code — /api/v1/admissions/config/parent-relationships/list @ src/services/admissions/admissionConfig.service.js:152 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:519; Confirmed from code — /api/v1/admissions/config/parent-relationships/delete @ src/services/admissions/admissionConfig.service.js:167 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:549; Confirmed from code — /api/v1/admissions/config/parent-relationships/save @ src/services/admissions/admissionConfig.service.js:159 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:532 Confirmed from code — sesi autentik; capability admissions.parent_relationship.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admissions/config/parent-relationships/delete, /api/v1/admissions/config/parent-relationships/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admissions.config (Konfigurasi) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Jalur Pendaftaran /admin/spmb-config/pathways src/views/AdmissionManagement/Config/PathwayList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Jalur Pendaftaran pada /admin/spmb-config/pathways; tujuan diringkas dari 1 form, tabel/kolom data, aksi interaktif Confirmed from code — form=1; field=activeTab, form.name, form.code, form.sequence, form.min_quota_percent, form.max_quota_percent, form.is_mandatory, form.requires_distance_calc, form.requires_achievement, form.active, form.required_document_type_ids, confirmDialog.show, +5 lainnya; kolom=Nama Jalur, Kuota Min, Kuota Max, Persyaratan; sinyal validasi=required; aturan field=form.name: required, form.code: required, form.sequence: type=number, form.min_quota_percent: type=number, form.max_quota_percent: type=number, form.is_mandatory: type=checkbox, form.requires_distance_calc: type=checkbox, form.requires_achievement: type=checkbox, form.active: type=checkbox, form.required_document_type_ids: type=checkbox; Inferred from code — option/status/display-label candidates=Info Dasar, Dokumen Tambahan Confirmed from code — openModal, deleteRecord, saveRecord, handleConfirmDelete Confirmed from code — /api/v1/admissions/config/pathways/delete @ src/services/admissions/admissionConfig.service.js:44 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:290; Confirmed from code — /api/v1/admissions/config/pathways/list @ src/services/admissions/admissionConfig.service.js:23 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:242; Confirmed from code — /api/v1/admissions/config/document-types/options @ src/services/admissions/admissionConfig.service.js:59 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:319; Confirmed from code — /api/v1/admissions/config/pathways/save @ src/services/admissions/admissionConfig.service.js:36 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:268 Confirmed from code — sesi autentik; capability admissions.pathway.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field required_document_type_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admissions/config/pathways/delete, /api/v1/admissions/config/pathways/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admissions.config (Konfigurasi) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Konfigurasi NIS /admin/spmb-config/sic src/views/AdmissionManagement/Config/SICConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi NIS pada /admin/spmb-config/sic; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.prefix, form.start_number, form.digit_count, form.format_mode, form.current_number, form.active, Prefix (NPSN), e.g. 20123456, Nomor Awal, e.g. 1, Jumlah Digit, e.g. 4, +3 lainnya; sinyal validasi=required; aturan field=form.prefix: required, form.start_number: type=number, form.digit_count: type=number, form.current_number: type=number, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Overflow (Expand Otomatis), Fixed (Tetap) Confirmed from code — saveConfig Confirmed from code — /api/v1/admissions/config/sic/get @ src/services/admissions/admissionConfig.service.js:138 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:483; Confirmed from code — /api/v1/admissions/config/sic/save @ src/services/admissions/admissionConfig.service.js:143 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:497 Confirmed from code — sesi autentik; capability admissions.sic.config; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admissions/config/sic/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu admissions.config (Konfigurasi) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions CBT SPMB /admin/spmb/cbt/exams src/views/ExamManagement/Faculty/Exam/CBTExamList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman CBT SPMB pada /admin/spmb/cbt/exams; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.state, newExam.name, newExam.exam_context, newExam.exam_type_id, newExam.question_set_id, Try Out Nasional 2026, Koleksi Soal, Context Ujian; filter=filters.search, filters.state; sinyal validasi=required, min/max; aturan field=newExam.name: required, newExam.exam_context: required, newExam.exam_type_id: required, newExam.question_set_id: required; Inferred from code — option/status/display-label candidates=Draft, Publikasi, Independent — Try out, olimpiade, tes publik, Admission — Tes SPMB/penerimaan siswa baru, Error, Sukses Confirmed from code — openCreateModal, goToLearningExams, goToQuestionBank, handleSearch, goToDetail, toggleTokenVisibility, openPreviewModal, handleDelete, goToPage, set showCreateModal, handleCreate, togglePreviewTokenVisibility, set showPreviewModal, handleConfirmDialog Confirmed from code — /v1/academic/cbt/exams/list @ src/services/cbt/examService.js:17 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:16; Confirmed from code — /v1/academic/cbt/exams/save @ src/services/cbt/examService.js:45 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:16; Confirmed from code — /v1/academic/cbt/exams/options/exam-types @ src/services/cbt/examService.js:305 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:31; Confirmed from code — /v1/academic/cbt/exams/:param/delete @ src/services/cbt/examService.js:73 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:252; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability admissions.cbt_author.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan; referenced records dari field exam_type_id, question_set_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/save, /v1/academic/cbt/exams/:param/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments, /faculty/question-bank, /admin-staff/admissions/cbt/exams, /faculty/cbt/exams P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Proctor CBT /admin/spmb/cbt/proctor src/views/ExamManagement/Faculty/Proctor/ProctorDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Proctor CBT pada /admin/spmb/cbt/proctor; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedExamId, extendTimeModal.minutes, extendTimeModal.reason, forceSubmitDialog.reason, resetDialog.reason, resetDialog.fullReset, Tambahan Waktu (menit), 10, Alasan (wajib), Masukkan alasan penambahan waktu..., Masukkan alasan...; kolom=Peserta, Sesi, Progress, Sisa Waktu, Flags; sinyal validasi=required; aturan field=extendTimeModal.minutes: type=number, extendTimeModal.reason: required; Inferred from code — option/status/display-label candidates=Error, Tambah Waktu, CBT, Proctor Console Confirmed from code — router.back, handleExamChange, loadExamStatus, showFlagsModal, set extendTimeModal.show, handleExtendTime, handleForceSubmit, handleResetAttempt Confirmed from code — /v1/academic/cbt/proctor/exams @ src/services/cbt/proctorService.js:11 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:13; Confirmed from code — /v1/academic/cbt/proctor/exams/:param/status @ src/services/cbt/proctorService.js:30 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:50; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/extend-time @ src/services/cbt/proctorService.js:72 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:11; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/force-submit @ src/services/cbt/proctorService.js:92 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:40; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/reset @ src/services/cbt/proctorService.js:113 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:65 Confirmed from code — sesi autentik; capability admissions.cbt_proctor.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/proctor, /admin/spmb/proctor/:scheduleId?, /faculty/cbt/proctor P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Keluhan /admin/spmb/complaints src/views/AdmissionManagement/ComplaintList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Keluhan pada /admin/spmb/complaints; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.state, activeTab, responseText, resolutionNotesText, Tulis tanggapan..., Tulis catatan penyelesaian (opsional)..., Pendaftaran, Gelombang, Nama Pelapor, No. HP Pelapor, Email Pelapor, Subjek, +6 lainnya; kolom=No. Pengaduan, Pelapor, Subjek; filter=filters.state; Inferred from code — option/status/display-label candidates=Uraian Pengaduan, Tanggapan, Diajukan, Diproses, Penilaian, Jarak Domisili / Zonasi, Kuota, Teknis Confirmed from code — openDetail, processComplaint, resolveComplaint, rejectComplaint, toggleAttachmentPreview, downloadAttachment, set showDetailModal, handleProcess, handleReject, handleResolve Confirmed from code — /api/SPMB/complaints/:param/detail @ src/services/spmb/spmbAdminComplaints.service.js:63 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_complaints_ranking_api.py:795; Confirmed from code — /api/SPMB/complaints/list @ src/services/spmb/spmbAdminComplaints.service.js:55 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_complaints_ranking_api.py:776 Confirmed from code — sesi autentik; capability admissions.complaints.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/complaints P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Dashboard SPMB /admin/spmb/dashboard src/views/AdmissionManagement/AdmissionDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Dashboard SPMB pada /admin/spmb/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedRegister; kolom=Gelombang, Menunggu, Publikasi Hasil; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Status diperbarui, Buka Gelombang, Konfigurasi Jalur, Menunggu Verifikasi, Error Confirmed from code — fetchDashboardData, handleKpiClick, router.push, quickTransition, viewDetail Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/dashboard/stats @ src/services/spmb/spmbAdminAdmissions.service.js:113 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1121; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/periode, /admin-staff/admissions/dashboard, /principal/admissions/dashboard, /vice-principal/public-relations/admissions/dashboard, /vice-principal/student-affairs/admissions/dashboard P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Periode & Pendaftaran /admin/spmb/periode src/views/AdmissionManagement/AdmissionRegisterList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Periode & Pendaftaran pada /admin/spmb/periode; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedYear, selectedTerm, selectedStatus, showModal, form.name, form.education_level_id, form.academic_years_id, form.academic_term_id, form.course_id, form.start_date, form.end_date, form.min_count, +19 lainnya; filter=selectedStatus, form.course_id, form.start_date, form.end_date, form.school_latitude, form.school_longitude; sinyal validasi=required, min/max; aturan field=form.name: required, type=text, form.education_level_id: required, form.academic_years_id: required, form.academic_term_id: required, form.start_date: required, form.end_date: required, form.min_count: min=0, type=number, form.max_count: required, type=number, form.minimum_age_criteria: type=number, quota.quota: type=number, +9 lainnya; Inferred from code — option/status/display-label candidates=Pengumpulan Pendaftaran, Proses Seleksi, Persiapan, Pendaftaran, Seleksi, Buka Pendaftaran (Portal), Mulai Proses Seleksi, Selesaikan Periode, Update Status, Biaya Formulir, +12 lainnya Confirmed from code — See all, + Tambah Jalur, tambahPendaftaran, openDeleteDialog, editRegister, toggleStatusMenu, changeStatus, goToApplications, confirmDelete, confirmStatusChange, submitForm, addPathwayQuota, removePathwayQuota, addFeeRule, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/delete @ src/services/spmb/spmbAdminRegisters.service.js:239 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1002; Confirmed from code — /api/SPMB/registers/options @ src/services/spmb/spmbAdminRegisters.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:912; Confirmed from code — /api/SPMB/registers/list @ src/services/spmb/spmbAdminRegisters.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:922; Confirmed from code — /api/SPMB/registers/:param/transition @ src/services/spmb/spmbAdminRegisters.service.js:243 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1020; Confirmed from code — /api/SPMB/registers/create @ src/services/spmb/spmbAdminRegisters.service.js:226 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:964; Confirmed from code — /api/SPMB/registers/:param/update @ src/services/spmb/spmbAdminRegisters.service.js:232 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:981 Confirmed from code — sesi autentik; capability admissions.period.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field education_level_id, academic_years_id, academic_term_id, course_id, pathway_id, fee_template_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/registers/:param/delete, /api/SPMB/registers/create, /api/SPMB/registers/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/periods, /principal/admissions/periods, /vice-principal/public-relations/admissions/periods, /vice-principal/student-affairs/admissions/periods P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
admissions Tes Masuk /admin/spmb/test src/views/AdmissionManagement/AdmissionTest.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tes Masuk pada /admin/spmb/test; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Peserta Tes, Hasil Tes Confirmed from code — goTo Confirmed from code — /api/v1/admissions/config/test-counts @ src/services/admissions/admissionConfig.service.js:17 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/admission_config_api.py:221 Confirmed from code — sesi autentik; capability admissions.schedule.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/test P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

attendance (6 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
attendance Kartu RFID /admin/rfid/cards src/views/AdminViews/RFID/RFIDCards.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kartu RFID pada /admin/rfid/cards; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.search, filters.status, filters.card_type, formData.card_uid, formData.card_type, formData.student_id, personSearchQuery, formData.status, lostFormData.reason, lostFormData.notes, lostFormData.issue_replacement, lostFormData.new_card_uid, +1 lainnya; kolom=Card UID, Tipe; filter=filters.search, filters.status, filters.card_type, personSearchQuery, formData.status, Status; sinyal validasi=required, min/max; aturan field=filters.search: type=text, formData.card_uid: required, type=text, formData.card_type: required, personSearchQuery: type=text, lostFormData.reason: required, lostFormData.issue_replacement: type=checkbox, lostFormData.new_card_uid: type=text, field: type=file Confirmed from code — set showImportDialog, openAddDialog, resetFilters, viewHistory, reportLost, editCard, confirmDeleteCard, set currentPage, saveCard, clearSelectedPerson, closeDialog, submitLostReport, set showLostDialog, handleFileUpload, +3 lainnya Confirmed from code — /api/rfid/cards @ src/services/rfid/rfid.service.js:92 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_cards_api.py:341; Confirmed from code — /api/rfid/cards/:param/history @ src/services/rfid/rfid.service.js:119 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_cards_api.py:671; Missing or unclear — /api/rfid/cards/:param @ src/services/rfid/rfid.service.js:101; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.rfid_cards.view; allowedRoles admin, school_admin, head_admin; feature flag scola_smart_attendance; Inferred from code — data prerequisite: referenced records dari field student_id Inferred from code — memanggil endpoint berbentuk mutasi /api/rfid/cards/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu attendance.rfid (RFID Siswa) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
attendance Perangkat /admin/rfid/devices src/views/AdminViews/RFID/RFIDDevices.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Perangkat pada /admin/rfid/devices; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.search, filters.status, filters.device_type, formData.device_id, formData.name, formData.device_type, formData.location, formData.ip_allowlist; kolom=Time, Type, IP, Details; filter=filters.search, filters.status, filters.device_type; sinyal validasi=required, min/max; aturan field=filters.search: type=text, formData.device_id: required, formData.name: required, formData.device_type: required, formData.location: required Confirmed from code — openAddDialog, resetFilters, viewSecurityLog, regenerateSecret, editDevice, confirmDelete, set currentPage, saveDevice, copyToClipboard, confirmRegenerateSecret, set showRegenerateDialog, deleteDevice Confirmed from code — /api/rfid/devices @ src/services/rfid/rfid.service.js:143 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_devices_api.py:346; Confirmed from code — /api/rfid/devices/:param/security-log @ src/services/rfid/rfid.service.js:170 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_devices_api.py:517; Missing or unclear — /api/rfid/devices/:param @ src/services/rfid/rfid.service.js:152; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability students.rfid_devices.view; allowedRoles admin, school_admin, head_admin; feature flag scola_smart_attendance; Inferred from code — data prerequisite: referenced records dari field device_id Inferred from code — memanggil endpoint berbentuk mutasi /api/rfid/devices/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu attendance.rfid (RFID Siswa) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
attendance Log Tap /admin/rfid/events src/views/AdminViews/RFID/RFIDEvents.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Log Tap pada /admin/rfid/events; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.device, filters.status, filters.date, Card UID..., Cari Card UID, Device; kolom=Timestamp, Card UID, Holder, Device; filter=filters.search, filters.device, filters.status, filters.date; sinyal validasi=min/max; aturan field=filters.search: type=text, filters.date: type=date; Inferred from code — option/status/display-label candidates=Error Confirmed from code — Refresh, Prev, Next, Retry Event, fetchEvents, toggleAutoRefresh, resetFilters, viewDetail, retryEvent, set currentPage, set showDetailDialog Confirmed from code — /api/rfid/events @ src/services/rfid/rfid.service.js:179 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:369 Confirmed from code — sesi autentik; capability students.rfid_logs.view; allowedRoles admin, school_admin, head_admin; feature flag scola_smart_attendance; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu attendance.rfid (RFID Siswa) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
attendance Monitoring /admin/rfid/monitoring src/views/AdminViews/RFID/RFIDMonitoring.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Monitoring pada /admin/rfid/monitoring; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — Refresh, fetchDashboard Confirmed from code — /api/rfid/monitoring @ src/services/rfid/rfid.service.js:194 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:486 Confirmed from code — sesi autentik; capability students.rfid_monitor.view; allowedRoles admin, school_admin, head_admin; feature flag scola_smart_attendance; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu attendance.rfid (RFID Siswa) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
attendance Wajah Siswa /admin/student-face-management src/views/AttendanceManagement/Student/StudentFaceManagement.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Wajah Siswa pada /admin/student-face-management; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, faceInputMode, uploadedFiles, faceIsPrimary; filter=searchQuery; aturan field=searchQuery: type=text, faceIsPrimary: type=checkbox; Inferred from code — option/status/display-label candidates=Capture Kamera, Upload Gambar, Error Confirmed from code — selectStudent, openCreateFaceModal, setPrimaryFace, confirmDeleteFace, toggleCamera, captureFace, closeFaceModal, saveFace, deleteFace Confirmed from code — /api/v1/attendance/student-face/students @ src/services/attendance/studentFaceAdmin.service.js:4 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/student_face_admin_api.py:93; Confirmed from code — /api/v1/attendance/student-face/list @ src/services/attendance/studentFaceAdmin.service.js:9 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/student_face_admin_api.py:135; Confirmed from code — /api/v1/attendance/student-face/save @ src/services/attendance/studentFaceAdmin.service.js:16 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/student_face_admin_api.py:161; Confirmed from code — /api/v1/attendance/student-face/set-primary @ src/services/attendance/studentFaceAdmin.service.js:26 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/student_face_admin_api.py:200; Confirmed from code — /api/v1/attendance/student-face/delete @ src/services/attendance/studentFaceAdmin.service.js:33 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/student_face_admin_api.py:215 Confirmed from code — sesi autentik; capability students.face_recognition.view; allowedRoles admin, school_admin, head_admin; feature flag scola_smart_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/student-face/save, /api/v1/attendance/student-face/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu attendance.face.students (Wajah Siswa) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
attendance Pengaturan Kehadiran /attendance/settings src/views/AttendanceManagement/Config/AttendanceSettings.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman Pengaturan Kehadiran pada /attendance/settings; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=modeForm.arrival_enabled, modeForm.departure_enabled, modeForm.per_lesson_enabled, modeForm.arrival_departure_method, modeForm.gate_operator_scope, modeForm.departure_policy_mode, modeForm.paud_temperature_enabled, modeForm.temperature_required, modeForm.temperature_fever_threshold, modeForm.daily_summary_rule, rfidConfig.checkin_start, rfidConfig.late_threshold, +16 lainnya; filter=rfidConfig.grace_period, rule.grace_period; sinyal validasi=min/max, rules/schema, custom validate; aturan field=modeForm.arrival_enabled: type=checkbox, modeForm.departure_enabled: type=checkbox, modeForm.per_lesson_enabled: type=checkbox, modeForm.paud_temperature_enabled: type=checkbox, modeForm.temperature_required: type=checkbox, modeForm.temperature_fever_threshold: min=34, max=42.5, type=number, rfidConfig.checkin_start: type=time, rfidConfig.late_threshold: min=0, type=number, rfidConfig.grace_period: min=0, type=number, rfidConfig.absent_cutoff: type=time, +11 lainnya Confirmed from code — loadAllConfig, saveAllConfig, selectTab, onTimeChange Confirmed from code — /api/rfid/config @ src/services/rfid/rfid.service.js:220 -> ../custom_addons_scola/gcgscola/scola_smart_attendance/controllers/rfid_events_api.py:657; Confirmed from code — /api/v1/attendance/student/settings @ src/services/attendance/studentAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:8; Confirmed from code — /api/v1/attendance/day-overrides/recompute-late @ src/services/attendance/studentAttendance.service.js:83 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_day_override_api.py:24; Confirmed from code — /api/v1/settings/company/update @ src/services/settings/companySettings.service.js:10 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:205; Confirmed from code — /api/v1/academic/lesson-hour-profiles/ensure-default @ src/services/admin/academics/academicMaster.service.js:218 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1921 Confirmed from code — sesi autentik; capability settings.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/settings/company/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu attendance.students (Absensi Siswa) P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

bos-admin (4 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
bos-admin RKAS / Anggaran /bos/budget src/views/AdminViews/Inventory/BudgetPlanList.vue:1 Confirmed from code — bos_admin; guard route memakai allowedRoles Inferred from code — halaman RKAS / Anggaran pada /bos/budget; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=activeTab, planSearch, lineSearch, selectedPlanFilter, planForm.name, planForm.fiscal_year, planForm.state, lineForm.plan_id, lineForm.school_category, lineForm.rkas_component, lineForm.planned_amount, Contoh: RKAS 2024/2025, +2 lainnya; kolom=Committed, Sisa; filter=planSearch, lineSearch, selectedPlanFilter, lineForm.school_category; sinyal validasi=required; aturan field=planSearch: type=search, lineSearch: type=search, planForm.name: required, lineForm.plan_id: required, lineForm.planned_amount: required, type=number Confirmed from code — goToSettings, goToRealisasi, openPlanModal, fetchBudgetPlans, openPlanDetail, setPlanState, duplicatePlan, openLineModal, fetchBudgetLines, savePlan, saveLine, closePlanDetail Confirmed from code — /api/v1/inventory/budget-plans/list @ src/services/admin/inventory.service.js:352 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:497; Confirmed from code — /api/v1/inventory/budget-lines/list @ src/services/admin/inventory.service.js:391 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:533; Confirmed from code — /api/v1/inventory/budget-plans/save @ src/services/admin/inventory.service.js:371 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:522; Confirmed from code — /api/v1/inventory/budget-lines/save @ src/services/admin/inventory.service.js:406 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:551 Confirmed from code — sesi autentik; capability finance.bos.manage; allowedRoles bos_admin; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field plan_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/budget-plans/save, /api/v1/inventory/budget-lines/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/rkas-settings, /inventory/budget-report, /inventory/budget P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
bos-admin Buku Besar /bos/budget-ledger src/views/AdminViews/Budget/BudgetLedgerPage.vue:1 Confirmed from code — bos_admin; guard route memakai allowedRoles Inferred from code — halaman Buku Besar pada /bos/budget-ledger; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, Sampai Tanggal; kolom=Program / Line, Referensi, Keterangan, Nilai, User; filter=startDate, endDate; sinyal validasi=min/max; aturan field=startDate: type=date, endDate: type=date Confirmed from code — Previous, Next, fetchLedger, changePage Confirmed from code — /api/inventory/budget/ledger @ src/views/AdminViews/Budget/BudgetLedgerPage.vue:169 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/budget_api.py:171 Confirmed from code — sesi autentik; capability finance.bos.report.view; allowedRoles bos_admin; feature flag scola_bos_rkas; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/budget-ledger P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
bos-admin Laporan Realisasi /bos/budget-report src/views/AdminViews/Inventory/BudgetRealisasiReport.vue:1 Confirmed from code — bos_admin; guard route memakai allowedRoles Inferred from code — halaman Laporan Realisasi pada /bos/budget-report; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.planId, filters.category, searchQuery; kolom=Rencana, Komponen RKAS, Anggaran, Committed, Realisasi, Sisa; filter=filters.planId, filters.category, searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=ATK, Buku, Lab, IT, Fasilitas, Olahraga, Seragam, Bantuan/Hibah, Error Confirmed from code — exportToExcel, fetchBudgetLines Confirmed from code — /api/v1/inventory/budget-lines/list @ src/services/admin/inventory.service.js:391 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:533; Confirmed from code — /api/v1/inventory/budget-plans/list @ src/services/admin/inventory.service.js:352 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:497 Confirmed from code — sesi autentik; capability finance.bos.report.view; allowedRoles bos_admin; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/budget-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
bos-admin Dashboard BOS /bos/dashboard src/views/Compliance/BosAdminDashboard.vue:1 Confirmed from code — bos_admin; guard route memakai allowedRoles Inferred from code — halaman Dashboard BOS pada /bos/dashboard; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=RKAS / Anggaran, Buku Besar Anggaran Confirmed from code — router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.bos.manage; allowedRoles bos_admin; feature flag scola_bos_rkas; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu bos.overview (Dashboard) P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

communication (5 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
communication Dashboard Analitik /admin/complaint-dashboard src/views/AdminViews/ComplaintDashboard.vue:1 Confirmed from code — admin, school_admin, principal; guard route memakai allowedRoles Inferred from code — halaman Dashboard Analitik pada /admin/complaint-dashboard; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=dateFrom, dateTo, Sampai; filter=dateFrom, dateTo; aturan field=dateFrom: type=date, dateTo: type=date Confirmed from code — router.push, loadStats, handleFilterApply, handleFilterReset Confirmed from code — /api/complaint/dashboard @ src/services/public/publicComplaint.service.js:45 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:140 Confirmed from code — sesi autentik; capability communication.complaint_dashboard.view; allowedRoles admin, school_admin, principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/complaint-dashboard P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
communication Konfigurasi Field /admin/complaint-field-config src/views/AdminViews/ComplaintFieldConfig.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi Field pada /admin/complaint-field-config; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.field_key, form.field_type, form.placeholder, selectOptionsList[idx], ratingMin, ratingMax, form.options, form.max_length, form.is_required, form.active, form.show_in_dashboard, +17 lainnya; sinyal validasi=required, min/max; aturan field=form.name: required, form.field_key: required, form.field_type: required, selectOptionsList[idx]: type=text, ratingMin: type=number, ratingMax: type=number, `Label untuk nilai ${val}: type=text,form.max_length: type=number; Inferred from code — option/status/display-label candidates=Text,Textarea,Dropdown / Pilihan,No. Telepon,Upload File,Rating / Skala,Checkbox / Persetujuan` Confirmed from code — Tambah Pilihan, openAddForm, toggleActive, openEditForm, deleteField, cancelForm, removeSelectOption, addSelectOption, saveField Confirmed from code — /api/complaint/fields @ src/services/public/publicComplaint.service.js:106 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:324; Confirmed from code — /api/complaint/fields/delete @ src/services/public/publicComplaint.service.js:132 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:381; Confirmed from code — /api/complaint/fields/save @ src/services/public/publicComplaint.service.js:120 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:351; Confirmed from code — /api/complaint/fields/reorder @ src/services/public/publicComplaint.service.js:144 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:398 Confirmed from code — sesi autentik; capability communication.complaint_dashboard.view; allowedRoles admin, school_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/complaint/fields/delete, /api/complaint/fields/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu communication.complaints (Aduan Masyarakat) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
communication Daftar Aduan /admin/complaints src/views/AdminViews/ComplaintList.vue:1 Confirmed from code — admin, school_admin, principal; guard route memakai allowedRoles Inferred from code — halaman Daftar Aduan pada /admin/complaints; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterSearch, filterState, Status; filter=filterSearch, filterState, Status Confirmed from code — router.push, applyFilter, goToDetail, prevPage, nextPage Confirmed from code — /api/complaint/list @ src/services/public/publicComplaint.service.js:57 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:154 Confirmed from code — sesi autentik; capability communication.complaint_dashboard.view; allowedRoles admin, school_admin, principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/complaints P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
communication Chat /messaging src/views/Messaging.vue:1 Inferred from code — admin, school_admin, teacher, parent, principal, homeroom, vice_principal_student_affairs, vice_principal_public_relations; diturunkan dari pola capability frontend untuk communication.messages.view; izin sesi backend dapat berbeda Inferred from code — halaman Chat pada /messaging; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedAssignmentId, newMessage, selectedChildId, userSearchQuery, bulkDraftMessage, Tulis pesan..., Pesan / keterangan foto untuk ortu terpilih; filter=userSearchQuery; sinyal validasi=custom validate; aturan field=field: type=file, newMessage: type=text, userSearchQuery: type=text, field: type=checkbox; Inferred from code — option/status/display-label candidates=Wali kelas, Mapel, Umum, Grup, Pesan Confirmed from code — Mulai Percakapan, Percakapan Baru, Muat pesan sebelumnya, Chat, set messagingScope, set activeTab, set showNewChatModal, openRoom, closeRoom, set showRoomInfo, loadMoreMessages, openAttachment, removeFile, handleFileSelect, +7 lainnya Confirmed from code — /api/v1/messaging/channels @ src/services/notifications/messagingService.js:132 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/rooms @ src/services/notifications/messagingService.js:464 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/channels/:param/messages @ src/services/notifications/messagingService.js:262 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/messages @ src/services/notifications/messagingService.js:488 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/channels/:param/send @ src/services/notifications/messagingService.js:331 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:22; Confirmed from code — /api/v1/messaging/homeroom/send-message @ src/services/notifications/messagingService.js:525 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/send-message-bulk @ src/services/notifications/messagingService.js:560 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/channels/create @ src/services/notifications/messagingService.js:404 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:25; Confirmed from code — /api/v1/messaging/homeroom/channel-get @ src/services/notifications/messagingService.js:449 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/parent-contacts @ src/services/notifications/messagingService.js:425 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/subject/rooms @ src/services/notifications/messagingService.js:598 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:28; Confirmed from code — /api/v1/messaging/subject/messages @ src/services/notifications/messagingService.js:620 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/subject/send-message @ src/services/notifications/messagingService.js:649 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/subject/send-message-bulk @ src/services/notifications/messagingService.js:687 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/subject/channel-get @ src/services/notifications/messagingService.js:592 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/subject/parent-contacts @ src/services/notifications/messagingService.js:572 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/parent/teacher-contacts @ src/services/notifications/messagingService.js:357 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:16; Confirmed from code — /api/v1/messaging/channels/:param/read @ src/services/notifications/messagingService.js:350 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:32; Confirmed from code — /api/v1/messaging/users/search @ src/services/notifications/messagingService.js:713 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:34; Confirmed from code — /longpolling/poll @ src/services/common/odooLongpoll.js:76; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability communication.messages.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/messaging/channels/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/messaging, /parent/chat-teacher, /parent/messaging P0 — komponen >=1400 baris Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
communication Kanal Notifikasi /settings/notification-channels src/views/SettingsManagement/NotificationChannelConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kanal Notifikasi pada /settings/notification-channels; tujuan diringkas dari aksi interaktif Confirmed from code — field=config.whatsapp_service_url, config.whatsapp_api_key, config.telegram_bot_token, config.telegram_default_chat_id, config.telegram_broadcast_announcements, config.email_from, http://localhost:3000, config.whatsapp_api_key_configured ? $t(, config.telegram_bot_token_configured ? $t(, [email protected], Service URL, API Key, +3 lainnya; aturan field=config.whatsapp_service_url: type=text, config.whatsapp_api_key: type=password, config.telegram_bot_token: type=password, config.telegram_default_chat_id: type=text, config.telegram_broadcast_announcements: type=checkbox, config.email_from: type=email; Inferred from code — option/status/display-label candidates=Error, Butuh Scan QR, Email Uji Terkirim, Channel Notifikasi Confirmed from code — Tes Koneksi, Lihat QR Code, Tes Bot, Kirim Email Uji, set config.whatsapp_enabled, handleTestWhatsApp, handleShowQrCode, set showQrPanel, set config.telegram_enabled, handleTestTelegram, set config.email_enabled, handleTestEmail, set config.push_enabled, saveConfig Confirmed from code — /api/portal/notification-config @ src/services/notifications/notificationChannelConfig.service.js:11 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:14; Confirmed from code — /api/portal/notification-config/whatsapp-qr @ src/services/notifications/notificationChannelConfig.service.js:36 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:30; Confirmed from code — /api/portal/notification-config/save @ src/services/notifications/notificationChannelConfig.service.js:20 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:18; Confirmed from code — /api/portal/notification-config/test-email @ src/services/notifications/notificationChannelConfig.service.js:52 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:34; Confirmed from code — /api/portal/notification-config/test-telegram @ src/services/notifications/notificationChannelConfig.service.js:44 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:26; Confirmed from code — /api/portal/notification-config/test-whatsapp @ src/services/notifications/notificationChannelConfig.service.js:28 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_notification_admin_api.py:22 Confirmed from code — sesi autentik; capability communication.notifications.config; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: referenced records dari field telegram_default_chat_id Inferred from code — memanggil endpoint berbentuk mutasi /api/portal/notification-config/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu communication.notifications (Notifikasi) P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

counselor (22 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
counselor Prestasi /counseling/achievements src/views/CounselingManagement/Prestasi/ListPrestasi.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Prestasi pada /counseling/achievements; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory, statusFilter, deleteDialog.show; kolom=Kejuaraan, Peringkat; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Total Prestasi, Disetujui, Akademik, Tingkat Prestasi Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels, /admin/achievements, /faculty/achievements, /principal/students/achievements, /vice-principal/student-affairs/achievements P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Absensi Saya /counseling/attendance-history src/views/AttendanceManagement/Staff/SelfAttendance.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Absensi Saya pada /counseling/attendance-history; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; sinyal validasi=required, min/max, custom validate; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openCheckinModal, retryLiveness, toggleCamera, captureFace, retryAutoPunch, resetCapture, closeCheckinModal, registerFace, submitAttendance Confirmed from code — /api/v1/attendance/employee/current @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:778 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_reports_api.py:300; Confirmed from code — /api/v1/attendance/validate-location @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:947 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:130; Confirmed from code — /api/v1/attendance/face/register @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:1283 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:207; Confirmed from code — /api/v1/attendance/check-out @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:1508 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:407; Confirmed from code — /api/v1/attendance/check-in @ src/views/AttendanceManagement/Staff/SelfAttendance.vue:1542 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:352; Confirmed from code — /api/v1/attendance/self/policy @ src/services/hr/hrAttendanceSelf.service.js:8 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:570; Confirmed from code — /api/v1/attendance/self/history @ src/services/hr/hrAttendanceSelf.service.js:13 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_checkin_api.py:594 Confirmed from code — sesi autentik; capability hr.attendance.view; allowedRoles counselor; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/face/register; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /employee/self-attendance P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Bimbingan Karir /counseling/career src/views/CounselingManagement/Career/CareerGuidance.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Bimbingan Karir pada /counseling/career; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, selectedUrgency, form.student_id, form.academic_year, form.tanggal_asesmen, form.minat_bidang, form.minat_spesifik, form.rencana_studi, form.jurusan_impian, form.kampus_impian, form.tindak_lanjut, +19 lainnya; filter=searchQuery, selectedStatus, searchQ; aturan field=form.tanggal_asesmen: type=date; Inferred from code — option/status/display-label candidates=Catatan Karir, Bidang Pribadi, Bidang Sosial, Bidang Karir, Baru, Ditinjau, Dalam Penanganan, Ditutup, Rendah, Tinggi, +21 lainnya Confirmed from code — openCreateModal, switchTab, resetNoteFilters, loadCareerNotes, submit, resetFilters, askDelete, set deleteTarget, doDelete Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/career.service.js, src/services/counseling/kesiswaanApiClient.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.career_guidance.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu counselor.career (Karir & Alumni) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Konferensi Kasus /counseling/conference src/views/CounselingManagement/Operations/CounselingOperationPage.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Konferensi Kasus pada /counseling/conference; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, statusFilter; kolom=Kode Kasus, Bidang, Urgensi, Ringkasan; filter=searchQuery, statusFilter; sinyal validasi=required; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Home Visit, Monitoring kunjungan rumah siswa dan tindak lanjut konseling keluarga., Konferensi Kasus, Total Kasus, Dalam Proses, Prioritas Tinggi Confirmed from code — goToAdd, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counselingOperations.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes/:id, /counseling/home-visit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Dashboard /counseling/dashboard src/views/CounselingManagement/CounselorDashboard.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /counseling/dashboard; tujuan diringkas dari aksi interaktif Confirmed from code — field=pointSortOrder; Inferred from code — option/status/display-label candidates=Perizinan Menunggu Confirmed from code — router.push, fetchTopStudents Confirmed from code — /api/v1/kesiswaan/rekap @ src/services/counseling/kesiswaanRekap.service.js:30 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:88 Confirmed from code — sesi autentik; capability discipline.dashboard.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/extracurriculars/pending, /counseling/schedule, /counseling/notes, /counseling/student-points, /counseling/students, /counseling/violations, /counseling/achievements, /counseling/reports P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Slip Gaji /counseling/employee/payslip src/views/FacultyViews/Payroll/PayslipList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Slip Gaji pada /counseling/employee/payslip; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — goToDetail Confirmed from code — /api/payroll/my/payslips @ src/services/hr/employeePayrollSelf.service.js:12 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_api.py:274 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles counselor; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/employee/payslip, /librarian/employee/payslip P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Ekstrakurikuler /counseling/extracurriculars src/views/CounselingManagement/Extracurricular/ExtracurricularList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Ekstrakurikuler pada /counseling/extracurriculars; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua jenis, Ekskul, Les, Pramuka, Olahraga, Seni & Budaya, Akademik, Keagamaan, Kepemimpinan, Sosial, +1 lainnya Confirmed from code — router.push, set selectedActivityKind, set selectedCategory, loadData, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, +8 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/extracurricular P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Home Visit /counseling/home-visit src/views/CounselingManagement/Operations/CounselingOperationPage.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Home Visit pada /counseling/home-visit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, statusFilter; kolom=Kode Kasus, Bidang, Urgensi, Ringkasan; filter=searchQuery, statusFilter; sinyal validasi=required; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Home Visit, Monitoring kunjungan rumah siswa dan tindak lanjut konseling keluarga., Konferensi Kasus, Total Kasus, Dalam Proses, Prioritas Tinggi Confirmed from code — goToAdd, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counselingOperations.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes/:id, /counseling/conference P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Insiden Umum /counseling/incidents src/views/CounselingManagement/Incident/IncidentList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Insiden Umum pada /counseling/incidents; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedCategory, selectedStatus; filter=searchTerm, selectedStatus; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua Status, Dilaporkan, Triage, Investigasi, Selesai, Dieskalasi Confirmed from code — goToAdd, loadIncidents, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/incident.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents, /faculty/incidents, /principal/students/incidents, /vice-principal/student-affairs/incidents P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Laporan Konseling /counseling/notes src/views/CounselingManagement/Counseling/CounselingList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Laporan Konseling pada /counseling/notes; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedClassroom, searchPlaceholder; filter=searchTerm, selectedClassroom, searchPlaceholder; sinyal validasi=min/max Confirmed from code — fetchReports, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counseling.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/counseling, /principal/students/counseling, /vice-principal/student-affairs/counseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Referral BK /counseling/referrals src/views/FacultyViews/Counseling/ReferralList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Referral BK pada /counseling/referrals; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, selectedTargetRole, form.student_id, form.target_role, form.source_type, form.source_record_id, form.source_reference, form.safe_summary, form.notes, closeNotes; filter=searchQuery, selectedStatus; sinyal validasi=required; aturan field=form.source_record_id: type=number Confirmed from code — Coba Lagi, openCreateModal, resetFilters, loadReferrals, handleAccept, openCloseModal, closeCreateModal, handleCreateReferral, set isCloseModalOpen, confirmClose Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_referral.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, source_record_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/referrals, /faculty/referrals, /principal/students/referrals, /vice-principal/student-affairs/referrals P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Rekap Konseling Siswa /counseling/rekap-konseling src/views/CounselingManagement/Rekap/RekapKonselingSiswa.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Rekap Konseling Siswa pada /counseling/rekap-konseling; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Unit Sekolah, Search; kolom=No., NIS, Unit, Total Poin; filter=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Search; sinyal validasi=min/max; aturan field=filters.search: type=text Confirmed from code — Excel, Prev, onEducationLevelChange, applyFilters, onExportExcel, reloadAtFirstPage, onCetakBuku, goToPage Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/admin/academics/academicMaster.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_book.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, batch_id, student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/rekap-konseling, /faculty/homeroom/rekap-konseling, /principal/students/rekap-konseling, /vice-principal/student-affairs/rekap-konseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Laporan /counseling/reports src/views/CounselingManagement/Reports/CounselingReports.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Laporan pada /counseling/reports; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, quickPeriod, YYYY-MM-DD, Periode Cepat; kolom=Modul, Open / Proses, Selesai / Disetujui; filter=startDate, endDate, quickPeriod, Periode Cepat; aturan field=startDate: type=text, endDate: type=text; Inferred from code — option/status/display-label candidates=Bulan Ini, Bulan Lalu, 3 Bulan Terakhir, Tahun Ini, Kustom, Pelanggaran, Prestasi, Kasus BK Terbuka, Insiden Overdue Confirmed from code — loadData, exportSummary Confirmed from code — /api/v1/kesiswaan/rekap @ src/services/counseling/kesiswaanRekap.service.js:30 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:88 Confirmed from code — sesi autentik; capability discipline.report.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu counselor.overview (Dashboard) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Tata Tertib & Peraturan /counseling/rules src/views/CounselingManagement/Rules/RuleListWrapper.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Tata Tertib & Peraturan pada /counseling/rules; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu counselor.pembinaan (Pembinaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Jadwal /counseling/schedule src/views/CounselingManagement/Schedule/Schedule.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Jadwal pada /counseling/schedule; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=studentSearch, newSchedule.title, newSchedule.start, newSchedule.stop, newSchedule.location, Ruang BK, Siswa, Judul Jadwal, Tanggal & Waktu Mulai, Waktu Selesai, Lokasi (opsional); filter=studentSearch; sinyal validasi=required; aturan field=studentSearch: required, type=text, newSchedule.title: required, type=text, newSchedule.start: required, type=datetime-local, newSchedule.stop: type=datetime-local, newSchedule.location: type=text Confirmed from code — Tambah Jadwal, Batal, prevMonth, nextMonth, selectCalendarDate, openNewScheduleModal, set showModal, submitNewSchedule Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/counseling.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js, src/services/counseling/rpcError.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu counselor.sessions (Konseling) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Perizinan Siswa /counseling/student-permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Perizinan Siswa pada /counseling/student-permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/student-permits, /faculty/student-permits, /parent/permits, /principal/students/permits, /student/permits, /vice-principal/student-affairs/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Poin Siswa /counseling/student-points src/views/CounselingManagement/PoinSiswa.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Poin Siswa pada /counseling/student-points; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedBatch; filter=searchQuery, selectedBatch; aturan field=searchQuery: type=text Confirmed from code — resetFilters, set activeTab, loadData Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271 Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu counselor.students (Siswa) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Timeline Siswa /counseling/student-timeline src/views/CounselingManagement/Timeline/StudentTimeline.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Timeline Siswa pada /counseling/student-timeline; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=studentSearch, selectedAcademicYear, selectedSemester, selectedStudent ? $t(; filter=studentSearch; sinyal validasi=min/max; aturan field=studentSearch: type=text; Inferred from code — option/status/display-label candidates=Prestasi, Pelanggaran, Konseling, Perizinan, Ekskul, Insiden Umum, Referral BK/Kesiswaan Confirmed from code — clearStudent, set activeFilter, selectStudent Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51; Confirmed from code — /api/v1/attendance/analytics/student-progress @ src/services/attendance/attendanceAnalytics.service.js:63 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_analytics_api.py:260; Confirmed from code — /api/v1/attendance/analytics/student-risk @ src/services/attendance/attendanceAnalytics.service.js:71 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_analytics_api.py:322 Confirmed from code — sesi autentik; capability discipline.case_history.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/student-timeline, /vice-principal/student-affairs/student-timeline P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Daftar Siswa /counseling/students src/views/CounselingManagement/CounselingStudentList.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Daftar Siswa pada /counseling/students; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedClassroom; filter=searchQuery, selectedClassroom; sinyal validasi=min/max; aturan field=searchQuery: type=text Confirmed from code — fetchStudents, goToTimeline, goToDetail, clearFilters Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles counselor; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu counselor.students (Siswa) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Siswa Berprestasi /counseling/top-students src/views/CounselingManagement/SiswaBerprestasi.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Siswa Berprestasi pada /counseling/top-students; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedBatch, selectedYear; filter=searchQuery, selectedBatch; aturan field=searchQuery: type=text; Inferred from code — option/status/display-label candidates=Akademik, Non-Akademik Confirmed from code — resetFilters, set activeTab, fetchData, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/kesiswaanApiClient.js, src/services/counseling/kesiswaanLookup.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements, /counseling/achievements/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Tracer Study /counseling/tracer-study src/views/CounselingManagement/Career/TracerStudy.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Tracer Study pada /counseling/tracer-study; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQ, selStatus, selTahun, form.namaAlumni, form.nisn, form.tahunLulus, form.statusSetelahLulus, form.namaPt, form.jurusanPt, form.namaPerusahaan, form.bidangPekerjaan, form.kesanSekolah, +19 lainnya; filter=searchQ, selStatus, form.statusSetelahLulus, Status Setelah Lulus, Status Setelah Lulus *; aturan field=form.tanggalSurvei: type=date; Inferred from code — option/status/display-label candidates=Melanjutkan Kuliah, Bekerja, Wirausaha, Kuliah sambil Bekerja, Sangat Puas, Puas, Cukup, Kurang, Form tracer study lokal (localStorage fallback), Sinkronisasi data tracer study ke server, +4 lainnya Confirmed from code — Batal, Hapus, set showForm, resetFilters, askDelete, submitForm, set deleteTarget, doDelete Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/services/common/jsonRpc.js, src/services/counseling/career.service.js, src/services/counseling/kesiswaanApiClient.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.alumni.view; allowedRoles counselor; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu counselor.career (Karir & Alumni) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
counselor Pelanggaran /counseling/violations src/views/CounselingManagement/Pelanggaran/ListPelanggaran.vue:1 Confirmed from code — counselor; guard route memakai allowedRoles Inferred from code — halaman Pelanggaran pada /counseling/violations; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, statusFilter, deleteDialog.show; kolom=Bentuk, Poin; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles counselor; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations, /faculty/violations, /principal/students/violations, /vice-principal/student-affairs/violations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

counselor / vp-curriculum / attendance (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
counselor / vp-curriculum / attendance Kehadiran Siswa / Hub Kehadiran Siswa /attendance/home src/views/AttendanceManagement/Admin/AttendanceHome.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman Kehadiran Siswa / Hub Kehadiran Siswa pada /attendance/home; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateTo Confirmed from code — /api/v1/attendance/student/settings @ src/services/attendance/studentAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:8 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/students/attendance P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

dapodik-operator (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
dapodik-operator Dashboard /dapodik/dashboard src/views/Compliance/DapodikOperatorDashboard.vue:1 Confirmed from code — dapodik_operator; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /dapodik/dashboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability settings.dapodik.view; allowedRoles dapodik_operator; feature flag scola_dapodik; Inferred from code — data prerequisite: remote connector, mapping tenant, dan master reference yang valid Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu dapodik.overview (Dashboard) P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

dapodik-operator / academic (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
dapodik-operator / academic Sync Rapor / Sync Dapodik /admin/report-card/dapodik-sync src/views/ReportCardManagement/Admin/DapodikRaporSync.vue:1 Confirmed from code — admin, school_admin, dapodik_operator; guard route memakai allowedRoles Inferred from code — halaman Sync Rapor / Sync Dapodik pada /admin/report-card/dapodik-sync; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=createForm.academic_term_id, createForm.batch_id; kolom=Outcome, Attempt, Pesan, Sinkronisasi, Statistik, Progress; filter=createForm.batch_id; sinyal validasi=required, custom validate; aturan field=createForm.academic_term_id: required; Inferred from code — option/status/display-label candidates=Total Sinkronisasi, Synced Real, Queued / Export, Failed, Error, Sukses, Sinkronisasi Diproses, Export Manual Confirmed from code — openCreateModal, testConnection, goToSettings, viewDetail, validateSync, executeSync, exportExcel, confirmDelete, createSync, closeCreateModal, closeDetailModal, deleteSync Confirmed from code — /api/v1/report-card/dapodik/syncs/create @ src/services/reportCard/reportCardDapodik.service.js:18 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:70; Confirmed from code — /api/v1/report-card/dapodik/syncs/:param/delete @ src/services/reportCard/reportCardDapodik.service.js:41 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:165; Confirmed from code — /api/v1/report-card/dapodik/syncs/:param/execute @ src/services/reportCard/reportCardDapodik.service.js:31 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:123; Confirmed from code — /api/v1/report-card/dapodik/syncs/:param/export @ src/services/reportCard/reportCardDapodik.service.js:36 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:143; Confirmed from code — /api/v1/report-card/dapodik/bootstrap @ src/services/reportCard/reportCardDapodik.service.js:8 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:46; Missing or unclear — /api/v1/report-card/dapodik/syncs/:param @ src/services/reportCard/reportCardDapodik.service.js:13; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/dapodik/test-connection @ src/services/reportCard/reportCardDapodik.service.js:46 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:180; Confirmed from code — /api/v1/report-card/dapodik/syncs/:param/validate @ src/services/reportCard/reportCardDapodik.service.js:26 -> ../custom_addons_scola/gcgscola/scola_dapodik_report_card_bridge/controllers/report_card_dapodik_api.py:104 Confirmed from code — sesi autentik; capability report_cards.dapodik.sync; allowedRoles admin, school_admin, dapodik_operator; feature flag scola_dapodik; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; remote connector, mapping tenant, dan master reference yang valid; referenced records dari field academic_term_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/dapodik/syncs/create, /api/v1/report-card/dapodik/syncs/:param/delete, /api/v1/report-card/dapodik/syncs/:param/execute; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /settings/dapodik P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

dapodik-operator / settings (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
dapodik-operator / settings Pengaturan Dapodik / Dapodik /settings/dapodik src/views/SettingsManagement/DapodikConfig.vue:1 Confirmed from code — admin, school_admin, dapodik_operator; guard route memakai allowedRoles Inferred from code — halaman Pengaturan Dapodik / Dapodik pada /settings/dapodik; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=form.host, form.port, form.npsn, form.access_token, form.auto_sync, form.sync_interval, Host, localhost, Port, 5774, NPSN, Masukkan NPSN (8 digit), +2 lainnya; sinyal validasi=required, min/max, custom validate; aturan field=form.port: type=number, form.npsn: required, maxlength=8, form.access_token: required, type=showToken ?, form.sync_interval: min=1, max=168, type=number; Inferred from code — option/status/display-label candidates=Terhubung, Error Confirmed from code — Lihat Semua, saveConfig, set showToken, testConnection, syncData, syncAll, set showAllLogs, set syncProgress.show Missing or unclear — /api/dapodik/sync-logs?limit=:param @ src/services/admin/dapodikConfig.service.js:41; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/dapodik/config @ src/services/admin/dapodikConfig.service.js:6 -> ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/dapodik_api.py:22; Confirmed from code — /api/dapodik/test-connection @ src/services/admin/dapodikConfig.service.js:28 -> ../custom_addons_scola/gcgscola/scola_dapodik_connector/controllers/dapodik_api.py:98 Confirmed from code — sesi autentik; capability settings.dapodik.view; allowedRoles admin, school_admin, dapodik_operator; feature flag scola_dapodik; Inferred from code — data prerequisite: remote connector, mapping tenant, dan master reference yang valid Inferred from code — memanggil endpoint berbentuk mutasi /api/dapodik/sync-logs?limit=:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu dapodik.overview (Dashboard), settings.school (Sekolah) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

dpo (3 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
dpo Audit Log PII /dpo/audit-log src/views/Dpo/DpoPiiAuditLog.vue:1 Confirmed from code — dpo; guard route memakai allowedRoles Inferred from code — halaman Audit Log PII pada /dpo/audit-log; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.resourceType, filters.userId, User, resource, field..., Jenis Resource, op.student, res.partner..., User ID; kolom=Pengguna, Resource, Field; filter=filters.search, filters.resourceType, filters.userId; aturan field=filters.userId: type=number Confirmed from code — fetchLogs, handleFilterChange Confirmed from code — /api/v1/privacy/pii-access-log/list @ src/services/privacy/privacyPiiLog.service.js:10 -> ../custom_addons_scola/gcgscola/scola_core/controllers/privacy_api.py:101 Confirmed from code — sesi autentik; capability privacy.pii_log.view; allowedRoles dpo; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu dpo.overview (Audit & Consent) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
dpo Consent Data /dpo/consent src/views/Dpo/DpoConsentList.vue:1 Confirmed from code — dpo; guard route memakai allowedRoles Inferred from code — halaman Consent Data pada /dpo/consent; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=form.subject_type, form.subject_name, form.consent_type, form.state, form.policy_version, form.purpose, form.notes, filters.search, filters.consentType, filters.state, filters.subjectType, Nama subjek *, +7 lainnya; kolom=Subjek, Jenis, Diberikan; filter=filters.search, filters.consentType, filters.state, filters.subjectType; Inferred from code — option/status/display-label candidates=Pegawai, Pendaftar SPMB, Pemrosesan Akademik, Komunikasi / Promosi, Kontak Darurat, Berbagi ke Pihak Ketiga, Foto / Media, Biometrik / Face / RFID, Consent disimpan, Consent diaktifkan, +1 lainnya Confirmed from code — Aktifkan, Cabut, fetchConsents, toggleForm, submitConsent, handleFilterChange, handleGrant, handleRevoke Confirmed from code — /api/v1/privacy/consent/grant @ src/services/privacy/privacyConsent.service.js:41 -> ../custom_addons_scola/gcgscola/scola_core/controllers/privacy_api.py:345; Confirmed from code — /api/v1/privacy/consent/list @ src/services/privacy/privacyConsent.service.js:14 -> ../custom_addons_scola/gcgscola/scola_core/controllers/privacy_api.py:269; Confirmed from code — /api/v1/privacy/consent/revoke @ src/services/privacy/privacyConsent.service.js:48 -> ../custom_addons_scola/gcgscola/scola_core/controllers/privacy_api.py:358; Confirmed from code — /api/v1/privacy/consent/save @ src/services/privacy/privacyConsent.service.js:33 -> ../custom_addons_scola/gcgscola/scola_core/controllers/privacy_api.py:316 Confirmed from code — sesi autentik; capability compliance.data_protection.view; allowedRoles dpo; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/privacy/consent/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu dpo.overview (Audit & Consent) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
dpo Audit Trail Sensitif /dpo/sensitive-audit src/views/Dpo/DpoSensitiveAuditLog.vue:1 Confirmed from code — dpo; guard route memakai allowedRoles Inferred from code — halaman Audit Trail Sensitif pada /dpo/sensitive-audit; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.resourceType, filters.eventType, filters.userId, User, resource, field..., Jenis Resource, op.student, res.partner..., User ID; kolom=Pengguna, Resource, Event, Field; filter=filters.search, filters.resourceType, filters.eventType, filters.userId; aturan field=filters.userId: type=number; Inferred from code — option/status/display-label candidates=Create, Write, Unlink, Export, Unmask, Grant Consent, Revoke Consent Confirmed from code — fetchLogs, handleFilterChange Confirmed from code — /api/v1/privacy/sensitive-audit/list @ src/services/privacy/privacySensitiveAudit.service.js:11 -> ../custom_addons_scola/gcgscola/scola_core/controllers/privacy_api.py:168 Confirmed from code — sesi autentik; capability privacy.audit.view; allowedRoles dpo; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu dpo.overview (Audit & Consent) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

finance (35 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
finance Aset Tetap Akuntansi /accounting/assets/dashboard src/views/AccountingManagement/AssetDepreciation/AssetDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Aset Tetap Akuntansi pada /accounting/assets/dashboard; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedAssets, filters.search; kolom=Nama Aset, Metode; filter=filters.search Confirmed from code — navigateToCreate, viewAsset Confirmed from code — /api/v1/accounting/asset-depreciations/assets/list @ src/services/accounting/asset-depreciation.service.js:9 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_asset_depreciations_api.py:22; Confirmed from code — /api/v1/accounting/asset-depreciations/stats @ src/services/accounting/asset-depreciation.service.js:46 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_asset_depreciations_api.py:13 Confirmed from code — sesi autentik; capability accounting.assets.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/assets/create P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Rekonsiliasi Bank /accounting/bank-reconciliation src/views/AccountingManagement/BankReconciliation/BankReconciliationList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Rekonsiliasi Bank pada /accounting/bank-reconciliation; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedReconciliations, filters.search; kolom=Saldo Awal, Saldo Akhir; filter=filters.search; sinyal validasi=custom validate Confirmed from code — navigateToCreate, viewReconciliation Confirmed from code — /api/v1/accounting/bank-reconciliation/list @ src/services/accounting/bank-reconciliation.service.js:21 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:212 Confirmed from code — sesi autentik; capability accounting.bank.reconcile; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/bank-reconciliation/create P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Buat Rekonsiliasi /accounting/bank-reconciliation/create src/views/AccountingManagement/BankReconciliation/BankReconciliationCreate.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Buat Rekonsiliasi pada /accounting/bank-reconciliation/create; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.journal_id, form.date, form.balance_start, form.balance_end_statement, 0.00, Journal Bank *, Tanggal Rekonsiliasi *, Saldo Awal *, Saldo Akhir (Statement) *; filter=form.date; sinyal validasi=custom validate; aturan field=form.date: type=date, form.balance_start: type=number, form.balance_end_statement: type=number, field: type=file Confirmed from code — cancel, createReconciliation, removeFile, handleFileSelect Confirmed from code — /api/v1/accounting/bank-reconciliation/save @ src/services/accounting/bank-reconciliation.service.js:34 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:247; Confirmed from code — /api/v1/accounting/bank-reconciliation/action @ src/services/accounting/bank-reconciliation.service.js:46 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:263; Confirmed from code — /api/v1/accounting/bank-reconciliation/bank-journals @ src/services/accounting/bank-reconciliation.service.js:92 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:302 Confirmed from code — sesi autentik; capability accounting.bank.reconcile; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/bank-reconciliation/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/bank-reconciliation P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Daftar Budget /accounting/budget src/views/AccountingManagement/Budget/BudgetList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Daftar Budget pada /accounting/budget; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.fiscalYear, filters.state, selectedBudgets, filters.search, Tahun Fiskal; kolom=Nama Budget, Rencana, Aktual, Varians; filter=filters.fiscalYear, filters.state, filters.search; Inferred from code — option/status/display-label candidates=Total Budget, Budget draft, Disetujui, Budget disetujui, Budget aktif, Budget Dihapus Confirmed from code — navigateToCreate, filterByStatus, fetchBudgets, navigateToBudget Confirmed from code — /api/v1/accounting/budget/list @ src/services/accounting/budget.service.js:21 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:69; Confirmed from code — /api/v1/accounting/budget/delete @ src/services/accounting/budget.service.js:47 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:131 Confirmed from code — sesi autentik; capability accounting.budget.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_bos_rkas; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/budget/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/budget/create P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Buat Budget /accounting/budget/create src/views/AccountingManagement/Budget/BudgetForm.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Buat Budget pada /accounting/budget/create; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.name, formData.code, formData.fiscal_year_id, formData.department_id, formData.date_from, formData.date_to, newLine.account_id, newLine.planned_amount, newLine.notes, formData.approver_ids, formData.notes, Contoh: Anggaran Operasional 2026, +12 lainnya; kolom=Akun, Direncanakan, Catatan, Aksi; filter=formData.date_from, formData.date_to; sinyal validasi=required, min/max; aturan field=formData.name: required, type=text, formData.code: required, type=text, formData.fiscal_year_id: required, formData.date_from: required, type=date, formData.date_to: required, type=date, newLine.planned_amount: min=0, type=number, newLine.notes: type=text Confirmed from code — goBack, handleSubmit, addBudgetLine, removeBudgetLine Confirmed from code — /api/v1/accounting/budget/save @ src/services/accounting/budget.service.js:35 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:115; Confirmed from code — /api/v1/accounting/budget/detail @ src/services/accounting/budget.service.js:28 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:85 Confirmed from code — sesi autentik; capability accounting.budget.create; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_bos_rkas; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field fiscal_year_id, department_id, account_id, approver_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/budget/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/budget, /accounting/budget/:id/edit P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Dashboard Budget /accounting/budget/dashboard src/views/AccountingManagement/Budget/BudgetDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Dashboard Budget pada /accounting/budget/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedFiscalYear, Tahun Fiskal; kolom=Departemen, Rencana, Aktual, Tersedia, Varians Confirmed from code — Lihat Semua →, navigateToList, navigateToCreate, fetchBudgetSummary, navigateToBudget Confirmed from code — /api/v1/accounting/budget/list @ src/services/accounting/budget.service.js:21 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:69 Confirmed from code — sesi autentik; capability accounting.budget.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_bos_rkas; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/budget/create, /accounting/budget P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Bank /accounting/configuration/bank-account src/views/AccountingManagement/Configuration/bank/BankAccountList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Bank pada /accounting/configuration/bank-account; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=searchQuery, form.acc_number, form.bank_name, form.partner_id, partnerInput, No Rekening, ID Partner (kosongkan jika milik perusahaan), CTBC, BCA, Mandiri..., 6104 4475 2245 6789, Kosongkan jika milik perusahaan, Pemilik (Partner ID); filter=searchQuery; sinyal validasi=required, min/max; aturan field=searchQuery: required, form.acc_number: required, form.bank_name: required, field: type=file; Inferred from code — option/status/display-label candidates=Account Deleted, Failed to Save, Changes Saved Confirmed from code — Add new card, Load more…, Save changes, set openMenuId, openAddModal, toggleMenu, openEditModal, deleteBank, submitBank, closeForm, copyAccNumber, openInOdoo, createNewBank, clearPartner, +2 lainnya Confirmed from code — /api/v1/accounting/partner-banks/list @ src/services/admin/accountingAdmin.service.js:315 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:610; Confirmed from code — /api/v1/accounting/partner-banks/save @ src/services/admin/accountingAdmin.service.js:323 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:625; Confirmed from code — /api/v1/accounting/partner-banks/delete @ src/services/admin/accountingAdmin.service.js:331 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:641; Confirmed from code — /api/v1/accounting/banks/list @ src/services/admin/accountingAdmin.service.js:338 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:652; Confirmed from code — /api/v1/accounting/banks/save @ src/services/admin/accountingAdmin.service.js:346 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:667; Confirmed from code — /api/v1/accounting/partners/list @ src/services/admin/accountingAdmin.service.js:202 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:402 Confirmed from code — sesi autentik; capability accounting.bank.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field partner_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/partner-banks/save, /api/v1/accounting/partner-banks/delete, /api/v1/accounting/banks/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.config_assets (Pengaturan Akuntansi & Aset) P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Bagan Akun /accounting/configuration/coa src/views/AccountingManagement/Configuration/coa/COA.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Bagan Akun pada /accounting/configuration/coa; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=localFilters.type, localFilters.reconcile, uploadedFiles, activeTab, Account Type, All Account Types, Reconcile, All Accounts; kolom=Code, Account Name, Type, Reconcile, Actions; filter=localFilters.type, localFilters.reconcile; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=All Account Types, Receivable, Bank and Cash, Current Assets, Non-current Assets, Prepayments, Fixed Assets, Payable, Credit Card, Current Liabilities, +16 lainnya Confirmed from code — set showImportDialog, handleCreate, handleImport, downloadTemplate, handleClose, prevStep, nextStep, handleFilterChange, handleEdit, handleToggleDeprecate, openDeleteDialog, handleDeleteConfirm Confirmed from code — /api/v1/accounting/accounts/save @ src/services/admin/accountingAdmin.service.js:154 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:323; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291; Confirmed from code — /api/v1/accounting/accounts/count @ src/services/admin/accountingAdmin.service.js:141 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:306; Confirmed from code — /api/v1/accounting/accounts/delete @ src/services/admin/accountingAdmin.service.js:162 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:339 Confirmed from code — sesi autentik; capability accounting.chart_of_accounts.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/accounts/save, /api/v1/accounting/accounts/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/configuration/coa/create, /accounting/configuration/coa/:id/edit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Konfigurasi Jurnal /accounting/configuration/journal src/views/AccountingManagement/Configuration/journal/JournalList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi Jurnal pada /accounting/configuration/journal; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.type, selectedRows, Search, Search by name or code..., Type, All Types; kolom=Code, Journal Name, Type, Default Account; filter=filters.search, filters.type, Search, Search by name or code...; aturan field=filters.search: type=search; Inferred from code — option/status/display-label candidates=All Types, Sales, Purchase, Miscellaneous Confirmed from code — router.push, clearFilters, loadJournals Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useJournalEntry.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.journal.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/configuration/journals/new, /accounting/configuration/journals/:id/edit, /accounting/configuration/journals/:id/configure; Missing or unclear — named route tidak ter-resolve: journalentrylist P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Konfigurasi Pajak /accounting/configuration/taxes src/views/AccountingManagement/Configuration/taxes/Taxes.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi Pajak pada /accounting/configuration/taxes; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.country_id, form.sequence, form.tax_payable_account_id, form.tax_receivable_account_id, form.advance_tax_payment_account_id, localFilters.type_tax_use, localFilters.tax_scope, activeTab, Name, eg. Tax 15%, Country, +7 lainnya; kolom=Sequence, Nama Pajak, Tax Group, Tarif; filter=localFilters.type_tax_use, localFilters.tax_scope; sinyal validasi=required, custom validate; aturan field=form.name: required, form.sequence: type=number; Inferred from code — option/status/display-label candidates=Penjualan, Pembelian, Refund, Konsumsi, Layanan, Error, Success Confirmed from code — + Tambah Baru, handleSave, openAddForm, editGroup, deleteGroup, cancelForm, handleClose, set showTaxConfig, handleCreate, handleFilterChange, handleEdit, handleToggleActive, openDeleteDialog, handleDeleteConfirm Confirmed from code — /api/v1/accounting/tax-groups/list @ src/services/admin/accountingAdmin.service.js:398 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:761; Confirmed from code — /api/v1/accounting/tax-groups/save @ src/services/admin/accountingAdmin.service.js:407 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:777; Confirmed from code — /api/v1/accounting/tax-groups/delete @ src/services/admin/accountingAdmin.service.js:415 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:793; Confirmed from code — /api/v1/accounting/countries/list @ src/services/admin/accountingAdmin.service.js:245 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:479; Confirmed from code — /api/v1/accounting/accounts/list @ src/services/admin/accountingAdmin.service.js:130 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:291; Confirmed from code — /api/v1/accounting/taxes/list @ src/services/admin/accountingAdmin.service.js:358 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:688; Confirmed from code — /api/v1/accounting/taxes/count @ src/services/admin/accountingAdmin.service.js:370 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:714; Confirmed from code — /api/v1/accounting/taxes/save @ src/services/admin/accountingAdmin.service.js:383 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:734; Confirmed from code — /api/v1/accounting/taxes/delete @ src/services/admin/accountingAdmin.service.js:391 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:750 Confirmed from code — sesi autentik; capability accounting.tax.config; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field country_id, tax_payable_account_id, tax_receivable_account_id, advance_tax_payment_account_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/tax-groups/save, /api/v1/accounting/tax-groups/delete, /api/v1/accounting/taxes/save, /api/v1/accounting/taxes/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/configuration/taxes/create, /accounting/configuration/taxes/:id/edit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Invoice /accounting/customer-invoices src/views/AccountingManagement/Customer/CustomerInvoice.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Invoice pada /accounting/customer-invoices; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=showPaymentModal, confirmState.show, filters.customer_id, filters.period, filters.dateRange, paymentForm.journal_id, paymentForm.amount, paymentForm.payment_method_id, paymentForm.date, paymentForm.communication, paymentForm.payment_difference_handling, Customer, +1 lainnya; kolom=Pelanggan, Sisa Piutang; filter=filters.customer_id, filters.period, filters.dateRange, paymentForm.date, Periode; sinyal validasi=required; aturan field=paymentForm.journal_id: required, paymentForm.amount: required, type=number, paymentForm.payment_method_id: required, paymentForm.date: required, paymentForm.payment_difference_handling: type=radio; Inferred from code — option/status/display-label candidates=Invoice Deleted, Delete Failed, Reset ke Draft, Total Invoices, Paid Invoices, Invoice Confirmed, Confirm Failed, Invoice Canceled, Cancel Failed, Reset to Draft, +18 lainnya Confirmed from code — toggleStatVisibility, set showActionsInfo, set activeTab, set showFilterModal, goToCreateInvoice, handleConfirmAction, set filters.period, resetFilters, applyFilters, submit, handleClose Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/admin/accounting/accountsReceivable.service.js, src/services/admin/accounting/customerInvoice.service.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.customer_invoices.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field customer_id, journal_id, payment_method_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/customer-invoices/new, /accounting/customer-invoices/edit/:id, /accounting/customer-invoices/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Customer /accounting/customer-list src/views/AccountingManagement/Customer/CustomerList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Customer pada /accounting/customer-list; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, confirmState.show, form.company_type, form.name, form.email, form.phone, form.street, form.city, form.zip, form.country_id, Nama Customer, Masukkan nama customer, +12 lainnya; kolom=Kontak, Kelengkapan Data; filter=form.company_type; sinyal validasi=required; aturan field=form.company_type: type=radio, form.name: required, form.email: required, type=email; Inferred from code — option/status/display-label candidates=Aktif, Tidak Aktif, Nonaktifkan Customer, Aktifkan Customer, Customer Diarsipkan, Customer Dihapus Confirmed from code — openAddModal, handleConfirmAction, submitCustomer Confirmed from code — /api/v1/accounting/partners/list @ src/services/admin/accountingAdmin.service.js:202 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:402; Confirmed from code — /api/v1/accounting/partners/count @ src/services/admin/accountingAdmin.service.js:214 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:417; Confirmed from code — /api/v1/accounting/partners/save @ src/services/admin/accountingAdmin.service.js:222 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:433; Confirmed from code — /api/v1/accounting/partners/delete @ src/services/admin/accountingAdmin.service.js:230 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:460; Confirmed from code — /api/v1/accounting/partners/set-active @ src/services/admin/accountingAdmin.service.js:237 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:449; Confirmed from code — /api/v1/accounting/countries/list @ src/services/admin/accountingAdmin.service.js:245 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:479 Confirmed from code — sesi autentik; capability accounting.customers.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field country_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/partners/save, /api/v1/accounting/partners/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.receivables (Pemasukan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Penerimaan Piutang /accounting/customer-receivable src/views/AccountingManagement/Customer/Receivable.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Penerimaan Piutang pada /accounting/customer-receivable; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filterRange, filter.method, confirmState.show, selectedPayments, searchQuery, formData.internal_transfer, formData.payment_type, formData.customer_id, formData.journal_id, formData.payment_method_line_id, formData.customer_bank_account, formData.destination_journal_id, +19 lainnya; kolom=Pelanggan, Actions; filter=filterRange, filter.method, searchQuery, formData.date, Payment Date, Select payment date; sinyal validasi=required; aturan field=formData.internal_transfer: type=checkbox, formData.payment_type: type=radio, formData.customer_id: required, formData.journal_id: required, formData.payment_method_line_id: required, formData.destination_journal_id: required, formData.amount: required, type=number, formData.date: required; Inferred from code — option/status/display-label candidates=Akuntansi, Customer, Penerimaan, Terbaru, Terlama, Add Customer Payment, Payment Details, Payment, Total Penerimaan, Penerimaan tunai, +12 lainnya Confirmed from code — openAddModal, handleExport, fetchPayments, toggleStatVisibility, set showCharts, set showFilterModal, handleDateRangeChange, resetFilters, handleConfirmAction, viewDetail, closeModal, handleSavePayment Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/admin/accounting/accountsReceivable.service.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.customer_receipts.manage; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field customer_id, journal_id, payment_method_line_id, destination_journal_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu finance.receivables (Pemasukan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Internal Transfer /accounting/internal-transfer src/views/AccountingManagement/InternalTransfer.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Internal Transfer pada /accounting/internal-transfer; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterRange, advancedFilter.payment_type, advancedFilter.journal_type, confirmState.show, selectedPayments, searchQuery, formData.payment_type, formData.journal_id, formData.destination_journal_id, formData.amount, formData.date, formData.memo; filter=filterRange, advancedFilter.payment_type, advancedFilter.journal_type, searchQuery, formData.date; sinyal validasi=required; aturan field=formData.payment_type: required, formData.destination_journal_id: required, formData.amount: required, type=number, formData.date: required; Inferred from code — option/status/display-label candidates=Transfer, View, Post, Delete, Reset to Draft Confirmed from code — openAddModal, toggleStatVisibility, set showCharts, set showAdvancedFilterModal, handleDateRangeChange, resetFilters, resetAdvancedFilters, applyAdvancedFilters, handleConfirmAction, viewDetail, closeModal, handleSubmit Confirmed from code — /api/v1/accounting/payments/list @ src/services/admin/accountingAdmin.service.js:261 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:510; Confirmed from code — /api/v1/accounting/payments/count @ src/services/admin/accountingAdmin.service.js:272 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:528; Confirmed from code — /api/v1/accounting/payments/detail @ src/services/admin/accountingAdmin.service.js:277 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:535; Confirmed from code — /api/v1/accounting/payments/create @ src/services/admin/accountingAdmin.service.js:169 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:350; Confirmed from code — /api/v1/accounting/payments/write @ src/services/admin/accountingAdmin.service.js:285 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:549; Confirmed from code — /api/v1/accounting/payments/delete @ src/services/admin/accountingAdmin.service.js:293 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:565; Confirmed from code — /api/v1/accounting/payments/post @ src/services/admin/accountingAdmin.service.js:174 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:360; Confirmed from code — /api/v1/accounting/payments/draft @ src/services/admin/accountingAdmin.service.js:300 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:576; Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234 Confirmed from code — sesi autentik; capability accounting.internal_transfer.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id, destination_journal_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payments/create, /api/v1/accounting/payments/delete, /api/v1/accounting/payments/post; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.cash (Kas & Bank) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Valuasi Persediaan /accounting/inventory-valuation/dashboard src/views/AccountingManagement/InventoryValuation/ValuationDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Valuasi Persediaan pada /accounting/inventory-valuation/dashboard; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedReports, filters.search, newReport.name, newReport.date, Contoh: Valuasi Stok - Januari 2026, Tanggal Valuasi; kolom=Total Qty; filter=filters.search, newReport.date; sinyal validasi=required; aturan field=newReport.name: required, newReport.date: required, type=date Confirmed from code — set showCreateReport, viewReport, createReport Confirmed from code — /api/v1/accounting/inventory-valuation/stats @ src/services/accounting/inventory-valuation.service.js:8 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:551; Confirmed from code — /api/v1/accounting/inventory-valuation/reports/save @ src/services/accounting/inventory-valuation.service.js:21 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:567; Confirmed from code — /api/v1/accounting/inventory-valuation/reports/list @ src/services/accounting/inventory-valuation.service.js:13 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:558; Confirmed from code — /api/v1/accounting/inventory-valuation/reports/generate @ src/services/accounting/inventory-valuation.service.js:28 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:578 Confirmed from code — sesi autentik; capability accounting.inventory_valuation.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/inventory-valuation/reports/save, /api/v1/accounting/inventory-valuation/reports/generate; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.config_assets (Pengaturan Akuntansi & Aset) P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Jurnal Akuntansi /accounting/journal/journal-entry src/views/AccountingManagement/Journal/JournalEntryList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Jurnal Akuntansi pada /accounting/journal/journal-entry; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.journal, filters.dateRange, filters.search, filters.status, selectedEntries, confirmState.show, Select Journal, Search by name or reference...; kolom=Nomor Jurnal, Jurnal, Nominal; filter=filters.journal, filters.dateRange, filters.search, filters.status, Search by name or reference...; aturan field=filters.search: type=text; Inferred from code — option/status/display-label candidates=Akuntansi, Jurnal Akuntansi, Total Entries, Posted, Cancelled, Jurnal dibatalkan, Reset to Draft, View Details, Post Entry, Delete, +3 lainnya Confirmed from code — handleExport, handleCreate, filterByStatus, set showFilterModal, handleFilterChange, resetAllFilters, handleBulkPost, handleBulkDelete, viewDetail, handleConfirmAction Confirmed from code — /api/v1/accounting/moves/count @ src/services/admin/accountingAdmin.service.js:21 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:127 Confirmed from code — sesi autentik; capability accounting.journal.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /journal-entry/create, /accounting/journal/journal-entry/create, /accounting/journal/journal-entry/:id, /accounting/journal/journal-entry/:id/edit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Menunggu Persetujuan /accounting/payment-approval src/views/AccountingManagement/PaymentApproval/PaymentApprovalList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Menunggu Persetujuan pada /accounting/payment-approval; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, rejectReason, Tulis alasan penolakan...; kolom=Ref Pembayaran, Tgl Bayar, Penyetuju, Tgl Setuju; filter=filters.search; aturan field=filters.search: type=text; Inferred from code — option/status/display-label candidates=Disetujui, Alasan Diperlukan Confirmed from code — router.push, resetFilters, handleStatusFilter, loadApprovals, approvePayment, showRejectDialog, prevPage, nextPage, closeRejectDialog, confirmReject Confirmed from code — /api/v1/accounting/payment-approvals/payments/:param/approve @ src/services/accounting/payment-approval.service.js:18 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:62; Confirmed from code — /api/v1/accounting/payment-approvals/pending/list @ src/services/accounting/payment-approval.service.js:9 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:15; Confirmed from code — /api/v1/accounting/payment-approvals/payments/:param/reject @ src/services/accounting/payment-approval.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:73 Confirmed from code — sesi autentik; capability accounting.payment_approval.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payment-approvals/payments/:param/approve, /api/v1/accounting/payment-approvals/payments/:param/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/payment-approval/rules, /accounting/payment-approval/delegations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Dashboard Persetujuan /accounting/payment-approval/dashboard src/views/AccountingManagement/PaymentApproval/PaymentApprovalDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Dashboard Persetujuan pada /accounting/payment-approval/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=rejectReason, Tulis alasan penolakan...; kolom=Ref Pembayaran; Inferred from code — option/status/display-label candidates=Pembayaran Disetujui, Alasan Diperlukan, Pembayaran Ditolak Confirmed from code — approvePayment, showRejectDialog, closeRejectDialog, confirmReject Confirmed from code — /api/v1/accounting/payment-approvals/payments/:param/approve @ src/services/accounting/payment-approval.service.js:18 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:62; Confirmed from code — /api/v1/accounting/payment-approvals/pending/list @ src/services/accounting/payment-approval.service.js:9 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:15; Confirmed from code — /api/v1/accounting/payment-approvals/payments/:param/reject @ src/services/accounting/payment-approval.service.js:26 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:73; Confirmed from code — /api/v1/accounting/payment-approvals/stats @ src/services/accounting/payment-approval.service.js:114 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_payment_approvals_api.py:106 Confirmed from code — sesi autentik; capability accounting.payment_approval.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payment-approvals/payments/:param/approve, /api/v1/accounting/payment-approvals/payments/:param/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.budget_approval (Anggaran & Persetujuan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Refund Payslip /accounting/payroll/payslip-refunds src/views/AccountingManagement/Vendor/PayslipRefunds.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Refund Payslip pada /accounting/payroll/payslip-refunds; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filter.start, filter.end, filter.search, pdfFilter.start, pdfFilter.end, paidSearch, unpaidSearch, paymentForm.journal_id, paymentForm.amount, paymentForm.payment_method_id, paymentForm.date, paymentForm.communication, +2 lainnya; kolom=Nama Karyawan; filter=filter.start, filter.end, filter.search, pdfFilter.start, pdfFilter.end, paidSearch, unpaidSearch, paymentForm.date; aturan field=filter.start: type=date, filter.end: type=date, filter.search: type=text, pdfFilter.start: type=date, pdfFilter.end: type=date, paidSearch: type=text, unpaidSearch: type=text, paymentForm.amount: type=number, paymentForm.date: type=date; Inferred from code — option/status/display-label candidates=Total Gaji, Total Penggajian, Dibayar Confirmed from code — Unduh Laporan PDF, Bayar Semua, Set Semua ke Draft, Register Payment, Set ke Draft, Unduh PDF, &times;, Create Payment, Discard, fetchPayslips, generatePDFReport, payAllUnpaid, setAllDraft, openPaymentModal, +4 lainnya Confirmed from code — /api/v1/accounting/moves/list @ src/services/admin/accountingAdmin.service.js:10 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:111; Confirmed from code — /api/v1/accounting/moves/action @ src/services/admin/accountingAdmin.service.js:70 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:207; Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234; Confirmed from code — /api/v1/accounting/payment-methods/all @ src/services/admin/accountingAdmin.service.js:197 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:497; Confirmed from code — /api/v1/accounting/payments/journal-methods @ src/services/admin/accountingAdmin.service.js:307 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:587; Confirmed from code — /api/v1/accounting/payments/list @ src/services/admin/accountingAdmin.service.js:261 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:510; Confirmed from code — /api/v1/accounting/payments/register-from-move @ src/services/admin/accountingAdmin.service.js:543 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:1076; Confirmed from code — /api/v1/payroll/admin/by-move-ids @ src/services/admin/payslipAdmin.service.js:171 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payslip_admin_api.py:229 Confirmed from code — sesi autentik; capability accounting.vendor_payments.manage; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field journal_id, payment_method_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payments/register-from-move; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.payables (Pengeluaran) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Produk Akuntansi /accounting/products src/views/AccountingManagement/ProductsList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Produk Akuntansi pada /accounting/products; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, activeTab, form.name, form.categ_id, form.default_code, form.standard_price, form.list_price, form.type, form.taxes_id, form.supplier_taxes_id, form.property_account_income_id, form.property_account_expense_id, +4 lainnya; filter=searchQuery; sinyal validasi=required, min/max, custom validate; aturan field=searchQuery: type=text, field: type=file, form.name: required, type=text, form.categ_id: required, form.default_code: type=text, form.standard_price: min=0, type=number, form.list_price: required, min=0, type=number; Inferred from code — option/status/display-label candidates=Arsip, Produk dihapus, Produk diarsipkan, Produk diaktifkan Confirmed from code — Unarchive, Hapus gambar, Hapus pilihan, Edit, openCreateModal, goToCreate, setTab, openEditModal, goToEdit, deleteProduct, unarchiveProduct, openViewModal, submitForm, onSelectImage, +4 lainnya Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/composables/useNotification.js, src/services/admin/accountingAdmin.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.products.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field categ_id, taxes_id, supplier_taxes_id, property_account_income_id, property_account_expense_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Missing or unclear — named route tidak ter-resolve: ProductCreate, ProductEdit P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Pengingat Invoice /accounting/reminder/dashboard src/views/AccountingManagement/Reminder/ReminderDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Pengingat Invoice pada /accounting/reminder/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Pelanggan Confirmed from code — Lihat Semua →, navigateToConfiguration, navigateToCreate, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/accounting/invoice-reminder.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.reminder.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/reminder/config, /accounting/reminder/create, /accounting/reminder/list P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Laporan Keuangan /accounting/reports src/views/AccountingManagement/Reports/ReportsView.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Laporan Keuangan pada /accounting/reports; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Profit and Loss, Neraca, Balance Sheet, Arus Kas, Cash Flow Statement, Buku Besar, General Ledger, Jurnal Umum, General Journal, Neraca Saldo, +3 lainnya Confirmed from code — navigateToReport Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability accounting.reports.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu finance.reports (Laporan) P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Dashboard Pajak /accounting/tax/dashboard src/views/AccountingManagement/Tax/TaxDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Dashboard Pajak pada /accounting/tax/dashboard; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedPeriod.start, selectedPeriod.end, Periode Mulai, Periode Akhir; filter=selectedPeriod.start, selectedPeriod.end, Periode Mulai, Periode Akhir; aturan field=selectedPeriod.start: type=date, selectedPeriod.end: type=date Confirmed from code — Buat SPT Masa PPh21, Buat SPT Masa PPh23, Buat SPT Masa PPN, Lihat Semua →, Lihat Semua Laporan, navigateToConfiguration, fetchTaxSummary, navigateToReport, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/accounting/tax-compliance.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability accounting.tax.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /accounting/tax/configuration, /accounting/tax/reports/create?type=pph21, /accounting/tax/reports/create?type=pph23, /accounting/tax/reports/create?type=ppn, /accounting/tax/reports P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Laporan Pajak /accounting/tax/reports src/views/AccountingManagement/Tax/TaxReportList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Laporan Pajak pada /accounting/tax/reports; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.reportType, filters.state, selectedReports, filters.search; kolom=Total Pajak; filter=filters.reportType, filters.state, filters.search; Inferred from code — option/status/display-label candidates=PPh21, PPh23, PPN, Filed Confirmed from code — createReport, viewReport Confirmed from code — /api/v1/accounting/tax-compliance/reports/list @ src/services/accounting/tax-compliance.service.js:75 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_modules_api.py:497 Confirmed from code — sesi autentik; capability accounting.tax.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/tax/reports/create P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Tagihan Vendor /accounting/vendor-bills src/views/AccountingManagement/Vendor/VendorBills.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Tagihan Vendor pada /accounting/vendor-bills; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=showPaymentModal, filters.vendor_id, filters.period, filters.dateRange, confirmDialog.show, paymentForm.journal_id, paymentForm.amount, paymentForm.payment_method_id, paymentForm.date, paymentForm.communication, paymentForm.payment_difference_handling, Vendor; filter=filters.vendor_id, filters.period, filters.dateRange, paymentForm.date; sinyal validasi=required; aturan field=paymentForm.journal_id: required, paymentForm.amount: required, type=number, paymentForm.payment_method_id: required, paymentForm.date: required, paymentForm.payment_difference_handling: type=radio; Inferred from code — option/status/display-label candidates=Bill Deleted, Delete Failed, Total Bills, Paid Bills, Bill Confirmed, Confirm Failed, Bill Canceled, Cancel Failed, Reset to Draft, Reset Failed, +16 lainnya Confirmed from code — toggleStatVisibility, set showActionsInfo, set activeTab, set showFilterModal, goToCreateBill, set filters.period, resetFilters, applyFilters, handleConfirmDialogConfirm, submit, handleClose Confirmed from code — /api/v1/procurement/vendors/list @ src/services/admin/procurement.service.js:213 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:166 Confirmed from code — sesi autentik; capability accounting.vendor_bills.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field vendor_id, journal_id, payment_method_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/vendor-bills/new, /accounting/vendor-bills/edit/:id, /accounting/vendor-bills/:id P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Vendor /accounting/vendor-list src/views/AccountingManagement/Vendor/VendorList.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Vendor pada /accounting/vendor-list; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, confirmState.show, form.company_type, form.name, form.email, form.phone, form.street, form.city, form.zip, form.country_id, Nama Vendor, Masukkan nama vendor, +12 lainnya; kolom=Kontak, Kelengkapan Data; filter=form.company_type; sinyal validasi=required; aturan field=form.company_type: type=radio, form.name: required, form.email: required, type=email; Inferred from code — option/status/display-label candidates=Aktif, Tidak Aktif, Nonaktifkan Vendor, Aktifkan Vendor, Vendor Diarsipkan, Vendor Dihapus Confirmed from code — openAddModal, handleConfirmAction, submitVendor Confirmed from code — /api/v1/accounting/partners/list @ src/services/admin/accountingAdmin.service.js:202 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:402; Confirmed from code — /api/v1/accounting/partners/count @ src/services/admin/accountingAdmin.service.js:214 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:417; Confirmed from code — /api/v1/accounting/partners/save @ src/services/admin/accountingAdmin.service.js:222 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:433; Confirmed from code — /api/v1/accounting/partners/delete @ src/services/admin/accountingAdmin.service.js:230 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:460; Confirmed from code — /api/v1/accounting/partners/set-active @ src/services/admin/accountingAdmin.service.js:237 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:449; Confirmed from code — /api/v1/accounting/countries/list @ src/services/admin/accountingAdmin.service.js:245 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:479 Confirmed from code — sesi autentik; capability accounting.vendors.view; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field country_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/partners/save, /api/v1/accounting/partners/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.payables (Pengeluaran) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Pembayaran Vendor /accounting/vendor-payable src/views/AccountingManagement/Vendor/Payable.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Pembayaran Vendor pada /accounting/vendor-payable; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterRange, filter.method, confirmState.show, selectedPayments, searchQuery, formData.internal_transfer, formData.payment_type, formData.vendor_id, formData.journal_id, formData.payment_method_line_id, formData.vendor_bank_account, formData.destination_journal_id, +4 lainnya; filter=filterRange, filter.method, searchQuery, formData.date; sinyal validasi=required; aturan field=formData.internal_transfer: type=checkbox, formData.payment_type: type=radio, formData.vendor_id: required, formData.journal_id: required, formData.payment_method_line_id: required, formData.destination_journal_id: required, formData.amount: required, type=number, formData.date: required; Inferred from code — option/status/display-label candidates=Akuntansi, Vendor, Terbaru, Terlama, Payment, Jumlah Pembayaran, View, Post, Delete, Reset to Draft, +5 lainnya Confirmed from code — openAddModal, handleExport, fetchPayments, toggleStatVisibility, set showCharts, set showFilterModal, handleDateRangeChange, resetFilters, handleConfirmAction, viewDetail, closeModal, handleSavePayment Confirmed from code — /api/v1/accounting/payments/list @ src/services/admin/accountingAdmin.service.js:261 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:510; Confirmed from code — /api/v1/accounting/payments/count @ src/services/admin/accountingAdmin.service.js:272 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:528; Confirmed from code — /api/v1/accounting/payments/detail @ src/services/admin/accountingAdmin.service.js:277 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:535; Confirmed from code — /api/v1/accounting/payments/create @ src/services/admin/accountingAdmin.service.js:169 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:350; Confirmed from code — /api/v1/accounting/payments/write @ src/services/admin/accountingAdmin.service.js:285 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:549; Confirmed from code — /api/v1/accounting/payments/delete @ src/services/admin/accountingAdmin.service.js:293 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:565; Confirmed from code — /api/v1/accounting/payments/post @ src/services/admin/accountingAdmin.service.js:174 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:360; Confirmed from code — /api/v1/accounting/payments/draft @ src/services/admin/accountingAdmin.service.js:300 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:576; Confirmed from code — /api/v1/accounting/payments/journal-methods @ src/services/admin/accountingAdmin.service.js:307 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:587; Confirmed from code — /api/v1/accounting/partner-banks/list @ src/services/admin/accountingAdmin.service.js:315 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:610; Confirmed from code — /api/v1/accounting/partners/list @ src/services/admin/accountingAdmin.service.js:202 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:402; Confirmed from code — /api/v1/accounting/journals/list @ src/services/admin/accountingAdmin.service.js:85 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:234 Confirmed from code — sesi autentik; capability accounting.vendor_payments.manage; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_account; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field vendor_id, journal_id, payment_method_line_id, destination_journal_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/accounting/payments/create, /api/v1/accounting/payments/delete, /api/v1/accounting/payments/post; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.payables (Pengeluaran) P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Terima Pembayaran Tunai /admin/finance/kasir-terima-payment src/views/AdminViews/PaymentConfig/KasirTerimaPayment.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer, cashier; guard route memakai allowedRoles Inferred from code — halaman Terima Pembayaran Tunai pada /admin/finance/kasir-terima-payment; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, amountInput, kasirNotes, Nama siswa, nomor invoice, NIS..., Masukkan jumlah pembayaran, Contoh: Pembayaran SPP bulan Januari 2026, Jumlah Diterima (Rp), Catatan Kasir (opsional); filter=searchQuery; sinyal validasi=min/max; aturan field=searchQuery: type=text, amountInput: min=1, max=selectedInvoice.amount_residual, type=number, kasirNotes: type=text Confirmed from code — searchInvoices, selectInvoice, clearSelection, handleReceiveCash, set showReceiptModal, printReceipt Confirmed from code — /api/v1/finance/spp/search-invoice @ src/views/AdminViews/PaymentConfig/KasirTerimaPayment.vue:81 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:502; Confirmed from code — /api/v1/payment/cash/receive @ src/services/finance/manualPayment.service.js:80 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:345 Confirmed from code — sesi autentik; capability finance.billing.receive_cash; allowedRoles admin, school_admin, head_admin, treasurer, cashier; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu finance.spp (SPP & Biaya) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Konfirmasi Transfer /admin/finance/konfirmasi-transfer src/views/AdminViews/PaymentConfig/KonfirmasiTransfer.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Konfirmasi Transfer pada /admin/finance/konfirmasi-transfer; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, verifyNotes, rejectReason, Nama siswa, referensi, invoice..., Catatan Verifikasi (opsional); kolom=Referensi, Invoice, Jumlah, Tgl Transfer, Pengirim, Bukti, Diajukan, Aksi; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — loadData, openDetail, prevPage, nextPage, set showDetailModal, openProofImage, set showVerifyForm, handleVerify, set showRejectForm, handleReject, set showProofModal, downloadProof Confirmed from code — /api/v1/payment/manual/:param/verify @ src/services/finance/manualPayment.service.js:67 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:286; Confirmed from code — /api/v1/payment/pending-verification @ src/services/finance/manualPayment.service.js:98 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:435; Confirmed from code — /api/v1/payment/proof/:param/image @ src/services/finance/manualPayment.service.js:103 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:562; Confirmed from code — /api/v1/payment/manual/:param/reject @ src/services/finance/manualPayment.service.js:72 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/manual_payment_api.py:316 Confirmed from code — sesi autentik; capability finance.billing.verify; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/payment/manual/:param/verify, /api/v1/payment/manual/:param/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.spp (SPP & Biaya) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Setup Pembayaran /admin/finance/payment-setup src/views/AdminViews/PaymentConfig/PaymentSetup.vue:1 Confirmed from code — admin, school_admin, head_admin, treasurer; guard route memakai allowedRoles Inferred from code — halaman Setup Pembayaran pada /admin/finance/payment-setup; tujuan diringkas dari aksi interaktif Confirmed from code — field=bankForm.name, bankForm.bank_name, bankForm.branch, bankForm.account_number, bankForm.account_holder, bankForm.notes, bankForm.sequence, gatewayForm.name, gatewayForm.provider, gatewayForm.environment, gatewayForm[method.key], gatewayForm.va_expiry_hours, +4 lainnya; sinyal validasi=min/max; aturan field=bankForm.name: type=text, bankForm.bank_name: type=text, bankForm.branch: type=text, bankForm.account_number: type=text, bankForm.account_holder: type=text, bankForm.sequence: min=1, type=number, gatewayForm.name: type=text, gatewayForm[method.key]: type=checkbox, gatewayForm.va_expiry_hours: min=1, max=720, type=number, gatewayForm.qris_expiry_minutes: min=5, max=1440, type=number; Inferred from code — option/status/display-label candidates=Manual (Transfer / Tunai saja), Midtrans, Xendit, DOKU, Sandbox (Testing), Production (Live), VA BCA, VA BNI, VA Mandiri, VA BRI, +4 lainnya Confirmed from code — set activeTab, loadBankAccounts, openAddBank, setDefaultBank, openEditBank, deleteBank, closeBankForm, set bankForm.is_default, saveBank, saveGateway Confirmed from code — /api/v1/setup/payment/bank-accounts/create @ src/services/finance/paymentSetup.service.js:27 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:72; Confirmed from code — /api/v1/setup/payment/bank-accounts/delete @ src/services/finance/paymentSetup.service.js:58 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:151; Confirmed from code — /api/v1/setup/payment/bank-accounts/set-default @ src/services/finance/paymentSetup.service.js:53 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:135; Confirmed from code — /api/v1/setup/payment/bank-accounts @ src/services/finance/paymentSetup.service.js:19 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:54; Confirmed from code — /api/v1/setup/payment/bank-accounts/update @ src/services/finance/paymentSetup.service.js:45 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:103; Confirmed from code — /api/v1/setup/payment/gateway @ src/services/finance/paymentSetup.service.js:65 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:171; Confirmed from code — /api/v1/setup/payment/gateway/update @ src/services/finance/paymentSetup.service.js:74 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/payment_setup_api.py:189 Confirmed from code — sesi autentik; capability finance.payment.setup; allowedRoles admin, school_admin, head_admin, treasurer; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/setup/payment/bank-accounts/create, /api/v1/setup/payment/bank-accounts/delete, /api/v1/setup/payment/bank-accounts/update, /api/v1/setup/payment/gateway/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu finance.spp (SPP & Biaya) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Biaya Siswa /payment/enrollment src/views/AdminViews/AcademicConfig/Fees/Enrollment/FeeEnrollmentList.vue:1 Confirmed from code — admin, school_admin, head_admin, admin_staff, treasurer; guard route memakai allowedRoles Inferred from code — halaman Biaya Siswa pada /payment/enrollment; tujuan diringkas dari 7 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=7; field=line.amount, line.due_date, line.note, filters.state, filters.template_id, filters.payment_type, filters.has_scholarship, generateFeeForm.month, generateFeeForm.year, bulkFormData, formData, Mode Cicilan, +18 lainnya; kolom=Term, Periode, Diskon, Jatuh Tempo, Invoice, Status Bayar, Konfigurasi Bayar, Beasiswa, Total Bayar; filter=line.due_date, filters.state, filters.template_id, filters.payment_type, filters.has_scholarship; sinyal validasi=required, min/max; aturan field=field: required, field: type=radio, Jumlah Term: min=2, max=12, type=number, 1: min=1, type=number, Tanggal Jatuh Tempo Pertama: type=date, field: type=checkbox, Diskon Tambahan (%): min=0, max=100, type=number, Template Biaya: required, Jumlah Term: type=number, 1: type=number, +6 lainnya; Inferred from code — option/status/display-label candidates=Gunakan Preset, Auto Split, Sama Rata, Term Pertama Lebih Besar (40%), Term Terakhir Lebih Kecil (15%), Hari, Fully Custom, Term Pertama Lebih Besar, Term Terakhir Lebih Kecil, Draft, +21 lainnya Confirmed from code — updateForm, handleScholarshipToggle, openBulkModal, openAddModal, resetFilters, openDetailModal, submitApproval, approveEnrollment, openGenerateFeeModal, openEditModal, resetToDraft, openDeleteModal, handleModalSubmit, handleDelete, +4 lainnya Confirmed from code — /api/v1/finance/fee-enrollments/list @ src/services/admin/feeEnrollment.service.js:15 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/fee_enrollment_api.py:116 Confirmed from code — sesi autentik; capability finance.fees.view; allowedRoles admin, school_admin, head_admin, admin_staff, treasurer; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field template_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /payment/schedule, /admin-staff/finance/enrollment P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Cicilan /payment/installments src/views/AdminViews/AcademicConfig/Fees/Installment/InstallmentPresetList.vue:1 Confirmed from code — admin, school_admin, head_admin, admin_staff, treasurer; guard route memakai allowedRoles Inferred from code — halaman Cicilan pada /payment/installments; tujuan diringkas dari 3 form, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=form.name, form.number_of_terms, form.interval_value, form.interval_type, form.split_rule, line.percentage, form.description, form.active, searchQuery, filterSplitRule, filterTerms, showModal, +9 lainnya; filter=searchQuery, filterSplitRule, filterTerms; sinyal validasi=required, min/max; aturan field=form.name: required, form.number_of_terms: min=2, max=24, type=number, form.interval_value: min=1, type=number, line.percentage: min=0, max=100, type=number, form.description: type=textarea, form.active: type=checkbox; Inferred from code — option/status/display-label candidates=Equal Split (Pembagian Rata), First Term Bigger (Termin Pertama Lebih Besar), Last Term Smaller (Termin Terakhir Lebih Kecil), Custom Percentage, Hari, Sukses, Equal Split, First Bigger, Last Smaller, Custom, +2 lainnya Confirmed from code — 2x Sama Rata, 3x Sama Rata, 3x Awal Besar, 4x Sama Rata, 6x Sama Rata, 12x Sama Rata, handleSubmit, autoGenerateTerms, addTermLine, removeTermLine, applyQuickTemplate, handleClose, openAddModal, resetFilters, +5 lainnya Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/feeConfigAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.installments.view; allowedRoles admin, school_admin, head_admin, admin_staff, treasurer; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu finance.spp (SPP & Biaya) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Tagihan /payment/schedule src/views/AdminViews/AcademicConfig/Fees/Schedule/FeeScheduleList.vue:1 Confirmed from code — admin, school_admin, head_admin, admin_staff, treasurer; guard route memakai allowedRoles Inferred from code — halaman Tagihan pada /payment/schedule; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.state, filters.period, filters.template_id, generateForm.template_id, generateForm.month, generateForm.year, generateForm.skip_existing, generateForm.auto_invoice, generateForm.filter_type, generateForm.course_id, generateForm.batch_id, generateForm.student_ids, +1 lainnya; filter=filters.state, filters.period, filters.template_id, generateForm.filter_type, generateForm.course_id, generateForm.batch_id, filter_type; sinyal validasi=required; aturan field=generateForm.template_id: required, generateForm.month: required, generateForm.year: required; Inferred from code — option/status/display-label candidates=Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, +4 lainnya Confirmed from code — openGenerateModal, set showMobileFilters, resetFilters, openDetailModal, markAsGenerated, createInvoice, viewInvoice, resetToDraft, confirmDelete, closeDetailModal, handleGenerate, closeGenerateModal, deleteSchedule Confirmed from code — /api/v1/finance/fee-schedules/stats @ src/services/finance/feeSchedule.service.js:9 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:296; Confirmed from code — /api/v1/finance/fee-schedules/generate @ src/services/finance/feeSchedule.service.js:19 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:346; Confirmed from code — /api/v1/finance/fee-schedules/list @ src/services/finance/feeSchedule.service.js:4 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:274; Confirmed from code — /api/v1/finance/fee-templates/options @ src/services/finance/feeSchedule.service.js:32 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:426; Confirmed from code — /api/v1/finance/fee-schedules/generate-preview @ src/services/finance/feeSchedule.service.js:14 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:325; Confirmed from code — /api/v1/finance/fee-options @ src/services/finance/feeSchedule.service.js:37 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:488; Confirmed from code — /api/v1/finance/fee-schedule/create-invoice @ src/services/finance/parentBilling.service.js:183 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/bendahara_dashboard_api.py:191 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles admin, school_admin, head_admin, admin_staff, treasurer; feature flag scola_fees; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field template_id, course_id, batch_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/finance/fee-schedules/generate, /api/v1/finance/fee-schedules/generate-preview, /api/v1/finance/fee-schedule/create-invoice; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/customer-invoices/:id, /admin-staff/finance/billing, /vice-principal/finance/tuition P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Beasiswa /payment/scholarships src/views/AdminViews/AcademicConfig/Fees/Scholarship/ScholarshipTypeList.vue:1 Confirmed from code — admin, school_admin, head_admin, admin_staff, treasurer; guard route memakai allowedRoles Inferred from code — halaman Beasiswa pada /payment/scholarships; tujuan diringkas dari 2 form, tabel/kolom data, aksi interaktif Confirmed from code — form=2; field=form.name, form.category, form.default_percentage, form.requires_approval, Nama Beasiswa, Contoh: Beasiswa Prestasi Akademik, Persentase Default (%); kolom=Nama Beasiswa, Potongan, Approval, Penerima; sinyal validasi=required, min/max; aturan field=form.name: required, form.category: type=radio, form.default_percentage: min=0, max=99, type=number, form.requires_approval: type=checkbox; Inferred from code — option/status/display-label candidates=Total Tipe Beasiswa, Beasiswa Full, Beasiswa Partial, Error, Sukses Confirmed from code — openAddModal, openDetailModal, openEditModal, confirmDelete, handleModalSubmit, executeDelete, handleSubmit Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/feeConfigAdmin.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.scholarships.view; allowedRoles admin, school_admin, head_admin, admin_staff, treasurer; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /payment/enrollment P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
finance Template Biaya /payment/templates src/views/AdminViews/AcademicConfig/Fees/Template/FeeTemplateList.vue:1 Confirmed from code — admin, school_admin, head_admin, admin_staff, treasurer; guard route memakai allowedRoles Inferred from code — halaman Template Biaya pada /payment/templates; tujuan diringkas dari 3 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=activeTab, form.name, form.active, form.fee_type, form.generate_day, form.due_day, form.auto_create_invoice, form.default_discount, form.course_ids, form.batch_ids, item.product_id, item.name, +12 lainnya; kolom=Nama Template, Total Biaya, Statistik, Produk; filter=form.course_ids, form.batch_ids; sinyal validasi=required, min/max; aturan field=form.name: required, form.active: type=checkbox, form.fee_type: type=radio, form.generate_day: min=1, max=28, type=number, form.due_day: min=1, max=28, type=number, form.auto_create_invoice: type=checkbox, form.default_discount: min=0, max=100, type=number, item.amount: min=0, type=number; Inferred from code — option/status/display-label candidates=Total Template, Template Recurring, Template One-time, Error, Sukses, Rincian Biaya, Preset Cicilan Confirmed from code — openAddModal, openDetailModal, openEditModal, openBulkEnrollment, confirmDelete, handleModalSubmit, executeDelete, handleSubmit, addFeeLine, removeFeeLine Confirmed from code — /api/v1/finance/fee-templates/delete @ src/services/finance/feeTemplate.service.js:17 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:472; Confirmed from code — /api/v1/finance/fee-templates/list @ src/services/finance/feeTemplate.service.js:4 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:409; Confirmed from code — /api/v1/finance/fee-templates/save @ src/services/finance/feeTemplate.service.js:9 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:446; Confirmed from code — /api/v1/finance/fee-options @ src/services/finance/feeTemplate.service.js:24 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:488 Confirmed from code — sesi autentik; capability finance.fee_templates.view; allowedRoles admin, school_admin, head_admin, admin_staff, treasurer; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field course_ids, batch_ids, product_id, installment_preset_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/finance/fee-templates/delete, /api/v1/finance/fee-templates/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /payment/enrollment P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

foundation (8 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
foundation Academic Governance /foundation/academic/governance src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk analytics.foundation.view; izin sesi backend dapat berbeda Inferred from code — halaman Academic Governance pada /foundation/academic/governance; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.foundation.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/accreditation, /foundation/academic/students, /foundation/finance/balance-sheet, /foundation/finance/budget, /foundation/finance/cash-flow, /foundation/finance/profit-loss P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation Kebijakan Kenaikan /foundation/academic/promotion-policy src/views/AnalyticsManagement/Strategic/PromotionPolicyDashboard.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk analytics.foundation.view; izin sesi backend dapat berbeda Inferred from code — halaman Kebijakan Kenaikan pada /foundation/academic/promotion-policy; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academicYearId, Tahun Ajaran; kolom=Bucket Kehadiran, Promotion Rate, Publish Completeness, Tahun Ajaran, Total Siswa, Retention Rate, Graduation Rate, Rombel, Promoted, Retained, +2 lainnya; filter=filters.academicYearId Confirmed from code — refreshDashboard, exportXlsx, exportPdf Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/academics/promotionPolicyDashboard.service.js, src/services/auth/auth.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.foundation.view; feature flag scola_foundation_analytics; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/analytics/promotion-policy, /vice-principal/curriculum/promotion-policy P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation Statistik Siswa /foundation/academic/students src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk analytics.foundation.view; izin sesi backend dapat berbeda Inferred from code — halaman Statistik Siswa pada /foundation/academic/students; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.foundation.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/accreditation, /foundation/academic/governance, /foundation/finance/balance-sheet, /foundation/finance/budget, /foundation/finance/cash-flow, /foundation/finance/profit-loss P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation PPDB Yayasan /foundation/admission src/views/Yayasan/FoundationAdmissionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk analytics.foundation.view; izin sesi backend dapat berbeda Inferred from code — halaman PPDB Yayasan pada /foundation/admission; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /api/v1/foundation/admission/registers @ src/views/Yayasan/FoundationAdmissionPage.vue:42 -> ../custom_addons_scola/gcgscola/scola_admission_foundation/controllers/foundation_admission_api.py:58 Confirmed from code — sesi autentik; capability analytics.foundation.view; feature flag scola_foundation_analytics; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation.admission (Admission Terpusat) P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation Dashboard /foundation/dashboard src/views/Yayasan/YayasanDashboard.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk analytics.foundation.view; izin sesi backend dapat berbeda Inferred from code — halaman Dashboard pada /foundation/dashboard; tujuan diringkas dari konten halaman Confirmed from code — sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Unit Sekolah, Program Kerja Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.foundation.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/finance/profit-loss, /foundation/schools, /foundation/academic/governance, /settings/subscription P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation Neraca /foundation/finance/balance-sheet src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.finance.consolidated.view; izin sesi backend dapat berbeda Inferred from code — halaman Neraca pada /foundation/finance/balance-sheet; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability foundation.finance.consolidated.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/accreditation, /foundation/academic/governance, /foundation/academic/students, /foundation/finance/budget, /foundation/finance/cash-flow, /foundation/finance/profit-loss P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation Monitoring BOS/RKAS /foundation/finance/budget src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.finance.budget.monitor; izin sesi backend dapat berbeda Inferred from code — halaman Monitoring BOS/RKAS pada /foundation/finance/budget; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability foundation.finance.budget.monitor; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/accreditation, /foundation/academic/governance, /foundation/academic/students, /foundation/finance/balance-sheet, /foundation/finance/cash-flow, /foundation/finance/profit-loss P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation Arus Kas /foundation/finance/cash-flow src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.finance.consolidated.view; izin sesi backend dapat berbeda Inferred from code — halaman Arus Kas pada /foundation/finance/cash-flow; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability foundation.finance.consolidated.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/accreditation, /foundation/academic/governance, /foundation/academic/students, /foundation/finance/balance-sheet, /foundation/finance/budget, /foundation/finance/profit-loss P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

foundation / foundation-hr-ops (3 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
foundation / foundation-hr-ops Data Pegawai / Penempatan & Akun (Yayasan) /foundation/hr/employees src/views/Yayasan/FoundationEmployeeRegistry.vue:1 Inferred from code — foundation, foundation_hr_admin, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.hr.employees.view; izin sesi backend dapat berbeda Inferred from code — halaman Data Pegawai / Penempatan & Akun (Yayasan) pada /foundation/hr/employees; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.search, filters.schoolId, filters.assignmentType, employeeSearchQuery, assignmentForm.schoolId, assignmentForm.assignmentType, assignmentForm.leadershipIntent, assignmentForm.allowMultiSchoolPrincipal, assignmentForm.startDate, assignmentForm.endDate, assignmentForm.costAllocationPercent, assignmentForm.note, +3 lainnya; filter=filters.search, filters.schoolId, filters.assignmentType, employeeSearchQuery, assignmentForm.schoolId, assignmentForm.allowMultiSchoolPrincipal, assignmentForm.startDate, assignmentForm.endDate; sinyal validasi=required, min/max; aturan field=filters.search: type=search, employeeSearchQuery: required, type=search, assignmentForm.schoolId: required, assignmentForm.allowMultiSchoolPrincipal: type=checkbox, assignmentForm.startDate: type=date, assignmentForm.endDate: type=date, assignmentForm.costAllocationPercent: min=0, max=100, type=number, userForm.login: required, userForm.temporaryPassword: required, minlength=8, type=password Confirmed from code — startAssignment, loadEmployees, startUser, openResetPassword, archiveEmployee, closeModal, submitAssignment, selectEmployeeForAssignment, onSchoolChange, onPlacementTypeChange, onLeadershipChange, submitUser Confirmed from code — /api/v1/foundation/hr/employees/archive @ src/services/foundation/foundationHr.service.js:62 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:416; Confirmed from code — /api/v1/foundation/hr/users/link-or-create @ src/services/foundation/foundationHr.service.js:106 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:911; Confirmed from code — /api/v1/foundation/hr/employees/list @ src/services/foundation/foundationHr.service.js:22 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:276; Confirmed from code — /api/v1/foundation/hr/users/reset-password @ src/services/foundation/foundationHr.service.js:121; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/foundation/hr/employees/assignments/save @ src/services/foundation/foundationHr.service.js:82 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:429; Confirmed from code — /api/v1/foundation/hr/employees/search @ src/services/foundation/foundationHr.service.js:32 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:320 Confirmed from code — sesi autentik; capability foundation.hr.employees.view; feature flag scola_foundation_hr_management; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/foundation/hr/employees/archive, /api/v1/foundation/hr/employees/assignments/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /foundation/hr/users, /hr/employee/create, /hr/employee/import, /admin/users P1 — mutasi data, form, komponen besar Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation / foundation-hr-ops Biaya Penggajian /foundation/hr/payroll-cost src/views/Yayasan/FoundationPayrollCostSummary.vue:1 Inferred from code — foundation, foundation_hr_admin, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.hr.payroll_cost.view; izin sesi backend dapat berbeda Inferred from code — halaman Biaya Penggajian pada /foundation/hr/payroll-cost; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.dateFrom, filters.dateTo, filters.schoolId; kolom=Unit sekolah, Pegawai, Slip, Gross, Net; filter=filters.dateFrom, filters.dateTo, filters.schoolId; aturan field=filters.dateFrom: type=date, filters.dateTo: type=date; Inferred from code — option/status/display-label candidates=Total Gross, Total Net Confirmed from code — Muat, Terapkan, loadSummary Confirmed from code — /api/v1/foundation/hr/payroll-cost/summary @ src/services/foundation/foundationHr.service.js:134 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:1044; Confirmed from code — /api/v1/foundation/hr/employees/list @ src/services/foundation/foundationHr.service.js:22 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:276 Confirmed from code — sesi autentik; capability foundation.hr.payroll_cost.view; feature flag scola_foundation_analytics; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu foundation.hr (SDM), foundation_hr.compensation (Remunerasi) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation / foundation-hr-ops Petugas Antar Jemput /foundation/transport/officers src/views/Yayasan/FoundationTransportOfficers.vue:1 Inferred from code — foundation_hr_admin; diturunkan dari pola capability frontend untuk foundation.transport.manage; izin sesi backend dapat berbeda Inferred from code — halaman Petugas Antar Jemput pada /foundation/transport/officers; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.schoolId, filters.active, routeForm.name, routeForm.schoolId, routeForm.primaryDriverEmployeeId, employeeQuery, officerForm.assignmentType, officerForm.coverageScope, officerForm.schoolId, officerForm.login, officerForm.temporaryPassword, Nama rute, +4 lainnya; kolom=Nama, Akun, Assignment; filter=filters.schoolId, filters.active, routeForm.schoolId, employeeQuery, officerForm.schoolId; sinyal validasi=required, min/max; aturan field=filters.active: type=checkbox, employeeQuery: type=search, officerForm.assignmentType: required, officerForm.coverageScope: type=radio, officerForm.schoolId: required, officerForm.login: required, officerForm.temporaryPassword: required, minlength=8, type=password Confirmed from code — Aktifkan Petugas, Muat, Nonaktifkan, Simpan Rute, Batal, startCreateOfficer, loadData, deactivateOfficer, saveRoute, closeOfficerModal, createOfficer, selectEmployee Confirmed from code — /api/v1/foundation/transport/officers/activate @ src/services/foundation/foundationHr.service.js:160 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:581; Confirmed from code — /api/v1/foundation/transport/officers/deactivate @ src/services/foundation/foundationHr.service.js:174 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:734; Confirmed from code — /api/v1/foundation/transport/routes/list @ src/services/foundation/foundationHr.service.js:182 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:767; Confirmed from code — /api/v1/foundation/transport/routes/save @ src/services/foundation/foundationHr.service.js:220 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:829; Confirmed from code — /api/v1/foundation/hr/employees/search @ src/services/foundation/foundationHr.service.js:32 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/foundation_hr_api.py:320 Confirmed from code — sesi autentik; capability foundation.transport.manage; feature flag scola_foundation_hr_management; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/foundation/transport/routes/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu foundation.hr (SDM), foundation_hr.operations (Operasional) P1 — mutasi data, form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

foundation / settings (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
foundation / settings Beranda Publik / Konfigurasi Sekolah /settings/company src/views/SettingsManagement/CompanySettings.vue:1 Confirmed from code — admin, school_admin, foundation_chairman, foundation; guard route memakai allowedRoles Inferred from code — halaman Beranda Publik / Konfigurasi Sekolah pada /settings/company; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, formData.name, formData.npsn, formData.company_registry, formData.vat, formData.street, formData.street2, formData.city, formData.state, formData.zip, formData.contact, formData.phone, +19 lainnya; filter=formData.company_registry, formData.school_timezone, formData.scola_homeroom_allow_multi_batch, maxBatchesPerFacultyDisplay; sinyal validasi=required, min/max, custom validate; aturan field=formData.name: required, formData.npsn: maxlength=8, formData.email: type=email, maxBatchesPerFacultyDisplay: min=1, type=number, formData.scola_homeroom_max_faculty_paud: min=1, type=number, formData.scola_homeroom_max_faculty_default: min=1, type=number, formData.landing_hero_subtitle: maxlength=260, item.description: maxlength=180, item.description: maxlength=220; Inferred from code — option/status/display-label candidates=Informasi Sekolah, Beranda Publik, Konfigurasi Sekolah, Informasi Akademik, Akses Digital, Error Confirmed from code — loadCompanySettings, saveCompanySettings, removeLogo, removeLandingHeroImage Confirmed from code — /web/session/get_session_info @ src/views/SettingsManagement/CompanySettings.vue:1156; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/attendance/settings/coordinates @ src/views/SettingsManagement/CompanySettings.vue:1706 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_reports_api.py:272; Confirmed from code — /api/v1/settings/company/profile @ src/services/settings/companySettings.service.js:5 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:196; Confirmed from code — /api/v1/settings/company/update @ src/services/settings/companySettings.service.js:10 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:205; Confirmed from code — /api/v1/settings/company/currencies @ src/services/settings/companySettings.service.js:18 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:252; Confirmed from code — /api/v1/attendance/student/settings @ src/services/attendance/studentAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:8 Confirmed from code — sesi autentik; capability settings.school.view; allowedRoles admin, school_admin, foundation_chairman, foundation; Inferred from code — data prerequisite: referenced records dari field currency_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/settings/company/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /attendance/settings P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

foundation-auditor (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
foundation-auditor Dashboard /foundation-auditor/dashboard src/views/Compliance/FoundationAuditorDashboard.vue:1 Confirmed from code — foundation_auditor; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /foundation-auditor/dashboard; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /api/v1/foundation-auditor/dashboard/summary @ src/services/foundation/foundationAuditorDashboard.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/foundation_auditor_dashboard_api.py:119 Confirmed from code — sesi autentik; capability analytics.foundation.view; allowedRoles foundation_auditor; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation_auditor.overview (Dashboard) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

foundation-auditor / foundation (3 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
foundation-auditor / foundation Akreditasi /foundation/academic/accreditation src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk analytics.accreditation.view; izin sesi backend dapat berbeda Inferred from code — halaman Akreditasi pada /foundation/academic/accreditation; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.accreditation.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/governance, /foundation/academic/students, /foundation/finance/balance-sheet, /foundation/finance/budget, /foundation/finance/cash-flow, /foundation/finance/profit-loss P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation-auditor / foundation Laba Rugi /foundation/finance/profit-loss src/views/Yayasan/FoundationSectionPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.finance.consolidated.view; izin sesi backend dapat berbeda Inferred from code — halaman Laba Rugi pada /foundation/finance/profit-loss; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear; filter=filters.period, filters.fiscalYear; sinyal validasi=required Confirmed from code — reloadData, applyFilters, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/foundation/foundation.service.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability foundation.finance.consolidated.view; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/accreditation, /foundation/academic/governance, /foundation/academic/students, /foundation/finance/balance-sheet, /foundation/finance/budget, /foundation/finance/cash-flow P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
foundation-auditor / foundation Satuan Pendidikan /foundation/schools src/views/Yayasan/FoundationSchoolUnitsPage.vue:1 Inferred from code — foundation_auditor, foundation, foundation_chairman; diturunkan dari pola capability frontend untuk foundation.schools.view; izin sesi backend dapat berbeda Inferred from code — halaman Satuan Pendidikan pada /foundation/schools; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.parent_company_id, form.name, form.npsn, form.jenjang, form.timezone, form.kurikulum, form.akreditasi, form.alamat, form.admin_name, form.admin_login, form.admin_email, form.admin_password, +10 lainnya; filter=form.parent_company_id, form.jenjang, Jenjang; sinyal validasi=required, min/max; aturan field=form.parent_company_id: required, form.name: required, form.npsn: required, maxlength=8, form.jenjang: required, form.admin_password: type=password; Inferred from code — option/status/display-label candidates=TK/RA, SD/MI, SMP/MTs, SMA/MA, SMK/MAK, PAUD Confirmed from code — Tambah Satuan Pendidikan, Arsip, openCreate, openEdit, archiveUnit, submitForm, closeForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/observability/teacherObservability.service.js, src/services/school/schoolUnits.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability foundation.schools.view; feature flag scola_foundation_analytics; Inferred from code — data prerequisite: referenced records dari field parent_company_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /platform/schools P1 — form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

foundation-hr-ops / hr (13 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
foundation-hr-ops / hr Absensi /hr/attendance src/views/AttendanceManagement/Staff/AttendanceList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Absensi pada /hr/attendance; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.employee_id, formData.employee_id, formData.check_in, formData.check_out, formData.in_latitude, formData.in_longitude, formData.out_latitude, formData.out_longitude, formData.in_mode, filters.date_from, filters.date_to, e.g., -6.2088, +1 lainnya; filter=filters.employee_id, filters.date_from, filters.date_to; sinyal validasi=required; aturan field=formData.employee_id: required, formData.check_in: required, type=datetime-local, formData.check_out: type=datetime-local, formData.in_latitude: type=number, formData.in_longitude: type=number, formData.out_latitude: type=number, formData.out_longitude: type=number, filters.date_from: type=date, filters.date_to: type=date; Inferred from code — option/status/display-label candidates=Manual, Kiosk, Systray, Error Confirmed from code — toggleStaleOpenList, set showFilterModal, openCreateModal, handleSubmit, applyFilters, resetDateFiltersToToday, deleteAttendance Confirmed from code — /api/v1/attendance/hr-admin/list @ src/services/admin/hrAttendanceAdmin.service.js:11 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:245; Confirmed from code — /api/v1/attendance/hr-admin/detail @ src/services/admin/hrAttendanceAdmin.service.js:23 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:272; Confirmed from code — /api/v1/attendance/hr-admin/stats @ src/services/admin/hrAttendanceAdmin.service.js:34 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:300; Confirmed from code — /api/v1/attendance/hr-admin/employee-options @ src/services/admin/hrAttendanceAdmin.service.js:45 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:359; Confirmed from code — /api/v1/attendance/hr-admin/save @ src/services/admin/hrAttendanceAdmin.service.js:50 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:381; Confirmed from code — /api/v1/attendance/hr-admin/delete @ src/services/admin/hrAttendanceAdmin.service.js:58 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:411 Confirmed from code — sesi autentik; capability hr.attendance.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field employee_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/hr-admin/save, /api/v1/attendance/hr-admin/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /hr/attendance/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Aturan Kehadiran /hr/attendance/rules src/views/AdminViews/HR/config/AttendanceRulesConfig.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Aturan Kehadiran pada /hr/attendance/rules; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=formData.payroll_cycle_start_day, formData.payroll_cycle_end_day, formData.late_tolerance_minutes, formData.late_threshold, formData.absent_deduction_type, formData.absent_deduction_fixed, formData.perfect_attendance_bonus, formData.perfect_attendance_criteria.min_working_days, formData.perfect_attendance_criteria.max_late, formData.perfect_attendance_criteria.max_absent, formData.overtime_enabled, formData.overtime_min_hours, +19 lainnya; sinyal validasi=min/max; aturan field=formData.payroll_cycle_start_day: min=1, max=31, type=number, formData.payroll_cycle_end_day: min=1, max=31, type=number, formData.late_tolerance_minutes: min=0, type=number, formData.late_threshold: min=0, type=number, formData.absent_deduction_fixed: min=0, type=number, formData.perfect_attendance_bonus: min=0, type=number, formData.perfect_attendance_criteria.min_working_days: min=0, type=number, formData.perfect_attendance_criteria.max_late: min=0, type=number, formData.perfect_attendance_criteria.max_absent: min=0, type=number, formData.overtime_min_hours: min=0, type=number, +3 lainnya; Inferred from code — option/status/display-label candidates=Daily Rate (Gaji ÷ Hari Kerja), Tetap per Hari Confirmed from code — saveRules, router.push, resetToDefault Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useErrorHandler.js, src/composables/useNotification.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.attendance.config; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/schedule P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Rekap Kehadiran /hr/attendance/summary src/views/AttendanceManagement/Staff/AttendanceSummary.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Rekap Kehadiran pada /hr/attendance/summary; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.cycle_month, searchQuery; filter=filters.cycle_month, searchQuery; aturan field=filters.cycle_month: type=month, searchQuery: type=search Confirmed from code — loadSummaries, exportPdf, exportExcel, confirmLock, confirmUnlock, openPeriodDetail, set searchQuery Confirmed from code — /api/v1/attendance/hr-admin/employee-options @ src/services/admin/hrAttendanceAdmin.service.js:45 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:359 Confirmed from code — sesi autentik; capability hr.attendance_summary.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/hr/attendance P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Kontrak /hr/contract src/views/AdminViews/HR/contract/ContractList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kontrak pada /hr/contract; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeStatus, searchQuery, selectedContracts, currentPage; filter=activeStatus, searchQuery; aturan field=searchQuery: type=search, selectedContracts: type=checkbox; Inferred from code — option/status/display-label candidates=Draft, Expired, Dibatalkan Confirmed from code — set showBatchModal, goToCreate, goToDetail, goToEdit, activateContract, batchUpdateStatus Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/common/jsonRpc.js, src/services/hr/contract.service.js, src/services/hr/hrAdminApi.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.contracts.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/contract/create P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Departemen /hr/department src/views/AdminViews/HR/department/DepartmentList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Departemen pada /hr/department; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=searchQuery, formData.name, formData.parent_id, formData.manager_id, Nama Departemen, Masukkan nama departemen, Departemen Induk, Manager; kolom=Nama Departemen, Karyawan, Manager, Induk; filter=searchQuery; sinyal validasi=required, min/max; aturan field=searchQuery: type=search, formData.name: required; Inferred from code — option/status/display-label candidates=Error, Dashboard SDM, Departemen Confirmed from code — set viewMode, openModal, confirmDelete, saveDepartment, deleteDepartment Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useBreadcrumbs.js, src/services/common/jsonRpc.js, src/services/hr/department.service.js, src/services/hr/employee.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.departments.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field parent_id, manager_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation_hr.structure (Struktur Organisasi), hr.employees (Data Pegawai) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Karyawan Unit / Karyawan /hr/employee src/views/AdminViews/HR/employee/EmployeeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Karyawan Unit / Karyawan pada /hr/employee; tujuan diringkas dari 3 form, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=activeTab, searchQuery, currentPage, filters.company_id, filters.department_id, filters.job_id; filter=searchQuery, filters.company_id, filters.department_id, filters.job_id; aturan field=searchQuery: type=search Confirmed from code — Guru, dismissFoundationHrBanner, set showFilterModal, goToUpload, goToCreate, goToDetail, goToTeacher, goToEdit, viewContracts, viewPayslips, confirmReactivate, confirmDelete, deleteEmployee, reactivateEmployee, +1 lainnya Confirmed from code — /api/v1/admin/employees/list @ src/services/admin/employee.service.js:12 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:298; Confirmed from code — /api/v1/admin/employees/counts @ src/services/admin/employee.service.js:25 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:333; Confirmed from code — /api/v1/admin/employees/options @ src/services/admin/employee.service.js:30 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:350; Confirmed from code — /api/v1/admin/employees/set-active @ src/services/admin/employee.service.js:50 -> ../custom_addons_scola/gcgscola/scola_hr/controllers/employee_admin_api.py:418 Confirmed from code — sesi autentik; capability hr.employees.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan; referenced records dari field company_id, department_id, job_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /hr/employee/create, /foundation/hr/employees, /hr/employee/import P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Wajah Karyawan /hr/employee-face-management src/views/AttendanceManagement/Staff/EmployeeFaceManagement.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Wajah Karyawan pada /hr/employee-face-management; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, faceInputMode, uploadedFiles, faceIsPrimary; filter=searchQuery; aturan field=searchQuery: type=text, faceIsPrimary: type=checkbox; Inferred from code — option/status/display-label candidates=Manajemen Wajah, Capture Kamera, Upload Gambar, Error Confirmed from code — selectEmployee, openFaceCapture, openEditFaceModal, setPrimaryFace, confirmDeleteFace, toggleCamera, captureFace, closeFaceModal, saveFace, deleteFace Confirmed from code — /api/v1/attendance/hr-admin/face/employees @ src/services/admin/hrFaceAdmin.service.js:4 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:508; Confirmed from code — /api/v1/attendance/hr-admin/face/list @ src/services/admin/hrFaceAdmin.service.js:9 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:528; Confirmed from code — /api/v1/attendance/hr-admin/face/save @ src/services/admin/hrFaceAdmin.service.js:21 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:552; Confirmed from code — /api/v1/attendance/hr-admin/face/set-primary @ src/services/admin/hrFaceAdmin.service.js:31 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:591; Confirmed from code — /api/v1/attendance/hr-admin/face/delete @ src/services/admin/hrFaceAdmin.service.js:38 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:606 Confirmed from code — sesi autentik; capability hr.face_recognition.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; employee/company dan contract/periode yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/hr-admin/face/save, /api/v1/attendance/hr-admin/face/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu foundation_hr.operations (Operasional), hr.attendance (Kehadiran Pegawai) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Jabatan /hr/job src/views/AdminViews/HR/job/JobList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Jabatan pada /hr/job; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=searchQuery, formData.name, formData.department_id, formData.expected_employees, formData.description, formData.requirements, Nama Jabatan, Contoh: Software Engineer, Departemen, Target Karyawan, Deskripsi Pekerjaan, Masukkan deskripsi pekerjaan..., +2 lainnya; kolom=Nama Jabatan, Departemen, Karyawan, Target; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, formData.name: required, formData.expected_employees: type=number; Inferred from code — option/status/display-label candidates=Error, Dashboard SDM, Jabatan Confirmed from code — set viewMode, openModal, confirmDelete, saveJob, deleteJob Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useBreadcrumbs.js, src/services/common/jsonRpc.js, src/services/hr/department.service.js, src/services/hr/hrAdminApi.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.positions.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field department_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation_hr.structure (Struktur Organisasi), hr.employees (Data Pegawai) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Saldo Cuti /hr/leave/balance src/views/AdminViews/HR/leave/LeaveBalance.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Saldo Cuti pada /hr/leave/balance; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedEmployeeId, selectedYear, allocationForm.leave_type_id, allocationForm.days, allocationForm.date_from, allocationForm.date_to, allocationForm.notes, showDeleteConfirm, Tahun, Jumlah Hari, 12, Sampai Tanggal, +2 lainnya; kolom=Alokasi, Terpakai, Pending, Tersedia, Status, Aksi; filter=allocationForm.date_from, allocationForm.date_to; sinyal validasi=required, min/max; aturan field=allocationForm.leave_type_id: required, allocationForm.days: required, min=minAllowedDays, type=number, allocationForm.date_from: required, type=date, allocationForm.date_to: required, type=date Confirmed from code — openAllocationModal, openEditModal, openDeleteConfirm, saveAllocation, confirmDelete Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useErrorHandler.js, src/composables/useLeaveBalance.js, src/composables/useNotification.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.leave_balance.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field leave_type_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation_hr.leave (Cuti & Izin), hr.leave (Cuti & Izin) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Jenis Cuti /hr/leave/types src/views/AdminViews/HR/leave/LeaveTypeList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Jenis Cuti pada /hr/leave/types; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, filterCategory, formData.name, formData.code, formData.payroll_category, formData.color, formData.requires_allocation, formData.leave_validation_type, formData.responsible_ids, showDeleteConfirm; filter=searchQuery, filterCategory; sinyal validasi=required, custom validate; aturan field=searchQuery: type=text, formData.name: required, formData.code: required, formData.responsible_ids: type=checkbox Confirmed from code — openFormModal, resetFilters, confirmDelete, saveLeaveType, handleDeleteConfirm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useErrorHandler.js, src/composables/useNotification.js, src/services/common/jsonRpc.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.leave_type.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: referenced records dari field responsible_ids Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation_hr.leave (Cuti & Izin), hr.leave (Cuti & Izin) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Jadwal Kerja /hr/schedule src/views/AdminViews/HR/schedule/WorkingScheduleList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Jadwal Kerja pada /hr/schedule; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=searchQuery, formData.name, formData.tz, formData.default_daily_allowance, att.dayofweek, att.day_period, att.hour_from, att.hour_to, band.min_minutes, band.max_minutes, band.penalty_type, band.penalty_value, +8 lainnya; kolom=Jam/Hari, Timezone; filter=searchQuery, att.day_period; sinyal validasi=required, min/max; aturan field=searchQuery: type=search, formData.name: required, Jam per Hari: type=number, formData.default_daily_allowance: min=0, type=number, att.hour_from: maxlength=5, type=text, att.hour_to: maxlength=5, type=text, band.min_minutes: min=0, type=number, band.max_minutes: min=0, type=number, band.penalty_value: min=0, type=number; Inferred from code — option/status/display-label candidates=Error, Dashboard SDM Confirmed from code — Sekolah 5 Hari (07:00-15:00), Sekolah 6 Hari (07:00-13:00), Staff TU (07:00-16:00), set viewMode, openModal, confirmDelete, saveSchedule, addAttendance, removeAttendance, applyTemplate, applyLateBandTemplate, addLateBand, removeLateBand, deleteSchedule Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/composables/useBreadcrumbs.js, src/services/common/jsonRpc.js, src/services/hr/employee.service.js, src/services/hr/hrAdminApi.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.work_schedule.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu foundation_hr.operations (Operasional), hr.attendance (Kehadiran Pegawai) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Kelola Cuti /hr/timeoff src/views/AdminViews/HR/timeoff/TimeOffList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kelola Cuti pada /hr/timeoff; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.status, filters.department, filters.leaveType; filter=filters.status, filters.department, filters.leaveType; sinyal validasi=custom validate; Inferred from code — option/status/display-label candidates=Error Confirmed from code — resetFilters, router.push, openApproveDialog, openRefuseDialog, confirmApprove, confirmRefuse Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/common/jsonRpc.js, src/services/hr/department.service.js, src/services/hr/hrAdminApi.js, src/services/hr/leave-type.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability hr.leave.manage; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /hr/timeoff/create P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
foundation-hr-ops / hr Guru (GTK) / Guru /teachers src/views/AdminViews/TeacherDatabase/TeacherList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Guru (GTK) / Guru pada /teachers; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchInput; filter=searchInput; sinyal validasi=min/max; aturan field=searchInput: type=text Confirmed from code — handleAdd, handleUpload, fetchTeachers, navigateToDetail, navigateToEdit, showDeleteConfirm, confirmDeleteAction Confirmed from code — /api/v1/admin/faculty/list @ src/services/admin/faculty.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:280; Confirmed from code — /api/v1/admin/faculty/delete @ src/services/admin/faculty.service.js:35 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:384 Confirmed from code — sesi autentik; capability hr.teachers.view; allowedRoles admin, school_admin, head_admin; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /teachers/create, /teachers/import, /teachers/:id/edit, /principal/hr/employees P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

inventory (26 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
inventory Data Aset /inventory/assets src/views/AdminViews/Inventory/AssetList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Data Aset pada /inventory/assets; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, selectedLocation, Lokasi; kolom=Nama Aset, Lokasi, Kondisi; filter=searchQuery; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goToCreate, handleSearch, goToDetail, goToEdit, handleDelete Confirmed from code — /api/v1/inventory/assets/list @ src/services/admin/asset.service.js:15 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1036; Confirmed from code — /api/v1/inventory/assets/delete @ src/services/admin/asset.service.js:77 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1079; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets/create, /principal/inventory/assets, /vice-principal/infrastructure/assets P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Disposal /inventory/assets/disposal src/views/AdminViews/Inventory/AssetDisposal.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Disposal pada /inventory/assets/disposal; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, disposalForm.asset_id, disposalForm.disposal_reason, disposalForm.description, disposalForm.recommended_action, disposalForm.estimated_disposal_date, Aset, Alasan Penghapusan, Jelaskan kondisi aset dan alasan penghapusan secara detail..., Perkiraan Tanggal Penghapusan; kolom=Nama Aset, Alasan, Tanggal Usulan; filter=disposalForm.estimated_disposal_date; sinyal validasi=required, min/max; aturan field=disposalForm.asset_id: required, disposalForm.disposal_reason: required, disposalForm.description: required, disposalForm.recommended_action: required, disposalForm.estimated_disposal_date: type=date; Inferred from code — option/status/display-label candidates=Rusak Berat, Hilang, Masa Manfaat Habis, Dimusnahkan, Dihibahkan, Dijual, Didaur Ulang, Menunggu Persetujuan, Disetujui, Ditolak, +3 lainnya Confirmed from code — openCreateModal, viewDetail, editDisposal, approveDisposal, rejectDisposal, saveDisposal, onAssetSelect, removePhoto, viewFullImage, downloadBA, set showDetailModal Confirmed from code — /inventory/disposals @ src/views/AdminViews/Inventory/AssetDisposal.vue:466; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /inventory/assets @ src/views/AdminViews/Inventory/AssetDisposal.vue:483; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /inventory/disposals/:param @ src/views/AdminViews/Inventory/AssetDisposal.vue:601; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /inventory/disposals/:param/approve @ src/views/AdminViews/Inventory/AssetDisposal.vue:644; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /inventory/disposals/:param/reject @ src/views/AdminViews/Inventory/AssetDisposal.vue:665; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability assets.disposal.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field asset_id Inferred from code — memanggil endpoint berbentuk mutasi /inventory/disposals/:param, /inventory/disposals/:param/approve, /inventory/disposals/:param/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /vice-principal/infrastructure/asset-disposal P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Inspeksi /inventory/assets/inspection src/views/AdminViews/Inventory/AssetInspection.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Inspeksi pada /inventory/assets/inspection; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=searchQuery, filterCondition, inspectionForm.asset_id, inspectionForm.inspection_date, inspectionForm.condition, inspectionForm.notes, inspectionForm.recommendation, inspectionForm.inspector_name, editScheduleForm.interval, Tanggal Inspeksi, Penilaian Kondisi, Catatan Inspeksi, +4 lainnya; kolom=Nama Aset, Kondisi, Tanggal Inspeksi, Inspektur; filter=searchQuery, filterCondition, inspectionForm.inspection_date; sinyal validasi=required, min/max; aturan field=inspectionForm.asset_id: required, inspectionForm.inspection_date: required, type=date, inspectionForm.condition: required, inspectionForm.notes: required, inspectionForm.inspector_name: required, editScheduleForm.interval: required, min=1, type=number; Inferred from code — option/status/display-label candidates=Baik, Cukup Baik, Rusak Ringan, Rusak Berat, Error Confirmed from code — openInspectionModal, set showScheduleModal, viewDetail, createWorkOrder, saveInspection, onAssetSelect, removePhoto, viewFullImage, closeDetailModal, editSchedule, saveSchedule Confirmed from code — /inventory/inspections @ src/views/AdminViews/Inventory/AssetInspection.vue:556; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /inventory/assets @ src/views/AdminViews/Inventory/AssetInspection.vue:586; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability assets.inspection.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field asset_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.assets (Aset & Sarpras) P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Cetak Label /inventory/assets/print-labels src/views/AdminViews/Inventory/AssetLabelPrint.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Cetak Label pada /inventory/assets/print-labels; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectionMode, selectedAssetId, bulkFilters.categoryId, bulkFilters.locationId, selectAll, labelSize, asset.name; filter=bulkFilters.categoryId, bulkFilters.locationId; Inferred from code — option/status/display-label candidates=Single Aset, Multiple Aset, Kecil (4 kolom), Besar (2 kolom), Error Confirmed from code — generateQR, generateBulkQR, printLabels Confirmed from code — /api/v1/inventory/assets/list @ src/services/admin/asset.service.js:15 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1036; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.labels.export; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.assets (Aset & Sarpras) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Audit Log /inventory/audit src/views/AdminViews/Inventory/InventoryAuditLog.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Audit Log pada /inventory/audit; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, filters.model, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=Modul, Transaksi, Oleh; filter=searchQuery, filters.model, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Mutasi / Transfer, Stock Opname, Write-off, Inventory Adjustment, Error Confirmed from code — set showFilterModal, fetchLogs, applyFilters Confirmed from code — /api/v1/inventory/reports/audit-logs @ src/services/admin/inventory.service.js:455 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:616 Confirmed from code — sesi autentik; capability inventory.audit_log.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.reports (Laporan) P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory BOS/RKAS /inventory/budget src/views/AdminViews/Inventory/BudgetPlanList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman BOS/RKAS pada /inventory/budget; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=activeTab, planSearch, lineSearch, selectedPlanFilter, planForm.name, planForm.fiscal_year, planForm.state, lineForm.plan_id, lineForm.school_category, lineForm.rkas_component, lineForm.planned_amount, Contoh: RKAS 2024/2025, +2 lainnya; kolom=Committed, Sisa; filter=planSearch, lineSearch, selectedPlanFilter, lineForm.school_category; sinyal validasi=required; aturan field=planSearch: type=search, lineSearch: type=search, planForm.name: required, lineForm.plan_id: required, lineForm.planned_amount: required, type=number Confirmed from code — goToSettings, goToRealisasi, openPlanModal, fetchBudgetPlans, openPlanDetail, setPlanState, duplicatePlan, openLineModal, fetchBudgetLines, savePlan, saveLine, closePlanDetail Confirmed from code — /api/v1/inventory/budget-plans/list @ src/services/admin/inventory.service.js:352 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:497; Confirmed from code — /api/v1/inventory/budget-lines/list @ src/services/admin/inventory.service.js:391 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:533; Confirmed from code — /api/v1/inventory/budget-plans/save @ src/services/admin/inventory.service.js:371 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:522; Confirmed from code — /api/v1/inventory/budget-lines/save @ src/services/admin/inventory.service.js:406 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:551 Confirmed from code — sesi autentik; capability inventory.budget.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field plan_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/budget-plans/save, /api/v1/inventory/budget-lines/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/rkas-settings, /inventory/budget-report, /bos/budget P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Buku Besar /inventory/budget-ledger src/views/AdminViews/Budget/BudgetLedgerPage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Buku Besar pada /inventory/budget-ledger; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, Sampai Tanggal; kolom=Program / Line, Referensi, Keterangan, Nilai, User; filter=startDate, endDate; sinyal validasi=min/max; aturan field=startDate: type=date, endDate: type=date Confirmed from code — Previous, Next, fetchLedger, changePage Confirmed from code — /api/inventory/budget/ledger @ src/views/AdminViews/Budget/BudgetLedgerPage.vue:169 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/budget_api.py:171 Confirmed from code — sesi autentik; capability inventory.budget_ledger.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /bos/budget-ledger P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Realisasi /inventory/budget-report src/views/AdminViews/Inventory/BudgetRealisasiReport.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Realisasi pada /inventory/budget-report; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.planId, filters.category, searchQuery; kolom=Rencana, Komponen RKAS, Anggaran, Committed, Realisasi, Sisa; filter=filters.planId, filters.category, searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=ATK, Buku, Lab, IT, Fasilitas, Olahraga, Seragam, Bantuan/Hibah, Error Confirmed from code — exportToExcel, fetchBudgetLines Confirmed from code — /api/v1/inventory/budget-lines/list @ src/services/admin/inventory.service.js:391 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:533; Confirmed from code — /api/v1/inventory/budget-plans/list @ src/services/admin/inventory.service.js:352 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:497 Confirmed from code — sesi autentik; capability inventory.budget_report.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /bos/budget-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Dashboard /inventory/dashboard src/views/AdminViews/Inventory/InventoryOfficerDashboard.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /inventory/dashboard; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=SKU Tersedia, Stok Menipis, Scan Barcode, Mulai Stok Opname, Mutasi Barang, Buat Work Order, Error Confirmed from code — fetchDashboard, router.push, openTask Confirmed from code — /api/v1/inventory/stock/summary @ src/services/admin/inventoryDashboard.service.js:162 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:980 Confirmed from code — sesi autentik; capability dashboard.operations.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/maintenance/work-orders, /inventory/movements, /inventory/stock-opname, /inventory/stock P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Pengeluaran /inventory/issue src/views/AdminViews/Inventory/IssuePage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Pengeluaran pada /inventory/issue; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, filters.locationId, createForm.location_from_id, createForm.location_to_id, createForm.scheduled_date, createForm.reason, selectedProduct, line.qty, Ke Unit/Departemen *, Tanggal Pengeluaran, Alasan Pengeluaran, +2 lainnya; kolom=Produk, Qty Diminta, Qty Selesai, Satuan, No. Pengeluaran, Tujuan, Dibuat Oleh; filter=searchQuery, filters.locationId, createForm.scheduled_date; sinyal validasi=required, min/max; aturan field=searchQuery: type=search, createForm.location_from_id: required, createForm.location_to_id: required, line.qty: min=1, max=line.qty_available, type=number; Inferred from code — option/status/display-label candidates=Draft, Submitted, Done, Error Confirmed from code — set showCreateModal, openDetail, handleSubmit, handleMarkDone, closeCreateModal, goToStep2, removeProductLine, set createStep, handleCreateIssue, handleCancel Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402 Confirmed from code — sesi autentik; capability inventory.issues.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field location_from_id, location_to_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu inventory.operations (Operasional) P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Lokasi Inventaris /inventory/locations src/views/AdminViews/Inventory/LocationList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Lokasi Inventaris pada /inventory/locations; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, editForm.name, editForm.location_type, editForm.responsible_id, Nama Lokasi, Tipe Lokasi, Penanggung Jawab; kolom=Lokasi, Penanggung Jawab; filter=searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Gudang, Perpustakaan, Laboratorium, Tata Usaha, Kantin, UKS/Klinik, Error Confirmed from code — openCreate, fetchLocations, openDetail, openEdit, set showDetailModal, saveLocation Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111; Confirmed from code — /api/v1/inventory/assets/locations/save @ src/services/admin/asset.service.js:117 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1123; Confirmed from code — /api/v1/inventory/users/list @ src/services/admin/inventory.service.js:282 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:445 Confirmed from code — sesi autentik; capability inventory.locations.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field responsible_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/locations/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu inventory.master (Dashboard & Master Data) P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Work Order /inventory/maintenance/work-orders src/views/AdminViews/Inventory/WorkOrderList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Work Order pada /inventory/maintenance/work-orders; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeStatus, searchQuery, filters.maintenanceType, filters.categoryId, showCreateModal, createForm.name, createForm.equipment_id, createForm.maintenance_type, createForm.priority, createForm.schedule_date, createForm.user_id, createForm.description, +7 lainnya; kolom=Work Order, Prioritas; filter=activeStatus, searchQuery, filters.maintenanceType, filters.categoryId, createForm.schedule_date; sinyal validasi=required; aturan field=createForm.name: required, createForm.equipment_id: required, createForm.priority: required, createForm.schedule_date: required; Inferred from code — option/status/display-label candidates=Baru, Dalam Proses, Corrective, Preventive, Normal, Low, High, Urgent, Error Confirmed from code — goToCreate, fetchWorkOrders, goToDetail, goToEdit, handleCreate Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/list @ src/services/admin/asset.service.js:15 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1036; Confirmed from code — /api/v1/inventory/maintenance/work-orders/save @ src/services/admin/maintenance.service.js:8 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1163; Confirmed from code — /api/v1/inventory/maintenance/technicians/list @ src/services/admin/maintenance.service.js:20 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1177 Confirmed from code — sesi autentik; capability maintenance.work_orders.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field equipment_id, user_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/maintenance/work-orders/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu inventory.assets (Aset & Sarpras) P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Mutasi /inventory/movements src/views/AdminViews/Inventory/MovementList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Mutasi pada /inventory/movements; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, searchQuery, filters.warehouseId, filters.type, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=No. Mutasi, Jenis, Lokasi, Referensi, Dibuat Oleh; filter=searchQuery, filters.warehouseId, filters.type, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Cancelled, Mutasi, Retur, Error Confirmed from code — set showFilterModal, goToCreate, goToDetail, goToEdit, applyFilters Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274; Confirmed from code — /api/v1/inventory/requests/counts @ src/services/admin/inventory.service.js:114 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:288 Confirmed from code — sesi autentik; capability inventory.movements.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.operations (Operasional) P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Purchase Order /inventory/procurement/orders src/views/AdminViews/Inventory/PurchaseOrderList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Purchase Order pada /inventory/procurement/orders; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, searchQuery, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=No. RFQ/PO, Vendor, Referensi PR; filter=searchQuery, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=RFQ, Terkirim, Menunggu Approval, PO, Error Confirmed from code — set showFilterModal, goToDetail, applyFilters Confirmed from code — /api/v1/procurement/orders/list @ src/services/admin/procurement.service.js:232 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:174 Confirmed from code — sesi autentik; capability inventory.purchase_orders.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.procurement (Pengadaan) P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Penerimaan Barang /inventory/procurement/receipts src/views/AdminViews/Inventory/ReceiptList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Penerimaan Barang pada /inventory/procurement/receipts; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery; kolom=No. Penerimaan, Referensi PO, Lokasi; filter=searchQuery; sinyal validasi=custom validate; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Menunggu, Siap Diterima, Error Confirmed from code — goToDetail, goToOrder, handleValidate Confirmed from code — /api/v1/procurement/receipts/list @ src/services/admin/procurement.service.js:300 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:267; Confirmed from code — /api/v1/procurement/receipts/action @ src/services/admin/procurement.service.js:316 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:342 Confirmed from code — sesi autentik; capability inventory.receipts.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.procurement (Pengadaan) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Purchase Request /inventory/procurement/requests src/views/AdminViews/Inventory/PurchaseRequestList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Purchase Request pada /inventory/procurement/requests; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, searchQuery, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=No. PR, Pemohon, Anggaran, Estimasi; filter=searchQuery, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, RFQ, PO, Done, Rejected, Cancelled, Error Confirmed from code — set showFilterModal, goToCreate, goToDetail, goToEdit, applyFilters Confirmed from code — /api/v1/procurement/requests/list @ src/services/admin/procurement.service.js:44 -> ../custom_addons_scola/gcgscola/scola_bos_rkas_procurement/controllers/procurement_admin_api.py:78 Confirmed from code — sesi autentik; capability inventory.purchase_requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/procurement/requests/create P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Produk Inventaris /inventory/products src/views/AdminViews/Inventory/ProductList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Produk Inventaris pada /inventory/products; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, selectedType, activeTab, productForm.name, productForm.default_code, productForm.categ_id, productForm.type, productForm.x_school_category, productForm.list_price, productForm.standard_price, productForm.x_min_qty, productForm.x_is_asset, +10 lainnya; kolom=Produk, Kategori Sekolah, Klasifikasi, Harga Jual, Stok; filter=searchQuery, productForm.x_school_category; sinyal validasi=required; aturan field=searchQuery: type=search, productForm.name: required, productForm.categ_id: required, productForm.list_price: type=number, productForm.standard_price: type=number, productForm.x_min_qty: type=number; Inferred from code — option/status/display-label candidates=Habis Pakai, Inventaris, Jasa, ATK, Buku, Lab, IT, Fasilitas, Olahraga, Seragam, +3 lainnya Confirmed from code — openCreateProduct, fetchProducts, showProductDetail, openEditProduct, saveProduct, set showDetailModal Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/useAlerts.js, src/services/admin/accountingAdmin.service.js, src/services/admin/product.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability inventory.products.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field categ_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu inventory.master (Dashboard & Master Data) P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Buku Induk /inventory/register src/views/AdminViews/Inventory/InventoryRegister.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Buku Induk pada /inventory/register; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, filters.warehouseId, filters.locationId; kolom=Produk, Lokasi, Qty, Reserved, Available, Satuan; filter=searchQuery, filters.warehouseId, filters.locationId; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchRegister Confirmed from code — /api/v1/inventory/reports/register @ src/services/admin/inventory.service.js:439 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:572; Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412 Confirmed from code — sesi autentik; capability inventory.register.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/reports/register; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /vice-principal/infrastructure/inventory P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Laporan Inventori /inventory/reports src/views/AdminViews/Inventory/ReportSummary.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Laporan Inventori pada /inventory/reports; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Gudang, Jumlah Produk, Total Qty, Produk, Jumlah Transfer; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goToMutations, goToBudgetReport, fetchAllData, goToStock Confirmed from code — /api/v1/inventory/reports/frequent-products @ src/services/admin/inventory.service.js:499 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:651 Confirmed from code — sesi autentik; capability inventory.reports.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/mutations, /inventory/budget-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Permintaan /inventory/requests src/views/AdminViews/Inventory/RequestList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Permintaan pada /inventory/requests; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, searchQuery, filters.warehouseId, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=No. Permintaan, Lokasi, Referensi, Anggaran, Dibuat Oleh; filter=searchQuery, filters.warehouseId, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Cancelled, Error Confirmed from code — set showFilterModal, goToCreate, goToDetail, goToEdit, applyFilters Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274 Confirmed from code — sesi autentik; capability inventory.requests.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/request/create, /vice-principal/infrastructure/requests P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Retur /inventory/return src/views/AdminViews/Inventory/ReturnPage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Retur pada /inventory/return; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, createForm.location_from_id, createForm.location_to_id, createForm.scheduled_date, createForm.return_reason, createForm.reason, selectedProduct, line.qty, Ke Gudang *, Tanggal Retur, Alasan Retur *, +3 lainnya; kolom=Produk, Qty Dikembalikan, Satuan, No. Retur, Dibuat Oleh; filter=searchQuery, createForm.scheduled_date; sinyal validasi=required, min/max; aturan field=searchQuery: type=search, createForm.location_from_id: required, createForm.location_to_id: required, createForm.return_reason: required, line.qty: min=1, type=number; Inferred from code — option/status/display-label candidates=Barang Rusak, Kelebihan Barang, Barang Salah, Draft, Submitted, Done Confirmed from code — set showCreateModal, openDetail, handleSubmit, handleMarkDone, closeCreateModal, goToStep2, removeProductLine, set createStep, handleCreateReturn, handleCancel Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402 Confirmed from code — sesi autentik; capability inventory.returns.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field location_from_id, location_to_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu inventory.operations (Operasional) P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Pengaturan RKAS /inventory/rkas-settings src/views/AdminViews/Inventory/RkasSettings.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Pengaturan RKAS pada /inventory/rkas-settings; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.fiscal_year, form.school_type, Contoh: 2024/2025, Tipe Sekolah; filter=form.school_type; Inferred from code — option/status/display-label candidates=Negeri, Swasta, Error Confirmed from code — loadSettings, saveSettings Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/inventory.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability inventory.rkas.config; allowedRoles inventory_officer, admin, school_admin; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu inventory.budget (Anggaran BOS) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Stok /inventory/stock src/views/AdminViews/Inventory/StockList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Stok pada /inventory/stock; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedWarehouse, searchQuery; kolom=Nama Barang, Qty Tersedia, Qty Dipesan, Total Qty, Satuan; filter=searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchStock, showProductDetail, set showDetailModal Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/stock/list @ src/services/admin/inventory.service.js:42 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:155; Confirmed from code — /api/v1/inventory/products/detail @ src/services/admin/inventory.service.js:72 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:196 Confirmed from code — sesi autentik; capability inventory.stock.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /vice-principal/infrastructure/stock P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Stock Opname /inventory/stock-opname src/views/AdminViews/Inventory/StockOpname.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Stock Opname pada /inventory/stock-opname; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.location_id, form.date, form.note, line.product_id, line.counted_qty, approvalNote, Lokasi, Tanggal Opname, Catatan Opname, Catatan pemeriksaan (opsional), Catatan Persetujuan, Catatan approval (opsional); kolom=Produk, Sistem, Hitung, Selisih, Aksi, Dihitung, No. Dokumen, Lokasi, Total Selisih; filter=form.date; sinyal validasi=min/max, custom validate; aturan field=line.counted_qty: min=0, type=number; Inferred from code — option/status/display-label candidates=Error Confirmed from code — addLine, set showScanner, removeLine, changePage, resetForm, openConfirmModal, submitOpname, viewDetail, handleCancel Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/stock/by-location @ src/services/admin/inventory.service.js:57 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:175; Confirmed from code — /api/v1/inventory/opname/create @ src/services/admin/inventory.service.js:541 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:854; Confirmed from code — /api/v1/inventory/opname/action @ src/services/admin/inventory.service.js:597 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:861; Confirmed from code — /api/v1/inventory/opname/lines/save @ src/services/admin/inventory.service.js:576 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:886; Confirmed from code — /api/v1/inventory/opname/detail @ src/services/admin/inventory.service.js:526 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:798 Confirmed from code — sesi autentik; capability inventory.stock_opname.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field location_id, product_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/opname/create, /api/v1/inventory/opname/lines/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu inventory.master (Dashboard & Master Data) P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Transfer /inventory/transfer src/views/AdminViews/Inventory/TransferPage.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Transfer pada /inventory/transfer; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, createForm.location_from_id, createForm.location_to_id, createForm.scheduled_date, createForm.reason, selectedProduct, line.qty, Ke Lokasi *, Tanggal Transfer, Alasan Transfer, Jelaskan alasan mutasi barang..., +1 lainnya; kolom=Produk, Qty, Satuan, No. Transfer, Rute, Dibuat Oleh; filter=searchQuery, createForm.scheduled_date; sinyal validasi=required, min/max; aturan field=searchQuery: type=search, createForm.location_from_id: required, createForm.location_to_id: required, line.qty: min=1, max=line.qty_available, type=number; Inferred from code — option/status/display-label candidates=Draft, Submitted, Done Confirmed from code — set showCreateModal, openDetail, handleSubmit, handleMarkDone, closeCreateModal, goToStep2, removeProductLine, set createStep, handleCreateTransfer, handleCancel Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274; Confirmed from code — /api/v1/inventory/requests/detail @ src/services/admin/inventory.service.js:150 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:317; Confirmed from code — /api/v1/inventory/requests/create @ src/services/admin/inventory.service.js:176 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:354; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:207 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412; Confirmed from code — /api/v1/inventory/products/search @ src/services/admin/inventory.service.js:81 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:224; Confirmed from code — /api/v1/inventory/picking-types/list @ src/services/admin/inventory.service.js:260 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:402 Confirmed from code — sesi autentik; capability inventory.transfers.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field location_from_id, location_to_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/requests/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu inventory.operations (Operasional) P1 — mutasi data, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
inventory Gudang /inventory/warehouses src/views/AdminViews/Inventory/WarehouseList.vue:1 Confirmed from code — inventory_officer, admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Gudang pada /inventory/warehouses; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; kolom=Gudang, Lokasi Stok, Partner; filter=searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchWarehouses, openDetail, set showDetailModal Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144 Confirmed from code — sesi autentik; capability inventory.warehouses.view; allowedRoles inventory_officer, admin, school_admin; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu inventory.master (Dashboard & Master Data) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

lab-technician (7 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
lab-technician Dashboard /lab-technician/dashboard src/views/Laboran/LaboranDashboard.vue:1 Inferred from code — lab_technician; diturunkan dari pola capability frontend untuk lab.dashboard.view; izin sesi backend dapat berbeda Inferred from code — halaman Dashboard pada /lab-technician/dashboard; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=required; Inferred from code — option/status/display-label candidates=Inventaris, Jadwal Lab, Peminjaman, Perawatan, Laporan, Kerusakan Confirmed from code — item.action Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, src/services/dashboard/index.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability lab.dashboard.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /lab-technician/schedule, /lab-technician/inventory, /lab-technician/loans, /lab-technician/maintenance/routine, /lab-technician/reports, /lab-technician/maintenance/damage P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
lab-technician Alat & Bahan /lab-technician/inventory src/views/Laboran/Inventory/LabInventoryList.vue:1 Inferred from code — lab_technician; diturunkan dari pola capability frontend untuk lab.inventory.view; izin sesi backend dapat berbeda Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability lab.inventory.view; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu lab.inventory (Inventaris Lab) P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub
lab-technician Peminjaman /lab-technician/loans src/views/Laboran/Loans/LoanList.vue:1 Inferred from code — lab_technician; diturunkan dari pola capability frontend untuk lab.loans.view; izin sesi backend dapat berbeda Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability lab.loans.view; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu lab.inventory (Inventaris Lab) P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub
lab-technician Kerusakan /lab-technician/maintenance/damage src/views/Laboran/Maintenance/DamageReports.vue:1 Inferred from code — admin, school_admin, lab_technician, inventory_officer, vice_principal_infrastructure; diturunkan dari pola capability frontend untuk maintenance.overview.view; izin sesi backend dapat berbeda Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability maintenance.overview.view; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu lab.maintenance (Pemeliharaan) P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub
lab-technician Perawatan Rutin /lab-technician/maintenance/routine src/views/Laboran/Maintenance/RoutineMaintenance.vue:1 Inferred from code — admin, school_admin, lab_technician, inventory_officer, vice_principal_infrastructure; diturunkan dari pola capability frontend untuk maintenance.overview.view; izin sesi backend dapat berbeda Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability maintenance.overview.view; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu lab.maintenance (Pemeliharaan) P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub
lab-technician Laporan /lab-technician/reports src/views/Laboran/Reports/LabReports.vue:1 Inferred from code — lab_technician; diturunkan dari pola capability frontend untuk lab.reports.view; izin sesi backend dapat berbeda Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability lab.reports.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu lab.reports (Laporan) P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub
lab-technician Jadwal Penggunaan /lab-technician/schedule src/views/Laboran/Schedule/LabSchedule.vue:1 Inferred from code — lab_technician; diturunkan dari pola capability frontend untuk lab.schedule.view; izin sesi backend dapat berbeda Confirmed from code — route merender placeholder/stub; tujuan final belum diimplementasikan Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability lab.schedule.view; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu lab.inventory (Inventaris Lab) P0 — placeholder/stub Missing or unclear — route/component terkonfirmasi, fungsi halaman masih placeholder/stub

librarian (26 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
librarian Kelola Denda /librarian/circulation/fines src/views/LibraryManagement/Circulation/FineManagement.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Kelola Denda pada /librarian/circulation/fines; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, filterStatus, showWaiverModal, waiverReason, waiverNotes, Alasan Pembebasan *, Jelaskan alasan pembebasan secara detail...; kolom=Peminjam, Denda; filter=searchQuery, filterStatus; Inferred from code — option/status/display-label candidates=Menunggu Waiver, Lunas, Dibebaskan, Kebijakan Khusus, Keringanan Pertama Confirmed from code — fetchFines, openWaiverModal, viewDetails, processWaiver Confirmed from code — /api/v1/library/fines/list @ src/services/library/library.service.js:634 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:365; Confirmed from code — /api/v1/library/fines/waiver @ src/services/library/library.service.js:639 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:400 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu librarian.circulation (Sirkulasi) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Penulis /librarian/config/authors src/views/LibraryManagement/Konfigurasi/AuthorsPage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Penulis pada /librarian/config/authors; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.address_partner_id, searchQuery, Masukkan nama penulis, Alamat (Partner); filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteAuthor Confirmed from code — /api/v1/library/admin/authors/create @ src/services/library/library.service.js:416 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:136; Confirmed from code — /api/v1/library/admin/authors/update @ src/services/library/library.service.js:421 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:158; Confirmed from code — /api/v1/library/admin/authors/list @ src/services/library/library.service.js:406 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:234; Confirmed from code — /api/v1/library/admin/authors/delete @ src/services/library/library.service.js:426 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:190 Confirmed from code — sesi autentik; capability library.authors.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field address_partner_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/authors/create, /api/v1/library/admin/authors/update, /api/v1/library/admin/authors/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/authors P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Tipe Kartu /librarian/config/library-card-types src/views/LibraryManagement/Konfigurasi/LibraryCardTypesPage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Tipe Kartu pada /librarian/config/library-card-types; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.allow_media, form.duration, form.penalty_amt_per_day, searchQuery, Masukkan nama, Jumlah Buku, Masukkan jumlah, Durasi (hari), Masukkan durasi, Denda / Hari, Masukkan denda; kolom=Maks Buku, Durasi (hari), Denda / Hari; filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteCardType Confirmed from code — /api/v1/library/admin/library-card-types/create @ src/services/library/library.service.js:943 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:515; Confirmed from code — /api/v1/library/admin/library-card-types/update @ src/services/library/library.service.js:948 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:546; Confirmed from code — /api/v1/library/admin/library-card-types/list @ src/services/library/library.service.js:456 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:347; Confirmed from code — /api/v1/library/admin/library-card-types/delete @ src/services/library/library.service.js:953 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:584 Confirmed from code — sesi autentik; capability library.card_types.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/library-card-types/create, /api/v1/library/admin/library-card-types/update, /api/v1/library/admin/library-card-types/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/library-card-types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Kartu Anggota /librarian/config/library-cards src/views/LibraryManagement/Konfigurasi/LibraryCards.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Kartu Anggota pada /librarian/config/library-cards; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, formData.number, formData.library_card_type_id, selectedPersonIdProxy, formData.issue_date, formData.expiration_date, formData.notes, formData.active, Otomatis, Jenis Anggota, formData.type ===, Tanggal Kadaluarsa, +1 lainnya; kolom=Anggota; filter=searchQuery, formData.issue_date, formData.expiration_date; aturan field=formData.issue_date: type=date, formData.expiration_date: type=date, formData.active: type=checkbox Confirmed from code — Tambah Baru, createMediaItem, goToDetail, submitForm Confirmed from code — /api/v1/library/admin/library-cards/list @ src/services/library/library.service.js:446 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:292; Confirmed from code — /api/v1/library/admin/library-card-types/list @ src/services/library/library.service.js:456 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:347; Confirmed from code — /api/v1/library/admin/library-cards/members/search @ src/services/library/library.service.js:461 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:376; Confirmed from code — /api/v1/library/admin/library-cards/member-partner @ src/services/library/library.service.js:466 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:404; Confirmed from code — /api/v1/library/admin/library-cards/create @ src/services/library/library.service.js:471 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:511 Confirmed from code — sesi autentik; capability library.cards.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field library_card_type_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/library-cards/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/library-cards P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Tag Media /librarian/config/media-tags src/views/LibraryManagement/Konfigurasi/MediaTagsPage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Tag Media pada /librarian/config/media-tags; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, searchQuery, Masukkan nama label; kolom=Nama Tag; filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteTag Confirmed from code — /api/v1/library/admin/tags/create @ src/services/library/library.service.js:928 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:458; Confirmed from code — /api/v1/library/admin/tags/update @ src/services/library/library.service.js:933 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:474; Confirmed from code — /api/v1/library/admin/tags/list @ src/services/library/library.service.js:923 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:439; Confirmed from code — /api/v1/library/admin/tags/delete @ src/services/library/library.service.js:938 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:494 Confirmed from code — sesi autentik; capability library.tags.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/tags/create, /api/v1/library/admin/tags/update, /api/v1/library/admin/tags/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/media-tags P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Tipe Media /librarian/config/media-types src/views/LibraryManagement/Konfigurasi/MediaTypePage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Tipe Media pada /librarian/config/media-types; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, form.code, searchQuery, Masukkan nama, Masukkan kode; filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteMediaType Confirmed from code — /api/v1/library/admin/media-types/create @ src/services/library/library.service.js:908 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:376; Confirmed from code — /api/v1/library/admin/media-types/update @ src/services/library/library.service.js:913 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:393; Confirmed from code — /api/v1/library/admin/media-types/list @ src/services/library/library.service.js:903 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:356; Confirmed from code — /api/v1/library/admin/media-types/delete @ src/services/library/library.service.js:918 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:418 Confirmed from code — sesi autentik; capability library.media_types.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media-types/create, /api/v1/library/admin/media-types/update, /api/v1/library/admin/media-types/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/media-types P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Penerbit /librarian/config/publishers src/views/LibraryManagement/Konfigurasi/Publishers.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Penerbit pada /librarian/config/publishers; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, form.name, form.address_text, Masukkan nama penerbit, Masukkan alamat penerbit; filter=searchQuery Confirmed from code — openCreateModal, openEditModal, deletePublisher, submitForm Confirmed from code — /api/v1/library/admin/publishers/list @ src/services/library/library.service.js:411 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:263; Confirmed from code — /api/v1/library/admin/publishers/delete @ src/services/library/library.service.js:441 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:272; Confirmed from code — /api/v1/library/admin/publishers/create @ src/services/library/library.service.js:431 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:212; Confirmed from code — /api/v1/library/admin/publishers/update @ src/services/library/library.service.js:436 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_reference_api.py:238 Confirmed from code — sesi autentik; capability library.publishers.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/publishers/delete, /api/v1/library/admin/publishers/create, /api/v1/library/admin/publishers/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /config/publishers P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Slip Gaji /librarian/employee/payslip src/views/FacultyViews/Payroll/PayslipList.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Slip Gaji pada /librarian/employee/payslip; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — goToDetail Confirmed from code — /api/payroll/my/payslips @ src/services/hr/employeePayrollSelf.service.js:12 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_api.py:274 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles librarian; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/employee/payslip, /faculty/employee/payslip P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Dashboard GLS /librarian/gls/dashboard src/views/LibraryManagement/GLS/ReadingDashboard.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Dashboard GLS pada /librarian/gls/dashboard; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/gls/dashboard, /principal/library/gls/dashboard P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Program /librarian/gls/programs src/views/LibraryManagement/GLS/GLSPrograms.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Program pada /librarian/gls/programs; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/gls/programs P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Katalog /librarian/library src/views/LibraryManagement/Media/MediaCatalogPage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Katalog pada /librarian/library; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, sortBy, Urutkan; filter=searchQuery; sinyal validasi=min/max; aturan field=searchQuery: type=search Confirmed from code — Tambah Buku, Selanjutnya, Hapus Buku, navigateToAddBook, handleSortChange, navigateToDetail, handleDelete, goToPage, changePageSize, set showDeleteModal, confirmDelete Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useLibraryData.js, src/composables/useLibraryRouteBase.js, src/composables/useLibrarySearch.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/catalogue P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Monitoring Denda /librarian/library/fines src/views/LibraryManagement/Fines/LibraryFines.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Monitoring Denda pada /librarian/library/fines; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, statusFilter, Pencarian, Status Denda; kolom=Transaksi, Anggota, Hari Telat, Nominal; filter=searchQuery, statusFilter, Status Denda; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Dibayar, Outstanding Confirmed from code — reloadData, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/library/library.service.js, src/services/library/libraryFines.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.fines.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/fines P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Peminjaman /librarian/library/movement src/views/LibraryManagement/Media/MediaMovement.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Peminjaman pada /librarian/library/movement; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, bookData.media_id, bookData.media_unit_id, bookData.library_card_id, selectedPerson, bookData.issued_date, bookData.actual_return_date, bookData.return_date, dailyPenaltyRate, bookData.penalty, Media Unit, Library Card, +6 lainnya; kolom=Library Card, Peminjam, Tipe Buku, Issued Date, Return Date, Actual Return Date, Denda, State, Type; filter=searchQuery, bookData.issued_date, bookData.actual_return_date, bookData.return_date, Issued Date, Actual Return Date, Due Date; sinyal validasi=min/max; aturan field=searchQuery: type=text, bookData.issued_date: type=date, bookData.actual_return_date: type=date, bookData.return_date: type=date, dailyPenaltyRate: type=number, bookData.penalty: type=number Confirmed from code — set searchQuery, set showAddModal, submitForm, fetchLibraryCardDetails Confirmed from code — /api/v1/library/admin/movements/list @ src/services/library/library.service.js:378 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:190; Confirmed from code — /api/v1/library/settings/get @ src/services/library/library.service.js:760 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:63; Confirmed from code — /api/v1/library/admin/members/students/search @ src/services/library/library.service.js:978 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:700; Confirmed from code — /api/v1/library/admin/members/faculty/search @ src/services/library/library.service.js:983 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:714; Confirmed from code — /api/v1/library/admin/members/students/detail @ src/services/library/library.service.js:988 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:728; Confirmed from code — /api/v1/library/admin/members/faculty/detail @ src/services/library/library.service.js:993 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:754; Confirmed from code — /api/v1/library/admin/library-cards/detail @ src/services/library/library.service.js:451 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:323; Confirmed from code — /api/v1/library/admin/media/search @ src/services/library/library.service.js:963 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:643; Confirmed from code — /api/v1/library/admin/media-units/search @ src/services/library/library.service.js:883 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:279; Confirmed from code — /api/v1/library/admin/library-cards/search @ src/services/library/library.service.js:968 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:658; Confirmed from code — /api/v1/library/admin/circulation/movement/create @ src/services/library/library.service.js:1018 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:901; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148; Confirmed from code — /api/v1/library/admin/media-units/update @ src/services/library/library.service.js:893 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:312 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field media_id, media_unit_id, library_card_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/circulation/movement/create, /api/v1/library/admin/media-units/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/movement P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Pembelian /librarian/library/purchase src/views/LibraryManagement/Media/MediaPurchasePage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Pembelian pada /librarian/library/purchase; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.title, formData.mediaType, formData.course, formData.subject, formData.authors, formData.publishers, formData.edition, searchQuery, statusFilter, Masukkan judul, Masukkan Penulis, Masukkan Penerbit, +4 lainnya; kolom=No. Usulan, Buku / Judul, Pengusul, Prioritas; filter=formData.course, searchQuery, statusFilter, Status; aturan field=searchQuery: type=search Confirmed from code — Tambah Usulan, Selanjutnya, submitForm, set showAddModal, handleView, handleEdit, handleDelete, goToPage, set showDeleteModal, confirmDelete, set showViewModal Confirmed from code — /api/v1/library/purchase-requests/options @ src/services/library/library.service.js:739 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:190; Confirmed from code — /api/v1/library/purchase-requests/create @ src/services/library/library.service.js:750 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:246; Confirmed from code — /api/v1/library/purchase-requests/update @ src/services/library/library.service.js:1038 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:344; Confirmed from code — /api/v1/library/purchase-requests/detail @ src/services/library/library.service.js:1033 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:315 Confirmed from code — sesi autentik; capability library.purchases.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/purchase-requests/create, /api/v1/library/purchase-requests/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/purchase P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Antrian /librarian/library/queue src/views/LibraryManagement/Media/MediaQueuePage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Antrian pada /librarian/library/queue; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=queueRequest.date_from, queueRequest.media_id, queueRequest.date_to, searchQuery, statusFilter, User, From Date, To Date, Status; kolom=No. Permintaan, Pemohon; filter=queueRequest.date_from, queueRequest.date_to, searchQuery, statusFilter, From Date, To Date, Status; aturan field=queueRequest.date_from: type=date, queueRequest.date_to: type=date, searchQuery: type=search Confirmed from code — Tambah Permintaan, Tambah Permintaan Pertama, Selanjutnya, submitForm, set showAddModal, handleEdit, handleDelete, goToPage, set showDeleteModal, confirmDelete Confirmed from code — /api/v1/library/admin/media/search @ src/services/library/library.service.js:963 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:643; Confirmed from code — /api/v1/library/admin/queue/create @ src/services/library/library.service.js:1008 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:836; Confirmed from code — /api/v1/library/admin/queue/update @ src/services/library/library.service.js:1013 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:867; Confirmed from code — /api/v1/library/admin/queue/detail @ src/services/library/library.service.js:1003 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:804; Confirmed from code — /api/v1/library/queue/cancel @ src/services/library/library.service.js:553 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:138 Confirmed from code — sesi autentik; capability library.queue.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field media_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/queue/create, /api/v1/library/admin/queue/update, /api/v1/library/queue/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/queue P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Unit Media /librarian/library/units src/views/LibraryManagement/Media/MediaUnitsPage.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Unit Media pada /librarian/library/units; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=newMediaUnit.name, newMediaUnit.media_id, newMediaUnit.media_type_id, newMediaUnit.location_id, newMediaUnit.accession_number, newMediaUnit.condition, newMediaUnit.acquisition_source, newMediaUnit.acquisition_date, newMediaUnit.acquisition_price, searchQuery, statusFilter, Name, +11 lainnya; filter=newMediaUnit.acquisition_date, searchQuery, statusFilter, Status; aturan field=newMediaUnit.acquisition_date: type=date, newMediaUnit.acquisition_price: type=number, searchQuery: type=search; Inferred from code — option/status/display-label candidates=Excellent, Good, Fair, Poor, Damaged, Purchase, Donation, Grant/Droping, Replacement, Other Confirmed from code — Tambah Unit, Selanjutnya, submitForm, set showAddModal, handleView, handleEdit, handleDelete, goToPage, set showDeleteModal, confirmDelete, set showViewModal Confirmed from code — /api/v1/library/admin/media/search @ src/services/library/library.service.js:963 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:643; Confirmed from code — /api/v1/library/admin/media-types/search @ src/services/library/library.service.js:491 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:461; Confirmed from code — /api/v1/library/admin/locations/search @ src/services/library/library.service.js:858 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:165; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148; Confirmed from code — /api/v1/library/admin/media-units/detail @ src/services/library/library.service.js:878 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:260; Confirmed from code — /api/v1/library/admin/media-units/create @ src/services/library/library.service.js:888 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:298; Confirmed from code — /api/v1/library/admin/media-units/update @ src/services/library/library.service.js:893 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:312 Confirmed from code — sesi autentik; capability library.media_units.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field media_id, media_type_id, location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media-units/create, /api/v1/library/admin/media-units/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/units P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Cetak Label /librarian/print-labels src/views/LibraryManagement/Labels/PrintLabels.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Cetak Label pada /librarian/print-labels; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, labelSettings.size, labelSettings.showTitle, labelSettings.showAccessionNumber, labelSettings.showCallNumber, labelSettings.showBarcode, Ukuran Label, Judul Buku, Nomor Panggil (Call Number), Tampilkan, Preview; filter=searchQuery; sinyal validasi=min/max; aturan field=searchQuery: type=search, field: type=checkbox; Inferred from code — option/status/display-label candidates=5 x 3 cm (Standard), 7 x 4 cm (Large), 3 x 2 cm (Small/Spine) Confirmed from code — searchMediaUnits, selectAll, toggleSelection, clearSelection, updateCopies, removeFromSelection, printLabels Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148 Confirmed from code — sesi autentik; capability library.print_labels.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/print-labels P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Semua Laporan /librarian/reports src/views/LibraryManagement/Reports/LibraryReports.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Semua Laporan pada /librarian/reports; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=dateRange.start, dateRange.end; kolom=Peminjam, Tgl Pinjam, Est. Denda; filter=dateRange.start, dateRange.end; aturan field=dateRange.start: type=date, dateRange.end: type=date Confirmed from code — Buka Laporan Akreditasi, loadAllData, set activeTab, exportToCSV, goToAccreditationReport Confirmed from code — /api/v1/library/reports/overview @ src/services/library/library.service.js:709 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:659 Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/reports P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Akreditasi SNP /librarian/reports/accreditation src/views/LibraryManagement/Reports/AccreditationReport.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Akreditasi SNP pada /librarian/reports/accreditation; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, Tanggal Mulai, Tanggal Akhir, Periode Laporan; kolom=Eksemplar, Persentase, Program, Jumlah Kegiatan, Peserta, Tipe Anggota, Peminjaman, Judul Buku; filter=startDate, endDate, Periode Laporan; aturan field=startDate: type=date, endDate: type=date Confirmed from code — generateReport, exportPDF, exportExcel, set activeTab Confirmed from code — /api/v1/library/reports/accreditation @ src/services/library/library.service.js:648 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:422 Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/reports/accreditation, /principal/library/reports/accreditation P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Kebijakan Koleksi /librarian/settings/collection-policy src/views/LibraryManagement/Settings/CollectionPolicy.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Kebijakan Koleksi pada /librarian/settings/collection-policy; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Inferred from code — model references library.residual.collectionPolicy.mengalihkanKePengaturanPerpustakaan; endpoint tidak eksplisit Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/settings/collection-policy P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Lokasi /librarian/settings/locations src/views/LibraryManagement/Settings/LibraryLocations.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Lokasi pada /librarian/settings/locations; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, formData.name, formData.code, formData.parent_id, formData.capacity, formData.active, formData.ddc_range_start, formData.ddc_range_end, formData.description, Nama Lokasi, Contoh: Rak A, Ruang Baca, Kode Lokasi, +8 lainnya; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, formData.name: required, formData.code: required, formData.capacity: type=number, formData.active: type=checkbox Confirmed from code — openCreate, retryLoad, toggleExpand, editLocation, confirmDelete, submitForm, deleteLocation Confirmed from code — /api/v1/library/admin/locations/list @ src/services/library/library.service.js:853 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:145; Confirmed from code — /api/v1/library/admin/locations/create @ src/services/library/library.service.js:863 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:178; Confirmed from code — /api/v1/library/admin/locations/update @ src/services/library/library.service.js:868 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:205; Confirmed from code — /api/v1/library/admin/locations/delete @ src/services/library/library.service.js:873 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:238 Confirmed from code — sesi autentik; capability library.locations.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field parent_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/locations/create, /api/v1/library/admin/locations/update, /api/v1/library/admin/locations/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/settings/locations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Privasi & Retensi /librarian/settings/privacy src/views/LibraryManagement/Settings/PrivacySettings.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Privasi & Retensi pada /librarian/settings/privacy; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Inferred from code — model references library.residual.privacySettings.mengalihkanKePengaturanPerpustakaan; endpoint tidak eksplisit Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/settings/privacy P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Kalender Layanan /librarian/settings/service-calendar src/views/LibraryManagement/Settings/ServiceCalendar.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Kalender Layanan pada /librarian/settings/service-calendar; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Inferred from code — model references library.residual.serviceCalendar.mengalihkanKePengaturanPerpustakaan; endpoint tidak eksplisit Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/settings/service-calendar P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Stock Opname /librarian/stock-opname src/views/LibraryManagement/StockOpname/StockOpname.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Stock Opname pada /librarian/stock-opname; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=barcodeInput, formData.name, formData.location_id, formData.start_date, formData.end_date, formData.notes, Contoh: Opname Januari 2024, Nama Sesi, Lokasi (Opsional), Tanggal Mulai, Tanggal Selesai; filter=formData.start_date, formData.end_date; aturan field=barcodeInput: type=text, formData.name: type=text, formData.start_date: type=date, formData.end_date: type=date Confirmed from code — set isFormVisible, finalizeSession, cancelScan, handleBarcodeScan, createSession, startSession, confirmAction Confirmed from code — /api/v1/library/stock-opname/list @ src/services/library/library.service.js:1043 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:22; Confirmed from code — /api/v1/library/admin/locations/search @ src/services/library/library.service.js:858 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:165; Confirmed from code — /api/v1/library/stock-opname/create @ src/services/library/library.service.js:1048 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:63; Confirmed from code — /api/v1/library/stock-opname/start @ src/services/library/library.service.js:1053 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:87; Confirmed from code — /api/v1/library/stock-opname/lines @ src/services/library/library.service.js:1058 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:181; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148; Confirmed from code — /api/v1/library/stock-opname/line/update @ src/services/library/library.service.js:1063 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:224; Confirmed from code — /api/v1/library/stock-opname/line/create @ src/services/library/library.service.js:1068 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:248; Confirmed from code — /api/v1/library/stock-opname/done @ src/services/library/library.service.js:1083 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:159 Confirmed from code — sesi autentik; capability library.stock_opname.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; member, catalog/copy dan circulation policy terkait; referenced records dari field location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/stock-opname/create, /api/v1/library/stock-opname/line/update, /api/v1/library/stock-opname/line/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/stock-opname P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Distribusi /librarian/textbook/distribution src/views/LibraryManagement/Textbook/TextbookDistribution.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Distribusi pada /librarian/textbook/distribution; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=No, ... Confirmed from code — ← Kembali, selectPackage, set activeStep, selectClassroom, autoAssignUnits, resetDistribution, submitDistribution Confirmed from code — /api/v1/library/textbook/packages @ src/services/library/library.service.js:1088 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:22; Confirmed from code — /api/v1/library/textbook/classrooms/list @ src/services/library/library.service.js:1113 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:352; Confirmed from code — /api/v1/library/textbook/students/list @ src/services/library/library.service.js:1118 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:368; Confirmed from code — /api/v1/library/textbook/media-units/list @ src/services/library/library.service.js:1123 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:393; Confirmed from code — /api/v1/library/admin/circulation/movement/create @ src/services/library/library.service.js:1018 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:901; Confirmed from code — /api/v1/library/settings/get @ src/services/library/library.service.js:760 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:63 Confirmed from code — sesi autentik; capability library.textbook_distribution.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/circulation/movement/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/textbook/distribution P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
librarian Paket Buku /librarian/textbook/packages src/views/LibraryManagement/Textbook/TextbookPackages.vue:1 Confirmed from code — librarian; guard route memakai allowedRoles Inferred from code — halaman Paket Buku pada /librarian/textbook/packages; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=formData.name, formData.academic_year_id, formData.grade_level, formData.semester, formData.description, searchQuery, Nama Paket, Tulis deskripsi paket..., Buku dalam Paket; filter=searchQuery; sinyal validasi=required; aturan field=formData.name: required, searchQuery: type=text; Inferred from code — option/status/display-label candidates=Ganjil, Genap, Full Year Confirmed from code — Reset pencarian, set isFormVisible, removeMediaFromPackage, addMediaToPackage, submitForm, editPackage, deletePackage, set searchQuery, confirmDelete Confirmed from code — /api/v1/library/textbook/packages @ src/services/library/library.service.js:1088 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:22; Confirmed from code — /api/v1/library/textbook/academic-years/search @ src/services/library/library.service.js:1108 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:332; Confirmed from code — /api/v1/library/catalog/list @ src/services/library/library.service.js:368 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:299; Confirmed from code — /api/v1/library/textbook/packages/create @ src/services/library/library.service.js:1093 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:260; Confirmed from code — /api/v1/library/textbook/packages/update @ src/services/library/library.service.js:1098 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:286; Confirmed from code — /api/v1/library/textbook/packages/delete @ src/services/library/library.service.js:1103 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:314 Confirmed from code — sesi autentik; capability library.textbook_packages.view; allowedRoles librarian; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field academic_year_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/textbook/packages/create, /api/v1/library/textbook/packages/update, /api/v1/library/textbook/packages/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/textbook/packages P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

library (20 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
library Konfigurasi Kartu /config/library-cards src/views/LibraryManagement/Konfigurasi/LibraryCards.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Konfigurasi Kartu pada /config/library-cards; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, formData.number, formData.library_card_type_id, selectedPersonIdProxy, formData.issue_date, formData.expiration_date, formData.notes, formData.active, Otomatis, Jenis Anggota, formData.type ===, Tanggal Kadaluarsa, +1 lainnya; kolom=Anggota; filter=searchQuery, formData.issue_date, formData.expiration_date; aturan field=formData.issue_date: type=date, formData.expiration_date: type=date, formData.active: type=checkbox Confirmed from code — Tambah Baru, createMediaItem, goToDetail, submitForm Confirmed from code — /api/v1/library/admin/library-cards/list @ src/services/library/library.service.js:446 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:292; Confirmed from code — /api/v1/library/admin/library-card-types/list @ src/services/library/library.service.js:456 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:347; Confirmed from code — /api/v1/library/admin/library-cards/members/search @ src/services/library/library.service.js:461 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:376; Confirmed from code — /api/v1/library/admin/library-cards/member-partner @ src/services/library/library.service.js:466 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:404; Confirmed from code — /api/v1/library/admin/library-cards/create @ src/services/library/library.service.js:471 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:511 Confirmed from code — sesi autentik; capability library.cards.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field library_card_type_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/library-cards/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/library-cards P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Tag Media /config/media-tags src/views/LibraryManagement/Konfigurasi/MediaTagsPage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tag Media pada /config/media-tags; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.name, searchQuery, Masukkan nama label; kolom=Nama Tag; filter=searchQuery Confirmed from code — submitForm, openCreateModal, openEditModal, deleteTag Confirmed from code — /api/v1/library/admin/tags/create @ src/services/library/library.service.js:928 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:458; Confirmed from code — /api/v1/library/admin/tags/update @ src/services/library/library.service.js:933 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:474; Confirmed from code — /api/v1/library/admin/tags/list @ src/services/library/library.service.js:923 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:439; Confirmed from code — /api/v1/library/admin/tags/delete @ src/services/library/library.service.js:938 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:494 Confirmed from code — sesi autentik; capability library.tags.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/tags/create, /api/v1/library/admin/tags/update, /api/v1/library/admin/tags/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/config/media-tags P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Katalog Media /library/catalogue src/views/LibraryManagement/Media/MediaCatalogPage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Katalog Media pada /library/catalogue; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, sortBy, Urutkan; filter=searchQuery; sinyal validasi=min/max; aturan field=searchQuery: type=search Confirmed from code — Tambah Buku, Selanjutnya, Hapus Buku, navigateToAddBook, handleSortChange, navigateToDetail, handleDelete, goToPage, changePageSize, set showDeleteModal, confirmDelete Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useLibraryData.js, src/composables/useLibraryRouteBase.js, src/composables/useLibrarySearch.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/library P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Denda /library/fines src/views/LibraryManagement/Fines/LibraryFines.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Denda pada /library/fines; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, statusFilter, Pencarian, Status Denda; kolom=Transaksi, Anggota, Hari Telat, Nominal; filter=searchQuery, statusFilter, Status Denda; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Dibayar, Outstanding Confirmed from code — reloadData, resetFilters Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/library/library.service.js, src/services/library/libraryFines.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.fines.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/library/fines P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Dashboard GLS /library/gls/dashboard src/views/LibraryManagement/GLS/ReadingDashboard.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Dashboard GLS pada /library/gls/dashboard; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/gls/dashboard, /principal/library/gls/dashboard P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Program GLS /library/gls/programs src/views/LibraryManagement/GLS/GLSPrograms.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Program GLS pada /library/gls/programs; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/gls/programs P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Perpustakaan /library/hub src/views/LibraryManagement/Hubs/LibraryManagementHub.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Perpustakaan pada /library/hub; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Koleksi, Katalog, Unit Media, Pembelian, Sirkulasi, Peminjaman, Antrian, Denda, Master Data, Tipe Media, +2 lainnya Confirmed from code — switchMainTab, openSubTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/hub P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Pergerakan Media /library/movement src/views/LibraryManagement/Media/MediaMovement.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pergerakan Media pada /library/movement; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, bookData.media_id, bookData.media_unit_id, bookData.library_card_id, selectedPerson, bookData.issued_date, bookData.actual_return_date, bookData.return_date, dailyPenaltyRate, bookData.penalty, Media Unit, Library Card, +6 lainnya; kolom=Library Card, Peminjam, Tipe Buku, Issued Date, Return Date, Actual Return Date, Denda, State, Type; filter=searchQuery, bookData.issued_date, bookData.actual_return_date, bookData.return_date, Issued Date, Actual Return Date, Due Date; sinyal validasi=min/max; aturan field=searchQuery: type=text, bookData.issued_date: type=date, bookData.actual_return_date: type=date, bookData.return_date: type=date, dailyPenaltyRate: type=number, bookData.penalty: type=number Confirmed from code — set searchQuery, set showAddModal, submitForm, fetchLibraryCardDetails Confirmed from code — /api/v1/library/admin/movements/list @ src/services/library/library.service.js:378 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:190; Confirmed from code — /api/v1/library/settings/get @ src/services/library/library.service.js:760 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:63; Confirmed from code — /api/v1/library/admin/members/students/search @ src/services/library/library.service.js:978 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:700; Confirmed from code — /api/v1/library/admin/members/faculty/search @ src/services/library/library.service.js:983 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:714; Confirmed from code — /api/v1/library/admin/members/students/detail @ src/services/library/library.service.js:988 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:728; Confirmed from code — /api/v1/library/admin/members/faculty/detail @ src/services/library/library.service.js:993 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:754; Confirmed from code — /api/v1/library/admin/library-cards/detail @ src/services/library/library.service.js:451 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:323; Confirmed from code — /api/v1/library/admin/media/search @ src/services/library/library.service.js:963 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:643; Confirmed from code — /api/v1/library/admin/media-units/search @ src/services/library/library.service.js:883 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:279; Confirmed from code — /api/v1/library/admin/library-cards/search @ src/services/library/library.service.js:968 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:658; Confirmed from code — /api/v1/library/admin/circulation/movement/create @ src/services/library/library.service.js:1018 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:901; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148; Confirmed from code — /api/v1/library/admin/media-units/update @ src/services/library/library.service.js:893 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:312 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field media_id, media_unit_id, library_card_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/circulation/movement/create, /api/v1/library/admin/media-units/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/movement P1 — mutasi data, form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Cetak Label /library/print-labels src/views/LibraryManagement/Labels/PrintLabels.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Cetak Label pada /library/print-labels; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, labelSettings.size, labelSettings.showTitle, labelSettings.showAccessionNumber, labelSettings.showCallNumber, labelSettings.showBarcode, Ukuran Label, Judul Buku, Nomor Panggil (Call Number), Tampilkan, Preview; filter=searchQuery; sinyal validasi=min/max; aturan field=searchQuery: type=search, field: type=checkbox; Inferred from code — option/status/display-label candidates=5 x 3 cm (Standard), 7 x 4 cm (Large), 3 x 2 cm (Small/Spine) Confirmed from code — searchMediaUnits, selectAll, toggleSelection, clearSelection, updateCopies, removeFromSelection, printLabels Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148 Confirmed from code — sesi autentik; capability library.print_labels.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /librarian/print-labels P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Pembelian /library/purchase src/views/LibraryManagement/Media/MediaPurchasePage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pembelian pada /library/purchase; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=formData.title, formData.mediaType, formData.course, formData.subject, formData.authors, formData.publishers, formData.edition, searchQuery, statusFilter, Masukkan judul, Masukkan Penulis, Masukkan Penerbit, +4 lainnya; kolom=No. Usulan, Buku / Judul, Pengusul, Prioritas; filter=formData.course, searchQuery, statusFilter, Status; aturan field=searchQuery: type=search Confirmed from code — Tambah Usulan, Selanjutnya, submitForm, set showAddModal, handleView, handleEdit, handleDelete, goToPage, set showDeleteModal, confirmDelete, set showViewModal Confirmed from code — /api/v1/library/purchase-requests/options @ src/services/library/library.service.js:739 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:190; Confirmed from code — /api/v1/library/purchase-requests/create @ src/services/library/library.service.js:750 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:246; Confirmed from code — /api/v1/library/purchase-requests/update @ src/services/library/library.service.js:1038 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:344; Confirmed from code — /api/v1/library/purchase-requests/detail @ src/services/library/library.service.js:1033 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:315 Confirmed from code — sesi autentik; capability library.purchases.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/purchase-requests/create, /api/v1/library/purchase-requests/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/purchase P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Usulan Pembelian /library/purchase-requests src/views/Library/Purchase.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.purchase_requests.view; izin sesi backend dapat berbeda Inferred from code — halaman Usulan Pembelian pada /library/purchase-requests; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateToRequestForm Confirmed from code — /api/v1/library/purchase-requests/list @ src/services/library/library.service.js:755 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:232 Confirmed from code — sesi autentik; capability library.purchase_requests.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/library/purchase-requests P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
library Antrian /library/queue src/views/LibraryManagement/Media/MediaQueuePage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Antrian pada /library/queue; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=queueRequest.date_from, queueRequest.media_id, queueRequest.date_to, searchQuery, statusFilter, User, From Date, To Date, Status; kolom=No. Permintaan, Pemohon; filter=queueRequest.date_from, queueRequest.date_to, searchQuery, statusFilter, From Date, To Date, Status; aturan field=queueRequest.date_from: type=date, queueRequest.date_to: type=date, searchQuery: type=search Confirmed from code — Tambah Permintaan, Tambah Permintaan Pertama, Selanjutnya, submitForm, set showAddModal, handleEdit, handleDelete, goToPage, set showDeleteModal, confirmDelete Confirmed from code — /api/v1/library/admin/media/search @ src/services/library/library.service.js:963 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:643; Confirmed from code — /api/v1/library/admin/queue/create @ src/services/library/library.service.js:1008 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:836; Confirmed from code — /api/v1/library/admin/queue/update @ src/services/library/library.service.js:1013 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:867; Confirmed from code — /api/v1/library/admin/queue/detail @ src/services/library/library.service.js:1003 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:804; Confirmed from code — /api/v1/library/queue/cancel @ src/services/library/library.service.js:553 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:138 Confirmed from code — sesi autentik; capability library.queue.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field media_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/queue/create, /api/v1/library/admin/queue/update, /api/v1/library/queue/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/queue P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Sirkulasi Cepat /library/quick-circulation src/views/LibraryManagement/Circulation/QuickCirculation.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Sirkulasi Cepat pada /library/quick-circulation; tujuan diringkas dari aksi interaktif Confirmed from code — field=memberCardNumber, bookBarcode, returnBarcode Confirmed from code — goBack, set mode, lookupMember, clearMember, addBookToCart, set checkoutCart, checkoutCart.splice, processCheckout, processReturn Confirmed from code — /api/v1/library/circulation/checkin @ src/services/library/library.service.js:626 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:318; Confirmed from code — /api/v1/library/circulation/checkout @ src/services/library/library.service.js:618 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:266; Confirmed from code — /api/v1/library/circulation/book-lookup @ src/services/library/library.service.js:613 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:231; Confirmed from code — /api/v1/library/circulation/member-lookup @ src/services/library/library.service.js:606 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:186 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/hub?tab=circulation, /librarian/circulation/quick P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Laporan /library/reports src/views/LibraryManagement/Reports/LibraryReports.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Laporan pada /library/reports; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=dateRange.start, dateRange.end; kolom=Peminjam, Tgl Pinjam, Est. Denda; filter=dateRange.start, dateRange.end; aturan field=dateRange.start: type=date, dateRange.end: type=date Confirmed from code — Buka Laporan Akreditasi, loadAllData, set activeTab, exportToCSV, goToAccreditationReport Confirmed from code — /api/v1/library/reports/overview @ src/services/library/library.service.js:709 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:659 Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /librarian/reports P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Pengembalian /library/returns src/views/LibraryManagement/Returns/ReturnWorkflow.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pengembalian pada /library/returns; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Anggota Confirmed from code — fetchLoans, selectLoan Confirmed from code — /api/v1/library/admin/movements/list @ src/services/library/library.service.js:378 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:190 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /librarian/returns P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Pengaturan /library/settings src/views/LibraryManagement/Settings/LibrarySettings.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pengaturan pada /library/settings; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=circulationSettings.default_loan_days, circulationSettings.max_renewals, circulationSettings.grace_period_days, circulationSettings.fine_enabled, circulationSettings.fine_per_day, circulationSettings.max_fine_cap, circulationSettings.block_on_overdue, circulationSettings.block_threshold_days, memberSettings.student_loan_limit, memberSettings.student_loan_days, memberSettings.teacher_loan_limit, memberSettings.teacher_loan_days, +19 lainnya; filter=circulationSettings.grace_period_days, calendarSettings.holiday_dates, Grace Period (hari); sinyal validasi=min/max; aturan field=circulationSettings.default_loan_days: min=1, type=number, circulationSettings.max_renewals: min=0, type=number, circulationSettings.grace_period_days: min=0, type=number, circulationSettings.fine_enabled: type=checkbox, circulationSettings.fine_per_day: min=0, type=number, circulationSettings.max_fine_cap: min=0, type=number, circulationSettings.block_on_overdue: type=checkbox, circulationSettings.block_threshold_days: min=1, type=number, memberSettings.student_loan_limit: min=1, type=number, memberSettings.student_loan_days: min=1, type=number, +11 lainnya Confirmed from code — set activeTab, saveSettings Confirmed from code — /api/v1/library/settings/get @ src/services/library/library.service.js:760 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:63; Confirmed from code — /api/v1/library/settings/save @ src/services/library/library.service.js:795 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:72 Confirmed from code — sesi autentik; capability library.settings.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/settings/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/settings P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Stock Opname /library/stock-opname src/views/LibraryManagement/StockOpname/StockOpname.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Stock Opname pada /library/stock-opname; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=barcodeInput, formData.name, formData.location_id, formData.start_date, formData.end_date, formData.notes, Contoh: Opname Januari 2024, Nama Sesi, Lokasi (Opsional), Tanggal Mulai, Tanggal Selesai; filter=formData.start_date, formData.end_date; aturan field=barcodeInput: type=text, formData.name: type=text, formData.start_date: type=date, formData.end_date: type=date Confirmed from code — set isFormVisible, finalizeSession, cancelScan, handleBarcodeScan, createSession, startSession, confirmAction Confirmed from code — /api/v1/library/stock-opname/list @ src/services/library/library.service.js:1043 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:22; Confirmed from code — /api/v1/library/admin/locations/search @ src/services/library/library.service.js:858 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:165; Confirmed from code — /api/v1/library/stock-opname/create @ src/services/library/library.service.js:1048 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:63; Confirmed from code — /api/v1/library/stock-opname/start @ src/services/library/library.service.js:1053 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:87; Confirmed from code — /api/v1/library/stock-opname/lines @ src/services/library/library.service.js:1058 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:181; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148; Confirmed from code — /api/v1/library/stock-opname/line/update @ src/services/library/library.service.js:1063 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:224; Confirmed from code — /api/v1/library/stock-opname/line/create @ src/services/library/library.service.js:1068 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:248; Confirmed from code — /api/v1/library/stock-opname/done @ src/services/library/library.service.js:1083 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_stockopname_api.py:159 Confirmed from code — sesi autentik; capability library.stock_opname.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; member, catalog/copy dan circulation policy terkait; referenced records dari field location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/stock-opname/create, /api/v1/library/stock-opname/line/update, /api/v1/library/stock-opname/line/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/stock-opname P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Distribusi Buku Pelajaran /library/textbook/distribution src/views/LibraryManagement/Textbook/TextbookDistribution.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Distribusi Buku Pelajaran pada /library/textbook/distribution; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=No, ... Confirmed from code — ← Kembali, selectPackage, set activeStep, selectClassroom, autoAssignUnits, resetDistribution, submitDistribution Confirmed from code — /api/v1/library/textbook/packages @ src/services/library/library.service.js:1088 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:22; Confirmed from code — /api/v1/library/textbook/classrooms/list @ src/services/library/library.service.js:1113 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:352; Confirmed from code — /api/v1/library/textbook/students/list @ src/services/library/library.service.js:1118 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:368; Confirmed from code — /api/v1/library/textbook/media-units/list @ src/services/library/library.service.js:1123 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:393; Confirmed from code — /api/v1/library/admin/circulation/movement/create @ src/services/library/library.service.js:1018 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:901; Confirmed from code — /api/v1/library/settings/get @ src/services/library/library.service.js:760 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:63 Confirmed from code — sesi autentik; capability library.textbook_distribution.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/circulation/movement/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/textbook/distribution P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Paket Buku Pelajaran /library/textbook/packages src/views/LibraryManagement/Textbook/TextbookPackages.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Paket Buku Pelajaran pada /library/textbook/packages; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=formData.name, formData.academic_year_id, formData.grade_level, formData.semester, formData.description, searchQuery, Nama Paket, Tulis deskripsi paket..., Buku dalam Paket; filter=searchQuery; sinyal validasi=required; aturan field=formData.name: required, searchQuery: type=text; Inferred from code — option/status/display-label candidates=Ganjil, Genap, Full Year Confirmed from code — Reset pencarian, set isFormVisible, removeMediaFromPackage, addMediaToPackage, submitForm, editPackage, deletePackage, set searchQuery, confirmDelete Confirmed from code — /api/v1/library/textbook/packages @ src/services/library/library.service.js:1088 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:22; Confirmed from code — /api/v1/library/textbook/academic-years/search @ src/services/library/library.service.js:1108 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:332; Confirmed from code — /api/v1/library/catalog/list @ src/services/library/library.service.js:368 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:299; Confirmed from code — /api/v1/library/textbook/packages/create @ src/services/library/library.service.js:1093 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:260; Confirmed from code — /api/v1/library/textbook/packages/update @ src/services/library/library.service.js:1098 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:286; Confirmed from code — /api/v1/library/textbook/packages/delete @ src/services/library/library.service.js:1103 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_textbook_api.py:314 Confirmed from code — sesi autentik; capability library.textbook_packages.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field academic_year_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/textbook/packages/create, /api/v1/library/textbook/packages/update, /api/v1/library/textbook/packages/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/textbook/packages P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
library Unit Media /library/units src/views/LibraryManagement/Media/MediaUnitsPage.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Unit Media pada /library/units; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=newMediaUnit.name, newMediaUnit.media_id, newMediaUnit.media_type_id, newMediaUnit.location_id, newMediaUnit.accession_number, newMediaUnit.condition, newMediaUnit.acquisition_source, newMediaUnit.acquisition_date, newMediaUnit.acquisition_price, searchQuery, statusFilter, Name, +11 lainnya; filter=newMediaUnit.acquisition_date, searchQuery, statusFilter, Status; aturan field=newMediaUnit.acquisition_date: type=date, newMediaUnit.acquisition_price: type=number, searchQuery: type=search; Inferred from code — option/status/display-label candidates=Excellent, Good, Fair, Poor, Damaged, Purchase, Donation, Grant/Droping, Replacement, Other Confirmed from code — Tambah Unit, Selanjutnya, submitForm, set showAddModal, handleView, handleEdit, handleDelete, goToPage, set showDeleteModal, confirmDelete, set showViewModal Confirmed from code — /api/v1/library/admin/media/search @ src/services/library/library.service.js:963 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:643; Confirmed from code — /api/v1/library/admin/media-types/search @ src/services/library/library.service.js:491 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:461; Confirmed from code — /api/v1/library/admin/locations/search @ src/services/library/library.service.js:858 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:165; Confirmed from code — /api/v1/library/admin/media-units/list @ src/services/library/library.service.js:373 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_read_api.py:148; Confirmed from code — /api/v1/library/admin/media-units/detail @ src/services/library/library.service.js:878 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:260; Confirmed from code — /api/v1/library/admin/media-units/create @ src/services/library/library.service.js:888 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:298; Confirmed from code — /api/v1/library/admin/media-units/update @ src/services/library/library.service.js:893 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_admin_config_api.py:312 Confirmed from code — sesi autentik; capability library.media_units.view; allowedRoles admin, school_admin, head_admin; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait; referenced records dari field media_id, media_type_id, location_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/admin/media-units/create, /api/v1/library/admin/media-units/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /librarian/library/units P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

parent-portal (23 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
parent-portal Notifikasi /notifications src/views/NotificationList.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, homeroom, alumni, vice_principal_student_affairs, vice_principal_public_relations; diturunkan dari pola capability frontend untuk communication.notifications.view; izin sesi backend dapat berbeda Inferred from code — halaman Notifikasi pada /notifications; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — handleMarkAllRead, set activeTab, handleRefresh, handleNotificationClick, loadMore Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useNotifications.js, src/composables/useSSE.js, src/services/auth/auth.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.notifications.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /settings/notifications P3 — halaman sederhana/statis Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
parent-portal Prestasi /parent/achievements src/views/ParentViews/Counseling/ListPrestasi.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Prestasi pada /parent/achievements; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory; filter=searchQuery Confirmed from code — resetFilters, goToDetail Confirmed from code — /api/v1/parent/achievements @ src/services/portal/parentAchievement.service.js:20 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:316 Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles parent; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.studentlife (Kesiswaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Analitik /parent/analytics src/views/AnalyticsManagement/Parent/ParentDashboard.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Analitik pada /parent/analytics; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max Confirmed from code — handleNotificationAction, set showAllGrades Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/analytics/useParentStudentAnalytics.js, src/composables/useAppVersionCheck.js, src/services/attendance/attendanceAnalytics.service.js, src/services/auth/auth.service.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.family.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu parent.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Pengumuman /parent/announcement src/views/AnnouncementList.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Pengumuman pada /parent/announcement; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — set activeFilter, loadAnnouncements, openAnnouncement, loadMore, set selectedAnnouncement Confirmed from code — /portal/announcements @ src/services/news/announcementService.js:41 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/portal_announcement_api.py:12; Missing or unclear — /portal/announcements/:param @ src/services/news/announcementService.js:58; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability communication.announcements.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/news/create, /announcement P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Tugas & PR /parent/assignment src/views/AssignmentManagement/Parent/ParentAssignmentList.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Tugas & PR pada /parent/assignment; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedStudentId, activeTab, searchQuery, selectedExamStatus; filter=searchQuery, selectedExamStatus Confirmed from code — openAssignmentDetail, openExamDetail, closeDetailModal, closeExamModal Confirmed from code — /api/parent/children @ src/services/lms/parentLearning.service.js:146 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_dashboard_api.py:22; Confirmed from code — /lms/attachments @ src/services/lms/lmsSubmission.service.js:32; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.assignments.view; allowedRoles parent; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Kehadiran /parent/attendance src/views/AttendanceManagement/Parent/Attendance.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Kehadiran pada /parent/attendance; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedStudentId, periodMode, weekAnchor, selectedMonthIndex, selectedYear, Periode, Tanggal Acuan; filter=periodMode, Periode; sinyal validasi=required; aturan field=selectedStudentId: required; Inferred from code — option/status/display-label candidates=Bulanan, Mingguan Confirmed from code — set selectedScope, fetchChildren, fetchMonthlyAttendance Confirmed from code — /api/v1/attendance/parent/children @ src/services/attendance/studentAttendance.service.js:317 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:20; Confirmed from code — /api/v1/attendance/parent/monthly @ src/services/attendance/studentAttendance.service.js:359 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:37; Confirmed from code — /api/v1/attendance/parent/period-report @ src/services/attendance/studentAttendance.service.js:387 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:28 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles parent; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Chat dengan Guru /parent/chat-teacher src/views/Messaging.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Chat dengan Guru pada /parent/chat-teacher; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedAssignmentId, newMessage, selectedChildId, userSearchQuery, bulkDraftMessage, Tulis pesan..., Pesan / keterangan foto untuk ortu terpilih; filter=userSearchQuery; sinyal validasi=custom validate; aturan field=field: type=file, newMessage: type=text, userSearchQuery: type=text, field: type=checkbox; Inferred from code — option/status/display-label candidates=Wali kelas, Mapel, Umum, Grup, Pesan Confirmed from code — Mulai Percakapan, Percakapan Baru, Muat pesan sebelumnya, Chat, set messagingScope, set activeTab, set showNewChatModal, openRoom, closeRoom, set showRoomInfo, loadMoreMessages, openAttachment, removeFile, handleFileSelect, +7 lainnya Confirmed from code — /api/v1/messaging/channels @ src/services/notifications/messagingService.js:132 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/rooms @ src/services/notifications/messagingService.js:464 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/channels/:param/messages @ src/services/notifications/messagingService.js:262 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/homeroom/messages @ src/services/notifications/messagingService.js:488 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/channels/:param/send @ src/services/notifications/messagingService.js:331 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:22; Confirmed from code — /api/v1/messaging/homeroom/send-message @ src/services/notifications/messagingService.js:525 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/send-message-bulk @ src/services/notifications/messagingService.js:560 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/channels/create @ src/services/notifications/messagingService.js:404 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:25; Confirmed from code — /api/v1/messaging/homeroom/channel-get @ src/services/notifications/messagingService.js:449 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:16; Confirmed from code — /api/v1/messaging/homeroom/parent-contacts @ src/services/notifications/messagingService.js:425 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/homeroom_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/subject/rooms @ src/services/notifications/messagingService.js:598 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:28; Confirmed from code — /api/v1/messaging/subject/messages @ src/services/notifications/messagingService.js:620 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:12; Confirmed from code — /api/v1/messaging/subject/send-message @ src/services/notifications/messagingService.js:649 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:16; Confirmed from code — /api/v1/messaging/subject/send-message-bulk @ src/services/notifications/messagingService.js:687 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_message_api.py:25; Confirmed from code — /api/v1/messaging/subject/channel-get @ src/services/notifications/messagingService.js:592 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:20; Confirmed from code — /api/v1/messaging/subject/parent-contacts @ src/services/notifications/messagingService.js:572 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/subject_messaging_room_api.py:12; Confirmed from code — /api/v1/messaging/parent/teacher-contacts @ src/services/notifications/messagingService.js:357 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:16; Confirmed from code — /api/v1/messaging/channels/:param/read @ src/services/notifications/messagingService.js:350 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_message_api.py:32; Confirmed from code — /api/v1/messaging/users/search @ src/services/notifications/messagingService.js:713 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/general_messaging_channel_api.py:34; Confirmed from code — /longpolling/poll @ src/services/common/odooLongpoll.js:76; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability communication.chat.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/messaging/channels/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin/messaging, /messaging, /parent/messaging P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Konseling /parent/counseling src/views/ParentViews/Counseling/CounselingList.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Konseling pada /parent/counseling; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm; filter=searchTerm Confirmed from code — goToAddReport, set selectedStatus, loadReports, goToDetail Confirmed from code — /api/v1/counseling/portal/reports/list @ src/services/counseling/counselingPortal.service.js:4 -> ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_portal_api.py:108 Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles parent; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/counseling/:id, /parent/counseling/add P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Ringkasan /parent/dashboard src/views/ParentViews/ParentDashboard.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Ringkasan pada /parent/dashboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — openHeroLink, switchChild, openPriorityInsight, router.push Confirmed from code — /api/v1/parent/portal/dashboard @ src/services/portal/parentPortal.service.js:165 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:145 Confirmed from code — sesi autentik; capability parents.dashboard.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/schedule, /parent/extracurriculars, /parent/grades P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Ekstrakurikuler /parent/extracurriculars src/views/ParentViews/Counseling/ParentExtracurricular.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Ekstrakurikuler pada /parent/extracurriculars; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedChildId Confirmed from code — onChildChange, loadData, openAttendanceHistory, set showAttendanceModal Confirmed from code — /api/v1/parent/portal/dashboard @ src/services/portal/parentPortal.service.js:165 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:145; Confirmed from code — /api/v1/parent/portal/extracurricular/attendance-history @ src/services/counseling/extracurricularPortal.service.js:19 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/extracurricular_portal_api.py:175 Confirmed from code — sesi autentik; capability student_services.extracurricular.self.view; allowedRoles parent; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.studentlife (Kesiswaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Progres Akademik /parent/grades src/views/ParentViews/ParentAcademic.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Progres Akademik pada /parent/grades; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedStudent; kolom=No.; sinyal validasi=required Confirmed from code — setActiveTab, reloadAcademicData, navigateTo, handleAttentionAction Confirmed from code — /parent/children/:param/lms-summary @ src/views/ParentViews/ParentAcademic.vue:593; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/parent/portal/profile @ src/services/portal/parentPortal.service.js:193 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:177 Confirmed from code — sesi autentik; capability parents.children.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Katalog Buku /parent/library/catalog src/views/Library/Library.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Katalog Buku pada /parent/library/catalog; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — goToAdvancedSearch Missing or unclear — service closure terdeteksi (src/composables/useLibraryRouteBase.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /library/catalog P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Peminjaman Anak /parent/library/loans src/views/Library/MyLibrary.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Peminjaman Anak pada /parent/library/loans; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedChildUserId Confirmed from code — set activeTab, goToCatalog, renewLoan, goToReservations, goToWishlist, fetchLoans Confirmed from code — /api/v1/library/loans/list @ src/services/library/library.service.js:562 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:422; Confirmed from code — /api/v1/library/parent/children @ src/services/library/library.service.js:567 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:438; Confirmed from code — /api/v1/library/loans/renew @ src/services/library/library.service.js:577 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:473 Confirmed from code — sesi autentik; capability library.circulation.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/loans, /library/my-library P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Reservasi Anak /parent/library/reservations src/views/ParentViews/Library/ParentLibraryReservations.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Reservasi Anak pada /parent/library/reservations; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, stateFilter; filter=searchQuery, stateFilter; aturan field=searchQuery: type=search Confirmed from code — goToCatalog, handleCancel Confirmed from code — /api/v1/library/queue/cancel @ src/services/library/library.service.js:553 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:138; Confirmed from code — /api/v1/library/queue/list @ src/services/library/library.service.js:548 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_queue_return_api.py:35 Confirmed from code — sesi autentik; capability library.queue.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/queue/cancel; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu parent.library (Perpustakaan) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Wishlist Anak /parent/library/wishlist src/views/Library/Wishlist.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Wishlist Anak pada /parent/library/wishlist; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedChildUserId Confirmed from code — goToCatalog, goToDetail, togglePin, removeItem Confirmed from code — /api/v1/library/wishlist/remove @ src/services/library/libraryWishlist.service.js:28 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:57; Confirmed from code — /api/v1/library/wishlist/list @ src/services/library/libraryWishlist.service.js:50 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:15; Confirmed from code — /api/v1/library/wishlist/toggle-pin @ src/services/library/libraryWishlist.service.js:81 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:75; Confirmed from code — /api/v1/library/parent/children @ src/services/library/library.service.js:567 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:438 Confirmed from code — sesi autentik; capability library.catalog.view; allowedRoles parent; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/wishlist/remove; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /library/wishlist P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Progres LMS /parent/lms/progress src/views/LearningManagement/Parent/ChildProgress.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Progres LMS pada /parent/lms/progress; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedChildId, selectedCourseId, messageSubject, messageBody; filter=selectedCourseId; aturan field=messageSubject: type=text Confirmed from code — loadSummary, router.push, loadMessages, sendMessage Confirmed from code — /parent/children @ src/views/LearningManagement/Parent/ChildProgress.vue:396; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /parent/children/:param/lms-summary @ src/views/LearningManagement/Parent/ChildProgress.vue:410; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /parent/children/:param/lms-messages @ src/services/lms/parentMessage.service.js:11; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /parent/children/:param/lms-courses @ src/services/lms/parentMessage.service.js:17; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/discussions/policy @ src/services/lms/discussion.service.js:153; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability analytics.family.view; allowedRoles parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Tagihan & Pembayaran /parent/payment-list src/views/ParentViews/SPP/tagihanList.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Tagihan & Pembayaran pada /parent/payment-list; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterYear; filter=filterYear; sinyal validasi=min/max Confirmed from code — loadBilling, set selectedChildId, set activeTab, openBill Confirmed from code — /api/v1/parent/billing @ src/services/finance/parentBilling.service.js:146 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:256; Confirmed from code — /api/v1/parent/children @ src/services/finance/parentBilling.service.js:141 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles parent; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /parent/payment/:id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Perizinan Siswa /parent/permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Perizinan Siswa pada /parent/permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles parent; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/student-permits, /counseling/student-permits, /faculty/student-permits, /principal/students/permits, /student/permits, /vice-principal/student-affairs/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Rapor Digital /parent/report-cards src/views/ReportCardManagement/Parent/raportList.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Rapor Digital pada /parent/report-cards; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedStudentId, selectedClass; filter=selectedClass; Inferred from code — option/status/display-label candidates=Error Confirmed from code — openDetail, downloadRaport, openLineDetail Missing or unclear — /api/v1/report-card/report-lines/:param @ src/services/reportCard/reportCard.service.js:93; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/reports/:param/pdf @ src/services/reportCard/parentReportCard.service.js:168 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:449 Confirmed from code — sesi autentik; capability report_cards.list.view; allowedRoles parent; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Tata Tertib /parent/rules src/views/ParentViews/Rules/RuleListWrapper.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Tata Tertib pada /parent/rules; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles parent; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu parent.studentlife (Kesiswaan) P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Jadwal Pelajaran /parent/schedule src/views/ScheduleManagement/Parent/ParentScheduleView.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Jadwal Pelajaran pada /parent/schedule; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedStudentId, activeTab; Inferred from code — option/status/display-label candidates=RSVP Diperbarui Confirmed from code — openSessionDetail, handleEventRsvp, closeSessionDetailModal Confirmed from code — /lms/calendar @ src/services/lms/calendar.service.js:28; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/parent/portal/schedule @ src/services/portal/parentPortal.service.js:208 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:158; Confirmed from code — /api/v1/calendar/events @ src/services/calendar/calendarRsvp.service.js:39 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:156; Confirmed from code — /api/v1/calendar/events/:param/rsvp @ src/services/calendar/calendarRsvp.service.js:53 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:208 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles parent; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Pelanggaran /parent/violations src/views/ParentViews/Counseling/ListPelanggaran.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Pelanggaran pada /parent/violations; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory; filter=searchQuery Confirmed from code — resetFilters, goToDetail Confirmed from code — /api/v1/parent/violations @ src/services/portal/parentViolation.service.js:66 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_parent_portal_api.py:492 Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles parent; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.studentlife (Kesiswaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
parent-portal Laporan Mingguan /parent/weekly-reports src/views/ParentViews/ParentWeeklyStudentReport.vue:1 Confirmed from code — parent; guard route memakai allowedRoles Inferred from code — halaman Laporan Mingguan pada /parent/weekly-reports; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — openPdf, acknowledge Confirmed from code — /api/lms/teacher-reports/weekly/parent-acknowledge @ src/services/lms/teacherReport.service.js:84 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1068; Confirmed from code — /api/lms/teacher-reports/weekly/student/:param.pdf @ src/services/lms/teacherReport.service.js:114 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1331; Confirmed from code — /api/lms/teacher-reports/weekly/parent-list @ src/services/lms/teacherReport.service.js:76 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1040 Confirmed from code — sesi autentik; capability parents.children.view; allowedRoles parent; feature flag scola_lms; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu parent.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

parent-portal / school-committee / communication (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
parent-portal / school-committee / communication Berita Sekolah / Daftar Berita /news src/views/NewsList.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, admin_staff, counselor, librarian, lab_technician, school_committee, foundation_auditor, inventory_officer, foundation, foundation_chairman, head_admin, treasurer, homeroom, alumni, vice_principal_curriculum, +4 lainnya; diturunkan dari pola capability frontend untuk communication.news.view; izin sesi backend dapat berbeda Inferred from code — halaman Berita Sekolah / Daftar Berita pada /news; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategoryId, selectedPriority, dateFrom, dateTo; filter=searchQuery, dateFrom, dateTo; aturan field=dateFrom: type=date, dateTo: type=date Confirmed from code — fetchNewsList, resetFilters, navigateToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/news/newsService.js, src/services/observability/teacherObservability.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.news.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /news/detail/:newsId P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

pickup-officer (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
pickup-officer Tugas Hari Ini /pickup/attendance src/views/AttendanceManagement/PickupOfficer/MobileTransportTasks.vue:1 Confirmed from code — pickup_officer; guard route memakai allowedRoles Inferred from code — halaman Tugas Hari Ini pada /pickup/attendance; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedDate, actionForm.note; filter=selectedDate; aturan field=selectedDate: type=date, field: type=file; Inferred from code — option/status/display-label candidates=Dijemput, Sampai Sekolah, Sampai Rumah Confirmed from code — loadTasks, openAction, submitAction, handlePhotoChange Confirmed from code — /api/v1/attendance/transport/action @ src/services/attendance/studentAttendance.service.js:284 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:129; Confirmed from code — /api/v1/attendance/transport/tasks @ src/services/attendance/studentAttendance.service.js:275 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:125 Confirmed from code — sesi autentik; capability students.dropoff.execute; allowedRoles pickup_officer; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu pickup.tasks (Tugas) P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

platform (11 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
platform Dashboard Platform /platform/dashboard src/views/Platform/PlatformDashboard.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.dashboard.view; izin sesi backend dapat berbeda Inferred from code — halaman Dashboard Platform pada /platform/dashboard; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Butuh Review, Perlu Eskalasi, Menunggu review, Disetujui, Antrian provisioning Confirmed from code — fetchDashboard Confirmed from code — /api/v1/platform/subscription/dashboard @ src/services/admin/subscription.service.js:116 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:44 Confirmed from code — sesi autentik; capability platform.dashboard.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /platform/requests, /platform/provisioning P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Admin Yayasan /platform/foundation-admins src/views/Platform/PlatformFoundationAdminManager.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.foundation_admins.manage; izin sesi backend dapat berbeda Inferred from code — halaman Admin Yayasan pada /platform/foundation-admins; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=search, form.name, form.login, form.email, form.phone, Nama Admin, Nama lengkap, Username/Login, yayasan.nama, Email, opsional, Nomor HP; kolom=Nama, Login, Status, Tipe; filter=search; sinyal validasi=required; aturan field=search: type=search, form.name: required, form.login: required, form.email: type=email Confirmed from code — fetchContext, selectTenant, createAdmin Confirmed from code — /api/v1/platform/foundation-admins/context @ src/services/admin/platformSchoolAdmin.service.js:37 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/school_admin_api.py:286; Confirmed from code — /api/v1/platform/foundation-admins/create @ src/services/admin/platformSchoolAdmin.service.js:46 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/school_admin_api.py:309 Confirmed from code — sesi autentik; capability platform.foundation_admins.manage; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/platform/foundation-admins/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /platform/tenants P1 — mutasi data, form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Kesehatan Sistem Akademik /platform/observability/academic src/views/AnalyticsManagement/Operational/AcademicReliabilityDashboard.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.observability.view; izin sesi backend dapat berbeda Inferred from code — halaman Kesehatan Sistem Akademik pada /platform/observability/academic; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=roleFilter; kolom=Model, Write Calls, Share, Top Method (Global), Denied Global, Timestamp, Type, Method, Error Code, Latency, +1 lainnya; filter=roleFilter; Inferred from code — option/status/display-label candidates=Sink Ditunda, Flush Queue Confirmed from code — refreshSummary, syncNow, flushQueue Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability platform.observability.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu platform.observability (Kesehatan Sistem) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Kesehatan Sistem Orang Tua /platform/observability/parent src/views/AnalyticsManagement/Operational/ParentAccessReliabilityDashboard.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.observability.view; izin sesi backend dapat berbeda Inferred from code — halaman Kesehatan Sistem Orang Tua pada /platform/observability/parent; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=roleFilter; kolom=Endpoint, Calls, Errors, Error Rate, Avg (ms), Max (ms), Last Status, Last Observed; filter=roleFilter; Inferred from code — option/status/display-label candidates=Sink Ditunda, Flush Queue Confirmed from code — refreshSummary, syncNow, flushQueue Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability platform.observability.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu platform.observability (Kesehatan Sistem) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Kesehatan Sistem Siswa /platform/observability/student src/views/AnalyticsManagement/Operational/StudentAccessReliabilityDashboard.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.observability.view; izin sesi backend dapat berbeda Inferred from code — halaman Kesehatan Sistem Siswa pada /platform/observability/student; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=roleFilter; kolom=Endpoint, Calls, Errors, Error Rate, Avg (ms), Max (ms), Last Status, Last Observed; filter=roleFilter; Inferred from code — option/status/display-label candidates=Sink Ditunda, Flush Queue Confirmed from code — refreshSummary, syncNow, flushQueue Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +2 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability platform.observability.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu platform.observability (Kesehatan Sistem) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Kesehatan Sistem Guru /platform/observability/teacher src/views/AnalyticsManagement/Operational/TeacherReliabilityDashboard.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.observability.view; izin sesi backend dapat berbeda Inferred from code — halaman Kesehatan Sistem Guru pada /platform/observability/teacher; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=roleFilter; kolom=Page, Load, Avg (ms), Max (ms), Error Rate, Slow Rate, Last Status, Last Observed; filter=roleFilter; Inferred from code — option/status/display-label candidates=Sink Ditunda, Flush Queue Confirmed from code — refreshSummary, syncNow, flushQueue Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability platform.observability.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu platform.observability (Kesehatan Sistem) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Provisioning /platform/provisioning src/views/Platform/PlatformSubscriptionControlPlane.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.provisioning.manage; izin sesi backend dapat berbeda Inferred from code — halaman Provisioning pada /platform/provisioning; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=actionNote, actionConfig(selectedAction).placeholder, Catatan operator (opsional); Inferred from code — option/status/display-label candidates=Permintaan Add-on, Provisioning, Kelola backlog teknis setelah request disetujui provider., Tenant, Queue, Start Confirmed from code — fetchQueue, openActionModal, submitAction Confirmed from code — /api/v1/platform/subscription/action-request @ src/services/admin/subscription.service.js:133 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:108; Confirmed from code — /api/v1/platform/subscription/queue @ src/services/admin/subscription.service.js:79 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:75 Confirmed from code — sesi autentik; capability platform.provisioning.manage; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /platform/dashboard, /platform/requests P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Permintaan Aktivasi /platform/requests src/views/Platform/PlatformSubscriptionControlPlane.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.requests.view; izin sesi backend dapat berbeda Inferred from code — halaman Permintaan Aktivasi pada /platform/requests; tujuan diringkas dari 1 form, aksi interaktif Confirmed from code — form=1; field=actionNote, actionConfig(selectedAction).placeholder, Catatan operator (opsional); Inferred from code — option/status/display-label candidates=Permintaan Add-on, Provisioning, Kelola backlog teknis setelah request disetujui provider., Tenant, Queue, Start Confirmed from code — fetchQueue, openActionModal, submitAction Confirmed from code — /api/v1/platform/subscription/action-request @ src/services/admin/subscription.service.js:133 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:108; Confirmed from code — /api/v1/platform/subscription/queue @ src/services/admin/subscription.service.js:79 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:75 Confirmed from code — sesi autentik; capability platform.requests.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /platform/dashboard, /platform/provisioning P1 — form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Admin Sekolah /platform/school-admins src/views/Platform/PlatformSchoolAdminManager.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.school_admins.manage; izin sesi backend dapat berbeda Inferred from code — halaman Admin Sekolah pada /platform/school-admins; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=search, form.name, form.login, form.email, form.phone, Nama Admin, Nama lengkap, Username/Login, admin.namaunit, Email, opsional, Nomor HP; kolom=Nama, Login, Status, Tipe; filter=search; sinyal validasi=required; aturan field=search: type=search, form.name: required, form.login: required, form.email: type=email Confirmed from code — fetchContext, selectCompany, createAdmin Confirmed from code — /api/v1/platform/school-admins/create @ src/services/admin/platformSchoolAdmin.service.js:22 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/school_admin_api.py:209; Confirmed from code — /api/v1/platform/school-admins/context @ src/services/admin/platformSchoolAdmin.service.js:13 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/school_admin_api.py:188 Confirmed from code — sesi autentik; capability platform.school_admins.manage; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/platform/school-admins/create; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /platform/tenants P1 — mutasi data, form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Satuan Pendidikan /platform/schools src/views/Yayasan/FoundationSchoolUnitsPage.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.schools.manage; izin sesi backend dapat berbeda Inferred from code — halaman Satuan Pendidikan pada /platform/schools; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.parent_company_id, form.name, form.npsn, form.jenjang, form.timezone, form.kurikulum, form.akreditasi, form.alamat, form.admin_name, form.admin_login, form.admin_email, form.admin_password, +10 lainnya; filter=form.parent_company_id, form.jenjang, Jenjang; sinyal validasi=required, min/max; aturan field=form.parent_company_id: required, form.name: required, form.npsn: required, maxlength=8, form.jenjang: required, form.admin_password: type=password; Inferred from code — option/status/display-label candidates=TK/RA, SD/MI, SMP/MTs, SMA/MA, SMK/MAK, PAUD Confirmed from code — Tambah Satuan Pendidikan, Arsip, openCreate, openEdit, archiveUnit, submitForm, closeForm Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/observability/teacherObservability.service.js, src/services/school/schoolUnits.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability platform.schools.manage; Inferred from code — data prerequisite: referenced records dari field parent_company_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/schools P1 — form Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
platform Tenant/Yayasan /platform/tenants src/views/Platform/PlatformTenantEntitlementManager.vue:1 Inferred from code — platform_operator; diturunkan dari pola capability frontend untuk platform.tenants.view; izin sesi backend dapat berbeda Inferred from code — halaman Tenant/Yayasan pada /platform/tenants; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=search, draft.trialExpiresAt, draft.licenseCode, draft.note, Akhir Trial, License Code, GOLDENTREE-BASIC-TRIAL-FULL-2026, Catatan Operator; filter=search; aturan field=search: type=search, draft.trialExpiresAt: type=date Confirmed from code — fetchTenants, selectTenant, saveTrial, clearTrial, convertToFull, deactivateAddon Confirmed from code — /api/v1/platform/tenants/deactivate-addon @ src/services/admin/subscription.service.js:212 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:446; Confirmed from code — /api/v1/platform/tenants/entitlements @ src/services/admin/subscription.service.js:151 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:290; Confirmed from code — /api/v1/platform/tenants/trial @ src/services/admin/subscription.service.js:167 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:329; Confirmed from code — /api/v1/platform/tenants/convert-to-full @ src/services/admin/subscription.service.js:190 -> ../custom_addons_scola/gcgscola/scola_platform/controllers/subscription_api.py:388 Confirmed from code — sesi autentik; capability platform.tenants.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /platform/dashboard P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

principal-exec (31 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
principal-exec Ringkasan Akademik /principal/academics src/views/Principal/PrincipalAcademics.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Ringkasan Akademik pada /principal/academics; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Rata-rata; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Mata Pelajaran, Kurikulum, Capaian Pembelajaran, Jurnal Mengajar Confirmed from code — $router.push Confirmed from code — /api/v1/principal/academic/summary @ src/api/dashboardApi.js:73 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_academic_api.py:125; Confirmed from code — /api/v1/executive/academic/distribution @ src/api/dashboardApi.js:87 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_academic_api.py:732 Confirmed from code — sesi autentik; capability academics.overview.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/academics/subjects, /principal/academics/reports P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Laporan Harian Kelas TK /principal/academics/class-daily-report src/views/Principal/PrincipalClassDailyReport.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Laporan Harian Kelas TK pada /principal/academics/class-daily-report; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.date_from, filters.date_to; filter=filters.date_from, filters.date_to; aturan field=filters.date_from: type=date, filters.date_to: type=date Confirmed from code — loadList, set selectedClass, openPdf, openDetail, set detail Confirmed from code — /api/lms/teacher-reports/class-daily/list @ src/services/lms/teacherReport.service.js:28 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:672; Confirmed from code — /api/lms/teacher-reports/class-daily/get @ src/services/lms/teacherReport.service.js:10 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:507; Confirmed from code — /api/lms/teacher-reports/class-daily/:param.pdf @ src/services/lms/teacherReport.service.js:110 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1262 Confirmed from code — sesi autentik; capability academics.teaching_journal.view; allowedRoles principal; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /vice-principal/curriculum/class-daily-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Capaian Pembelajaran /principal/academics/learning-outcomes src/views/AdminViews/LearningOutcome/LearningOutcomeList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Capaian Pembelajaran pada /principal/academics/learning-outcomes; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=filters.subject_id, filters.phase, filters.curriculum_id, filters.search, formData.subject_id, formData.phase, formData.curriculum_id, formData.code, formData.name, formData.description, draft.code, draft.name, +19 lainnya; filter=filters.subject_id, filters.phase, filters.curriculum_id, filters.search; sinyal validasi=required; aturan field=filters.search: type=search, field: type=file, formData.subject_id: required, formData.phase: required, formData.code: required, formData.name: required, formData.description: required, draft.code: required, draft.name: required, draft.description: required, +8 lainnya; Inferred from code — option/status/display-label candidates=Formatif, Sumatif, Error, Validasi, Format Salah Confirmed from code — set showImportModal, openCreateCpModal, resetFilters, handleImport, onFileSelected, $refs.fileInput.click, set selectedFile, downloadTemplate, saveItem, addCpDraft, removeCpDraft, addIndicatorDraft, removeIndicatorDraft, resetIndicatorForm, +9 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.learning_outcome.view; allowedRoles principal; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field subject_id, curriculum_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/learning-outcome P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Finalisasi Kenaikan /principal/academics/promotion src/views/AdminViews/Promotion/StudentPromotionList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Finalisasi Kenaikan pada /principal/academics/promotion; tujuan diringkas dari 3 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=action, decision, nextBatchId, retentionReason, form.homeroom_notes, form.decision, form.next_batch_id, form.retention_reason, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, +7 lainnya; kolom=Rata-rata, Rekomendasi, Keputusan; filter=nextBatchId, form.next_batch_id, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, generateForm.batch_id; sinyal validasi=required; aturan field=action: required, decision: required, nextBatchId: required, form.retention_reason: required, generateForm.academic_year_id: required, generateForm.batch_id: required; Inferred from code — option/status/display-label candidates=Sukses, Error, Perlu Review, Data Dilewati Confirmed from code — handleSubmit, set form.homeroom_recommendation, set showGenerateModal, openBulkModal, openDetailModal, openEditModal, handleGenerate Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.promotion.view; allowedRoles principal; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field next_batch_id, academic_year_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/promotion, /faculty/homeroom/promotion, /vice-principal/curriculum/promotion P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec E-Rapor /principal/academics/reports src/views/ReportCardManagement/Principal/PrincipalReportApprovalList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman E-Rapor pada /principal/academics/reports; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.state; filter=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.state; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — confirmBulkSubmit, viewReport, executeSingleAction, executeBulkSubmit Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/reports @ src/services/reportCard/reportCard.service.js:36 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:299 Confirmed from code — sesi autentik; capability report_cards.list.view; allowedRoles principal; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field academic_year_id, academic_term_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu principal.academics (Akademik) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Jurnal Mengajar /principal/academics/teaching-journal src/views/Reports/TeachingJournalReport.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Jurnal Mengajar pada /principal/academics/teaching-journal; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; filter=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; aturan field=filters.date_from: type=date, filters.date_to: type=date, filters.has_subject_daily: type=checkbox, filters.has_attachment: type=checkbox Confirmed from code — onSearch, onExport, onToday, onReset Confirmed from code — /lms/teaching-journals @ src/services/lms/teachingJournal.service.js:42; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/export.pdf @ src/services/lms/teachingJournal.service.js:61; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/filter-options @ src/services/lms/teachingJournal.service.js:85; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.teaching_journal.view; allowedRoles principal; feature flag scola_lms; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field semester_id, faculty_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/reports/teaching-journal, /faculty/teaching-journal, /vice-principal/curriculum/teaching-journal P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Dashboard SPMB /principal/admissions/dashboard src/views/AdmissionManagement/AdmissionDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Dashboard SPMB pada /principal/admissions/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedRegister; kolom=Gelombang, Menunggu, Publikasi Hasil; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Status diperbarui, Buka Gelombang, Konfigurasi Jalur, Menunggu Verifikasi, Error Confirmed from code — fetchDashboardData, handleKpiClick, router.push, quickTransition, viewDetail Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/dashboard/stats @ src/services/spmb/spmbAdminAdmissions.service.js:113 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1121; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles principal; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/periode, /admin-staff/admissions/dashboard, /admin/spmb/dashboard, /vice-principal/public-relations/admissions/dashboard, /vice-principal/student-affairs/admissions/dashboard P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Periode SPMB /principal/admissions/periods src/views/AdmissionManagement/AdmissionRegisterList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Periode SPMB pada /principal/admissions/periods; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=selectedYear, selectedTerm, selectedStatus, showModal, form.name, form.education_level_id, form.academic_years_id, form.academic_term_id, form.course_id, form.start_date, form.end_date, form.min_count, +19 lainnya; filter=selectedStatus, form.course_id, form.start_date, form.end_date, form.school_latitude, form.school_longitude; sinyal validasi=required, min/max; aturan field=form.name: required, type=text, form.education_level_id: required, form.academic_years_id: required, form.academic_term_id: required, form.start_date: required, form.end_date: required, form.min_count: min=0, type=number, form.max_count: required, type=number, form.minimum_age_criteria: type=number, quota.quota: type=number, +9 lainnya; Inferred from code — option/status/display-label candidates=Pengumpulan Pendaftaran, Proses Seleksi, Persiapan, Pendaftaran, Seleksi, Buka Pendaftaran (Portal), Mulai Proses Seleksi, Selesaikan Periode, Update Status, Biaya Formulir, +12 lainnya Confirmed from code — See all, + Tambah Jalur, tambahPendaftaran, openDeleteDialog, editRegister, toggleStatusMenu, changeStatus, goToApplications, confirmDelete, confirmStatusChange, submitForm, addPathwayQuota, removePathwayQuota, addFeeRule, +1 lainnya Confirmed from code — /api/SPMB/registers/:param/delete @ src/services/spmb/spmbAdminRegisters.service.js:239 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1002; Confirmed from code — /api/SPMB/registers/options @ src/services/spmb/spmbAdminRegisters.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:912; Confirmed from code — /api/SPMB/registers/list @ src/services/spmb/spmbAdminRegisters.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:922; Confirmed from code — /api/SPMB/registers/:param/transition @ src/services/spmb/spmbAdminRegisters.service.js:243 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1020; Confirmed from code — /api/SPMB/registers/create @ src/services/spmb/spmbAdminRegisters.service.js:226 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:964; Confirmed from code — /api/SPMB/registers/:param/update @ src/services/spmb/spmbAdminRegisters.service.js:232 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:981 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles principal; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field education_level_id, academic_years_id, academic_term_id, course_id, pathway_id, fee_template_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/SPMB/registers/:param/delete, /api/SPMB/registers/create, /api/SPMB/registers/:param/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /admin-staff/admissions/periods, /admin/spmb/periode, /vice-principal/public-relations/admissions/periods, /vice-principal/student-affairs/admissions/periods P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Ranking SPMB /principal/admissions/ranking src/views/AdmissionManagement/RankingList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Ranking SPMB pada /principal/admissions/ranking; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.register_id, filters.pathway_id, filters.state, showProcessDialog, Gelombang; kolom=Nama Peserta, Gelombang, Total Skor; filter=filters.register_id, filters.pathway_id, filters.state; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — set showProcessDialog, exportCSV, fetchData, viewDetail, handleProcessSelection Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796 Confirmed from code — sesi autentik; capability admissions.ranking.view; allowedRoles principal; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, pathway_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/ranking, /admin/spmb/ranking, /vice-principal/public-relations/admissions/ranking, /vice-principal/student-affairs/admissions/ranking P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Overview Analitik /principal/analytics src/views/AnalyticsManagement/Admin/PrincipalDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Overview Analitik pada /principal/analytics; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=periodFilter, classFilter; kolom=Kelas, Jumlah Siswa, Kehadiran, Alpa, Status, Aksi; filter=periodFilter, classFilter; Inferred from code — option/status/display-label candidates=Hadir, Terlambat, Izin, Baik, Berisiko Confirmed from code — Detail, handlePeriodChange, navigateToRiskList, set showAllAlerts, viewClassDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/composables/analytics/useAnalyticsDashboard.js, src/composables/analytics/useAttendanceAnalytics.js, src/services/attendance/attendanceAnalytics.service.js, src/services/attendance/principalAttendance.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.overview.view; allowedRoles principal; feature flag scola_foundation_analytics; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /teacher/analytics/class P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Kebijakan Kenaikan /principal/analytics/promotion-policy src/views/AnalyticsManagement/Strategic/PromotionPolicyDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Kebijakan Kenaikan pada /principal/analytics/promotion-policy; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academicYearId, Tahun Ajaran; kolom=Bucket Kehadiran, Promotion Rate, Publish Completeness, Tahun Ajaran, Total Siswa, Retention Rate, Graduation Rate, Rombel, Promoted, Retained, +2 lainnya; filter=filters.academicYearId Confirmed from code — refreshDashboard, exportXlsx, exportPdf Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/academics/promotionPolicyDashboard.service.js, src/services/auth/auth.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.overview.view; allowedRoles principal; feature flag scola_foundation_analytics; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/promotion-policy, /vice-principal/curriculum/promotion-policy P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Dashboard Persetujuan /principal/approvals src/views/Principal/PrincipalApprovals.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Dashboard Persetujuan pada /principal/approvals; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Anggaran, Inventaris Confirmed from code — Segarkan, Detail, Setujui, Tolak, fetchData, set activeTab, goToDetail, handleAction Confirmed from code — /api/v1/principal/approvals/summary @ src/services/principal/principalApproval.service.js:9 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:22; Confirmed from code — /api/v1/principal/approvals/action @ src/services/principal/principalApproval.service.js:57 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:221; Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274 Confirmed from code — sesi autentik; capability dashboard.approvals.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/approvals/leave, /principal/approvals/finance, /principal/approvals/inventory P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Anggaran /principal/approvals/finance src/views/Principal/PrincipalFinanceApprovals.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Anggaran pada /principal/approvals/finance; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, rejectReason, Alasan Penolakan, Tuliskan alasan penolakan...; kolom=Referensi, Partner, Tgl Bayar; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, rejectReason: required; Inferred from code — option/status/display-label candidates=Menunggu Persetujuan, Disetujui, Ditolak Confirmed from code — handleAction, openRejectModal, set showRejectModal, handleReject Confirmed from code — /api/v1/principal/approvals/action @ src/services/principal/principalApproval.service.js:57 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:221; Confirmed from code — /api/v1/principal/approvals/payments @ src/services/principal/principalApproval.service.js:39 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:180 Confirmed from code — sesi autentik; capability finance.budget.view; allowedRoles principal; feature flag scola_bos_rkas; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu principal.approvals_bucket (Persetujuan & Kebijakan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Inventaris /principal/approvals/inventory src/views/Principal/PrincipalInventoryApprovals.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Inventaris pada /principal/approvals/inventory; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, rejectReason, Alasan Penolakan, Tuliskan alasan penolakan...; kolom=Permintaan, Diajukan Oleh, Tgl Dibutuhkan; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, rejectReason: required; Inferred from code — option/status/display-label candidates=Menunggu Persetujuan, Disetujui, Ditolak Confirmed from code — handleApprove, openRejectModal, goToDetail, set showRejectModal, handleReject Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:217 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381 Confirmed from code — sesi autentik; capability inventory.requests.approve; allowedRoles principal; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /vice-principal/infrastructure/approvals P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Cuti & Izin /principal/approvals/leave src/views/Principal/PrincipalLeaveApprovals.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Cuti & Izin pada /principal/approvals/leave; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, rejectReason, Alasan Penolakan, Tuliskan alasan penolakan...; kolom=Pegawai, Durasi; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, rejectReason: required; Inferred from code — option/status/display-label candidates=Menunggu Persetujuan, Disetujui, Ditolak Confirmed from code — handleAction, openRejectModal, set showRejectModal, handleReject Confirmed from code — /api/v1/principal/approvals/leaves @ src/services/principal/principalApproval.service.js:24 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:142; Confirmed from code — /api/v1/principal/approvals/action @ src/services/principal/principalApproval.service.js:57 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:221 Confirmed from code — sesi autentik; capability hr.leave.view; allowedRoles principal; feature flag scola_hr; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu principal.approvals_bucket (Persetujuan & Kebijakan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Dashboard Analitik /principal/complaint-dashboard src/views/AdminViews/ComplaintDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Dashboard Analitik pada /principal/complaint-dashboard; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=dateFrom, dateTo, Sampai; filter=dateFrom, dateTo; aturan field=dateFrom: type=date, dateTo: type=date Confirmed from code — router.push, loadStats, handleFilterApply, handleFilterReset Confirmed from code — /api/complaint/dashboard @ src/services/public/publicComplaint.service.js:45 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:140 Confirmed from code — sesi autentik; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/complaint-dashboard P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Daftar Aduan /principal/complaints src/views/AdminViews/ComplaintList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Daftar Aduan pada /principal/complaints; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterSearch, filterState, Status; filter=filterSearch, filterState, Status Confirmed from code — router.push, applyFilter, goToDetail, prevPage, nextPage Confirmed from code — /api/complaint/list @ src/services/public/publicComplaint.service.js:57 -> ../custom_addons_scola/gcgscola/scola_public_complaint/controllers/public_complaint_api.py:154 Confirmed from code — sesi autentik; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/complaints P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Dashboard Eksekutif /principal/dashboard src/views/Principal/PrincipalDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Dashboard Eksekutif pada /principal/dashboard; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedTermId, selectedPeriod, selectedScope; filter=selectedPeriod; sinyal validasi=required, min/max; Inferred from code — option/status/display-label candidates=7 hari, 30 hari, Bulan ini, Semester ini, Tahun ajaran, Hadir, Telat, Izin, Sakit, Alpa, +8 lainnya Confirmed from code — goTo Confirmed from code — /api/v1/executive/academic/distribution @ src/services/principal/principalDashboard.service.js:76 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_academic_api.py:732; Confirmed from code — /api/v1/principal/approvals/summary @ src/services/principal/principalDashboard.service.js:110 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/principal_approval_api.py:22; Confirmed from code — /api/v1/executive/terms @ src/services/principal/principalDashboard.service.js:134 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_api.py:281; Confirmed from code — /api/v1/executive/finance/summary @ src/services/principal/principalDashboard.service.js:62 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_finance_api.py:203; Confirmed from code — /api/v1/executive/dashboard @ src/services/principal/principalDashboard.service.js:16 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_api.py:121; Confirmed from code — /api/v1/executive/notifications @ src/services/principal/principalDashboard.service.js:100 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_api.py:558; Confirmed from code — /api/v1/principal/staff-attendance @ src/services/principal/principalDashboard.service.js:120 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_people_api.py:231; Confirmed from code — /api/v1/executive/tuition/stats @ src/services/principal/principalDashboard.service.js:86 -> ../custom_addons_scola/gcgscola/scola_leadership_hub/controllers/executive_finance_api.py:19; Confirmed from code — /api/v1/attendance/principal/overview @ src/services/attendance/principalAttendance.service.js:42 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_principal_api.py:8 Confirmed from code — sesi autentik; capability analytics.executive.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/students/attendance P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Anggaran RKAS /principal/finance/budget src/views/Principal/PrincipalBudget.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Anggaran RKAS pada /principal/finance/budget; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=fiscalYear; kolom=Anggaran, Realisasi, Sisa; sinyal validasi=min/max Confirmed from code — fetchData Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, src/services/principal/principalBudgetSnapshot.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.budget.view; allowedRoles principal; feature flag scola_bos_rkas; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu principal.finance_ops (Finance & Operasi) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Laporan Keuangan /principal/finance/reports src/views/Principal/PrincipalFinanceReports.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Laporan Keuangan pada /principal/finance/reports; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear, Periode, Tahun Fiskal; kolom=Bulan, Pemasukan, Pengeluaran, Surplus/Defisit; filter=filters.period, filters.fiscalYear, Periode; Inferred from code — option/status/display-label candidates=Bulanan, Triwulanan, Tahunan, Pemasukan Periode, Pengeluaran Periode, Surplus / Defisit, Kas & Bank, Realisasi Anggaran, Neraca Confirmed from code — loadSnapshot Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.reports.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/finance/reports P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Laba Rugi (YTD) /principal/finance/reports/profit-loss src/views/AccountingManagement/Reports/ProfitLossView.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Laba Rugi (YTD) pada /principal/finance/reports/profit-loss; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=dateFrom, dateTo, selectedYear, Tanggal Akhir, Tahun; kolom=Nama Akun, Jumlah, Total; filter=dateFrom, dateTo; sinyal validasi=min/max; aturan field=selectedYear: min=2010, max=new Date().getFullYear(); Inferred from code — option/status/display-label candidates=Ringkasan, Per Bulan Confirmed from code — set viewMode, resetFilters, loadReport, openDownloadModal, handleConfirmDownload Confirmed from code — /api/v1/accounting/moves/lines/read-group @ src/services/admin/accountingAdmin.service.js:440 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:160; Confirmed from code — /api/v1/accounting/moves/lines @ src/services/admin/accountingAdmin.service.js:40 -> ../custom_addons_scola/gcgscola/scola_account/controllers/accounting_admin_api.py:148 Confirmed from code — sesi autentik; capability finance.report_profit_loss.view; allowedRoles principal; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /accounting/reports/profit-loss P1 — form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Tagihan SPP /principal/finance/tuition src/views/Principal/PrincipalTuition.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Tagihan SPP pada /principal/finance/tuition; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, searchQuery; kolom=Terbayar, Tunggakan; filter=filters.period, searchQuery; aturan field=searchQuery: type=text Confirmed from code — fetchData Confirmed from code — /api/v1/finance/spp/by-class @ src/services/finance/sppReport.service.js:124 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_spp_report_api.py:177 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles principal; feature flag scola_fees; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu principal.finance_ops (Finance & Operasi) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Kehadiran Pegawai /principal/hr/attendance src/views/AttendanceManagement/Staff/AttendanceSummary.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Kehadiran Pegawai pada /principal/hr/attendance; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.cycle_month, searchQuery; filter=filters.cycle_month, searchQuery; aturan field=filters.cycle_month: type=month, searchQuery: type=search Confirmed from code — loadSummaries, exportPdf, exportExcel, confirmLock, confirmUnlock, openPeriodDetail, set searchQuery Confirmed from code — /api/v1/attendance/hr-admin/employee-options @ src/services/admin/hrAttendanceAdmin.service.js:45 -> ../custom_addons_scola/gcgscola/scola_hr_attendance/controllers/hr_attendance_admin_api.py:359 Confirmed from code — sesi autentik; capability hr.attendance_summary.view; allowedRoles principal; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /hr/attendance/summary P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Data Pegawai /principal/hr/employees src/views/AdminViews/TeacherDatabase/TeacherList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Data Pegawai pada /principal/hr/employees; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchInput; filter=searchInput; sinyal validasi=min/max; aturan field=searchInput: type=text Confirmed from code — handleAdd, handleUpload, fetchTeachers, navigateToDetail, navigateToEdit, showDeleteConfirm, confirmDeleteAction Confirmed from code — /api/v1/admin/faculty/list @ src/services/admin/faculty.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:280; Confirmed from code — /api/v1/admin/faculty/delete @ src/services/admin/faculty.service.js:35 -> ../custom_addons_scola/gcgscola/scola_core/controllers/faculty_admin_api.py:384 Confirmed from code — sesi autentik; capability hr.employees.view; allowedRoles principal; feature flag scola_hr; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/faculty/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /teachers/create, /teachers/import, /teachers/:id/edit, /teachers P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Dashboard GLS /principal/library/gls/dashboard src/views/LibraryManagement/GLS/ReadingDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Dashboard GLS pada /principal/library/gls/dashboard; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles principal; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /librarian/gls/dashboard, /library/gls/dashboard P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Laporan Akreditasi /principal/library/reports/accreditation src/views/LibraryManagement/Reports/AccreditationReport.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Laporan Akreditasi pada /principal/library/reports/accreditation; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=startDate, endDate, Tanggal Mulai, Tanggal Akhir, Periode Laporan; kolom=Eksemplar, Persentase, Program, Jumlah Kegiatan, Peserta, Tipe Anggota, Peminjaman, Judul Buku; filter=startDate, endDate, Periode Laporan; aturan field=startDate: type=date, endDate: type=date Confirmed from code — generateReport, exportPDF, exportExcel, set activeTab Confirmed from code — /api/v1/library/reports/accreditation @ src/services/library/library.service.js:648 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_canonical_ops_api.py:422 Confirmed from code — sesi autentik; capability library.reports.view; allowedRoles principal; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /librarian/reports/accreditation, /library/reports/accreditation P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Insight Kehadiran Siswa /principal/students/attendance src/views/Principal/PrincipalAttendanceInsight.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Insight Kehadiran Siswa pada /principal/students/attendance; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedScope, selectedPeriod; kolom=Rombel, Attendance, Alpa, Izin, Sakit, Telat, Mapel, Absen, Tren; filter=selectedPeriod; sinyal validasi=required, min/max; Inferred from code — option/status/display-label candidates=7 hari, 30 hari, Bulan ini, Overview, Data Quality, Hadir, Attendance Rate, Rombel Terpantau, Baris Presensi, Missing Rombel, +2 lainnya Confirmed from code — Refresh, Audit Sheet, loadOverview, router.push, set activeTab Confirmed from code — /api/v1/attendance/principal/overview @ src/services/attendance/principalAttendance.service.js:42 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_principal_api.py:8 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles principal; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/students/attendance/sheets P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Data Siswa /principal/students/list src/views/AdminViews/StudentDatabase/StudentList.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Data Siswa pada /principal/students/list; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, pageSizeOption, selectedStudents; kolom=NISN, Akun, Poin; Inferred from code — option/status/display-label candidates=Arsip, 10, 25, 50, 100 Confirmed from code — navigateToTambahSiswa, navigateToUploadPage, generateStudentAccounts, deleteSelected, reactivateSelected, set accountGenerationSummary, setClassFilter, handlePageSizeChange, navigateToDetail, deleteStudent, reactivateStudent Confirmed from code — /api/v1/admin/accounts/generate-students @ src/views/AdminViews/StudentDatabase/StudentList.vue:508 -> ../custom_addons_scola/gcgscola/scola_core/controllers/account_generation_api.py:44; Confirmed from code — /api/v1/admin-staff/students/list @ src/services/adminStaff/studentScope.service.js:10 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_staff_api.py:8; Confirmed from code — /api/v1/admin/students/classes @ src/services/admin/student.service.js:15 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:308; Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/admin/students/set-active @ src/services/admin/student.service.js:34 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:387 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/accounts/generate-students; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students/create, /students/:id, /students/import, /admin-staff/students/list, /students, /vice-principal/student-affairs/students P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Rekap Kesiswaan /principal/students/rekap src/views/Kesiswaan/KesiswaanDashboard.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Rekap Kesiswaan pada /principal/students/rekap; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=dateFrom, dateTo; filter=dateFrom, dateTo; sinyal validasi=min/max; aturan field=dateFrom: type=date, dateTo: type=date; Inferred from code — option/status/display-label candidates=Pelanggaran, Prestasi, Insiden Umum Confirmed from code — loadRekap, $router.push Confirmed from code — /api/v1/kesiswaan/rekap @ src/services/counseling/kesiswaanRekap.service.js:30 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:88 Confirmed from code — sesi autentik; capability students.overview.view; allowedRoles principal; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /vice-principal/student-affairs/rekap P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Rekap Bulanan Kesiswaan /principal/students/rekap-bulanan src/views/Kesiswaan/RekapBulanan.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Rekap Bulanan Kesiswaan pada /principal/students/rekap-bulanan; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=dateFrom, dateTo, Sampai; kolom=Bulan, Pelanggaran, Prestasi, Perizinan; filter=dateFrom, dateTo; Inferred from code — option/status/display-label candidates=Rekap Bulanan Confirmed from code — exportPDF, loadData Confirmed from code — /api/v1/kesiswaan/rekap/bulanan @ src/views/Kesiswaan/RekapBulanan.vue:205 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:454 Confirmed from code — sesi autentik; capability discipline.report.view; allowedRoles principal; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /vice-principal/student-affairs/rekap-bulanan P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
principal-exec Rekap Konseling Siswa /principal/students/rekap-konseling src/views/CounselingManagement/Rekap/RekapKonselingSiswa.vue:1 Confirmed from code — principal; guard route memakai allowedRoles Inferred from code — halaman Rekap Konseling Siswa pada /principal/students/rekap-konseling; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Unit Sekolah, Search; kolom=No., NIS, Unit, Total Poin; filter=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Search; sinyal validasi=min/max; aturan field=filters.search: type=text Confirmed from code — Excel, Prev, onEducationLevelChange, applyFilters, onExportExcel, reloadAtFirstPage, onCetakBuku, goToPage Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/admin/academics/academicMaster.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_book.view; allowedRoles principal; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, batch_id, student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/rekap-konseling, /counseling/rekap-konseling, /faculty/homeroom/rekap-konseling, /vice-principal/student-affairs/rekap-konseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

principal-exec / academic (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
principal-exec / academic Kalender Akademik /academic-calendar src/views/AdminViews/AcademicConfig/AcademicCalendar/AcademicCalendarList.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, homeroom, alumni, vice_principal_curriculum; diturunkan dari pola capability frontend untuk academics.academic_calendar.view; izin sesi backend dapat berbeda Inferred from code — halaman Kalender Akademik pada /academic-calendar; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academicYearId, filters.calendarId, importCsv, calendarForm.academic_year_id, entryForm.name, entryForm.entry_type, entryForm.assessment_subtype, entryForm.date_start, entryForm.date_end, entryForm.audience_scope, entryForm.batch_ids, entryForm.is_non_instructional, +5 lainnya; kolom=Tanggal, Judul, Tipe, Unit, Non-efektif, Status, PIC, Aksi; filter=filters.academicYearId, filters.calendarId, entryForm.date_start, entryForm.date_end, entryForm.batch_ids, title,type,subtype,date_start,date_end,audience,non_instructional,pic_note,notes; sinyal validasi=required; aturan field=entryForm.name: required, entryForm.date_start: required, type=date, entryForm.date_end: type=date, entryForm.batch_ids: type=checkbox, entryForm.is_non_instructional: type=checkbox Confirmed from code — Edit, Publish, Draft, Hapus, Opsi lanjutan, openCalendarModal, openEntryModal, onFilterChange, loadEntries, runImport, publishEntry, unpublishEntry, removeEntry, set calendarModalOpen, +6 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/academic-years/list @ src/services/admin/academics/academicMaster.service.js:12 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2078; Confirmed from code — /api/v1/academic/academic-calendars/entries/list @ src/services/admin/academics/academicCalendar.service.js:78 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:349; Confirmed from code — /api/v1/academic/academic-calendars/entries/set-state @ src/services/admin/academics/academicCalendar.service.js:103 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:519; Confirmed from code — /api/v1/academic/academic-calendars/entries/delete @ src/services/admin/academics/academicCalendar.service.js:95 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:502; Confirmed from code — /api/v1/academic/academic-calendars/list @ src/services/admin/academics/academicCalendar.service.js:52 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:187; Confirmed from code — /api/v1/academic/academic-calendars/entries/import @ src/services/admin/academics/academicCalendar.service.js:111 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:546; Confirmed from code — /api/v1/academic/academic-calendars/entries/save @ src/services/admin/academics/academicCalendar.service.js:87 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:475; Confirmed from code — /api/v1/academic/academic-calendars/save @ src/services/admin/academics/academicCalendar.service.js:61 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_calendar_api.py:242 Confirmed from code — sesi autentik; capability academics.academic_calendar.view; Inferred from code — data prerequisite: referenced records dari field academic_year_id, batch_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/academic-calendars/entries/delete, /api/v1/academic/academic-calendars/entries/import, /api/v1/academic/academic-calendars/entries/save, /api/v1/academic/academic-calendars/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu principal.academics (Akademik), academic.master (Struktur Akademik) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

school-committee (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
school-committee Ringkasan Agregat /school-committee/dashboard src/views/Compliance/SchoolCommitteeDashboard.vue:1 Confirmed from code — school_committee; guard route memakai allowedRoles Inferred from code — halaman Ringkasan Agregat pada /school-committee/dashboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — Lihat Berita Sekolah, router.push Confirmed from code — /api/v1/committee/dashboard/summary @ src/services/committee/committeeDashboard.service.js:7 -> ../custom_addons_scola/gcgscola/scola_core/controllers/committee_dashboard_api.py:83 Confirmed from code — sesi autentik; capability analytics.aggregate.view; allowedRoles school_committee; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /news P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

security-officer (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
security-officer Dashboard /security-officer/dashboard src/views/Compliance/SecurityOfficerDashboard.vue:1 Confirmed from code — security_officer; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /security-officer/dashboard; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Log Tamu Confirmed from code — item.action Confirmed from code — /api/v1/security/visitors/summary @ src/services/security/securityVisitor.service.js:17 -> ../custom_addons_scola/gcgscola/scola_core/controllers/security_visitor_api.py:124 Confirmed from code — sesi autentik; capability security.visitor.manage; allowedRoles security_officer; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /security-officer/visitors P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
security-officer Log Tamu /security-officer/visitors src/views/Compliance/SecurityVisitorLog.vue:1 Confirmed from code — security_officer; guard route memakai allowedRoles Inferred from code — halaman Log Tamu pada /security-officer/visitors; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=form.name, form.host_name, form.purpose, form.id_number, form.phone, form.notes, Nama tamu *, Keperluan, No. identitas; kolom=Keperluan, Bertemu; Inferred from code — option/status/display-label candidates=Masih di area Confirmed from code — Simpan Check-in, Check-out, set showForm, submitCheckIn, set activeFilter, submitCheckOut Confirmed from code — /api/v1/security/visitors/check-in @ src/services/security/securityVisitor.service.js:21 -> ../custom_addons_scola/gcgscola/scola_core/controllers/security_visitor_api.py:90; Confirmed from code — /api/v1/security/visitors/check-out @ src/services/security/securityVisitor.service.js:25 -> ../custom_addons_scola/gcgscola/scola_core/controllers/security_visitor_api.py:112; Confirmed from code — /api/v1/security/visitors/list @ src/services/security/securityVisitor.service.js:7 -> ../custom_addons_scola/gcgscola/scola_core/controllers/security_visitor_api.py:58 Confirmed from code — sesi autentik; capability security.visitor.manage; allowedRoles security_officer; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu security.overview (Dashboard) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

settings (5 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
settings Kelola Pengguna /admin/users src/views/AdminViews/User/UserList.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Kelola Pengguna pada /admin/users; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, selectedRole, selectedStatus, showResetPasswordModal, form.name, form.login, form.email, form.password, form.scola_is_admin, Masukkan nama lengkap, [email protected], Minimal 8 karakter, +6 lainnya; kolom=Pengguna, Role, Login Terakhir; filter=searchQuery, selectedStatus; sinyal validasi=required, min/max; aturan field=searchQuery: type=text, field: type=checkbox, form.name: required, type=text, form.login: required, type=text, form.email: type=email, form.password: required, type=showPassword ?, form.scola_is_admin: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Pimpinan, Manajemen, Staf, Akademik, Portal Confirmed from code — Sebelumnya, Berikutnya, Simpan Role, openCreateModal, router.push, fetchUsers, clearFilters, openRoleModal, openEditModal, openResetPasswordModal, confirmDeactivate, activateUser, prevPage, nextPage, +8 lainnya Missing or unclear — /api/v1/users/:param @ src/api/userManagementApi.js:148; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/users/list @ src/api/userManagementApi.js:28 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:275; Confirmed from code — /api/v1/users/roles @ src/api/userManagementApi.js:174 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:275; Confirmed from code — /api/v1/users/stats @ src/api/userManagementApi.js:187 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:275; Confirmed from code — /api/v1/users/:param/roles @ src/api/userManagementApi.js:135 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:821; Confirmed from code — /api/v1/users/:param/homeroom-eligibility @ src/api/userManagementApi.js:54 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:367; Confirmed from code — /api/v1/users @ src/api/userManagementApi.js:94 -> ../custom_addons_scola/gcgscola/scola_identity_admin/controllers/user_detail_api.py:415 Confirmed from code — sesi autentik; capability users.manage; allowedRoles admin, school_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/users/:param, /api/v1/users/:param/roles; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu settings.access (Pengguna & Akses) P0 — aksi hapus Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
settings Kapasitas Rombel /settings/batch-capacity src/views/SettingsManagement/BatchCapacitySettings.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Kapasitas Rombel pada /settings/batch-capacity; tujuan diringkas dari aksi interaktif Confirmed from code — field=scope.value, applyToExisting, Maks. siswa, Contoh: 15; sinyal validasi=min/max; aturan field=scope.value: min=1, max=60, type=number, applyToExisting: type=checkbox; Inferred from code — option/status/display-label candidates=Validasi gagal, Berhasil, Gagal menyimpan, Kapasitas Rombel Confirmed from code — loadProfile, saveProfile Confirmed from code — /api/v1/settings/batch-capacity/profile @ src/services/settings/batchCapacitySettings.service.js:5 -> ../custom_addons_scola/gcgscola/scola_core/controllers/batch_capacity_settings_api.py:22; Confirmed from code — /api/v1/settings/batch-capacity/update @ src/services/settings/batchCapacitySettings.service.js:10 -> ../custom_addons_scola/gcgscola/scola_core/controllers/batch_capacity_settings_api.py:48 Confirmed from code — sesi autentik; capability settings.school.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/settings/batch-capacity/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu settings.school (Sekolah) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
settings Presensi Staf (GPS & Face) /settings/staff-attendance src/views/SettingsManagement/StaffAttendancePolicySettings.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Presensi Staf (GPS & Face) pada /settings/staff-attendance; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=form.school_latitude, form.school_longitude, form.attendance_max_distance, form.attendance_require_location, form.attendance_require_face, form.face_match_threshold, form.attendance_require_liveness, form.attendance_gps_max_accuracy, form.attendance_anti_spoof_mode, Latitude, -6.2..., Longitude, +8 lainnya; filter=form.school_latitude, form.school_longitude; sinyal validasi=min/max; aturan field=form.school_latitude: type=number, form.school_longitude: type=number, form.attendance_max_distance: min=10, max=5000, type=number, form.attendance_require_location: type=checkbox, form.attendance_require_face: type=checkbox, form.face_match_threshold: min=0.1, max=1, type=number, form.attendance_require_liveness: type=checkbox, form.attendance_gps_max_accuracy: min=10, max=500, type=number; Inferred from code — option/status/display-label candidates=GPS tidak tersedia, Gagal ambil GPS, Validasi gagal, Berhasil, Gagal menyimpan, Presensi Staf (GPS & Face) Confirmed from code — loadProfile, saveProfile, captureCoordinates Confirmed from code — /api/v1/settings/company/profile @ src/services/settings/companySettings.service.js:5 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:196; Confirmed from code — /api/v1/settings/company/update @ src/services/settings/companySettings.service.js:10 -> ../custom_addons_scola/gcgscola/scola_core/controllers/company_settings_api.py:205 Confirmed from code — sesi autentik; capability hr.attendance.config; allowedRoles admin, school_admin, head_admin; feature flag scola_hr_attendance; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/settings/company/update; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu settings.school (Sekolah) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
settings Langganan /settings/subscription src/views/SettingsManagement/SubscriptionStatus.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Langganan pada /settings/subscription; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Scola Learn, Scola Assess, Scola Library, Scola Finance, Scola Operations, Scola BOS / RKAS, Scola Dapodik, Scola Student Services, Scola People, Scola Attendance+, +14 lainnya Confirmed from code — reload Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useSubscription.js, src/services/admin/subscription.service.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability settings.school.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /settings/modules P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
settings Template Laporan Guru /settings/teacher-reports src/views/SettingsManagement/TeacherReportConfig.vue:1 Confirmed from code — admin, school_admin; guard route memakai allowedRoles Inferred from code — halaman Template Laporan Guru pada /settings/teacher-reports; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=company.subject_daily_enabled, company.class_daily_enabled, company.weekly_enabled, row.education_level, row.subject_daily_enabled, row.class_daily_enabled, row.weekly_enabled, row.active, Subject daily (PAIBP), Class daily, Weekly student, Subject, +2 lainnya; filter=company.subject_daily_enabled, company.class_daily_enabled, company.weekly_enabled, row.class_daily_enabled, Class daily; aturan field=company.subject_daily_enabled: type=checkbox, company.class_daily_enabled: type=checkbox, company.weekly_enabled: type=checkbox, row.subject_daily_enabled: type=checkbox, row.class_daily_enabled: type=checkbox, row.weekly_enabled: type=checkbox, row.active: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Tersimpan Confirmed from code — + Tambah, saveConfig, addRow Confirmed from code — /api/lms/teacher-reports/program-config/list @ src/services/lms/teacherReport.service.js:91 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1092; Confirmed from code — /api/lms/teacher-reports/program-config/save @ src/services/lms/teacherReport.service.js:96 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1121 Confirmed from code — sesi autentik; capability settings.school.view; allowedRoles admin, school_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/teacher-reports/program-config/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu settings.school (Sekolah) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

student-affairs (10 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
student-affairs Prestasi /admin/achievements src/views/CounselingManagement/Prestasi/ListPrestasi.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Prestasi pada /admin/achievements; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory, statusFilter, deleteDialog.show; kolom=Kejuaraan, Peringkat; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Total Prestasi, Disetujui, Akademik, Tingkat Prestasi Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels, /counseling/achievements, /faculty/achievements, /principal/students/achievements, /vice-principal/student-affairs/achievements P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Ekstrakurikuler /admin/extracurriculars src/views/CounselingManagement/Extracurricular/Admin/ExtracurricularAdminList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Ekstrakurikuler pada /admin/extracurriculars; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, statusFilter; kolom=Ekskul, Anggota, Pendaftaran; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Olahraga, Seni & Budaya, Akademik, Keagamaan, Kepemimpinan, Sosial, Teknologi, Total Ekskul, Pendaftaran Buka, Pending Approval Confirmed from code — router.push, resetFilters, loadData, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/extracurriculars/pending, /admin/extracurriculars/new P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Insiden Umum /admin/incidents src/views/CounselingManagement/Incident/IncidentList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Insiden Umum pada /admin/incidents; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedCategory, selectedStatus; filter=searchTerm, selectedStatus; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua Status, Dilaporkan, Triage, Investigasi, Selesai, Dieskalasi Confirmed from code — goToAdd, loadIncidents, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/incident.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/incidents, /faculty/incidents, /principal/students/incidents, /vice-principal/student-affairs/incidents P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Referral BK/Kesiswaan /admin/referrals src/views/FacultyViews/Counseling/ReferralList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Referral BK/Kesiswaan pada /admin/referrals; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, selectedTargetRole, form.student_id, form.target_role, form.source_type, form.source_record_id, form.source_reference, form.safe_summary, form.notes, closeNotes; filter=searchQuery, selectedStatus; sinyal validasi=required; aturan field=form.source_record_id: type=number Confirmed from code — Coba Lagi, openCreateModal, resetFilters, loadReferrals, handleAccept, openCloseModal, closeCreateModal, handleCreateReferral, set isCloseModalOpen, confirmClose Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_referral.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, source_record_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/referrals, /faculty/referrals, /principal/students/referrals, /vice-principal/student-affairs/referrals P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Rekap Konseling Siswa /admin/rekap-konseling src/views/CounselingManagement/Rekap/RekapKonselingSiswa.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Rekap Konseling Siswa pada /admin/rekap-konseling; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Unit Sekolah, Search; kolom=No., NIS, Unit, Total Poin; filter=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Search; sinyal validasi=min/max; aturan field=filters.search: type=text Confirmed from code — Excel, Prev, onEducationLevelChange, applyFilters, onExportExcel, reloadAtFirstPage, onCetakBuku, goToPage Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/admin/academics/academicMaster.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_book.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, batch_id, student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/rekap-konseling, /faculty/homeroom/rekap-konseling, /principal/students/rekap-konseling, /vice-principal/student-affairs/rekap-konseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Tata Tertib & Peraturan /admin/rules src/views/CounselingManagement/Rules/Admin/AdminRuleListWrapper.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Tata Tertib & Peraturan pada /admin/rules; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu student-affairs.pembinaan (Pembinaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Perizinan Siswa /admin/student-permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Perizinan Siswa pada /admin/student-permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/student-permits, /faculty/student-permits, /parent/permits, /principal/students/permits, /student/permits, /vice-principal/student-affairs/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Pelanggaran /admin/violations src/views/CounselingManagement/Pelanggaran/ListPelanggaran.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Pelanggaran pada /admin/violations; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, statusFilter, deleteDialog.show; kolom=Bentuk, Poin; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles admin, school_admin, head_admin; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/violations, /faculty/violations, /principal/students/violations, /vice-principal/student-affairs/violations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Data Orang Tua /parents src/views/AdminViews/ParentDatabase/ParentList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Data Orang Tua pada /parents; tujuan diringkas dari 2 form, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=activeTab, pageSizeOption, selectedParents, searchQueryRelasi, editRelation.partner_id, editRelation.relationship_id, searchStudentEdit, editRelation.student_ids; filter=searchQueryRelasi, searchStudentEdit; sinyal validasi=required, min/max; aturan field=editRelation.partner_id: required, editRelation.student_ids: type=checkbox; Inferred from code — option/status/display-label candidates=10, 25, 50, 100 Confirmed from code — generateParentAccounts, resetParentPasswords, handleDelete, reactivateSelectedParents, openCreateRelation, goToStudentImport, goToAddStudent, exportParentsXlsx, set accountGenerationSummary, handlePageSizeChange, handleViewPartner, handleDeletePartner, reactivatePartner, handleViewRelation, +3 lainnya Confirmed from code — /api/v1/admin-staff/parents/list @ src/services/adminStaff/studentScope.service.js:21 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_staff_api.py:18; Confirmed from code — /api/v1/admin/parents/options @ src/services/admin/parent.service.js:14 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:516; Confirmed from code — /api/v1/admin/parents/list @ src/services/admin/parent.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:292; Confirmed from code — /api/v1/admin/parents/relation/save @ src/services/admin/parent.service.js:44 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:435; Confirmed from code — /api/v1/admin/parents/set-active @ src/services/admin/parent.service.js:35 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:407; Confirmed from code — /api/v1/admin/parents/relation/delete @ src/services/admin/parent.service.js:54 -> ../custom_addons_scola/gcgscola/scola_core/controllers/parent_admin_api.py:492 Confirmed from code — sesi autentik; capability parents.list.view; allowedRoles admin, school_admin, head_admin; Inferred from code — data prerequisite: referenced records dari field partner_id, relationship_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/parents/relation/save, /api/v1/admin/parents/relation/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students/import, /students/create, /parents/:id, /admin-staff/parents/list P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-affairs Data Siswa /students src/views/AdminViews/StudentDatabase/StudentList.vue:1 Confirmed from code — admin, school_admin, head_admin; guard route memakai allowedRoles Inferred from code — halaman Data Siswa pada /students; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, pageSizeOption, selectedStudents; kolom=NISN, Akun, Poin; Inferred from code — option/status/display-label candidates=Arsip, 10, 25, 50, 100 Confirmed from code — navigateToTambahSiswa, navigateToUploadPage, generateStudentAccounts, deleteSelected, reactivateSelected, set accountGenerationSummary, setClassFilter, handlePageSizeChange, navigateToDetail, deleteStudent, reactivateStudent Confirmed from code — /api/v1/admin/accounts/generate-students @ src/views/AdminViews/StudentDatabase/StudentList.vue:508 -> ../custom_addons_scola/gcgscola/scola_core/controllers/account_generation_api.py:44; Confirmed from code — /api/v1/admin-staff/students/list @ src/services/adminStaff/studentScope.service.js:10 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_staff_api.py:8; Confirmed from code — /api/v1/admin/students/classes @ src/services/admin/student.service.js:15 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:308; Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/admin/students/set-active @ src/services/admin/student.service.js:34 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:387 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles admin, school_admin, head_admin; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/accounts/generate-students; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students/create, /students/:id, /students/import, /admin-staff/students/list, /principal/students/list, /vice-principal/student-affairs/students P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

student-portal (18 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
student-portal Katalog Buku /library/catalog src/views/Library/Library.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, counselor, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.catalog.view; izin sesi backend dapat berbeda Inferred from code — halaman Katalog Buku pada /library/catalog; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — goToAdvancedSearch Missing or unclear — service closure terdeteksi (src/composables/useLibraryRouteBase.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /parent/library/catalog P3 — halaman sederhana/statis Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
student-portal Prestasi /student/achievements src/views/StudentViews/Counseling/ListPrestasi.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Prestasi pada /student/achievements; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory; filter=searchQuery Confirmed from code — resetFilters, set selectedStatus, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useStudent.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +7 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles student, alumni; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu student.discipline (Kesiswaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Analitik Saya /student/analytics src/views/AnalyticsManagement/Student/StudentDashboard.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Analitik Saya pada /student/analytics; tujuan diringkas dari konten halaman Confirmed from code — sinyal validasi=min/max Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/analytics/useParentStudentAnalytics.js, src/composables/useAppVersionCheck.js, src/composables/useStudent.js, src/services/attendance/attendanceAnalytics.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability analytics.learning.view; allowedRoles student, alumni; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu student.extras (Ekstrakurikuler & Insight) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Tugas /student/assignment src/views/AssignmentManagement/Student/AssignmentNew.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Tugas pada /student/assignment; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, searchQuery, activeFilter, selectedStatus, launchToken, Contoh: ABC123; filter=searchQuery, activeFilter, selectedStatus; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Ulangan Non-CBT Confirmed from code — set activeFilter, openAssignmentDetail, handleCardClick, closeLaunchModal, startExamRunner Confirmed from code — /lms/items/:param/my-submission @ src/services/lms/lmsSubmission.service.js:22; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/courses @ src/services/lms/assignment.service.js:249 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_course_api.py:90; Confirmed from code — /v1/academic/cbt/student/schedule @ src/services/cbt/studentExamSchedule.service.js:104 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/student_schedule.py:109 Confirmed from code — sesi autentik; capability academics.assignments.view; allowedRoles student, alumni; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/cbt/runner/:exam_id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Kehadiran /student/attendance src/views/AttendanceManagement/Student/Attendance.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Kehadiran pada /student/attendance; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=viewMode, selectedDate, weekAnchor, selectedScope, Tanggal Acuan Minggu, Tampilan, Mode Presensi; filter=selectedDate Confirmed from code — fetchSelectedMode, openDetailModal, closeDetailModal Confirmed from code — /api/v1/attendance/student/daily @ src/services/attendance/studentAttendance.service.js:312 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:8; Confirmed from code — /api/v1/attendance/student/period-report @ src/services/attendance/studentAttendance.service.js:373 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_portal_api.py:12 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles student, alumni; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu student.learning (Belajar) P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Tagihan Saya /student/billing src/views/StudentViews/Finance/StudentBilling.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Tagihan Saya pada /student/billing; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filterYear; filter=filterYear; sinyal validasi=min/max Confirmed from code — fetchFeeSchedules, set activeTab Confirmed from code — /api/v1/student/portal/billing @ src/services/portal/studentPortal.service.js:257 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_student_portal_api.py:24 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles student, alumni; feature flag scola_fees; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu student.today (Beranda) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Ujian CBT /student/cbt src/views/StudentViews/CBT/CBTExamList.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Ujian CBT pada /student/cbt; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, launchToken; filter=searchQuery, selectedStatus; aturan field=searchQuery: type=search Confirmed from code — handleCardClick, closeLaunchModal, startExamRunner Confirmed from code — /v1/academic/cbt/student/schedule @ src/services/cbt/studentExamSchedule.service.js:104 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/student_schedule.py:109 Confirmed from code — sesi autentik; capability academics.cbt_exams.sit; allowedRoles student, alumni; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/cbt/runner/:exam_id P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Konseling /student/counseling src/views/StudentViews/Counseling/CounselingList.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Konseling pada /student/counseling; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm; filter=searchTerm Confirmed from code — goToAddReport, goToDetail Confirmed from code — /api/v1/counseling/portal/reports/list @ src/services/counseling/counselingPortal.service.js:4 -> ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_portal_api.py:108; Confirmed from code — /api/v1/counseling/portal/classrooms @ src/services/counseling/counselingPortal.service.js:27 -> ../custom_addons_scola/gcgscola/scola_counseling/controllers/counseling_portal_api.py:135 Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles student, alumni; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/counseling/:id, /student/counseling/add P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Beranda /student/dashboard src/views/StudentViews/StudentDashboard.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Beranda pada /student/dashboard; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — openPriorityInsight, router.push Confirmed from code — /api/v1/student/portal/dashboard @ src/services/portal/studentPortal.service.js:205 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_student_portal_api.py:12 Confirmed from code — sesi autentik; capability students.dashboard.view; allowedRoles student, alumni; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/schedule, /student/extracurriculars, /student/billing, /student/report-card P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Ekstrakurikuler /student/extracurriculars src/views/StudentViews/Extracurricular/StudentExtracurricular.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Ekstrakurikuler pada /student/extracurriculars; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, selectedCategory, registrationNote; filter=searchQuery; sinyal validasi=min/max Confirmed from code — $router.push, loadData, openAttendanceHistory, openRegisterModal, openResignModal, set showAttendanceModal, submitRegistration, set showResignModal, confirmResign Confirmed from code — /api/v1/student/portal/extracurricular/attendance-history @ src/services/counseling/extracurricularPortal.service.js:38 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/extracurricular_portal_api.py:146 Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles student, alumni; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /vice-principal/student-affairs/extracurricular P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Capaian LMS /student/grades/achievements src/views/LearningManagement/Student/Achievements.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Capaian LMS pada /student/grades/achievements; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Pengumpulan Pertama, Pengumpulan Awal Confirmed from code — fetchAchievements Confirmed from code — /lms/students/me/achievements @ src/views/LearningManagement/Student/Achievements.vue:47; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.self.view; allowedRoles student, alumni; feature flag scola_lms; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu student.grades (Nilai & Rapor) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Kelas LMS /student/lms src/views/LearningManagement/Student/CourseList.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Kelas LMS pada /student/lms; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=search Confirmed from code — goToEnrollmentStatus, refreshData, fetchCourses, goToCourseDetail, handleRequestEnrollment Confirmed from code — /lms/courses/:param/enrollments @ src/services/lms/enrollment.service.js:9; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.lms.self.view; allowedRoles student, alumni; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/lms/enrollments, /student/lms/course/:courseOfferingId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Enrolmen LMS /student/lms/enrollments src/views/LearningManagement/Student/EnrollmentList.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Enrolmen LMS pada /student/lms/enrollments; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=stateFilter, search, decisionNotes[item.id]; filter=stateFilter, search; aturan field=search: type=search; Inferred from code — option/status/display-label candidates=Requested, Approved, Rejected, Withdrawn Confirmed from code — fetchEnrollments, withdrawEnrollment Confirmed from code — /lms/enrollments @ src/services/lms/enrollment.service.js:4; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/enrollments/:param @ src/services/lms/enrollment.service.js:14; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.self.view; allowedRoles student, alumni; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/enrollments/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu student.learning (Belajar) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Perizinan Siswa /student/permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Perizinan Siswa pada /student/permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles student, alumni; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/student-permits, /counseling/student-permits, /faculty/student-permits, /parent/permits, /principal/students/permits, /vice-principal/student-affairs/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Rapor Saya /student/report-card src/views/ReportCardManagement/Student/StudentReportList.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Rapor Saya pada /student/report-card; tujuan diringkas dari aksi interaktif Confirmed from code — sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — viewReport Confirmed from code — /api/v1/report-card/reports @ src/services/reportCard/reportCard.service.js:36 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:299 Confirmed from code — sesi autentik; capability report_cards.self.view; allowedRoles student, alumni; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/report-card/:reportId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Tata Tertib & Peraturan /student/rules src/views/StudentViews/Rules/RuleListWrapper.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Tata Tertib & Peraturan pada /student/rules; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles student, alumni; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu student.discipline (Kesiswaan) P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Jadwal /student/schedule src/views/ScheduleManagement/Student/Schedule.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Jadwal pada /student/schedule; tujuan diringkas dari konten halaman Confirmed from code — field=activeTab; Inferred from code — option/status/display-label candidates=Acara & Kegiatan, RSVP Diperbarui Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /lms/calendar @ src/services/lms/calendar.service.js:28; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/student/portal/schedule @ src/services/portal/studentPortal.service.js:242 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/tier1_student_portal_api.py:16; Confirmed from code — /api/v1/calendar/events @ src/services/calendar/calendarRsvp.service.js:39 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:156; Confirmed from code — /api/v1/calendar/events/:param/rsvp @ src/services/calendar/calendarRsvp.service.js:53 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:208 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles student, alumni; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu student.learning (Belajar) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
student-portal Pelanggaran /student/violations src/views/StudentViews/Counseling/ListPelanggaran.vue:1 Confirmed from code — student, alumni; guard route memakai allowedRoles Inferred from code — halaman Pelanggaran pada /student/violations; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory; filter=searchQuery Confirmed from code — resetFilters, set selectedStatus, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useStudent.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles student, alumni; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu student.discipline (Kesiswaan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

student-portal / library (2 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
student-portal / library Pinjaman Saya /library/loans src/views/Library/MyLibrary.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.circulation.view; izin sesi backend dapat berbeda Inferred from code — halaman Pinjaman Saya pada /library/loans; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedChildUserId Confirmed from code — set activeTab, goToCatalog, renewLoan, goToReservations, goToWishlist, fetchLoans Confirmed from code — /api/v1/library/loans/list @ src/services/library/library.service.js:562 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:422; Confirmed from code — /api/v1/library/parent/children @ src/services/library/library.service.js:567 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:438; Confirmed from code — /api/v1/library/loans/renew @ src/services/library/library.service.js:577 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:473 Confirmed from code — sesi autentik; capability library.circulation.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /library/my-library, /parent/library/loans P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend
student-portal / library Wishlist /library/wishlist src/views/Library/Wishlist.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, counselor, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.catalog.view; izin sesi backend dapat berbeda Inferred from code — halaman Wishlist pada /library/wishlist; tujuan diringkas dari aksi interaktif Confirmed from code — field=selectedChildUserId Confirmed from code — goToCatalog, goToDetail, togglePin, removeItem Confirmed from code — /api/v1/library/wishlist/remove @ src/services/library/libraryWishlist.service.js:28 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:57; Confirmed from code — /api/v1/library/wishlist/list @ src/services/library/libraryWishlist.service.js:50 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:15; Confirmed from code — /api/v1/library/wishlist/toggle-pin @ src/services/library/libraryWishlist.service.js:81 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_catalog_api.py:75; Confirmed from code — /api/v1/library/parent/children @ src/services/library/library.service.js:567 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:438 Confirmed from code — sesi autentik; capability library.catalog.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/wishlist/remove; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /parent/library/wishlist P1 — mutasi data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

teacher-portal (39 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal Kedatangan & Kepulangan /attendance/daily src/views/AttendanceManagement/Admin/DailyArrivalDeparture.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; guard route memakai allowedRoles Inferred from code — halaman Kedatangan & Kepulangan pada /attendance/daily; tujuan diringkas dari 3 form, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=selectedDate, pageSize, searchQuery, temperatureInputs[student.student_id], pickupForm.departureMode, pickupForm.pickupPersonId, newPickupForm.name, newPickupForm.relation, newPickupForm.phone, pickupForm.dropoffOfficerId, pickupForm.photo, pickupForm.photoFilename, +7 lainnya; filter=selectedDate, searchQuery; sinyal validasi=min/max; aturan field=selectedDate: type=date, searchQuery: type=search, temperatureInputs[student.student_id]: min=34, max=42.5, type=number, newPickupForm.name: maxlength=128, type=text, newPickupForm.relation: maxlength=64, type=text, newPickupForm.phone: maxlength=32, type=tel, adjustForm.checkInTime: type=datetime-local, adjustForm.checkOutTime: type=datetime-local Confirmed from code — resetFilters, loadRoster, persistPageSize, setRombelFilter, toggleSort, openDetailModal, handleCheckIn, handleDepartAction, openCheckOutModal, closeDetailModal, submitCheckOut, openAddPickupForm, submitNewPickupPerson, cancelAddPickupForm, +2 lainnya Confirmed from code — /api/v1/attendance/daily/adjust-times @ src/services/attendance/studentAttendance.service.js:211 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_adjust_api.py:8; Confirmed from code — /api/v1/attendance/daily/cancel @ src/services/attendance/studentAttendance.service.js:192 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:84; Confirmed from code — /api/v1/attendance/daily/check-in @ src/services/attendance/studentAttendance.service.js:129 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:24; Confirmed from code — /api/v1/attendance/daily/check-out @ src/services/attendance/studentAttendance.service.js:173 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:47; Confirmed from code — /api/v1/attendance/daily/roster @ src/services/attendance/studentAttendance.service.js:100 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:16; Confirmed from code — /api/v1/attendance/daily/dropoff-officers @ src/services/attendance/studentAttendance.service.js:231 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:109; Confirmed from code — /api/v1/attendance/daily/pickup-options @ src/services/attendance/studentAttendance.service.js:223 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:105; Confirmed from code — /api/v1/attendance/pickup-persons/save @ src/services/attendance/studentAttendance.service.js:254 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:117 Confirmed from code — sesi autentik; capability students.attendance.edit; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_infrastructure, vice_principal_public_relations, vice_principal_finance, head_admin, treasurer, inventory_officer, admin_staff, pickup_officer, teacher, homeroom, counselor, librarian, lab_technician; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/attendance/daily/cancel, /api/v1/attendance/pickup-persons/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.teaching (Pengajaran) P0 — komponen >=1400 baris Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Pencatatan Prestasi /faculty/achievements src/views/CounselingManagement/Prestasi/ListPrestasi.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman Pencatatan Prestasi pada /faculty/achievements; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory, statusFilter, deleteDialog.show; kolom=Kejuaraan, Peringkat; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Total Prestasi, Disetujui, Akademik, Tingkat Prestasi Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles homeroom, teacher; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels, /admin/achievements, /counseling/achievements, /principal/students/achievements, /vice-principal/student-affairs/achievements P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Tugas & Ulangan /faculty/assignments src/views/AssignmentManagement/Faculty/AssignmentHome.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Tugas & Ulangan pada /faculty/assignments; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, filterStatus, form.name, form.lock_at, form.published_at, form.description, attachmentFiles, form.visibility; filter=searchQuery, filterStatus; sinyal validasi=required, min/max, custom validate; aturan field=searchQuery: type=search, form.name: required, form.lock_at: type=datetime-local, form.published_at: type=datetime-local, form.visibility: required; Inferred from code — option/status/display-label candidates=Tugas, Ulangan, Terjadwal, Error, Publikasi Confirmed from code — Preview, Hapus, refreshData, router.push, openViewModal, openGradingPage, openEditModal, openDeleteModal, closeDeleteModal, confirmDelete, handleClose, togglePreviewExisting, removeExistingAttachment, submitForm, +4 lainnya Missing or unclear — /api/lms/items/:param @ src/services/lms/assignment.service.js:192; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Missing or unclear — /lms/items/:param @ src/services/lms/lmsSubmission.service.js:17; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /lms/attachments @ src/services/lms/lmsSubmission.service.js:32; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/attachments @ src/services/lms/assignment.service.js:147; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/attachments/:param @ src/services/lms/assignment.service.js:161; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /v1/academic/cbt/exams/list @ src/services/cbt/examService.js:17 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:16 Confirmed from code — sesi autentik; capability academics.assignments.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/items/:param, /lms/attachments/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments/create, /faculty/cbt/exams/:examId/:tab(overview\|settings\|participants\|grading)?, /faculty/assignments/exam-create P0 — aksi sensitif/workflow, aksi hapus Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Presensi Mapel /faculty/attendance src/views/AttendanceManagement/Faculty/Attendance.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Presensi Mapel pada /faculty/attendance; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — goToDailyAttendance, goToReport, set selectedFilter, goToAttendanceSheet Confirmed from code — /api/v1/attendance/faculty/today-sessions @ src/services/attendance/studentAttendance.service.js:397 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:8; Confirmed from code — /api/v1/attendance/student/settings @ src/services/attendance/studentAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_daily_api.py:8 Confirmed from code — sesi autentik; capability students.attendance.edit; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/daily, /faculty/attendance/sheet/:id, /faculty/attendance/subject-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Laporan Kehadiran /faculty/attendance/homeroom-report src/views/AttendanceManagement/Faculty/AttendanceReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Kehadiran pada /faculty/attendance/homeroom-report; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedScope, selectedAcademicYear, periodMode, weekAnchor, selectedMonth, selectedBatch, Mode Presensi, Periode; filter=periodMode, selectedBatch, Periode Confirmed from code — router.back, fetchAttendanceReport, exportToPdf Confirmed from code — /api/v1/attendance/faculty/homeroom-report @ src/services/attendance/studentAttendance.service.js:414 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:33; Confirmed from code — /api/v1/attendance/faculty/homeroom-batches @ src/services/attendance/studentAttendance.service.js:402 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:29 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu teacher.homeroom (Wali Kelas) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Rekap Presensi Mapel /faculty/attendance/subject-report src/views/AttendanceManagement/Faculty/FacultySubjectAttendanceReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Rekap Presensi Mapel pada /faculty/attendance/subject-report; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedAcademicYear, periodMode, weekAnchor, selectedMonth, selectedClass, selectedSubject, selectedStudent, Periode, Siswa; filter=periodMode, selectedClass, Periode Confirmed from code — router.back, handleClassChange, loadStudentOptions, fetchAttendanceData, exportToPdf Confirmed from code — /api/v1/attendance/faculty/subject-options @ src/services/attendance/facultySubjectAttendance.service.js:4 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:42; Confirmed from code — /api/v1/attendance/faculty/subject-students @ src/services/attendance/facultySubjectAttendance.service.js:9 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:46; Confirmed from code — /api/v1/attendance/faculty/subject-report @ src/services/attendance/facultySubjectAttendance.service.js:24 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_faculty_api.py:54 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/attendance/homeroom-report, /faculty/attendance/subject-report/student/:studentId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Ujian CBT /faculty/cbt/exams src/views/ExamManagement/Faculty/Exam/CBTExamList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Ujian CBT pada /faculty/cbt/exams; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.state, newExam.name, newExam.exam_context, newExam.exam_type_id, newExam.question_set_id, Try Out Nasional 2026, Koleksi Soal, Context Ujian; filter=filters.search, filters.state; sinyal validasi=required, min/max; aturan field=newExam.name: required, newExam.exam_context: required, newExam.exam_type_id: required, newExam.question_set_id: required; Inferred from code — option/status/display-label candidates=Draft, Publikasi, Independent — Try out, olimpiade, tes publik, Admission — Tes SPMB/penerimaan siswa baru, Error, Sukses Confirmed from code — openCreateModal, goToLearningExams, goToQuestionBank, handleSearch, goToDetail, toggleTokenVisibility, openPreviewModal, handleDelete, goToPage, set showCreateModal, handleCreate, togglePreviewTokenVisibility, set showPreviewModal, handleConfirmDialog Confirmed from code — /v1/academic/cbt/exams/list @ src/services/cbt/examService.js:17 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_read_api.py:16; Confirmed from code — /v1/academic/cbt/exams/save @ src/services/cbt/examService.js:45 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:16; Confirmed from code — /v1/academic/cbt/exams/options/exam-types @ src/services/cbt/examService.js:305 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lookup_api.py:31; Confirmed from code — /v1/academic/cbt/exams/:param/delete @ src/services/cbt/examService.js:73 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/exam_lifecycle_api.py:252; Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279 Confirmed from code — sesi autentik; capability academics.cbt_exams.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field exam_type_id, question_set_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/exams/save, /v1/academic/cbt/exams/:param/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/assignments, /faculty/question-bank, /admin-staff/admissions/cbt/exams, /admin/spmb/cbt/exams P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Proktor CBT /faculty/cbt/proctor src/views/ExamManagement/Faculty/Proctor/ProctorDashboard.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Proktor CBT pada /faculty/cbt/proctor; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedExamId, extendTimeModal.minutes, extendTimeModal.reason, forceSubmitDialog.reason, resetDialog.reason, resetDialog.fullReset, Tambahan Waktu (menit), 10, Alasan (wajib), Masukkan alasan penambahan waktu..., Masukkan alasan...; kolom=Peserta, Sesi, Progress, Sisa Waktu, Flags; sinyal validasi=required; aturan field=extendTimeModal.minutes: type=number, extendTimeModal.reason: required; Inferred from code — option/status/display-label candidates=Error, Tambah Waktu, CBT, Proctor Console Confirmed from code — router.back, handleExamChange, loadExamStatus, showFlagsModal, set extendTimeModal.show, handleExtendTime, handleForceSubmit, handleResetAttempt Confirmed from code — /v1/academic/cbt/proctor/exams @ src/services/cbt/proctorService.js:11 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:13; Confirmed from code — /v1/academic/cbt/proctor/exams/:param/status @ src/services/cbt/proctorService.js:30 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:50; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/flags @ src/services/cbt/proctorService.js:49 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_read_api.py:189; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/extend-time @ src/services/cbt/proctorService.js:72 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:11; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/force-submit @ src/services/cbt/proctorService.js:92 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:40; Confirmed from code — /v1/academic/cbt/proctor/attempts/:param/reset @ src/services/cbt/proctorService.js:113 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/proctor_action_api.py:65 Confirmed from code — sesi autentik; capability academics.cbt_proctor.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/cbt/proctor, /admin/spmb/cbt/proctor, /admin/spmb/proctor/:scheduleId? P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Laporan Harian Kelas /faculty/class-daily-report src/views/FacultyViews/ClassDailyReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Harian Kelas pada /faculty/class-daily-report; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=reportDate, selectedBatchId, report.theme, report.total_students, report.present_count, report.absent_count, report.absent_names, activity.notes, report.toilet_trained_count, report.assistance_count, report.accident_none, report.accident_details, +2 lainnya; filter=reportDate, selectedBatchId; aturan field=report.total_students: type=number, report.present_count: type=number, report.absent_count: type=number, report.toilet_trained_count: type=number, report.assistance_count: type=number, report.accident_none: type=checkbox Confirmed from code — downloadPdf, saveReport, onBatchChange, set report.mood Confirmed from code — /lms/teacher-reports/options @ src/services/lms/teacherReport.service.js:5; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/teacher-reports/class-daily/get @ src/services/lms/teacherReport.service.js:10 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:507; Confirmed from code — /api/lms/teacher-reports/class-daily/save @ src/services/lms/teacherReport.service.js:19 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:618; Confirmed from code — /api/lms/teacher-reports/class-daily/:param.pdf @ src/services/lms/teacherReport.service.js:110 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1262 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/teacher-reports/class-daily/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/homeroom/class-daily-report P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Laporan Konseling /faculty/counseling src/views/CounselingManagement/Counseling/CounselingList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Konseling pada /faculty/counseling; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedClassroom, searchPlaceholder; filter=searchTerm, selectedClassroom, searchPlaceholder; sinyal validasi=min/max Confirmed from code — fetchReports, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counseling.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles teacher, homeroom; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes, /principal/students/counseling, /vice-principal/student-affairs/counseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Dashboard Rombel /faculty/homeroom src/views/FacultyViews/WaliKelas.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Dashboard Rombel pada /faculty/homeroom; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedDiscussionCourseId; filter=selectedDiscussionCourseId Confirmed from code — router.push Confirmed from code — /lms/courses @ src/views/FacultyViews/WaliKelas.vue:232; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/teacher/homeroom-dashboard @ src/services/faculty/facultySelf.service.js:16 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:107; Confirmed from code — /lms/discussions/policy @ src/services/lms/discussion.service.js:153; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu teacher.homeroom (Wali Kelas) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Laporan Harian Kelas /faculty/homeroom/class-daily-report src/views/FacultyViews/ClassDailyReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Harian Kelas pada /faculty/homeroom/class-daily-report; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=reportDate, selectedBatchId, report.theme, report.total_students, report.present_count, report.absent_count, report.absent_names, activity.notes, report.toilet_trained_count, report.assistance_count, report.accident_none, report.accident_details, +2 lainnya; filter=reportDate, selectedBatchId; aturan field=report.total_students: type=number, report.present_count: type=number, report.absent_count: type=number, report.toilet_trained_count: type=number, report.assistance_count: type=number, report.accident_none: type=checkbox Confirmed from code — downloadPdf, saveReport, onBatchChange, set report.mood Confirmed from code — /lms/teacher-reports/options @ src/services/lms/teacherReport.service.js:5; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/teacher-reports/class-daily/get @ src/services/lms/teacherReport.service.js:10 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:507; Confirmed from code — /api/lms/teacher-reports/class-daily/save @ src/services/lms/teacherReport.service.js:19 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:618; Confirmed from code — /api/lms/teacher-reports/class-daily/:param.pdf @ src/services/lms/teacherReport.service.js:110 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1262 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/teacher-reports/class-daily/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/class-daily-report P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Kenaikan Kelas /faculty/homeroom/promotion src/views/AdminViews/Promotion/StudentPromotionList.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman Kenaikan Kelas pada /faculty/homeroom/promotion; tujuan diringkas dari 3 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=action, decision, nextBatchId, retentionReason, form.homeroom_notes, form.decision, form.next_batch_id, form.retention_reason, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, +7 lainnya; kolom=Rata-rata, Rekomendasi, Keputusan; filter=nextBatchId, form.next_batch_id, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, generateForm.batch_id; sinyal validasi=required; aturan field=action: required, decision: required, nextBatchId: required, form.retention_reason: required, generateForm.academic_year_id: required, generateForm.batch_id: required; Inferred from code — option/status/display-label candidates=Sukses, Error, Perlu Review, Data Dilewati Confirmed from code — handleSubmit, set form.homeroom_recommendation, set showGenerateModal, openBulkModal, openDetailModal, openEditModal, handleGenerate Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles homeroom, teacher; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field next_batch_id, academic_year_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/promotion, /principal/academics/promotion, /vice-principal/curriculum/promotion P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Rekap Konseling Siswa /faculty/homeroom/rekap-konseling src/views/CounselingManagement/Rekap/RekapKonselingSiswa.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman Rekap Konseling Siswa pada /faculty/homeroom/rekap-konseling; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Unit Sekolah, Search; kolom=No., NIS, Unit, Total Poin; filter=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Search; sinyal validasi=min/max; aturan field=filters.search: type=text Confirmed from code — Excel, Prev, onEducationLevelChange, applyFilters, onExportExcel, reloadAtFirstPage, onCetakBuku, goToPage Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/admin/academics/academicMaster.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_book.view; allowedRoles homeroom, teacher; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, batch_id, student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/rekap-konseling, /counseling/rekap-konseling, /principal/students/rekap-konseling, /vice-principal/student-affairs/rekap-konseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal E-Rapor Rombel /faculty/homeroom/report-card src/views/ReportCardManagement/Faculty/HomeroomReportList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman E-Rapor Rombel pada /faculty/homeroom/report-card; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=form.academic_year_id, form.academic_term_id, form.batch_id, filters.academic_year_id, filters.academic_term_id, Guru Pengajar (otomatis dari penugasan mengajar); filter=form.batch_id, filters.academic_year_id, filters.academic_term_id; sinyal validasi=required, min/max; aturan field=form.academic_year_id: required, form.academic_term_id: required, form.batch_id: required; Inferred from code — option/status/display-label candidates=Ranking Ditahan, Sukses, Error, Submitted, Kepala Sekolah, Published, Rejected, Pastikan draft tersisa sesuai target, Proses antrian review, Kelengkapan publish kelas Confirmed from code — handleCompute, handleGenerate, confirmBulkSubmit, set showGenerateModal, set showRankingModal, selectBatch, viewReport, openWorkflowDialog, handleWorkflowAction, executeBulkSubmit Confirmed from code — /api/v1/report-card/compute-ranking @ src/services/reportCard/reportCard.service.js:155 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:472; Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/reports @ src/services/reportCard/reportCard.service.js:36 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:299; Confirmed from code — /api/v1/report-card/generate @ src/services/reportCard/reportCard.service.js:137 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:422; Confirmed from code — /api/v1/report-card/generate-preview @ src/services/reportCard/reportCard.service.js:146 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:645 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/compute-ranking, /api/v1/report-card/generate, /api/v1/report-card/generate-preview; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/homeroom/report-card/:reportId, /faculty/homeroom/orchestrator P1 — mutasi data, form, komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Jadwal Pelajaran /faculty/homeroom/schedule src/views/ScheduleManagement/Faculty/Schedule.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Jadwal Pelajaran pada /faculty/homeroom/schedule; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedHomeroomBatchId, activeTab; filter=selectedHomeroomBatchId; Inferred from code — option/status/display-label candidates=Acara & Kegiatan, RSVP Diperbarui Confirmed from code — fetchWeekData Confirmed from code — /v1/lms/sessions/materials @ src/views/ScheduleManagement/Faculty/Schedule.vue:267 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_reference_api.py:294; Confirmed from code — /lms/calendar @ src/services/lms/calendar.service.js:28; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/calendar/events @ src/services/calendar/calendarRsvp.service.js:39 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:156; Confirmed from code — /api/v1/calendar/events/:param/rsvp @ src/services/calendar/calendarRsvp.service.js:53 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:208; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/schedule P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal SPP per Kelas /faculty/homeroom/spp-by-class src/views/AdminViews/AcademicConfig/Fees/FeeDashboard.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman SPP per Kelas pada /faculty/homeroom/spp-by-class; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.course_id, filters.batch_id, filters.period, exportType, Jenjang, Periode, Ringkasan Dashboard, Aging Piutang; kolom=Jumlah Invoice, Total Tunggakan, Terlama Overdue, Total Dibayar, Total Piutang, Collection Rate, No. Invoice; filter=filters.course_id, filters.batch_id, filters.period, Jenjang, Periode; sinyal validasi=min/max; aturan field=exportType: type=radio; Inferred from code — option/status/display-label candidates=0-30 hari, 31-60 hari, 61-90 hari, >90 hari Confirmed from code — set showFilterModal, exportReport, toggleStatVisibility, goToSchedules, viewStudentDetail, resetFilters, applyFilters, doExport Confirmed from code — /api/v1/finance/spp/by-class @ src/services/finance/sppReport.service.js:124 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_spp_report_api.py:177 Confirmed from code — sesi autentik; capability finance.spp_by_class.view; allowedRoles teacher, homeroom; feature flag scola_fees; Inferred from code — data prerequisite: referenced records dari field course_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /payment/schedule, /payment/spp-by-class, /vice-principal/finance, /vice-principal/finance/spp-by-class P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Laporan Mingguan Siswa /faculty/homeroom/weekly-student-report src/views/FacultyViews/WeeklyStudentReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Mingguan Siswa pada /faculty/homeroom/weekly-student-report; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedBatchId, anchorDate, plan.theme, lesson.subject_label, lesson.topic, student.narrative; filter=selectedBatchId, anchorDate; aturan field=field: type=number Confirmed from code — saveDraft, submitReports, openPublishAllDialog, onBatchChange, shiftWeek, downloadStudentPdf, openPublishDialog, confirmPublish Confirmed from code — /lms/teacher-reports/options @ src/services/lms/teacherReport.service.js:5; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/teacher-reports/weekly/get @ src/services/lms/teacherReport.service.js:33 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:840; Confirmed from code — /api/lms/teacher-reports/weekly/save @ src/services/lms/teacherReport.service.js:42 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:888; Confirmed from code — /api/lms/teacher-reports/weekly/student/:param.pdf @ src/services/lms/teacherReport.service.js:114 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1331 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/teacher-reports/weekly/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/weekly-student-report P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Insiden Umum /faculty/incidents src/views/CounselingManagement/Incident/IncidentList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Insiden Umum pada /faculty/incidents; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedCategory, selectedStatus; filter=searchTerm, selectedStatus; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua Status, Dilaporkan, Triage, Investigasi, Selesai, Dieskalasi Confirmed from code — goToAdd, loadIncidents, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/incident.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles teacher, homeroom; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents, /counseling/incidents, /principal/students/incidents, /vice-principal/student-affairs/incidents P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Verifikasi GLS /faculty/library/reading-log src/views/Library/TeacherReadingLogVerification.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Verifikasi GLS pada /faculty/library/reading-log; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — Semua, Belum Diverifikasi, Sudah Diverifikasi, Verifikasi, Batalkan Verifikasi, set filterStatus, verifyLog, unverifyLog Confirmed from code — /api/v1/library/reading-logs/list @ src/services/library/library.service.js:582 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:494; Confirmed from code — /api/v1/library/reading-logs/unverify @ src/services/library/library.service.js:601 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:46; Confirmed from code — /api/v1/library/reading-logs/verify @ src/services/library/library.service.js:596 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:29 Confirmed from code — sesi autentik; capability library.reading_log.manage; allowedRoles teacher, homeroom; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/reading-logs/verify; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.digital_learning (Pembelajaran Digital) P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Kelas Saya (LMS) /faculty/lms src/views/LearningManagement/Faculty/CourseList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Kelas Saya (LMS) pada /faculty/lms; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=search Confirmed from code — router.push, goToEnrollmentQueue, refreshData, fetchCourses, goToCourseDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/lms/useCourse.js, src/composables/useAppVersionCheck.js, src/services/lms/course.service.js, src/services/lms/sessionLog.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /faculty/lms/analytics, /faculty/lms/enrollments, /faculty/lms/course/:courseOfferingId P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Pantau LMS /faculty/lms/advisor src/views/LearningManagement/Faculty/AdvisorClassOverview.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Pantau LMS pada /faculty/lms/advisor; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=search Confirmed from code — fetchClassData Confirmed from code — /lms/advisor/class-overview @ src/views/LearningManagement/Faculty/AdvisorClassOverview.vue:68; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu teacher.homeroom (Wali Kelas) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Buku Nilai LMS /faculty/lms/gradebook src/views/LearningManagement/Faculty/Gradebook.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Buku Nilai LMS pada /faculty/lms/gradebook; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedBatchId, selectedSubjectId, publishConfig.assignmentDefaultComponent, publishConfig.cbtDefaultComponent, publishConfig.useAssignmentTypeMapping, publishConfig.useCbtHeuristicMapping, selectedQueueItemId, row.draftState, row.draftScore, line.criterion, line.max_score, line.score, +7 lainnya; kolom=No, Nama Siswa, Rata-rata, Siswa, Submitted, Status, Kualitas, Nilai, Aksi; filter=selectedBatchId; sinyal validasi=min/max; aturan field=publishConfig.useAssignmentTypeMapping: type=checkbox, publishConfig.useCbtHeuristicMapping: type=checkbox, row.draftScore: min=0, max=selectedQueueAssignment?.maxScore \|\| 100, type=number, line.criterion: type=text, line.max_score: min=0, type=number, line.score: min=0, type=number; Inferred from code — option/status/display-label candidates=Penilaian Harian, Penilaian Tengah Semester, Penilaian Akhir Semester, Penilaian Akhir Tahun, Tugas, Praktik, Portofolio, Error, Akses Ditolak, Quality Gate Confirmed from code — Hapus, Tambah Kriteria, exportToCsv, publishGrades, loadSubmissionQueue, saveAllQueueGrades, openRubricModal, saveQueueGrade, removeRubricRow, addRubricRow, closeRubricModal, applyRubricDraft Confirmed from code — /lms/courses/:param/gradebook @ src/services/lms/gradebook.service.js:205; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/courses/:param/items @ src/services/lms/gradebook.service.js:206; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/grades/publish @ src/services/lms/gradebook.service.js:617 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_grading_api.py:982; Confirmed from code — /lms/grades/components @ src/services/lms/gradebook.service.js:497; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/items/:param/grade @ src/services/lms/assignment.service.js:230 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_assessment_api.py:403 Confirmed from code — sesi autentik; capability academics.lms_gradebook.view; allowedRoles teacher, homeroom; feature flag scola_lms; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/grades/publish, /api/lms/items/:param/grade; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.digital_learning (Pembelajaran Digital) P0 — komponen >=1400 baris, aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Manajemen Rubrik /faculty/lms/rubrics src/views/LearningManagement/Faculty/RubricManager.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Manajemen Rubrik pada /faculty/lms/rubrics; tujuan diringkas dari aksi interaktif Confirmed from code — field=form.name, form.description, form.is_template, c.title, c.description, c.max_points, Nama Rubrik, Contoh: Rubrik Presentasi, Deskripsi, Deskripsi singkat rubrik, Judul kriteria *, Deskripsi (opsional), +2 lainnya; sinyal validasi=required; aturan field=form.name: required, form.is_template: type=checkbox, c.title: required, c.max_points: type=number Confirmed from code — fetchRubrics, openCreate, resetForm, addCriterion, removeCriterion, saveRubric, openEdit, deleteRubric, toggleExpand Confirmed from code — /lms/rubrics @ src/views/LearningManagement/Faculty/RubricManager.vue:81; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /lms/rubrics/:param @ src/views/LearningManagement/Faculty/RubricManager.vue:98; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability academics.lms.manage; allowedRoles teacher, homeroom; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /lms/rubrics/:param; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.digital_learning (Pembelajaran Digital) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Bank Soal /faculty/question-bank src/views/ExamManagement/Faculty/QuestionBank/CBTQuestionList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Bank Soal pada /faculty/question-bank; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.search, filters.subject_id, filters.sort, newSet.name, newSet.subject_id, newSet.description, Nama Koleksi, Contoh: UH 1 - Eksponen, Deskripsi, Deskripsi koleksi...; filter=filters.search, filters.subject_id, filters.sort; sinyal validasi=required, min/max; aturan field=newSet.name: required; Inferred from code — option/status/display-label candidates=Error, Sukses Confirmed from code — openCreateModal, handleSearch, goToDetail, handleDelete, goToPage, set showCreateModal, handleCreate, handleConfirmDialog Confirmed from code — /v1/academic/cbt/question-bank/sets/list @ src/services/cbt/questionService.js:24 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:279; Confirmed from code — /v1/academic/cbt/question-bank/sets/save @ src/services/cbt/questionService.js:42 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:354; Confirmed from code — /v1/academic/cbt/question-bank/sets/delete @ src/services/cbt/questionService.js:60 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_set_api.py:407; Confirmed from code — /v1/academic/cbt/question-bank/options/subjects @ src/services/cbt/questionService.js:116 -> ../custom_addons_scola/gcgscola/scola_cbt/controllers/question_api.py:1124 Confirmed from code — sesi autentik; capability academics.question_bank.manage; allowedRoles teacher, homeroom; feature flag scola_cbt; Inferred from code — data prerequisite: exam/question set serta participant/schedule/attempt sesuai mode halaman; referenced records dari field subject_id Inferred from code — memanggil endpoint berbentuk mutasi /v1/academic/cbt/question-bank/sets/save, /v1/academic/cbt/question-bank/sets/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.digital_learning (Pembelajaran Digital) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Kirim Referral BK /faculty/referrals src/views/FacultyViews/Counseling/ReferralList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Kirim Referral BK pada /faculty/referrals; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, selectedTargetRole, form.student_id, form.target_role, form.source_type, form.source_record_id, form.source_reference, form.safe_summary, form.notes, closeNotes; filter=searchQuery, selectedStatus; sinyal validasi=required; aturan field=form.source_record_id: type=number Confirmed from code — Coba Lagi, openCreateModal, resetFilters, loadReferrals, handleAccept, openCloseModal, closeCreateModal, handleCreateReferral, set isCloseModalOpen, confirmClose Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_referral.view; allowedRoles teacher, homeroom; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, source_record_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/referrals, /counseling/referrals, /principal/students/referrals, /vice-principal/student-affairs/referrals P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal E-Rapor Akademik /faculty/report-card src/views/ReportCardManagement/Faculty/TeacherReportLineList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman E-Rapor Akademik pada /faculty/report-card; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedTeacherId, components[idx].score_status, components[idx].score, components[idx].is_remedial, components[idx].remedial_date, components[idx].remedial_notes, remedialSummary.is_remedial, remedialSummary.remedial_score, remedialSummary.remedial_date, remedialSummary.remedial_notes, filters.academic_year_id, filters.academic_term_id, +11 lainnya; filter=components[idx].score_status, components[idx].remedial_date, remedialSummary.remedial_date, filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id, filters.state, +2 lainnya; sinyal validasi=min/max; aturan field=components[idx].score: min=0, max=100, type=number, components[idx].is_remedial: type=checkbox, components[idx].remedial_date: type=date, remedialSummary.is_remedial: type=checkbox, remedialSummary.remedial_score: min=0, max=100, type=number, remedialSummary.remedial_date: type=date; Inferred from code — option/status/display-label candidates=Sukses, Error, Submitted, Kepala Sekolah, Published, Rejected, Input nilai mapel, Siap review wali kelas, Progress publish raport, Submit Berhasil Confirmed from code — handleSave, handleRefreshAll, navigateToBatchInput, handleSyncScores, handleBatchSubmit, set showWorkflowSummary, viewLineDetail, editLineScores, handleResetToDraft Missing or unclear — /api/v1/report-card/report-lines/:param @ src/services/reportCard/reportCard.service.js:93; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/report-lines/:param/refresh @ src/services/reportCard/reportCard.service.js:120 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:259; Confirmed from code — /api/v1/report-card/report-lines/:param/save @ src/services/reportCard/reportCard.service.js:109 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:142; Confirmed from code — /api/v1/report-card/report-lines @ src/services/reportCard/reportCard.service.js:79 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:513; Confirmed from code — /api/v1/report-card/setup/grading-policy-summary @ src/services/reportCard/reportCardSetup.service.js:69 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_setup_config_api.py:198; Confirmed from code — /api/v1/report-card/teacher/refresh-scores @ src/services/reportCard/reportCardSync.service.js:12 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_teacher_score_api.py:11 Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id, subject_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/report-lines/:param/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/report-card/batch-input P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Entri Nilai Massal /faculty/report-card/batch-input src/views/ReportCardManagement/Faculty/BatchScoreInput.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Entri Nilai Massal pada /faculty/report-card/batch-input; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id, studentSearchQuery, score.score, overrideForm.score, overrideForm.reason, Import CSV, Nilai Baru, Alasan Override *; filter=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id, studentSearchQuery; sinyal validasi=min/max; aturan field=studentSearchQuery: type=search, field: type=file, score.score: min=0, max=100, type=number, overrideForm.score: min=0, max=100, type=number; Inferred from code — option/status/display-label candidates=Error, Sukses, Override Sukses, Override Dihapus, Export, Import perlu diperbaiki, Import Sukses Confirmed from code — handleExportCsv, handleImportCsv, handleRefreshScores, handleSaveAll, handleCellClick, handleClearOverride, closeOverrideModal, handleSaveOverride Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/batch-scores/template @ src/services/reportCard/reportCard.service.js:171 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:562; Confirmed from code — /api/v1/report-card/batch-scores/save @ src/services/reportCard/reportCard.service.js:181 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_workflow_api.py:331; Confirmed from code — /api/v1/report-card/teacher/refresh-scores @ src/services/reportCard/reportCardSync.service.js:12 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_teacher_score_api.py:11; Confirmed from code — /api/v1/report-card/teacher/override-score @ src/services/reportCard/reportCardSync.service.js:25 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_teacher_score_api.py:36; Confirmed from code — /api/v1/report-card/teacher/clear-override @ src/services/reportCard/reportCardSync.service.js:39 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_teacher_score_api.py:79 Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id, subject_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/batch-scores/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.grades (Penilaian) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal CP/TP /faculty/report-card/objectives src/views/ReportCardManagement/Faculty/CpTp/TeacherCpTpWorkspace.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman CP/TP pada /faculty/report-card/objectives; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id, form.achieved_tp_ids, form.needs_improvement_tp_ids, form.description; filter=filters.academic_year_id, filters.academic_term_id, filters.batch_id, filters.subject_id; aturan field=form.achieved_tp_ids: type=checkbox, form.needs_improvement_tp_ids: type=checkbox; Inferred from code — option/status/display-label candidates=Error, Tersimpan Confirmed from code — $router.push, selectStudent, saveEvaluation, ensureExclusive, generateDescription Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/learning/progress/save @ src/services/reportCard/cpTpTeacher.service.js:90 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:251; Confirmed from code — /api/v1/report-card/learning/outcomes @ src/services/reportCard/cpTpTeacher.service.js:45 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:94; Confirmed from code — /api/v1/report-card/learning/students-progress @ src/services/reportCard/cpTpTeacher.service.js:62 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:145; Confirmed from code — /api/v1/report-card/learning/subjects @ src/services/reportCard/cpTpTeacher.service.js:27 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_learning_api.py:60 Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id, subject_id, achieved_tp_ids, needs_improvement_tp_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/learning/progress/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/report-card/objective-builder P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Rapor P5 /faculty/report-card/p5 src/views/ReportCardManagement/Faculty/P5/TeacherP5Workspace.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Rapor P5 pada /faculty/report-card/p5; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.academic_term_id, filters.batch_id; kolom=Nama Projek, Tema; filter=filters.academic_year_id, filters.academic_term_id, filters.batch_id; Inferred from code — option/status/display-label candidates=Akses Terbatas, Error Confirmed from code — openGradingPage Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/p5/projects/:param/generate @ src/services/reportCard/p5Teacher.service.js:22 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_p5_teacher_api.py:173; Confirmed from code — /api/v1/report-card/p5/projects @ src/services/reportCard/p5Teacher.service.js:12 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_p5_teacher_api.py:153 Confirmed from code — sesi autentik; capability report_cards.records.manage; allowedRoles teacher, homeroom; feature flag scola_report_card; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field academic_year_id, academic_term_id, batch_id Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/report-card/p5/projects/:param/generate; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/report-card/p5/:projectId P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Tata Tertib & Peraturan /faculty/rules src/views/FacultyViews/Rules/RuleListWrapper.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Tata Tertib & Peraturan pada /faculty/rules; tujuan diringkas dari konten halaman Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Missing or unclear — tidak ada dependency API literal yang terdeteksi dari component closure Confirmed from code — sesi autentik; capability discipline.rules.view; allowedRoles teacher, homeroom; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu teacher.teaching (Pengajaran) P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Jadwal Mengajar /faculty/schedule src/views/ScheduleManagement/Faculty/Schedule.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Jadwal Mengajar pada /faculty/schedule; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedHomeroomBatchId, activeTab; filter=selectedHomeroomBatchId; Inferred from code — option/status/display-label candidates=Acara & Kegiatan, RSVP Diperbarui Confirmed from code — fetchWeekData Confirmed from code — /v1/lms/sessions/materials @ src/views/ScheduleManagement/Faculty/Schedule.vue:267 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_reference_api.py:294; Confirmed from code — /lms/calendar @ src/services/lms/calendar.service.js:28; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/v1/calendar/events @ src/services/calendar/calendarRsvp.service.js:39 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:156; Confirmed from code — /api/v1/calendar/events/:param/rsvp @ src/services/calendar/calendarRsvp.service.js:53 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/calendar_participation_api.py:208; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /faculty/homeroom/schedule P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Perizinan Siswa /faculty/student-permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Perizinan Siswa pada /faculty/student-permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles teacher, homeroom; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/student-permits, /counseling/student-permits, /parent/permits, /principal/students/permits, /student/permits, /vice-principal/student-affairs/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Timeline Siswa /faculty/student-timeline src/views/CounselingManagement/Timeline/StudentTimeline.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Timeline Siswa pada /faculty/student-timeline; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=studentSearch, selectedAcademicYear, selectedSemester, selectedStudent ? $t(; filter=studentSearch; sinyal validasi=min/max; aturan field=studentSearch: type=text; Inferred from code — option/status/display-label candidates=Prestasi, Pelanggaran, Konseling, Perizinan, Ekskul, Insiden Umum, Referral BK/Kesiswaan Confirmed from code — clearStudent, set activeFilter, selectStudent Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51; Confirmed from code — /api/v1/attendance/analytics/student-progress @ src/services/attendance/attendanceAnalytics.service.js:63 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_analytics_api.py:260; Confirmed from code — /api/v1/attendance/analytics/student-risk @ src/services/attendance/attendanceAnalytics.service.js:71 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_analytics_api.py:322 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/student-timeline, /vice-principal/student-affairs/student-timeline P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Daftar Siswa /faculty/students/select-class src/views/FacultyViews/Students/SelectClass.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Daftar Siswa pada /faculty/students/select-class; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=selectedClass; filter=selectedClass Confirmed from code — setBatch Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability students.homeroom.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Inferred from code — berada pada section menu teacher.homeroom (Wali Kelas) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Jurnal Mengajar /faculty/teaching-journal src/views/Reports/TeachingJournalReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Jurnal Mengajar pada /faculty/teaching-journal; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; filter=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; aturan field=filters.date_from: type=date, filters.date_to: type=date, filters.has_subject_daily: type=checkbox, filters.has_attachment: type=checkbox Confirmed from code — onSearch, onExport, onToday, onReset Confirmed from code — /lms/teaching-journals @ src/services/lms/teachingJournal.service.js:42; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/export.pdf @ src/services/lms/teachingJournal.service.js:61; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/filter-options @ src/services/lms/teachingJournal.service.js:85; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.teaching_journal.view; allowedRoles teacher, homeroom; feature flag scola_lms; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field semester_id, faculty_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/reports/teaching-journal, /principal/academics/teaching-journal, /vice-principal/curriculum/teaching-journal P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Pencatatan Pelanggaran /faculty/violations src/views/CounselingManagement/Pelanggaran/ListPelanggaran.vue:1 Confirmed from code — homeroom, teacher; guard route memakai allowedRoles Inferred from code — halaman Pencatatan Pelanggaran pada /faculty/violations; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, statusFilter, deleteDialog.show; kolom=Bentuk, Poin; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles homeroom, teacher; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations, /counseling/violations, /principal/students/violations, /vice-principal/student-affairs/violations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Laporan Mingguan Siswa /faculty/weekly-student-report src/views/FacultyViews/WeeklyStudentReport.vue:1 Confirmed from code — teacher, homeroom; guard route memakai allowedRoles Inferred from code — halaman Laporan Mingguan Siswa pada /faculty/weekly-student-report; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=selectedBatchId, anchorDate, plan.theme, lesson.subject_label, lesson.topic, student.narrative; filter=selectedBatchId, anchorDate; aturan field=field: type=number Confirmed from code — saveDraft, submitReports, openPublishAllDialog, onBatchChange, shiftWeek, downloadStudentPdf, openPublishDialog, confirmPublish Confirmed from code — /lms/teacher-reports/options @ src/services/lms/teacherReport.service.js:5; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /api/lms/teacher-reports/weekly/get @ src/services/lms/teacherReport.service.js:33 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:840; Confirmed from code — /api/lms/teacher-reports/weekly/save @ src/services/lms/teacherReport.service.js:42 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:888; Confirmed from code — /api/lms/teacher-reports/weekly/student/:param.pdf @ src/services/lms/teacherReport.service.js:114 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1331 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles teacher, homeroom; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/teacher-reports/weekly/save; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /faculty/homeroom/weekly-student-report P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
teacher-portal Analitik Kelas /teacher/analytics/class src/views/AnalyticsManagement/Faculty/ClassAnalytics.vue:1 Inferred from code — teacher, foundation_chairman, homeroom; diturunkan dari pola capability frontend untuk analytics.classroom.view; izin sesi backend dapat berbeda Inferred from code — halaman Analitik Kelas pada /teacher/analytics/class; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=periodFilter, selectedBatchId, statusFilter, searchQuery; filter=periodFilter, selectedBatchId, statusFilter, searchQuery; aturan field=searchQuery: type=text Confirmed from code — handlePeriodChange, handleBatchChange, filterByStatus, openStudentProfile Confirmed from code — /api/v1/teacher/faculty-batches @ src/services/faculty/facultySelf.service.js:9 -> ../custom_addons_scola/gcgscola/scola_portal/controllers/faculty_self_api.py:51 Confirmed from code — sesi autentik; capability analytics.classroom.view; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /teacher/analytics/class/:id P2 — daftar/detail berbasis data Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

teacher-portal / extracurricular-coach (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal / extracurricular-coach Ekstrakurikuler / Daftar Ekskul / Absensi Ekskul /faculty/extracurricular src/views/CounselingManagement/Extracurricular/ExtracurricularList.vue:1 Confirmed from code — teacher, homeroom, extracurricular_coach; guard route memakai allowedRoles Inferred from code — halaman Ekstrakurikuler / Daftar Ekskul / Absensi Ekskul pada /faculty/extracurricular; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua jenis, Ekskul, Les, Pramuka, Olahraga, Seni & Budaya, Akademik, Keagamaan, Kepemimpinan, Sosial, +1 lainnya Confirmed from code — router.push, set selectedActivityKind, set selectedCategory, loadData, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, +8 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles teacher, homeroom, extracurricular_coach; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/extracurriculars P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

teacher-portal / principal-exec / communication (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal / principal-exec / communication Pengumuman Kelas / Kelola Berita /admin/news src/components/news/NewsList.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; guard route memakai allowedRoles Inferred from code — halaman Pengumuman Kelas / Kelola Berita pada /admin/news; tujuan diringkas dari 2 form, aksi interaktif Confirmed from code — form=2; field=selectedType, selectedState, selectedPriority, deleteDialog.show, rejectDialog.notes, createCategoryDialog.name, Mis. Perlu perbaikan ejaan / lampiran belum lengkap, Mis. Pengumuman, Akademik, Kegiatan; sinyal validasi=required; aturan field=rejectDialog.notes: required, createCategoryDialog.name: required; Inferred from code — option/status/display-label candidates=Draft, Diajukan, Disetujui, Ditolak, Normal, Penting, Kritis, Info Sekolah, Tayang Confirmed from code — loadNews, openCreateCategoryModal, goToCreate, filterSubmittedQueue, clearStateFilter, resetFilters, loadData, goToDetail, runNewsAction, openRejectDialog, goToEdit, openDeleteDialog, handleDeleteNews, handleRejectNews, +1 lainnya Confirmed from code — /api/manage/news/:param/transition @ src/services/news/newsService.js:764 -> ../custom_addons_scola/gcgscola/scola_news/controllers/news_manage_api.py:172 Confirmed from code — sesi autentik; capability communication.news.manage; allowedRoles admin, school_admin, principal, vice_principal_public_relations, vice_principal_student_affairs, vice_principal_curriculum, vice_principal_infrastructure, vice_principal_finance, head_admin, admin_staff; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/news/create, /admin/news/:id, /admin/news/:id/edit P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

teacher-portal / principal-exec / lab-technician / +9 lainnya (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal / principal-exec / lab-technician / +9 lainnya Slip Gaji /faculty/employee/payslip src/views/FacultyViews/Payroll/PayslipList.vue:1 Confirmed from code — teacher, homeroom, lab_technician, principal, foundation, foundation_chairman, treasurer, admin_staff, counselor, inventory_officer, librarian; guard route memakai allowedRoles Inferred from code — halaman Slip Gaji pada /faculty/employee/payslip; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery; filter=searchQuery; aturan field=searchQuery: type=text Confirmed from code — goToDetail Confirmed from code — /api/payroll/my/payslips @ src/services/hr/employeePayrollSelf.service.js:12 -> ../custom_addons_scola/gcgscola/scola_payroll/controllers/payroll_api.py:274 Confirmed from code — sesi autentik; capability hr.payslip.view; allowedRoles teacher, homeroom, lab_technician, principal, foundation, foundation_chairman, treasurer, admin_staff, counselor, inventory_officer, librarian; feature flag scola_payroll; Inferred from code — data prerequisite: employee/company dan contract/periode yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /counseling/employee/payslip, /librarian/employee/payslip P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

teacher-portal / student-portal / parent-portal / +1 lainnya (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal / student-portal / parent-portal / +1 lainnya Kalender /calendar src/views/AdminViews/Calendar/CalendarView.vue:1 Confirmed from code — admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_public_relations, head_admin, admin_staff, teacher, homeroom, counselor, student, parent; guard route memakai allowedRoles Inferred from code — halaman Kalender pada /calendar; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=sourceFilter, eventTypeFilter; filter=sourceFilter, eventTypeFilter Confirmed from code — Tutup, Buka halaman terkait, goToday, navigateToPreviousMonth, navigateToNextMonth, newEvent, navigateToEventDetail, closeDayPanel, openEvent, quickAddForDate, onDayClick, closeEventDetail, goEventDeepLink Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useLeadershipUnitFilter.js, src/composables/useSchoolCalendarFeed.js, src/services/admin/academics/academicCalendar.service.js, +12 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; allowedRoles admin, school_admin, principal, vice_principal_curriculum, vice_principal_student_affairs, vice_principal_public_relations, head_admin, admin_staff, teacher, homeroom, counselor, student, parent; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /calendar/newevent P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

teacher-portal / student-portal / parent-portal / +2 lainnya (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal / student-portal / parent-portal / +2 lainnya Log Baca (GLS) /library/reading-log src/views/Library/ReadingLog.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.reading_log.view; izin sesi backend dapat berbeda Inferred from code — halaman Log Baca (GLS) pada /library/reading-log; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=formData.book_title, formData.author, formData.start_date, formData.end_date, formData.pages_read, formData.review; filter=formData.start_date, formData.end_date; sinyal validasi=min/max; aturan field=formData.book_title: type=text, formData.author: type=text, formData.start_date: type=date, formData.end_date: type=date, formData.pages_read: min=0, type=number Confirmed from code — set isFormVisible, setRating, submitLog, resetForm, deleteLog Confirmed from code — /api/v1/library/reading-logs/create @ src/services/library/library.service.js:587 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:520; Confirmed from code — /api/v1/library/reading-logs/delete @ src/services/library/library.service.js:592 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_reading_api.py:12; Confirmed from code — /api/v1/library/reading-logs/list @ src/services/library/library.service.js:582 -> ../custom_addons_scola/gcgscola/scola_library/controllers/library_portal_loans_api.py:494 Confirmed from code — sesi autentik; capability library.reading_log.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/library/reading-logs/create, /api/v1/library/reading-logs/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu teacher.library (Perpustakaan), student.library (Perpustakaan), parent.library (Perpustakaan), principal.library (Perpustakaan), library.portal (Layanan Mandiri) P0 — aksi sensitif/workflow Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

teacher-portal / student-portal / principal-exec / +1 lainnya (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
teacher-portal / student-portal / principal-exec / +1 lainnya Beranda Perpustakaan /library/home src/views/Library/HomeLibrary.vue:1 Inferred from code — admin, school_admin, teacher, student, parent, principal, counselor, librarian, homeroom, alumni; diturunkan dari pola capability frontend untuk library.catalog.view; izin sesi backend dapat berbeda Inferred from code — halaman Beranda Perpustakaan pada /library/home; tujuan diringkas dari aksi interaktif Missing or unclear — tidak ada form/field/tabel/filter statis yang terdeteksi; UI dapat berasal dari komponen dinamis Confirmed from code — navigateTo Missing or unclear — service closure terdeteksi (src/composables/useLibraryRouteBase.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability library.catalog.view; feature flag scola_library; Inferred from code — data prerequisite: member, catalog/copy dan circulation policy terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /parent/library/home P3 — halaman sederhana/statis Inferred from code — route dan component terkonfirmasi; daftar role dihitung dari fallback capability frontend

vp-curriculum (9 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
vp-curriculum Dashboard /vice-principal/curriculum src/views/AdminViews/WakasekDashboard.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /vice-principal/curriculum; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Kelola kurikulum, jadwal pelajaran, dan evaluasi akademik., Semester Ganjil 2025/2026, Total Mapel, Kehadiran (bln ini), Mata Pelajaran, Evaluasi, Perangkat Ajar, Review RPP Matematika, Kelola kesiswaan, ekstrakurikuler, dan tata tertib., Tahun Ajaran 2025/2026, +21 lainnya Confirmed from code — Buka Inbox, item.action, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useLeadershipUnitFilter.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.overview.view; allowedRoles vice_principal_curriculum; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/student-affairs/extracurricular/pending, /vice-principal/curriculum/subjects, /vice-principal/curriculum/schedule, /vice-principal/curriculum, /principal/academics/exam-results, /vice-principal/curriculum/rpp, /vice-principal/student-affairs/students, /vice-principal/student-affairs/extracurricular, /vice-principal/student-affairs/violations, /counseling/violations/warning-letters, /vice-principal/student-affairs/attendance, /vice-principal/student-affairs/referrals, /vice-principal/student-affairs/achievements, /vice-principal/infrastructure/stock, /vice-principal/infrastructure/inventory, /vice-principal/infrastructure/maintenance, /vice-principal/infrastructure/requests, /vice-principal/public-relations/news, /vice-principal/public-relations/events, /vice-principal/public-relations, +2 lainnya P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Review Kenaikan /vice-principal/curriculum/promotion src/views/AdminViews/Promotion/StudentPromotionList.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Review Kenaikan pada /vice-principal/curriculum/promotion; tujuan diringkas dari 3 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=3; field=action, decision, nextBatchId, retentionReason, form.homeroom_notes, form.decision, form.next_batch_id, form.retention_reason, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, +7 lainnya; kolom=Rata-rata, Rekomendasi, Keputusan; filter=nextBatchId, form.next_batch_id, filters.academic_year_id, filters.batch_id, filters.state, filters.decision, generateForm.batch_id; sinyal validasi=required; aturan field=action: required, decision: required, nextBatchId: required, form.retention_reason: required, generateForm.academic_year_id: required, generateForm.batch_id: required; Inferred from code — option/status/display-label candidates=Sukses, Error, Perlu Review, Data Dilewati Confirmed from code — handleSubmit, set form.homeroom_recommendation, set showGenerateModal, openBulkModal, openDetailModal, openEditModal, handleGenerate Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174 Confirmed from code — sesi autentik; capability academics.promotion.view; allowedRoles vice_principal_curriculum; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field next_batch_id, academic_year_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/promotion, /faculty/homeroom/promotion, /principal/academics/promotion P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Kebijakan Kenaikan /vice-principal/curriculum/promotion-policy src/views/AnalyticsManagement/Strategic/PromotionPolicyDashboard.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Kebijakan Kenaikan pada /vice-principal/curriculum/promotion-policy; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academicYearId, Tahun Ajaran; kolom=Bucket Kehadiran, Promotion Rate, Publish Completeness, Tahun Ajaran, Total Siswa, Retention Rate, Graduation Rate, Rombel, Promoted, Retained, +2 lainnya; filter=filters.academicYearId Confirmed from code — refreshDashboard, exportXlsx, exportPdf Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAlerts.js, src/composables/useAppVersionCheck.js, src/services/admin/academics/promotionPolicyDashboard.service.js, src/services/auth/auth.service.js, +1 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.promotion.view; allowedRoles vice_principal_curriculum; feature flag scola_foundation_analytics; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /foundation/academic/promotion-policy, /principal/analytics/promotion-policy P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Quality Gate /vice-principal/curriculum/quality-gate src/views/ReportCardManagement/VicePrincipal/CurriculumQualityGate.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Quality Gate pada /vice-principal/curriculum/quality-gate; tujuan diringkas dari tabel/kolom data, filter/pencarian Confirmed from code — field=filters.academic_year_id, filters.academic_term_id; kolom=Coverage, Review Queue, Rejected, Blockers, ACL, Stuck; filter=filters.academic_year_id, filters.academic_term_id; Inferred from code — option/status/display-label candidates=Published rate minimal 90%, Queue/failure Dapodik kosong, Error Missing or unclear — tidak ada tombol/handler utama yang dapat diekstrak secara statis Confirmed from code — /api/v1/report-card/filters @ src/services/reportCard/reportCard.service.js:15 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:209; Confirmed from code — /api/v1/report-card/quality-gate @ src/services/reportCard/reportCardQualityGate.service.js:10 -> ../custom_addons_scola/gcgscola/scola_report_card/controllers/report_card_read_api.py:715 Confirmed from code — sesi autentik; capability report_cards.list.view; allowedRoles vice_principal_curriculum; feature flag scola_report_card; Inferred from code — data prerequisite: referenced records dari field academic_year_id, academic_term_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu vp_curriculum.review (Review & Keputusan) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Perangkat Ajar /vice-principal/curriculum/rpp src/views/AdminViews/WakasekDashboard.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Perangkat Ajar pada /vice-principal/curriculum/rpp; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Kelola kurikulum, jadwal pelajaran, dan evaluasi akademik., Semester Ganjil 2025/2026, Total Mapel, Kehadiran (bln ini), Mata Pelajaran, Evaluasi, Perangkat Ajar, Review RPP Matematika, Kelola kesiswaan, ekstrakurikuler, dan tata tertib., Tahun Ajaran 2025/2026, +21 lainnya Confirmed from code — Buka Inbox, item.action, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useLeadershipUnitFilter.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability academics.lesson_plan.view; allowedRoles vice_principal_curriculum; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/student-affairs/extracurricular/pending, /vice-principal/curriculum/subjects, /vice-principal/curriculum/schedule, /vice-principal/curriculum, /principal/academics/exam-results, /vice-principal/curriculum/rpp, /vice-principal/student-affairs/students, /vice-principal/student-affairs/extracurricular, /vice-principal/student-affairs/violations, /counseling/violations/warning-letters, /vice-principal/student-affairs/attendance, /vice-principal/student-affairs/referrals, /vice-principal/student-affairs/achievements, /vice-principal/infrastructure/stock, /vice-principal/infrastructure/inventory, /vice-principal/infrastructure/maintenance, /vice-principal/infrastructure/requests, /vice-principal/public-relations/news, /vice-principal/public-relations/events, /vice-principal/public-relations, +2 lainnya P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Jadwal Pelajaran /vice-principal/curriculum/schedule src/views/AdminViews/AcademicConfig/Session/SessionList.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Jadwal Pelajaran pada /vice-principal/curriculum/schedule; tujuan diringkas dari 2 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=2; field=form.course_id, form.start_date, form.end_date, form.hours_per_subject, searchQueries.batch, searchQueries.subject, searchQueries.faculty, searchQueries.classroom, searchQueries.scheduleStart, searchQueries.scheduleEnd, form.date, form.combined_across_batches, +19 lainnya; kolom=Tanggal & Waktu, Mata Pelajaran, Rombel, Ruangan; filter=form.course_id, form.start_date, form.end_date, searchQueries.batch, searchQueries.subject, searchQueries.faculty, searchQueries.classroom, searchQueries.scheduleStart, +6 lainnya; sinyal validasi=required, min/max; aturan field=form.start_date: type=date, form.end_date: type=date, form.hours_per_subject: min=1, max=10, type=number, searchQueries.batch: required, type=text, searchQueries.subject: required, type=text, searchQueries.faculty: required, type=text, searchQueries.classroom: type=text, searchQueries.scheduleStart: type=text, searchQueries.scheduleEnd: type=text, form.date: required, type=date, +6 lainnya; Inferred from code — option/status/display-label candidates=Akses Ditolak, Error, Success, (Kosongkan), Mata pelajaran, Validasi, Fetch Failed Confirmed from code — Tambah Sesi di, doGenerate, handleSubmit, selectBatch, selectSubject, selectFaculty, selectClassroom, selectScheduleStart, selectScheduleEnd, set selectedDay, removeLine, addLine, set showAutoGenerate, openCreateModal, +6 lainnya Confirmed from code — /api/v1/academic/options @ src/services/admin/academics/academicMaster.service.js:228 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:2174; Confirmed from code — /api/v1/academic/lesson-hours/list @ src/services/admin/academics/academicMaster.service.js:177 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:1947 Confirmed from code — sesi autentik; capability academics.schedule.view; allowedRoles vice_principal_curriculum; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field course_id, batch_ids, lesson_schedule_start_id, lesson_schedule_end_id, subject_id, faculty_id, +1 lainnya Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/academics/schedule, /schedule P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Mata Pelajaran /vice-principal/curriculum/subjects src/views/AdminViews/AcademicConfig/Subject/SubjectList.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Mata Pelajaran pada /vice-principal/curriculum/subjects; tujuan diringkas dari 3 form, tabel/kolom data, aksi interaktif Confirmed from code — form=3; field=selectedSubjects, form.name, form.code, form.type, form.subject_type, form.grade_weightage, Nama Mata Pelajaran, Contoh: Matematika, Kode Mata Pelajaran, Contoh: MAT, 0.0, Tipe *, +1 lainnya; kolom=Nama Mata Pelajaran, Jenis; sinyal validasi=required, min/max, custom validate; aturan field=form.name: required, form.code: required, form.grade_weightage: min=0, max=100, type=number; Inferred from code — option/status/display-label candidates=Akses Ditolak, Error, Sukses Confirmed from code — openAddModal, openDetailModal, openEditModal, confirmDelete, handleSubmit, closeDetailModal, handleDelete Confirmed from code — /api/v1/academic/subjects/save @ src/services/admin/academics/academicMaster.service.js:70 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:399; Confirmed from code — /api/v1/academic/subjects/list @ src/services/admin/academics/academicMaster.service.js:65 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:385; Confirmed from code — /api/v1/academic/subjects/delete @ src/services/admin/academics/academicMaster.service.js:78 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:417; Confirmed from code — /api/v1/academic/subjects/dependency-count @ src/services/admin/academics/academicMaster.service.js:85 -> ../custom_addons_scola/gcgscola/scola_core/controllers/academic_master_api.py:434 Confirmed from code — sesi autentik; capability academics.subject.view; allowedRoles vice_principal_curriculum; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/academic/subjects/save, /api/v1/academic/subjects/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /subjects P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Jurnal Mengajar /vice-principal/curriculum/teaching-journal src/views/Reports/TeachingJournalReport.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Jurnal Mengajar pada /vice-principal/curriculum/teaching-journal; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; filter=filters.semester_id, filters.date_from, filters.date_to, filters.faculty_id, filters.education_level, filters.batch_id, filters.has_subject_daily, filters.has_attachment; aturan field=filters.date_from: type=date, filters.date_to: type=date, filters.has_subject_daily: type=checkbox, filters.has_attachment: type=checkbox Confirmed from code — onSearch, onExport, onToday, onReset Confirmed from code — /lms/teaching-journals @ src/services/lms/teachingJournal.service.js:42; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/export.pdf @ src/services/lms/teachingJournal.service.js:61; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /lms/teaching-journals/filter-options @ src/services/lms/teachingJournal.service.js:85; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability academics.teaching_journal.view; allowedRoles vice_principal_curriculum; feature flag scola_lms; Inferred from code — data prerequisite: company, journal/COA, partner, product/tax atau transaction record terkait; referenced records dari field semester_id, faculty_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/reports/teaching-journal, /faculty/teaching-journal, /principal/academics/teaching-journal P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-curriculum Approval Laporan Mingguan /vice-principal/curriculum/weekly-report-approval src/views/FacultyViews/WeeklyReportApproval.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Approval Laporan Mingguan pada /vice-principal/curriculum/weekly-report-approval; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.companyId, filters.batchId, filters.dateFrom, filters.dateTo, rejectionReason; filter=filters.companyId, filters.batchId, filters.dateFrom, filters.dateTo; sinyal validasi=required; aturan field=filters.dateFrom: type=date, filters.dateTo: type=date, rejectionReason: required Confirmed from code — loadReports, approve, openReject, closeReject, reject Confirmed from code — /api/lms/teacher-reports/weekly/approve @ src/services/lms/teacherReport.service.js:60 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_weekly_approval_api.py:161; Confirmed from code — /api/lms/teacher-reports/weekly/pending-list @ src/services/lms/teacherReport.service.js:52 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_weekly_approval_api.py:123; Confirmed from code — /api/lms/teacher-reports/weekly/reject @ src/services/lms/teacherReport.service.js:68 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_weekly_approval_api.py:195 Confirmed from code — sesi autentik; capability academics.teacher_reports.approve; allowedRoles vice_principal_curriculum; feature flag scola_lms; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Inferred from code — memanggil endpoint berbentuk mutasi /api/lms/teacher-reports/weekly/approve, /api/lms/teacher-reports/weekly/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Inferred from code — berada pada section menu vp_curriculum.review (Review & Keputusan) P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

vp-curriculum / academic (1 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
vp-curriculum / academic Laporan Harian Kelas TK /vice-principal/curriculum/class-daily-report src/views/Principal/PrincipalClassDailyReport.vue:1 Confirmed from code — vice_principal_curriculum; guard route memakai allowedRoles Inferred from code — halaman Laporan Harian Kelas TK pada /vice-principal/curriculum/class-daily-report; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=filters.date_from, filters.date_to; filter=filters.date_from, filters.date_to; aturan field=filters.date_from: type=date, filters.date_to: type=date Confirmed from code — loadList, set selectedClass, openPdf, openDetail, set detail Confirmed from code — /api/lms/teacher-reports/class-daily/list @ src/services/lms/teacherReport.service.js:28 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:672; Confirmed from code — /api/lms/teacher-reports/class-daily/get @ src/services/lms/teacherReport.service.js:10 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:507; Confirmed from code — /api/lms/teacher-reports/class-daily/:param.pdf @ src/services/lms/teacherReport.service.js:110 -> ../custom_addons_scola/gcgscola/scola_lms/controllers/lms_teacher_report_api.py:1262 Confirmed from code — sesi autentik; capability academics.teaching_journal.view; allowedRoles vice_principal_curriculum; feature flag scola_lms; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/academics/class-daily-report P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

vp-finance (4 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
vp-finance Dashboard /vice-principal/finance src/views/AdminViews/AcademicConfig/Fees/FeeDashboard.vue:1 Confirmed from code — vice_principal_finance; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /vice-principal/finance; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.course_id, filters.batch_id, filters.period, exportType, Jenjang, Periode, Ringkasan Dashboard, Aging Piutang; kolom=Jumlah Invoice, Total Tunggakan, Terlama Overdue, Total Dibayar, Total Piutang, Collection Rate, No. Invoice; filter=filters.course_id, filters.batch_id, filters.period, Jenjang, Periode; sinyal validasi=min/max; aturan field=exportType: type=radio; Inferred from code — option/status/display-label candidates=0-30 hari, 31-60 hari, 61-90 hari, >90 hari Confirmed from code — set showFilterModal, exportReport, toggleStatVisibility, goToSchedules, viewStudentDetail, resetFilters, applyFilters, doExport Confirmed from code — /api/v1/finance/spp/by-class @ src/services/finance/sppReport.service.js:124 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_spp_report_api.py:177 Confirmed from code — sesi autentik; capability finance.overview.view; allowedRoles vice_principal_finance; Inferred from code — data prerequisite: referenced records dari field course_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /payment/schedule, /faculty/homeroom/spp-by-class, /payment/spp-by-class, /vice-principal/finance/spp-by-class P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-finance Ringkasan Keuangan /vice-principal/finance/reports src/views/Principal/PrincipalFinanceReports.vue:1 Confirmed from code — vice_principal_finance; guard route memakai allowedRoles Inferred from code — halaman Ringkasan Keuangan pada /vice-principal/finance/reports; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.period, filters.fiscalYear, Periode, Tahun Fiskal; kolom=Bulan, Pemasukan, Pengeluaran, Surplus/Defisit; filter=filters.period, filters.fiscalYear, Periode; Inferred from code — option/status/display-label candidates=Bulanan, Triwulanan, Tahunan, Pemasukan Periode, Pengeluaran Periode, Surplus / Defisit, Kas & Bank, Realisasi Anggaran, Neraca Confirmed from code — loadSnapshot Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/admin/accountingAdmin.service.js, src/services/common/jsonRpc.js, src/services/dashboard/dashboard.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability finance.reports.view; allowedRoles vice_principal_finance; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/finance/reports P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-finance SPP per Kelas /vice-principal/finance/spp-by-class src/views/AdminViews/AcademicConfig/Fees/FeeDashboard.vue:1 Confirmed from code — vice_principal_finance; guard route memakai allowedRoles Inferred from code — halaman SPP per Kelas pada /vice-principal/finance/spp-by-class; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.course_id, filters.batch_id, filters.period, exportType, Jenjang, Periode, Ringkasan Dashboard, Aging Piutang; kolom=Jumlah Invoice, Total Tunggakan, Terlama Overdue, Total Dibayar, Total Piutang, Collection Rate, No. Invoice; filter=filters.course_id, filters.batch_id, filters.period, Jenjang, Periode; sinyal validasi=min/max; aturan field=exportType: type=radio; Inferred from code — option/status/display-label candidates=0-30 hari, 31-60 hari, 61-90 hari, >90 hari Confirmed from code — set showFilterModal, exportReport, toggleStatVisibility, goToSchedules, viewStudentDetail, resetFilters, applyFilters, doExport Confirmed from code — /api/v1/finance/spp/by-class @ src/services/finance/sppReport.service.js:124 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_spp_report_api.py:177 Confirmed from code — sesi autentik; capability finance.spp_by_class.view; allowedRoles vice_principal_finance; Inferred from code — data prerequisite: referenced records dari field course_id, batch_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /payment/schedule, /faculty/homeroom/spp-by-class, /payment/spp-by-class, /vice-principal/finance P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-finance Tagihan SPP /vice-principal/finance/tuition src/views/AdminViews/AcademicConfig/Fees/Schedule/FeeScheduleList.vue:1 Confirmed from code — vice_principal_finance; guard route memakai allowedRoles Inferred from code — halaman Tagihan SPP pada /vice-principal/finance/tuition; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=filters.state, filters.period, filters.template_id, generateForm.template_id, generateForm.month, generateForm.year, generateForm.skip_existing, generateForm.auto_invoice, generateForm.filter_type, generateForm.course_id, generateForm.batch_id, generateForm.student_ids, +1 lainnya; filter=filters.state, filters.period, filters.template_id, generateForm.filter_type, generateForm.course_id, generateForm.batch_id, filter_type; sinyal validasi=required; aturan field=generateForm.template_id: required, generateForm.month: required, generateForm.year: required; Inferred from code — option/status/display-label candidates=Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, +4 lainnya Confirmed from code — openGenerateModal, set showMobileFilters, resetFilters, openDetailModal, markAsGenerated, createInvoice, viewInvoice, resetToDraft, confirmDelete, closeDetailModal, handleGenerate, closeGenerateModal, deleteSchedule Confirmed from code — /api/v1/finance/fee-schedules/stats @ src/services/finance/feeSchedule.service.js:9 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:296; Confirmed from code — /api/v1/finance/fee-schedules/generate @ src/services/finance/feeSchedule.service.js:19 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:346; Confirmed from code — /api/v1/finance/fee-schedules/list @ src/services/finance/feeSchedule.service.js:4 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:274; Confirmed from code — /api/v1/finance/fee-templates/options @ src/services/finance/feeSchedule.service.js:32 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:426; Confirmed from code — /api/v1/finance/fee-schedules/generate-preview @ src/services/finance/feeSchedule.service.js:14 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:325; Confirmed from code — /api/v1/finance/fee-options @ src/services/finance/feeSchedule.service.js:37 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/finance_fee_api.py:488; Confirmed from code — /api/v1/finance/fee-schedule/create-invoice @ src/services/finance/parentBilling.service.js:183 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/bendahara_dashboard_api.py:191 Confirmed from code — sesi autentik; capability finance.billing.view; allowedRoles vice_principal_finance; feature flag scola_fees; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai; referenced records dari field template_id, course_id, batch_id, student_ids Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/finance/fee-schedules/generate, /api/v1/finance/fee-schedules/generate-preview, /api/v1/finance/fee-schedule/create-invoice; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /accounting/customer-invoices/:id, /admin-staff/finance/billing, /payment/schedule P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

vp-infrastructure (8 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
vp-infrastructure Dashboard /vice-principal/infrastructure src/views/AdminViews/WakasekDashboard.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /vice-principal/infrastructure; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Kelola kurikulum, jadwal pelajaran, dan evaluasi akademik., Semester Ganjil 2025/2026, Total Mapel, Kehadiran (bln ini), Mata Pelajaran, Evaluasi, Perangkat Ajar, Review RPP Matematika, Kelola kesiswaan, ekstrakurikuler, dan tata tertib., Tahun Ajaran 2025/2026, +21 lainnya Confirmed from code — Buka Inbox, item.action, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useLeadershipUnitFilter.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability dashboard.operations.view; allowedRoles vice_principal_infrastructure; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/student-affairs/extracurricular/pending, /vice-principal/curriculum/subjects, /vice-principal/curriculum/schedule, /vice-principal/curriculum, /principal/academics/exam-results, /vice-principal/curriculum/rpp, /vice-principal/student-affairs/students, /vice-principal/student-affairs/extracurricular, /vice-principal/student-affairs/violations, /counseling/violations/warning-letters, /vice-principal/student-affairs/attendance, /vice-principal/student-affairs/referrals, /vice-principal/student-affairs/achievements, /vice-principal/infrastructure/stock, /vice-principal/infrastructure/inventory, /vice-principal/infrastructure/maintenance, /vice-principal/infrastructure/requests, /vice-principal/public-relations/news, /vice-principal/public-relations/events, /vice-principal/public-relations, +1 lainnya P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Persetujuan /vice-principal/infrastructure/approvals src/views/Principal/PrincipalInventoryApprovals.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Persetujuan pada /vice-principal/infrastructure/approvals; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, rejectReason, Alasan Penolakan, Tuliskan alasan penolakan...; kolom=Permintaan, Diajukan Oleh, Tgl Dibutuhkan; filter=searchQuery; sinyal validasi=required; aturan field=searchQuery: type=search, rejectReason: required; Inferred from code — option/status/display-label candidates=Menunggu Persetujuan, Disetujui, Ditolak Confirmed from code — handleApprove, openRejectModal, goToDetail, set showRejectModal, handleReject Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274; Confirmed from code — /api/v1/inventory/requests/action @ src/services/admin/inventory.service.js:217 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:381 Confirmed from code — sesi autentik; capability inventory.requests.approve; allowedRoles vice_principal_infrastructure; feature flag scola_bos_rkas; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/approvals/inventory P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Disposal Aset /vice-principal/infrastructure/asset-disposal src/views/AdminViews/Inventory/AssetDisposal.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Disposal Aset pada /vice-principal/infrastructure/asset-disposal; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, disposalForm.asset_id, disposalForm.disposal_reason, disposalForm.description, disposalForm.recommended_action, disposalForm.estimated_disposal_date, Aset, Alasan Penghapusan, Jelaskan kondisi aset dan alasan penghapusan secara detail..., Perkiraan Tanggal Penghapusan; kolom=Nama Aset, Alasan, Tanggal Usulan; filter=disposalForm.estimated_disposal_date; sinyal validasi=required, min/max; aturan field=disposalForm.asset_id: required, disposalForm.disposal_reason: required, disposalForm.description: required, disposalForm.recommended_action: required, disposalForm.estimated_disposal_date: type=date; Inferred from code — option/status/display-label candidates=Rusak Berat, Hilang, Masa Manfaat Habis, Dimusnahkan, Dihibahkan, Dijual, Didaur Ulang, Menunggu Persetujuan, Disetujui, Ditolak, +3 lainnya Confirmed from code — openCreateModal, viewDetail, editDisposal, approveDisposal, rejectDisposal, saveDisposal, onAssetSelect, removePhoto, viewFullImage, downloadBA, set showDetailModal Confirmed from code — /inventory/disposals @ src/views/AdminViews/Inventory/AssetDisposal.vue:466; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /inventory/assets @ src/views/AdminViews/Inventory/AssetDisposal.vue:483; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Missing or unclear — /inventory/disposals/:param @ src/views/AdminViews/Inventory/AssetDisposal.vue:601; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis; Confirmed from code — /inventory/disposals/:param/approve @ src/views/AdminViews/Inventory/AssetDisposal.vue:644; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve; Confirmed from code — /inventory/disposals/:param/reject @ src/views/AdminViews/Inventory/AssetDisposal.vue:665; literal frontend terdeteksi / Missing or unclear — controller backend tidak ter-resolve Confirmed from code — sesi autentik; capability assets.disposal.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait; referenced records dari field asset_id Inferred from code — memanggil endpoint berbentuk mutasi /inventory/disposals/:param, /inventory/disposals/:param/approve, /inventory/disposals/:param/reject; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets/disposal P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Data Aset /vice-principal/infrastructure/assets src/views/AdminViews/Inventory/AssetList.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Data Aset pada /vice-principal/infrastructure/assets; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, selectedLocation, Lokasi; kolom=Nama Aset, Lokasi, Kondisi; filter=searchQuery; Inferred from code — option/status/display-label candidates=Error Confirmed from code — goToCreate, handleSearch, goToDetail, goToEdit, handleDelete Confirmed from code — /api/v1/inventory/assets/list @ src/services/admin/asset.service.js:15 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1036; Confirmed from code — /api/v1/inventory/assets/delete @ src/services/admin/asset.service.js:77 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1079; Confirmed from code — /api/v1/inventory/assets/categories/list @ src/services/admin/asset.service.js:87 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1088; Confirmed from code — /api/v1/inventory/assets/locations/list @ src/services/admin/asset.service.js:109 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:1111 Confirmed from code — sesi autentik; capability assets.register.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/assets/delete; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/assets/create, /inventory/assets, /principal/inventory/assets P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Buku Induk /vice-principal/infrastructure/inventory src/views/AdminViews/Inventory/InventoryRegister.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Buku Induk pada /vice-principal/infrastructure/inventory; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, filters.warehouseId, filters.locationId; kolom=Produk, Lokasi, Qty, Reserved, Available, Satuan; filter=searchQuery, filters.warehouseId, filters.locationId; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchRegister Confirmed from code — /api/v1/inventory/reports/register @ src/services/admin/inventory.service.js:439 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:572; Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/locations/list @ src/services/admin/inventory.service.js:270 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:412 Confirmed from code — sesi autentik; capability inventory.overview.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/inventory/reports/register; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /inventory/register P1 — mutasi data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Pemeliharaan /vice-principal/infrastructure/maintenance src/views/AdminViews/Infrastructure/Maintenance.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Pemeliharaan pada /vice-principal/infrastructure/maintenance; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=activeTab, searchQuery, statusFilter, maintenanceType; kolom=Aset/Ruangan, Jenis Perbaikan, PIC, Biaya, Aset, Interval, Inspeksi Terakhir, Work Order, Prioritas; filter=searchQuery, statusFilter; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Histori Perbaikan, Error, Terlambat, Segera Jatuh Tempo, Perlu Inspeksi Awal, Terjadwal, Corrective, Preventive Confirmed from code — fetchHistory, openDetail, fetchSchedules, createWorkOrder, fetchWorkOrders Missing or unclear — service closure terdeteksi (src/composables/useAlerts.js, src/services/admin/asset.service.js, src/services/admin/inventoryAssetApi.js, src/services/admin/inventoryMaintenance.service.js, src/services/common/jsonRpc.js), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability maintenance.overview.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Inferred from code — berada pada section menu vp_inf.approval_maintenance (Approval & Maintenance) P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Permintaan Barang /vice-principal/infrastructure/requests src/views/AdminViews/Inventory/RequestList.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Permintaan Barang pada /vice-principal/infrastructure/requests; tujuan diringkas dari 1 form, tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=activeTab, searchQuery, filters.warehouseId, filters.dateFrom, filters.dateTo, Tanggal Mulai, Tanggal Akhir; kolom=No. Permintaan, Lokasi, Referensi, Anggaran, Dibuat Oleh; filter=searchQuery, filters.warehouseId, filters.dateFrom, filters.dateTo; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Draft, Submitted, Approved, Done, Cancelled, Error Confirmed from code — set showFilterModal, goToCreate, goToDetail, goToEdit, applyFilters Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/requests/list @ src/services/admin/inventory.service.js:91 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:274 Confirmed from code — sesi autentik; capability inventory.requests.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/request/create, /inventory/requests P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-infrastructure Stok Barang /vice-principal/infrastructure/stock src/views/AdminViews/Inventory/StockList.vue:1 Confirmed from code — vice_principal_infrastructure; guard route memakai allowedRoles Inferred from code — halaman Stok Barang pada /vice-principal/infrastructure/stock; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=selectedWarehouse, searchQuery; kolom=Nama Barang, Qty Tersedia, Qty Dipesan, Total Qty, Satuan; filter=searchQuery; aturan field=searchQuery: type=search; Inferred from code — option/status/display-label candidates=Error Confirmed from code — fetchStock, showProductDetail, set showDetailModal Confirmed from code — /api/v1/inventory/warehouses/list @ src/services/admin/inventory.service.js:32 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:144; Confirmed from code — /api/v1/inventory/stock/list @ src/services/admin/inventory.service.js:42 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:155; Confirmed from code — /api/v1/inventory/products/detail @ src/services/admin/inventory.service.js:72 -> ../custom_addons_scola/gcgscola/scola_inventory/controllers/inventory_admin_api.py:196 Confirmed from code — sesi autentik; capability inventory.stock.view; allowedRoles vice_principal_infrastructure; feature flag scola_inventory; Inferred from code — data prerequisite: product, warehouse/location, vendor/budget atau asset record terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /inventory/stock P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

vp-public-relations (3 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
vp-public-relations Dashboard /vice-principal/public-relations src/views/AdminViews/WakasekDashboard.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /vice-principal/public-relations; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Kelola kurikulum, jadwal pelajaran, dan evaluasi akademik., Semester Ganjil 2025/2026, Total Mapel, Kehadiran (bln ini), Mata Pelajaran, Evaluasi, Perangkat Ajar, Review RPP Matematika, Kelola kesiswaan, ekstrakurikuler, dan tata tertib., Tahun Ajaran 2025/2026, +21 lainnya Confirmed from code — Buka Inbox, item.action, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useLeadershipUnitFilter.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.dashboard.view; allowedRoles vice_principal_public_relations; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/student-affairs/extracurricular/pending, /vice-principal/curriculum/subjects, /vice-principal/curriculum/schedule, /vice-principal/curriculum, /principal/academics/exam-results, /vice-principal/curriculum/rpp, /vice-principal/student-affairs/students, /vice-principal/student-affairs/extracurricular, /vice-principal/student-affairs/violations, /counseling/violations/warning-letters, /vice-principal/student-affairs/attendance, /vice-principal/student-affairs/referrals, /vice-principal/student-affairs/achievements, /vice-principal/infrastructure/stock, /vice-principal/infrastructure/inventory, /vice-principal/infrastructure/maintenance, /vice-principal/infrastructure/requests, /vice-principal/public-relations/news, /vice-principal/public-relations/events, /vice-principal/public-relations, +2 lainnya P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-public-relations Ranking SPMB /vice-principal/public-relations/admissions/ranking src/views/AdmissionManagement/RankingList.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman Ranking SPMB pada /vice-principal/public-relations/admissions/ranking; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.register_id, filters.pathway_id, filters.state, showProcessDialog, Gelombang; kolom=Nama Peserta, Gelombang, Total Skor; filter=filters.register_id, filters.pathway_id, filters.state; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — set showProcessDialog, exportCSV, fetchData, viewDetail, handleProcessSelection Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796 Confirmed from code — sesi autentik; capability admissions.ranking.view; allowedRoles vice_principal_public_relations; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, pathway_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/ranking, /admin/spmb/ranking, /principal/admissions/ranking, /vice-principal/student-affairs/admissions/ranking P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-public-relations Agenda & Event /vice-principal/public-relations/events src/views/AdminViews/WakasekDashboard.vue:1 Confirmed from code — vice_principal_public_relations; guard route memakai allowedRoles Inferred from code — halaman Agenda & Event pada /vice-principal/public-relations/events; tujuan diringkas dari aksi interaktif Inferred from code — option/status/display-label candidates=Kelola kurikulum, jadwal pelajaran, dan evaluasi akademik., Semester Ganjil 2025/2026, Total Mapel, Kehadiran (bln ini), Mata Pelajaran, Evaluasi, Perangkat Ajar, Review RPP Matematika, Kelola kesiswaan, ekstrakurikuler, dan tata tertib., Tahun Ajaran 2025/2026, +21 lainnya Confirmed from code — Buka Inbox, item.action, router.push Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useExtracurricularPending.js, src/composables/useLeadershipUnitFilter.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability communication.events.view; allowedRoles vice_principal_public_relations; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /vice-principal/student-affairs/extracurricular/pending, /vice-principal/curriculum/subjects, /vice-principal/curriculum/schedule, /vice-principal/curriculum, /principal/academics/exam-results, /vice-principal/curriculum/rpp, /vice-principal/student-affairs/students, /vice-principal/student-affairs/extracurricular, /vice-principal/student-affairs/violations, /counseling/violations/warning-letters, /vice-principal/student-affairs/attendance, /vice-principal/student-affairs/referrals, /vice-principal/student-affairs/achievements, /vice-principal/infrastructure/stock, /vice-principal/infrastructure/inventory, /vice-principal/infrastructure/maintenance, /vice-principal/infrastructure/requests, /vice-principal/public-relations/news, /vice-principal/public-relations/events, /vice-principal/public-relations, +2 lainnya P3 — halaman sederhana/statis Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

vp-student-affairs (14 pages)

Module Page name Route Component file Allowed roles Main purpose Forms and fields Main actions API dependencies Prerequisites Downstream impact Related pages Documentation priority Confidence level
vp-student-affairs Dashboard /vice-principal/student-affairs src/views/Principal/PrincipalStudents.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Dashboard pada /vice-principal/student-affairs; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — kolom=Total Poin, Tanggal Terakhir; Inferred from code — option/status/display-label candidates=Prestasi Bulan Ini, Monitoring Ekskul, Rekap Bulanan, Tata Tertib & Peraturan, Insiden Umum, Rekap Kesiswaan Confirmed from code — loadInsights, goTo Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/common/jsonRpc.js, src/services/counseling/achievement.service.js, src/services/counseling/counseling.service.js, +9 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability students.overview.view; allowedRoles vice_principal_student_affairs; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /principal/students P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Prestasi /vice-principal/student-affairs/achievements src/views/CounselingManagement/Prestasi/ListPrestasi.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Prestasi pada /vice-principal/student-affairs/achievements; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedLevel, selectedCategory, statusFilter, deleteDialog.show; kolom=Kejuaraan, Peringkat; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Total Prestasi, Disetujui, Akademik, Tingkat Prestasi Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +6 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.achievements.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/achievements/levels, /admin/achievements, /counseling/achievements, /faculty/achievements, /principal/students/achievements P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Dashboard SPMB /vice-principal/student-affairs/admissions/dashboard src/views/AdmissionManagement/AdmissionDashboard.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Dashboard SPMB pada /vice-principal/student-affairs/admissions/dashboard; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=selectedRegister; kolom=Gelombang, Menunggu, Publikasi Hasil; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Status diperbarui, Buka Gelombang, Konfigurasi Jalur, Menunggu Verifikasi, Error Confirmed from code — fetchDashboardData, handleKpiClick, router.push, quickTransition, viewDetail Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/dashboard/stats @ src/services/spmb/spmbAdminAdmissions.service.js:113 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1121; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796; Confirmed from code — /api/SPMB/admissions/:param/transition @ src/services/spmb/spmbAdminAdmissions.service.js:220 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:1047 Confirmed from code — sesi autentik; capability admissions.dashboard.view; allowedRoles vice_principal_student_affairs; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/spmb/periode, /admin-staff/admissions/dashboard, /admin/spmb/dashboard, /principal/admissions/dashboard, /vice-principal/public-relations/admissions/dashboard P1 — komponen besar Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Ranking SPMB /vice-principal/student-affairs/admissions/ranking src/views/AdmissionManagement/RankingList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Ranking SPMB pada /vice-principal/student-affairs/admissions/ranking; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.register_id, filters.pathway_id, filters.state, showProcessDialog, Gelombang; kolom=Nama Peserta, Gelombang, Total Skor; filter=filters.register_id, filters.pathway_id, filters.state; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Error Confirmed from code — set showProcessDialog, exportCSV, fetchData, viewDetail, handleProcessSelection Confirmed from code — /api/SPMB/registers/:param/calculate-ranks @ src/services/spmb/spmbAdminAdmissions.service.js:207 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:866; Confirmed from code — /api/SPMB/admin/options @ src/services/spmb/spmbAdminAdmissions.service.js:108 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_registers_api.py:874; Confirmed from code — /api/SPMB/admissions/list @ src/services/spmb/spmbAdminAdmissions.service.js:160 -> ../custom_addons_scola/gcgscola/scola_admission/controllers/spmb_applicants_api.py:796 Confirmed from code — sesi autentik; capability admissions.ranking.view; allowedRoles vice_principal_student_affairs; Inferred from code — data prerequisite: periode SPMB dan application/register/test schedule yang relevan; referenced records dari field register_id, pathway_id Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin-staff/admissions/ranking, /admin/spmb/ranking, /principal/admissions/ranking, /vice-principal/public-relations/admissions/ranking P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Kehadiran /vice-principal/student-affairs/attendance src/views/AttendanceManagement/Admin/AttendanceSheetList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Kehadiran pada /vice-principal/student-affairs/attendance; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=pendingDate, searchQuery, dateFilter; kolom=Register, Session; filter=pendingDate, searchQuery, dateFilter; aturan field=pendingDate: type=date, searchQuery: type=search, dateFilter: type=date; Inferred from code — option/status/display-label candidates=Dashboard, Kesiswaan, Pantau rekap kehadiran siswa per sesi. Confirmed from code — goCreateManual, fetchPendingSessions, goFillSession, handleRefresh, goToSessionDetail Confirmed from code — /api/v1/attendance/admin/sheets @ src/services/attendance/adminAttendance.service.js:65 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:65; Confirmed from code — /api/v1/attendance/admin/pending-sessions @ src/services/attendance/adminAttendance.service.js:52 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_api.py:38 Confirmed from code — sesi autentik; capability students.attendance.view; allowedRoles vice_principal_student_affairs; Inferred from code — data prerequisite: academic year/term dan enrollment atau assignment bertanggal yang sesuai Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /attendance/sheets, /principal/students/attendance/sheets P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Laporan Konseling /vice-principal/student-affairs/counseling src/views/CounselingManagement/Counseling/CounselingList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Laporan Konseling pada /vice-principal/student-affairs/counseling; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedClassroom, searchPlaceholder; filter=searchTerm, selectedClassroom, searchPlaceholder; sinyal validasi=min/max Confirmed from code — fetchReports, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/counseling.service.js, +4 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /counseling/notes, /faculty/counseling, /principal/students/counseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Ekstrakurikuler /vice-principal/student-affairs/extracurricular src/views/StudentViews/Extracurricular/StudentExtracurricular.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Ekstrakurikuler pada /vice-principal/student-affairs/extracurricular; tujuan diringkas dari 1 form, filter/pencarian, aksi interaktif Confirmed from code — form=1; field=searchQuery, selectedCategory, registrationNote; filter=searchQuery; sinyal validasi=min/max Confirmed from code — $router.push, loadData, openAttendanceHistory, openRegisterModal, openResignModal, set showAttendanceModal, submitRegistration, set showResignModal, confirmResign Confirmed from code — /api/v1/student/portal/extracurricular/attendance-history @ src/services/counseling/extracurricularPortal.service.js:38 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/extracurricular_portal_api.py:146 Confirmed from code — sesi autentik; capability students.extracurricular.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /student/extracurriculars P1 — form Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Insiden Umum /vice-principal/student-affairs/incidents src/views/CounselingManagement/Incident/IncidentList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Insiden Umum pada /vice-principal/student-affairs/incidents; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchTerm, selectedCategory, selectedStatus; filter=searchTerm, selectedStatus; sinyal validasi=min/max; Inferred from code — option/status/display-label candidates=Semua Status, Dilaporkan, Triage, Investigasi, Selesai, Dieskalasi Confirmed from code — goToAdd, loadIncidents, resetFilters, goToDetail Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/services/auth/auth.service.js, src/services/common/jsonRpc.js, src/services/counseling/incident.service.js, +3 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.incident.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/incidents, /counseling/incidents, /faculty/incidents, /principal/students/incidents P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Perizinan Siswa /vice-principal/student-affairs/permits src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Perizinan Siswa pada /vice-principal/student-affairs/permits; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedType, deleteDialog.show, searchPlaceholder; filter=searchQuery, searchPlaceholder; aturan field=searchQuery: type=text Confirmed from code — goToTambah, resetFilters, set selectedStatus, fetchData, goToDetail, goToEdit, confirmDelete, handleDelete Confirmed from code — /api/v1/parent/children @ src/views/CounselingManagement/StudentLeave/StudentLeaveList.vue:306 -> ../custom_addons_scola/gcgscola/scola_fees/controllers/parent_billing_api.py:198; Missing or unclear — /api/v1/parent/permits?:param @ src/services/counseling/permit.service.js:38; base/path dirakit dinamis dan controller final tidak dapat di-resolve statis Confirmed from code — sesi autentik; capability discipline.permissions.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /admin/student-permits, /counseling/student-permits, /faculty/student-permits, /parent/permits, /principal/students/permits, /student/permits P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Referral Masuk /vice-principal/student-affairs/referrals src/views/FacultyViews/Counseling/ReferralList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Referral Masuk pada /vice-principal/student-affairs/referrals; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedStatus, selectedTargetRole, form.student_id, form.target_role, form.source_type, form.source_record_id, form.source_reference, form.safe_summary, form.notes, closeNotes; filter=searchQuery, selectedStatus; sinyal validasi=required; aturan field=form.source_record_id: type=number Confirmed from code — Coba Lagi, openCreateModal, resetFilters, loadReferrals, handleAccept, openCloseModal, closeCreateModal, handleCreateReferral, set isCloseModalOpen, confirmClose Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useAudit.js, src/composables/useErrorHandler.js, src/services/audit/audit.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_referral.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field student_id, source_record_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/referrals, /counseling/referrals, /faculty/referrals, /principal/students/referrals P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Rekap Kesiswaan /vice-principal/student-affairs/rekap src/views/Kesiswaan/KesiswaanDashboard.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Rekap Kesiswaan pada /vice-principal/student-affairs/rekap; tujuan diringkas dari filter/pencarian, aksi interaktif Confirmed from code — field=dateFrom, dateTo; filter=dateFrom, dateTo; sinyal validasi=min/max; aturan field=dateFrom: type=date, dateTo: type=date; Inferred from code — option/status/display-label candidates=Pelanggaran, Prestasi, Insiden Umum Confirmed from code — loadRekap, $router.push Confirmed from code — /api/v1/kesiswaan/rekap @ src/services/counseling/kesiswaanRekap.service.js:30 -> ../custom_addons_scola/gcgscola/scola_student_activity/controllers/kesiswaan_rekap_api.py:88 Confirmed from code — sesi autentik; capability students.overview.view; allowedRoles vice_principal_student_affairs; Missing or unclear — data prerequisite tidak eksplisit pada component statis Missing or unclear — aksi dan API terdeteksi, tetapi dampak data tidak dapat dipastikan hanya dari component Confirmed from code — link/component bersama: /principal/students/rekap P2 — daftar/detail berbasis data Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Rekap Konseling Siswa /vice-principal/student-affairs/rekap-konseling src/views/CounselingManagement/Rekap/RekapKonselingSiswa.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Rekap Konseling Siswa pada /vice-principal/student-affairs/rekap-konseling; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Unit Sekolah, Search; kolom=No., NIS, Unit, Total Poin; filter=filters.academic_year_id, filters.education_level, filters.batch_id, filters.student_id, filters.page_size, filters.search, Search; sinyal validasi=min/max; aturan field=filters.search: type=text Confirmed from code — Excel, Prev, onEducationLevelChange, applyFilters, onExportExcel, reloadAtFirstPage, onCetakBuku, goToPage Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useApps.js, src/services/admin/academics/academicMaster.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.counseling_book.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait; referenced records dari field academic_year_id, batch_id, student_id Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/rekap-konseling, /counseling/rekap-konseling, /faculty/homeroom/rekap-konseling, /principal/students/rekap-konseling P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Data Siswa /vice-principal/student-affairs/students src/views/AdminViews/StudentDatabase/StudentList.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Data Siswa pada /vice-principal/student-affairs/students; tujuan diringkas dari tabel/kolom data, aksi interaktif Confirmed from code — field=activeTab, pageSizeOption, selectedStudents; kolom=NISN, Akun, Poin; Inferred from code — option/status/display-label candidates=Arsip, 10, 25, 50, 100 Confirmed from code — navigateToTambahSiswa, navigateToUploadPage, generateStudentAccounts, deleteSelected, reactivateSelected, set accountGenerationSummary, setClassFilter, handlePageSizeChange, navigateToDetail, deleteStudent, reactivateStudent Confirmed from code — /api/v1/admin/accounts/generate-students @ src/views/AdminViews/StudentDatabase/StudentList.vue:508 -> ../custom_addons_scola/gcgscola/scola_core/controllers/account_generation_api.py:44; Confirmed from code — /api/v1/admin-staff/students/list @ src/services/adminStaff/studentScope.service.js:10 -> ../custom_addons_scola/gcgscola/scola_attendance/controllers/attendance_admin_staff_api.py:8; Confirmed from code — /api/v1/admin/students/classes @ src/services/admin/student.service.js:15 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:308; Confirmed from code — /api/v1/admin/students/list @ src/services/admin/student.service.js:4 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:271; Confirmed from code — /api/v1/admin/students/set-active @ src/services/admin/student.service.js:34 -> ../custom_addons_scola/gcgscola/scola_core/controllers/student_admin_api.py:387 Confirmed from code — sesi autentik; capability students.list.view; allowedRoles vice_principal_student_affairs; Missing or unclear — data prerequisite tidak eksplisit pada component statis Inferred from code — memanggil endpoint berbentuk mutasi /api/v1/admin/accounts/generate-students; efek transaksi rinci harus dibaca pada controller/model atau dikonfirmasi Confirmed from code — link/component bersama: /students/create, /students/:id, /students/import, /admin-staff/students/list, /principal/students/list, /students P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase
vp-student-affairs Pelanggaran /vice-principal/student-affairs/violations src/views/CounselingManagement/Pelanggaran/ListPelanggaran.vue:1 Confirmed from code — vice_principal_student_affairs; guard route memakai allowedRoles Inferred from code — halaman Pelanggaran pada /vice-principal/student-affairs/violations; tujuan diringkas dari tabel/kolom data, filter/pencarian, aksi interaktif Confirmed from code — field=searchQuery, selectedCategory, statusFilter, deleteDialog.show; kolom=Bentuk, Poin; filter=searchQuery, statusFilter; Inferred from code — option/status/display-label candidates=Kategori Pelanggaran, Bentuk Pelanggaran Confirmed from code — goToAdd, resetFilters, goToDetail, goToEdit, confirmDelete, handleDelete, goToTab Missing or unclear — service closure terdeteksi (src/api/apiServices.js, src/api/featureAccess.js, src/composables/useAppVersionCheck.js, src/composables/useFaculty.js, src/services/admin/faculty.service.js, src/services/auth/auth.service.js, +5 lainnya), tetapi endpoint literal untuk method yang dipakai tidak berhasil di-resolve Confirmed from code — sesi autentik; capability discipline.violations.view; allowedRoles vice_principal_student_affairs; feature flag scola_student_services; Inferred from code — data prerequisite: student/company dan category/rule/assignment terkait Missing or unclear — tidak ada dampak downstream eksplisit yang terdeteksi secara statis Confirmed from code — link/component bersama: /admin/violations, /counseling/violations, /faculty/violations, /principal/students/violations P0 — aksi sensitif/workflow Confirmed from code — route, component, dan guard eksplisit tersedia di codebase

B2. Redirects and aliases

Route Route name Destination Access metadata Source Confidence
/absensi redirect: "/attendance/home" Redirect (destination guard) src/router/attendanceRoutes.js:29 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/academic-settings redirect: "/academic/assessment-types" Redirect (destination guard) src/router/academicCoreRoutes.js:58 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/accounting/product redirect: "/accounting/products" Redirect (destination guard) src/router/financeRoutes.js:84 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin-staff/users redirect: "/admin-staff/dashboard" Redirect (destination guard) src/router/adminShellRoutes.js:32 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin-staff/users/audit-log redirect: "/admin-staff/dashboard" Redirect (destination guard) src/router/adminShellRoutes.js:46 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/akuntansi/reports/buku-besar redirect: "/accounting/reports/general-ledger" Redirect (destination guard) src/router/financeRoutes.js:88 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/akuntansi/reports/jurnal-umum redirect: "/accounting/reports/journal-audit" Redirect (destination guard) src/router/financeRoutes.js:89 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/akuntansi/reports/partner-ledger redirect: "/accounting/reports/partner-ledger" Redirect (destination guard) src/router/financeRoutes.js:90 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/academic-reliability analytics-academic-reliability redirect: "/platform/observability/academic" Authenticated src/router/analyticsAdminRoutes.js:39 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/curriculum curriculum-dashboard redirect: "/vice-principal/curriculum" Authenticated src/router/analyticsAdminRoutes.js:9 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/parent-reliability analytics-parent-reliability redirect: "/platform/observability/parent" Authenticated src/router/analyticsAdminRoutes.js:33 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/principal analytics-principal-dashboard redirect: "/principal/analytics" Authenticated src/router/analyticsAdminRoutes.js:3 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/promotion-policy analytics-promotion-policy redirect: "/vice-principal/curriculum/promotion-policy" Authenticated src/router/analyticsAdminRoutes.js:45 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/student-reliability analytics-student-reliability redirect: "/platform/observability/student" Authenticated src/router/analyticsAdminRoutes.js:27 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/tasks task-management redirect: "/admin/dashboard" Authenticated src/router/analyticsAdminRoutes.js:15 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/analytics/teacher-reliability analytics-teacher-reliability redirect: "/platform/observability/teacher" Authenticated src/router/analyticsAdminRoutes.js:21 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/cbt admin-cbt redirect: "/admin/cbt/settings" Authenticated src/router/learningAssessmentRoutes.js:243 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/channel-management admin-channel-management redirect: { name: "admin-messaging" } Authenticated src/router/communicationAdminRoutes.js:119 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/configuration/raport configuration-raport redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:3 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/edit-pajak/:id redirect: "/accounting/configuration/taxes" Redirect (destination guard) src/router/financeRoutes.js:80 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/edit-produk/:id redirect: "/accounting/products" Redirect (destination guard) src/router/financeRoutes.js:83 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/edit-tipe-pajak/:id redirect: "/accounting/configuration/taxes" Redirect (destination guard) src/router/financeRoutes.js:79 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/examtype admin-examtype redirect: "/academic/assessment-types" Redirect (destination guard) src/router/learningAssessmentRoutes.js:13 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/examtypenew admin-examtypenew redirect: "/academic/assessment-types" Redirect (destination guard) src/router/learningAssessmentRoutes.js:18 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/home redirect: "/admin/dashboard" Redirect (destination guard) src/router/adminShellRoutes.js:18 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/listproduk redirect: "/accounting/products" Redirect (destination guard) src/router/financeRoutes.js:81 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/tambah-pajak redirect: "/accounting/configuration/taxes" Redirect (destination guard) src/router/financeRoutes.js:78 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/tambah-produk redirect: "/accounting/products" Redirect (destination guard) src/router/financeRoutes.js:82 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/admin/tax-types/create redirect: "/accounting/configuration/taxes" Redirect (destination guard) src/router/financeRoutes.js:77 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/adminhome redirect: "/admin/dashboard" Redirect (destination guard) src/router/adminShellRoutes.js:14 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendance/:id attendanceLineDetail redirect: "/attendance/lines" Authenticated src/router/attendanceRoutes.js:162 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendance/lines/create attendanceLineCreate redirect: "/attendance/sheets/create" Authenticated src/router/attendanceRoutes.js:173 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendance/list redirect: "/attendance/registers" Authenticated src/router/attendanceRoutes.js:95 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendance/process redirect: "/attendance/sheets" Authenticated src/router/attendanceRoutes.js:125 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendance/register/create redirect: "/attendance/registers/create" Authenticated src/router/attendanceRoutes.js:121 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendance/school-schedule attendanceSchoolSchedule redirect: { name: "attendanceSettings", query: { tab: "schedule" } } Authenticated src/router/attendanceRoutes.js:193 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/attendancehistory redirect: "/employee/self-attendance" Redirect (destination guard) src/router/sharedExperienceRoutes.js:259 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/bayar-spp/:id redirect: (to) => /parent/payment/${to.params.id} Redirect (destination guard) src/router/parentRouteFragments/finance.js:40 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/bos redirect: "/bos/dashboard" Redirect (destination guard) src/router/compliancePortalRoutes.js:133 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/checkin/faculty employeeSelfAttendance (alias) redirect: alias of /employee/self-attendance Authenticated src/router/teacherRouteFragments/attendance.js:49 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/config redirect: "/config/library-cards" Redirect (destination guard) src/router/libraryManagementRoutes.js:267 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/configattendance redirect: "/attendance/settings" Redirect (destination guard) src/router/attendanceRoutes.js:198 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/counseling redirect: "/counseling/dashboard" Authenticated src/router/counselingRoutes.js:38 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/counseling/home redirect: "/counseling/dashboard" Authenticated src/router/counselingRoutes.js:31 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/counseling/timeoff counseling-timeoff redirect: "/employee/timeoff" Redirect (destination guard) src/router/counselingRoutes.js:560 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/course-level grade-levels (alias) redirect: alias of /grade-levels Authenticated src/router/academicCoreRoutes.js:25 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/dapodik redirect: "/dapodik/dashboard" Redirect (destination guard) src/router/compliancePortalRoutes.js:16 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/dpo redirect: "/dpo/audit-log" Redirect (destination guard) src/router/compliancePortalRoutes.js:73 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/assessment-hub redirect: "/faculty/assessment" Redirect (destination guard) src/router/teacherRouteFragments/assessment.js:42 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/attendance-recap redirect: "/faculty/attendance/subject-report" Redirect (destination guard) src/router/teacherRouteFragments/attendance.js:85 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/attendance/attendance-sheet/:id redirect: (to) => /faculty/attendance/sheet/${to.params.id} Redirect (destination guard) src/router/teacherRouteFragments/attendance.js:45 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/attendancereport redirect: "/faculty/attendance/homeroom-report" Redirect (destination guard) src/router/teacherRouteFragments/attendance.js:66 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/home redirect: "/faculty/dashboard" Redirect (destination guard) src/router/teacherRouteFragments/core.js:28 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/news redirect: "/news" Redirect (destination guard) src/router/sharedExperienceRoutes.js:109 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/faculty/timeoff FacultyTimeOff redirect: "/employee/timeoff" Redirect (destination guard) src/router/teacherRouteFragments/core.js:118 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/foundation redirect: "/foundation/dashboard" Redirect (destination guard) src/router/foundationRoutes.js:183 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/foundation-auditor redirect: "/foundation-auditor/dashboard" Redirect (destination guard) src/router/compliancePortalRoutes.js:33 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/foundation/academic redirect: "/foundation/academic/students" Redirect (destination guard) src/router/foundationRoutes.js:179 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/foundation/finance redirect: "/foundation/finance/profit-loss" Redirect (destination guard) src/router/foundationRoutes.js:167 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/foundation/hr redirect: "/foundation/hr/employees" Redirect (destination guard) src/router/foundationRoutes.js:171 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/foundation/transport redirect: "/foundation/transport/officers" Redirect (destination guard) src/router/foundationRoutes.js:175 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/historyattendance/faculty employeeSelfAttendance (alias) redirect: alias of /employee/self-attendance Authenticated src/router/teacherRouteFragments/attendance.js:49 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/hr/my-timeoff hr-my-timeoff redirect: "/employee/timeoff" Redirect (destination guard) src/router/hrAdminRoutes.js:331 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/hr/timeoff-types hr-timeoff-types redirect: "/hr/leave/types" Redirect (destination guard) src/router/hrAdminRoutes.js:367 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/inventory redirect: "/inventory/dashboard" Authenticated src/router/inventoryRoutes.js:15 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/journal-configure/:id redirect: (to) => ({ name: "accounting-journal-configure", params: { id: to.params.id } }) Redirect (destination guard) src/router/financeRoutes.js:87 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/journal-create redirect: "/accounting/configuration/journals/new" Redirect (destination guard) src/router/financeRoutes.js:85 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/journal-edit/:id redirect: (to) => ({ name: "accounting-journal-edit", params: { id: to.params.id } }) Redirect (destination guard) src/router/financeRoutes.js:86 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/lab-technician redirect: "/lab-technician/dashboard" Redirect (destination guard) src/router/labTechnicianRoutes.js:14 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/librarian redirect: "/librarian/dashboard" Authenticated src/router/librarianRoutes.js:33 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/librarian/config redirect: "/librarian/config/library-cards" Redirect (destination guard) src/router/librarianRoutes.js:141 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/librarian/home redirect: "/librarian/dashboard" Authenticated src/router/librarianRoutes.js:26 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/academic redirect: "/parent/academics" Authenticated src/router/parentRouteFragments/academic.js:64 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/assignment/:id AssignmentDetailParent redirect: "/parent/assignment" Authenticated src/router/parentRouteFragments/academic.js:47 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/assignment/submission assignmentsubmissionparent redirect: "/parent/assignment" Authenticated src/router/parentRouteFragments/academic.js:25 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/assignment/submissiondetail AssignmentSubmsDetailParent redirect: "/parent/assignment" Authenticated src/router/parentRouteFragments/academic.js:36 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/assignmenthome redirect: "/parent/assignment" Redirect (destination guard) src/router/parentRouteFragments/academic.js:10 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/home redirect: "/parent/dashboard" Redirect (destination guard) src/router/parentRouteFragments/core.js:32 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/news redirect: "/news" Redirect (destination guard) src/router/sharedExperienceRoutes.js:105 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parent/student-list parent-student-list redirect: "/parent/profile" Authenticated src/router/parentRouteFragments/core.js:83 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parents/create redirect: "/students/create" Redirect (destination guard) src/router/studentDataAdminRoutes.js:91 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parents/create-user redirect: "/students/import" Redirect (destination guard) src/router/studentDataAdminRoutes.js:83 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/parents/import-relations redirect: { name: "parent-list", query: { tab: "relation" } } Redirect (destination guard) src/router/studentDataAdminRoutes.js:87 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/payment redirect: "/payment/schedule" Redirect (destination guard) src/router/financeRoutes.js:73 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/payment/types/create redirect: "/payment/templates" Redirect (destination guard) src/router/financeRoutes.js:74 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/platform redirect: "/platform/dashboard" Redirect (destination guard) src/router/platformRoutes.js:121 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/platform/observability redirect: "/platform/observability/teacher" Redirect (destination guard) src/router/platformRoutes.js:117 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/principal redirect: "/principal/dashboard" Authenticated src/router/principalRoutes.js:27 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/principal/hr/my-timeoff principal-my-timeoff redirect: "/employee/timeoff" Redirect (destination guard) src/router/principalRoutes.js:159 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/principal/hr/my-timeoff/:id principal-timeoff-detail redirect: "/employee/timeoff" Redirect (destination guard) src/router/principalRoutes.js:169 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/principal/hr/my-timeoff/create principal-timeoff-create redirect: "/employee/timeoff" Redirect (destination guard) src/router/principalRoutes.js:164 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/raportlistortu redirect: "/parent/report-cards" Redirect (destination guard) src/router/parentRouteFragments/academic.js:88 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/assessment-types/create TambahTipePenilaian redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:15 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/assessment-types/edit EditTipePenilaian redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:27 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/competency/create TambahCapaianKompetensi redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:63 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/competency/edit/:id EditCapaianKompetensi redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:75 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/create BuatRaport redirect: "/admin/report-card" Authenticated src/router/academicProgressRoutes.js:123 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/criteria/create TambahKriteriaPenilaian redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:39 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/criteria/edit EditKriteriaPenilaian redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:51 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/learning-objectives TujuanPembelajaranList redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:87 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/learning-objectives/create TambahTujuanPembelajaran redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:99 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/report-card/learning-objectives/edit EditTujuanPembelajaran redirect: "/admin/report-card/curriculum" Authenticated src/router/academicProgressRoutes.js:111 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/school-committee redirect: "/school-committee/dashboard" Redirect (destination guard) src/router/compliancePortalRoutes.js:116 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/security-officer redirect: "/security-officer/dashboard" Redirect (destination guard) src/router/compliancePortalRoutes.js:89 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/spmb/pendaftar/login PendaftarLogin (alias) redirect: alias of /spmb/login Public src/router/spmbRoutes.js:40 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/spmb/pendaftar/register PendaftarRegister (alias) redirect: alias of /spmb/register Public src/router/spmbRoutes.js:47 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/student/assignment/submission assignmentsubmissionstudent redirect: "/student/assignment" Authenticated src/router/studentRouteFragments/learning.js:44 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/student/assignment/submissiondetail/:id AssignmentSubmDetailStudent redirect: "/student/assignment" Authenticated src/router/studentRouteFragments/learning.js:55 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/student/home redirect: "/student/dashboard" Redirect (destination guard) src/router/studentRouteFragments/core.js:22 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/student/lms/achievements redirect: "/student/grades/achievements" Redirect (destination guard) src/router/studentRouteFragments/learning.js:139 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/student/student-list student-student-list redirect: "/student/profile" Authenticated src/router/studentRouteFragments/core.js:51 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/tax-types redirect: "/accounting/configuration/taxes" Redirect (destination guard) src/router/financeRoutes.js:75 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/taxes redirect: "/accounting/configuration/taxes" Redirect (destination guard) src/router/financeRoutes.js:76 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/tp-atp redirect: "/admin/tp" Redirect (destination guard) src/router/academicCoreRoutes.js:62 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/vice-principal redirect: "/vice-principal/dashboard" Redirect (destination guard) src/router/vicePrincipalRoutes.js:80 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/vice-principal/dashboard vice-principal-dashboard redirect: resolveVicePrincipalEntryRoute Authenticated src/router/vicePrincipalRoutes.js:72 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/vice-principal/public-relations/news vice-principal-news redirect: "/admin/news" Authenticated src/router/vicePrincipalRoutes.js:704 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/vice-principal/public-relations/ppdb vice-principal-ppdb redirect: "/vice-principal/public-relations/admissions/dashboard" Authenticated src/router/vicePrincipalRoutes.js:724 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard
/wakasek/humas/news redirect: "/admin/news" Redirect (destination guard) src/router/sharedExperienceRoutes.js:113 Confirmed from code — redirect/alias; permission efektif mengikuti destination guard