# Comerciales (Pautaje)

Los **comerciales** son audios programados para sonar a horas y minutos específicos, con control de días activos y fechas de vigencia.

## Archivos `.com`

Ruta: `~/.gradio/data/comerciales/<hora>/<minuto>.com`

- Hora: 0 a 23 (sin cero a la izquierda)
- Minuto: 0 a 59 (sin cero a la izquierda)
- Ejemplo: `~/.gradio/data/comerciales/15/30.com` = tanda de las 15:30

## Formato de cada línea en un `.com`

```
/ruta/absoluta/al/audio.mp3|1234567|20250101|20251231
```

| Campo | Significado |
|-------|-------------|
| `/ruta/...` | Ruta absoluta al archivo de audio |
| `1234567` | Máscara de días activos: cada dígito = un día (1=Lun, 2=Mar, 3=Mié, 4=Jue, 5=Vie, 6=Sáb, 7=Dom). `1234567` = todos los días |
| `20250101` | Fecha de inicio de vigencia (AAAAMMDD) |
| `20251231` | Fecha de fin de vigencia (AAAAMMDD) |

### Ejemplos de máscaras de días

```
1234567   → todos los días
12345     → lunes a viernes
67        → sábado y domingo
135       → lunes, miércoles, viernes
1         → solo lunes
```

### Ejemplos de entradas `.com`

```
/home/grecord/Comerciales/spot_banco.mp3|12345|20250601|20250630
/home/grecord/Comerciales/promo_fin_semana.mp3|67|20250101|20251231
/home/grecord/Comerciales/jingle_general.mp3|1234567|20250101|20261231
```

## Cola activa `comercialeslist4`

`~/.gradio/data/tmp/comercialeslist4` contiene la cola que el player está procesando **ahora**. Solo tiene rutas (ya sin máscara ni fechas, esas ya fueron evaluadas por el scheduler):

```
/home/grecord/Comerciales/spot_banco.mp3
/home/grecord/Comerciales/jingle_general.mp3
```

## Archivo `played_breaks`

`~/.gradio/data/tmp/played_breaks` registra las tandas que ya fueron reproducidas manualmente hoy (para que el scheduler no las vuelva a disparar):

```
20250627 15:30
20250627 16:00
```

## Comandos útiles

```bash
# Ver la tanda de las 15:30
cat ~/.gradio/data/comerciales/15/30.com

# Ver todos los comerciales programados para hoy (lunes = día 1)
HOY=$(date +%u)
for h in $(seq 0 23); do
  for f in ~/.gradio/data/comerciales/$h/*.com; do
    [ -f "$f" ] || continue
    grep "|.*$HOY" "$f" && echo "  → $f"
  done
done

# Ver qué está en cola activa
cat ~/.gradio/data/tmp/comercialeslist4

# Agregar un comercial a las 16:00 de hoy (todos los días, vigente todo el año)
echo "/ruta/spot.mp3|1234567|20250101|20261231" >> ~/.gradio/data/comerciales/16/0.com

# Crear directorio si no existe
mkdir -p ~/.gradio/data/comerciales/16
echo "/ruta/spot.mp3|1234567|20250101|20261231" >> ~/.gradio/data/comerciales/16/0.com

# Reproducir tanda inmediatamente (sin esperar al scheduler)
echo "/ruta/spot.mp3" > ~/.gradio/data/tmp/comercialeslist4
touch ~/.gradio/data/tmp/cmd_play_tanda

# Ver tandas ya reproducidas hoy
cat ~/.gradio/data/tmp/played_breaks
```

## Cómo funciona el scheduler

El daemon `comercial-scheduler` (Rust) se activa en el minuto **:58** de cada hora y:
1. Lee los archivos `.com` del minuto y hora siguientes
2. Filtra por día activo (máscara) y fechas de vigencia
3. Carga las rutas válidas en `comercialeslist4`
4. El player las procesa cuando llega el momento

Si una tanda aparece en `played_breaks` con fecha/hora de hoy, el scheduler la salta (ya se reprodujo manualmente).
