hub-web-viewer
⏰ Calendario
121 pendientes con fecha · derivado de los projects/*.md (no de la sección manual).
mayo 2026
Hoy (1)
-
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).
Esta semana (47)
-
Prender
ANALISIS_HOOK_CONSUMOS_ENABLED=true(validación automática al subir). Desbloqueado — workers ya listos (#371 cerrado). (Bloque 0) -
#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. -
💰 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). -
#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. -
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. -
(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.
-
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. -
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). -
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. -
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. -
🤖 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. -
#050 Smoke N vehículos fase 1 — crear viaje con 2+ vehículos, verificar guardado, edit (vuelve a marcar los 2), listado pluralizado, reporte.
-
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. -
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. -
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.
-
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.
-
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). -
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?). -
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. -
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). -
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) -
#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. -
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. -
Limitar el servicio a 200 Mbps cuando se haga la entrega formal del cliente.
-
Recopilar / revisar la lista de requerimientos pendientes del cliente.
-
#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. -
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. -
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). -
Migrar la tarjeta E1 (TE210P dual-span) a Nortel del servidor viejo al nuevo. Implica:
-
#175 Smoke E2E bot electro-ia ↔ amadeus — desde Telegram (documentado en
electro-iacon plan completo). -
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. -
Smoke test extendido 1 semana con Sergio en uso real (en curso).
-
Documentar costos reales vs estimación (cuando se use el API).
-
(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. -
Validar registración de trunks SIPSTATION (
trunk1.freepbx.com,trunk2.freepbx.com, userd4ca438c) —asterisk -rx 'pjsip show registrations'o equivalente. -
Validar admin UI carga con TLS moderno (el bloqueador del 2026-04-29 debería estar resuelto al subir OpenSSL).
-
#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).
-
RSS / Atom feed de log diario (solo Sergio).
-
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. -
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. -
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.
-
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?
-
Pantalla mapa Leaflet+OSM de consumos con popup/hover de detalle. (Bloque C — victoria visual)
-
Subir llave SSH al Netonix
sw-villa-ahumada(mismo flujo que el MK; aún sin key auth). -
Reanudar trabajo activo.
-
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. -
💰 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).
Este mes (71)
-
Confirmar con el cliente la metodología del speedtest del 2026-05-08 (dispositivo, cableado, WiFi, server).
-
Recopilar / revisar la lista de requerimientos pendientes del cliente (no documentados aquí todavía — Sergio los irá dictando o pegará referencias).
-
Agregar 2-3 usuarios más: Gustavo Chavira (
gustavo_chavira_mx, admin) ya vinculado 2026-05-15 tarde. Faltan ingenieros (sin nombres decididos). -
Confirmar dialplan + extensiones migrados; comparar contra el viejo si hay backup.
-
#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. -
(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.
-
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. -
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). -
erx-jacala NO está en
/var/lib/oxidized/router.db— si queremos backups automáticos de config, hay que darlo de alta. -
Identificar si hay perfiles de host en
~/agy/electrosystems/servers/para los dos endpoints del túnel actual; si no, crearlos. -
Coords oficina/matriz (config) + medir cobertura GPS de
sitios. (Hospedaje omitido.) (Bloque B) -
Probar
gemma4:26ben tareas multimodales (mandarle una imagen — foto de un equipo de red, screenshot, diagrama — y medir calidad). -
Desmantelar el servidor viejo (
asterisk-adfsa-old). Pre-condición: migración de tarjeta E1 completa y validada + ruta IAX2 retirada del NEW. Pasos: -
Validación de ubicación por corredor (sitio/oficina/segmento), solo bandera; pasar anclas a la IA. (Bloque B)
-
Probar speedtest desde detrás del MK directamente (ether3/7/8 libres, cable, target conocido — Cloudflare/speedtest.net/etc.).
-
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: -
(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). -
Observar próximos eventos de flapping + recordatorios en vivo para confirmar consolidación en ambos caminos tras debounce + arrastre por sitio.
-
Status del VM viejo (
172.16.1.34): ¿apagado?, ¿decommission completo?, ¿queda como backup encendido por N días? -
Diagnosticar la razón por la que a veces hay que reiniciar mysql y/o php-fpm.
-
#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. -
#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. -
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). -
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: -
#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).
-
Comparativa de latencia y calidad:
qwen2.5:14b-instructvsgemma4:26bcon el mismo prompt en español, connum_ctx=8192en ambos. -
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. -
Reanudar trabajo activo en el proyecto.
-
(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).
-
(Fase 3b) Implementación SNMP placeholder end-to-end. Sub-tareas:
-
Actualizar docs internas de electrosystems con nuevo stack.
-
Decidir si vale la pena instalar también
gemma4:31bdense para tener referencia de techo de calidad (a costa de latencia muy alta). -
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:
-
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.
-
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:
-
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. -
Streaming en WhatsApp (chunking).
-
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. -
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.
-
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. -
Confirmar que el pool
defaultqueda con margen razonable (≥ 30% libre) tras la limpieza. -
Subida offline = borrador local (IndexedDB + sync al reabrir con señal, preservar ubicación, notificar si queda observado). (Bloque D — el más caro)
-
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. -
#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. -
(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. -
Caracterizar
gemma4:latest(4B edge) como fallback rápido para chat conversacional cuando no se necesite razonamiento multimodal. -
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.
-
Re-checar SFP rx-power en 2-4 semanas (hoy −26.38 dBm, dentro de spec pero en zona baja).
-
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. -
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. -
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).
-
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". -
(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). -
(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. -
🤖 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. -
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. -
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. -
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).
-
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). -
(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. -
AP-MEDICOS2,SECTORIALELPASO(airOS) yST-Castillo-Jichasa(airFiber) — rechazan los 5 candidate passwords. Probable creds device-specific. Discovery manual o reset físico. -
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. -
Subir RAM de
netboxVM a ≥ 4 GiB (actualmente ~414 MiB swap en uso). Próxima ventana de mantenimiento. -
Resto del equipo (15 usuarios).
-
Identificar hipervisor de
netbox— SMBIOS solo reporta "Red Hat / KVM" genérico. Necesario para provisionar un VM hermano deloxidizedsi se quiere distribuir carga. -
Configurar Snapshot Replication policy sobre el share
NetworkBackupsenes-nas. Recomendación del README: hourly×24h, daily×30d, weekly forever. -
Endurecer shell del user
oxidizedenes-nasde/bin/sha/usr/bin/git-shelluna vez que el pipeline esté estable. Constrain a operaciones git solamente. -
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>. -
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. -
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.
-
🤖 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)
Más adelante (2)
-
(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. -
(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.