renato97 6058dc642e feat: Integración automática con Notion + análisis completo del código
- Instalado notion-client SDK oficial para integración robusta
- Refactorizado services/notion_service.py con SDK oficial de Notion
  - Rate limiting con retry y exponential backoff
  - Parser Markdown → Notion blocks (headings, bullets, paragraphs)
  - Soporte para pages y databases
  - Manejo robusto de errores

- Integración automática en document/generators.py
  - PDFs se suben automáticamente a Notion después de generarse
  - Contenido completo del resumen formateado con bloques
  - Metadata rica (tipo de archivo, path, fecha)

- Configuración de Notion en main.py
  - Inicialización automática al arrancar el servicio
  - Validación de credenciales

- Actualizado config/settings.py
  - Agregado load_dotenv() para cargar variables de .env
  - Configuración de Notion (NOTION_API, NOTION_DATABASE_ID)

- Scripts de utilidad creados:
  - test_notion_integration.py: Test de subida a Notion
  - test_pipeline_notion.py: Test del pipeline completo
  - verify_notion_permissions.py: Verificación de permisos
  - list_notion_pages.py: Listar páginas accesibles
  - diagnose_notion.py: Diagnóstico completo
  - create_notion_database.py: Crear database automáticamente
  - restart_service.sh: Script de reinicio del servicio

- Documentación completa en opus.md:
  - Análisis exhaustivo del codebase (42 archivos Python)
  - Bugs críticos identificados y soluciones
  - Mejoras de seguridad (autenticación, rate limiting, CORS, CSP)
  - Optimizaciones de rendimiento (Celery, Redis, PostgreSQL, WebSockets)
  - Plan de testing (estructura, ejemplos, 80% coverage goal)
  - Roadmap de implementación (6 sprints detallados)
  - Integración avanzada con Notion documentada

Estado: Notion funcionando correctamente, PDFs se suben automáticamente
2026-01-26 17:31:17 +00:00
2025-12-16 22:32:27 +00:00

🎵 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

# 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)

# === 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

# 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

Description
No description provided
Readme 30 MiB
Languages
Python 98.9%
Dockerfile 0.7%
Shell 0.4%