Files
service_manager/.github/copilot-instructions.md
icamarillo 896c99d586 🚀 Release v1.3.2: Sistema completamente configurado y optimizado
 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
2026-02-05 13:00:56 -07:00

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.