v1.10.0
- Extraccion de helpers en backend: audit_helpers.py, helpers.py - Modularizacion de schemas en archivos individuales por dominio - Reduccion de audit.py en 953 lineas (74% del archivo) - Reduccion de tickets.py en 655 lineas (60% del archivo) - Expansion de auth.py con recuperacion de contrasenia y tokens - Nuevos modulos: core/email.py, core/cache.py - Reorganizacion de scripts a backend/scripts/ - Frontend: refactorizacion de audit page con array-driven components - Frontend: correccion de 11 errores ortograficos en tickets page - Frontend: proxy Docker corregido en vite.config.js - Frontend: nuevas rutas forgot-password, reset-password, organization, profile - Nuevas utilidades TS: colorUtils.ts, dateFormats.ts - 5 nuevos archivos de tests unitarios en backend/tests/unit/ - Eliminacion de 3 scripts temporales de prueba - Documentacion tecnica: CAMBIOS_v1.10.0.md, OPTIMIZACIONES_RENDIMIENTO.md
ServiceManagerWeb - Mesa de Ayuda B2B
Sistema multi-tenant de Mesa de Ayuda/Soporte Técnico empresarial para Aduanasoft.
Arquitectura
- Frontend: SvelteKit + TypeScript (portal clientes + panel interno)
- Backend: Python FastAPI + Pydantic v2
- Workers: Celery + Redis (notificaciones, SLAs, jobs)
- BD: PostgreSQL + Alembic migrations
- Auth: JWT + Refresh tokens + 2FA opcional (TOTP)
- Infra: Docker Compose local, preparado para producción
Estructura del Monorepo
ServiceManagerWeb/
├── backend/ # FastAPI app
├── frontend-client/ # SvelteKit app para clientes
├── frontend-internal/ # SvelteKit app para staff interno
├── workers/ # Celery tasks
├── db/ # Migrations y esquemas
├── docker/ # Dockerfiles específicos
├── docs/ # Documentación adicional
├── scripts/ # Scripts de desarrollo/despliegue
├── docker-compose.yml # Orquestación completa
└── .env.example # Variables de entorno
Stack Tecnológico
Backend (Python)
- FastAPI (async)
- Pydantic v2
- SQLAlchemy 2.0 (async)
- Alembic (migrations)
- Argon2 (hashing passwords)
- PyJWT
- Celery + Redis
Frontend (JavaScript/TypeScript)
- SvelteKit
- TypeScript
- TailwindCSS
- shadcn/ui o similar
- Zod (validación)
Infraestructura
- PostgreSQL 15+
- Redis 7+
- Docker & Docker Compose
- Nginx (reverse proxy)
Dominios del Sistema
- Auth: Usuarios, roles, permisos, 2FA
- Tenants: Multi-tenancy, organizaciones
- Tickets: Gestión de tickets, estados, SLAs
- Notifications: Email, plantillas, logs
- Audit: Bitácora de acciones
Roles de Usuario
Internos (Staff)
ADMIN: Control total del sistemaSUPPORT_MANAGER: Gestión de equipos y SLAsAGENT: Atención de ticketsAUDITOR: Solo lectura para auditoría
Clientes
CLIENT_ADMIN: Gestión de organización clienteCLIENT_USER: Creación y seguimiento de tickets
Quick Start
# Clonar y configurar
git clone <repo>
cd ServiceManagerWeb
cp .env.example .env
# Levantar servicios
docker-compose up -d
# Verificar estado
docker-compose ps
URLs por Defecto
- Frontend Clientes: http://localhost:3000
- Frontend Interno: http://localhost:3001
- API Backend: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Adminer (DB): http://localhost:8080
Scripts de Desarrollo
# Backend
cd backend
python -m uvicorn app.main:app --reload --port 8000
# Frontend Cliente
cd frontend-client
npm run dev -- --port 3000
# Frontend Interno
cd frontend-internal
npm run dev -- --port 3001
# Workers
cd workers
celery -A app.worker worker --loglevel=info
celery -A app.worker beat --loglevel=info
Testing
# Backend tests
cd backend
pytest
# Frontend tests
cd frontend-client
npm test
cd ../frontend-internal
npm test
Troubleshooting
Error 500 en Login / Proxy Error
Síntoma: Error 500 al intentar hacer login, o error de proxy de Vite "connect ECONNREFUSED".
Causa: Configuración incorrecta de la comunicación entre servicios de Docker.
Solución:
- En desarrollo con Docker, los servicios usan nombres de servicio (no
localhost) - Verificar
vite.config.js: el proxy debe apuntar ahttp://backend:8000 - Verificar
docker-compose.yml:PUBLIC_API_URLdebe serhttp://backend:8000 - Después de cambios, reiniciar contenedor:
docker-compose restart frontend-internal
Nota: Para desarrollo local sin Docker, cambiar el proxy a http://localhost:8000.
Tenant Slug Incorrecto
Síntoma: Error de autenticación incluso con credenciales correctas.
Causa: El tenant_slug en el login no coincide con los tenants en la BD.
Solución:
- Verificar tenants existentes:
docker exec servicemanager-backend python check_tenants.py - Actualizar el tenant_slug en el código de login
- Tenants por defecto:
aduanasoft-demo,test-tenant
Credenciales de Prueba
Email: admin@aduanasoft.com
Password: admin123
Tenant: aduanasoft-demo
Role: ADMIN
Contribución
- Fork del proyecto
- Crear feature branch (
git checkout -b feature/nueva-funcionalidad) - Commit cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a branch (
git push origin feature/nueva-funcionalidad) - Crear Pull Request
Licencia
Propietario - Aduanasoft © 2026
Description
Languages
Python
53.1%
Svelte
38.3%
TypeScript
3.4%
PowerShell
1.7%
PLpgSQL
1.2%
Other
2.3%