Files
presensi/docs/SYNC_FOTO_WAJAH.md

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

  1. 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.
  2. Konvensi nama file

    • Setiap foto wajib bernama NISN siswa + ekstensi, contoh:
      • 1234567890.jpg atau 1234567890.png
    • Jika di Drive nama file bukan NISN (misalnya "Budi Santoso.jpg"), rename dulu per file sesuai NISN siswa.
  3. 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 + update face_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