Files
service_manager/RELEASE_NOTES_v1.5.1.md
icamarillo 96084b89c0 chore: Limpieza de proyecto y optimización
🗑️ Eliminados:
- Scripts temporales de debugging (9 archivos en backend/)
- Archivos temporales en raíz (4 archivos)
- Reportes de cobertura htmlcov/ (~543 KB)
- Directorio backups/
- Script de migración update_password_hashes.py

 Optimizaciones:
- Creado scripts/db_utils.py - Herramienta consolidada para administración
- Actualizado README.md con sección de Utilidades Administrativas
- Mejorado .gitignore para prevenir archivos temporales futuros

📦 Espacio liberado: ~600-800 KB

Las funcionalidades de debugging ahora están consolidadas en:
- scripts/db_utils.py (herramienta CLI profesional)
- Documentación en README.md
- Alternativas sugeridas (psql, tests, API docs)
2026-02-12 09:34:30 -07:00

5.2 KiB

Release Notes - ServiceManagerWeb v1.5.1

Fecha: 12 de Febrero, 2026
Rama: main
Commit: 771b6eb


📦 Información de la Versión

Versión Anterior: v1.4.1.4
Versión Actual: v1.5.1
Tipo de Release: Minor (Funcionalidades + Correcciones Críticas)


🔒 Seguridad y Control de Acceso

Control de Acceso Basado en Roles (RBAC)

Implementación Completa

  • Staff Interno (ADMIN, AGENT, SUPPORT_MANAGER)

    • Acceso a todos los tickets del tenant
    • Puede ver/modificar cualquier ticket
    • Control total sobre recursos compartidos
  • Clientes (CLIENT_USER, CLIENT_ADMIN)

    • Acceso solo a sus propios tickets
    • No pueden ver tickets de otros clientes del mismo tenant
    • Restricciones adecuadas implementadas

Endpoints Protegidos

Categories (/api/v1/categories)

  • GET: Todos los roles (lectura)
  • POST/PUT/DELETE: Solo ADMIN y SUPPORT_MANAGER

Systems (/api/v1/systems)

  • GET: Todos los roles (lectura)
  • POST/PUT/DELETE: Solo ADMIN y SUPPORT_MANAGER

Tickets (/api/v1/tickets)

  • GET (listado): Filtrado según rol
  • GET (detalle): Validación de permisos por rol
  • POST: Todos (según su alcance)
  • PATCH/DELETE: Validación por rol y propiedad

Multi-Tenancy Reforzado

  • Header X-Tenant-ID agregado en frontend-internal
  • Validación de tenant en todos los endpoints
  • Aislamiento estricto de datos entre tenants
  • Prevención de acceso cruzado entre organizaciones

🐛 Correcciones Críticas

Fix: Números de Ticket Duplicados

Problema Original:

  • Generación de números con simple contador
  • Race conditions en creación simultánea
  • Violación de constraint unique uq_tickets_tenant_number

Solución Implementada:

# Retry logic con 3 intentos
# Búsqueda del MAX número existente
# Manejo específico de errores de llave duplicada
for attempt in range(max_retries):
    last_number = get_max_ticket_number()
    next_number = last_number + 1
    try:
        create_ticket(next_number)
        break
    except DuplicateKeyError:
        if attempt < max_retries - 1:
            continue  # Reintentar

Resultado:

  • 0% fallos por duplicados
  • Manejo robusto de alta concurrencia
  • Recuperación automática de errores

Mejoras de Código

Backend

  1. Validación Robusta

    • Type hints completos en todos los endpoints
    • Validación de permisos antes de queries
    • Mensajes de error descriptivos
  2. Manejo de Excepciones

    • Try/catch específicos por tipo de error
    • Rollback automático en fallos
    • Logging estructurado
  3. Documentación

    • Docstrings actualizados con información de permisos
    • Comentarios explicativos en lógica compleja
    • Ejemplos de uso en código

Frontend

  1. API Client
    • Header X-Tenant-ID en todas las peticiones
    • Manejo consistente de errores
    • Type safety mejorado

📚 Documentación

Archivos Nuevos

  1. CHANGELOG.md

    • Historial completo de versiones
    • Formato estándar Keep a Changelog
    • Categorización por tipo de cambio
  2. test_rbac.py

    • Script de validación de permisos
    • Tests automatizados de RBAC
    • Verificación de aislamiento multi-tenant

Archivos Actualizados

  • backend/pyproject.toml → v1.5.1
  • frontend-internal/package.json → v1.5.1
  • frontend-client/package.json → v1.5.1
  • Endpoints: tickets.py, categories.py, systems.py

🧪 Testing

Scripts de Validación

# Test de control de acceso
python backend/test_rbac.py

# Test de creación de tickets
python backend/test_ticket_numbers.py

# Verificar usuarios y roles
python backend/list_all_users.py

Cobertura

  • RBAC implementado y validado
  • Multi-tenancy verificado
  • Generación de números probada
  • Endpoints protegidos confirmados

💾 Backup

Ubicación: ../backups/ServiceManagerWeb_v1.5.1_backup_20260212_085751

Contenido:

  • Código fuente completo
  • Configuraciones
  • Scripts y utilidades
  • Documentación

Exclusiones:

  • node_modules/
  • .git/
  • pycache/
  • logs/
  • uploads/

🚀 Despliegue

Para Subir al Repositorio Remoto

# Subir commit
git push origin main

# Subir tag
git push origin v1.5.1

Para Desplegar en Producción

  1. Pull de la versión

    git fetch --tags
    git checkout v1.5.1
    
  2. Actualizar dependencias

    docker-compose pull
    docker-compose build
    
  3. Reiniciar servicios

    docker-compose down
    docker-compose up -d
    
  4. Verificar estado

    docker-compose ps
    curl http://localhost:8000/health
    

⚠️ Breaking Changes

Ninguno: Esta versión es completamente compatible con v1.4.x


📊 Estadísticas

  • Archivos modificados: 8
  • Líneas agregadas: 336
  • Líneas eliminadas: 101
  • Commits: 1
  • Tags: 1

👥 Contribuidores


🔗 Referencias

  • Commit: 771b6eba30
  • Tag: v1.5.1
  • Rama: main
  • Changelog: CHANGELOG.md

Generado automáticamente el 12 de Febrero, 2026