10. Apéndices

10. Apéndices

Esta sección contiene información complementaria, referencias técnicas, glosario y checklists para facilitar la administración y operación del sistema DTEM.

10.1. Referencias Técnicas

10.1.1. Especificaciones SII

Resoluciones y Normativas

Documento Número Año Descripción
Resolución Exenta 60 2023 Requisitos técnicos para DTE
Resolución Exenta 3.497 2022 Certificados digitales
Norma Técnica 73 2023 Formatos y estándares XML
Circular 57 2023 Validación de firmas digitales
Resolución Exenta 11 2023 Libro de Compras y Ventas Electrónico

Formatos XML Estandarizados

<!-- Estructura básica DTE -->
<DTE version="1.0">
  <Documento ID="F60T33">
    <Encabezado>
      <IdDoc>
        <TipoDTE>33</TipoDTE>
        <Folio>1</Folio>
        <FchEmision>2023-12-01</FchEmision>
        <FmaPago>1</FmaPago>
        <FchVencimiento>2023-12-31</FchVencimiento>
      </IdDoc>
      <Emisor>
        <RUTEmisor>12345678-9</RUTEmisor>
        <RznSoc>EMPRESA DE PRUEBA LTDA</RznSoc>
        <GiroEmis>VENTA AL POR MENOR</GiroEmis>
        <ActEco>502000</ActEco>
        <DirOrigen>AV. PRINCIPAL 100</DirOrigen>
        <CmnaOrigen>SANTIAGO</CmnaOrigen>
        <CiudadOrigen>SANTIAGO</CiudadOrigen>
      </Emisor>
      <Receptor>
        <RUTRecep>98765432-1</RUTReceptor>
        <RznSocRecep>CLIENTE DE PRUEBA</RznSocRecep>
        <GiroRecep>COMERCIO</GiroRecep>
        <DirRecep>CALLE SECUNDARIA 200</DirRecep>
        <CmnaRecep>SANTIAGO</CmnaRecep>
        <CiudadRecep>SANTIAGO</CiudadRecep>
      </Receptor>
      <Totales>
        <MontoNeto>10000</MontoNeto>
        <MontoExento>0</MontoExento>
        <TasaIVA>19</TasaIVA>
        <IVA>1900</IVA>
        <MontoTotal>11900</MontoTotal>
      </Totales>
    </Encabezado>
    <Detalle>
      <NroLinDet>1</NroLinDet>
      <CdgItem>
        <TpoCodigo>INT1</TpoCodigo>
        <VlrCodigo>PROD001</VlrCodigo>
      </CdgItem>
      <NmbItem>PRODUCTO DE PRUEBA</NmbItem>
      <QtyItem>10</QtyItem>
      <UnmdItem>UN</UnmdItem>
      <PrcItem>1000</PrcItem>
      <MontoItem>10000</MontoItem>
    </Detalle>
  </Documento>
</DTE>

10.1.2. APIs Externas

SII API Endpoints

Endpoint Método Descripción Autenticación
/cgi_dte/UPL/DTEUpload POST Subir DTE al SII Certificado Digital
/cgi_dte/UPL/getEstado GET Consultar estado DTE Certificado Digital
/cgi_dte/UPL/getDocumento GET Descargar DTE Certificado Digital
/cgi_dte/UPL/getLibro POST Enviar Libro Compras/Ventas Certificado Digital
/cgi_dte/UPL/getEstLibro GET Consultar estado Libro Certificado Digital

Webhook Payloads

// DTE Creado
{
  "event": "dte.created",
  "timestamp": "2023-12-01T10:00:00Z",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "documentType": "33",
    "folio": 1,
    "rutEmisor": "12345678-9",
    "rutReceptor": "98765432-1",
    "montoTotal": 11900,
    "status": "draft",
    "createdAt": "2023-12-01T10:00:00Z"
  }
}

// DTE Enviado
{
  "event": "dte.sent",
  "timestamp": "2023-12-01T10:05:00Z",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "folio": 1,
    "siiTrackId": "1234567890",
    "sentAt": "2023-12-01T10:05:00Z"
  }
}

// DTE Aprobado
{
  "event": "dte.approved",
  "timestamp": "2023-12-01T10:10:00Z",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "folio": 1,
    "siiStatus": "Aprobado",
    "siiResponseAt": "2023-12-01T10:10:00Z"
  }
}

10.2. Glosario de Términos

10.2.1. Términos Técnicos

Término Definición Contexto
DTE Documento Tributario Electrónico Sistema de facturación electrónica chileno
CAF Código de Autorización de Folios Autorización del SII para emitir DTEs
RUT Rol Único Tributario Identificador único de contribuyentes en Chile
SII Servicio de Impuestos Internos Servicio público chileno de impuestos
XML eXtensible Markup Language Formato estándar para DTEs
TLS Transport Layer Security Protocolo de seguridad para comunicaciones
API Application Programming Interface Interfaz de programación de aplicaciones
JWT JSON Web Token Token estándar para autenticación
RBAC Role-Based Access Control Control de acceso basado en roles
RTO Recovery Time Objective Tiempo objetivo de recuperación
RPO Recovery Point Objective Punto objetivo de recuperación
SLA Service Level Agreement Acuerdo de nivel de servicio
HA High Availability Alta disponibilidad
DR Disaster Recovery Recuperación ante desastres

10.2.2. Términos de Negocio

Término Definición Ejemplo
Factura Electrónica DTE tipo 33 Documento que registra una venta
Nota de Crédito DTE tipo 34 Documento que corrige una factura
Nota de Débito DTE tipo 39 Documento que incrementa una factura
Guía de Despacho DTE tipo 52 Documento que acompaña mercancías
Factura de Compra DTE tipo 46 Documento para compras internas
Factura de Exportación DTE tipo 110 Documento para ventas al extranjero
Boleta DTE tipo 39/41 Documento para ventas a consumidores finales
IECV Ingreso Electrónico de Consumo Boleta electrónica para retail
BVE Boleta de Venta Electrónica Boleta electrónica general

10.3. Checklists Operativos

10.3.1. Checklist de Instalación

Pre-Instalación

  • Requisitos de Hardware Verificados

    • CPU: 8+ cores (producción)
    • RAM: 16+ GB (producción)
    • Storage: 500+ GB SSD
    • Network: 1+ Gbps
  • Requisitos de Software

    • Docker 20.10+ instalado
    • Docker Compose 2.0+ instalado
    • Node.js 18+ (para desarrollo)
    • Git 2.30+ instalado
  • Configuración de Red

    • Puertos 80, 443 abiertos al público
    • Puertos internos configurados
    • DNS configurado correctamente
    • Certificados SSL obtenidos
  • Seguridad

    • Firewall configurado
    • Usuarios creados con permisos adecuados
    • SSH keys configuradas
    • Políticas de seguridad aplicadas

Instalación

  • Código Fuente

    • Repositorio clonado
    • Rama correcta seleccionada
    • Últimos cambios descargados
  • Configuración

    • Archivo .env creado
    • Variables de entorno configuradas
    • Certificados digitales configurados
    • Base de datos inicializada
  • Despliegue

    • Imágenes Docker construidas
    • Contenedores levantados
    • Servicios verificados
    • Health checks funcionando

Post-Instalación

  • Verificación

    • Todos los servicios operativos
    • Conectividad a base de datos
    • Conectividad a Redis
    • Integración con SII funcionando
  • Configuración Inicial

    • Usuarios administradores creados
    • CAFs cargados y activados
    • Notificaciones configuradas
    • Backups programados
  • Monitoreo

    • Métricas configuradas
    • Logs centralizados
    • Alertas configuradas
    • Dashboards creados

10.3.2. Checklist de Mantenimiento

Mantenimiento Diario

  • Health Checks

    • Verificar estado de todos los servicios
    • Revisar logs de errores
    • Verificar uso de recursos
    • Revisar alertas activas
  • Backups

    • Verificar que los backups se ejecutaron
    • Validar integridad de backups
    • Verificar espacio de almacenamiento
    • Revisar logs de backup
  • Limpieza

    • Rotar logs antiguos
    • Limpiar archivos temporales
    • Limpiar cache expirada
    • Liberar espacio en disco

Mantenimiento Semanal

  • Actualizaciones

    • Verificar actualizaciones de seguridad
    • Revisar actualizaciones de dependencias
    • Planificar ventanas de mantenimiento
    • Documentar cambios
  • Rendimiento

    • Analizar métricas de rendimiento
    • Revisar consultas lentas
    • Optimizar índices de base de datos
    • Revisar uso de memoria
  • Seguridad

    • Revisar logs de seguridad
    • Verificar accesos no autorizados
    • Actualizar certificados si es necesario
    • Revisar políticas de seguridad

Mantenimiento Mensual

  • Base de Datos

    • Ejecutar VACUUM FULL
    • Reconstruir índices fragmentados
    • Actualizar estadísticas
    • Archivar datos antiguos
  • Infraestructura

    • Revisar configuración de servidores
    • Actualizar documentación
    • Realizar pruebas de DR
    • Revisar capacidades y planificar escalado
  • Reportes

    • Generar reportes de disponibilidad
    • Analizar tendencias de uso
    • Revisar SLAs
    • Planificar mejoras

10.3.3. Checklist de Disaster Recovery

Preparación

  • Plan de DR

    • Plan documentado y actualizado
    • Equipo de respuesta entrenado
    • Contactos de emergencia actualizados
    • Procedimientos validados
  • Infraestructura DR

    • Región DR configurada
    • Replicación activa y funcionando
    • DNS configurado para failover
    • Monitoreo de DR activo
  • Backups

    • Backups automáticos configurados
    • Backups almacenados en múltiples ubicaciones
    • Procedimientos de restauración validados
    • Encriptación de backups verificada

Ejecución de DR

  • Declaración de Desastre

    • Impacto evaluado
    • Stakeholders notificados
    • Sala de guerra activada
    • Comunicación externa iniciada
  • Activación DR

    • Región DR activada
    • Base de datos promovida
    • Aplicaciones levantadas
    • DNS actualizado
  • Verificación

    • Servicios verificados
    • Funcionalidad validada
    • Performance aceptable
    • Seguridad verificada

Post-DR

  • Operación Normal

    • Monitoreo intensivo
    • Soporte extendido
    • Comunicación continua
    • Documentación de eventos
  • Retorno

    • Región primaria restaurada
    • Datos sincronizados
    • Failback planificado
    • Operación normal restaurada
  • Lecciones Aprendidas

    • Post-mortem realizado
    • Mejoras identificadas
    • Plan actualizado
    • Equipo entrenado

10.4. Scripts de Utilidad

10.4.1. Scripts de Monitoreo

Health Check Completo

#!/bin/bash
# health-check.sh

GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'

check_service() {
    local service_name="$1"
    local url="$2"
    local expected_status="${3:-200}"
    
    echo -n "Checking $service_name... "
    
    if curl -s -o /dev/null -w "%{http_code}" "$url" | grep -q "$expected_status"; then
        echo -e "${GREEN}OK${NC}"
        return 0
    else
        echo -e "${RED}FAILED${NC}"
        return 1
    fi
}

check_database() {
    echo -n "Checking database... "
    
    if psql -U postgres -d dtem_prod -c "SELECT 1;" >/dev/null 2>&1; then
        echo -e "${GREEN}OK${NC}"
        return 0
    else
        echo -e "${RED}FAILED${NC}"
        return 1
    fi
}

check_redis() {
    echo -n "Checking Redis... "
    
    if redis-cli ping | grep -q "PONG"; then
        echo -e "${GREEN}OK${NC}"
        return 0
    else
        echo -e "${RED}FAILED${NC}"
        return 1
    fi
}

check_disk_space() {
    echo -n "Checking disk space... "
    
    local usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
    
    if [ "$usage" -lt 80 ]; then
        echo -e "${GREEN}OK (${usage}%)${NC}"
        return 0
    elif [ "$usage" -lt 90 ]; then
        echo -e "${YELLOW}WARNING (${usage}%)${NC}"
        return 1
    else
        echo -e "${RED}CRITICAL (${usage}%)${NC}"
        return 2
    fi
}

check_memory() {
    echo -n "Checking memory... "
    
    local available=$(free -m | awk 'NR==2{printf "%.0f", $7}')
    
    if [ "$available" -gt 1024 ]; then
        echo -e "${GREEN}OK (${available}MB available)${NC}"
        return 0
    elif [ "$available" -gt 512 ]; then
        echo -e "${YELLOW}WARNING (${available}MB available)${NC}"
        return 1
    else
        echo -e "${RED}CRITICAL (${available}MB available)${NC}"
        return 2
    fi
}

echo "=== DTEM System Health Check ==="
echo "Timestamp: $(date)"
echo

# Check services
check_service "API Gateway" "http://localhost:3000/health"
check_service "Web Frontend" "http://localhost:80/health"

# Check infrastructure
check_database
check_redis
check_disk_space
check_memory

echo
echo "=== Health Check Complete ==="

Monitor de Recursos

#!/bin/bash
# resource-monitor.sh

LOG_FILE="/var/log/resource-monitor.log"
ALERT_THRESHOLD_CPU=80
ALERT_THRESHOLD_MEMORY=85
ALERT_THRESHOLD_DISK=90

log_alert() {
    local message="$1"
    echo "$(date): ALERT - $message" >> "$LOG_FILE"
    
    # Send Slack notification
    curl -X POST -H 'Content-type: application/json' \
        --data "{\"text\":\"🚨 Resource Alert: $message\"}" \
        "$SLACK_WEBHOOK_URL"
}

monitor_resources() {
    # CPU Usage
    local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | sed 's/%us,//')
    if (( $(echo "$cpu_usage > $ALERT_THRESHOLD_CPU" | bc -l) )); then
        log_alert "High CPU usage: ${cpu_usage}%"
    fi
    
    # Memory Usage
    local memory_usage=$(free | awk 'NR==2{printf "%.0f", $3*100/$2}')
    if [ "$memory_usage" -gt "$ALERT_THRESHOLD_MEMORY" ]; then
        log_alert "High memory usage: ${memory_usage}%"
    fi
    
    # Disk Usage
    local disk_usage=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
    if [ "$disk_usage" -gt "$ALERT_THRESHOLD_DISK" ]; then
        log_alert "High disk usage: ${disk_usage}%"
    fi
    
    # Log current status
    echo "$(date): CPU=${cpu_usage}%, Memory=${memory_usage}%, Disk=${disk_usage}%" >> "$LOG_FILE"
}

# Run monitoring
monitor_resources

10.4.2. Scripts de Mantenimiento

Limpieza Automática

#!/bin/bash
# cleanup.sh

LOG_FILE="/var/log/cleanup.log"
RETENTION_DAYS=30

log() {
    echo "$(date): $1" >> "$LOG_FILE"
}

cleanup_logs() {
    log "Starting log cleanup..."
    
    # Rotate application logs
    find /var/log/dtem -name "*.log" -mtime +7 -exec gzip {} \;
    find /var/log/dtem -name "*.log.gz" -mtime +$RETENTION_DAYS -delete
    
    # Rotate system logs
    logrotate -f /etc/logrotate.d/dtem
    
    log "Log cleanup completed"
}

cleanup_temp_files() {
    log "Starting temporary files cleanup..."
    
    # Clean temporary uploads
    find /app/uploads/temp -type f -mtime +1 -delete
    
    # Clean cache files
    find /tmp -name "dtem_*" -mtime +1 -delete
    
    # Clean session files
    find /var/lib/php/sessions -name "sess_*" -mtime +7 -delete
    
    log "Temporary files cleanup completed"
}

cleanup_database() {
    log "Starting database cleanup..."
    
    # Clean old audit logs
    psql -U postgres -d dtem_prod -c "
        DELETE FROM audit_logs 
        WHERE timestamp < NOW() - INTERVAL '2 years';
    "
    
    # Clean expired sessions
    psql -U postgres -d dtem_prod -c "
        DELETE FROM sessions 
        WHERE expires_at < NOW();
    "
    
    # Vacuum and analyze
    psql -U postgres -d dtem_prod -c "VACUUM ANALYZE;"
    
    log "Database cleanup completed"
}

cleanup_backups() {
    log "Starting backup cleanup..."
    
    # Clean old local backups
    find /backups -name "*.gz" -mtime +$RETENTION_DAYS -delete
    
    # Clean old S3 backups
    aws s3 ls s3://dtem-backups/ | while read -r line; do
        create_date=$(echo "$line" | awk '{print $1" "$2}')
        create_epoch=$(date -d "$create_date" +%s)
        current_epoch=$(date +%s)
        age_days=$(( (current_epoch - create_epoch) / 86400 ))
        
        if [ $age_days -gt $RETENTION_DAYS ]; then
            filename=$(echo "$line" | awk '{print $4}')
            aws s3 rm "s3://dtem-backups/$filename"
            log "Deleted old backup: $filename"
        fi
    done
    
    log "Backup cleanup completed"
}

# Execute cleanup functions
cleanup_logs
cleanup_temp_files
cleanup_database
cleanup_backups

log "All cleanup tasks completed"

10.5. Contactos y Soporte

10.5.1. Contactos Internos

Rol Nombre Email Teléfono Horario
System Administrator [Nombre] admin@empresa.cl +56 2 XXXX XXXX 24/7
Database Administrator [Nombre] dba@empresa.cl +56 2 XXXX XXXX 24/7
Security Officer [Nombre] security@empresa.cl +56 2 XXXX XXXX 24/7
DevOps Lead [Nombre] devops@empresa.cl +56 2 XXXX XXXX 24/7
Application Support [Nombre] support@empresa.cl +56 2 XXXX XXXX L-V 8:00-18:00

10.5.2. Contactos Externos

Servicio Proveedor Contacto Teléfono Email
Certificados Digitales [Proveedor] [Contacto] +56 2 XXXX XXXX certificados@proveedor.cl
Hosting/Cloud [Proveedor] [Contacto] +56 2 XXXX XXXX soporte@proveedor.cl
Conectividad [Proveedor] [Contacto] +56 2 XXXX XXXX red@proveedor.cl
SII Servicio de Impuestos Internos Mesa de Ayuda +56 2 XXXX XXXX ayuda@sii.cl

10.5.3. Escalation Matrix

Nivel Condición Contacto Tiempo de Respuesta
Nivel 1 Incidente menor Application Support 2 horas
Nivel 2 Incidente mayor System Administrator 30 minutos
Nivel 3 Crítico DevOps Lead + Security 15 minutos
Nivel 4 Catastrófico Todos los niveles Inmediato

Conclusión del Manual

Este Manual de Sistema DTEM proporciona una guía completa para la administración, operación y mantenimiento del sistema. La documentación está diseñada para evolucionar con el sistema y debe mantenerse actualizada regularmente.

Próximos Pasos

  1. Revisión Periódica: Revisar y actualizar este manual trimestralmente
  2. Capacitación Continua: Asegurar que todo el personal esté capacitado en los procedimientos
  3. Mejora Continua: Incorporar lecciones aprendidas y mejores prácticas
  4. Automatización: Continuar automatizando procedimientos manuales
  5. Validación: Realizar pruebas regulares de todos los procedimientos documentados

Para preguntas o sugerencias sobre este manual, contacte al equipo de administración de sistemas en admin@empresa.cl.


Fin del Manual de Sistema DTEM