Saltar a contenido

Contexto (C4 nivel 1)

Responde: ¿qué es Embolsadora 4.0, quién lo usa y con qué sistemas externos habla?

flowchart TB
  subgraph personas[" "]
    direction LR
    OP["👤 Operario<br/><i>del cliente</i>"]
    AC["👤 Administrador<br/>del cliente"]
    AM["👤 Administrador MRG<br/><i>plataforma</i>"]
    TI["👤 Técnico instalador<br/><i>no es rol de la app</i>"]
  end

  SYS["<b>Embolsadora 4.0</b><br/><br/>Captura las variables operativas<br/>de la máquina, las almacena y<br/>las presenta en un dashboard<br/>multi-tenant"]

  PLC["⚙️ Máquina embolsadora / PLC<br/><i>fuera de alcance</i><br/>Modbus TCP · solo lectura"]
  SB["🔐 Supabase<br/>Autenticación e invitaciones<br/>por correo"]

  OP --> SYS
  AC --> SYS
  AM --> SYS
  TI -.->|instala y provisiona| SYS

  SYS -->|lee variables| PLC
  SYS -->|valida JWT · invita usuarios| SB

  classDef sistema fill:#1168bd,stroke:#0b4884,color:#fff
  classDef externo fill:#999,stroke:#6b6b6b,color:#fff
  classDef persona fill:#08427b,stroke:#052e56,color:#fff
  class SYS sistema
  class PLC,SB externo
  class OP,AC,AM,TI persona

Actores

Actor Rol en el código Qué obtiene del sistema
Operario del cliente cliente_operario, operario Estado de la máquina en vivo e históricos. No recibe alertas automáticas: hoy no existe el motor que las emita
Administrador del cliente cliente_admin Lo anterior, más gestión de los usuarios de su empresa, roles y layouts. Puede definir reglas de alarma, que se guardan sin evaluarse
Administrador de MRG admin, platform_admin Gestión de tenants, alta de dispositivos y claves de API, y vista cross-tenant sobre cualquier cliente
Técnico instalador — No accede a la aplicación. Instala la Raspberry Pi en planta siguiendo el runbook de provisioning

El técnico instalador no existe como rol en el software y no accede a la aplicación: es un perfil que esta documentación nombra para poder hablar de las acciones que alguien tiene que hacer en planta. Su guía es el runbook de instalación.

Sistemas externos

Máquina embolsadora / PLC

El sistema lee los registros del PLC por Modbus TCP y nunca escribe. La programación del PLC está fuera del alcance del proyecto.

En el entorno de desarrollo se usa un simulador (MODBUS_HOST=mock) y el servicio plc del compose está comentado. No hay en ningún repositorio un mapa de registros oficial de la máquina, ni el modelo del PLC: el único mapa que existe es el del simulador, escrito a partir del mismo archivo de tags que lee el historian. Ver PLC → historian.

Supabase

Cubre dos funciones:

  • Autenticación: emite los JWT con los que el usuario se identifica. El Cloud verifica su firma consultando el JWKS de Supabase: acepta únicamente ES256 y RS256, y el proyecto firma con ES256 según el código. Si el JWKS no responde, la API devuelve 503.
  • Invitaciones y recuperación de contraseña: el Cloud usa la API de administración de Supabase para enviar esos correos, así que el envío de mail es una capacidad delegada.

Lo que el sistema no hace hacia afuera

  • No escribe al PLC. El sistema es de monitoreo, no de control.
  • No se integra con ERP ni MES. El anteproyecto lo menciona como posibilidad futura; no hay código.
  • No expone una API pública a terceros. Las dos superficies HTTP del Cloud las consumen el frontend propio y el Edge Pi Service.

Límite del sistema

Dentro del límite entran los cinco repositorios, incluido proyecto-embolsadora, que pertenece a una tesis de maestría distinta pero es parte funcional del sistema desplegado. La frontera con ese componente está documentada en PLC → Historian e Historian → InfluxDB; su interior no.

Siguiente nivel

Contenedores (C4 nivel 2) — qué procesos y almacenes hay dentro de la caja azul.