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 — ✕, 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, ✕, 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, ✕, 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, ✕, 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 — ×, 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, ×, 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 |