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.