# Sistema de Scraping Coto Digital

Sistema completo para extraer, procesar y visualizar el historial de compras de Coto Digital.

## Arquitectura

```
coto-system/
├── scraper/           # Scraping con Puppeteer + Bitwarden auth
├── api/              # API REST con Express
├── dashboard/        # Dashboard web (React/Vanilla JS)
├── database/         # SQLite con datos históricos
├── deploy/           # Scripts de deploy en Tailscale
└── config/          # Configuración y credenciales
```

## Características

### 1. Autenticación Segura
- Credenciales almacenadas en Bitwarden
- Sesiones persistentes con cookies
- Manejo de WAF con User-Agent móvil

### 2. Scraping Completo
- Extracción de TODOS los productos históricos
- Manejo de paginación automática
- Delays configurables para evitar bloqueos
- Reintentos automáticos

### 3. Procesamiento de Datos
- Organización por frecuencia, cantidad, fechas
- Cálculo de estadísticas
- Normalización de nombres de productos
- Categorización automática

### 4. Dashboard Web
- Ranking de productos más comprados
- Historial detallado por orden
- Estadísticas mensuales
- Búsqueda y filtros avanzados
- Visualizaciones con Chart.js

### 5. Deploy Automático
- Publicación en Tailscale bajo `/coto/`
- SSL automático
- Actualizaciones periódicas
- Monitoreo de salud

## Instalación

```bash
cd /home/ubuntu/.openclaw/workspace/coto-system
npm install
```

## Configuración

1. **Bitwarden**: Asegurar que las credenciales de Coto Digital estén en el vault
2. **Tailscale**: Verificar que el servidor esté en la red
3. **Cron**: Configurar scraping periódico

## Uso

### Scraping manual
```bash
node scraper/coto-scraper.js
```

### Iniciar API
```bash
node api/server.js
```

### Dashboard
Acceder a: `https://miopenclaw-vnic.tail9799d2.ts.net/coto/`

## Mantenimiento

- **Scraping automático**: Configurado cada 24 horas
- **Backup de datos**: Automático en `/database/backups/`
- **Logs**: En `/logs/` con rotación diaria

## Seguridad

- Credenciales nunca en código
- WAF bypass con delays y User-Agent móvil
- Base de datos local solo lectura para API
- Acceso restringido por Tailscale