Hub

2026-05-27

miércoles · 27 de mayo de 2026

2026-05-27

Sesión multi-frente en paralelo: holbox (3 pendientes cerrados, 1 grande en 2 entregas), aprende-ingles, joyeriameza (bug crítico de cliente), tareas-hijo (cambio de modo).

Cierres en prod

  • holbox #197 — soporte WhatsApp internacional con libphonenumber-for-php. Commit 35ac39f ya estaba mergeado de sesión previa; cerrado administrativamente y restada bandera viva para LADA 915 (capturada como #368).
  • holbox #161 Entrega 1 — Reporte Coach por Empleada (10 KPIs por asociada esta semana vs semana pasada). Commit 1350caa + follow-up 8f68a0c (link al menú que el agent olvidó), GHA verdes. Suite 345/28 (+23 verdes vs baseline 322/38). Sergio validó URL directa + menú.
  • holbox #161 Entrega 2 — Metas editables próxima semana + sugerencias automáticas + chips meta-vs-logrado + frase fija cierre. Commit ed531a9, GHA 26548394697 verde. Suite 357/28 (+12 tests). Sergio validó. Entrega 3 (comentario coach + PDF) pendiente.
  • holbox #161 Entrega 3 + #162 — Comentario coach por empleada (textarea + histórico colapsable) + impresión PDF A4 via @media print browser nativo (sin librería PDF). Tabla comentarios_semanal_empleada + endpoint guardarComentario (body vacío → DELETE) + vista standalone ImprimirReporteEmpleada.vue con los 4 bloques. Commit 259697a, GHA 26553517448. Suite 371/28 (+14 vs baseline 357, 0 regresión). 9 tests Pest nuevos. #161+#162 deployados completos en una sola sesión — adelantado vs ventana 2026-06-01→07 del sprint. 3 decisiones de diseño confirmadas con Sergio antes de codear (formato A4 vs ticket 80mm vs DomPDF, permisos admin+gerente, auth completa per-Entrega). Horas reales sesión ~1.5h; total #161 ~3-4h vs cotizado 26-37h.
  • aprende-ingles #204 — Spaced repetition Leitner simple. Tabla word_mastery + service con boxes 0/1/2/4/8/16 días + hook silencioso en submitExercise + endpoint /student/review con flashcards EN→ES + card en Student/Dashboard. Solo palabras sueltas en v1. Commit 9ad49c1, push a main, GHA deploy auto val-soft. Suite 114/114.
  • joyeriameza #372 — Bug limite_credito=0 en cuentas de consignación tras devolución pura. Reportado por Viridiana con cliente Veneza Ivon Rascon Fuentes (id 7959): saldo $600 pero límite $0 imposibilitaba seguir cargándole mercancía. Causa raíz en CuentasJoyeriaController.php:395-428: cuando devolución dejaba saldo en exactamente 0 sin pago, código pisaba límite a 0 incondicionalmente. Fix quirúrgico: agregar $total_pago > 0 al if exterior. Commit e1d1abe pusheado + deployado por Sergio + UPDATE manual a Veneza (limite_credito = 4250, calculado como pagoMayor $2125 × multiplo 2). Auditoría de otros clientes NO ejecutada (Sergio decidió no abrirla — Viridiana avisa si aparece otra).

Cambios de proceso

  • tareas-hijo — modo coach deshabilitado. Sergio pidió quitar el coaching ligero. A partir de ahora tareas-hijo se trata como cualquier otro proyecto suyo (yo edito, yo corro comandos, commit/push siguen auth per-sesión). Memoria [[tareas-hijo-learning-mode]] reescrita; MEMORY.md actualizado.
  • Tareas-hijo bloque 4.4 fix — entregado como snippet de coaching (quitar import Phoenix.LiveView + prefijo completo Phoenix.LiveView.redirect/2 en los 3 on_mount hooks). Sergio lo aplica desde la máquina donde tiene clonado el repo (no esta WSL).

Pack de PDFs cliente-facing para Aarón (cierre de madrugada 2026-05-28)

Sergio pidió 5 PDFs entregables para mandar a Aarón:

  1. Manual de uso #161/#162 (reporte semanal por empleada).
  2. Manual de uso #367 (precios sale condicionales + override).
  3. Cotización breve del #161/#162.
  4. Cotización breve del #367.
  5. PDF de la propuesta del módulo Conversaciones (re-render de propuesta-crm-aaron-2026-05.md).

Pipeline elegido: pandoc 2.9 + wkhtmltopdf 0.12 (instalados a sistema por Sergio). Sin librerías Python/Node (no había pip ni npm). CSS chico custom para look unificado.

Decisiones de Sergio sobre las cotizaciones:

  • Cobrar por horas reales con flujo asistido, no por el rango cotizado original.
  • #161/#162 → 4h × $350 = $1,400 MXN (vs cotizado $9,100-$12,950).
  • #367 → 2h × $350 = $700 MXN.
  • Sin desglose interno por entrega ni nota de IA disclosed — formato minimalista (título + 1 párrafo + lista breve + tabla horas/tarifa/total + "Ya está en producción"). 1 hoja, legible al screenshot para WhatsApp.

Output: projects/holbox/pdfs/ — 5 PDFs (22-63 KB c/u) + 4 .md source + 2 stylesheets CSS. Commit hub d869783.

Gotcha capturado: wkhtmltopdf bloquea acceso a archivos locales (CSS) por seguridad — requiere --pdf-engine-opt=--enable-local-file-access. Memoria nueva en [[reference_pdf_pipeline]].

Follow-ups abiertos

  • #373 joyeriameza — bug compuesto: cancelación de transacción que afectó al limite_credito no lo restaura. Sin urgencia (el fix del #372 evita que se repita).
  • holbox #161+#162 + #367 facturación — Sergio manda los 4 PDFs a Aarón (2 manuales + 2 cotizaciones por $1,400 + $700 = $2,100 MXN total). Cobro al recibir.

Patrones reforzados

  • Workflow paralelo con 3 laravel-fixer agents (uno por proyecto) liberó bandwidth para que yo me concentrara en jmeza (urgencia operativa). Los 3 entregaron exitosamente sin colisiones.
  • Cotización antes de tocar código (feedback_propose_quote_before_billable_work) aplicada limpia: el #161 facturable arrancó solo con OK explícito de Sergio confirmando que Aarón aprobó las 3 entregas.
  • Documentar para mandarle a Viridiana — escribir mensaje WhatsApp corto en español llano explicando qué pasó + qué se arregló + qué falta de su lado, sin jerga técnica. Confirmado patrón útil para reportes a usuarios no técnicos del cliente.
  • Cotización por horas reales asistidas (nuevo) — Sergio prefiere cobrar al cliente por horas reales × $350/h cuando el flujo asistido las baja mucho del rango cotizado original. Manera ética de pasar el ahorro al cliente; mantiene la relación a largo plazo. Aplica a futuro: ofrecer rango al cotizar (para no comprometerse a más rápido de lo posible), facturar al rango bajo o a horas reales si quedan por debajo. No mostrar splits internos ni mencionar IA en el doc cliente-facing salvo que ya esté disclosed con tono natural.