# Log de coincidencia OCR → cliente (`ocr_customer_match_log`)

Cuando está **activado**, cada llamada a `OcrCustomerMatcherService::match()` puede persistir una fila en la tabla `ocr_customer_match_log` (texto del destinatario, regla, score, clientes sugeridos, etc.). Por defecto el log está **desactivado** para no escribir en base de datos ni hacer `flush` en cada match.

## Requisitos (ambos deben ser verdaderos)

1. **Entorno global**  
   Variable `OCR_CUSTOMER_MATCH_LOG_ENABLED` en `true`.  
   Si no existe o es `false`, no se escribe ningún log (ninguna compañía).

2. **Por compañía**  
   En la fila de `configocrdeployment` de esa `maincompany`, el campo **`customer_match_log_enabled`** debe ser `1` (`true`).

Definición del parámetro Symfony: `app.ocr_customer_match_log_enabled` en `config/services.yaml` (por defecto `0` si no defines la variable).

## Activar el log

### 1. Servidor / `.env`

```dotenv
### OCR: persistir intentos de match cliente en ocr_customer_match_log (requiere también flag por compañía) ###
OCR_CUSTOMER_MATCH_LOG_ENABLED=true
```

Reinicia workers / PHP-FPM o vacía caché de Symfony si aplica (`bin/console cache:clear` en despliegues que cacheen contenedor).

### 2. Base de datos

Asegúrate de haber aplicado la migración que añade la columna (por ejemplo `Version20260426120000`).

### 3. Compañía (una o varias)

**Opción A — API (admin)**  
`PATCH /api/ui-ocr-deployment-setting/update` (cuerpo JSON incluye el resto de flags OCR):

```json
{
  "requireShippingType": false,
  "requireCarrierMatch": false,
  "useAgencyAsShipper": false,
  "customerMatchLogEnabled": true
}
```

`GET /api/ui-ocr-deployment-setting/get` devuelve también `customerMatchLogEnabled`.

**Opción B — SQL directo** (sustituye `MAINCOMPANY_ID`):

```sql
UPDATE configocrdeployment
SET customer_match_log_enabled = 1
WHERE maincompany_id = MAINCOMPANY_ID;
```

## Desactivar el log

### Desactivar para todo el mundo (rápido)

En `.env` o variables del servidor:

```dotenv
OCR_CUSTOMER_MATCH_LOG_ENABLED=false
```

O elimina la variable: el valor por defecto del proyecto es **no** persistir (`app.ocr_customer_match_log_enabled_default: '0'`).

### Mantener el env en `true` pero apagar solo una compañía

API: `customerMatchLogEnabled: false` en el mismo `PATCH` de ajustes OCR.

O SQL:

```sql
UPDATE configocrdeployment
SET customer_match_log_enabled = 0
WHERE maincompany_id = MAINCOMPANY_ID;
```

## Comportamiento técnico

- La decisión se aplica al inicio de `OcrCustomerMatcherService::persistLog()`: si falta el flag global **o** el flag de compañía, no se llama a `persist` / `flush` del log.
- El log no participa en el algoritmo de match; solo es trazabilidad opcional.

## Privacidad y operación

- El log guarda texto del destinatario OCR (PII). Ajusta retención, acceso y backups según política interna.
- Con el log activo hay un `flush()` extra por match; en alto volumen valora el impacto en BD.
