Pendientes abiertos
289 pendientes
en 33 proyectos ·
agrupados por proyecto, dentro de cada uno en el orden recomendado del propio
projects/<slug>.md.
electrosystems · active · high 15 pendientes
🎯 Top de ataque (15)
- #018 📅 2026-06-05 Smoke test extendido 1 semana con Sergio en uso real (en curso).
- #019 📅 2026-06-05 Documentar costos reales vs estimación (cuando se use el API).
- #018 📅 2026-06-02 Sergio + jefe: smoke test E2E real — mandar audio (validado por Sergio), mandar PDF, hacer preguntas sobre su contenido. En curso.
-
#017 📅 2026-06-08 Agregar 2-3 usuarios más: Gustavo Chavira (
gustavo_chavira_mx, admin) ya vinculado 2026-05-15 tarde. Faltan ingenieros (sin nombres decididos). -
#013 📅 2026-06-22 (causa secundaria del incidente jefe, no urgente con Antigravity API ya online) Empujar al modelo local a usar APIs JSON para datos estructurados (clima, finance). Antigravity lo hace bien solo. Para el local: (a) tool dedicada
web_search(query)con Brave Search API (2k búsquedas/mes gratis, key registrable enbrave.com/search/api/), (b) hint en system prompt, (c) dejar al modelo iterar (ya tiene la regla nueva). -
#335 📅 2026-06-10 (en pausa — Fase 2.10) Bug de resolución anafórica ("este archivo" → file_id más reciente) + tool
send_email. Archivos deployados en disco; pendiente restart + credenciales SMTP + smoke + commit. Detalle en sección 🔄 RETOMAR arriba y bitácora 2026-05-19 (noche — Fase 2.10). - #336 📅 2026-06-15 Streaming en WhatsApp (chunking).
- #337 📅 2026-06-03 Validación E2E vía Telegram — Sergio puede preguntarle al bot "cuántas llamadas hubo hoy en oasa-plutarco", "última llamada", "top extensiones por duración", etc.
- #338 📅 2026-06-12 (opcional, no urgente) Replicar el patrón a los 5 Sangoma 7 restantes en lote: minadolores2, miscelec-chih/queretaro/leon/jrz, novamex-jrz. ~5 min por host con el flujo ya probado (ssh validation → alias → extract creds → yaml block → restart).
- #339 📅 2026-06-03 Validación E2E vía Telegram — Sergio puede preguntarle al bot "qué hosts corren CentOS 6 EOL", "cuáles tienen llave rotada", "qué hay en 192.168.20.x", "dame detalle de oasa-plutarco". Pendiente cuando Sergio quiera probarlo.
-
#135 📅 2026-06-25 Sumar más DBs al allowlist. Cerrado parcialmente 2026-05-22 (Fases 2.14 + 2.15): cluster FreePBX Sangoma 7 completo (7 PBXs / 15 DB endpoints). Scope aclarado por Sergio: solo infra Electrosystems — clientes freelance (holbox/deportescampeon/grecocell/jmeza) y proyectos personales NO entran al bot. Quedan en scope ES: (a) Postgres lado ES (
electroialocal +netbox+uispen datacenter, requiere portardb_runnera Postgres ~1-2 h), (b) 18 PBX no-Sangoma en sitios cliente ES (extraer creds en backups-infra primero), (c)otrsyclientes.electrosystemsnet.com(ambos CentOS 6 EOL con MySQL). - #020 📅 2026-06-28 Resto del equipo (15 usuarios).
- #020 📅 2026-06-30 Allowlist de SSH a hosts de clientes (uno por uno, decisión por decisión).
- #020 📅 2026-06-30 Editor de prompts desde dashboard (admin).
- #020 📅 2026-06-30 Reportes de uso comparativo (Claude vs local) para el jefe.
electrosystems · active · high 10 pendientes
🎯 Top de ataque (10)
- #262 📅 2026-06-02 (sigue 2026-05-11) Confirmar con Sergio el resultado de su validación manual de correos. Sergio revisa el comportamiento en su Gmail durante el fin de semana 2026-05-09/10 y comparte si requiere ajuste.
-
#011 📅 2026-06-25 (opcional, follow-up) Considerar el mismo filtro "excluir notificados muy recientemente" en
procesarFlapping's expansión de RECORDATORIOS: hoy la query solo filtrawhereNotNull('flapping_notificado_at'), así que en un tick donde simultáneamente cae un nuevo flapping (block "detectado") y otro vencía su recordatorio en el mismo sitio, podría salirse el correo "detectado" + "recordatorio" mencionando al recién detectado. Riesgo bajo (requiere 24h-vencido + nuevo en mismo tick). NOTA: con el debounce de detectados (commit017e1b9) la probabilidad bajó aún más porque el detectado ahora se retrasa 5 min. - #012 📅 2026-06-10 Observar próximos eventos de flapping + recordatorios en vivo para confirmar consolidación en ambos caminos tras debounce + arrastre por sitio.
-
#007 📅 2026-06-05 (Fase 3a) Scaffold de tests para
monitoreo-collector. El repo Go NO tiene tests hoy — antes de meter el resolver, montar harness:testify+ mock degosnmp(seagosnmp/gosnmp.MockSNMPo servidor SNMP en docker para integración) + 4-5 tests del resolver de{IF}(cache hit/miss, fallback ifDescr→ifName, interfaz no encontrada, invalidación onnoSuchInstance). ~1-2 hrs sesión propia. Sin tocar lógica de producción todavía. Salida: harness pasando + tests muriendo de manera predecible que validen futuras decisiones del resolver. - #008 📅 2026-06-12 (Fase 3b) Implementación SNMP placeholder end-to-end. Sub-tareas:
-
#009 📅 2026-06-22 (Fase 4) Migración de datos por lotes. Crear monitoreos nuevos genéricos (
ifInOctets {IF},ifOutOctets {IF},ifHCInOctets {IF},ifHCOutOctets {IF},ifHighSpeed {IF},ifSpeed {IF}). Empezar piloto con MikroTik (mayor fragilidad — VLANs idx 2001/2005 cambian al menor reboot/restore). Por dispositivo: setearinterfazen cada asignación nueva, validar lecturas correctas durante 1-2 ciclos, soft-deletear las asignaciones viejas hardcodeadas. Auditoría completa: 15 monitoreos ifTable + 62 ifXTable. -
#010 📅 2026-06-03 Packet loss al AP Rumurachi-Urique (192.168.37.61). Ping desde
monitoreomostró 50% pérdida intermitente durante el diagnóstico. Probable causa de que el monitoreo 166 (ifSpeed.1LAN1) caiga en falla esporádicamente y se persista como 0. Investigar enlace/RF a Rumurachi (no es es-antenas-new — es operación de red, capturar también enprojects/electrosystems-network.mdsi aplica). -
#172 📅 2026-06-18 (Fase 6 del flujo "Agregar candidato UISP") Wizard 1-page de Agregar. Unificar todo el flujo en UNA sola vista en lugar del redirect actual
Agregar → /dispositivos/{id}/edit. Pantalla nueva (ruta dedicada/uisp-candidatos/{id}/wizardo modal grande en/uisp-candidatos) con: bloque plantilla (con preview de monitoreos que se van a prepoblar), bloque SNMP (community, versión), bloque variables de monitoreo (con botón "Copiar del contraparte" ya implementado en Fase 3), bloque enlace (Fase 5 reutilizable). Submit único: crea dispositivo + prepuebla monitoreos + sobreescribe los límites editados + asigna al enlace, todo en una transacción. Reemplaza el combo "click Agregar → redirect a edit → llenar SNMP → guardar → editar más → enlaces". Depende de Fase 5 ya implementada para el bloque de enlaces. Trade-off: vista más densa, pero el operador no pierde estado entre saltos y todo el contexto del candidato UISP (IP, nombre, plantilla sugerida) queda visible mientras llena. -
#190 📅 2026-06-20 Retomar
/metricspara Prometheus. Hoy quedó desactivado (commit2efa022) porque el endpoint disparaba una query agregada sobrelecturas_historicas_detalles(49.6M filas) y colgaba PHP-FPM cuando un scraper lo pegaba. Cuando se vuelva a necesitar: (a) reescribirMetricsController::indexevitando el eager-loadwith('ultima_lectura_historica.detalles'); opciones probadas en diagnóstico: loop conDB::table('lecturas_historicas')->where('dispositivo_id', $id)->orderByDesc('fecha')->first()(N=317 queries triviales conlecturas_historicas_dispositivo_id_fecha_index, backward scan, lee 1 fila por query) + 1 query bulkwhereIn('lectura_historica_id', $ids)para los detalles, o LATERAL JOIN equivalente en SQL crudo. (b) Restaurar la rutaRoute::get('/metrics', [MetricsController::class, 'index'])y eluse App\Http\Controllers\MetricsController;enroutes/web.php. (c) Considerar autenticarla (hoy era pública). El archivoMetricsController.phpquedó intacto en el repo como referencia. -
#196 📅 2026-06-02 Tepehuanes collector remoto caído.
sitios.fecha_ultima_conexionpara Tepehuanes a las 13:00 estaba a 487 minutos (~8 horas sin reportarse). Sigue caído. Es problema del HOST físico en sitio (collector Go corriendo en un equipo en Tepehuanes) — no del server. Pendiente operacional: investigar conectividad/equipo en Tepehuanes. Capturar enelectrosystems-network-mapcuando esté listo.
personal · active · high 4 pendientes
🎯 Top de ataque (4)
-
#155 📅 2026-06-03 Triage de repos atrasados / con changes locales:
deportescampeon(5 changes, 1.5y),joyeriameza(1 change, 2y),greco-cell(limpio pero 1.2y),sis_platform(3y — confirmar si vivo). Decidir cada uno: pull, descartar changes, commitear, o archivar. -
#408 📅 2026-06-02
⏱ 30m Configurar WireGuard en el celular de Sergio con las mismas redes que el PC personal. App WireGuard (Android/iOS) → "Add tunnel" genera par de llaves → agregar peer
10.255.255.15en la VMwireguard(wg set+ append awg0.conf, nuncawg-quick save) → config cliente split-tunnel reusando el mismo bloqueAllowedIPsdel túneles-wg(sitios +10.11.0.0/16+172.16.0.0/16+192.168.20/3.0/24+10.255.255.0/24) +Endpoint 201.174.219.154:51820. Peer name#celular-sergio. Runbook enelectrosystems/servers/wireguard/README.md. -
#409 📅 2026-06-03
⏱ 1h Definir el proceso repetible para agregar más clientes WG road-warrior con acceso a las mismas redes. Base ya escrita (runbook en
electrosystems/servers/wireguard/README.md+ memoriareference_es_wireguard_roadwarrior). Pendiente: decidir si conviene un script/plantilla (genera llaves + arma el.confcliente con el AllowedIPs canónico + comando server listo), convención de IPs.16+, y dejar el bloqueAllowedIPscanónico en un solo lugar reutilizable. Toca infra ES (VMwireguard). -
#410 📅 2026-06-04
⏱ 2h ⚠️ Control de acceso más fino: que el router de oficina (y otros equipos) permitan solo clientes WG elegidos, no a todos los que salen NAT'eados como
.20.5. Enfoque: que la VMwireguardNO enmascare el tráfico al destino sensible (reglaiptables -t nat -I POSTROUTING -d <dst> -j ACCEPTantes del MASQUERADE general, o SNAT selectivo) para que el equipo vea el10.255.255.xreal del peer → ruta de regreso a10.255.255.0/24en el MikroTik vía gw → ACL del router que permita solo las IPs WG elegidas (ej..14PC,.15celular). Implica tocar la VMwireguard(prod) + el router. Hoy (2026-05-29) se hizo el fix simple:.20.5en el allow del MikroTik (da acceso a todos los clientes WG).
electrosystems · active · high 10 pendientes
🎯 Top de ataque (10)
-
#139 📅 2026-06-05 Decidir destino de
dokuwiki— coordinar con docs-platform. Opción A: migrar VM tal cual a poseidon. Opción B (ya pre-elegida en docs-platform): importar contenido a Wiki.js y decommissionar el VM sin migrar. RSS real 704 MB / qcow2 20 GB. Decidir antes de iniciar migración. -
#140 📅 2026-06-10 Migrar
otrsa poseidon (primero del lote, la más liviana confirmada en uso). RSS real 1.7 GB / allocated 2 GB / qcow2 20 GB. Observar swap/load 24-48 h antes de pasar a la siguiente. Bloqueado por: triage de/en poseidon (poseidon-root-triage). -
#141 📅 2026-06-08
MigrarBORRARtraccar2025. ✅ Resuelto el "a dónde": #396 confirmó que el Traccar real vive en el hostares(192.168.3.2, vivo con ~20.5M check-ins). Eltraccar2025de orion es un leftover de migración muerto (-incoming, NIC nunca cableado) — no hay servicio que preservar ni migrar. Acción: borrar la VM de orion (confirmar con Sergio antes delvirsh undefine/borrado del qcow2). No bloqueante para el decommission. - #142 📅 2026-06-20 Considerar +RAM en poseidon como upgrade preventivo (oversubscribed con swap 100%). No bloquea la migración — los 2.5 GB RSS reales de las 3 VMs caben en los 9.6 GB available de poseidon — pero quita el miedo de raíz y compra runway para el refresh del hypervisor (poseidon también es CentOS 7 EOL).
- #021 📅 2026-06-15 Decommissionar FreePBX/Asterisk local de orion. Descubierto el 2026-05-11. Sergio confirmó (2026-05-11): no está en uso actualmente, se usaba hace mucho tiempo. Se puede prescindir sin problema → simplificar el end-game: solo apagar el servicio + limpiar configuración antes de apagar el host, sin migración a otro PBX.
-
#023
cond:migracion-completa Decidir destino de la VM paused
bookstack(parte de docs-platform). -
#024
cond:migracion-completa Inventariar VMs archivadas en
oriony decidir borrado o snapshot off-host antes de apagar. -
#400
cond:migracion-completa Confirmar nada vivo apunta a
orion(DNS, monitoring, scripts en otros hosts). -
#401
cond:migracion-completa Documentar en
INVENTORY.mdel cambio de status a "decommissioned" cuando ocurra. - #402 cond:migracion-completa Apagar físicamente.
electrosystems · active · high 1 pendientes
🎯 Top de ataque (1)
-
#144 📅 2026-06-15 Limpieza low-risk (opcional, baja ganancia). El diagnóstico de #143 mostró que
/var/log(1.2G) +/var/tmp(1.2G) +/root(53M) es el único terreno disponible para limpieza in-place — máximo ~2 GB recuperables, insuficiente para sacar/del rango crítico. Saltar este paso y ejecutar #145 directo. Mantener este pendiente como segunda barrida de mantenimiento DESPUÉS de #145.
telcel · active · high 3 pendientes
🎯 Top de ataque (1)
- #384 cond:respuesta-telcel ⚠️ Seguimiento con Telcel: su CPE en La Junta inyecta ~0 kbps pese a enlace 1G activo. Pedir que revisen puerto lado-servicio / mapeo de VLAN/EVC en su equipo de La Junta. Lado ES ya agotado y probado sano (ver bitácora 2026-05-28).
📦 Backlog (2)
-
#386
sin fecha
Reactivar el pipeline de monitoreo de estos equipos en
es-monitoreo(lecturas muertas desde ~2026-04-17 → no hubo timeline disponible durante este incidente). -
#397
cond:activar-puertos-T2 Provisionar la llave de oxidized en los 4 radios de redundancia T2 (27.81/27.80/37.126/37.125) para que entren al backup automático. Hoy inalcanzables (puertos apagados en Gasachi); ya están listados en
router.db, solo falta la llave cuando se activen.
electrosystems · paused · high 12 pendientes
🎯 Top de ataque (12)
-
#344
sin fecha
Investigar API de UISP: endpoints para listar devices (
/nms/api/v2.1/devices), atributos relevantes (id, name, model, ip, site, role), webhook/event stream para alta/baja en tiempo real. -
#345
sin fecha
Diseñar mapping UISP →
dispositivos: - #346 sin fecha Elegir modo de sync:
-
#347
sin fecha
Flow de "claim" (edge case): cuando Sergio agrega a UISP un device por fuera de la herramienta (no via Fase 1A) y ya existía como
origen=manualenes-antenas-new: - sin fecha Posible Modo A' (NO emprender sin discusión): capturar el endpoint interno que la UI usa al "Add Device" (browser DevTools al agregar manual una vez) y replicarlo con session cookie auth desde es-antenas-new. Técnicamente posible, operacionalmente frágil (Ubiquiti puede romperlo sin aviso en cualquier release). Solo considerar si Modo B resulta inviable por algún campo que el CSV no acepte.
- #031 sin fecha Reporte de huérfanos en UI ("Devices pendientes de migrar a UISP"):
- #349 sin fecha Flow de migración por device:
-
#350
sin fecha
Métrica de cierre de proyecto:
count(origen=manual AND administrado=true) = 0. Cuando se cumple, Fase 1A queda terminada y Fase 3 (doc) puede arrancar con un estado limpio. -
#351
sin fecha
Que los devices no-UISP (servers de telefonía, switches no-Ubiquiti, etc.) que Sergio quiere backupear estén entrando a NetBox con el tag
backup-enabled. - #352 sin fecha Que el flow de NetBox a Oxidized esté funcionando (ya documentado en backup-system).
-
#353
sin fecha
Documentar el flujo final en
~/agy/electrosystems/backup-system/README.mdy/o en el wiki (docs.electrosystemsnet.com) para que la operación quede asentada. - #354 sin fecha Considerar un dashboard/vista de "salud del inventario" — cuántos devices en cada plataforma, cuántos sincronizados, cuántos huérfanos.
electrosystems · done · high 5 pendientes
🎯 Top de ataque (5)
- sin fecha Confirmar con Sergio: ¿cuál es la velocidad contratada por las 3 casas en agregado? Para decidir si el shaper de 70 Mbps en eth4 (CASAS) está bien o hay que subirlo.
-
sin fecha
Decidir cambio
countrycode 511 → 484en los 4 equipos airOS para destrabar TX power. - sin fecha (Opcional) Evaluar pasar chanbw 40 → 80 MHz si hay espectro libre (correr AirView).
- sin fecha iperf3 gateway↔ERX y ERX↔cada estación para medir antes/después del cambio.
- sin fecha Documentar resultado final + verificar quejas resueltas con clientes.
personal · active · medium 1 pendientes
🎯 Top de ataque (1)
- #302 📅 2026-06-05 ⏱ 1-2h RSS / Atom feed de log diario (solo Sergio).
personal · active · medium 3 pendientes
🎯 Top de ataque (3)
-
#HIJ-003 📅 2026-06-22
🤖 alto (Fase 4, economía de puntos + premios) Schemas
puntos_transacciones/premios/canjes, balance de puntos prominente en home hijo, catálogo + canjear, CRUD de premios en admin, cola de aprobación de canjes, ajuste manual de puntos. Deliverable: hijo acumula, canjea "30 min Switch", Sergio aprueba/marca cumplido. Estimación 1 sem. (antes #187) Gancho ya puesto:Tareas.aprobar/1es el punto donde crear la transacción de puntos al aprobar. - #HIJ-004 📅 2026-06-30 🔥 🤖 medio (Fase 5, streaks + push) Query de streaks + badge en home hijo, VAPID + service worker, push diario al hijo si quedan pendientes (Oban cron), push a papá en eventos clave, settings de notifs en admin. Deliverable: hijo ve "🔥 7 días seguidos", recibe recordatorio si olvida tarea. Estimación 0.5 sem. (antes #188)
- #HIJ-005 sin fecha 🤖 alto (Fase 6, evolución continua) Lo que el uso real revele — dashboard semanal para papá, mejor offline, posibles segundos hijos, etc. Sin alcance fijo todavía. (antes #189)
electrosystems · active · medium 7 pendientes
🎯 Top de ataque (7)
- #360 📅 2026-06-05 Migrar la tarjeta E1 (TE210P dual-span) a Nortel del servidor viejo al nuevo. Implica:
-
#361 📅 2026-06-10 Desmantelar el servidor viejo (
asterisk-adfsa-old). Pre-condición: migración de tarjeta E1 completa y validada + ruta IAX2 retirada del NEW. Pasos: - #041 📅 2026-06-15 Agregar IP pública en el NEW para troncal SIP de Transtelco (líneas americanas). ADFSA va a tener un segundo trunk SIP con Transtelco para sus DIDs US (en paralelo al de Telmex que ya está en cutover). Requiere:
- #042 📅 2026-06-15 Validar estatus end-to-end de la migración SIP Telmex — confirmar que llamadas in/out funcionan después del swap, que los teléfonos están registrando contra el nuevo server, y que el trunk Telmex sigue activo.
-
#043 📅 2026-06-12 Verificar soporte MFC-R2 (openr2) en el chan_dahdi de FreePBX 17 / Debian 13 antes de insertar la tarjeta E1. Comando útil cuando DAHDI esté cargado:
asterisk -rx "dahdi show mfcr2 variants"y revisar si la libreríalibopenr2está en el sistema. Sin esto, la migración del E1 falla en signalling MX. -
#044 📅 2026-06-17 Limpiar inconsistencia de apt sources en Debian 12/13. El host tiene mezcla: líneas
bookworm+ una líneastable(resuelve atrixie) + repo Sangomabookworm. Runtime estrixiepero Sangoma no soporta oficialmente trixie. Decidir: bajar abookworm(alineado con Sangoma) o quedarse entrixie(no soportado, riesgo de roto en el siguiente major upgrade de FreePBX). Revisar packages held antes de tocar nada. - #366 📅 2026-06-20 Inbound desde Telmex. Outbound validado en producción 2026-05-07; inbound deferido al provider. Confirmar con Telmex cuando restauren el servicio. Probable: parte del rollout de PSTN-E1 → SIP-trunk de los próximos días.
electrosystems · active · medium 38 pendientes
🎯 Top de ataque (37)
-
sin fecha
B.1 Migración
auditorias_viaje+ modelo + relaciones. -
#392
⏱ 2h 🔥 Quick-win nativo (ya viable). El Traccar de
areses 6.6 conemailEnabled:true→ se puede definir el geofence "Cd. Juárez" + una notificación por email a la contadora directo en la UI de Traccar, sin tocar Amadeus. Requiere login admin de Traccar (lo tiene Sergio) — yo lo guío o lo hace él. Limitación conocida: dispara con cualquier entrada a Juárez (ruido) y sin contexto de viaje; cobertura provisional hasta el bridge. -
#249 📅 2026-06-01 🔥 Prender
ANALISIS_HOOK_CONSUMOS_ENABLED=true(validación automática al subir). Desbloqueado — workers ya listos (#371 cerrado). (Bloque 0) -
sin fecha
B.2
AuditorViajeServicecon flags determinísticos. -
#393
cond:post-milestone
⏱ 1d ⚠️ Cimientos del bridge. Columna
traccar_device_idenvehiculos+ mapeo unidad↔device (consultandoGET http://201.218.172.10:8082/api/devices); permiso nuevonotificar_retornoenpermisos(Nova + modelo); crear token/usuario read-only en Traccar 6.6 (login admin de Sergio); montar scheduler (cron dephp artisan schedule:run, hoy inexistente). -
#369 📅 2026-06-04
⏱ 1d 🔥 PR 1-4 de políticas/lineamientos editables (
amadeus-politicas-viaticos.md). D1-D5 cerradas. ✅ PR 1, PR 2, PR 3 y PR 4 COMPLETADOS (commits7e53af6/449a2cb/2506bb2/c60fc91+ PR 4 listo en local). Pendiente: (1) validación en staging/prod (correranalisis:auditar-viaje <viaje-cerrado>y compararviolaciones_politicavs juicio humano), (2) deploy de PR 4 a producción. (Bloque 0b) -
sin fecha
B.3 Llamada extra a Antigravity para resumen ejecutivo (helper en mismo service o
ResumidorAuditoriaService). -
#394
cond:post-milestone
⏱ 2d ⚠️ Bridge Amadeus↔Traccar. Comando programado que consulta la posición (
GET http://201.218.172.10:8082/api/positions?deviceId=en Traccar 6.6) de los vehículos en viaje activo (fecha_cierre IS NULLy destino fuera de Juárez); detecta transición fuera→dentro del bbox de Juárez; dispara eventoRetornoDetectadoEvent→ listener push+email a quienes tengannotificar_retorno. Mensaje con contexto: "Vehículo U09 (viaje folio X, técnico Y) regresó a Cd. Juárez a las HH:MM." Idempotente (no re-avisar). Alternativa más limpia: notificación web (webhook) de Traccar 6.6 al geofence → endpoint en Amadeus (evita scheduler). - #380 📅 2026-06-06 ⏱ 1d ⚠️ Pantalla mapa Leaflet+OSM de consumos con popup/hover de detalle. (Bloque C — victoria visual)
-
sin fecha
B.4
AuditoriaViajeController+ ruta + policy. -
#378 📅 2026-06-09
⏱ 0.5d ⚠️ Coords oficina/matriz (config) + medir cobertura GPS de
sitios. (Hospedaje omitido.) (Bloque B) -
sin fecha
B.5 Page Vue
Admin/AuditoriaViaje.vuecon secciones del diseño. - #379 📅 2026-06-10 ⏱ 1d ⚠️ Validación de ubicación por corredor (sitio/oficina/segmento), solo bandera; pasar anclas a la IA. (Bloque B)
-
sin fecha
B.6 Botón "Auditar" en
/viajes/{id}show (visible si admin). - #382 📅 2026-06-16 ⏱ 2d ⚠️ Subida offline = borrador local (IndexedDB + sync al reabrir con señal, preservar ubicación, notificar si queda observado). (Bloque D — el más caro)
-
sin fecha
B.7 Comando artisan
analisis:auditar-viaje. - #387 cond:post-milestone ⏱ 3-4d ⚠️ Reloj checador en sitio (geolocalizado) para técnicos de viaje. Checada con captura de coordenada + cotejo contra el GPS del sitio asignado (geofence por radio) para validar que estén físicamente en el lugar de trabajo. Validación suave (bandera, no bloqueo), coherente con la filosofía del milestone. Diseño/ideas en Notas técnicas → Checador geolocalizado (#387). Depende de coords de sitios pobladas (#378).
- sin fecha B.8 Tests Pest end-to-end.
- #388 cond:post-milestone ⏱ 4-6d ⚠️ Ingesta de facturas desde la bandeja de contabilidad + ligado automático a consumos. Leer los correos donde llegan las facturas (CFDI) de los viáticos, parsear el XML, y ligarlas automáticamente al consumo del técnico que corresponde (por monto + fecha + RFC/comercio) para que la contadora ya no cotije a mano al validar/imprimir. Diseño/ideas en Notas técnicas → Ingesta de facturas CFDI (#388).
- sin fecha B.9 Smoke test contra viaje 191 / Manuel para validar que la IA captura los patrones que ya vemos en metadatos.
- #392 ⏱ 2h 🔥 Quick-win nativo (ya viable): geofence Juárez + email a contadora directo en la UI de Traccar 6.6. Requiere login admin de Sergio.
-
#393
cond:post-milestone
⏱ 1d ⚠️ Cimientos del bridge:
traccar_device_iden vehículos + permisonotificar_retorno+ scheduler. - #394 cond:post-milestone ⏱ 2d ⚠️ Bridge Amadeus↔Traccar: re-entrada a Juárez de vehículos en viaje activo → push+email con contexto.
- #395 cond:fase-2-lista ⏱ 2-3d Futuro: detección por celular del técnico (PWA) para viajes en avión.
-
#048 📅 2026-06-02 #048 Asignar permisos
inventarios_preparar/_entregar/_revisaral resto (18 usuarios en 0) cuando Selene valide el piloto. Capa 1 ON parcial para Selene Ortega (user_id=14, los 3 permisos en1). Capa 2 (INVENTARIO_VIAJE_LINK) sigue OFF — solo Sergio la activa editando.env. -
#047 📅 2026-06-01 #047 Smoke piloto Selene — flujo manual end-to-end de inventarios desde
/movimientos-inventario(preparar → entregar → revisar). Probar tambiénMisEntregasyViajeCompras. Crear OT, asociar inventario, verificar descuento. - #050 📅 2026-06-03 #050 Smoke N vehículos fase 1 — crear viaje con 2+ vehículos, verificar guardado, edit (vuelve a marcar los 2), listado pluralizado, reporte.
-
#211 📅 2026-06-04 #211a Smoke notificaciones in-app — crear notif en Nova con
permisos_requeridos={"inventarios":true}y validar filtrado por superadmin + usuario con permiso + usuario sin permiso. Badge y campana móvil deben encenderse. -
#175 📅 2026-06-05 #175 Smoke E2E bot electro-ia ↔ amadeus — desde Telegram (documentado en
electro-iacon plan completo). - 📅 2026-06-05 Decidir branch a desplegar (recomendado: merge a
mainprimero por trazabilidad). - 📅 2026-06-06 Backup de la BD de producción antes de migrar.
- 📅 2026-06-06 Revisar las 22 migraciones por orden (especialmente
modify_*yremove_*— son destructivas si fallan a mitad). - 📅 2026-06-07 Plan de rollback: snapshot de la VM en Poseidon + dump de BD. Reversión de migraciones no es trivial con tantos cambios encadenados.
- 📅 2026-06-07 Ventana de despliegue acordada (¿fuera de horario operativo?).
- 📅 2026-06-08 Composer install + npm build +
php artisan migrate --force+php artisan optimize. - 📅 2026-06-08 Verificar permisos nuevos en
add_inventario_granular_permisos(puede que necesite seed/sync de roles). - 📅 2026-06-08 Smoke test: crear OT, crear movimiento de inventario (rápido y normal), revisión de traslado, viaje_compras.
📦 Backlog (1)
-
#395
cond:fase-2-lista
⏱ 2-3d Fase futura: detección por celular del técnico. Para las contadas ocasiones en que el técnico viaja en avión (el vehículo no se mueve, así que Traccar no lo detecta). Geofence ligero vía la PWA de Amadeus (
navigator.geolocation), reusando el patrón de captura GPS de #381 (consumos) y del checador #387. Más invasivo (requiere permiso de ubicación / app abierta) — por eso es fase 2, solo el caso avión.
electrosystems · active · medium 30 pendientes
📦 Backlog (6)
- #233 sin fecha (AM-49, L) Traducciones a español end-to-end. Sprint dedicado cuando Sergio decida alcance: end-to-end o página por página.
-
#234
sin fecha
(AM-57, L) BD de equipos en sitios con identificadores. Tabla
inventariosya tieneequipo_id+numero_serie+sitio_id; falta aclarar "hacia dónde están apuntados" (topología de red / enlace lógico entre equipos). Pide aclaración antes de tasar. - #235 sin fecha (AM-139, L) Múltiples destinos + cuadrillas + vehículos por viaje (Fase 2 de N vehículos). Después de validar Fase 1 en prod (smoke #050).
-
#236
sin fecha
(AM-140) Editar productos de viaje recién creado. Editor en
FormaViaje.vue:214-245bajoviaje_link_enabled. Solo accionable al activar capa 2 (INVENTARIO_VIAJE_LINK=trueen.env). -
#237
sin fecha
(AM-144, M) Visualizar existencia de productos al hacer viaje/traslado. Display de stock en
SelectorProductosMovimiento.vue. Caso del traslado puede hacerse antes; caso del viaje depende de capa 2. -
#238
sin fecha
(AM-143, S-M) Checklist entrega: "presione OK" sin botón + mensaje falso. En pausa hasta que Sergio reproduzca el caso real con screenshot (botón SÍ existe en
Checklist.vue:104-120; mensaje aparece cuandoanyBad=truecon default ok=false). Necesita screenshot para distinguir fix A/B/C.
📝 Otras (24)
-
#209
sin fecha
(AM-52, S) Indicador "cargando" al subir consumo — loading state en
Pages/Consumos/Create.vuedurante el submit. -
#218
sin fecha
(AM-69, M) Correo diario de saldos con viáticos — job + Mailable + schedule en
Kernel.php(SMTP ya configurado desde 2026-05-19). -
#222
sin fecha
(AM-55, L) Layer de roles persistidos (Opción A aprobada 2026-05-20) — schema nuevo (
roles,rol_permiso, FK opcionalusuarios.rol_id), refactor de policies para resolver vía rol con override per-usuario, Nova UI para gestionar roles. Tests. -
#224
sin fecha
(consolida AM-65/AM-73/AM-90/AM-99/AM-136) Modelo
Notapolimórfico + foto opcional + listener al crear viaje. 5 tickets del backlog colapsados a un solo epic. -
#225
sin fecha
(AM-129, M) Paginación estandarizada — componente
Paginador.vuereusable + audit de páginas que hoy paginan distinto. -
#228
sin fecha
(AM-119, M) Inventarios pertenezcan a sitio O usuario —
inventarios.usuario_idnullable + check constraint OR (uno de los dos, no ambos null ni ambos non-null). Originalmente en Sprint 11 de Jira. - #231 sin fecha (AM-135, M) Viajar sin unidad (avión/camión) con detalles de vuelo/camión — tipo de transporte alternativo + campos.
-
#210
sin fecha
(AM-53, S) Mensaje flash móvil tapado — z-index del toast en
Layout.vue:14-21lo deja atrás de elementos del topbar; subir elz-index. - #219 sin fecha (AM-93, M) Consumos por usuario/fecha/categoría sumarizados — reporte agregado con filtros.
- #223 sin fecha (AM-72, S+) Push + email scheduled job a las 16:00 (Opción C aprobada 2026-05-20, NO SMS pagado) — scheduled job que dispara push a técnicos pidiendo captura de viáticos; fallback a email si no marcan leído en X horas. Reusa VAPID + Gmail Workspace. Costo recurrente $0.
-
#226
sin fecha
(AM-137, M) Form de creación de viajes en móvil — mobile UX de
FormaViaje.vue. Reusar patrones del rediseño móvil de/notificaciones(2026-05-20). -
#229
sin fecha
(AM-120, S) Verificar cobertura de cambio de estatus → inventario.
InventarioService::aplicarEntradaya cubreentregado. Al inicio del sprint verificar que también cubrarechazadoycancelado— si ya están cubiertos, cerrar sin trabajo. -
#232
sin fecha
(AM-145, M) Actualizar órdenes y notificar cambios — extender listener actual (dispara en
created) aupdatedcon diff. ReusarNotificarViajeCreadoService. -
#211
sin fecha
(AM-66, S) Nota por consumo para justificación de compras — campo
notatext enconsumos+ form field + display en detalle. -
#220
sin fecha
(AM-131, M) Vista detalle de producto (
Pages/Productos/Show.vue) con dos tablas: inventarios por sitio + historial de movimientos. - #227 sin fecha ⚠️ (AM-142, S-M) Mejorar estilo de info de materiales/productos ⚠️ aclarar al inicio del sprint qué pantalla específicamente; sin contexto no se puede tasar bien.
-
#230
sin fecha
(AM-59, M) Fotos de estado de unidad en salida y llegada — tabla
viaje_fotos+ storage + UI camera. Originalmente en Sprint 11 de Jira. -
#212
sin fecha
(AM-89, S) Fecha manual en depósitos — campo
fechaen form (hoy es auto al server time). - #221 sin fecha (AM-100, M) Múltiples fotos en consumos — storage multi-file + UI gallery.
-
#213
sin fecha
(AM-94, S) Subtotal e IVA en consumos — agregar
subtotal+ivacalculados/capturados; mostrar desglose. -
#214
sin fecha
(AM-95, S) Entrada/salida siempre con servicio o lugar — validar al inicio que
sitio_idrequerido enMovimientoInventario(probablemente ya está, verificar). -
#215
sin fecha
(AM-130, S) Select buscable en filtro de productos — usar
SearchableSelectInput.vue(ya existe) en la lista de movimientos de inventario. -
#216
sin fecha
(AM-133, S) Buscar movimientos por número de serie — filtro en
MovimientosInventarioController::indexusandonumero_serieeninventarios(disponible desde 2025-11-19). -
#217
sin fecha
(AM-138, S) Cancelar órdenes sin viáticos ni depósitos — botón condicional en detalle de orden; endpoint
POST /ordenes/{id}/cancelarcon validación.
electrosystems · active · medium 19 pendientes
🎯 Top de ataque (19)
-
#314 📅 2026-06-03 Planet — vendor faltante. Pendiente: identificar cuántos devices Planet hay en la red (probablemente switches L2/L3 de la línea Planet). Existe ya un alias
planet-parralen~/.ssh/config(192.168.44.2, useradmin). Investigar firmware/CLI y elegir/escribir modelo Oxidized. -
#315 📅 2026-06-05 Siklu — vendor faltante. Sergio nota: "no está documentado por nombre, es parte de los dispositivos faltantes". Probable: equipos mmWave/E-band que están entre los
blackBox UNKNOWNde UISP. Identificar por OUI (Siklu OUI:00-22-91) y agregar aBLACKBOX_OUI_MAPsimilar al patrón Mimosa. Verificar si tienen SSH y cómo se exporta su config. - 📅 2026-06-08 Decidir credenciales por vendor (password fijo del fabricante? key auth? RBAC en NetBox?).
- 📅 2026-06-10 Para cada vendor: confirmar si necesita un
provision_<vendor>.sh(instalación de SSH keys) o si se backup con password en sops. - 📅 2026-06-12 Tag
backup-enableden NetBox para devices ya inventariados de cada vendor (ver flujo enelectrosystems/backup-system/README.md). - #316 📅 2026-06-15 Aclarar caso de uso real con Sergio: si la pendiente "ver manera de descargar" sigue viva, ¿qué le falta a la UI actual? Casos posibles:
-
#061 📅 2026-06-17 #061a A — IP en el header del archivo de config. Auto-inyectada por Oxidized vía model hook. Primera línea del archivo como comentario con la IP del device en el momento del backup.
git grep <ip>instantáneo. -
#061 📅 2026-06-19 #061b C — Manifest
inventory.yamlversionado. Generado porinventory_merger.pyen cada run, commiteado al repoconfigs.git. Mapeadevice-slug → IP, modelo, sitio, regionpor snapshot. Snapshot histórico de "qué IP tenía X el día tal" queda engit log inventory.yaml. -
#319 📅 2026-06-22 155 devices recién agregados de regiones nuevas (Chihuahua, Parral, Caborca, Namiquipa, Nogales, Villa Ahumada, Colonia del Valle): pendientes de correr
fleet_provision_airos.sh/fleet_provision_edgeos.shantes de que los backups con key-auth funcionen. Lista de runs candidata en el README deelectrosystems/backup-system/§ "Onboarding the new regions". -
#320 📅 2026-06-24 45 Netonix WS-x: correr
fleet_provision_netonix.shcon la firmware-split logic. Old firmware (kernel 2.6.x) acepta keys, new firmware (kernel 5.x) requiere password en sops creds. -
#321 📅 2026-06-25 6 devices airFiber AF60-LR tienen prompt diferente al
airfiber.rbstock (AP/ST-Castillo-Market, AP/ST-El-Paso-Matriz, AP/ST-Matriz-Gus). Workaround actual:device_overrides.yamllos fuerza a modelairos. Mejora futura: tunear el modelo airFiber upstream o escribir uno custom AF60-LR. -
#322 📅 2026-06-26
AP-MEDICOS2,SECTORIALELPASO(airOS) yST-Castillo-Jichasa(airFiber) — rechazan los 5 candidate passwords. Probable creds device-specific. Discovery manual o reset físico. -
#323 📅 2026-06-27 Cambium ePMP requiere KEX
curve25519— gem Rubyx25519instalado en VM oxidized 2026-05-05 (fixed). Pendiente: agregarlo alprovisioning-baselinedoc (parte del README) para que cualquier reprovisión futura del VM lo incluya por default. -
#324 📅 2026-06-28 Subir RAM de
netboxVM a ≥ 4 GiB (actualmente ~414 MiB swap en uso). Próxima ventana de mantenimiento. -
#325 📅 2026-06-29 Identificar hipervisor de
netbox— SMBIOS solo reporta "Red Hat / KVM" genérico. Necesario para provisionar un VM hermano deloxidizedsi se quiere distribuir carga. -
#326 📅 2026-06-30 Configurar Snapshot Replication policy sobre el share
NetworkBackupsenes-nas. Recomendación del README: hourly×24h, daily×30d, weekly forever. -
#244 📅 2026-06-30 Endurecer shell del user
oxidizedenes-nasde/bin/sha/usr/bin/git-shelluna vez que el pipeline esté estable. Constrain a operaciones git solamente. -
#328 📅 2026-06-30 Agregar QEMU guest-agent channel al VM
oxidized(no se hizo en elvirt-install). Cosmético; arreglable editando domain XML y agregando<channel type='unix'>...</channel>. -
#329 📅 2026-06-30 Verificar salud del cron
cgit-mirrorenreverse-proxy(sync hourly denas:configs.gita/var/lib/cgit/configs.git). No hay alarma; verificar pasivamente en el siguiente touch del host.
benito-juarez · active · medium 5 pendientes
🎯 Top de ataque (5)
- #092 📅 2026-06-04 Limitar el servicio a 200 Mbps cuando se haga la entrega formal del cliente.
-
#088 📅 2026-06-06 Subir llave SSH al Netonix
sw-villa-ahumada(mismo flujo que el MK; aún sin key auth). - #089 📅 2026-06-08 Confirmar con el cliente la metodología del speedtest del 2026-05-08 (dispositivo, cableado, WiFi, server).
- #090 📅 2026-06-10 Probar speedtest desde detrás del MK directamente (ether3/7/8 libres, cable, target conocido — Cloudflare/speedtest.net/etc.).
- #091 📅 2026-06-20 Re-checar SFP rx-power en 2-4 semanas (hoy −26.38 dBm, dentro de spec pero en zona baja).
deportes-campeon · active · medium 2 pendientes
electrosystems · active · medium 4 pendientes
🎯 Top de ataque (4)
- 📅 2026-06-05 Fase 1 — resto:
- 📅 2026-06-12 Fase 2 — llenado guiado por Sergio:
- 📅 2026-06-20 Fase 3 — pulir PLAYBOOKS.md tras primer triage en vivo: refinar caso A (qué OID específico mirar en cada Telcel L2L), caso B (procedimiento para enlace de 1 solo AP como Mina Dolores), caso C (queries específicas a
monitoreo.alertas/monitoreo.lecturas_historicaspara extraer grupos). - sin fecha Fase 4 — stale-check: definir cadencia (¿semanal? ¿con cada incidente?) y qué comparar (monitoreo dispositivos actuales vs KB).
electrosystems · active · medium 6 pendientes
🎯 Top de ataque (6)
-
#034 📅 2026-06-03 Recopilar datos del VM nuevo: hostname, IP/LAN, distro + versión, FreePBX/Asterisk version, vCPU/RAM/disco, ruta de acceso SSH (¿mismo alias
gi-siptrunks?, ¿mismo bastiongi-corp?). -
#035 📅 2026-06-05 Validar registración de trunks SIPSTATION (
trunk1.freepbx.com,trunk2.freepbx.com, userd4ca438c) —asterisk -rx 'pjsip show registrations'o equivalente. - #036 📅 2026-06-05 Validar admin UI carga con TLS moderno (el bloqueador del 2026-04-29 debería estar resuelto al subir OpenSSL).
- #037 📅 2026-06-08 Confirmar dialplan + extensiones migrados; comparar contra el viejo si hay backup.
-
#038 📅 2026-06-10 Status del VM viejo (
172.16.1.34): ¿apagado?, ¿decommission completo?, ¿queda como backup encendido por N días? - #039 📅 2026-06-12 Actualizar docs internas de electrosystems con nuevo stack.
greco-cell · active · medium 3 pendientes
holbox · active · medium 12 pendientes
🎯 Top de ataque (12)
-
#383 📅 2026-06-01
⏱ 3-4h ⚠️ 💰 FACTURABLE — Reducir fallos de WhatsApp (33% actual) con fix de calidad de dato en 2 capas: (1) upstream validar teléfono al capturar en POS/alta de cliente (10 dígitos + LADA mexicana válida, se apoya en PhoneNumber/libphonenumber del #197/#368) para atrapar typos antes de gastar envíos; (2) downstream en el webhook marcar números que rebotan con 131026 (flag suave
whatsapp_no_disponible, NO opt-out duro porque 131026 a veces es transitorio) + aviso en banda del POS "este número no recibe WhatsApp, verifícalo". Diagnóstico completo en bitácora 2026-05-28. Esperando que Aarón apruebe (Sergio le mostrará el reporte con la columna de causa de falla primero). - 📅 2026-05-30 (Fase 2 futura) Imagen/PDF en lugar de link, vía plantilla Meta con header media. Generar PNG/PDF del ticket server-side (Browsershot/snappy), subir a
/{phone_id}/media, usarmedia_iden send. La arquitectura ya tolera este cambio sin refactor: el contractWhatsAppSendergana un parámetro o un segundo método. - 📅 2026-06-01 (mejora futura, no urgente) Cuando el error en quick-add sea
email duplicado, sugerir "Ya existe un cliente con ese email, ¿lo seleccionas?" con shortcut para asignarlo a la venta en curso sin abandonar el form. - 📅 2026-06-02 (opcional pulir) Autocomplete de productos en el form — hoy el select de productos lista todos (26 en dev, presumiblemente más en prod). Si se vuelve incómodo, cambiar a autocomplete por SKU/nombre. Por ahora la lista es manejable.
- 📅 2026-06-03 Versión anterior del pendiente (preservada como historia): Diseño tentativo:
-
#148 📅 2026-06-04 #148 (NUEVO 2026-05-21, bloqueado por Aarón) Registrar Holbox Óptica en Google Business Profile. Sin el local registrado en Google Maps, cuando el cliente da clic en el pin del template WhatsApp (
optica_ubicacion_v1), Maps no encuentra "Holbox Óptica" y resuelve a otro lugar. Mitigación corta aplicada 2026-05-21: address en.envextendido a "Avenida de la Raza 7030, 32500 Cd. Juárez, Chih." para que Maps geocodifique la calle correcta. Solución de fondo: Aarón crea el perfil del local en Google Business Profile (gratis); cuando Google lo apruebe, el pin abrirá la ficha real del local. - #160 📅 2026-06-05 #160 (NUEVO 2026-05-22, PAUSADO 2026-05-24) Revisar habilitar recepción de llamadas al número de WhatsApp Business. Análisis cerrado: la solución técnica ideal es WhatsApp Business Coexistence (Meta mayo 2025) — mismo número en app móvil + Cloud API simultáneo vía Messaging Echoes, llamadas en celular, sin costo extra, sin tocar nuestro código. Pausado porque (a) Sergio no ve la opción "Coexistence" en Meta Business Manager del WABA de Holbox (rollout regional incompleto a 2026-05) y (b) Aarón prefiere no hacer setup elaborado. Despausa condicional a decisión sobre #165 (cotización CRM) — si va por CRM SaaS, el CRM probablemente cubre llamadas y #160 queda N/A. Detalle completo bitácora 2026-05-24 (noche).
-
#256 📅 2026-06-07
⏱ 28h (cotizado) 🔥 💰 FACTURABLE (DESBLOQUEADO 2026-05-28 — Aarón aprobó) — Fase 1: Bandeja básica + atención manual. Webhook inbound extendiendo el del #149 para procesar
messages, tablasconversaciones+mensajes_wa+ identificación cliente/prospecto, UI/admin/conversacionescon bandeja + chat view + asignación humana + estado activa/archivada + pipeline de prospectos. Entregable independiente y útil aunque no se haga Fase 2 — el equipo puede ver y contestar todos los mensajes en un solo lugar. 28h × $350 = $9,800 MXN cotizado a Aarón (facturación = horas reales × tarifa con flujo asistido, ver regla del hub). EN PROGRESO — plan técnico cerrado enplan-crm-fase1.md(preguntas P1/P2/P3/P5 resueltas por Sergio, ver bitácora). 3 entregas deployables: ✅ E1 captura inbound ~11h DEPLOYADA A PROD (commita8ad89e, GHA26605651268verde — migraciones + backfilltelefono_e164corridos en prod); ✅ E2 bandeja read-only ~10h DEPLOYADA A PROD OCULTA (commits30632da+bdcf05e, GHA26659946880verde; sin link en menú a propósito para testing previo a entrega — acceso solo por URL/admin/conversaciones, role:admin; revertirbdcf05eal entregar); ✅ E3 atención+envío+conversión ~9h DEPLOYADA A PROD (commit9769533, push 2026-05-29 16:18 local; menú sigue oculto — revertirbdcf05eal entregar).tenant_idnullable desde día 1 (decisión #258). Prospecto = tabla nueva (no flag enclientes). Decisiones: telefono_e164 materializado (P1), solo admin atiende (P2), hilo global (P3), imágenes desde día 1 (P5). -
#257 📅 2026-06-08 #257 💰 FACTURABLE (condicional a #256 entregada) — Fase 2: Asistente automático + integración holbox.store + escalado. Servicio
IARespondercon Antigravity Haiku 4.5 (interno, no se menciona al cliente) + guion configurable desde/admin/asistente(textarea editable, versionado, variables {nombre_negocio}/{catalogo}/{promociones}), conexión con catálogo de holbox.store (sync periódico configurable, productos/precios/stock/links directos), lógica de escalado (intent "humano" / queja / fuera de guion / N mensajes sin resolver), notificaciones push+email al equipo, modo sombra inicial (asistente propone, humano aprueba y envía) configurable. 26h × $350 = $9,100 MXN, 1.5 semanas calendario (con leve traslape sobre el final de Fase 1). Costo recurrente Anthropic estimado $3-15 USD/mes para Holbox (a cargo del cliente, no del desarrollo). Los datos para reportería quedan registrados desde día 1 — pantallas en #260. -
#258 📅 2026-06-10 #258 — Fase 3 multi-tenant opcional (interno, NO en propuesta cliente-facing). Abstracciones
tenant_idenconversaciones/mensajes_wa/asistente_config, panel super-admin, docs de adopción para portar a Joyerías Meza / Greco Cell / Deportes Campeón. ~30-40h × $350 = $10,500-14,000 MXN, cobrable a cada cliente que adopte después. Decisión técnica: dejartenant_idcomo columna nullable desde Fase 1 para no migrar después si Sergio decide adoptar el módulo en otro cliente sin tocar a Holbox. No mencionar a Aarón salvo que pregunte. - #260 📅 2026-06-11 #260 💰 FACTURABLE (extensión opcional posterior a #257) — Reportería del módulo Conversaciones. Pantallas: conversaciones por día/semana/mes, % resueltas por asistente vs humano, tiempo de respuesta promedio, preguntas más frecuentes (útil para mejorar el guion), prospectos → clientes con tasa de conversión. Los datos ya están registrados desde el día 1 (Fase 1+2 los persisten), solo se construyen las vistas. ~5-8h × $350 = $1,750-2,800 MXN. Cotizar y arrancar cuando Aarón la pida (típicamente mes 2-3 tras arranque del módulo).
- 📅 2026-06-12 Atender el flujo continuo de cambios pedidos por el cliente post-rollout.
personal · active · medium 1 pendientes
🎯 Top de ataque (1)
-
sin fecha
(Más adelante) Migrar el remote de GitHub privado a Gitea/Forgejo self-hosted en
poseidoncuando docs-platform lo lleve a cabo.
electrosystems · active · medium 5 pendientes
🎯 Top de ataque (5)
-
#103 📅 2026-06-09 Probar
gemma4:26ben tareas multimodales (mandarle una imagen — foto de un equipo de red, screenshot, diagrama — y medir calidad). -
#102 📅 2026-06-11 Comparativa de latencia y calidad:
qwen2.5:14b-instructvsgemma4:26bcon el mismo prompt en español, connum_ctx=8192en ambos. -
#105 📅 2026-06-13 Decidir si vale la pena instalar también
gemma4:31bdense para tener referencia de techo de calidad (a costa de latencia muy alta). -
#101 📅 2026-06-15 Aplicar Tier 3 en Ollama (
OLLAMA_FLASH_ATTENTION=1+OLLAMA_KV_CACHE_TYPE=q8_0) — necesita sudo, no aplicado. Esperar ventana con Sergio en sesión local. -
#104 📅 2026-06-18 Caracterizar
gemma4:latest(4B edge) como fallback rápido para chat conversacional cuando no se necesite razonamiento multimodal.
joyerias-meza · active · medium 2 pendientes
🎯 Top de ataque (2)
-
#111 📅 2026-08-14 (cierre condicional) Sacar los campos
descanso,dia_extra,tipo_extra(y opcionalmente los horarios semanales) del bloqueif($usuario->admin)ensrc/Template/Element/forma_empleados.ctp:15para que admins de sucursal también puedan editarlos. Alternativa: agregarlo al form de jm-contabilidad (empleados/forma.blade.php), que hoy no lo expone. -
#286
sin fecha
(Si aplica) Validar si otras empleadas de cualquier sucursal tienen
empleados.descanso != 0como rezago del modelo viejo:SELECT id, nombres, apellidos, sucursal_id, descanso FROM empleados WHERE descanso != 0 AND deleted_at IS NULL. Si son pocas, limpiar igual que Lidia; si son muchas, justifica el fix permanente.
joyerias-meza · active · medium 7 pendientes
🎯 Top de ataque (7)
-
#178 📅 2026-06-02 Redactar y enviar correo 1 al cliente (tarifa nueva + disponibilidad para trabajo grande + handoff profesional como opción abierta). Tarifa propuesta: $300 MXN/h desarrollo + $3,500 MXN/mes soporte, aplicación 1 de agosto de 2026. Draft listo en bitácora 2026-05-22; ajustar [Nombre] del contacto antes de enviar. Acción al confirmar recibo del cliente: actualizar
clients/joyerias-meza.mdcon la nueva tarifa vigente y marcarrate_locked_since: 2026-08. -
#179 📅 2026-06-04 Construir inventario actual de PCs + cuentas Office del cliente. Tabla en este mismo archivo o en
joyeriameza/inventario-pcs.md. Columnas: sucursal · etiqueta/nombre de la PC · usuario humano que la opera · cuenta Office instalada (una de las 3 familiares) · fecha de setup · estado (activa / fuera de uso / desconocida). Fuente principal: portal de admin de cada cuenta Office para ver dispositivos asociados. Pre-requisito del #181. -
#180 📅 2026-06-06 Documentar manual de setup de PC nueva (Office, bookmarks, startup apps, etc.) en formato paso a paso con screenshots, pensado para que cualquier persona de Joyerías Meza pueda seguirlo sin background técnico. Guardar en
joyeriameza/setup-pc-nueva.mdo equivalente. Pre-requisito del #181. - #181 📅 2026-06-08 (bloqueado por #178 + #179 + #180) Redactar y enviar correo 2 al cliente: aclarar scope del soporte mensual (cubre software/fallas/ajustes; NO cubre hardware, configuración de PCs nuevas ni soporte de Office) + propuesta de handoff del proceso de setup de PCs y administración de las cuentas Office. Adjuntar inventario (#179) + link al manual (#180). Mandar 4-6 semanas después del correo 1, una vez digerida la tarifa. Draft listo en bitácora 2026-05-22.
-
#373 📅 2026-06-10 #373 (NUEVO 2026-05-27) Follow-up del bug compuesto: cuando se cancela una transacción que afectó al
limite_credito, el sistema no lo restaura (el método de cancelación no re-procesa el cálculo del límite). En el caso de Veneza, la transacción #1935290 fue cancelada 4 minutos después pero el límite ya estaba en 0 y se quedó así. Investigar el método de cancelación y agregar restauración del límite cuando se cancele una transacción de consignación que dejó saldo=0. Sin urgencia — el fix del #189 evita que el bug se repita; este follow-up es robustez adicional. - 📅 2026-06-15 Plan de modernización (futuro, no calendarizado): definir alcance, costo, ventana, qué se migra y qué se reescribe. Nota: el correo 1 abre la puerta a este trabajo; si el cliente pica, abrir pendientes específicos aquí.
- 📅 2026-06-30 Atender los pedidos de cambios conforme lleguen (irlos documentando aquí). Recordatorio: a partir del 1-ago-2026 cualquier desarrollo nuevo se cotiza a $300 MXN/h.
telcel · active · medium 2 pendientes
🎯 Top de ataque (2)
-
#032 📅 2026-06-08 Pendiente investigar (no toqué): identificar MAC origen del broadcast con
tcpdump -i switch0 -nne 'ether broadcast and src host 206.135.14.86'(NO ejecutado — solo investigación read-only en esta sesión). -
#033 📅 2026-06-08 erx-jacala NO está en
/var/lib/oxidized/router.db— si queremos backups automáticos de config, hay que darlo de alta.
electrosystems · active · medium 23 pendientes
📝 Otras (23)
-
sin fecha
Definir host: VM nueva en
poseidon, o servicio enreverse-proxy, o un VPS dedicado fuera de Electrosystems (mejor disponibilidad si el datacenter cae). -
#073 📅 2026-06-02
🤖 alto Fase 0 — diseño + scaffolding del concentrador WG nuevo. No toca producción. ✅ Diseño APROBADO 2026-05-29 (las 5 decisiones cerradas) →
vpn-clientes/PLAN.md. Instanciawg-cliseparada en la VMwireguard; solo /32 de cada servidor, NO se rutean LANs (LAN de cliente = SSH tunnel, por LANs solapadas); subredes por función + bloque ADFSA/22; source of truth en la VM; segmentación rol-based. Todas las decisiones cerradas. Siguiente: materializar scaffolding (/etc/wireguard/wg-cli/+ 4 scripts) y lab en poseidon. - sin fecha Definir si es un solo concentrador o múltiples por región (mejor latencia por geografía).
- #414 📅 2026-06-05 ⏱ 0.5d Fase 0b — lab de validación en poseidon. VM(s)/netns: 1 hub + servidores + 2 operadores; correr los tests de segmentación rol-based (operador→pool PASA, no-permitido DROP, servidor↔servidor DROP, revoke en vivo). Verde = se desbloquea #077.
- sin fecha Definir el patrón: hub-and-spoke (operadores y servers se conectan al hub; el hub rutea), mesh (cada operador con cada cliente), o per-client subnet (un túnel por cliente, segmentación dura).
-
#077
cond:fase-0b-verde Fase 1 — piloto ARIAS (confirmado 2026-05-29). Levantar
wg-clien su server en paralelo a apolo, dar acceso a operadores (default amplio), validar conectividad + SSH tunnel a su LAN + monitoreo, soak, retirar ruta apolo. -
sin fecha
Política: un operador no debería ver hosts de un cliente con el que no trabaja. Hoy con la VPN plana de
apolocualquier operador con acceso ve toda la10.11.0.0/16. - #077 sin fecha #077b Fase 2 — clientes restantes en orden de menor a mayor criticidad. ADFSA y Grupo Imperial al final (telefonía en producción).
-
sin fecha
Diseño: asignar
/24(o más fino) por cliente. Routing y firewall del concentrador permiten solo a operadores autorizados llegar a la subred del cliente que les corresponde. -
#077
sin fecha
#077c Fase 3 — migración de operadores. Una vez todos los clientes están en el WG nuevo, los operadores cambian su
~/.ssh/configo equivalente para usar el nuevo VPN. - sin fecha Mapping de operadores a clientes: tabla de quién accede a qué. Necesita ser actualizable cuando rote personal.
-
#077
sin fecha
#077d Fase 4 — apagar
apolo. Solo cuando ningún operador ni ningún flujo automatizado lo necesite. - sin fecha Qué muestra: lista de clientes y sus hosts (con IPs en la nueva segmentación), estado de conectividad (last handshake), peers activos.
- sin fecha Quién lo ve: Sergio + admins de Electrosystems. ¿Operadores también? Probable que sí (con vista filtrada a sus clientes asignados).
-
sin fecha
Stack sugerido: SvelteKit + algo simple para la API (Laravel o Node), datos desde
wg showparseado y/o desde una DB con la asignación de peers. Auth via Google Workspace OAuth (alineado condocs.*ybackups.*). -
sin fecha
Hosting: detrás de
reverse-proxycon TLS y allow-list LAN/VPN, igual que los demás portales. -
sin fecha
wg-create-key.sh— script para crear par de llaves nuevas + entrada en el concentrador + plantilla de config para el peer (operador o server). -
sin fecha
wg-install-key-server.sh— script para instalar la llave en un server existente del cliente (SSHea al server, instala wireguard si no está, configura el túnel, hacesystemctl enable wg-quick@wg0). -
sin fecha
wg-revoke-peer.sh— script para revocar (rotación de personal, fuga de llave). Quita la llave del concentrador + opcionalmente del peer (si se puede SSHear). -
sin fecha
wg-list-peers.sh— listado plano del estado de peers para troubleshooting rápido (probablemente lo que el portal expone, en CLI). - sin fecha Manual del operador: cómo levantar el túnel en su máquina (Linux/Mac/Windows), cómo verificar conectividad, qué hacer si el handshake no pasa.
- sin fecha Manual del admin: cómo agregar un cliente nuevo (subnet, peer del concentrador, server peers, mapping a operadores), cómo rotar llaves, cómo decommissionar un peer.
-
sin fecha
Runbook de migración desde
apolo: orden de cutover, validación por cliente, plan de rollback si algo no llega.
electrosystems · active · medium 13 pendientes
🎯 Top de ataque (13)
- #078 📅 2026-06-05 Documentar el estado actual del enlace Juárez ↔ El Paso. ¿Qué tecnología usa hoy? ¿Cuál es el endpoint en cada lado? ¿Qué subnets enruta?
-
#078 📅 2026-06-05 Documentar el WireGuard ya existente (
192.168.20.5). ¿Para qué se usa hoy? ¿Es servidor de "road warrior" (clientes remotos) o site-to-site? ¿Qué peers tiene configurados? -
#079 📅 2026-06-08 Identificar si hay perfiles de host en
~/agy/electrosystems/servers/para los dos endpoints del túnel actual; si no, crearlos. - 📅 2026-06-10 Decidir topología WireGuard:
- 📅 2026-06-12 Plan de IPs: ¿qué subnet
/24usar para los túneles WireGuard? Mantener disjunto del rango interno actual. - 📅 2026-06-15 Plan de routing: ¿quién enruta qué? Si hay redes que ya están "anunciadas" por el túnel actual, mapear cada una a su
AllowedIPscorrespondiente del lado WireGuard. - 📅 2026-06-18 Plan de cutover: cómo hacer la transición sin tirar el enlace (probable: levantar WireGuard en paralelo, validar, mover rutas, retirar el viejo).
- 📅 2026-06-20 Generar pares de llaves en cada extremo.
- 📅 2026-06-22 Configurar
wg0en cada extremo + persistencia (systemd-networkd,wg-quick, NetworkManager — depende de la distro). - 📅 2026-06-24 Abrir UDP en firewalls (puerto típico 51820, o dedicado).
- 📅 2026-06-26 Validar con
pingcross-site usando rutas WireGuard. - 📅 2026-06-28 Cambiar las rutas internas para que prefieran WireGuard.
- 📅 2026-06-30 Decommissionar el túnel viejo.
personal · active · medium 1 pendientes
🎯 Top de ataque (1)
-
#177 📅 2027-03-01 (recordatorio) Cobrar a Aarón la anualidad de hosting
holbox.val-soft.compara el ciclo mayo 2027 → abril 2028 ($3,600 MXN). Antes de cobrar: validar que el costo en DigitalOcean siga en $14 USD/mes y que el TC USD/MXN no haya erosionado el margen; ajustar tarifa con aviso previo a Aarón si hace falta.
electrosystems · backlog · medium 10 pendientes
🎯 Top de ataque (10)
-
#113 📅 2026-06-02 Para equipos Ubiquiti blackBox (mayoría de los 354 en 10.11.30-37): qué tipo de equipo, qué firmware corre. Probable que esto requiera coordinarse con
backup-system(oxidized ya tiene info de modelo en algunos). -
#113 📅 2026-06-03 Para apps Laravel: tabla con PHP version, Laravel version, dependencias outdated (
composer outdated --direct), node version, paquetes npm outdated (npm outdated). -
#113 📅 2026-06-04 Para hipervisor (
poseidon): CentOS 7 → considerar plan de migración (EOL 2024-06, ya pasado). Cross conposeidon-storage. -
#115 📅 2026-06-05 CentOS 6 EOL → migración: orion (192.168.20.2), otrs (192.168.20.21), clientes (192.168.20.60). El "update" aquí es decom + migración a OS soportado. Coordinar con
orion-decommission(que ya está activo paraorion). Crear plan equivalente para otrs y clientes. -
#115 📅 2026-06-06 CentOS 7 EOL (2024-06) → migración: poseidon (hipervisor) + jmeza (shared hosting cliente, fuera de scope). Para poseidon: cross con
poseidon-storage. - #115 📅 2026-06-07 Sangoma 7 en PBXs cliente: auditar versiones de FreePBX y Asterisk. Capturar matriz cuando se haga el inventario A.
- 📅 2026-06-08 MariaDB 5.5 EOL en jmeza: fuera de scope (cliente externo, shared hosting), pero documentado.
-
#420
sin fecha
Página cliente-facing del estado de infra (para el jefe de Sergio): dashboard/reporte donde el jefe pueda ver el inventario de versiones + EOL + deuda técnica de este proyecto y tomar decisiones de migración. Pensado por Sergio 2026-05-29. Decisión de vehículo pendiente: (a) entregable HTML/PDF estático en
deliverables/electrosystems/infra-updates/regenerable desde estas tablas; (b) vista dedicada en elhub-web-viewer(ojo: es hub personal, requeriría auth/sección pública); (c) página propia. Recomendación inicial: empezar por (a) — un HTML con las tablas #113/#113b/#113c + semáforo EOL + "recomendación de migración", que no expone el resto del hub. - 📅 2026-06-08
backup-system: cuando se inventaríe firmware de Ubiquiti, alimentar pendientes ahí (oxidized + UISP). - 📅 2026-06-08 Cada proyecto de app Laravel (
amadeus,es-antenas-new,holbox,jm-*, etc.): captura de cadencia propia decomposer/npm outdatedcuando se decida.
personal · active · low 5 pendientes
🎯 Top de ataque (5)
-
#405 📅 2026-06-02
⏱ 4-6h Fase 3 del AUDIT (#205): streak con holgura + dashboard
/progresodel papá. Streak freeze (1-2 congeladores/semana) + celebración fuerte de los primeros 7 días + récord personal (NO liga/leaderboard). Pantalla/progreso: palabras dominadas vs en repaso, racha, minutos esta semana vs meta, nivel CEFR estimado (Pre-A1/A1, usando datasets CEFR/NGSL locales). Los datos ya están en BD; falta la pantalla que los agregue. Resuelve eje f (métricas). Detalle enAUDIT.md§8. -
#406 📅 2026-06-03
⏱ 3-4h Fase 4 del AUDIT (#205): repaso priorizado por error real + anclaje de vocabulario. Pasar al
LessonPlannerService"qué domina / qué falló" estructurado y repasar prerrequisitos antes de subir dificultad (mastery learning estilo Khan: +2.7% corrección del siguiente ítem). Anclar el vocab nuevo a NGSL/NDL + filtro CEFR A1/A2 (datasets locales). Mejora el motor IA existente sin rehacerlo. Detalle enAUDIT.md§8. -
#407 📅 2026-06-04
⏱ 1-2d Fase 5 del AUDIT (#205, stretch): producción/conversación libre. Micro-historias i+1 (la IA genera párrafos de 3-5 frases, 95-98% vocab conocido + 1-2 nuevas, con imagen) → comprensión lectora real. Mini-roleplay con IA sobre lo recién estudiado (empezar por texto, luego voz con la eval de pronunciación ya existente) + tutor socrático en errores (pista que lleva a la respuesta, no la da). El gap diferenciador que casi ninguna app casera tiene; ya hay ladrillos (IA + voz). Detalle en
AUDIT.md§8. -
#206 📅 2026-05-31 Integración aprende-ingles ↔ tareas-hijo — marcar lección diaria automáticamente. Cuando el hijo complete una
LessonCompletionen aprende-ingles (Postgres en val-soft), una tarea correspondiente en tareas-hijo (Postgres en Fly.io) debería marcarse hecha automáticamente. Mecanismo posible: webhook desde aprende-ingles → endpoint Phoenix en tareas-hijo. Requiere: (a) tareas-hijo tener un endpoint público autenticado para "marcar tarea hecha por slug" (NO existe hoy — Fase 1 #184 está en bloque 1/4); (b) aprende-ingles tener un job/queue que dispatch al completar lección; (c) modelo de mapeo: en tareas-hijo, unatareas_definicionconslug='leccion-ingles-diaria'se vincula. Bloqueado por #184 Fase 1 completa de tareas-hijo (que tenga su esquema LiveView + auth). Cuando se desbloquee, decidir si la integración es push (webhook) o pull (cron en tareas-hijo consulta aprende-ingles). Estimación: chica una vez desbloqueado (1 endpoint + 1 job). - 📅 2026-06-01 Después (no bloqueante): rate limit del lado app en
generatePlan(padre puede tirar N llamadas a OpenAI con clicks repetidos) + retry/backoff enLessonPlannerService.
electrosystems · active · low 5 pendientes
🎯 Top de ataque (5)
-
#106 📅 2026-06-10 Mitigar leak de procesos
gitzombies en Wiki.js v2. Confirmado: el módulo de git-storage acumula procesos zombie en periodos largos. Fix manual aplicado 2026-05-04 (restart). Recurre en escala de varias semanas. Opciones de mitigación: -
#107 📅 2026-06-15 Migrar contenido activo de DokuWiki (en
orion) a Wiki.js. Diferido el 2026-04-25. Importarlo como folder en Wiki.js. Bloqueador parcial:orioncorre CentOS 6 EOL con root partition al 100% — coordinar con orion-decommission. -
#108 📅 2026-06-20 Decidir destino del VM
bookstack(paused, enorion). Contenido mínimo, set aside por reportes de lentitud. Confirmar salvageabilidad y borrar si no aporta. Parte del esfuerzo de orion-decommission. - #109 📅 2026-06-25 ACL groups + restricciones por folder en Wiki.js. Diferido el 2026-04-25 — actualmente todos los del Workspace ven y editan todo. Revisitar si surge necesidad real (ej. notas con info sensible que no deba ver todo el equipo).
- #110 📅 2026-06-30 Migrar el remote git de Wiki.js de GitHub a Gitea/Forgejo self-hosted. Goal: docs/code en red interna con backups internos. Sin fecha. Tarea grande — requiere standup de un Gitea/Forgejo, migración de repos, ajuste de Wiki.js storage config y de los workflows de los developers.
electrosystems · paused · low 23 pendientes
🎯 Top de ataque (23)
- sin fecha (sigue 2026-05-12) Seguimiento Meta Cloud API — confirmar con el trámite si hay avance / requiere acción.
- sin fecha Visibility: ¿hace falta cuarto nivel "client-visible" para sharing externo? (probablemente no por ahora)
- sin fecha Default OTP TTL (sugerido 5 min) y max attempts (sugerido 5).
- sin fecha Storage watermark para prune de audio: warn al 80%, prune al 90%.
- sin fecha Política de datos pre-Fase 2: visibilidad de PII en notas, derecho al olvido, exportación.
- sin fecha Pruebas con 3 usuarios reales.
-
sin fecha
Cambiar default del router a
gemma4:26bcon thinking activo (decisión de junta con jefe 2026-05-12) — aunque las respuestas tarden ~1 min por el razonamiento interno. Persistir el modelo elegido entool_call_log.model. Mandar al usuario un ack inmediato (pensando…) para que no parezca colgado. Pre-requisitos a resolver en ia-evaluacion antes del switch: (a) validar fidelidad de function-calling de Gemma 4 contra el schema de tools, (b) política deOLLAMA_KEEP_ALIVE(la VRAM 8 GB no aguanta dos modelos a la vez), (c) decidir si se conserva Qwen 2.5 14B como fallback opcional vía prefix/fastpara queries triviales. -
sin fecha
Memoria de conversación multi-turn — hoy cada mensaje se trata como aislado, el agente pierde el contexto del turno anterior. Diseño cerrado en CONVERSATION-CONTEXT.md: ventana inicial de 20 mensajes / 45 min, serialización por roles, manejo de audios pendientes, presupuesto de 6 K tokens, reglas de continuidad en el system prompt. Falta implementar
build_history()ensrc/whatsapp/. Patch propuesto listo (agente C, sesión 2026-05-13) — archivo nuevosrc/whatsapp/history.js(~80 LOC) + 4 ediciones enagent.js. No se resuelve cambiando de modelo. -
sin fecha
Heurística de resolución de contexto sin pregunta extra — cuando el último mensaje del usuario menciona algo identificable como id/slug (
gustavo_chavira_mx,beta1), el agente debe vincularlo al hilo abierto en lugar de preguntar "¿qué quieres hacer con eso?". Se logra con: (a) historial conversacional (ver arriba), (b) regla en el system prompt: "si tu turno anterior fue una pregunta y el usuario responde con un valor, asume que ese valor responde a tu pregunta". -
sin fecha
SvelteKit con login OTP — auditar
src/dashboard/auth/, el commit7a5c4ecagregó edit forms pero no se documentó el login. - sin fecha Vista de lista de proyectos + detalle — auditar si ya está.
- sin fecha Búsqueda — auditar.
-
sin fecha
Migración Baileys → Cloud API (cuando se apruebe). Endpoint
/api/meta/webhookya tiene handshake de verificación funcionando (logs muestran 3 verificaciones exitosas). - sin fecha Auditar el contenido real de los recordatorios y reportes — ¿qué se manda, a quién?
-
sin fecha
Sergio crea el bot en BotFather — handle elegido:
ElectroIA_bot. Token va a.envcomoTELEGRAM_BOT_TOKEN=.... -
sin fecha
Sergio reinicia el proceso del gateway en
laptop-ia(kill $(pgrep -f "node.*index.js" | head -1)y volver a arrancar con el comandosetsid nohupactual, o de paso meter a pm2/systemd — ver pendiente abajo). -
sin fecha
Sergio se manda un mensaje al bot desde su Telegram → el bot le devuelve su
telegram_user_id→ Sergio hacecurl -X POST 'http://127.0.0.1:8080/api/admin/telegram-bind?identity_id=<su-slug>&telegram_user_id=<id>'. -
sin fecha
Smoke test: pedir estatus de
beta1por Telegram, verificar que llega lista completa de pendientes (la mejora de respuestas detalladas también aplica por Telegram porque reusaagent.respondTo). -
sin fecha
Fase 2 de Telegram (después de que WhatsApp esté estable): OTP cross-channel — un usuario nuevo manda
/start, el bot buscaidentity.phone, manda OTP por WhatsApp, usuario lo confirma en Telegram. Quita el step manual de bind. -
sin fecha
Indicador "typing…" mientras el bot genera la respuesta (pedido Sergio 2026-05-14, especialmente útil con
gemma4:26bthinking que puede tardar ~1 min). En Telegram:sendChatAction(chat_id, 'typing')cada ~4 s mientrasrespondTocorre (dura 5 s en cliente). En WhatsApp/Baileys:sock.sendPresenceUpdate('composing', remoteJid)al inicio +'paused'al terminar — verificar primero que la sesión Baileys (cuando esté re-pareada) emita presence updates a chats 1:1. Implementación sugerida: wrapperwithTyping(channel, target, fn)que arranca unsetIntervalantes derespondToy lo limpia enfinally. Sin tocar el agente. -
sin fecha
Re-pareo de la sesión Baileys — borrar
src/whatsapp/auth/, levantar el proceso, sacar el pairing code de 8 caracteres del log, meterlo en el teléfono (Configuración → Dispositivos vinculados → Vincular con número). Esto resuelve el Bad MAC. El JID actual5215629555094:1@s.whatsapp.netse renueva pero el historial en DB se conserva. -
sin fecha
Hardening de la config Baileys en
baileys.js:syncFullHistory: false,defaultQueryTimeoutMs: 90_000,shouldIgnoreJidpara LIDs no-bound,getMessagecallback que consultemessage_log. Reduce probabilidad de que la sesión se vuelva a corromper. -
sin fecha
Manager de procesos — pasar de
setsid nohupa pm2 o systemd. Sin esto, el proceso no se recupera de crashes duros, y reiniciar manualmente requiere SSH cada vez.
electrosystems · backlog · low 2 pendientes
🎯 Top de ataque (2)
-
#122 📅 2026-06-10 Auditar qcow2 en pool
defaulty decidir cuáles mover ahomepara liberar espacio. Criterio: VMs activas que pueden moverse en una ventana corta de mantenimiento. Para cada candidato: -
#123 📅 2026-06-15 Confirmar que el pool
defaultqueda con margen razonable (≥ 30% libre) tras la limpieza.