grcontrolchangelogspring-bootoperationalbackend
Changelog — grControl (PRs #19 a #24)
Periodo: marzo 2026 | Branch base: develop
PR #19–#20 · Precio por galón en endpoints operacionales
Se agrega el campo pricePerGallon a las respuestas de los endpoints de mangueras y lecturas pendientes.
Endpoints afectados:
GET /api/operational/my-hoses— nuevo campopricePerGallonGET /api/operational/hose-readings/pending— nuevo campopricePerGallon
Commits:
feat(operational): add price per gallon field to my-hoses endpointfeat(operational): add pricePerGallon to pending hose readings endpoint
PR #21–#22 · Dev Data Initializer
Seeder idempotente para datos de desarrollo con datos realistas de estaciones.
Alcance:
- Inicialización idempotente de datos base (estaciones, islas, tanques, productos, presentaciones, stock)
- Migración de IDs a UUID
- Asignación de turnos a operadores
- Restauración de
ddl-auto=updatepara persistencia en dev
Commits:
chore(config): initialize dev data with idempotent seederchore(config): update development seed data with real station locations and standardized domainchore(config): seed tanks, lubricentro products, presentations, and island stockfix(config): restore ddl-auto to update for persistent dev datachore(config): migrate dev data to UUID and add shift assignments
PR #23 · Fallback de precio en mangueras
Cuando una estación no tiene precio configurado para un producto, el sistema ahora usa el precio base del producto como fallback.
Correcciones:
fix(operational): fallback to product base price when no station price configuredfix(operational): use hose initial values as fallback in MyHosesProvider query
PR #24 · Flexibilidad de turno activo
Se relaja la restricción de turno activo y se permite operar con shiftId opcional en los endpoints operacionales.
Cambios:
- La validación de turno activo ahora busca el turno más cercano del día en lugar de exigir coincidencia exacta de hora
- Se corrige el uso de
LOCALTIMEen lugar deCURRENT_TIMEpara comparaciones en PostgreSQL (evita zona horaria incorrecta) - Los endpoints de lecturas, mediciones y cierre de turno aceptan
shiftIdopcional para operar sobre un turno específico
Endpoints afectados:
POST /api/operational/hose-readings/registerPOST /api/operational/hose-readings/validatePOST /api/operational/hose-readings/validate-allPOST /api/operational/measurements/createPOST /api/operational/measurements/adjustPOST /api/operational/shift-closures/close
Commits:
fix(operational): relax active shift time constraint to nearest shift for the dayfix(operational): use LOCALTIME instead of CURRENT_TIME for time comparison in PostgreSQLfeat(operational): add optional shiftId to hose reading register, validate and validate-all endpointsfeat(operational): add optional shiftId to measurement create and adjust endpointsfeat(operational): add optional shiftId to shift closure endpoint