Registros #71–#83: se cierran los huecos del 21-ago al 29-sep — login web a BIND entregado, endpoint interno de la UI (Generar Venta → Prefactura, InvoiceDetails) y modelo de dos endpoints confirmado con el SDK oficial
Reconstruido desde el buzón (informes de Read AI, correos de Noé) y los commits del repo del cliente: homologación de estados (21-ago), false = remisión (24-ago), Generar Venta y requisitos de Azure (24/25-ago), la sesión del incidente (26-ago), tenant de Azure + ítem por código (3-sep), publicación en paputec.mx (3-sep), cotización en lote (7-sep), primera prefactura observada por DevTools (9-sep), captura con Pedro (10-sep), corte de horas (15/16-sep) y la sesión de hoy. - REGISTRO.md: encabezado Periodo, entradas #71–#83, bloque "Estado actual (al 29-sep)". - PENDIENTES.md: sección 29-sep (credenciales fuera del repo, especificar InvoiceDetails, BindUiClient bajo ADR-001, CreatedByName, soporte BIND, error al crear cotización); cerrados los huecos de registro, el correo de causa del 21-ago, el experimento de folio compartido, el servicio por combo; movimientos de Azure y de la 2386. - fuentes/: extractos de Read AI (9 informes), correo "Generar Venta" de Noé y el hilo de acceso a Azure. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
+23
-13
@@ -2,32 +2,42 @@
|
||||
|
||||
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-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-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)._
|
||||
|
||||
## 🔥 29-sep — login web a BIND y endpoint interno de la UI ([REGISTRO #83](REGISTRO.md))
|
||||
|
||||
- [ ] 🔑 **Guardar las credenciales del login web fuera del repo** (`dotnet user-secrets` en desarrollo; `/opt/balam/.env` en paputec) y **destruir el TXT** en correo y disco. Misma lección del token de julio (VALIDACION-API.md §8.12).
|
||||
- [ ] 🔴 **Johann — revisar el error que impide cargar la solicitud al crear una cotización en BIND** (visto en la sesión) y **crear la cotización** después de corregirlo. Puntos de acción del informe de Read AI.
|
||||
- [ ] ⭐ **Especificar el endpoint interno `InvoiceDetails` con la sesión propia:** URL, método, `Content-Type`, shape del payload, respuesta, cookies y `__RequestVerificationToken`, y el flujo de `/Login/Login`. Capturar con DevTools o con el script Playwright `captura-prefactura.mjs` (planeado en el #70; **aún no existe**); sanitizar (sin cookies ni token) y escribirlo en la bitácora como contrato antes de codificar. Crear UNA prefactura de prueba (no fiscal, borrable) y cancelarla al terminar; avisar a Pedro (candado del 12-ago).
|
||||
- [ ] 🔧 **Construir `BindUiClient`** (sesión por cookie) con el mismo protocolo ADR-001: dry-run → confirmación humana → verificación por lectura (fila `IsFiscalInvoice=false` + `UUID=null` en la secuencia compartida de folios). Reemplaza el 409 de `POST /api/emision/prefactura`.
|
||||
- [ ] ⚠️ **Acordar con Balam que las prefacturas creadas así llevan `CreatedByName` = cuenta de Noé** (o pedir un usuario de servicio dedicado).
|
||||
- [ ] 📧 **Pedir en paralelo a soporte BIND el campo/endpoint oficial de prefactura**, con la evidencia del #70 + el swagger del SDK (`NewInvoice` sin campo de tipo) + la solicitud pública "agregar PREFACTURA" de su foro. Replicar la UI es frágil y posiblemente ajeno a sus términos de servicio.
|
||||
- [ ] 📼 **Recuperar los informes completos de Read AI** (al menos 9, 10 y 29-sep) desde app.read.ai con sesión — los correos solo traen el extracto — y guardarlos en `../fuentes/`.
|
||||
|
||||
## 🚨 Huecos de registro (detectados en el corte del 15-sep)
|
||||
|
||||
- [ ] 🚨 **Seis sesiones con Balam sin entrada en REGISTRO.md** (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).
|
||||
- [ ] 📝 **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).
|
||||
- [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`.
|
||||
- [ ] 📧 **Correos de Noé del 24-ago sin registrar:** "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).
|
||||
- [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))
|
||||
|
||||
- [ ] 🔥🔴 **CANCELAR EL CFDI 2386 EN BIND** (motivo SAT 02 "sin relación"). ⚠️ **Al 26-ago tarde sigue `Activa` con UUID** — verificado por API. Receptor ACUNTIA (RFC genérico extranjero, $1,160 MXN). Confirmar además que BIND no le haya enviado el correo automático al cliente.
|
||||
- [ ] 📧 **Avisar a Noé/Arturo del incidente con transparencia** (qué pasó, por qué, contención aplicada, CFDI cancelado). La plataforma tiene la auditoría completa en `WriteOperations` #73.
|
||||
- [ ] 🔥🔴 **CANCELAR EL CFDI 2386 EN BIND** (motivo SAT 02 "sin relación"). ⚠️ **Al 26-ago tarde sigue `Activa` con UUID** — verificado por API. Receptor ACUNTIA (RFC genérico extranjero, $1,160 MXN). Confirmar además que BIND no le haya enviado el correo automático al cliente. **Movimiento (26-ago, en la sesión): Pedro tomó la acción de solicitar apoyo para cancelarla ([#75](REGISTRO.md)); al 29-sep no consta confirmación.**
|
||||
- [x] ~~📧 **Avisar a Noé/Arturo del incidente con transparencia**~~ → **Noé y Pedro estaban en la sesión donde ocurrió** ([#75](REGISTRO.md)) y Pedro tomó la cancelación. ⚠️ A Arturo no consta que se le haya informado. Original: avisar (qué pasó, por qué, contención aplicada, CFDI cancelado). La plataforma tiene la auditoría completa en `WriteOperations` #73.
|
||||
- [x] ~~🧪 **Experimento decisivo: crear UNA prefactura a mano en la UI**~~ → **RESUELTO sin crear nada: el folio 2384 (Araceli, 19-ago) ES una prefactura** — confirmado en UI por Johann. Prefacturas = filas `false`+UUID null; `Status=2` = facturada (parió a la 2385 timbrada). Ver adenda del [#70](REGISTRO.md). **La detección/vinculación automática de prefacturas ya es construible sin escribir.**
|
||||
- [ ] 🧪 **Experimento seguro pendiente de go-ahead: POST `false` apuntando a la secuencia de folios compartida** (`Number` explícito + espejo de 2384: `CFDIUse=23`, `ShowIEPS=true`, plazo) para ver si la UI lo etiqueta Prefactura. Riesgo máximo: documento no fiscal borrable con folio raro. Requiere `Bind:Mode=Write` en sesión y autorización expresa.
|
||||
- [ ] 📧 **Preguntar a Pedro / soporte BIND:** "¿cómo se crea una venta de tipo *Prefactura* por API? Con `IsFiscalInvoice=false` cae como Remisión (secuencia 1000) y con `true` se timbra al crear; el diff contra una prefactura real no muestra ningún campo de tipo". Adjuntar la evidencia del #70.
|
||||
- [x] ~~🧪 **Experimento seguro pendiente de go-ahead: POST `false` apuntando a la secuencia de folios compartida**~~ → **EJECUTADO la noche del 26-ago (op #79, folio 1002): BIND ignoró el `Number`** — adenda 2 del [#70](REGISTRO.md). Original: POST `false` a la secuencia compartida (`Number` explícito + espejo de 2384: `CFDIUse=23`, `ShowIEPS=true`, plazo) para ver si la UI lo etiqueta Prefactura. Riesgo máximo: documento no fiscal borrable con folio raro. Requiere `Bind:Mode=Write` en sesión y autorización expresa.
|
||||
- [ ] 📧 **Preguntar a Pedro / soporte BIND** *(sigue vigente como vía paralela al endpoint interno del [#83](REGISTRO.md), ahora con la evidencia del SDK oficial)*: "¿cómo se crea una venta de tipo *Prefactura* por API? Con `IsFiscalInvoice=false` cae como Remisión (secuencia 1000) y con `true` se timbra al crear; el diff contra una prefactura real no muestra ningún campo de tipo". Adjuntar la evidencia del #70.
|
||||
- [ ] 🧹 **Borrar las remisiones 1000 y 1001** (siguen `Activas`). En la UI, o por API (`DELETE /api/Invoices/{id}`) con autorización expresa.
|
||||
|
||||
## ✅ 21-ago — la cotización ya se emite; lo que deja la sesión ([REGISTRO #69](REGISTRO.md))
|
||||
|
||||
- [ ] 🔥 **Cancelar el folio 1026 en BIND** (IVA 243,640.96 por el error de escala). Araceli o Johann, desde Ventas → Cotizaciones.
|
||||
- [ ] 🔥 **Confirmar la segunda emisión** (`VAT: 0.16`): folio esperado 1027, total **1,431.44 MXN**. Verificar por lectura y anotar el folio en #69.
|
||||
- [ ] 📧 **Enviar el correo a Pedro (CC Noé, Ara)** con la causa — borrador listo en `../planeacion/Correo-error-resuelto-2026-08-21.md`; faltan los dos corchetes (folio y estado de la 1026).
|
||||
- [ ] 📝 **Capturar la minuta de las definiciones de la sesión:** ¿se validaron las 17 categorías? ¿`Empresa origen` = 3 cuentas o 1? ¿se agrega IVA 0%? ¿Azure? ¿a quién se reportan horas ahora?
|
||||
- [ ] 🔧 **Resolver el servicio desde el combo, no fijo:** la UI manda el GUID del servicio 027 hardcodeado. Falta el mapeo 17 categorías de Jira → GUID de `/api/Services` (y BIND tiene 5 "Servicio de Enlace": hay que elegir uno por categoría, idealmente después de que Balam depure su catálogo).
|
||||
- [ ] 🔧 **Lista de precios desde el cliente:** usar `Clients.PriceListID` (CEMEX → "A") en vez del GUID fijo; el read model de `Quotes` reporta ese campo mal.
|
||||
- [x] ~~📧 **Enviar el correo a Pedro (CC Noé, Ara)** con la causa~~ → **ENVIADO el 21-ago 7:32 am** a Noé (CC Pedro), hilo "Seguimiento FAC-106" ([#71](REGISTRO.md)); Noé respondió el 24-ago con el mecanismo *Generar Venta* ([#74](REGISTRO.md)). Original: enviar el correo con la causa — borrador listo en `../planeacion/Correo-error-resuelto-2026-08-21.md`; faltan los dos corchetes (folio y estado de la 1026).
|
||||
- [ ] 📝 **Capturar la minuta de las definiciones de la sesión:** ¿se validaron las 17 categorías? ¿`Empresa origen` = 3 cuentas o 1? ¿se agrega IVA 0%? ¿Azure? ¿a quién se reportan horas ahora? *(29-sep: el extracto de Read AI de esa sesión solo alcanza a decir "Se definió que el IVA nacional…"; sigue sin minuta.)*
|
||||
- [x] ~~🔧 **Resolver el servicio desde el combo, no fijo:**~~ → **HECHO el 3-sep** (definición de Pedro: categoría → código del catálogo `/api/Services`, mapeo `Emision:ServicioPorCategoria`, selector de ítem; commit `ed4c819`, [#76](REGISTRO.md)). Original: la UI manda el GUID del servicio 027 hardcodeado. Falta el mapeo 17 categorías de Jira → GUID de `/api/Services` (y BIND tiene 5 "Servicio de Enlace": hay que elegir uno por categoría, idealmente después de que Balam depure su catálogo).
|
||||
- [ ] 🔧 **Lista de precios desde el cliente** *(hecho en la prefactura el 23-ago, commit `a07fff6`; falta verificar que la cotización haga lo mismo)*: usar `Clients.PriceListID` (CEMEX → "A") en vez del GUID fijo; el read model de `Quotes` reporta ese campo mal.
|
||||
- [x] ~~**Sesión 21-ago**~~ → **Hecha.** Tres intentos en vivo fallaron (protocolo aplicado, nada creado); la causa se encontró después y la emisión funcionó al 5.º intento.
|
||||
- [x] ~~🔒 **Bind:Mode ReadOnly al cerrar**~~ → **Hecho en esta máquina** (y API/ng apagados). ⚠️ En la otra máquina configurar user-secrets desde cero; `Bind:Mode` por default es ReadOnly.
|
||||
|
||||
@@ -45,7 +55,7 @@ _Última actualización: **2026-09-15** — corte de horas 10-ago→15-sep recon
|
||||
- [ ] 🔥 **Johann — en la sesión: encender `Bind:Mode=Write` solo para emitir y regresarlo a ReadOnly antes de cerrar.**
|
||||
- [ ] ⚠️🔥 **Johann — anunciar al abrir la sesión el destino de la cotización real** (cancelarla al terminar vs. cliente de prueba) y que la prefactura pertenece a una sesión posterior. **Pendiente arrastrado del 12-ago; sigue sin resolverse.**
|
||||
- [ ] 🔴 **Validar las 17 categorías con Noé y Ara.** Pedro redujo el catálogo de servicios de **67 → 17** pero lo condicionó: *"tengo que verlas con Noé y Ara antes"*. **Es el momento de cerrar el hueco de conceptos/partidas** que bloquea B7 desde el [#62](REGISTRO.md).
|
||||
- [ ] ☁️ **Azure — insistir; lleva 3 semanas sin avanzar.** El 11-ago Noé ofreció explorarlo en la sesión *"con una cuenta que estamos creando para este uso"*; **el 12-ago no se tocó** — Noé solo dijo *"eso lo resuelvo con Pedro"* ([REGISTRO #65](REGISTRO.md) §8). Ahora que Pedro es el responsable, es su pendiente directo. Requisitos ya comunicados el 28-jul: grupo de recursos + **Contributor** (app + BD + Key Vault), sin Global Admin. **Sin esto la transición automática no existe** y todo queda en disparo manual.
|
||||
- [ ] ☁️ **Azure — insistir; lleva 3 semanas sin avanzar.** El 11-ago Noé ofreció explorarlo en la sesión *"con una cuenta que estamos creando para este uso"*; **el 12-ago no se tocó** — Noé solo dijo *"eso lo resuelvo con Pedro"* ([REGISTRO #65](REGISTRO.md) §8). Ahora que Pedro es el responsable, es su pendiente directo. Requisitos ya comunicados el 28-jul: grupo de recursos + **Contributor** (app + BD + Key Vault), sin Global Admin. **Sin esto la transición automática no existe** y todo queda en disparo manual. **Movimientos:** 24-ago Noé condiciona Azure a que las pruebas funcionen y pide la app en un VPS ([#73](REGISTRO.md)); 25-ago Johann manda los requisitos exactos ([#74](REGISTRO.md)); 3-sep se piden los datos del tenant y Noé debía reenviarlos a Pedro ([#76](REGISTRO.md)); mientras, la plataforma vive en https://paputec.mx/balam/ desde el 3-sep ([#77](REGISTRO.md)).
|
||||
- [x] ~~👤 **Confirmar quién es el responsable del proyecto.**~~ → **CONFIRMADO: Pedro.** Noé lo anunció el 12-ago: *"Erika ya no va a ser la PM de este proyecto. El seguimiento del proyecto lo va a traer Pedro."* ⚠️ **Nunca se comunicó por escrito** — el anuncio existe solo en la grabación. Ver [REGISTRO #65](REGISTRO.md) §1.
|
||||
|
||||
## 🆕 Abierto por la sesión del 12-ago ([REGISTRO #65](REGISTRO.md))
|
||||
|
||||
+151
-1
@@ -12,7 +12,7 @@
|
||||
- **Arturo Rosas Hernandez** — Gerencia administrativa / operación, Balam — `arturo.rosas@balamtalentoestrategico.com`
|
||||
- **Paola de los Angeles Castro Martínez** — Recursos Humanos, Balam — `hr@balamtalentoestrategico.com` · coordinó la firma del contrato (WhatsApp)
|
||||
|
||||
**Periodo:** 8 abr 2026 → 21 ago 2026 (última actualización: **21-ago** — ⭐ **primera cotización real emitida en BIND desde un ticket** (folio 1026, [#69](REGISTRO.md)); `Type=2` y `VAT` como tasa, indocumentados. Anterior: **20-ago** — cruce completo del buzón de Outlook vía MCP ms365 + recuperación del transcript del **12-ago**. Se incorporan 10 comunicaciones que faltaban y se corrigen 2 errores. ⭐ **Cambio de gobernanza: Pedro Ayala releva a Erika en el seguimiento del proyecto desde el 12-ago.** Próxima sesión: **viernes 21-ago, 7:00 am** con Noé, Ara y Pedro sobre `FAC-106`)
|
||||
**Periodo:** 8 abr 2026 → 29 sep 2026 (última actualización: **29-sep** — ⭐ **Balam entrega login web a BIND con permisos de prefactura** y queda confirmado el modelo de dos endpoints: externo = API (remisión o CFDI timbrado), interno = UI (*Generar Venta → Prefactura*, petición `InvoiceDetails`) ([#83](REGISTRO.md)). Se reconstruyen desde el buzón las sesiones sin registro del 21-ago al 10-sep ([#71](REGISTRO.md)–[#82](REGISTRO.md)): homologación de estados, `false` = remisión, la sesión del incidente, publicación en paputec.mx, cotización en lote y la primera prefactura observada por DevTools. Anterior: **21-ago** — ⭐ **primera cotización real emitida en BIND desde un ticket** (folio 1026, [#69](REGISTRO.md)); `Type=2` y `VAT` como tasa, indocumentados. Anterior: **20-ago** — cruce completo del buzón de Outlook vía MCP ms365 + recuperación del transcript del **12-ago**. Se incorporan 10 comunicaciones que faltaban y se corrigen 2 errores. ⭐ **Cambio de gobernanza: Pedro Ayala releva a Erika en el seguimiento del proyecto desde el 12-ago.** Próxima sesión: **viernes 21-ago, 7:00 am** con Noé, Ara y Pedro sobre `FAC-106`)
|
||||
**Orden:** cronológico (más antiguo arriba)
|
||||
|
||||
---
|
||||
@@ -1610,8 +1610,158 @@ Se aplicó el protocolo del guion §6: parar, anunciar el diagnóstico, pivotear
|
||||
|
||||
---
|
||||
|
||||
## 71 · Ago 21, 2026 — 7:32 AM · Correo · Johann → Noé (CC Pedro) · "Seguimiento FAC-106": la causa del error y la primera cotización real
|
||||
|
||||
> Dirección: enviado. Evidencia: buzón (hilo "Seguimiento FAC-106"); borrador en [`../planeacion/Correo-error-resuelto-2026-08-21.md`](../planeacion/Correo-error-resuelto-2026-08-21.md). Complementa el [#69](REGISTRO.md). *(Registrado el 29-sep-2026 al cerrar los huecos de bitácora.)*
|
||||
|
||||
**Resumen:** tras la sesión de las 7:00 am, Johann informa que ya encontró la causa del error y que la cotización desde `FAC-106` **ya se genera correctamente en BIND**. El problema no eran los datos del ticket ni el formulario nuevo (*"quedó muy bien"*), sino dos detalles del API de BIND que no están en su documentación y solo se descubren probando: (1) cada partida lleva `Type` (producto vs servicio) sin valores documentados — con el valor de producto BIND buscaba el servicio en el catálogo equivocado y devolvía el error genérico de *"comunicarte con soporte técnico"*; (2) la escala del IVA por partida. Noé respondió el 24-ago con el mecanismo de la UI ([#74](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 72 · Ago 21, 2026 — 1:00 PM · Llamada · "Seguimiento - PAF (2)" · Homologación de estados del flujo ticket → cotización → prefactura → factura
|
||||
|
||||
> Participan: Johann, Pedro (convocatoria de Pedro a las 7:14 am con la liga a `FAC-106`; Noé convocado). Canal: Teams. Evidencia: informe de Read AI (1:34 pm), **solo el extracto del correo, sin transcript** — [`../fuentes/2026-08-21 a 2026-09-29 - Read AI - Informes Seguimiento PAF (extractos del correo).md`](../fuentes/2026-08-21%20a%202026-09-29%20-%20Read%20AI%20-%20Informes%20Seguimiento%20PAF%20(extractos%20del%20correo).md). ⚠️ Reconstruida el 29-sep desde ese extracto.
|
||||
|
||||
**Resumen:** se definió la integración Jira ↔ BIND ↔ plataforma de punta a punta: creación del ticket → cotización → prefactura → factura → timbrado. Se acordó **homologar los estados del flujo**: la prefactura se reflejaría como **"En proceso de facturación"** y la factura completada como **"Facturado"** — coincide con la regla del [#62](REGISTRO.md): la aprobación de Araceli va entre esos dos estados. Quedó pendiente la **prueba de escritura en Jira** (cambiar el estado de un ticket desde la plataforma). Johann y Pedro acordaron **repetir una prueba desde cero** para validar la generación de la cotización y la escritura en BIND.
|
||||
|
||||
**Pendientes que surgieron:**
|
||||
- [ ] Johann — prueba de escritura en Jira (transición de estado de un ticket).
|
||||
- [ ] Johann — validar con Pedro la cotización creada en BIND cuando él tenga acceso para revisarla.
|
||||
|
||||
---
|
||||
|
||||
## 73 · Ago 24, 2026 — 7:00 AM · Llamada · "Seguimiento - PAF" · Validación cotización → prefactura (MXN/USD, IVA 16 %/0 %) y la primera semántica dura: `IsFiscalInvoice=false` = REMISIÓN
|
||||
|
||||
> Participan: Noé, Pedro, Johann. Canal: Teams. Evidencia: informe de Read AI (7:44 am), extracto. Preparación: la noche del 23-ago se construyó en la plataforma el camino cotización → prefactura (`POST /api/emision/prefactura` con el mismo protocolo ADR-001; commits `a893fa9`…`a07fff6` del repo del cliente): el wizard deja de simular (paso 4 = borrador, paso 5 = aprobación y generación real) y `CFDIUse`, `ServiceID` y `PriceListID` se heredan de una factura real y del detalle del cliente porque BIND los exige aun en prefactura.
|
||||
|
||||
**Resumen:** se validó el flujo de conversión de cotizaciones a prefacturas en BIND — captura, revisión, aprobación y registro financiero — con pruebas **en moneda nacional e internacional, IVA 16 % y 0 %**. Se identificaron ajustes pendientes en la lógica fiscal y en la **clasificación del documento**: los POST con `IsFiscalInvoice=false` produjeron los **folios 1000 y 1001 como Remisiones**, no prefacturas. Ajuste en vivo (commit `77d3767`, 7:38 am): `false` = remisión; la prefactura pasa a modelarse como "factura sin timbrar" con opt-in explícito; la bandeja gana una columna BIND. Se evaluará automatizar el paso Jira → BIND como cotización para reducir clics. **Noé condicionó los accesos de Azure a que las pruebas funcionen** y pidió a Johann **habilitar la aplicación en un VPS** para facilitar las pruebas — origen de la publicación provisional ([#77](REGISTRO.md)).
|
||||
|
||||
**Puntos de acción (según Read AI):**
|
||||
- Noé — gestionar los accesos de Azure una vez validado el funcionamiento de las pruebas.
|
||||
- Johann — habilitar la aplicación en el VPS para facilitar las pruebas.
|
||||
|
||||
> **Lectura estratégica:** la hipótesis *"true = factura sin timbrar = la prefactura del flujo"* nació aquí, de la evidencia de que `false` era remisión y de que el API no tenía operación de timbrado. Dos días después resultó falsa ([#70](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 74 · Ago 24–25, 2026 · Correo · Noé ↔ Johann · dos hilos: cómo se hace una PREFACTURA en BIND ("Generar Venta") y los requisitos exactos de Azure ⭐
|
||||
|
||||
> Dirección: recibidos (24-ago 3:48 pm y 3:52 pm; 25-ago 4:19 pm) y enviado (25-ago 4:54 pm). Evidencia: [`../fuentes/2026-08-24 - Correo - Noe Generar Venta = prefactura (Re Seguimiento FAC-106).md`](../fuentes/2026-08-24%20-%20Correo%20-%20Noe%20Generar%20Venta%20=%20prefactura%20(Re%20Seguimiento%20FAC-106).md) y [`../fuentes/2026-08-25 - Correo - Noe y Johann Acceso a Azure Balam y permisos.md`](../fuentes/2026-08-25%20-%20Correo%20-%20Noe%20y%20Johann%20Acceso%20a%20Azure%20Balam%20y%20permisos.md).
|
||||
|
||||
**1 · "Re: Seguimiento FAC-106" (Noé, 24-ago 3:48 pm, con 4 capturas de pantalla).** Balam revisó las cotizaciones que se convirtieron en Remisión y explica el camino de la UI: *"Cuando una cotización se hace y se quiere convertir en Prefectura [sic] se selecciona la opción en Acciones en Bind que dice **'Generar Venta'**, si se selecciona la opción **Generar Pedido** se hace remisión y eso no lo manejamos en Balam."* Y en la ventana siguiente *"se selección la opción 'Prefectura' para revisar antes de mandar la factura al cliente"*. ⭐ **Primera descripción escrita del mecanismo interno:** el tipo de documento se elige **en la UI, después de "Generar Venta"** — no existe en el API público (adenda 2 del [#70](REGISTRO.md), [#83](REGISTRO.md)).
|
||||
|
||||
**2 · "Acceso a Azure Balam y permisos" (Noé, 25-ago 4:19 pm; antes, 24-ago 3:52 pm en el hilo de Jira).** *"Para cerrar el tema del acceso a Azure y no dar más vueltas, ¿nos ayudas a detallar exactamente qué necesitas para publicar el ambiente? … lo validamos con la cuenta que estamos preparando para este uso y te damos acceso."* Johann respondió el 25-ago 4:54 pm con la lista exacta: suscripción a nombre de Balam; grupo de recursos dedicado (`rg-balam-paf-staging`); rol **Contributor** solo sobre ese grupo; **Key Vault Secrets Officer**; proveedores para App Service Linux (.NET 10), PostgreSQL Flexible Server 17, Key Vault, Storage y Application Insights/Log Analytics; identidad OIDC para CI/CD desde GitHub; y los cinco datos a recibir (Tenant ID, Subscription ID, grupo, región, cuenta). Sin Global Admin ni facturación.
|
||||
|
||||
**Acción derivada:** Azure sigue en manos de Balam ([#76](REGISTRO.md)); la plataforma se publica provisionalmente en un VPS propio ([#77](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 75 · Ago 26, 2026 — 7:00 AM · Llamada · "Seguimiento - PAF" · la sesión en la que el POST se TIMBRÓ (complemento del [#70](REGISTRO.md))
|
||||
|
||||
> Participan: Noé, Pedro, Johann. Canal: Teams. Evidencia: informe de Read AI (7:35 am), extracto. Preparación: la noche del 25-ago se construyó el camino prefactura → factura (commits `1ad0e27`…`02cb042`): detección del timbrado al instante, puertas idempotentes, y el botón "Timbrar" enlaza a BIND porque *"el API no lo permite (130 operaciones revisadas, ninguna de timbrado/CFDI)"* — la inferencia que falló esa misma mañana.
|
||||
|
||||
**Resumen:** la sesión revisó la **habilitación de permisos** y el flujo remisión / prefacturación / facturación entre la plataforma y BIND. Noé señaló que **algunas funcionalidades aún debían construirse** para permitir el uso completo de la plataforma. Johann explicó que BIND **no permite timbrar por API** y propuso generar la prefactura desde la plataforma y timbrar en BIND. Al confirmar desde el wizard (op #73, cotización 1028 / ticket `FAC-108`), BIND **creó la venta 2386 como CFDI y la timbró**: el incidente, su contención y la investigación están en el [#70](REGISTRO.md). Johann estimó que la revisión del flujo de prefacturación podría quedar resuelta durante el día — lo que quedó resuelto ese día fue el diagnóstico, no la creación.
|
||||
|
||||
**Puntos de acción (según Read AI):**
|
||||
- Pedro — solicitar apoyo para **cancelar la factura generada durante la prueba** (2386).
|
||||
- Noé — construir las funcionalidades necesarias para habilitar los permisos solicitados.
|
||||
- Johann — revisar y ajustar "el estatus y el parámetro" que provoca que la operación se genere como factura en lugar de prefactura → resultado: **ese parámetro no existe en el API** (adenda 2 del [#70](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 76 · Sep 3, 2026 — 7:00 AM · Llamada · "Seguimiento PAF - 02/09/26" · Datos del tenant de Azure, los conceptos de Acuntia por headcount y una definición: ítem por CÓDIGO de catálogo, concepto = título del ticket
|
||||
|
||||
> Participan: Noé, Pedro, Johann. Canal: Teams. Evidencia: informe de Read AI (7:28 am), extracto (6 capítulos, no visibles).
|
||||
|
||||
**Resumen:** la reunión se enfocó en automatizar la generación de cotizaciones y facturas de **Acuntia** entre Jira, BIND y el ambiente de Azure. Se revisaron los datos necesarios "de Jitco" [sic, Read AI] para configurar el **tenant de Azure** y permitir el montaje. Para Acuntia, **los conceptos dependen del headcount activo** e incluyen textos por colaborador — coherente con "1 factura por colaborador, ~40" del Discovery. **Definición de Balam (Pedro):** la categoría del combo `Servicio/Producto` de Jira se traduce a un **código del catálogo de servicios de BIND** (p. ej. "Servicios Profesionales Generales" → `101`), el ítem se conserva tal cual y **solo el concepto se sobreescribe con el título del ticket**. Sustituye el GUID del servicio 027 que iba fijo en la UI desde el 21-ago. Implementado el mismo día (commit `ed4c819`): `GET /api/Services` en `BindClient`, mapeo configurable `Emision:ServicioPorCategoria`, selector de ítem en la pantalla de cotización, y la caché de la bandeja se invalida al cotizar — en producción la pantalla mostraba "—" hasta un minuto después de crear la cotización.
|
||||
|
||||
**Puntos de acción (según Read AI):**
|
||||
- Noé — reenviar por correo a Pedro la solicitud de datos para configurar el tenant de Azure.
|
||||
- Balam/Johann — a la 1:30 pm, ejercicio de conversión de dos o tres tickets en cotizaciones ([#78](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 77 · Sep 3, 2026 · Desarrollo · La plataforma queda PUBLICADA en https://paputec.mx/balam/ — ambiente provisional propio mientras llega Azure ⭐
|
||||
|
||||
> Evidencia: commit `03582af` del repo del cliente (pusheado el 15-sep) y runbook [`../balam-plataforma/deploy/paputec/README.md`](../balam-plataforma/deploy/paputec/README.md). Origen: la petición de Noé del 24-ago de habilitar la aplicación en un VPS para facilitar las pruebas ([#73](REGISTRO.md)).
|
||||
|
||||
**Qué se publicó:** frontend Angular bajo `/balam/` y API en `/balam/api/`, en un VPS propio (Ubuntu 24.04 · Plesk · Apache · Docker): Postgres 17 sin puertos publicados; API en contenedor *chiseled* (usuario sin privilegios, FS de solo lectura, `cap_drop ALL`) escuchando solo en loopback; Apache como única cara pública (TLS, HSTS, CSP); `deploy.sh` reproducible; rol `balam_app` sin `BYPASSRLS` (cierra el hueco de RLS del [#53](REGISTRO.md)); respaldo diario con 14 días de retención; seeder de un solo administrador. **Endurecimiento del API:** rate limit por IP (global y de login), bloqueo 15 min tras 5 fallos, contraseñas ≥ 12, `no-store`/`nosniff`, sin banner, `X-Forwarded-*` solo desde loopback. **Secretos solo en `/opt/balam/.env`** (root, 0600): nada en el repo ni en imágenes. **Producción corre con `Bind:Mode=ReadOnly` y `Jira:Mode=ReadOnly`**; para una sesión acompañada de escritura se enciende `Write` y se apaga al terminar (regla del cliente, ADR-001).
|
||||
|
||||
> **Lectura estratégica:** Azure llevaba cinco semanas sin destrabarse ([#59](REGISTRO.md), [#63](REGISTRO.md), [#65](REGISTRO.md), [#74](REGISTRO.md)). Publicar en infraestructura propia convirtió las sesiones de pantalla compartida en pruebas sobre una URL viva: la tarde de ese mismo día Balam cotizó tres tickets reales desde ahí ([#78](REGISTRO.md)). El costo: la plataforma vive fuera del tenant del cliente hasta que Azure exista.
|
||||
|
||||
---
|
||||
|
||||
## 78 · Sep 3, 2026 — 1:30 PM · Llamada · "Seguimiento PAF (2) 03/09/26" · Tres tickets de Pedro convertidos en cotizaciones desde la plataforma publicada
|
||||
|
||||
> Participan: Pedro, Johann. Canal: Teams. Evidencia: informe de Read AI (1:51 pm), extracto (capítulos y acciones bloqueados).
|
||||
|
||||
**Resumen:** se validó la aplicación para convertir tickets en cotizaciones como etapa previa a la facturación. Johann confirmó que **los tres tickets de Pedro ya se habían enviado como cotizaciones** a BIND y que **el concepto usa el nombre del ticket** (definición de la mañana, [#76](REGISTRO.md)). En una prueba con **un ticket de Linares** se verificó [el resto del informe está truncado]. **Primera vez que Balam opera la plataforma sobre la URL publicada.**
|
||||
|
||||
---
|
||||
|
||||
## 79 · Sep 7, 2026 · Desarrollo · Cotización EN LOTE desde la bandeja: una cotización BIND por ticket, dry-run y confirmación en serie
|
||||
|
||||
> Evidencia: commit `fbdbd18` del repo del cliente (pusheado el 15-sep); documentado en su `CLAUDE.md`.
|
||||
|
||||
La bandeja permite marcar varios tickets (solo los que aún no tienen cotización) y "Cotizar seleccionados" abre `solicitudes/cotizar-lote?ids=…`: una fila por ticket, prellenada con las mismas reglas que la pantalla individual (`cotizacion-prefill.ts`), editable, con vista previa (dry-run) y confirmación por ticket. Cada confirmación es una `WriteOperation` y un `QuoteInvoiceLink` independientes; un rechazo de BIND deja la fila en error y **no aborta el lote**. Las llamadas van **en serie** para respetar la cuota de BIND y no mezclar folios. Responde al caso Acuntia (~40 facturas al mes, una por colaborador, [#76](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 80 · Sep 9, 2026 — 1:00 PM · Llamada · "Seguimiento PAF - Prefactura" · Araceli crea una prefactura en vivo con "Generar venta" y aparece el endpoint interno: `InvoiceDetails` ⭐
|
||||
|
||||
> Participan: Araceli, Pedro, Johann (Noé convocado). Canal: Teams, con pantalla compartida de Araceli. Evidencia: informe de Read AI (1:24 pm), extracto (capítulos y acciones bloqueados). Es la vía "endpoint interno de la UI" que dejó abierta la adenda 2 del [#70](REGISTRO.md).
|
||||
|
||||
**Resumen:** el equipo revisó el procedimiento para crear una prefactura a partir de una cotización y **confirmó que debe usarse "Generar venta"** — "Generar pedido" no habilita esa función (lo mismo que Noé escribió el 24-ago, [#74](REGISTRO.md)). Durante las pruebas, **Araceli creó y guardó una prefactura** mientras Johann analizaba las peticiones registradas en las herramientas de desarrollador del navegador. **Identificaron `InvoiceDetails`** como la petición interna de `app.bind.com.mx` involucrada en la creación [el resto del informe está truncado].
|
||||
|
||||
**Lo que NO quedó documentado en ningún lado (verificado el 29-sep en repo, disco y buzón):** URL completa, método, payload, respuesta ni el manejo del anti-forgery token. Solo el nombre.
|
||||
|
||||
---
|
||||
|
||||
## 81 · Sep 10, 2026 — 1:00 PM · Llamada · "Seguimiento PAF - Prefactura" · Con Pedro: cotización 1078 (Acuntia) y captura de la petición de red de la prefactura para evaluar su réplica
|
||||
|
||||
> Participan: Pedro, Johann. Canal: Teams. Evidencia: informe de Read AI (1:21 pm), extracto (capítulos y acciones bloqueados).
|
||||
|
||||
**Resumen:** Johann y Pedro analizaron la **cotización 1078 de Acuntia** para identificar la petición de red que la UI usa al generar una prefactura y **evaluar su posible replicación manual e integración posterior**. Configuraron DevTools: caché deshabilitada, *preserve log* y columna de método [el resto está truncado]. Conclusión operativa de estas dos sesiones: para replicar la petición hace falta **una sesión web propia** (cookies + token) — Johann no tenía usuario en `app.bind.com.mx`; se pidió a Balam y llegó el 29-sep ([#83](REGISTRO.md)).
|
||||
|
||||
---
|
||||
|
||||
## 82 · Sep 15–16, 2026 · Administración · Corte de horas 10-ago → 16-sep (94.58 h), Excel de avance con fechas reales publicado en Google Sheets, y push de los tres commits de septiembre al repo del cliente
|
||||
|
||||
> Evidencia: commits `d9047de`, `69e06df`, `68aedc7` (este repo); [`../planeacion/Seguimiento-horas.md`](../planeacion/Seguimiento-horas.md); `Avance-Balam-2026-09-16.xlsx`; Sheet compartido "Avance-Balam" en Drive:/Balam.
|
||||
|
||||
39.25 h del 10-ago al 15-sep **reconstruidas con evidencia** (commits, correos, informes de Read AI) y marcadas `reconstruida` en el CSV; **seis sesiones sin bitácora** quedaron listadas como huecos — cerrados en este bloque ([#72](REGISTRO.md)–[#81](REGISTRO.md)). Etapa 2 sin ajuste Jira: 23.75 h de 38–46 estimadas; el ajuste Jira → BIND rebasó (14.75 h de 7–10) por las semánticas indocumentadas del API y cinco sesiones acompañadas. El Excel muestra fechas reales por tarea (primer y último día trabajado). Los commits `03582af`, `ed4c819` y `fbdbd18` se pushearon al repo del cliente el 15-sep.
|
||||
|
||||
---
|
||||
|
||||
## 83 · Sep 29, 2026 — 7:00 AM · Llamada · "Seguimiento PAF - Integración ERP" · Balam entrega LOGIN WEB a BIND con permisos de prefactura; el modelo de dos endpoints (externo = API, interno = UI) queda confirmado con fuente primaria ⭐🔥
|
||||
|
||||
> Participan: Pedro, Johann (Noé convocado; las cuentas son de Noé). Canal: Teams. Convocatoria de Pedro el 28-sep 5:10 pm. Evidencia: informe de Read AI (7:23 am), extracto con capítulos y acciones: [`../fuentes/2026-08-21 a 2026-09-29 - Read AI - Informes Seguimiento PAF (extractos del correo).md`](../fuentes/2026-08-21%20a%202026-09-29%20-%20Read%20AI%20-%20Informes%20Seguimiento%20PAF%20(extractos%20del%20correo).md).
|
||||
|
||||
**Resumen:** la reunión se enfocó en **validar accesos** y ejecutar una **prueba de integración ERP creando cotizaciones y prefacturas en BIND**. Pedro confirmó que su perfil estaba habilitado y que **las cuentas de Noé tienen permisos para crear facturas, prefacturas y operaciones relacionadas**. Johann solicitó las credenciales; se acordó **entregarlas en un archivo TXT** para usarlas en la aplicación. Con eso, al cierre del día **Johann ya tiene login web** a `app.bind.com.mx`. Durante la prueba apareció **un error que impide cargar la solicitud al crear una cotización** desde la plataforma; queda como acción de Johann.
|
||||
|
||||
**Puntos de acción (según Read AI):**
|
||||
- Johann — revisar el error que impide cargar la solicitud al crear una cotización en BIND.
|
||||
- Johann — crear la cotización en BIND después de corregir el error.
|
||||
|
||||
**Investigación de cierre (29-sep, solo lectura, sin tocar BIND):**
|
||||
- **El modelo de dos endpoints queda confirmado con fuente primaria.** El SDK oficial de BIND (`Bind-ERP/BindERP-Python`, cuyo swagger es el contrato autoritativo) expone **un único POST de creación de ventas**, `Invoices_AddInvoice`, con el modelo `NewInvoice`: 7 campos requeridos (`currency_id`, `client_id`, `location_id`, `warehouse_id`, `cfdi_use`, `invoice_date`, `price_list_id`) y opcionales entre los que están `is_fiscal_invoice`, `serie`, `number`, `credit_days`, `services[]`, `emails[]`, `purchase_order` y `payments[]` — **y ningún campo de tipo de documento** (`DocumentType`, `Prefactura`, `IsPreInvoice`… no existen). En todo el repo del SDK no hay un solo archivo con "prefactura", "proforma" o "remision". Explica por qué las 12 sondas y el `Number` del [#70](REGISTRO.md) fueron ignorados: no están en el contrato y el deserializador los descarta.
|
||||
- **Externo** = `api.bind.com.mx` → Remisión (`false`) o CFDI timbrado (`true`). **Interno** = `app.bind.com.mx` (ASP.NET MVC, sesión por cookie, login en `/Login/Login`) → *Acciones → Generar Venta → Prefactura*, petición `InvoiceDetails` ([#80](REGISTRO.md)).
|
||||
- En el foro público de mejoras de BIND existe una solicitud abierta "agregar PREFACTURA" (`binderp.featureupvote.com`, bloqueado por Cloudflare para lectura automática): otros clientes piden lo mismo.
|
||||
- ⚠️ **Lo que sigue sin especificarse:** URL, método, `Content-Type`, shape del payload, respuesta, cookies y `__RequestVerificationToken` de `InvoiceDetails`, y el flujo de login. La captura del 10-sep no se guardó en el repo, en disco ni en correo. Con el login propio ya se puede **recapturar sin depender de nadie**.
|
||||
|
||||
> **Lectura estratégica:**
|
||||
> - **Se abrió la vía que el #70 dejó como única salida.** Un mes después del incidente, Balam entrega la llave (login web) y autoriza la prueba con prefacturas. La prefactura por UI es un documento no fiscal y borrable: el riesgo es cero comparado con el timbrado.
|
||||
> - **Antes de codificar el cliente interno hay que escribir su contrato**, como se hizo con `Quotes_NewQuote` en el [#64](REGISTRO.md): capturar con la sesión propia, sanitizar (sin cookies ni token) y dejarlo en la bitácora. Después, `BindUiClient` con el mismo protocolo ADR-001 (dry-run → confirmación humana → verificación por lectura).
|
||||
> - **Tres riesgos abiertos:** (1) las prefacturas creadas así saldrán con `CreatedByName` = cuenta de Noé — hay que acordarlo o pedir un usuario de servicio; (2) replicar la UI es frágil ante cambios de BIND y posiblemente ajeno a sus términos de servicio — conviene pedir en paralelo el campo oficial a soporte BIND con esta evidencia; (3) las credenciales llegan en TXT: **van a `user-secrets`/`.env` gitignoreado y el TXT se destruye** (lección del token de julio, VALIDACION-API.md §8.12).
|
||||
|
||||
---
|
||||
|
||||
## Resumen ejecutivo del hilo (para contexto rápido)
|
||||
|
||||
### Estado actual (al 29-sep-2026 — Etapa 2 en producción provisional)
|
||||
|
||||
**La plataforma está publicada en https://paputec.mx/balam/** desde el 3-sep (ambiente provisional propio; Azure sigue sin entregarse, [#74](REGISTRO.md)/[#76](REGISTRO.md)) y Balam ya la opera en sesiones acompañadas: cotizaciones reales desde tickets, individuales y en lote, con `Bind:Mode=ReadOnly` fuera de sesión ([#77](REGISTRO.md)–[#79](REGISTRO.md)). **La cadena termina hoy en la cotización.** La prefactura por el API público es imposible — `false` = remisión, `true` = CFDI timbrado; incidente 2386 del 26-ago ([#70](REGISTRO.md)) — y el SDK oficial lo confirma ([#83](REGISTRO.md)). El camino es el **endpoint interno de la UI** (*Generar Venta → Prefactura*, petición `InvoiceDetails`, [#80](REGISTRO.md)), para el que Balam entregó **login web** el 29-sep. **Siguiente hito:** especificar ese endpoint con la sesión propia y construir `BindUiClient` bajo ADR-001. **Seguimiento con Pedro** (sesiones "Seguimiento PAF" a las 7:00 am o 1:00 pm; informes de Read AI de Noé). Horas al 16-sep: 94.58 h; Excel de avance en Google Sheets ([#82](REGISTRO.md)). **Abiertos:** cancelación SAT de la 2386, remisiones 1000/1001, Azure, a quién se reportan horas, y el error al cargar la solicitud al crear cotización visto el 29-sep.
|
||||
|
||||
### Datos duros confirmados por Balam
|
||||
- **BIND ERP:** API existe y es viable (confirmado 25-may). Límite 20K req/día. PAC para CFDI integrado en BIND.
|
||||
- **BUK:** ✅ tiene API (confirmado 27-may por Pedro). No es prioridad para MVP — habilita Fase 2 post-MVP. Link pendiente de recibir.
|
||||
|
||||
Reference in New Issue
Block a user