Hub

electrosystems

amadeus-backlog 🕒

active medium work
Creado
2026-05-20
Actualizado
2026-05-20

Actividad en bitácora 1 día

jun
jul
ago
sep
oct
nov
dic
ene
feb
mar
abr
may
L
X
V
Menos
Más

Amadeus — Análisis del backlog Jira

CSV importado de C:\Users\sevao\Downloads\Jira.csv (51 tasks, todas en To Do, prioridad Medium). Analizado contra el estado actual del código (HEAD 008118c) y las decisiones documentadas en amadeus.md.

Objetivo: que Sergio decida una por una si hacer, descartar, rescoperar o deferir. Nada se ejecuta automáticamente.

Leyenda de columnas

  • Estado vs lo que ya existe en el código / decisiones recientes:
    • DONE — ya está implementado y funcional.
    • PARTIAL — implementado a medias o un alcance distinto.
    • STALE — contradice una decisión más reciente o depende de algo que ya se descartó.
    • OK — pendiente válido sin overlap con el código actual.
    • AMBIGUO — title de una palabra o muy vago; necesita aclaración.
    • BUG — reporte de bug verificable.
    • DUP — duplicado o subsumido por otro item del backlog.
  • Dificultad estimada (orden de magnitud, no horas):
    • S — small, 1-3 h (UI tweak, validation, copy fix, una migración trivial).
    • M — medium, 0.5-2 días (feature contenida, varios archivos, un endpoint).
    • L — large, 2-5 días (feature mayor, schema + UI + policy, integración externa).
    • XL — extra large, semana+ (módulo nuevo o reescritura).
  • Capa (cuando aplica):
    • C1 — depende de permisos (capa 1 de inventarios). Hoy ON solo para Selene.
    • C2 — depende del flag INVENTARIO_VIAJE_LINK (capa 2). Hoy OFF.

Tabla de análisis

KeyResumenEstadoDificultadNotas
[x] AM-9”Cliente”DESCARTADO(2026-05-20) Descartado. Epic de una palabra abandonado 2023; sin contexto recuperable.
[x] AM-10”API”DESCARTADO(2026-05-20) Descartado. Epic de una palabra abandonado 2023.
[x] AM-46Hacer interfaz para poder ver inventariosDONE(2026-05-20) Cerrado. Módulo /inventarios desplegado, gated por permisos.
[x] AM-47Interfaz de entrada y salida de inventarioDONE(2026-05-20) Cerrado. MovimientosInventario con flujo preparar/entregar/revisar.
AM-49Poner traducciones a españolBACKLOGLSprint: diferido. Pendiente decisión: end-to-end o página por página.
AM-52Indicador de cargando cuando se sube un consumoSPRINT 15SLoading state en Pages/Consumos/Create.vue.
AM-53Mensaje flash en móvil se ve atrás de todoSPRINT 15SZ-index de Toastify en Layout.vue:14-21.
AM-55Diferentes roles de usuariosSPRINT 17 (Opción A)LLayer de roles persistidos: schema nuevo (roles, rol_permiso, FK opcional en usuarios), refactor de policies, Nova UI, tests. Permitir override per-usuario.
AM-57Base de datos de equipos en sitios con identificadoresBACKLOGLSprint: diferido. Tabla inventarios ya tiene equipo_id+numero_serie+sitio_id. Falta aclarar “hacia dónde están apuntados” (topología de red / enlace lógico entre equipos).
[x] AM-58Términos y condiciones de materialesDESCARTADO(2026-05-20) Descartado. Ambigüedad bloqueante; si surge contexto, abrir ticket nuevo con descripción concreta.
AM-59Fotos de estado de unidad en salida y llegadaSPRINT 20MTabla viaje_fotos + storage + UI camera.
[~] AM-65Notas por viaje entre departamentosCONSOLIDADO(2026-05-20) Consolidado en epic EPIC-NOTAS (modelo Nota polimórfico con foto opcional).
AM-66Notas por consumo para justificación de comprasSPRINT 15SCampo nota text en consumos + form field.
AM-69Correo diario de saldos con viáticosSPRINT 16MJob + Mailable + schedule en Kernel.php. SMTP ya configurado.
[x] AM-71”Viaticos”DESCARTADO(2026-05-20) Descartado. Epic de una palabra; cubierto por tickets más concretos.
AM-72SMS a técnicos a las 4pm pidiendo viáticosSPRINT 17 (Opción C)S+Push + email fallback (NO SMS pagado). Scheduled job 16:00 dispara push; si no marcan leído en X horas, dispara email. Reusa VAPID + Gmail Workspace. Costo recurrente: $0.
[~] AM-73Técnicos creen notas para órdenesCONSOLIDADO(2026-05-20) Consolidado en epic EPIC-NOTAS (notable_type=Orden o Viaje, autor_id=técnico).
[x] AM-84Notificaciones a celularDONE(2026-05-20) Cerrado. Push notifications activas desde 2025-11 + email viaje creado deployado 2026-05-19.
[x] AM-85”Aplicación”DESCARTADO(2026-05-20) Descartado. Epic de una palabra sin contexto.
AM-89Fecha manual al hacer depósitosSPRINT 15SCampo fecha en form de depósito, hoy probablemente auto.
[~] AM-90Anotaciones por sitio + notif al abrir ordenCONSOLIDADO(2026-05-20) Consolidado en epic EPIC-NOTAS (notable_type=Sitio, notificar_al_abrir=true).
[x] AM-91”Sitios”DESCARTADO(2026-05-20) Descartado. Epic de una palabra; tickets concretos sobre sitios ya existen.
AM-93Visualizar consumos por usuario/fecha/categoría sumarizadosSPRINT 16MReporte agregado.
AM-94Subtotal e IVA en consumosSPRINT 15SCampos adicionales en form + cálculo.
AM-95Entradas/Salidas siempre con servicio/lugarSPRINT 15SValidación en MovimientoInventario (probablemente ya tiene sitio_id required; verificar al inicio).
AM-96Inventario en sitio que lo hagan ellos mismosTRACKED EN amadeus.mdEsto es la capa 1. Hoy ON solo para Selene (piloto). Asignación al resto rastreada en amadeus.md como pendiente “post-piloto”. No requiere sprint propio.
[x] AM-97Crear sitio → generar inventarios por productoDESCARTADO(2026-05-20) Descartado. Contradice decisión 2026-05-19 (Producto::boot::created removido a favor de firstOrCreate bajo demanda).
[x] AM-98”Inventarios”DESCARTADO(2026-05-20) Descartado. Epic de una palabra; el módulo de inventarios ya existe con tickets concretos.
[~] AM-99Pendientes por sitio + notif al abrir orden nuevaCONSOLIDADO(2026-05-20) Consolidado en epic EPIC-NOTAS (notable_type=Sitio, notificar_al_abrir=true; “pendiente” puede ser un tag/categoría futura).
AM-100Varias fotos en consumosSPRINT 16MStorage multi-file + UI gallery.
[x] AM-107Modificar formato/estilo de vista detalles (Sprint 11)DESCARTADO(2026-05-20) Descartado. Ambigüedad: “detalles de qué” sin sustantivo.
AM-119Inventarios pertenezcan a sitio O a usuarioSPRINT 20MHoy inventarios.sitio_id. Necesita usuario_id nullable + check constraint OR (uno de los dos). Cambio de schema. Originalmente en Sprint 11.
AM-120Al cambiar estatus de movimiento, modificar inventarioSPRINT 20 (verif.)SInventarioService::aplicarEntrada ya actualiza al marcar entregado. Al inicio del sprint, verificar cobertura de rechazado/cancelado — si están cubiertos, cerrar sin trabajo. Originalmente Sprint 11.
AM-129Paginación estandarizadaSPRINT 19MComponente Paginador.vue reutilizable + audit de páginas. Originalmente Sprint 14.
AM-130Select buscable en filtro de productosSPRINT 15SSearchableSelectInput.vue ya existe; usarlo en lista de movimientos. Originalmente Sprint 14.
AM-131Vista de detalle de producto con inventario+historialSPRINT 16MPages/Productos/Show.vue con dos tablas (inventarios por sitio + movimientos).
[x] AM-132Eliminar página de reporte de movimientosDESCARTADO(2026-05-20) Descartado. Sergio había anotado porque existían 2 lugares para ver reportes; eso ya se consolidó. La página actual queda.
AM-133Buscar movimientos por número de serieSPRINT 15SCon numero_serie en inventarios desde 2025-11-19, filtro en MovimientosInventarioController::index.
[x] AM-134Más de un vehículo por ordenDONE(2026-05-20) Cerrado. “Orden” = viaje confirmado por Sergio. Fase 1 deployada (commit e0ed6ad): pivot equipo_vehiculo, 188 equipos backfilled.
AM-135Sin unidad, viajar en avión/camión con detallesSPRINT 21MTipo de transporte alternativo + campos.
[~] AM-136Notas por técnico (estatus sitio/mantenimiento) + fotoCONSOLIDADO(2026-05-20) Consolidado en epic EPIC-NOTAS (notable_type=Sitio, autor_id=técnico, foto opcional vía nota_fotos).
AM-137Mejorar vista de creación de viajes para celularSPRINT 19MMobile UX de FormaViaje.vue. Reusar patrones del rediseño móvil de /notificaciones.
AM-138Cancelar órdenes sin viáticos ni depósitosSPRINT 15SValidación + endpoint + UI button condicional.
AM-139Múltiples destinos en un viaje, separar cuadrillas/vehículosBACKLOGLSprint: diferido. Fase 2 explícita de N vehículos, después de validar Fase 1 en prod.
AM-140No se pueden editar productos de viaje recién creadoBACKLOG (C2)Sprint: diferido. Editor en FormaViaje.vue:214-245 bajo viaje_link_enabled. Solo accionable al activar capa 2.
[x] AM-141Usuario sin permiso de inventario no debe ver reporteDONE(2026-05-20) Cerrado. MovimientosInventarioController::reportes:152 ya hace Gate::authorize('viewAny'). Sergio decide en AM-132 si la página queda o se elimina.
AM-142Mejorar estilo de info de materiales/productosSPRINT 19 (⚠️)S-MAclarar al inicio del sprint qué pantalla específicamente. Sin contexto no se puede tasar bien.
AM-143Checklist entrega: “presione OK” sin botón + mensaje falsoBACKLOG (REPRO)S-MSprint: diferido. En pausa hasta que Sergio reproduzca el caso real (botón SÍ existe en Checklist.vue:104-120; mensaje aparece cuando anyBad=true con default ok=false). Necesita screenshot para distinguir fix A/B/C.
AM-144Visualizar existencia de productos al hacer viaje/trasladoBACKLOG (C2 parcial)MSprint: diferido. Display de stock en SelectorProductosMovimiento.vue. El caso del viaje depende de capa 2; el caso del traslado puede hacerse antes.
AM-145Actualizar órdenes y notificar cambiosSPRINT 21MExtender listener actual (dispara en created) a updated con diff. Reutiliza service NotificarViajeCreadoService.
[x] AM-146Marcar usuarios para notif por ordenDESCARTADO(2026-05-20) Descartado. El flag global recibir_notif_viajes + asignación al equipo cubren los casos reales; watching per-orden es over-engineering para ~20 usuarios internos.

Resúmenes por bucket

Cerrar (ya están hechos — 5 ítems)

  • AM-46, AM-47, AM-84, AM-134.
  • AM-141 cerrar si se elige NO eliminar la página (AM-132).

Probablemente descartar (8 ítems)

  • AM-9, AM-10, AM-71, AM-85, AM-91, AM-98 — epics de una palabra abandonados.
  • AM-97 — contradice decisión reciente.
  • AM-58, AM-107, AM-142 — ambigüedad bloquea estimación.

Quick wins (S, sin dependencias — 8 ítems)

  • AM-52, AM-53, AM-66, AM-89, AM-94, AM-95, AM-130, AM-133, AM-138.
  • Sugerencia: bloque “quick wins” en una sola sesión, todos pequeños, podrían entrar en 1 día.

Decisiones de producto antes de hacer (5 ítems)

  • AM-55 (¿layer de roles encima de permisos?).
  • AM-72 (SMS vs push interno, costo).
  • AM-132 vs AM-141 (eliminar reporte o protegerlo — ambos no).
  • AM-146 (¿watching por orden?).
  • AM-143 (reproducir el caso real antes de tocar).

Features medianos (M — 13 ítems)

AM-59, AM-65, AM-69, AM-90, AM-93, AM-99, AM-100, AM-119, AM-129, AM-131, AM-135, AM-136, AM-137, AM-144, AM-145.

Features grandes (L+ — 3 ítems)

  • AM-49 traducciones (decidir antes: end-to-end o gradual).
  • AM-139 multi-destino (Fase 2 explícita; ya tiene plan).
  • AM-57 base de datos de equipos (pedir contexto antes de tasar).

Depende de capa 2 (defer — 2 ítems)

  • AM-140, AM-144 (parcialmente).

Consolidar (overlap entre ellas)

  • AM-65 + AM-73 + AM-90 + AM-99 + AM-136 — todas son variantes de “notas por entidad con/sin notif”. Recomendado: un solo modelo Nota polimórfico con notificar=bool, una UI, varios entry points. Si Sergio acepta, sustituye 5 tickets por 1 epic de M-L.

Cómo trabajar este doc

Sergio decide ítem por ítem. Marcadores:

  • [x] el ticket queda resuelto (sea por done, descarte, rescope, o consolidación).
  • [ ] sigue abierto.
  • [~] consolidado con otro — indicar cuál.
  • Anotar en Notas lo que se decidió y porqué (append, no sobreescribir).

Cuando un ticket se va a trabajar, se mueve a projects/amadeus.md sección “En progreso” y se sigue el flujo normal del hub.

Asignación a sprints (aprobada 2026-05-20)

29 tickets abiertos distribuidos en 7 sprints (15-21) + backlog diferido. Suponiendo que el próximo sprint en Jira sea el 15; si la numeración real es otra, renombrar pero mantener orden.

Sprint 15 — Quick wins + bug fixes (~2 días, 9× S)

  • AM-52 indicador cargando consumos
  • AM-53 mensaje flash móvil
  • AM-66 notas por consumo (justificación compras)
  • AM-89 fecha manual en depósitos
  • AM-94 subtotal e IVA en consumos
  • AM-95 entradas/salidas con servicio/lugar
  • AM-130 select buscable en filtro productos
  • AM-133 buscar movimientos por número de serie
  • AM-138 cancelar órdenes sin viáticos ni depósitos

Sprint 16 — Reportes y visualizaciones (~1 semana, 4× M)

  • AM-69 correo diario de saldos con viáticos
  • AM-93 consumos por usuario/fecha/categoría sumarizado
  • AM-131 vista detalle de producto con inventario+historial
  • AM-100 múltiples fotos en consumos

Sprint 17 — Roles + notif scheduled (~1.5 semanas)

  • AM-55 layer de roles persistidos (L) — refactor de policies + Nova
  • AM-72 push+email scheduled job 16:00 (S+) — reusa VAPID + Gmail Workspace

Sprint 17 debe ir antes que sprint 18 para evitar migrar policies dos veces (notas necesitarán autorización por rol/permiso).

Sprint 18 — EPIC-NOTAS (~1-2 semanas, M-L)

  • EPIC-NOTAS modelo Nota polimórfico + nota_fotos opcional + UI inline + listener al crear viaje
  • Cubre AM-65, AM-73, AM-90, AM-99, AM-136

Precondición: validar uso real con técnicos antes de codificar.

Sprint 19 — UX y mobile (~1 semana, 3× M)

  • AM-129 paginación estandarizada en todas las páginas
  • AM-137 form de creación de viajes en móvil
  • AM-142 estilo de info de materiales/productos ⚠️ aclarar qué pantalla antes de empezar

Sprint 20 — Datos del módulo de inventarios (~1 semana, 2× M + S)

  • AM-119 inventarios pertenezcan a sitio O usuario (schema change + check OR)
  • AM-120 verificar que cambio de estatus cubre rechazado/cancelado además de entregado (puede ser S si ya está implementado)
  • AM-59 fotos de estado de unidad en salida/llegada

Sprint 21 — Features de viaje (~1 semana, 3× M)

  • AM-135 viajar sin unidad (avión/camión) con detalles del vuelo/camión
  • AM-145 actualizar órdenes y notificar cambios (extiende listener viaje creado a updated con diff)
  • (slot libre para overflow del sprint 16 o adelantar de backlog)

Backlog diferido (fuera de sprint, requiere precondición)

  • AM-49 traducciones a español (L, sprint dedicado cuando se decida alcance: end-to-end vs página por página)
  • AM-57 BD equipos en sitios con identificadores (L, pide aclaración sobre “hacia dónde están apuntados”)
  • AM-139 Fase 2 N vehículos: múltiples destinos/cuadrillas/vehículos por viaje (L, después de validar Fase 1 en prod)
  • AM-140 editar productos en viaje recién creado (depende de capa 2 activada)
  • AM-144 existencia de productos al hacer viaje (parcialmente depende de capa 2)
  • AM-143 checklist sin botón OK + mensaje falso (en pausa hasta reproducir caso real)

Notas operativas de la asignación

  • Capa 2 (INVENTARIO_VIAJE_LINK) queda intencionalmente fuera de toda asignación — su activación sigue siendo decisión independiente de Sergio. Cuando la actives, AM-140 y AM-144 (parcial) entran al próximo sprint disponible.
  • AM-120 puede cerrarse sin trabajo si InventarioService::aplicarEntrada ya cubre todos los estatus. Verificar al inicio del sprint 20.
  • AM-100 podría moverse al sprint 21 si quieres mantener “todas las fotos” agrupadas con AM-59.

Epics derivados de la consolidación

EPIC-NOTAS — Modelo Nota polimórfico con foto opcional

Origen: consolidación de AM-65, AM-73, AM-90, AM-99, AM-136 (5 tickets que pedían el mismo patrón sobre entidades distintas).

Scope:

  • Tabla notas: id, notable_type, notable_id, autor_id (FK usuarios), contenido text, notificar_al_abrir bool, timestamps.
  • Tabla nota_fotos: id, nota_id (FK), path, timestamps. Soporta multi-foto por nota.
  • MorphMap en AppServiceProvider: registrar Viaje, Sitio, MovimientoInventario (¿Orden si es modelo separado?).
  • Trait HasNotas en cada modelo notable: morphMany(Nota::class, 'notable').
  • Modelo Nota con belongsTo Usuario as autor, morphTo notable, hasMany NotaFoto.
  • UI inline reusable: componente Vue <NotasInline notable-type=... notable-id=... :allow-create-photo="true"> con lista + form + drag&drop foto.
  • Listener: al crear Viaje (y posiblemente al crear MovimientoInventario), buscar notas en Sitio correspondiente con notificar_al_abrir=true y disparar push+email al equipo asignado.
  • Nova: resource Nota con polymorphic field para gestión admin.

Dificultad: M-L (1-2 semanas).

Dependencias:

  • Modelo Orden — confirmar si existe como entidad propia o si “orden” en AM-73 = viaje.
  • Storage para fotos: reutilizar el mismo path que ya usan otras fotos del proyecto.

Validación previa antes de codificar:

  • Confirmar uso real: ¿el técnico va a tomar el teléfono y escribir una nota, o va a llamar por radio? Si la respuesta es la 2, la inversión no vale.
  • Decidir si las fotos son obligatorias para algún tipo de nota o siempre opcionales.

Bitácora de decisiones

2026-05-20 — análisis inicial

  • 51 tickets de Jira importados y categorizados.
  • Sin acciones automáticas — pendiente que Sergio revise una por una.

2026-05-20 — sesión de decisiones (Sergio)

  • Cerrados (5): AM-46, AM-47, AM-84, AM-134, AM-141. Confirmados como DONE.
  • Descartados (12): AM-9, AM-10, AM-58, AM-71, AM-85, AM-91, AM-97, AM-98, AM-107 (epics de 1 palabra + stale + ambiguos) + AM-132 (consolidación previa de reportes) + AM-146 (over-engineering vs flag global existente).
  • Decisiones de producto:
    • AM-55 → Opción A: layer de roles persistidos encima de permisos granulares. Pendiente ejecutar (L).
    • AM-72 → Opción C: push + email fallback, NO SMS pagado. Pendiente ejecutar (S+).
    • AM-143 → Opción D: reproducir caso real antes de decidir fix.
  • Consolidación: AM-65, AM-73, AM-90, AM-99, AM-136 → epic EPIC-NOTAS (modelo polimórfico + foto opcional). 5 tickets reducidos a 1 epic M-L.

Pendiente: priorizar el resto de tickets abiertos (29 ítems).

2026-05-20 — priorización aprobada

  • 29 tickets distribuidos en 7 sprints (15-21) + backlog diferido.
  • Sprint 15 = quick wins (9× S, ~2 días).
  • Sprint 16 = reportes y visualizaciones (4× M).
  • Sprint 17 = roles persistidos + notif scheduled (la más invasiva, debe ir antes que EPIC-NOTAS).
  • Sprint 18 = EPIC-NOTAS (consolidación 5→1).
  • Sprint 19-21 = UX/mobile + datos inventarios + features viaje.
  • Backlog diferido: AM-49 (traducciones), AM-57 (BD equipos), AM-139 (Fase 2), AM-140/144 (dep. capa 2), AM-143 (repro).
  • Cada ticket en la tabla principal lleva ahora etiqueta SPRINT N o BACKLOG.