Ir al contenido

Frontend — Estado actual

Consolida y reemplaza MIGRATION_PLAN.md, PRIMEREACT_MIGRATION_STATUS.md, FRONTEND_ANALYSIS_AND_MIGRATION_PLAN.md, API_ENDPOINTS_MAPPING.md y este mismo README.md (todos eliminados tras esta consolidación). Verificado contra el código el 2026-07-13.

Ver también el CLAUDE.md de este repo (migración de componentes legacy components/ui/* ya documentada ahí) y src/components/features/dashboard/home/DASHBOARD.md (sistema de widgets del Home, doc vigente, no se toca).

Migración de API (NestJS legacy → serverless)

Sección titulada «Migración de API (NestJS legacy → serverless)»

Completada. El frontend corre enteramente contra lade-infra (API Gateway + Lambda + DynamoDB). El repo lade-api (NestJS) es explícitamente legacy/deprecado (ver CLAUDE.md raíz). El mapeo endpoint-por-endpoint que documentaba esta transición (API_ENDPOINTS_MAPPING.md, 843 líneas) ya no tiene valor de referencia activa — describía una migración que ya terminó.

~95% completada, verificado por grep de imports reales (no solo por lo que decían los docs anteriores, que en algunos puntos ya no coincidían con el código):

  • Solo 2 archivos siguen importando de primereact en todo src/: core/wrappers/styles/ThemePrimeProvider.tsx y components/ui/Charts/providers/PrimeReactCharts.tsx.
  • Todo lo demás (Dialog/Modal, DataTable, Calendar, ConfirmDialog, Steps, Paginator, Card, Toast, Menu→Dropdown, Timeline, Tag) ya usa @/design-system o NotificationContext.
  • primereact sigue en package.json — no se puede remover la dependencia todavía por el componente de Charts (ver PROXIMOS_PASOS.md).

23 componentes con Storybook en src/design-system/ (Avatar, Badge, Button, Combobox, Divider, Icon, IconButton, Input, Progress, Select, Spinner, Tag, ToggleGroup, Accordion, Table, Breadcrumb, Dropdown, Tabs, ConfirmDialog, Drawer, Loader, Modal, Toast). Ver CLAUDE.md de este repo para las reglas de import y los patrones de dark mode — no se duplica aquí.

Sesión 2026-07-13 — cambios de esta sesión

Sección titulada «Sesión 2026-07-13 — cambios de esta sesión»
  • Fix: TripsStore.tsx ya no hardcodea photoUrl/imageUrl/brand/model en blanco — usa los campos reales que ahora manda el backend.
  • Fix: se removió el markResourcesBusy() prematuro al crear un viaje (el bloqueo de conductor/vehículo ahora solo ocurre al pasar a EN_PROCESO, vía updateTripStatus, que ya tenía la lógica correcta).
  • Nuevo: sistema de alertas — alertService.ts, AlertStore.tsx, campana AlertsBell.tsx en el Header con dropdown y contador de no leídas.
  • Nuevo: página OperationsMap.tsx (/dashboard/operations/map, sección Operaciones del sidebar) — mapa con unidades en viaje, panel flotante al seleccionar. v0 sin GPS real, ver docs/features/mapa-operaciones.md en la raíz del workspace.
  • Nuevo: CachedPolyline en LocationMap.tsx — dibuja el polyline ya calculado por el backend (Google Routes API) sin volver a llamar Directions/Routes al ver una ruta. RouteMap.tsx lo usa cuando la ruta tiene encodedPolyline, con fallback al DirectionsRenderer en vivo para rutas antiguas.
  • Nuevo: resumen de distancia/duración/casetas visible en el detalle expandido de una ruta (Routes.tsx).