# GiadocGenerator - Despliegue en Hosting (grupo-energia.com)

Este proyecto genera PDFs, los guarda localmente, sube a Google Drive y registra en Google Sheets. Soporta modo asíncrono mediante una cola basada en archivos y un worker.

## Estructura clave

- `index.php`: endpoint principal (Apps Script hace POST aquí).
- `worker.php`: procesa trabajos encolados (cron CLI o HTTP con token).
- `secrets/`: credenciales y CA bundle (`client_secret.json`, `service-account.json`, `cacert.pem`, `oauth_token.json`).
- `uploads/pdf/`: PDFs generados localmente.
- `queue/`: cola de trabajos (`*.json`), `processing/`, `failed/`.
- `logs/`: logs diarios `app_YYYY-MM-DD.log`.

## Pre-requisitos

- PHP 7.4+ (idealmente 8.0/8.1) con extensiones cURL y OpenSSL.
- Composer (opcional si subes la carpeta `vendor` desde tu entorno local).
- Dominio: https://grupo-energia.com

## Instalación de dependencias

En el servidor (recomendado):

```sh
cd /home/grupoene/public_html/giadocgenerator
composer install --no-dev --optimize-autoloader
```

Si no tienes Composer en el servidor:

1. En tu PC, ejecuta `composer install` en el proyecto.
2. Comprime y sube la carpeta `vendor/` completa al servidor dentro de `public_html/giadocgenerator/`.

## Credenciales y configuración

Coloca en `secrets/`:

- `client_secret.json` (OAuth 2.0 Client ID). Debe contener `redirect_uris` incluyendo:
  - `https://grupo-energia.com/giadocgenerator/index.php?oauth=callback`
- `service-account.json` (opcional si usas Service Account para otros fines). No se usa cuando `USE_OAUTH=true`.
- `cacert.pem` (CA bundle actualizado desde https://curl.se/ca/cacert.pem).
- `oauth_token.json` (se genera automáticamente tras el login OAuth).

Ajusta `config.php` si es necesario:

- `USE_OAUTH` debe ser `true` (ya lo está por defecto).
- `OAUTH_REDIRECT_URI` apunta a `https://grupo-energia.com/giadocgenerator/index.php?oauth=callback`.
- `DEFAULT_GDRIVE_FOLDER_ID` y `DEFAULT_GSHEET_DOCS_ID` configurados.
- `QUEUE_SECRET`: cambia a un token fuerte si vas a usar el worker por HTTP.

## Flujo OAuth

1. En Google Cloud Console, agrega en OAuth Client → Authorized redirect URIs:
   - `https://grupo-energia.com/giadocgenerator/index.php?oauth=callback`
2. En producción, abre en el navegador:
   - `https://grupo-energia.com/giadocgenerator/index.php?oauth=login`
3. Completa el consentimiento. Verifica token en:
   - `https://grupo-energia.com/giadocgenerator/index.php?health=google` → `token_exists: true`.

## Configurar el Worker

Opción A (CLI Cron - recomendado):

```
* * * * * /usr/bin/php /home/grupoene/public_html/giadocgenerator/worker.php >/dev/null 2>&1
```

O usa la ruta PHP que te dé el hosting.

Opción B (HTTP Cron):

- URL: `https://grupo-energia.com/giadocgenerator/worker.php?token=TU_TOKEN_FUERTE`
- Cambia `QUEUE_SECRET` en `config.php`.

## Verificación

- Salud general: `https://grupo-energia.com/giadocgenerator/index.php?health=google`
- Estado cola: `https://grupo-energia.com/giadocgenerator/index.php?queue=status`
- Logs: `logs/app_YYYY-MM-DD.log`

## Apps Script

- Enviar POST a `https://grupo-energia.com/giadocgenerator/index.php`.
- Respuesta inmediata: `{ status: "OK", job_id: "..." }`.
- El worker procesa el trabajo y sube a Drive/registra en Sheets.

## Seguridad

- `secrets/` y `logs/` están protegidos con `.htaccess`.
- No subas el README con secretos ni compartas `oauth_token.json`.
