# 🎵 CBCFacil v9

Sistema de IA para procesamiento inteligente de documentos (audio, PDF, texto) con integración a Nextcloud y dashboard web interactivo.

## ✨ Características Principales

- 🎙️ **Transcripción de Audio** - Whisper con soporte GPU/CPU
- 📝 **Generación de Resúmenes** - Claude AI o Gemini
- 📄 **Múltiples Formatos** - Genera TXT, MD, DOCX, PDF
- ☁️ **Sincronización Nextcloud** - Descarga y sube automáticamente
- 🖥️ **Dashboard Web** - Monitoreo y regeneración de resúmenes
- 📱 **Notificaciones Telegram** - Alertas en tiempo real
- 🔄 **Reprocesamiento** - Regenera resúmenes sin re-transcribir

## 🏗️ Arquitectura

```
┌─────────────────────────────────────────────────────────────────────────┐
│                              CBCFacil v9                                │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│   ┌─────────────┐     ┌─────────────┐     ┌─────────────┐              │
│   │  Nextcloud  │────▶│  Processor  │────▶│  AI Service │              │
│   │  (WebDAV)   │     │Audio/PDF/TXT│     │Claude/Gemini│              │
│   └─────────────┘     └─────────────┘     └─────────────┘              │
│         │                    │                   │                      │
│         │                    ▼                   ▼                      │
│         │             ┌─────────────┐     ┌─────────────┐              │
│         │             │   Whisper   │     │  Document   │              │
│         │             │    (GPU)    │     │  Generator  │              │
│         │             └─────────────┘     └─────────────┘              │
│         │                                        │                      │
│         ▼                                        ▼                      │
│   ┌─────────────────────────────────────────────────────┐              │
│   │               Dashboard Web (Flask)                  │              │
│   │  • Vista de archivos  • Regenerar resúmenes         │              │
│   │  • Panel de versiones • Previsualización            │              │
│   └─────────────────────────────────────────────────────┘              │
│                              │                                          │
│                              ▼                                          │
│                       ┌─────────────┐                                  │
│                       │  Telegram   │                                  │
│                       │ (Notifica)  │                                  │
│                       └─────────────┘                                  │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘
```

## 📁 Estructura del Proyecto

```
cbcfacil/
├── main.py                    # Punto de entrada principal
├── config/
│   └── settings.py            # Configuración centralizada
├── services/
│   ├── webdav_service.py      # Cliente WebDAV/Nextcloud
│   ├── vram_manager.py        # Gestión memoria GPU
│   ├── telegram_service.py    # Notificaciones
│   └── ai/
│       ├── claude_provider.py # Provider Claude (Z.ai)
│       ├── gemini_provider.py # Provider Gemini
│       └── provider_factory.py
├── processors/
│   ├── audio_processor.py     # Transcripción Whisper
│   ├── pdf_processor.py       # OCR y extracción
│   └── text_processor.py      # Clasificación
├── document/
│   └── generators.py          # Genera DOCX, PDF, Markdown
├── storage/
│   └── processed_registry.py  # Registro de procesados
├── api/
│   └── routes.py              # API REST + Dashboard
├── templates/
│   └── index.html             # Dashboard UI
└── downloads/                 # Archivos descargados
```

## 🚀 Instalación

### Requisitos
- Python 3.10+
- NVIDIA GPU + CUDA 12.1+ (opcional, fallback a CPU)
- Nextcloud con WebDAV habilitado

### Instalación Rápida

```bash
# Clonar repositorio
git clone https://gitea.cbcren.online/renato97/cbcren2026.git
cd cbcren2026

# Crear entorno virtual
python3 -m venv .venv
source .venv/bin/activate

# Instalar dependencias
pip install -r requirements.txt

# Configurar
cp .env.example .env
nano .env  # Editar con tus credenciales

# Ejecutar
python3 main.py
```

## ⚙️ Configuración

### Variables de Entorno (.env)

```bash
# === NEXTCLOUD/WEBDAV ===
NEXTCLOUD_URL=https://tu-nextcloud.com/remote.php/webdav
NEXTCLOUD_USER=usuario
NEXTCLOUD_PASSWORD=contraseña

# === AI PROVIDERS ===
GEMINI_API_KEY=AIza...              # Para resúmenes con Gemini
# o
ANTHROPIC_AUTH_TOKEN=sk-ant-...     # Para resúmenes con Claude

# === TELEGRAM (Opcional) ===
TELEGRAM_TOKEN=bot_token
TELEGRAM_CHAT_ID=chat_id

# === DASHBOARD ===
DASHBOARD_HOST=0.0.0.0
DASHBOARD_PORT=5000
```

## 🖥️ Dashboard Web

El dashboard se ejecuta en `http://localhost:5000` junto con el servicio principal.

### Funcionalidades

| Característica | Descripción |
|----------------|-------------|
| 📊 **Vista de Archivos** | Lista todos los archivos de audio con estado |
| 🔍 **Búsqueda y Filtros** | Filtra por local/WebDAV, ordena por fecha/nombre |
| 👁️ **Panel de Preview** | Visualiza transcripciones y resúmenes |
| 📁 **Tab Versiones** | Lista todos los formatos generados (TXT, MD, DOCX, PDF) |
| ✨ **Regenerar Resumen** | Genera nueva versión del resumen con IA |
| 🔄 **Resetear Estado** | Marca archivo como no procesado |

### API REST Endpoints

```
GET  /api/files              # Lista archivos
GET  /api/files-detailed     # Lista con info de transcripciones
GET  /api/transcription/<f>  # Obtiene transcripción
GET  /api/summary/<f>        # Obtiene resumen
GET  /api/versions/<f>       # Lista versiones generadas
POST /api/regenerate-summary # Regenera resumen desde transcripción
POST /api/mark-unprocessed   # Resetea estado de archivo
GET  /health                 # Estado del servicio
```

## 🔄 Flujo de Procesamiento

1. **Detección** - El servicio monitorea Nextcloud cada 5 segundos
2. **Descarga** - Archivos nuevos se descargan localmente
3. **Transcripción** - Whisper convierte audio a texto (.txt)
4. **Resumen** - Claude/Gemini genera resumen estructurado
5. **Documentos** - Se generan .md, .docx, .pdf
6. **Subida** - Documentos se suben a Nextcloud
7. **Notificación** - Telegram notifica finalización

## 📱 Regenerar Resúmenes

Cuando un resumen no es satisfactorio, puedes regenerarlo:

### Desde el Dashboard
1. Clic en el archivo procesado
2. Panel lateral se abre con transcripción/resumen
3. Clic en "✨ Regenerar" o tab "📁 Versiones"
4. Nueva versión se genera y reemplaza la anterior

### Desde la Lista
- Archivos procesados muestran botón "✨ Regenerar"
- Clic directo sin abrir panel lateral

## 🛠️ Uso CLI

```bash
# Ejecutar servicio completo
python3 main.py

# Transcribir audio específico
python3 main.py whisper archivo.mp3 ./output/

# Procesar PDF específico
python3 main.py pdf documento.pdf ./output/
```

## 📊 Métricas

| Componente | Performance |
|------------|-------------|
| Transcripción Whisper | ~1x duración audio (GPU) |
| Resumen Gemini | ~5-15s por documento |
| OCR PDF | ~2-5s por página |
| Inicio del servicio | ~5-10s |

## 🔧 Tecnologías

- **Backend**: Python 3.10+, Flask
- **IA**: OpenAI Whisper, Google Gemini, Anthropic Claude
- **Frontend**: HTML5, CSS3, JavaScript (Vanilla)
- **Storage**: Nextcloud (WebDAV)
- **GPU**: CUDA, PyTorch

## 📝 Licencia

MIT License

---

**Desarrollado por CBC** | Última actualización: Enero 2026
