✨ Nuevas funcionalidades: - ✅ Sistema de migraciones Alembic implementado - ✅ Dependencias frontend resueltas (SvelteKit + TypeScript) - ✅ Configuraciones VS Code optimizadas - ✅ GitHub Copilot configuración enterprise - ✅ Testing completo 100% exitoso 🔧 Cambios técnicos: - Alembic: Configuración completa con templates - Frontend: 686 paquetes npm instalados - VS Code: Debugger modernizado (python -> debugpy) - Database: 16 tablas sincronizadas - Docker: 8 servicios funcionando correctamente 🏗️ Arquitectura: - Multi-tenant B2B system ready - Production-ready configuration - Enterprise-grade development environment
195 lines
5.2 KiB
Markdown
195 lines
5.2 KiB
Markdown
# ServiceManagerWeb - Mesa de Ayuda B2B Copilot Instructions
|
|
|
|
Este proyecto es un sistema multi-tenant de Mesa de Ayuda/Soporte Técnico empresarial.
|
|
|
|
## Contexto del Proyecto
|
|
|
|
- **Empresa**: Aduanasoft (B2B)
|
|
- **Sistema**: Mesa de Ayuda multi-tenant
|
|
- **Arquitectura**: Modular Monolith con Clean Architecture
|
|
- **Target**: MVP enterprise-grade
|
|
|
|
## Stack Tecnológico
|
|
|
|
### Backend
|
|
- Python FastAPI (async)
|
|
- Pydantic v2 para validación
|
|
- SQLAlchemy 2.0 (async ORM)
|
|
- PostgreSQL como base de datos principal
|
|
- Redis para cache y broker Celery
|
|
- Celery para tareas asíncronas
|
|
- Alembic para migraciones
|
|
- Argon2/Bcrypt para hash de passwords
|
|
- PyJWT para autenticación
|
|
|
|
### Frontend
|
|
- SvelteKit + TypeScript
|
|
- Dos aplicaciones: cliente e interna
|
|
- TailwindCSS para estilos
|
|
- Zod para validación del lado cliente
|
|
|
|
### DevOps
|
|
- Docker + Docker Compose
|
|
- Nginx como reverse proxy
|
|
- Variables de entorno para configuración
|
|
- Healthchecks para servicios
|
|
|
|
## Dominios del Sistema
|
|
|
|
1. **auth**: Autenticación, usuarios, roles, 2FA
|
|
2. **tenants**: Multi-tenancy, organizaciones cliente
|
|
3. **tickets**: Core del sistema - tickets, estados, SLAs
|
|
4. **notifications**: Email, plantillas, comunicaciones
|
|
5. **audit**: Bitácora de acciones para compliance
|
|
|
|
## Roles de Usuario
|
|
|
|
- **ADMIN**: Control total (usuarios internos)
|
|
- **SUPPORT_MANAGER**: Gestión equipos y SLAs
|
|
- **AGENT**: Atención de tickets
|
|
- **AUDITOR**: Solo lectura para auditoría
|
|
- **CLIENT_ADMIN**: Gestión organización cliente
|
|
- **CLIENT_USER**: Creación/seguimiento tickets
|
|
|
|
## Reglas de Desarrollo
|
|
|
|
### Seguridad
|
|
- Siempre validar inputs con Pydantic
|
|
- Rate limiting en endpoints críticos
|
|
- Sanitizar archivos adjuntos
|
|
- Correlation ID en logs
|
|
- CORS restrictivo
|
|
|
|
### Código
|
|
- Clean Architecture por dominios
|
|
- Async/await en toda la aplicación
|
|
- Type hints obligatorios
|
|
- Docstrings en funciones públicas
|
|
- Tests unitarios + integración
|
|
|
|
### Base de Datos
|
|
- Migrations solo con Alembic
|
|
- Constraints a nivel de BD
|
|
- Índices para queries frecuentes
|
|
- Soft deletes cuando aplique
|
|
|
|
### API
|
|
- OpenAPI bien documentado
|
|
- Versionado con prefijo /v1/
|
|
- Paginación en listados
|
|
- Responses consistentes
|
|
|
|
## Comandos Útiles
|
|
|
|
```bash
|
|
# Setup inicial
|
|
docker-compose up -d
|
|
alembic upgrade head
|
|
|
|
# Desarrollo backend
|
|
uvicorn app.main:app --reload
|
|
|
|
# Testing
|
|
pytest --cov=app tests/
|
|
|
|
# Linting
|
|
ruff check . --fix
|
|
black .
|
|
mypy .
|
|
```
|
|
|
|
## Configuración de IA Especializada
|
|
|
|
### Prioridades de Asistencia
|
|
1. **Seguridad primero**: Siempre implementar autenticación/autorización en nuevos endpoints
|
|
2. **Multi-tenancy**: Verificar aislamiento de datos entre tenants en toda nueva funcionalidad
|
|
3. **Performance**: Considerar impacto en bases de datos grandes (índices, paginación, caching)
|
|
4. **Auditabilidad**: Registrar acciones sensibles en el sistema de audit
|
|
5. **Escalabilidad**: Código preparado para crecimiento empresarial
|
|
|
|
### Patrones Preferidos
|
|
|
|
#### Backend (FastAPI)
|
|
```python
|
|
# Estructura de endpoint típica
|
|
@router.post("/", response_model=schemas.TicketResponse)
|
|
async def create_ticket(
|
|
ticket: schemas.TicketCreate,
|
|
current_user: models.User = Depends(get_current_user),
|
|
db: AsyncSession = Depends(get_db)
|
|
):
|
|
# 1. Validar permisos multi-tenant
|
|
# 2. Procesar lógica de negocio
|
|
# 3. Audit log
|
|
# 4. Return response
|
|
```
|
|
|
|
#### Frontend (SvelteKit)
|
|
```typescript
|
|
// Store pattern con Zod validation
|
|
import { z } from 'zod';
|
|
import { writable } from 'svelte/store';
|
|
|
|
const TicketSchema = z.object({
|
|
title: z.string().min(5),
|
|
priority: z.enum(['LOW', 'MEDIUM', 'HIGH', 'URGENT'])
|
|
});
|
|
```
|
|
|
|
### Contexto de Archivos Clave
|
|
|
|
#### Backend Core
|
|
- `app/core/security.py`: JWT, permissions, rate limiting
|
|
- `app/middleware/tenant.py`: Multi-tenant context
|
|
- `app/models/`: SQLAlchemy models con relationships
|
|
- `app/api/v1/endpoints/`: Endpoints REST por dominio
|
|
|
|
#### Frontend Routing
|
|
- `frontend-internal/`: Panel administrativo interno
|
|
- `frontend-client/`: Portal de clientes
|
|
- Ambos usan SvelteKit con layout compartido
|
|
|
|
#### Workers/Tasks
|
|
- `workers/app/tasks/`: Tareas Celery asíncronas
|
|
- `email_tasks.py`: Notificaciones y plantillas
|
|
- `sla_tasks.py`: Monitoreo de SLAs automático
|
|
|
|
### Troubleshooting Común
|
|
|
|
#### Database Issues
|
|
```bash
|
|
# Reset migrations
|
|
docker-compose exec backend alembic downgrade base
|
|
docker-compose exec backend alembic upgrade head
|
|
```
|
|
|
|
#### Multi-tenant Debug
|
|
- Verificar `tenant_context` middleware
|
|
- Headers: `X-Tenant-ID` en requests
|
|
- Queries siempre filtrar por tenant_id
|
|
|
|
#### Frontend Build Errors
|
|
```bash
|
|
cd frontend-internal && npm run build
|
|
cd frontend-client && npm run build
|
|
```
|
|
|
|
### Convenciones de Desarrollo
|
|
|
|
#### Naming
|
|
- **Models**: PascalCase (User, Ticket, TenantOrganization)
|
|
- **Endpoints**: kebab-case (/api/v1/user-management/)
|
|
- **Components**: PascalCase.svelte (TicketCard.svelte)
|
|
- **Stores**: camelCase (ticketStore.ts)
|
|
|
|
#### Error Handling
|
|
- Backend: HTTPException con status codes apropiados
|
|
- Frontend: Toast notifications para UX
|
|
- Logs: Structured logging con correlation IDs
|
|
|
|
#### Testing Strategy
|
|
- Unit: Lógica de negocio y validaciones
|
|
- Integration: Endpoints completos con DB
|
|
- E2E: Flujos críticos multi-tenant
|
|
|
|
Cuando trabajes en este proyecto, siempre considera la naturaleza multi-tenant y empresarial del sistema. |