2 Análisis y estimación de tiempos — Features Audyn.AI
jsarmiento.leitz edited this page 2026-06-25 18:31:28 +02:00

Análisis y estimación de tiempos — Features Audyn.AI

Proyecto: AudynAI — Plataforma multi-tenant de QA de llamadas con IA
Alcance: Solo los módulos aprobados para evaluación/ejecución
Fecha: Junio 2026


Estimación resumida del alcance

Módulo Frontend Backend + DB Total
1. Auth + autorización 2 h 2 h 4 h
2.1 Listado clientes 1 h 4 h 5 h
2.2 Detalle cliente 3 h 5 h 8 h
2.3 Usuarios cliente 2 h 3 h 5 h
2.4 Reporte analítica IA 6 h 8 h 14 h
3. Gestión agentes 2 h 3 h 5 h
4.1 Modelos IA 2 h 4 h 6 h
4.2 Prompts 1 h 3 h 4 h
4.3 Rúbricas 2 h 4 h 6 h
5. Admin usuarios 2 h 3 h 5 h
6. Plantillas permisos 3 h 3 h 6 h
TOTAL ALCANCE ~68 h

Alcance del documento

Este documento analiza únicamente los features que el equipo ejecutará.

Features incluidos

# Módulo
1 Autenticación, seguridad y autorización basada en plantillas de permisos
2 Gestión de clientes (listado, detalle, usuarios, reporte analítica IA)
3 Gestión de agentes
4 Configuración Agent IA (modelos, prompts, rúbricas, ingreso y procesamiento de llamadas)
5 Administración de usuarios
6 Administración de permisos — plantillas de permisos


1. Autenticación, seguridad y autorización basada en plantillas de permisos

Descripción y flujo

Flujo de autenticación

  1. Usuario no autenticado accede a cualquier ruta WASM → redirección a /Account/Login
  2. Ingresa credenciales → ASP.NET Core Identity valida contra PostgreSQL
  3. Se emite cookie HttpOnly + estado serializado para Blazor WASM
  4. Post-login: se cargan claims (client_id, permission_template_id, authorization_level)
  5. Redirección al módulo según rol (admin → /clients o /system-users)

Flujo de autorización

  1. Cada request API y ruta WASM evalúa la plantilla de permisos activa del usuario
  2. La plantilla define, por módulo, acciones: Ver, Agregar, Editar, Eliminar, Importar, Exportar
  3. UI oculta/deshabilita acciones sin permiso; API retorna 403 si se intenta bypass
  4. Multi-tenant: usuarios client solo ven datos de su ClientId; partner ve subset; admin plataforma ve todo
Login → Claims (template + tenant) → Policy check → UI/API
                                         ↓
                              permission_template_modules

Requerimientos de Frontend (Blazor/Radzen)

Elemento Estado Trabajo pendiente
Login split hero ✅ Existe Conectar errores reales, branding final
Forgot password / Manage account ✅ Template Identity Email sender real
[Authorize] en páginas WASM ✅ Aplicado Policies granulares por módulo
SidebarUserProfile ✅ Mock Logout, nombre, rol desde claims
Ocultar botones Create/Edit/Delete ❌ Según matriz de permisos
Guards en NavMenu ❌ Filtrar ítems por permiso View

Archivos clave: AudynAi.Web/Components/Account/Pages/Authentication/Login.razor, SidebarUserProfile.razor, Routes.razor, NavMenu.razor

Requerimientos de Backend y Base de Datos

Elemento Detalle
Identity Extender IdentityUser → ApplicationUser con AuthorizationLevel, PermissionTemplateId
Persistencia PostgreSQL (Npgsql); migrar desde SQLite dev si aplica
Claims client_id, permission_template_id, is_platform_admin
Policies CanViewClients, CanEditPrompts, CanViewAiAnalysis, etc.
Email Reemplazar IdentityNoOpEmailSender por SMTP/SendGrid
Seguridad Lockout, confirmación email, HTTPS, cookies HttpOnly

Tablas (transaccional): tablas Identity existentes + extensión perfil usuario


2. Gestión de clientes

2.1 Listado de clientes activos

Descripción y flujo

  1. Usuario con permiso Clients → View accede a /clients
  2. Grid paginado: Client Name (link), Alternate ID, Status (Active/Inactive)
  3. Acciones: navegar a detalle; Add New Client (si permiso Add); Add funds (evaluar si entra en alcance — hoy en mock)
  4. Scope tenant: admin ve todos; partner ve sus clientes; client user redirige a su único cliente

Requerimientos de Frontend

Elemento Archivo Estado
Página listado Pages/Clients.razor ✅ Mock
Grid CRUD CrudDataGrid ✅ Reutilizable
Paginación server-side — ❌ Conectar API

Requerimientos de Backend y Base de Datos

  • Tabla clients: id, name, alternate_id, status, partner_id, is_active, rate_table_id, routing, flags…
  • API: GET /api/clients con paginación, sort, filtros
  • Global query filter por ClientId / partner scope
  • Índices: (status), (partner_id)

2.2 Detalle y edición de cliente

Descripción y flujo

  1. /clients/{id} — tab Details (via ClientSectionNav)
  2. Formulario extenso: identificación, partner, status, routing, rate table, master client, import template, checkboxes operativos
  3. Validación → guardar → notificación éxito/error
  4. Tabs adyacentes: Users, AI Analysis

Requerimientos de Frontend

Elemento Archivo Estado
Página detalle Pages/ClientDetail.razor ✅ Mock (~200 líneas form)
Layout tabs ClientPageLayout.razor, ClientSectionNav.razor ✅
Validadores Radzen En form ✅ Mock

Requerimientos de Backend y Base de Datos

  • API: GET/PUT /api/clients/{id}
  • Lookups: partners, rate tables (si rate table fuera de alcance, campo texto o FK nullable)
  • Auditoría: created_at, updated_at, updated_by

2.3 Usuarios asignados al cliente

Descripción y flujo

  1. Tab Users en /clients/{id}/users
  2. Grid: User Name, Authorization Level, Status
  3. Add User → diálogo AddClientUsersDialog para asignar usuarios existentes o crear nuevos
  4. Desactivar asignación sin borrar usuario global

Requerimientos de Frontend

Elemento Archivo Estado
Página Pages/ClientUsers.razor ✅ Mock
Diálogo AddClientUsersDialog.razor ✅ Mock

Requerimientos de Backend y Base de Datos

  • Tabla client_users: client_id, user_id, authorization_level, is_active
  • API: GET/POST/DELETE /api/clients/{id}/users
  • Lookup usuarios no asignados al cliente

2.4 Reporte de analítica por IA

Descripción y flujo

  1. Tab AI Analysis en /clients/{id}/ai-analysis
  2. Panel de filtros: reporting template, fechas, report type, teléfono, búsqueda en transcripción, recorded only, AI mismatch, auto-fail, duration, QA score
  3. View Report → MessagesReportDashboard con secciones:
    • Overview, Manager Verdicts, QA Score, Intent, Sentiment, Dispositions, Users, QA por categoría, Call History
  4. Click en llamada → CallDetailDialog (audio, transcript, intent, votes, manager review, export PDF)
  5. Deep link: /ai-analysis/call/{callId} abre detalle directo

Requerimientos de Frontend

Componente Archivo Estado
Filtros Pages/ClientMessages.razor ✅ Mock
Dashboard MessagesReportDashboard.razor ✅ Mock (charts Radzen)
Grid llamadas CallHistoryGrid.razor ✅ Mock
Detalle llamada CallDetailDialog.razor ✅ Mock extenso
Transcript CallTranscriptPanel.razor ✅ Mock
QA por categoría CategoryDistributionPanel.razor ✅ Mock
Mock datos CallRecordingMockData.cs, QaCategoryDistributionMockData.cs ✅ Referencia contratos

Requerimientos de Backend y Base de Datos

Lectura (consumo de datos IA — Dapper recomendado):

  • Agregaciones por dimensión filtradas por client_id + rango fechas
  • Full-text search en call_transcripts (PostgreSQL tsvector)
  • API: POST /api/clients/{id}/ai-analysis/report con body de filtros
  • API: GET /api/clients/{id}/calls paginado para grid
  • API: GET /api/clients/{id}/calls/{callId} detalle completo

Datos consumidos (generados por pipeline — ver 4.4):

Dato Uso en reporte
call_recordings Metadatos, audio URL
call_transcripts Búsqueda, panel transcript
call_intent_results Sección Intent
call_sentiment_results Sección Sentiment
call_rubric_scores QA Score, categorías
manager_reviews Manager Verdicts (humano, separado de IA)

Integración de IA

Consume outputs ya procesados por el agente IA (Módulo 4.4). No invoca LLM en tiempo real al generar el reporte.

Incluye revisión humana en detalle de llamada:

  • Veredictos: Un-reviewed, AI Correct, Agent Correct, Both Incorrect
  • Notas manager — nunca sobrescriben análisis IA

3. Gestión de agentes

Descripción y flujo

  1. /agents — administración de agentes de call center (personas), no confundir con "Agent IA"
  2. CRUD agentes: identificador, nombre, cliente asociado, status
  3. Los agentes aparecen en el reporte analítica (sección Users — conteo votos/métricas por agente)
  4. Vinculación agente ↔ metadatos de llamada (from/to) para atribución en QA
Admin → /agents → CRUD agente → asociar a client
                                    ↓
              Call metadata (from/to) → atribución en reporte IA

Requerimientos de Frontend (Blazor/Radzen)

Elemento Estado Trabajo
Página /agents ⬜ Placeholder Implementar grid CRUD desde cero
Patrón — Reutilizar CrudDataGrid, CrudPageLayout, DialogHelper
NavMenu ✅ Ítem "Agents" ya existe

Requerimientos de Backend y Base de Datos

  • Tabla agents: id, client_id, external_id, display_name, is_active, …
  • API CRUD: /api/agents scoped por tenant
  • Relación opcional con identificadores telefónicos en call_recordings

Datos: transaccional estándar


4. Configuración Agent IA


4.1 Modelos IA (Manage Client IA)

Descripción y flujo

  1. /agent-ia/models — configuración de motores IA disponibles
  2. Por engine: habilitar/deshabilitar, marcar default, ver model (Claude 3.7 Sonnet, Haiku, etc.)
  3. Pricing mode: Token Based vs Fixed Per Prompt
  4. Tarifas: input/output per 1K, batch, cache write/read
  5. Guardar configuración (MVP: global plataforma; fase 2: override por client)

Requerimientos de Frontend

Elemento Archivo Estado
Página Pages/AgentModels.razor ✅ Mock completo
Modelo fila ClientIaEngineConfigEntry.cs ✅
Mock ClientIaEnginesMockData.cs ✅ Referencia

Requerimientos de Backend y Base de Datos

  • ia_engines — catálogo (Elite, High Quality, Fast, Legacy)
  • client_ia_configs o config global MVP
  • API keys en secrets (Key Vault), no en BD plano
  • API: GET/PUT /api/ia/engines

4.2 Plantillas de prompts

Descripción y flujo

  1. /agent-ia/prompts — grid de templates
  2. Campos: ID, Name, Description, Template Text, Version, Prompt Engine
  3. Acciones: Add, Edit, Delete, View Versions
  4. Editar = nueva versión inmutable; activar versión desde historial
  5. Variables: {{transcript}}, {{raw_transcript}}, {{rubric_json}}

Requerimientos de Frontend

Elemento Archivo Estado
Página Pages/AgentPrompts.razor ✅ Mock
Versiones PromptTemplateVersionsDialog.razor ✅ Mock
Mock PromptTemplatesMockData.cs ✅

Requerimientos de Backend y Base de Datos

  • prompt_templates, prompt_template_versions
  • Regla: no UPDATE destructivo del texto activo — solo nueva versión
  • API versionada

Criterios de aceptación

  • Versionado completo con historial
  • Validación placeholders obligatorios
  • Soft delete
  • Permiso Edit requerido para modificar

4.3 Rúbricas QA editables

Descripción y flujo

  1. /agent-ia/rubrics — hoy placeholder
  2. Admin define categorías (Etiqueta Telefónica, Protocolo de Votación, …)
  3. Por categoría: criterios, peso, umbral auto-fail
  4. Export JSON → consumido por prompt qa_rubric_scoring y sección QA del reporte (2.4)

Nota producto (README): hoy la rúbrica está hardcodeada; este feature la hace editable desde UI.

Requerimientos de Frontend

Elemento Estado Trabajo
Página ⬜ Placeholder Editor categorías/criterios, preview JSON
Patrón — Secciones colapsables como dashboard QA

Requerimientos de Backend y Base de Datos

  • rubrics, rubric_categories, rubric_criteria
  • Validación: pesos suman 100 %
  • Versionado recomendado (cambio no afecta llamadas ya procesadas)

4.4 Ingreso y procesamiento de llamadas vía agente de IA

Descripción y flujo

Ingreso:

  1. Llamada/grabación llega vía API webhook, batch import o upload admin
  2. Audio → blob storage; metadatos → call_recordings
  3. Job encolado → estado Pending

Procesamiento (orquestador):

Audio → Transcripción (ASR)
     → clean_transcript (LLM)
     → intent_analysis (LLM)
     → sentiment_summary (LLM)
     → qa_rubric_scoring (LLM + rubric_json)
     → Billable_No_Vote si aplica (LLM)
     → Persistir resultados INMUTABLES
     → Completed
  1. Resultados alimentan reporte 2.4; revisión humana opcional en detalle

Requerimientos de Frontend

Elemento Estado Trabajo
UI ingreso ❌ Upload admin opcional; indicador estado en Call History
Call History ✅ Mock Icono procesamiento OK / error / pending
Retry admin ❌ Acción super admin reintentar job fallido

Requerimientos de Backend y Base de Datos

Transaccional:

  • call_recordings, ai_processing_jobs

Generado por IA (inmutable):

  • call_transcripts, call_intent_results, call_sentiment_results
  • call_rubric_scores, call_director_votes, call_auto_fail_flags

Infraestructura:

  • Blob storage (S3/Azure)
  • Background worker / cola (Hangfire, Service Bus)
  • Idempotencia por call_id / external_id

Integración de IA

Feature crítico del alcance.

  • ASR: Whisper, Deepgram u otro
  • LLM: Claude/GPT según engines 4.1
  • Prompts activos desde 4.2
  • Rúbrica JSON desde 4.3
  • Parsing JSON de respuestas; retry; dead letter queue
  • Métricas: tokens, costo, latencia

5. Administración de usuarios

Descripción y flujo

  1. /system-users — listado paginado: User Name, Authorization Level, Status
  2. /system-users/add — alta: authorization level, username, password, confirm, status, permission template
  3. Usuario creado en Identity + perfil extendido
  4. Usuarios asignables a clientes (Módulo 2.3)

Requerimientos de Frontend (Blazor/Radzen)

Pantalla Archivo Estado
Listado Pages/SystemUsers.razor ✅ Mock
Alta Pages/SystemUsersAdd.razor ✅ Mock
Mock SystemUsersMockData.cs ✅

Requerimientos de Backend y Base de Datos

  • Extensión Identity + ApplicationUser
  • API: GET/POST /api/system-users
  • Validación password, confirmación email
  • Soft delete / deactivate
  • FK a permission_templates

6. Administración de permisos — Plantillas de permisos

Descripción y flujo

  1. /system-users/permissions — listado plantillas: Template ID, Name, Permission type
  2. /system-users/permissions/edit/{id} — editor:
    • General: Template ID, Name, Display "Client" string, Permission type
    • Matriz: filas = módulos del alcance; columnas = View, Add, Edit, Delete, Import, Export
  3. Plantilla asignada a usuarios en Módulo 5
  4. Módulo 1 consume matriz para policies runtime

Módulos en matriz (alcance)

Módulo Clave sugerida
Clients clients
Client Users client_users
AI Analysis ai_analysis
Agents agents
IA Models ia_models
IA Prompts ia_prompts
IA Rubrics ia_rubrics
IA Pipeline / Calls ia_pipeline
System Users system_users
Permission Templates permission_templates

Requerimientos de Frontend (Blazor/Radzen)

Pantalla Archivo Estado
Listado Pages/SystemUsersPermissions.razor ✅ Mock
Editor matriz Pages/EditPermissionTemplate.razor ✅ Mock avanzado

Requerimientos de Backend y Base de Datos

  • permission_templates
  • permission_template_modules: template_id, module_key, can_view, can_add, can_edit, can_delete, can_import, can_export
  • API CRUD plantillas
  • AuthorizationHandler genérico

Dependencias

  • Módulo 1 (consumidor de matriz)
  • Módulo 5 (asignación a usuarios)