Files
service_manager/backend
icamarillo 75726d915f v1.7.0 - Fix: Corregido error 500 en SLA Dashboard
- Fix error de sintaxis SQL en cálculo de tickets 'at risk'
- Fix error de timezone (offset-naive vs offset-aware datetimes)
- Implementado sistema completo de SLA Management
- Agregados endpoints: /sla/dashboard, /sla/violations, /sla/at-risk
- Creadas vistas frontend para dashboard, violaciones y tickets en riesgo
- Actualizado sistema de Celery para monitoreo automático de SLAs
- Mejorada configuración de categorías con tiempos SLA personalizables
- Corregidos problemas de proxy en configuración de Vite
- Agregado troubleshooting guide en README

Archivos principales modificados:
- backend/app/api/v1/endpoints/sla.py (nuevo)
- backend/app/api/schemas/sla.py (nuevo)
- frontend-internal/src/routes/sla/ (nuevo módulo completo)
- workers/app/tasks/sla_tasks.py (queries async mejoradas)

Documentación: docs/changelog-2026-02-17.md
2026-02-17 08:22:32 -07:00
..
2026-01-12 08:17:17 -07:00
2026-02-12 14:00:04 -07:00

ServiceManagerWeb Backend

FastAPI backend para el sistema de Mesa de Ayuda B2B multi-tenant.

Estructura

backend/
├── app/
│   ├── main.py              # FastAPI app principal
│   ├── core/                # Configuración y utilidades core
│   │   ├── config.py        # Configuración con Pydantic Settings
│   │   ├── database.py      # SQLAlchemy async setup
│   │   ├── security.py      # JWT, hashing, 2FA
│   │   └── logging.py       # Structured logging
│   ├── models/              # Modelos SQLAlchemy
│   │   ├── tenant.py        # Modelo de tenant (multi-tenancy)
│   │   ├── user.py          # Modelo de usuario
│   │   └── ...              # Otros modelos
│   ├── api/                 # API routes
│   │   └── v1/              # API version 1
│   │       ├── router.py    # Router principal
│   │       └── endpoints/   # Endpoints por dominio
│   ├── middleware/          # Custom middleware
│   ├── services/            # Business logic
│   ├── repositories/        # Data access layer
│   ├── schemas/             # Pydantic schemas
│   └── utils/               # Utilidades compartidas
├── tests/                   # Tests unitarios e integración
├── migrations/              # Migraciones Alembic
├── requirements.txt         # Dependencias Python
└── pyproject.toml          # Configuración del proyecto

Características Implementadas

Core

  • FastAPI app con configuración async
  • Pydantic Settings para configuración
  • SQLAlchemy 2.0 async
  • Structured logging con structlog
  • JWT authentication con refresh tokens
  • 2FA con TOTP
  • Multi-tenancy middleware

API

  • Health checks (/health, /health/detailed)
  • Authentication endpoints básicos
  • Middleware de correlation ID y tenant
  • Error handling centralizado
  • CORS configurado

Seguridad

  • Argon2 password hashing
  • JWT con algoritmos seguros
  • TOTP 2FA implementation
  • Validation con Pydantic v2

Quick Start

# Instalar dependencias
pip install -r requirements.txt

# Variables de entorno (copiar desde raíz del proyecto)
cp ../.env.example .env

# Ejecutar en desarrollo
uvicorn app.main:app --reload --port 8000

# O usar Docker
docker-compose up backend

Testing

# Ejecutar tests
pytest

# Con coverage
pytest --cov=app tests/

# Solo tests unitarios
pytest -m "unit"

# Solo tests de integración
pytest -m "integration"

Code Quality

# Linting
ruff check .

# Formateo
black .

# Type checking
mypy .

# Fix automático
ruff check . --fix
black .

Desarrollo

Agregar nuevos endpoints

  1. Crear schema en app/schemas/
  2. Crear endpoint en app/api/v1/endpoints/
  3. Registrar router en app/api/v1/router.py
  4. Agregar tests en tests/

Modelos de base de datos

  1. Crear modelo en app/models/
  2. Importar en app/models/__init__.py
  3. Crear migración: alembic revision --autogenerate -m "descripción"
  4. Aplicar migración: alembic upgrade head

Variables de entorno

Todas las configuraciones están en app/core/config.py usando Pydantic Settings.

Ver .env.example para todas las variables disponibles.

Arquitectura

Clean Architecture

  • Presentation: FastAPI endpoints y schemas
  • Application: Services y casos de uso
  • Domain: Entidades y reglas de negocio
  • Infrastructure: Repositorios, DB, external APIs

Patrones implementados

  • Repository pattern para acceso a datos
  • Dependency injection con FastAPI Depends
  • Unit of Work para transacciones
  • Command/Query separation

Monitoring

  • Structured logging con correlation IDs
  • Health checks para load balancer
  • Métricas con Prometheus (TODO)
  • Error tracking (TODO)

Security Checklist

  • Password hashing con Argon2
  • JWT con secret keys seguras
  • CORS restrictivo
  • Input validation con Pydantic
  • SQL injection protection (SQLAlchemy)
  • Rate limiting (TODO: implementar)
  • File upload validation (TODO: implementar)
  • XSS protection (headers en nginx)

Próximos pasos

  1. Implementar repositorios y services
  2. Completar autenticación con base de datos
  3. Agregar endpoints de users y tickets
  4. Implementar rate limiting
  5. Agregar métricas y monitoring
  6. Tests de integración completos