\section{Alcance} Un rastreador GPS-RTK montado en máquina y alojado en gabinete (\textbf{HBOX}) que transmite posición corregida por RTK sobre 4G al backend (\textit{retranslator} $\rightarrow$ Wialon/Traccar $\rightarrow$ VERONICA), sobrevive un entorno portuario hostil (calor, vibración, humedad salina) y es manufacturable y mantenible a escala de flota. Meta: \textbf{30 unidades operativas para agosto} en ICAVE, TIMSA, EIT y LCT. Este documento es el complemento formal del tracker de requerimientos (.xlsx). \section{Requerimientos funcionales} \hwtab{% \begin{tabularx}{\textwidth}{@{}>{\bfseries}l X >{\centering\arraybackslash}p{1.2cm}@{}} \toprule \rowcolor{HelgenIndigo}\textcolor{white}{ID} & \textcolor{white}{Requerimiento} & \textcolor{white}{Pri.}\\ \midrule FR-01 & Adquirir posición GNSS multibanda (simpleRTK2B Pro / ZED-F9P). & O\\ FR-02 & Obtener correcciones RTCM3 vía NTRIP sobre 4G; lograr fix/float en cielo abierto. & O\\ FR-03 & Emitir NMEA (GGA+RMC) por UDP al backend a la tasa configurada. & O\\ FR-04 & Control de tasa: 1 Hz con ignición; 30 s en batería/reposo. & O\\ FR-05 & Watchdog: recuperar el enlace reiniciando el stack con \textit{backoff}; nunca en bucle de reinicio. & O\\ FR-06 & Reporte degradado (LIMP): seguir reportando posición estándar si no hay correcciones. & O\\ FR-07 & Operar con 24 V del gabinete; proteger la celda (no cargar $>$45\,\textdegree C). & O\\ FR-08 & LED de estado legible en campo. & R\\ FR-09 & Identidad por unidad (cell\_id) y aprovisionamiento repetible. & O\\ FR-10 & SIM/chip de datos serviciable sin desensamble total. & R\\ FR-11 & Observabilidad: registrar temperatura, batería, calidad de fix y reinicios. & R\\ FR-12 & Backend: ingesta concurrente sin bloqueo de cabecera; el filtro anti-salto nunca debe bloquear de forma permanente a una unidad sana. & O\\ \bottomrule \end{tabularx}} \section{Requerimientos no funcionales} \hwtab{% \begin{tabularx}{\textwidth}{@{}>{\bfseries}l X L{4.2cm}@{}} \toprule \rowcolor{HelgenIndigo}\textcolor{white}{ID} & \textcolor{white}{Requerimiento} & \textcolor{white}{Objetivo}\\ \midrule NFR-01 Térmico & Operar dentro del gabinete sellado bajo sol de Veracruz. & Componentes $\geq$75\,\textdegree C; \textbf{sin PLA} en la ruta térmica; diseñar a la temperatura interior medida.\\ NFR-02 Vibración & Resistir vibración continua de maquinaria. & Sin Dupont; conectores con seguro; placas retenidas; objetivo $\geq$2 G (validar).\\ NFR-03 Ingreso & Mantener IP67; sin condensación. & Sellado; enfriamiento sólo por conducción (sin ventilación que rompa IP).\\ NFR-04 Eléctrico & Tolerar el ambiente eléctrico de la máquina. & Surge/breaker/ignición en el gabinete; TVS local modesto en el HBOX.\\ NFR-05 Disponibilidad & Minimizar desconexiones en Wialon. & Sin bucles (FR-05); sin bloqueo de cabecera en backend (FR-12); definir SLO.\\ NFR-06 Mantenibilidad & Serviciable, documentado, repetible. & Una PCB; etiquetado; puntos de prueba; BOM publicado.\\ NFR-07 Escalabilidad & Backend a escala de flota. & $\geq$500 unidades concurrentes sin pérdidas (prueba con \textit{upstream} lento).\\ NFR-08 Seguridad & Sin secretos en el repo. & Rotar la contraseña MSSQL; secretos vía entorno/almacén; mínimo privilegio.\\ NFR-09 Manufactura & Construible para el lote de agosto. & BOM bloqueado; documento de ensamble; pilotos validados antes de la flota.\\ \bottomrule \end{tabularx}} \section{Restricciones y supuestos} \begin{itemize} \item La entrada del HBOX es el \textbf{24 V regulado} del gabinete + una señal de ignición \textbf{aislada}. \item El \textbf{gabinete} (Yetlebox IP67 ABS + componentes DIN) permanece; el rediseño ataca los \textbf{internos del HBOX} + lo térmico/mecánico. \item El ZED-F9P ($-40$ a $+85$\,\textdegree C) no es el eslabón térmico débil; lo son el \textbf{18650/PowerBoost}, el \textbf{módem 4G} y la \textbf{carcasa PLA}. \item Las correcciones llegan por 4G, no por el GNSS (gobierna FR-05/FR-06). \item El firmware se valida en banco antes del \textit{flasheo} en campo. \end{itemize} \section{Criterios de aceptación (alto nivel)} \begin{itemize} \item En banco: una unidad arranca, obtiene fix/float, transmite y \textbf{se recupera automáticamente} de un corte forzado de 4G/NTRIP dentro de la ventana de \textit{backoff}, sin entrar en bucle. \item Backend: bajo una prueba de 500 unidades con \textit{upstream} lento, \textbf{ninguna unidad se descarta} ni queda filtrada de forma permanente. \item Térmico: una unidad sobrevive un turno soleado a la temperatura interior medida del gabinete, sin deformación de PLA ni sobre-temperatura de batería. \item Una unidad retirada permite distinguir, por sus registros, una muerte de hardware de una víctima del backend. \end{itemize} \begin{helgennotice}[Trazabilidad] Cada requerimiento se rastrea en el \textbf{Tablero Helgen Drogheda — Tracker de Requerimientos} (.xlsx), con estado, verificación, responsable y puntos abiertos. \end{helgennotice}