1. Arquitectura y Componentes
1. Arquitectura y Componentes del Sistema
Esta sección proporciona una visión completa de la arquitectura técnica del sistema DTEM, incluyendo sus componentes, flujos de datos y stack tecnológico.
1.1. Arquitectura General
1.1.1. Visión de Alto Nivel
DTEM (Documentación Técnica y Electrónica de Mercancías) es una plataforma basada en microservicios diseñada para gestionar el ciclo de vida completo de los Documentos Tributarios Electrónicos (DTE) según las regulaciones del Servicio de Impuestos Internos (SII) de Chile.
1.1.2. Componentes Principales
Frontend Layer
- Web Application: Interfaz de usuario basada en HTML5/CSS3/JavaScript
- Mobile Responsive: Adaptación para dispositivos móviles
- Admin Dashboard: Panel de administración técnica
API Gateway
- Authentication & Authorization: Gestión de accesos y tokens
- Rate Limiting: Control de tráfico y prevención de abusos
- Request Routing: Enrutamiento inteligente a microservicios
Core Services
- DTE Service: Gestión de documentos tributarios
- CAF Service: Administración de Códigos de Autorización de Folios
- User Service: Gestión de usuarios y perfiles
- Notification Service: Sistema de notificaciones y alertas
- Validation Service: Validación de documentos y reglas de negocio
Data Layer
- Primary Database: PostgreSQL para datos transaccionales
- Cache Layer: Redis para caché de alto rendimiento
- File Storage: Almacenamiento de documentos XML/PDF
Integration Layer
- SII Integration: Conector con servicios del SII
- ERP Connectors: Integración con sistemas ERP externos
- Webhook System: Notificaciones asíncronas a sistemas externos
1.1.3. Diagrama de Arquitectura
┌─────────────────────────────────────────────────────────────┐
│ CLIENT LAYER │
├─────────────────┬─────────────────┬─────────────────────────┤
│ Web Client │ Mobile Client │ External Systems │
└─────────────────┴─────────────────┴─────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ API GATEWAY │
│ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │
│ │ Auth │ Rate Limit │ Router │ Monitor │ │
│ └─────────────┴─────────────┴─────────────┴─────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ MICROSERVICES LAYER │
│ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │
│ │ DTE Service │ CAF Service │User Service │Notif Service│ │
│ └─────────────┴─────────────┴─────────────┴─────────────┘ │
│ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │
│ │Val Service │File Service │Report Service│Audit Service│ │
│ └─────────────┴─────────────┴─────────────┴─────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │
│ │ PostgreSQL │ Redis │File Storage │ Backup │ │
│ └─────────────┴─────────────┴─────────────┴─────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ INTEGRATION LAYER │
│ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │
│ │ SII API │ ERP Connect │ Webhooks │ Email │ │
│ └─────────────┴─────────────┴─────────────┴─────────────┘ │
└─────────────────────────────────────────────────────────────┘
1.2. Microservicios Detallados
1.2.1. DTE Service
Responsabilidades:
- Creación y gestión de DTEs
- Validación de estructura XML
- Firma digital de documentos
- Envío al SII
- Gestión de estados y ciclos de vida
Endpoints Principales:
POST /api/v1/dte/create # Crear nuevo DTE
GET /api/v1/dte/{id} # Obtener DTE por ID
PUT /api/v1/dte/{id}/status # Actualizar estado
POST /api/v1/dte/{id}/send # Enviar al SII
GET /api/v1/dte/list # Listar DTEs
Base de Datos:
- Tabla:
dte_documents - Índices:
user_id,document_type,status,created_at
1.2.2. CAF Service
Responsabilidades:
- Gestión de Códigos de Autorización de Folios
- Control de rangos de folios disponibles
- Validación de folios antes de uso
- Alertas de agotamiento de folios
Endpoints Principales:
POST /api/v1/caf/upload # Cargar nuevo CAF
GET /api/v1/caf/available # Folios disponibles
POST /api/v1/caf/reserve # Reservar folios
GET /api/v1/caf/status # Estado de CAFs
Lógica de Negocio:
- Validación de firma del CAF
- Control de concurrencia en asignación de folios
- Cálculo automático de umbrales de alerta
1.2.3. User Service
Responsabilidades:
- Gestión de usuarios y autenticación
- Administración de perfiles y permisos
- Gestión de sesiones y tokens
- Auditoría de accesos
Modelo de Datos:
users (id, email, password_hash, profile_id, status, created_at)
profiles (id, name, permissions_json, created_at)
sessions (id, user_id, token, expires_at, created_at)
audit_logs (id, user_id, action, resource, timestamp, ip_address)
1.2.4. Notification Service
Responsabilidades:
- Envío de notificaciones por email
- Gestión de colas de mensajes
- Reintentos automáticos
- Plantillas de notificación
Canales Soportados:
- Email (SMTP)
- SMS (integración con proveedores)
- Webhooks
- Push notifications (mobile)
1.3. Flujo de Datos
1.3.1. Flujo de Emisión de DTE
sequenceDiagram
participant User
participant Frontend
participant API Gateway
participant DTE Service
participant CAF Service
participant Validation Service
participant SII API
participant Database
User->>Frontend: Iniciar emisión DTE
Frontend->>API Gateway: POST /api/v1/dte/create
API Gateway->>DTE Service: Crear DTE
DTE Service->>CAF Service: Reservar folio
CAF Service-->>DTE Service: Folio reservado
DTE Service->>Validation Service: Validar estructura
Validation Service-->>DTE Service: Validación OK
DTE Service->>Database: Guardar DTE
DTE Service->>SII API: Enviar documento
SII API-->>DTE Service: Acuse de recibo
DTE Service->>Database: Actualizar estado
DTE Service-->>API Gateway: Respuesta
API Gateway-->>Frontend: DTE creado
Frontend-->>User: Confirmación
1.3.2. Flujo de Autenticación
sequenceDiagram
participant User
participant Frontend
participant API Gateway
participant User Service
participant Redis Cache
participant Database
User->>Frontend: Login credentials
Frontend->>API Gateway: POST /api/auth/login
API Gateway->>User Service: Authenticate
User Service->>Database: Verify credentials
Database-->>User Service: User data
User Service->>Redis Cache: Store session
User Service-->>API Gateway: JWT token
API Gateway-->>Frontend: Authentication response
Frontend-->>User: Login successful
1.4. Stack Tecnológico
1.4.1. Backend Technologies
| Componente | Tecnología | Versión | Propósito |
|---|---|---|---|
| Runtime | Node.js | 18.x | Ejecución de microservicios |
| Framework | Express.js | 4.18 | API REST y middleware |
| Database | PostgreSQL | 14+ | Base de datos principal |
| Cache | Redis | 7.x | Caché y sesiones |
| Message Queue | RabbitMQ | 3.11 | Comunicación asíncrona |
| Search | Elasticsearch | 8.x | Búsqueda y analytics |
1.4.2. Frontend Technologies
| Componente | Tecnología | Versión | Propósito |
|---|---|---|---|
| Framework | Vue.js | 3.x | Interfaz de usuario |
| UI Library | Element Plus | 2.x | Componentes UI |
| Build Tool | Vite | 4.x | Build y desarrollo |
| CSS Framework | Tailwind CSS | 3.x | Estilos y diseño |
| State Management | Pinia | 2.x | Gestión de estado |
1.4.3. Infrastructure & DevOps
| Componente | Tecnología | Versión | Propósito |
|---|---|---|---|
| Containerization | Docker | 24.x | Contenedores |
| Orchestration | Kubernetes | 1.27 | Orquestación |
| CI/CD | GitLab CI | Latest | Integración continua |
| Monitoring | Prometheus | 2.40 | Métricas |
| Logging | ELK Stack | 8.x | Logs centralizados |
| Security | Vault | 1.13 | Gestión de secretos |
1.4.4. Development Tools
| Componente | Tecnología | Versión | Propósito |
|---|---|---|---|
| Language | TypeScript | 5.x | Tipado estático |
| Testing | Jest | 29.x | Unit tests |
| API Testing | Postman | Latest | API testing |
| Code Quality | ESLint | 8.x | Linting |
| Documentation | Hugo | 0.110 | Documentación |
1.5. Patrones de Diseño
1.5.1. Patrones Arquitectónicos
Microservices Pattern
- Desacoplamiento fuerte entre servicios
- Comunicación vía APIs REST
- Base de datos por servicio (donde aplica)
API Gateway Pattern
- Punto único de entrada
- Enrutamiento inteligente
- Cross-cutting concerns centralizados
CQRS (Command Query Responsibility Segregation)
- Separación de operaciones de lectura y escritura
- Optimización independiente para cada caso de uso
Event-Driven Architecture
- Publicación de eventos para desacoplamiento
- Procesamiento asíncrono de eventos
- Event sourcing para auditoría
1.5.2. Patrones de Datos
Database per Service
- Cada microservicio con su propia base de datos
- Aislamiento de datos
- Escalabilidad independiente
CQRS with Event Sourcing
- Eventos como fuente de verdad
- Reconstrucción de estado desde eventos
- Auditoría completa de cambios
Read Model Optimization
- Vistas materializadas para consultas complejas
- Cache de resultados frecuentes
- Índices optimizados por caso de uso
1.6. Consideraciones de Escalabilidad
1.6.1. Escalabilidad Horizontal
Stateless Services
- Diseño sin estado para fácil escalado
- Sesiones externalizadas en Redis
- Load balancing automático
Auto-scaling Rules
- CPU utilization > 70% → scale up
- Memory usage > 80% → scale up
- Response time > 2s → scale up
- Queue length > 100 → scale up
1.6.2. Escalabilidad Vertical
Resource Optimization
- Connection pooling para bases de datos
- Efficient memory management
- CPU-bound operations optimization
Database Scaling
- Read replicas para consultas
- Partitioning por tenant
- Index optimization
1.7. Seguridad por Diseño
1.7.1. Principios de Seguridad
Defense in Depth
- Múltiples capas de seguridad
- Zero trust architecture
- Principle of least privilege
Secure Coding Practices
- Input validation y sanitization
- SQL injection prevention
- XSS protection
- CSRF tokens
1.7.2. Controles de Seguridad
Authentication & Authorization
- JWT tokens con expiración corta
- Refresh tokens seguros
- Role-based access control (RBAC)
- Multi-factor authentication (MFA)
Data Protection
- Encryption at rest (AES-256)
- Encryption in transit (TLS 1.3)
- Data masking para información sensible
- Audit logging completo
Próxima sección: 2. Instalación y Configuración