import face_recognition
import numpy as np
import os
import sys

if len(sys.argv) < 2:
    print("Uso: python3 generar_codificaciones.py <empresa>")
    sys.exit(1)

empresa = sys.argv[1]

# Carpeta con fotos de trabajadores
WORKERS_FOLDER = f"/var/www/base/gestor-proyectos/documentos/{empresa}/RecursosHumanos/fotos_trabajadores"
# Archivos de salida
ENCODINGS_FILE = f"/var/www/base/gestor-proyectos/documentos/{empresa}/face_data/encodings.npy"
IDS_FILE = f"/var/www/base/gestor-proyectos/documentos/{empresa}/face_data/ids.npy"

known_faces = []
known_ids = []

print(f"Generando codificaciones para empresa: {empresa}...")

if not os.path.exists(WORKERS_FOLDER):
    print(f"[ERROR] La carpeta no existe: {WORKERS_FOLDER}")
    sys.exit(1)

for filename in os.listdir(WORKERS_FOLDER):
    if filename.lower().endswith((".jpg", ".png")):
        worker_id = filename.split(".")[0]
        image_path = os.path.join(WORKERS_FOLDER, filename)
        print(f"Procesando {filename}...")

        image = face_recognition.load_image_file(image_path)
        encodings = face_recognition.face_encodings(image)

        if encodings:
            known_faces.append(encodings[0])
            known_ids.append(worker_id)
        else:
            print(f"[ADVERTENCIA] No se detectó rostro en: {filename}")

# Crear carpeta destino si no existe
os.makedirs(os.path.dirname(ENCODINGS_FILE), exist_ok=True)

# Guardar los vectores
np.save(ENCODINGS_FILE, known_faces)
np.save(IDS_FILE, known_ids)

print("✔ Codificaciones guardadas con éxito.")
