Saltar a contenido

Setup del entorno

Guía para levantar el ecosistema en local: primero el backend, después la terminal apuntándole. Si recién entrás, hacé este recorrido una vez de punta a punta antes de tocar código.

Antes de empezar

Leé Arquitectura y El monolito modular. Vas a entender mucho mejor qué estás levantando y por qué el mvn test "raro" que rompe el build en realidad es tu amigo (el guardrail).

1. Backend (AutoCompraMod)

Requisitos

  • JDK 21 (el enforcer fuerza [21,22); con otra versión el build falla a propósito).
  • Maven.
  • Acceso a las bases SQL Server que usan los módulos (TsAutoCompra, TipreRetail, TsPromos, TsEnvases, y la de observabilidad). Sin ellas, podés correr los tests de modularidad pero no el runtime completo.
  • Node lo instala solo el build de Maven (no hace falta tenerlo global) cuando construís el Cockpit.

Build y guardrail

cd c:/Work/Tipre/AutoCompraMod

# Compila + corre la suite + verifica boundaries de módulos. NO necesita DB.
mvn test

mvn test corre ModularityTests.verify(): si tu cambio cruza una frontera entre módulos o crea un ciclo, el build se rompe acá. Eso es deseable. Ver el guardrail.

Levantar el backend

# Con los DataSource configurados (application.yml / variables de entorno)
mvn spring-boot:run

El backend queda en :8080 con context-path /autocompras/v1. Probá un healthcheck:

curl http://localhost:8080/autocompras/v1/tickets/dummy
curl http://localhost:8080/autocompras/v1/actuator/health

Seguridad en dev

Por defecto app.security.enabled=false: todo permitAll (verás un WARN en el log recordándolo). Está bien para desarrollar contra la terminal. Para probar la política de roles, poné enabled=true y configurá el resource server JWT/Keycloak. Ver Backend → Seguridad.

Cockpit

El panel se construye con el profile frontend de Maven y queda servido por el backend en /autocompras/v1/cockpit/. Para iterar el front con hot-reload, podés correr Vite aparte dentro de cockpit-ui/ (proxyea a localhost:8080):

cd c:/Work/Tipre/AutoCompraMod/cockpit-ui
npm install
npm run dev

2. Terminal (TiprePOS)

Requisitos

  • Flutter >=3.35.6 y Dart >=3.0.0 <4.0.0.
  • Para tarjeta: el daemon ApiCard corriendo (por defecto localhost:50001). Sin él, QR y Point Smart funcionan igual.

Instalar y correr

cd c:/Work/Tipre/TiprePOS
flutter pub get

# La terminal está pensada para desktop
flutter run -d windows
# o
flutter run -d linux

Primer arranque: configuración y registro

La terminal arranca sin config, así que el router te lleva por el gate (ver POS → Routing):

  1. /configuration — cargá server, port, ssl y el código de terminal apuntando a tu backend local (localhost:8080, sin SSL).
  2. /register — la terminal se registra contra el backend y baja su TerminalConfig.
  3. /home — si todo salió bien, quedás en el portal y podés escanear, armar un ticket y probar un pago.

La config se persiste en Isar (auto_compra_db), así que el segundo arranque ya entra derecho a /home.

Compilar

flutter build windows
flutter build linux
flutter build apk

3. Verificar que se hablan

Con backend en :8080 y terminal configurada apuntándole:

  • En el log de la terminal deberías ver el polling de /status (cada 60 s sano).
  • Un openTicket desde la terminal debe devolver un TicketDto con estado OPEN.
  • En el Cockpit (/autocompras/v1/cockpit/), tu terminal debería aparecer online en el panel de terminales (heartbeat dentro de la ventana de ~90 s).

Si la terminal no conecta

  • ¿ssl bien? Un HandshakeException en el log es mismatch http/https.
  • ¿El backend está en :8080 con context-path /autocompras/v1?
  • ¿El healthcheck curl .../tickets/dummy responde?

Tests

# Backend
mvn test

# Terminal
flutter test
flutter test integration_test/app_test.dart