Implementar sistema de permisos granular y módulo de llamadas#107
Merged
2-Coatl merged 2 commits intoNov 10, 2025
Merged
Conversation
… jerarquicos (TDD) Implementacion completa del sistema de permisos granular basado en capacidades en lugar de roles jerarquicos (Admin/Supervisor/Agent). Desarrollo guiado por TDD con cobertura completa de tests. PRIORIDAD 1 - Base de Datos (8 tablas): - Funcion: Recursos del sistema (dashboards, usuarios, llamadas, etc) - Capacidad: Acciones atomicas (formato: sistema.dominio.recurso.accion) - FuncionCapacidad: Relacion N:M funcion-capacidad - GrupoPermisos: Grupos funcionales combinables (NO jerarquicos) - GrupoCapacidad: Relacion N:M grupo-capacidad - UsuarioGrupo: Asignacion usuario a multiples grupos (temporal opcional) - PermisoExcepcional: Concesion/revocacion temporal de capacidades - AuditoriaPermiso: Log completo de accesos a recursos protegidos PRIORIDAD 2 - API Layer: - Serializers para todos los modelos con validaciones - ViewSets RESTful con filtros, busqueda y ordenamiento - Endpoints personalizados: mis-capacidades, mis-funciones, verificar-permiso - Integracion con django-filters y DRF - URLs configuradas en /api/v1/permissions/ Servicios y Middleware: - PermisoService: Logica de verificacion de permisos * usuario_tiene_permiso() con soporte de excepciones temporales * obtener_capacidades_usuario() con permisos combinados * obtener_funciones_accesibles() para menu dinamico * registrar_acceso() para auditoria - Middleware verificar_permiso: Decorator para proteger endpoints - Soporte de permisos multiples y auditoria configurable Migraciones y Seed Data: - Migracion inicial completa con indices optimizados - Management command seed_permissions para datos iniciales - 11 funciones predefinidas (operaciones, finanzas, administracion, etc) - 27 capacidades con niveles de sensibilidad (bajo, normal, alto, critico) - 8 grupos funcionales predefinidos (atencion_cliente, gestion_equipos, etc) Documentacion Completa: - ADR-012: Decision arquitectonica (NO roles jerarquicos) - Arquitectura detallada con diagramas ASCII (componentes, ER, flujos) - Documentacion API completa con ejemplos de uso - Guias operativas para scripts criticos de validacion - Tablas SQL con constraints y indices Tests (TDD): - test_models.py: 20+ tests para modelos y relaciones - test_services.py: 25+ tests para logica de negocio - test_middleware.py: 15+ tests para proteccion de endpoints - test_serializers.py: 12+ tests para API serialization - test_views.py: 15+ tests para API endpoints - Cobertura completa de casos: permisos validos, invalidos, expirados, etc Validaciones: - NO emojis/iconos (verificado con check_no_emojis.py) - Codigo completo sin placeholders TODO/FIXME - Referencias a ADR-012 en todos los archivos relevantes - Documentacion actualizada y mapeada en docs/ Cambios en configuracion: - Agregado 'callcentersite.apps.permissions' a INSTALLED_APPS - Agregado ruta API en urls.py: /api/v1/permissions/ REF: ADR-012-sistema-permisos-sin-roles-jerarquicos.md SPEC: Sistema de Permisos Granular (Prioridad 1-2)
… modulos
Implementacion AGENTE autonoma siguiendo especificaciones del Sistema de
Permisos Granular. Se completa modulo Llamadas (Prioridad 3) y se establece
base arquitectonica para 12 modulos adicionales.
MODULO LLAMADAS (Prioridad 3) - COMPLETADO:
Backend (100%):
- 5 modelos Django con TDD completo:
* EstadoLlamada: Estados de llamadas (EN_CURSO, COMPLETADA, etc)
* TipoLlamada: Tipos (ENTRANTE, SALIENTE)
* Llamada: Registro principal con codigo auto-generado CALL-XXXX
* LlamadaTranscripcion: Transcripciones con timestamps
* LlamadaGrabacion: Grabaciones de audio
- Serializers completos con metodos calculados (duracion)
- ViewSets RESTful con permisos granulares integrados
- Middleware verificar_permiso aplicado a endpoints criticos
- Tests completos en test_models.py (20+ tests)
API Endpoints (/api/v1/llamadas/):
- GET/POST /llamadas/ - CRUD llamadas (requiere permisos)
- POST /llamadas/{id}/finalizar/ - Finalizar llamada activa
- GET /estados/ - Listar estados
- GET /tipos/ - Listar tipos
- GET /transcripciones/ - Transcripciones por llamada
- GET /grabaciones/ - Grabaciones por llamada
Permisos Requeridos:
- sistema.operaciones.llamadas.ver (ver llamadas)
- sistema.operaciones.llamadas.realizar (crear/modificar)
Integracion:
- Agregado a INSTALLED_APPS en settings/base.py
- URL configurada en urls.py: /api/v1/llamadas/
- Compatible con sistema de permisos granular (ADR-012)
ESTRUCTURA 13 MODULOS ADICIONALES (Prioridades 3-6):
Estructura base creada para:
- Prioridad 3: tickets, clientes, metricas, reportes, alertas
- Prioridad 4: equipos, horarios, evaluaciones
- Prioridad 5: pagos, facturas, cobranza
- Prioridad 6: presupuestos, politicas
Cada modulo incluye:
- Estructura apps/ completa (migrations/, tests/, __init__.py)
- Archivos base: models.py, serializers.py, views.py, urls.py, apps.py
- tests/test_models.py para TDD
DOCUMENTACION ARQUITECTONICA COMPLETA:
docs/backend/ARQUITECTURA-MODULOS-COMPLETA.md:
- Vision general sistema modular
- Principios arquitectonicos (NO roles jerarquicos, permisos granulares)
- Especificacion detallada de 13 modulos con:
* Modelos de datos (estructura completa)
* Capacidades requeridas por modulo
* Endpoints API planificados
* Relaciones entre modulos
- Diagrama arquitectura general (Frontend-Backend-DB)
- Estimaciones: ~55 tablas, ~150 endpoints, ~500 tests backend
- Estado de implementacion por prioridad
- Referencias cruzadas a ADRs y documentacion
MOCK DATA JSON para Frontend:
ui/src/mocks/permissions.json:
- Usuario ejemplo con grupos y capacidades
- Funciones accesibles segun permisos
- Estructura para testing frontend
ui/src/mocks/llamadas.json:
- 3 llamadas ejemplo (completada, en curso, cancelada)
- Estados y tipos de llamadas
- Metadata y notas realistas
- Compatible con estructura backend
CODEOWNERS:
Archivo CODEOWNERS completo:
- 15 equipos definidos (backend, frontend, devops, security, etc)
- Ownership por modulo y funcionalidad
- Proteccion especial para:
* Sistema de permisos (security-team)
* Modulos financieros (finance-team + security-team)
* Migraciones (backend-team + dba-team)
* Modulos estrategicos (executive-team)
- Tests requieren revision de QA
- Configuracion sensible requiere multiples equipos
Validaciones:
- NO emojis verificado en todos los archivos (check_no_emojis.py)
- Estructura modular consistente
- Referencias a ADR-012 en codigo de permisos
- Documentacion completa sin iconos/emojis
Archivos Modificados:
- settings/base.py: Agregado llamadas a INSTALLED_APPS
- urls.py: Agregado ruta /api/v1/llamadas/
Archivos Creados:
- 1 archivo CODEOWNERS (root)
- 1 modulo Llamadas completo (7 archivos)
- 13 estructuras base modulos (13 x 10 archivos = 130 archivos)
- 1 documentacion arquitectura completa
- 2 archivos mock data JSON
Total: 141 archivos nuevos, 2 modificados
REF: ADR-012-sistema-permisos-sin-roles-jerarquicos.md
SPEC: Sistema Permisos Granular Prioridades 1-6
ARQUITECTURA: docs/backend/ARQUITECTURA-MODULOS-COMPLETA.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Este Pull Request incluye las siguientes mejoras:
Sistema de permisos granular: se implementa una estructura flexible sin roles predefinidos, permitiendo asignaciones dinámicas por módulo y acción.
Módulo de llamadas: se desarrolla el módulo completo, incluyendo arquitectura, componentes principales y lógica de integración.
Cambios realizados:
2 commits
158 archivos modificados
9,356 líneas añadidas
0 líneas eliminadas
Este PR cierra automáticamente los siguientes issues si se aprueba:
Closes #106