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