workspace "Zigi Loyalty Backoffice Service" "Sistema administrativo para gestión de dinámicas y promociones usando IA" { model { // Personas ziglers = person "Ziglers" "Personal estratégico y operativo de Zigi" usuarios_app = person "Usuarios de App Zigi" "Clientes que usan la app Zigi, no interactúan directamente con el backoffice" // Sistemas externos zigi_app = softwareSystem "Zigi Mobile App" "App móvil principal para usuarios" gamification_service = softwareSystem "Zigi Gamification Service" "Servicio que ejecuta la lógica de gamificación" aws_athena = softwareSystem "AWS Athena" "Servicio para consultas SQL sobre data warehouse" aws_cognito = softwareSystem "AWS Cognito" "Servicio de autenticación y autorización" postgres_db = softwareSystem "PostgreSQL Database" "Base de datos principal del sistema" // Sistema principal loyalty_backoffice = softwareSystem "Zigi Loyalty Backoffice" "Sistema para gestión de gamificación, promociones y audiencias con IA" { frontend = container "Frontend Web App" "Interfaz para Ziglers" "React, TypeScript" backend = container "Backend API" "API principal con lógica de negocio" "NestJS, Node.js" db = container "PostgreSQL Database" "Base de datos principal" "PostgreSQL" s3_static = container "AWS S3 Static Bucket" "Almacén de archivos estáticos" "AWS S3" s3_whitelist = container "AWS S3 Whitelist Bucket" "Archivos CSV generados" "AWS S3" frontend -> backend "Usa" "HTTPS" frontend -> aws_cognito "Autenticación" "OAuth2/JWT" backend -> db "Lee/Escribe" "SQL" backend -> s3_static "Carga archivos estáticos" "S3 SDK" backend -> s3_whitelist "Carga whitelists CSV" "S3 SDK" backend -> aws_athena "Ejecuta consultas" "Athena SDK" backend -> gamification_service "Crea desafíos" "HTTP REST" backend -> aws_cognito "Valida identidad de Ziglers" "JWT" } // Relaciones globales ziglers -> frontend "Usa para gestionar dinámicas" usuarios_app -> zigi_app "Interactúan con dinámicas" zigi_app -> gamification_service "Recibe configuraciones de desafíos" gamification_service -> backend "Recibe definiciones desde" backend -> postgres_db "Lee/Escribe datos persistentes" "JDBC" backend -> aws_athena "Ejecuta consultas para segmentación" "AWS SDK" } views { systemContext loyalty_backoffice { include * autolayout lr title "Zigi Loyalty Backoffice - System Context" } container loyalty_backoffice { include * autolayout lr title "Zigi Loyalty Backoffice - Containers" } styles { element "Person" { background "#1168bd" color "#ffffff" shape "Person" } element "Software System" { background "#999999" color "#ffffff" } element "Container" { background "#5d9cec" color "#ffffff" } element "Database" { shape "Cylinder" background "#23a2d9" color "#ffffff" } element "File Storage" { shape "Folder" background "#ff9900" color "#000000" } element "Frontend Web App" { shape "WebBrowser" background "#85bbf0" } } theme default } }