3.1 KiB
Sync Foto Wajah dari Google Drive untuk Smart Presensi
Foto wajah siswa dipakai untuk verifikasi wajah di aplikasi mobile (absen masuk/pulang). Foto disimpan di backend: writable/faces/{student_id}.jpg.
Alur yang proper: Verifikasi wajah memakai vektor (embedding) yang disimpan di tabel student_faces, bukan file gambar mentah. Jadi setelah foto formal ada (dari Drive atau sumber lain), kita harus bikin vektor dulu lewat face-service lalu simpan ke student_faces. Script sync di bawah mengerjakan keduanya: copy file dan generate embedding.
Sumber foto
Folder contoh: Foto Siswa Kls XII TP 25-26 — berisi subfolder per kelas (XII-1, XII-2, … XII-12, Susulan).
Cara 1: Download manual lalu jalankan script
-
Download folder dari Google Drive
- Buka folder di Drive, pilih semua subfolder (XII-1 … XII-12), lalu Download (zip).
- Ekstrak ke suatu folder, misalnya
C:\temp\foto-siswa-xii.
-
Konvensi nama file
- Setiap foto wajib bernama NISN siswa + ekstensi, contoh:
1234567890.jpgatau1234567890.png
- Jika di Drive nama file bukan NISN (misalnya "Budi Santoso.jpg"), rename dulu per file sesuai NISN siswa.
- Setiap foto wajib bernama NISN siswa + ekstensi, contoh:
-
Jalankan script sync
- Dari folder backend (bukan dari scripts):
cd c:\laragon\www\sman1\backend php scripts/sync_face_photos.php --source=C:\temp\foto-siswa-xii- Pastikan face-service (Python) sudah jalan, karena script akan memanggilnya untuk generate embedding.
- Script akan:
- Scan semua subfolder (XII-1, XII-2, dll.),
- Untuk setiap file gambar (.jpg, .jpeg, .png), ambil nama file tanpa ekstensi = NISN,
- Cari siswa di database berdasarkan NISN,
- Copy file ke
writable/faces/{student_id}.jpg, - Kirim gambar ke face-service → dapat embedding → simpan ke tabel
student_faces(source=formal).
- Opsi
--no-embedding: hanya copy file + updateface_hash, tidak generate vektor (misalnya kalau face-service belum jalan).
Cara 2: Upload per siswa lewat dashboard (rencana)
Ke depan bisa ditambah halaman di Pengaturan Academic → Siswa: per siswa ada tombol "Upload foto wajah", simpan ke writable/faces/{student_id}.jpg.
API untuk mobile
- GET
/api/mobile/student/face-photo?student_id=123
Mengembalikan gambar foto wajah siswa (atau 404 jika belum ada).
Dipakai aplikasi mobile untuk memuat foto referensi lalu membandingkan dengan wajah yang terdeteksi kamera (face-api.js).
Ringkas
| Yang diatur | Keterangan |
|---|---|
| Penyimpanan | writable/faces/{student_id}.jpg (atau .png) |
| Vektor (embedding) | Script sync memanggil face-service lalu menyimpan ke student_faces (source=formal). Verifikasi wajah memakai data ini. |
| Mapping | Nama file = NISN → cari siswa → simpan dengan student_id |
| Sumber | Download folder Drive → rename file = NISN → jalankan script sync (dan pastikan face-service jalan) |
| Opsi | --no-embedding = hanya copy file, tidak generate embedding |