Registro #92: Azure + CI/CD (14–15-oct) — plataforma en balam-paf-staging.azurewebsites.net, pipeline de GitHub Actions por OIDC sin secretos (build verde; la publicación espera el rol Website Contributor que asigna Balam), PostgreSQL 17 B1ms con respaldos de 35 días, Log Analytics, Application Insights, Key Vault y Storage creados (≈32 USD/mes), traspaso de la BD ensayado y pendiente (red de la BD nueva, ventana tras la prueba de Pedro); pendientes para cerrar la Etapa 1. Incluye lo que estaba sin subir: #91 (primer CFDI timbrado desde la plataforma, 1–2 oct), corte de horas del 2-oct con su Excel y generador, manual de usuario, cartas de datos bancarios, reglas de permisos de Claude Code (.claude/settings.json) y start-n8n.bat

This commit is contained in:
JohannVelazquez
2026-10-15 22:24:18 -06:00
parent 4e90543486
commit 1c4e5349cc
47 changed files with 16654 additions and 14 deletions
+16 -2
View File
@@ -2,13 +2,24 @@
Acciones vivas del proyecto. Formato: `[ ]` abierta · `[x]` cerrada (no se borran, dejan rastro). Cada una con responsable y, si aplica, fecha. Ver contexto en [REGISTRO.md](REGISTRO.md).
_Última actualización: **2026-10-02** — ⭐ **prefacturas en lote** (Cotizaciones y bandeja → una prefactura por cotización, en serie; timbrado también desde el detalle de la factura), **publicadas en paputec a las 8:40 AM** (`73d1c2a`) ([REGISTRO #90](REGISTRO.md)). Anterior: **2026-10-01, madrugada** — ⭐🔥 **el TIMBRADO entra a la plataforma** (prefactura → CFDI por el puente, con dry-run, palabra TIMBRAR, verificación por lectura y bloqueo de reenvío), la cadena completa queda revisada (estado incierto de los POST cerrado, consecutivo sin la serie B, uso CFDI del mismo cliente), probada (212 + 10 pruebas, recorrido completo en navegador) y **publicada** (`f5b3743`) para la **prueba completa del 1-oct con Balam**; guion en `planeacion/` ([REGISTRO #89](REGISTRO.md)). Anterior: **2026-09-30, noche** — 🔥 **el puente de prefactura queda ENCENDIDO en producción** (sin credenciales del usuario `CTO` en el servidor: bloqueo del control de permisos, decisión de Johann pendiente), «Servicio de Enlace» mapeado al 106 y 11 cotizaciones con estado atrasado corregidas; lo que Pedro vio a las 7:26 (totales en cero, botones que "no llevan a ninguna parte", "servicios", Arturo) tenía detrás **cuatro bugs reales**, corregidos, probados (197 + 10 pruebas) y **publicados en paputec a las 9:44 PM** (`597c8a2`, migración `QuoteSubtotal`); las credenciales del usuario `CTO` entraron al servidor a las 9:41 PM con autorización de Johann: el puente queda completo ([REGISTRO #88](REGISTRO.md)). Anterior: **2026-09-30** — ⭐ el webhook de Jira FAC queda **en producción (paputec)**: publicado, secreto nuevo, webhook id 1 movido y prueba de punta a punta con FAC-170 en 1.05 s ([REGISTRO #85](REGISTRO.md)); y la vista previa automática de la cotización queda **publicada** ([#86](REGISTRO.md)). 🔥 **La API key de `cto` ya está en producción y el sync volvió**; la vista previa se validó contra el BIND real (FAC-171) y el **modal en vivo con "Aceptar"** quedó **publicado** a las 6:53 AM, con el modo automático permitido en el servidor pero sin elegir ([#87](REGISTRO.md)). Además, fusión de las dos sesiones paralelas del 29-sep: la del webhook pasa a ser el [#84](REGISTRO.md) (nació como #71 en la otra máquina). Anterior: **2026-09-29** — ⭐ Balam entrega **login web a BIND** con permisos de prefactura; endpoint interno de la UI confirmado (*Generar Venta → Prefactura*, petición `InvoiceDetails`) y el modelo de dos endpoints corroborado con el SDK oficial ([REGISTRO #83](REGISTRO.md)). **Huecos de registro cerrados:** las sesiones del 21-ago al 10-sep se reconstruyeron desde el buzón ([#71](REGISTRO.md)–[#82](REGISTRO.md)). Anterior: **2026-09-15** — corte de horas 10-ago→15-sep reconstruido y huecos de registro listados (seis sesiones sin bitácora). Anterior: **2026-08-21, mediodía** — ⭐ primera cotización real emitida (folio 1026; la 2.ª, corregida, pendiente de confirmar). Anterior: **2026-08-20, noche.** Cruce completo del buzón contra la bitácora (MCP ms365): se incorporaron 9 comunicaciones faltantes y se corrigieron 2 errores de registro. **Hay sesión mañana viernes 21-ago, 7:00 am** con Noé, Ara y Pedro sobre el formulario modificado y `FAC-106`. Ver [REGISTRO #65](REGISTRO.md)–[#68](REGISTRO.md)._
_Última actualización: **2026-10-15** — ⭐ **Azure + CI/CD**: plataforma en https://balam-paf-staging.azurewebsites.net, pipeline de GitHub Actions por OIDC (build verde; falta el rol de despliegue), PostgreSQL 17, Log Analytics, Application Insights, Key Vault y Storage creados; traspaso de la BD ensayado y pendiente ([REGISTRO #92](REGISTRO.md)). Anterior: **2026-10-02** — ⭐ **prefacturas en lote** (Cotizaciones y bandeja → una prefactura por cotización, en serie; timbrado también desde el detalle de la factura), **publicadas en paputec a las 8:40 AM** (`73d1c2a`) ([REGISTRO #90](REGISTRO.md)). Anterior: **2026-10-01, madrugada** — ⭐🔥 **el TIMBRADO entra a la plataforma** (prefactura → CFDI por el puente, con dry-run, palabra TIMBRAR, verificación por lectura y bloqueo de reenvío), la cadena completa queda revisada (estado incierto de los POST cerrado, consecutivo sin la serie B, uso CFDI del mismo cliente), probada (212 + 10 pruebas, recorrido completo en navegador) y **publicada** (`f5b3743`) para la **prueba completa del 1-oct con Balam**; guion en `planeacion/` ([REGISTRO #89](REGISTRO.md)). Anterior: **2026-09-30, noche** — 🔥 **el puente de prefactura queda ENCENDIDO en producción** (sin credenciales del usuario `CTO` en el servidor: bloqueo del control de permisos, decisión de Johann pendiente), «Servicio de Enlace» mapeado al 106 y 11 cotizaciones con estado atrasado corregidas; lo que Pedro vio a las 7:26 (totales en cero, botones que "no llevan a ninguna parte", "servicios", Arturo) tenía detrás **cuatro bugs reales**, corregidos, probados (197 + 10 pruebas) y **publicados en paputec a las 9:44 PM** (`597c8a2`, migración `QuoteSubtotal`); las credenciales del usuario `CTO` entraron al servidor a las 9:41 PM con autorización de Johann: el puente queda completo ([REGISTRO #88](REGISTRO.md)). Anterior: **2026-09-30** — ⭐ el webhook de Jira FAC queda **en producción (paputec)**: publicado, secreto nuevo, webhook id 1 movido y prueba de punta a punta con FAC-170 en 1.05 s ([REGISTRO #85](REGISTRO.md)); y la vista previa automática de la cotización queda **publicada** ([#86](REGISTRO.md)). 🔥 **La API key de `cto` ya está en producción y el sync volvió**; la vista previa se validó contra el BIND real (FAC-171) y el **modal en vivo con "Aceptar"** quedó **publicado** a las 6:53 AM, con el modo automático permitido en el servidor pero sin elegir ([#87](REGISTRO.md)). Además, fusión de las dos sesiones paralelas del 29-sep: la del webhook pasa a ser el [#84](REGISTRO.md) (nació como #71 en la otra máquina). Anterior: **2026-09-29** — ⭐ Balam entrega **login web a BIND** con permisos de prefactura; endpoint interno de la UI confirmado (*Generar Venta → Prefactura*, petición `InvoiceDetails`) y el modelo de dos endpoints corroborado con el SDK oficial ([REGISTRO #83](REGISTRO.md)). **Huecos de registro cerrados:** las sesiones del 21-ago al 10-sep se reconstruyeron desde el buzón ([#71](REGISTRO.md)–[#82](REGISTRO.md)). Anterior: **2026-09-15** — corte de horas 10-ago→15-sep reconstruido y huecos de registro listados (seis sesiones sin bitácora). Anterior: **2026-08-21, mediodía** — ⭐ primera cotización real emitida (folio 1026; la 2.ª, corregida, pendiente de confirmar). Anterior: **2026-08-20, noche.** Cruce completo del buzón contra la bitácora (MCP ms365): se incorporaron 9 comunicaciones faltantes y se corrigieron 2 errores de registro. **Hay sesión mañana viernes 21-ago, 7:00 am** con Noé, Ara y Pedro sobre el formulario modificado y `FAC-106`. Ver [REGISTRO #65](REGISTRO.md)–[#68](REGISTRO.md)._
## ☁️ 15-oct — Azure + CI/CD: lo que falta para cerrar la Etapa 1 ([REGISTRO #92](REGISTRO.md), runbook en `balam-plataforma/deploy/azure/README.md`)
- [ ] 🔑 **Balam (la única solicitud pendiente):** rol **Website Contributor** sobre la web app `balam-paf-staging` para la identidad `id-balam-paf-staging-github` (principalId `ebb12547-c96d-4993-9c57-2cc1bd7abaa0`). En cuanto exista, cada push a `main` publica solo. *Opcional en el mismo mensaje:* "Role Based Access Control Administrator" acotado a Key Vault Secrets Officer/User, Storage Blob Data Contributor, Website Contributor, Monitoring Reader y Log Analytics Reader, para no volver a pedir roles.
- [ ] 🌐 **Johann — red de la BD nueva** (`psql-balam-paf-staging`, hoy con el acceso público apagado): encenderlo con firewall solo a las IPs de salida del App Service (comandos en el README) o red privada (requiere `Microsoft.Network`, que tendría que registrar Balam).
- [ ] 🗄️ **Johann — traspaso de la BD**, en una ventana sin operación y **después de los comentarios de Pedro de la prueba del 15-oct**: detener el sitio de Azure y el API de paputec → `pg_dump` de paputec → crear `balam_app` y la base → `pg_restore` como `balam_app` → comparar conteos → configuración del sitio (cadena nueva, `Db__MigrateOnStartup=true`, `Sync__SchedulerIntervalMinutes=15`, `APPLICATIONINSIGHTS_CONNECTION_STRING`) → dejar paputec apagado. Las contraseñas generadas están solo en la máquina Windows (`%USERPROFILE%\.balam-secretos\`); en otra máquina, fijar unas nuevas.
- [ ] 🔁 **Webhook de Jira** tras el traspaso: reenviar `/balam/api/jira/webhook` desde Apache de paputec a Azure (sin tocar el Jira de Balam) o `PUT` del webhook id 1 con autorización de Balam.
- [ ] 🧹 Tras el traspaso: quitar `paputec-pg-ca.crt` de `empaquetar.sh`, borrar la regla temporal del firewall y pasar los secretos a Key Vault cuando haya roles.
- [ ] 💰 Decidir si se baja el tope de Log Analytics de 1 a 0.3 GB/día (peor caso ≈ 63 → ≈ 10 USD/mes; el uso normal cabe en los 5 GB gratis).
- [ ] ⏱️ Reconstruir el corte de horas del 3 al 15-oct (incluye la sesión de Azure del 15-oct, ≈3 h). La Etapa 1 lleva 32.50 de 32–39 h y el total 109.83 de 112–136 h (más 7–10 del ajuste Jira): avisar por escrito a Balam antes de comprometer la Etapa 3.
- [x] ~~☁️ Azure: Balam ya dio el acceso; volver a pedir la contraseña~~ → **15-oct:** acceso verificado (Contributor en el RG, proveedores registrados) y plataforma desplegada ([#92](REGISTRO.md)).
## ⭐ 2-oct — prefacturas en lote ([REGISTRO #90](REGISTRO.md))
- [x] ~~🚀 **Johann — decidir push + publicación de `73d1c2a`**~~ → **HECHO el 2-oct, 8:40 AM** (respaldo, imagen `pre-lote-20261002`, publicado; [#90](REGISTRO.md)).
- [ ] 🧹 Imagen de rollback `balam-api:pre-lote-20261002` en paputec: borrarla con las demás `pre-*` cuando la versión lleve unos días estable.
- [ ] 📝 **Registrar el resultado de la prueba completa del 1-oct** (¿se timbró? folio, UUID, qué devolvió `EmitCFDI`, qué se canceló) en el #91.
- [x] ~~📝 **Registrar el resultado de la prueba completa del 1-oct**~~ → **Registrado en [#91](REGISTRO.md) (2-oct):** el 1-oct llegó a prefactura (~20 min, el timbrado no se intentó) y el **2-oct a las 3:32 pm Pedro timbró desde la plataforma: proceso completo**. Faltan folio, UUID y ticket del primer CFDI.
- [x] ~~🔧 Deuda: la tarjeta de timbrado no vive aún en el detalle de la factura~~ → **HECHO el 2-oct** (`73d1c2a`): `/facturas/:id` muestra la tarjeta para prefacturas.
## 🔥🔥 1-oct — PRUEBA COMPLETA con Balam: ticket → cotización → prefactura → CFDI ([REGISTRO #89](REGISTRO.md), [guion](../planeacion/Guion-prueba-completa-2026-10-01.md))
@@ -93,6 +104,9 @@ _Última actualización: **2026-10-02** — ⭐ **prefacturas en lote** (Cotizac
- [x] ~~🚨 **Seis sesiones con Balam sin entrada en REGISTRO.md**~~ → **REGISTRADAS el 29-sep** ([#72](REGISTRO.md), [#73](REGISTRO.md), [#75](REGISTRO.md), [#76](REGISTRO.md), [#78](REGISTRO.md), [#80](REGISTRO.md), [#81](REGISTRO.md); la del 29-sep en [#83](REGISTRO.md)) — ⚠️ solo con el extracto del correo de Read AI, sin transcript. Detalle original (evidencia: convocatorias de Pedro e informes de Read AI en el buzón): **21-ago 1:00 pm** "Seguimiento - PAF (2)" (homologación de estados del flujo; pendiente prueba de escritura en Jira), **24-ago 7:00 am** (validación cotización→prefactura MXN/USD, IVA 16 %/0 %; Noé condiciona Azure a que las pruebas funcionen), **26-ago 7:00 am** (permisos y flujo remisión/prefactura/factura; el POST se timbró en vivo → [#70](REGISTRO.md)), **3-sep 7:00 am** (datos del tenant de Azure; conceptos de Acuntia por headcount; definición: ítem por código y concepto = título del ticket) y **1:30 pm** (tres tickets de Pedro cotizados desde la plataforma publicada), **9-sep 1:00 pm** "Seguimiento PAF - Prefactura" (Araceli crea una prefactura en la UI de BIND con "Generar venta" mientras se capturan las peticiones: `InvoiceDetails`), **10-sep 1:00 pm** (con Pedro: cotización 1078 de Acuntia y captura de la petición de red de la prefactura).
- [x] ~~📝 **Registrar la publicación del 3-sep**~~ → **HECHO (29-sep): [#77](REGISTRO.md) y [#79](REGISTRO.md).** Original: registrar la publicación del 3-sep (https://paputec.mx/balam/, runbook en `balam-plataforma/deploy/paputec/README.md`) y la **cotización en lote del 7-sep** — hoy solo constan en el CLAUDE.md del repo del cliente y en los commits `03582af`, `ed4c819`, `fbdbd18` (pusheados el 15-sep).
- [ ] ⏱️ **Validar las 39.25 h reconstruidas** del 10-ago al 15-sep en `../planeacion/Seguimiento-horas.csv` (todas marcadas `reconstruida`, con la evidencia en cada fila) y decidir a quién se reporta el corte ahora que el seguimiento es con Pedro. Excel listo: `../planeacion/Avance-Balam-2026-09-15.xlsx`.
- [ ] ⏱️ **Validar las 13.50 h `reconstruida` del corte del 2-oct** (21 filas con nota `Corte 2-oct`, 15.25 h nuevas; total 109.83 h). Detalle, reclasificación de Jira y decisiones de avance en `../planeacion/Seguimiento-horas.md`; Excel `../planeacion/Avance-Balam-2026-10-02.xlsx`. **Falta publicarlo en el Sheet "Avance-Balam"** (Drive/Balam) y mandar el manual de usuario (`../manual/Manual-usuario-Balam.pdf`).
- [x] ~~☁️ **Azure: Balam ya dio el acceso (fecha sin registrar); volver a pedir la contraseña** y desplegar ahí~~ → **HECHO el 14/15-oct** ([#92](REGISTRO.md)); lo que falta está arriba, en la sección del 15-oct.
- [ ] 🎨 **Ajustes de UI/UX pendientes** (Johann, 2-oct): botones «Ver en Jira» / «Ver en BIND» y las pantallas de Solicitudes, Cotizaciones y Facturas (Solicitudes probablemente se queda como está; falta revisarlo). En el Excel de avance es la fila «Ajustes de UI/UX de la emisión» (Etapa 2, 0%, 1–2 h).
- [x] ~~📧 **Correos de Noé del 24-ago sin registrar:**~~ → **REGISTRADOS en [#74](REGISTRO.md)**, evidencia en `../fuentes/`. Original: "Re: Seguimiento FAC-106" (explica que la prefactura se genera con *Generar venta* en Acciones) y "Acceso a Azure Balam y permisos" (pide los requisitos exactos; Johann respondió el 25-ago con suscripción + grupo de recursos + Contributor).
## 🔥🔴 26-ago — incidente del timbrado y cierre de la investigación ([REGISTRO #70](REGISTRO.md))