📋 Setup Awal
1. Import file database.sql ke MySQL
2. Sesuaikan konfigurasi database di file config.php jika diperlukan
3. Semua API menerima input JSON dan mengembalikan output JSON
4. Gunakan header: Content-Type: application/json
API 1: Masuk Ujian
POST api/masuk_ujian.php
Input JSON:
{
"nisn": "12345",
"nama": "Andi Wijaya",
"tingkatan": "X",
"lembaga": "SMA Negeri 1",
"kode_pembelajaran": "PAI01"
}
Output Sukses:
{
"success": true,
"ujian_id": "1",
"nama_ujian": "PTS PAI",
"status": "aktif",
"sudah_mengerjakan": false,
"tampilkan_hasil": true
}
Catatan: API ini akan otomatis mendaftarkan siswa baru atau memperbarui data siswa lama berdasarkan NISN, lalu mengaktifkan sesi ujian.
API 2: Cek Sesi Aktif
POST api/cek_sesi_aktif.php
Input JSON:
{
"nisn": "12345"
}
Output:
{
"success": true,
"ada_sesi": true,
"ujian_id": "1",
"nama_ujian": "PTS PAI",
"kode_pembelajaran": "PAI01",
"status": "aktif"
}
Atau jika tidak ada sesi:
{
"success": true,
"ada_sesi": false
}
API 3: Get Soal
POST api/get_soal.php
Input JSON:
{
"nisn": "12345",
"kode_pembelajaran": "PAI01"
}
Output:
{
"success": true,
"soal_pilgan": [
{
"id": 1,
"nomor": 1,
"pertanyaan": "Apa arti dari kata 'Iman'?",
"opsi_a": "Percaya",
"opsi_b": "Takut",
"opsi_c": "Harap",
"opsi_d": "Syukur",
"bobot": 2.00
}
],
"soal_uraian": [
{
"id": 4,
"nomor": 4,
"pertanyaan": "Jelaskan pengertian tauhid menurut Islam!",
"bobot": 5.00
}
],
"total_soal": 5
}
PENTING: API ini tidak mengirim jawaban_benar untuk soal pilihan ganda. Hanya mengirim pertanyaan dan opsi.
API 4: Submit Jawaban
POST api/submit_jawaban.php
Input JSON:
{
"nisn": "12345",
"kode_pembelajaran": "PAI01",
"jawaban": [
{
"jenis_soal": "pg",
"soal_id": "10",
"jawaban": "A"
},
{
"jenis_soal": "uraian",
"soal_id": "20",
"jawaban": "Penjelasan siswa"
}
]
}
Output:
{
"success": true,
"nilai": 85.00,
"tampilkan_hasil": true,
"total_soal_dijawab": 2,
"total_nilai": 17.00,
"total_bobot": 20.00
}
Proses: Sistem akan menyimpan seluruh jawaban, mengoreksi otomatis untuk soal pilihan ganda, menghitung total nilai, dan mengatur kode_pembelajaran_aktif siswa menjadi NULL.
API 5: Get Hasil
POST api/get_hasil.php
Input JSON:
{
"nisn": "12345",
"kode_pembelajaran": "PAI01"
}
Output jika tampilkan_hasil=1:
{
"success": true,
"nilai": 85.00,
"detail": [
{
"jenis_soal": "pg",
"pertanyaan": "Apa arti dari kata 'Iman'?",
"jawaban_siswa": "A",
"jawaban_benar": "A",
"benar": true,
"nilai": 2.00,
"bobot": 2.00
}
],
"total_soal_dijawab": 5,
"total_nilai": 85.00,
"total_bobot": 100.00
}
Output jika tampilkan_hasil=0:
{
"success": false,
"message": "Hasil belum dapat ditampilkan"
}
🔧 Data Dummy yang Tersedia
Users: admin/admin123, guru1/admin123
Siswa: NISN 12345, 12346, 12347
Ujian: PAI01 (aktif), MTK01 (aktif), BIO01 (nonaktif)
Soal: 3 soal PG dan 2 soal uraian untuk ujian PAI01