Gestor de Incidencias

Documentación funcional
Vista general no técnica

Cómo funciona hoy el procesamiento de llamadas y qué valor aporta.

Esta vista resume el flujo completo desde la recepción del audio hasta el envío del mail final. Está pensada para que cualquier persona entienda rápido qué hace el sistema, cómo se conectan sus módulos y qué evidencia real existe de uso.

42 resultados generados
64,4 min de audio registrado
23,73 s promedio hasta mail
52 incidencias o temas resumidos

Flujo completo

1

Entrada

El sistema recibe audio y metadatos básicos como email, número, tipo de llamada y extensión.

2

Ingesta y cola

La API valida, guarda el archivo localmente y encola la tarea para procesarla en segundo plano.

3

Preparación del audio

Puede convertir a WAV y quitar silencios si la configuración lo requiere.

4

Transcripción

OpenAI genera el texto base. Si un audio fuera demasiado largo, el sistema puede partirlo en fragmentos.

5

Procesamiento IA

La transcripción se reorganiza como diálogo y luego se resume con estructura útil para gestión.

6

Lógica de incidencias

Cada asunto se clasifica dentro de un catálogo de incidencias o gestiones para dejarlo reutilizable.

7

Salida

Se guarda un JSON final y, si SMTP está activo, se envía un mail HTML con resumen, transcripción y audio adjunto.

Módulos principales

Ingesta

Recibe la llamada, valida y devuelve un ID de seguimiento sin bloquear el flujo.

Transcripción

Convierte audio en texto y contempla fragmentación para audios largos.

Procesamiento IA

Ordena el diálogo, distingue interlocutores y construye un resumen operativo.

Lógica de incidencias

Clasifica temas en un catálogo concreto que vuelve la información medible y accionable.

Base de propietarios

Busca coincidencias por teléfono para enriquecer la identificación del contacto.

Email

Entrega al destinatario una salida lista para trabajar sin entrar al sistema.

Arquitectura general

Hoy todo corre sobre una misma aplicación FastAPI: API, vistas web y worker de background. OpenAI aporta transcripción y procesamiento semántico. El estado se persiste en disco local y el cierre del flujo sale por SMTP.

Piezas principales

  • API y frontend en la misma app
  • Worker en memoria dentro del mismo proceso
  • Persistencia local en `data/`
  • OpenAI para transcripción y resumen
  • SMTP para envío del mail final

Secuencia simplificada

  1. Audio y metadatos
  2. API
  3. Cola
  4. Worker
  5. OpenAI
  6. Resultado JSON
  7. Mail final

Métricas reales

Estas cifras salen de la muestra local disponible en `data/results` y `data/email_logs` al 2026-04-06.

Volumen

  • 42 resultados generados
  • 52 incidencias o temas resumidos
  • 18 matches con base de contactos
  • 24 audios con fecha detectada desde nombre de archivo

Audio

  • 34 resultados con duración registrada
  • 3.864,07 segundos acumulados
  • 64,4 minutos de audio
  • 113,65 segundos de promedio
  • 586,04 segundos como máximo observado

Entrega

  • 23 resultados con tiempo hasta mail
  • 23,73 segundos de promedio hasta envío
  • 66,94 segundos como máximo observado
  • 19 registros SMTP aceptados
  • 4,56 segundos de promedio de entrega SMTP

Observaciones

  • No se persistieron métricas históricas de tokens.
  • En la muestra no hubo audios troceados en chunks.
  • Hay campos con cobertura distinta según antigüedad del resultado.

Ejemplo concreto de output

Basado en un caso real anonimizado.

Transcripción

Cliente: Llamaba por una filtración que sigue entrando en la vivienda.
Nerea: Dígame por favor qué zona está afectada.
Cliente: El dormitorio de arriba y la pared junto a la ventana.
Nerea: Tengo pendiente revisar la documentación que enviasteis.
Cliente: Cada vez que llueve vuelve a aparecer.
Nerea: Lo revisamos y os damos respuesta.

Resumen e incidencia

{
  "Customer": "Cliente anonimizado",
  "Summary": [
    {
      "Resume": "Se comunica una filtración recurrente...",
      "Incidence": "AV-07 AVERIA FILTRACION/GOTERA",
      "Reference": "Filtración recurrente en vivienda"
    }
  ]
}

El ejemplo completo y expandido está en `docs/ejemplo-output-anonimizado.md`.

Límites actuales

  • El worker no está desacoplado de la API; corre en el mismo proceso.
  • La persistencia es local, adecuada para una operación simple pero no para gran escala.
  • No existe aún un tablero nativo de observabilidad o coste.
  • El consumo de tokens no queda auditado históricamente.