# Asistente de Reclutamiento WhatsApp — MARECUADOR

Bot de WhatsApp que recibe a los postulantes, les explica la vacante, recolecta
sus datos y sus documentos (hoja de vida, cédula, certificado bancario, etc.) y
avisa a Talento Humano. Incluye un panel web para revisar y descargar todo.

**Stack:** PHP 8 + MySQL + WhatsApp Cloud API (Meta) + Gemini. Pensado para cPanel.

**Costo:** prácticamente $0. Como el postulante te escribe primero, son
*conversaciones de servicio* (gratis e ilimitadas las primeras 24h). Gemini corre
en su capa gratuita. Solo necesitas un número de WhatsApp dedicado.

---

## 1. Subir los archivos

1. Crea el subdominio `ww.janickec.com` en cPanel.
2. Sube **todo el contenido** de esta carpeta a la raíz de ese subdominio
   (normalmente `/home/janickec/ww.janickec.com/`).
3. Asegúrate de que el subdominio tenga **SSL activo** (cPanel → SSL/TLS → AutoSSL).
   El webhook de Meta **exige HTTPS**.

## 2. Base de datos

1. cPanel → **MySQL Databases**: crea una base de datos y un usuario, y asigna el
   usuario a la base con **todos los privilegios**.
2. cPanel → **phpMyAdmin**: selecciona la base e **importa** el archivo
   `sql/install.sql`.
3. Esto crea las tablas y un usuario de panel: **admin / admin123**
   (cámbialo apenas entres).

## 3. Configurar `config.php`

Abre `config.php` y completa:

- `DB_NAME`, `DB_USER`, `DB_PASS` → los de tu base de datos.
- `WA_TOKEN`, `WA_PHONE_ID` → los obtienes en el paso 4.
- `WA_VERIFY_TOKEN` → un texto que tú inventas (debe ser el mismo que pongas en Meta).
- `GEMINI_API_KEY` → del paso 5.
- `TH_NOTIFICAR_NUMERO` → (opcional) número de Talento Humano para recibir avisos,
  en formato internacional sin “+” (ej: `5939XXXXXXXX`).

## 4. WhatsApp Cloud API (Meta)

1. Entra a **developers.facebook.com** → crea una **App** tipo *Business*.
2. Agrega el producto **WhatsApp**.
3. En **API Setup** verás un número de prueba; para producción agrega tu
   **número dedicado** (uno que NO esté usándose en la app normal de WhatsApp).
4. Copia el **Phone number ID** → va en `WA_PHONE_ID`.
5. Genera un **token de acceso permanente** (System User) → va en `WA_TOKEN`.
6. Configura el **Webhook**:
   - Callback URL: `https://ww.janickec.com/webhook.php`
   - Verify token: el mismo de `WA_VERIFY_TOKEN`.
   - Da clic en **Verificar y guardar** (debe quedar verde).
7. En **Webhook fields**, suscríbete a **messages**.
8. (Opcional, recomendado) copia el **App Secret** en `WA_APP_SECRET` para validar
   la firma de Meta.

> Nota: la versión del Graph API está en `WA_GRAPH_VERSION` (por defecto `v21.0`).
> Si Meta te indica otra versión actual, cámbiala ahí.

## 5. Gemini (gratis)

1. Entra a **aistudio.google.com/apikey** y crea una API key (no pide tarjeta).
2. Pégala en `GEMINI_API_KEY`.
3. **Privacidad (LOPDP):** en la capa gratuita Google puede usar los textos para
   entrenar. Por eso el bot **NO** le envía a Gemini datos sensibles (cédulas ni
   archivos); solo usa Gemini para responder preguntas generales del puesto. Si
   quieres blindaje total, activa billing/Vertex y desactiva el uso de datos.

## 6. Permisos de la carpeta `uploads`

La carpeta `uploads/` debe poder escribirse. En cPanel → File Manager, dale
permisos **755** (o 775 si tu hosting lo requiere). Ahí se guardan los documentos,
bloqueados al acceso web directo; solo se descargan desde el panel con sesión.

## 7. Probar

1. Desde tu celular, escribe al número de WhatsApp del bot: *"Hola"*.
2. Debe responder con la bienvenida y los botones de vacante.
3. Completa el flujo y sube una foto de prueba como documento.
4. Entra al panel: `https://ww.janickec.com/admin/`
   - Usuario: **admin** · Contraseña: **admin123**
   - Ve a **Usuarios** y crea tu propio usuario / cambia la contraseña.

---

## Cómo funciona el flujo

1. El postulante escribe → bienvenida + elige vacante (Avance/Proceso o Empaque).
2. El bot muestra los requisitos de esa vacante.
3. Pide: nombre completo → cédula → ciudad/sector.
4. Pide los documentos **uno por uno** (foto o PDF). Si el postulante pregunta algo,
   Gemini le responde y lo reencauza.
5. Al completar todo, marca la postulación como **completa** y avisa a Talento Humano.

Las vacantes y sus documentos se editan en `includes/vacantes.php`.

## Estructura

```
config.php              credenciales (editar)
db.php                  conexión MySQL
webhook.php             recibe los mensajes de WhatsApp
includes/
  vacantes.php          vacantes y documentos requeridos
  whatsapp.php          enviar mensajes / descargar archivos
  gemini.php            respuestas con IA
  flujo.php             lógica del bot (máquina de estados)
  funciones.php         datos (postulantes, documentos)
admin/
  login.php / logout.php
  index.php             lista de postulantes + métricas
  postulante.php        detalle + documentos
  descargar.php         descarga segura
  usuarios.php          crear/editar usuarios del panel
uploads/                documentos recibidos (bloqueada)
sql/install.sql         base de datos
```
