From bee2d02f5056727f0bf30e8b20745147be736b07 Mon Sep 17 00:00:00 2001 From: Johann Date: Mon, 27 Jul 2026 08:18:08 -0600 Subject: [PATCH] =?UTF-8?q?Documenta=20semana=2024-27=20jul:=20validaci?= =?UTF-8?q?=C3=B3n=20de=20prototipo=20(aprobada),=20API=20de=20Jira=20y=20?= =?UTF-8?q?avance=20de=20Etapa=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - REGISTRO #55: validación del prototipo Etapa 0 (24-jul) APROBADA; único bloqueo = definir el flujo de facturación en Jira (sesión propuesta por Araceli para el martes 28) - REGISTRO #56: sesión de API de Jira con Pedro (27-jul) — token PAF a 1 año, bandeja FAC; + seguimiento por correo del mismo día con los límites de velocidad (65k puntos/h, burst/s, por-issue) y entrega del token por Google Drive - REGISTRO #57: hilo de WhatsApp con Erika (21-27 jul) — coordinación, envío del flujo por correo y reagenda 23→24 jul; 3 imágenes inferidas - Transcripciones y correo en fuentes/; guion de validación en planeacion/ - Avance-Etapa1-2026-07-27 (nota + mensaje para Erika) y Excel del corte del 27-jul (núcleo verificado; capa de escritura en pausa por definición de Balam) - Seguimiento-horas: sesiones del 24-jul (validación) y 27-jul (API Jira) Co-Authored-By: Claude Opus 4.8 (1M context) --- bitacora/REGISTRO.md | 96 ++++ ...e prototipo etapa 0- proyec_ Transcript.txt | 506 ++++++++++++++++++ ...dinacion sesiones validacion y API Jira.md | 112 ++++ ... - API de conexión con JIRA Transcript.txt | 173 ++++++ ...ro medicion de consumo API Jira y token.md | 57 ++ planeacion/Avance-Etapa1-2026-07-27.md | 59 ++ .../Guion-validacion-prototipo-2026-07-23.md | 119 ++++ .../Plan-actividades-avance-2026-07-27.xlsx | Bin 0 -> 8630 bytes planeacion/Seguimiento-horas.csv | 2 + planeacion/generar_avance_2026_07_27.py | 146 +++++ 10 files changed, 1270 insertions(+) create mode 100644 fuentes/2026 - 07 - 24 - Validación de prototipo etapa 0- proyec_ Transcript.txt create mode 100644 fuentes/2026-07-21 a 2026-07-27 - WhatsApp - Erika coordinacion sesiones validacion y API Jira.md create mode 100644 fuentes/2026-07-27 - API de conexión con JIRA Transcript.txt create mode 100644 fuentes/2026-07-27 - Correo - Pedro medicion de consumo API Jira y token.md create mode 100644 planeacion/Avance-Etapa1-2026-07-27.md create mode 100644 planeacion/Guion-validacion-prototipo-2026-07-23.md create mode 100644 planeacion/Plan-actividades-avance-2026-07-27.xlsx create mode 100644 planeacion/generar_avance_2026_07_27.py diff --git a/bitacora/REGISTRO.md b/bitacora/REGISTRO.md index 0931bd2..02c58c9 100644 --- a/bitacora/REGISTRO.md +++ b/bitacora/REGISTRO.md @@ -971,6 +971,102 @@ Cierre de la sesión (~0.5 h real). **B6 conforme al plan:** `ITenantOwned` en l --- +## 55 · Jul 24, 2026 — 11:00 AM · Llamada · Validación del prototipo Etapa 0 — APROBADO (queda 1 definición de proceso) ⭐ + +> Participan: Erika Chávez (abre), Johann (presenta), Noe Rocha, Araceli Sánchez, Arturo Rosas. Duración ~1 h 4 min. La sesión estaba agendada para el **jueves 23-jul 7 am** pero se corrió al **viernes 24-jul 7 am** porque Araceli (dueña del proceso) tuvo un tema personal (reagenda documentada en [#57](REGISTRO.md)). Transcripción: `../fuentes/2026 - 07 - 24 - Validación de prototipo etapa 0- proyec_ Transcript.txt`. Guion usado: [`../planeacion/Guion-validacion-prototipo-2026-07-23.md`](../planeacion/Guion-validacion-prototipo-2026-07-23.md). + +**Veredicto: Etapa 0 validada.** Johann recorrió el PDF y luego el prototipo navegable (URL). Ara: *"Johann nos captó absolutamente todo lo indispensable y más… de momento no le pondría nada"*, *"Me encantó", "Sí a todo"*. Arturo: *"yo no le pondría nada más… esto es lo mínimo que necesitamos"*. Ambos aprobaron el MVP tal cual. **Queda pendiente UNA sola cosa del lado de Balam: redefinir el flujo de facturación en Jira** (ver abajo) antes de volver con Johann para hacer el MVP productivo. Erika confirmó que esto **no bloquea** a Johann, que ya está en Etapa 1. + +**El único bloqueo real — definición de proceso (no de sistema):** hoy el CIS de Jira exige que la factura se haga **antes** de cerrar el ticket, es decir el proceso de facturación ya no arrancaría desde el sistema. Hay que decidir si la ejecución (prefactura) se **dispara desde la plataforma** (lo deseable, para que el sistema optimice) o se sigue haciendo antes y solo se presenta al sistema. **Arturo pidió explícitamente que sea PREFACTURA, no timbrado automático:** validación previa (nacional vs extranjera, montos, datos fiscales) para evitar cancelaciones que el SAT observa; *"para ir monitoreando la eficiencia de la IA. Tal vez en algún futuro daremos independencia completa"*. **Ara sale de viaje mié/jue/vie; propuso el martes 28-jul para esa sesión; Erika coordina.** Es prerrequisito para que Johann conecte el frontend a la escritura. + +**Decisiones y aclaraciones que quedaron asentadas:** +1. **Cotización SIEMPRE, sin excepciones (Ara).** Incluso las **recurrentes** (contrato AXIANS 3–4 años) deben nacer de una cotización → prefactura/factura. Es un punto de control para cazar cambios (sueldos, viáticos, ajustes) y errores. *"El esfuerzo es el mismo"*: la cotización vive en BIND y se convierte a prefactura/factura con un clic. Noe lo cerró como **3 candados: cotización → prefactura → aprobación humana → timbrado.** +2. **Nada de agente de IA en este MVP** (Noe, muy vocal, lo repitió 3 veces): esto es **reglas de negocio + procesos + integración de sistemas** para homologar pantallas, no LLM. La IA llega después; el candidato claro para agente es **conciliación** (hoy 100% manual). Primero la base de proceso, *"si le metemos IA de inicio va a ser una fiesta"*. Johann alineado: el MVP asienta el proceso para montar los modelos encima. +3. **Roles:** la plataforma ya los soporta; por ahora Ara y Arturo ven todo, se acotan cuando entre un analista. +4. **Dashboard:** las 4 tarjetas son propuesta, todo customizable. *"Qué necesita atención"* se alimentaría de Jira + estatus de facturación. Posible acople con el Power BI de aging de Pedro (no duplicar reporteo). +5. **Fuente única = BIND (Vine) o Jira.** No hay fuente alterna. Cartera vencida sale de BIND; lo que no esté en BIND requeriría carga/capa manual. +6. **Un ticket = una factura (hoy).** Caso ACUNTIA/Accions: un solo ticket con un Excel de 40–48 facturas. Queda **abierto** si se maneja como ticket-por-factura o un ticket con múltiples hijos (definición de proceso, va con el punto del bloqueo). +7. **Todo nace en Jira — política de empresa:** *"Lo que no está en JIRA no se procesa."* Ni correo ni mensaje; incluso los correos se reenvían a una dirección que auto-crea el ticket. +8. **Envío con particularidades por cliente:** validado y les gustó (CEMEX bloqueado por faltar Excel de horas; ACUNTIA = zip con PDF+XML+estado de cuenta). El **módulo de configuración** de reglas de envío queda **cerrado/hardcodeado al inicio**; si cambian reglas, se cobra como horas de servicio. No se desarrolla ahora. +9. **NAFINSA / cadenas productivas (solo CEMEX):** facturas ya *programadas para pago* (p. ej. cae 24-sep, 120 días) que **no existen como estatus en BIND**. Quieren una **capa/pantalla extra "programado para pago"** para planeación financiera (Arturo: *"la cerecita del pastel"*). Idea de Ara: **ticket Jira automático cada 15 días** para revisar el portal Nafinsa, adjuntar Excel/pantallazos y alimentar cuentas por cobrar, haciendo match por folio. A evaluar con Johann. +10. **Fee:** tolerancia configurable por cliente (% o fijo); se muestra como *"pagada pero con tolerancia"*. (Consistente con [#54](REGISTRO.md): el asiento contable es del despacho, la plataforma solo detecta/etiqueta.) +11. **Recordatorios internos en el MVP:** D+1 → Arturo, D+15 → Araceli. Los **correos al cliente (D+5, D+30) NO son alcance** ("no está definida la regla"). Excepciones de seguimiento por cliente contempladas. +12. **Bitácora/auditoría:** *"Me encanta, sí a todo."* + +**Observaciones que anotó Noe sobre el prototipo:** (a) un ticket rotulado "facturación nacional" era extranjera → pedía XML+PDF cuando extranjera es solo PDF (ajuste menor); (b) los estatus del prototipo son placeholders previos a explorar Jira ("listo para facturar" ≈ "facturado" en Jira real) y se adaptarán al flujo que Balam defina. + +**Cierre y próximos pasos:** +- Balam hace **teamback** para separar *must* vs *nice-to-have* y define el flujo de facturación/prefacturación (**sesión martes 28-jul, Erika coordina**). +- Antes del **go-live** habrá una **prueba muy observada de prefacturación** (primera escritura real sobre BIND), paso a paso y validada. +- **Sesión con Pedro para el API de Jira** queda encaminada (se materializó el 27-jul, [#56](REGISTRO.md)). +- Johann: **montar el frontend**, conectarlo al backend ya construido (cliente BIND, auth, multi-tenant, BD) y hacer las pruebas. + +> **Lectura estratégica:** +> - **Etapa 0 cerrada en la práctica** con validación entusiasta de los dueños del proceso (Ara y Arturo) y respaldo de Noe. El entregable de Etapa 0 quedó aprobado; el único hilo suelto es una **definición de proceso de Balam**, no una carencia del prototipo. +> - **"Cotización siempre" es una decisión firme** que simplifica la capa de escritura (B7): un solo camino cotización→prefactura→aprobación→timbre, sin ramas de excepción para recurrentes. Elimina ambigüedad que la agenda temía. +> - **PUE/PPD no se retomó** en esta sesión — sigue abierta desde [#52](REGISTRO.md) (1,374 facturas históricas todas PUE). Reintentarla con Arturo en la sesión del 28-jul o con el flujo Jira. +> - **Dos capacidades nuevas asomaron fuera del MVP core:** "programado para pago"/planeación financiera (Nafinsa) y el espacio "comercial" en Jira para generar cotizaciones. Ambas son candidatas a ampliación (horas extra), útiles para el pipeline comercial, pero **no deben inflar el MVP** — es justo lo que Noe pidió filtrar con el teamback. +> - **La prueba observada de prefacturación es el hito de riesgo** antes del go-live: es la primera escritura real sobre producción. Los candados acordados (dry-run, confirmación humana por factura, feature flag) son el seguro. + +--- + +## 56 · Jul 27, 2026 — mañana · Llamada · Sesión API de Jira con Pedro: token comprometido y bandeja "Facturación" (FAC) identificada ⭐ + +> Participan: Noe Rocha, Erika Chávez, Pedro Ayala (TI, dueño de Jira), Johann. Duración ~12 min. Transcripción: `../fuentes/2026-07-27 - API de conexión con JIRA Transcript.txt`. Es el Discovery de API que quedó encaminado el 22-jul ([#54](REGISTRO.md)) y ratificado el 24-jul ([#55](REGISTRO.md)). + +**Objetivo (Noe):** el Discovery mostró que buena parte del proceso de facturación llega por Jira, conectividad que originalmente no se contempló y que ahora **sí será necesaria**. Pedro explica cómo se conecta hoy vía API. + +**Lo que confirmó Pedro:** +- Usa el API de Jira para varios tableros de TI (limpieza de usuarios, aprobadores, conectores, SLAs). Funciones: crear y consultar actividades/tickets, aprobaciones, documentos adjuntos, cambio de estatus. **Es de lectura Y escritura — todo accionable** ("cualquier creación que se haría manual se puede hacer por API"). Cubre el CRUD que Johann necesita. +- **Token comprometido:** Pedro genera una API key llamada **"PAF" (Plataforma de Automatización Financiera)**, **expiración a 1 año — 27-jul-2027**. La envía **por correo en TXT** junto con la **documentación de desarrolladores de Atlassian** (informativa). Ya la tenía lista al cierre de la llamada. +- **Límites de consumo:** a diferencia de BIND (20K/día), Pedro cree que Jira **no tiene tope por día**; lo investigará en Atlassian y lo revisa con Johann. Noe quiere saber el límite de transacciones por escritura/consulta para planear la operación. +- Los tokens se generan desde la cuenta de Pedro, diferenciados por nombre; buena práctica rotarlos. + +**Identificación de dónde consultar (aclaración importante):** no es "tablero" (eso es Power BI) sino el **Space** de Jira. Los tickets de facturación viven en la bandeja/space **"Facturación", con llave `FAC-`** + número. Otras bandejas: Administración General (AG), ITS (DITCM), Recursos Humanos (RH), Facturación (FAC), HD. **El API es global** (extrae de todas), pero la que importa es **Facturación**, que funciona como **bandeja "padre"**: procesos que se cierran en RH o Administración General **caen en Facturación**. Este es el insumo que Johann pidió el 24-jul para saber de dónde extraer los tickets. + +**Próximos pasos acordados:** +- **Pedro** → enviar por correo: token TXT (PAF) + documentación Atlassian; investigar límites de consumo. → **CUMPLIDO el mismo día (ver seguimiento).** +- **Johann** → revisar la documentación de Jira/Atlassian; con la key, integrar la consulta al prototipo. Construir un **script de consulta** y también scripts de **creación/edición/eliminación** sobre un registro de prueba. Noe: no existe un CRUD previo por API; cuando llegue el momento se hace una **prueba en vivo** de creación. **Johann es el checkpoint** — avisa cuando necesite prueba o tenga dudas. + +**Seguimiento — correo de Pedro del mismo día (27-jul, 7:40 am; CC Noe y Erika):** `../fuentes/2026-07-27 - Correo - Pedro medicion de consumo API Jira y token.md`. Johann acusó recibo ("Enterado, muchas gracias Pedro! Saludos"). +- **No hay límite de volumen** ("X llamadas al mes") ni costo extra de licencia por usar la API. Hay **3 límites de velocidad en paralelo**, cualquiera devuelve **HTTP 429** (`RateLimit-Reason` indica cuál): + 1. **Cuota por puntos/hora:** 1 punto base + 1 por objeto de dominio (issues, proyectos) o 2 por objeto de identidad (usuarios, grupos, roles); **las escrituras solo cobran el punto base**. Bolsa por defecto **65,000 puntos/hora**. + 2. **Burst por segundo:** 100 req/s GET y POST, 50 PUT y DELETE, bucket por endpoint y por tenant. Consulta de clientes de service desk topada a **5/s**. + 3. **Por issue en escrituras:** 20 ops/2 s y 100/30 s sobre un mismo ticket. +- **No existe dashboard de consumo** (limitante de Atlassian): consola de desarrolladores solo muestra el tier de apps propias; el detalle por token exige **Atlassian Guard Premium** (licencia aparte); las apps de Marketplace estiman por muestreo. **Única fuente confiable = headers de respuesta:** `X-RateLimit-Limit/Remaining/NearLimit` (NearLimit se activa con <20% de capacidad) y en 429 además `X-RateLimit-Reset`, `Retry-After`, `RateLimit-Reason`. +- **Token entregado** vía enlace de Google Drive (carpeta compartida). ⚠️ Tratar como credencial: mover a user-secrets/Key Vault, no dejar en texto plano. + +> **Lectura estratégica:** +> - **Desbloqueo clave para B7/Jira→BIND:** con token de escritura a 1 año y la bandeja FAC identificada, se habilita tanto la lectura de tickets como la automatización Jira→cotización BIND estimada en ~10 h ([#51](REGISTRO.md)). El API confirmado como read+write despeja el mayor riesgo de la integración. +> - **"Facturación como bandeja padre"** es un dato de arquitectura relevante: consultar solo FAC puede no bastar si el disparador nace en RH/AG y cae en FAC — validar en las pruebas si conviene escuchar la bandeja padre o rastrear los procesos origen. +> - **Límite de consumo resuelto (correo 27-jul):** no hay tope mensual; 3 límites de velocidad (puntos 65k/h, burst/s, por-issue en escrituras) sin dashboard nativo → el sync debe **autorregularse leyendo los headers `X-RateLimit-*`** (pausar en NearLimit, respetar `Retry-After` en 429). **Las escrituras son baratas en puntos** (solo el base), lo que favorece la capa de escritura frente a las consultas de identidad (2 puntos c/u). +> - **Pendiente de proceso aún abierto:** qué estatus de Jira dispara qué (facturación vs cotización) sigue amarrado a la definición del martes 28-jul ([#55](REGISTRO.md)) — la conectividad ya está, la regla de negocio no. + +--- + +## 57 · Jul 21–27, 2026 · WhatsApp Erika ↔ Johann · coordinación de sesiones, envío del flujo de facturación y reagenda 23→24 jul + +> Hilo de coordinación que **complementa** la parte de fondo del 21-jul ([#51](REGISTRO.md)) y enlaza la sesión de reglas del 22-jul ([#54](REGISTRO.md)), la validación del 24-jul ([#55](REGISTRO.md)) y la sesión de API de Jira del 27-jul ([#56](REGISTRO.md)). Transcripción completa (con imágenes inferidas): `../fuentes/2026-07-21 a 2026-07-27 - WhatsApp - Erika coordinacion sesiones validacion y API Jira.md`. + +**21-jul (tarde):** Johann propuso compartir las horas por Excel mientras se habilita Jira; Erika pidió el formato **entregable + actividad + horas por etapa**. Erika cuestionó si lo de las cotizaciones ya estaba (📷 captura) → Johann aclaró que **crear cotizaciones sí está en el MVP** y que lo nuevo (Jira genere la cotización en BIND automáticamente) requeriría acceso técnico a Jira + escritura controlada en BIND. Erika confirmó por su cuenta que Jira dice **"fuera de alcance"**. + +**22-jul:** Erika se disculpó por **no asistir a la sesión de reglas** de esa mañana ([#54]; avisó a los ingenieros para que la tomaran igual). Preguntó **dos veces si se ajustará la propuesta** por el cambio de la integración Jira → **compromiso de Johann: enviar el conteo de horas + la propuesta ajustada "entre hoy y mañana" (para el 23-jul).** Erika propuso la **sesión de API de Jira** con Noe y Pedro y confirmó que **ya envió por correo el flujo de facturación de Jira** (2:26 pm). + +**23-jul (reagenda):** por un tema personal de **Araceli** (dueña del proceso), la **validación del prototipo** se movió de jueves 23-jul 7 am a **viernes 24-jul 7 am**. La **sesión de API de Jira** se movió de viernes 24-jul 7 am → 7 pm → finalmente **lunes 27-jul 7 am** por disponibilidad de Pedro. Erika preguntó si "esta actividad se acabó ayer" (📷 captura del plan) → Johann: sí, **falta la prueba de escritura en BIND** pero ya está. + +**24-jul:** intercambio de arranque; se conectan a la sesión de validación ([#55]). + +**27-jul (mañana):** Erika pidió **los avances de la Etapa 1**; Johann preguntó si **ya existe el Jira del proyecto** — justo antes de la sesión de API donde Pedro compromete el token PAF ([#56]). + +**Pendientes que deja el hilo:** +- [ ] Johann — **enviar conteo de horas (Excel: entregable + actividad + horas por etapa) + propuesta ajustada** por la integración Jira→BIND. ⚠️ Comprometido para el 23-jul — **verificar si ya se envió.** +- [ ] Johann — **entregar avances de Etapa 1** solicitados el 27-jul. +- [ ] Conservar el **correo del flujo de facturación de Jira** (Erika, 22-jul) como evidencia/insumo. + +> **Nota de imágenes:** las capturas no vienen en el volcado; se infieren tres adjuntos por los deícticos ("esto", "esta actividad") — cotizaciones (21-jul 12:58), "fuera de alcance" (21-jul 1:03, confianza media) y actividad del plan (23-jul 11:29). Detalle en el archivo de `fuentes`. + +--- + ## Resumen ejecutivo del hilo (para contexto rápido) ### Datos duros confirmados por Balam diff --git a/fuentes/2026 - 07 - 24 - Validación de prototipo etapa 0- proyec_ Transcript.txt b/fuentes/2026 - 07 - 24 - Validación de prototipo etapa 0- proyec_ Transcript.txt new file mode 100644 index 0000000..9993495 --- /dev/null +++ b/fuentes/2026 - 07 - 24 - Validación de prototipo etapa 0- proyec_ Transcript.txt @@ -0,0 +1,506 @@ +Validación de prototipo etapa 0- proyecto integración IA Balam +Fri, Jul 24, 2026 + +10:44 - Arturo Rosas Hernandez +Está tranquila, pero constante. + +10:46 - Arturo Rosas Hernandez +No ha dejado de llover. No sé, por allá. Por aquí sí está. Mucho, mucho, mucha agua. Pero de a poquito. ¿Qué tal, Araceli? + +10:57 - Unidentified Speaker +Buenos días. + +10:58 - Unidentified Speaker +¿Cómo estás? + +10:59 - Unidentified Speaker +Buenos días, Karol. + +11:01 - Unidentified Speaker +Buenos días. + +11:02 - Araceli Sanchez Jimenez +Ya, ya sé. + +11:03 - Araceli Sanchez Jimenez +Buenos días. + +11:04 - Araceli Sanchez Jimenez +Oigan, Noe. Ah, ya está. Bueno. Listo. Ya estamos todos listos. ¿Listo? + +11:10 - Erika Chavez +Bueno, este, esta sesión es para ver lo de la validación de la etapa cero, que es el prototipo navegable que aquí mi compañero Johann realizó. + +11:24 - Johann +Entonces, el foro es todo, Johann, adelante. De acuerdo, voy a compartir pantalla y voy a presentar el prototipo. Cualquier duda me pueden preguntar. Gracias. Aquí pueden ver mi pantalla. + +11:40 - Unidentified Speaker +Sí, ya. + +11:41 - Johann +Ok, les voy a presentar el PDF que les compartí, en donde hay capturas del prototipo y una pequeña descripción. Voy a ir explicando cómo es cada pantalla y el proceso que se reflejó en este prototipo. Entonces, este proceso consta de cinco pasos en cuanto a la facturación. Todo comienza en una solicitud en Jira. Después de la solicitud en Jira, se pasa a una cotización en Bind, pasa a prefactura y, antes del CFDI y la facturación, necesita una aprobación humana. Hay algunas reglas que se levantaron durante el Discovery, durante las sesiones, como, por ejemplo, el PPD por defecto, y PUE solo consciente. También la regla prefactura que siempre va a estar antes de timbrar, el IVA de 16% nacional, la cotización al principio de manera obligatoria y un recordatorio interno de monosías de los clientes. Esto es para el proceso de facturación. + +12:54 - Noe Rocha +Estamos hablando del proceso de facturación, el primero que se está abordando como parte de la automatización que se está buscándose las diferentes fuentes de información en un punto único de ejecución. + +13:12 - Unidentified Speaker +Así es. + +13:13 - Johann +Comenzamos por esa pantalla que es la de iniciación. De esta manera, cada persona logueada verá las facturas que le corresponden y podrá ver todo lo relacionado a su cuenta. + +13:30 - Araceli Sanchez Jimenez +Aquí ya tengo una pregunta. Aquí en el inicio de sesión, me imagino que hay un solo usuario. O sea, todos vamos a tener, bueno, o los que demos acceso aquí, vamos a ser administradores, ¿no? O sea, no va a haber privilegios. Es nada más, o sea, yo tengo y si yo entro o Juanito o Pedrito, vamos a ver absolutamente todos lo mismo. + +13:57 - Johann +Aquí, por ejemplo, como a ustedes les convenga más, necesitan que un usuario tenga más acceso que otro, ya está preparada la plataforma para los roles. Ah, super. OK. Perfecto. Muchas gracias, Johann. + +14:09 - Araceli Sanchez Jimenez +O sea, de momento, como somos nada más dos personas que llevamos todo este tema, digo, podemos ver todo. Pero yo nada más viendo a lo mejor en algún momento que a lo mejor tengamos un analista que vea cierto punto, pues no necesita ver todo lo demás, ¿verdad? Es nada más un tema de cultura general para saber qué Ahora comenzamos con este apartado del dashboard, en donde se muestran estos cuatro valores en forma de cartas y que se necesita atención. + +14:42 - Johann +Entonces, en esta pantalla se busca que estén a la mano los datos, el resumen de los datos de las facturas y la cartilla de datos. Como por ejemplo, facturado en julio en pesos mexicanos y dólares, cuántas facturas emitidas hay y cuántas pendientes, cuánto, qué cantidad hay en cartera vencida. También aquí hay algunos ítems de qué se necesita atención y qué responsable hay y cuánto tiempo tiene de antigüedad. Además, aquí debajo se muestra en forma de dashboard, la facturación mensual en forma de gráfico de barras y facturas por cliente de mayor a menor. De esta manera se puede ver un resumen de los datos de forma resumida. Aquí habría que validar qué datos ustedes quieren ver. Esta es una propuesta de cómo se vería y algunos datos que podrían interesar. Pero ustedes me comentan qué datos son los que hoy día quieren ver, porque entiendo que también bien comentado que ya tenían un dashboard en Power BI con Pedro, entonces de pronto pudiéramos ahí acoplarlo en esta parte. + +16:02 - Johann +Oye Johann, una pregunta. + +16:03 - Araceli Sanchez Jimenez +Aquí en los datos que pones, ¿qué necesita atención? ¿Estos los jalaste de Jira? ¿Serían los tickets que los jalas de Jira? ¿O cómo determinas o sacas esta información? Sí, podría. + +16:16 - Johann +Jira y el estatus del estado de facturación podría ser un criterio para mostrarlos aquí Ya. + +16:22 - Unidentified Speaker +Ya, ok, ok, ok. + +16:24 - Araceli Sanchez Jimenez +Y realmente, como tú dices, esto es customizable, ¿no? O sea, nosotros lo podemos decir, oye, Johann, esta información ponla aquí, por ahí, digo, ok, perfecto. Sí, justamente. Pero de entrada, en la propuesta, tú propones mostrarlo así. Así es. + +16:41 - Johann +Si ustedes me comentan, de pronto, que estos datos no son los que les interesa ver y ocupan otros, o visualizarlos de otra manera, y lo acomodamos. Mi propuesta es ver en esa pantalla de Dashboard un resumen de los datos que ustedes quieran ver. Pero sí, como me comentas, cualquier detalle a cambiar lo ajustamos sin problema. + +17:05 - Araceli Sanchez Jimenez +Oye, a lo mejor me estoy adelantando, pero, por ejemplo, aquí en el tema de la cartera vencida, en este tema nosotros tendremos que alimentarlo manual, o sea, bajar todos los estados se cuenta de VanNorte de manera diaria o cómo está alimentado? + +17:25 - Johann +Si no está en Bind, ahorita mismo se puede sincronizar desde Bind, pero si no se puede sincronizar desde Bind, sí tendría que hacerse una carga al sistema. + +17:41 - Noe Rocha +O sea, en este momento La cartera vencida es lo que informe Bind. Sí. Específicamente la fuente de información de esto es o es Bind o es Jira. No hay una fuente alterna. + +18:00 - Araceli Sanchez Jimenez +Así es. Perfecto. Ya, ya entiendo. Ok. + +18:04 - Unidentified Speaker +Gracias. + +18:04 - Unidentified Speaker +Excelente. + +18:05 - Johann +Después del Dashboard pasamos a esta pantalla de facturación. Aquí estamos en el módulo de facturación. Aquí venían las solicitudes de facturación que vienen desde Jira. Aquí cada registro corresponde a un ticket levantado en Jira, en donde mostramos la información y el estatus que hay en Jira. Y ahora, de esta manera, se pueden ver todos los tickets de Jira en un solo lugar, que es aquí en la plataforma. Y poder llevar el seguimiento desde aquí. + +18:44 - Araceli Sanchez Jimenez +Oh, wow. + +18:45 - Noe Rocha +Además aclarando que los status son status, no como aparecen actualmente en Jira, porque este prototipo fue antes de explorar los flujos de Jira. Porque, por ejemplo, ese status que dice listo para facturar en Jira es facturado, si mal no recuerdo. Nada más para hacer la observación, pero como prototipo, Esto es una propuesta y se va a adaptar a los flujos que nosotros definamos. + +19:15 - Johann +Sí, justamente. Muchas gracias, Noe. Así es. Aquí en estatus iría reflejado el proceso que ustedes ya llevan. + +19:23 - Araceli Sanchez Jimenez +Ok. Perfecto. De acuerdo. + +19:25 - Johann +Entonces, aquí... Aquí a la derecha hay un botón de ver detalle. Y cuando se le da click, podemos nosotros ver de este ticket, así como se lleva algunos archivos adjuntos. Y desde aquí se va a poder iniciar la facturación. Y ahora, en esta parte, es en donde también necesitaremos ver el API key de Jira y toda esa parte para comenzar a sincronizar las facturas. Y ahora, cuando se tiene esta parte, y cuando ya se revisó el ticket de Jira, ahora sí, aquí también podemos ver este ticket desde Jira, si se quiere ver desde la plataforma de Jira. Y desde aquí tenemos la oportunidad de comenzar la facturación. + +20:23 - Araceli Sanchez Jimenez +Yo aquí tengo una pregunta, es como de funcionamiento. Normalmente, o sea, levantamos un ticket en es Jira, un ticket por factura, no? Pero, por ejemplo, en el caso de Accions es un ticket y ese contiene un Excel y ese Excel tiene N cantidad. O sea, ese Excel puede tener un varia el número, pero 40, 45, 48 facturas. Pero no abrimos un ticket por las por Entonces, ¿tendría la guía la habilidad de decir OK, es un ticket, leer el archivo en Excel y decir OK? Entonces, ¿va a ser una factura por cada columna que haga? + +21:05 - Johann +No, ahora mismo sería una factura por ticket. + +21:09 - Araceli Sanchez Jimenez +OK. + +21:09 - Noe Rocha1 +Ahora mismo, a ver, ahora mismo, ¿cómo está el proceso, verdad? ¿Hay ciertos asegúnes que habría que ver cómo los vamos a manejar? Por ejemplo ese particular, en donde es un solo ticket con múltiples facturas. Entonces tendría que evaluar cómo hacerlo, si lo vamos a llevar a ticket por factura o un ticket con múltiples facturas, con múltiples hijos. Pero aquí por ejemplo hay un tema que me gustaría platicar con ustedes, porque el proceso como se definió Arturo y Araceli es que cuando Pone el proceso de GIRA para facturar como está en la CIS. La CIS de hoy es que la factura debe hacerse antes de que se cierre el ticket. Por lo tanto, no iniciaría el proceso de facturación desde el sistema, sino que desde antes se tiene que estar haciendo. + +22:06 - Araceli Sanchez Jimenez +¿Sí me explicó? No. A ver, más lento. + +22:09 - Noe Rocha +A ver un ejemplo. Arturo tiene un proceso de facturación. Ábrete, GIRA, por favor, para ver tus casos. Vamos a pasarlo muy bien. Gráfico. Voy a quitar la pantalla aquí tantito, Johann, Arturo. Entonces, por ejemplo, Arturo recibe un ticket. Ahorita vamos a ver el flujo. ¿Sí? Beta facturación, Arturo. Y esto sí tendríamos que definirlo, ¿verdad? Porque es una definición de proceso, no es una definición del sistema. + +22:39 - Araceli Sanchez Jimenez +Ah, mira, justo esta es la que te digo. Tenemos la factura es un solo ticket, pero si tú le das clic son múltiples facturas. + +22:50 - Noe Rocha +No, es que ahí yo veo un error porque dice facturación nacional y es extranjera. + +22:57 - Unidentified Speaker +Ah, invalidación nacional. + +22:58 - Noe Rocha +Entonces te va a pedir el xml y el pdf cuando solamente es el pdf. Bueno, independientemente de eso voy al punto que quiero explicar. Vámonos a cualquier flujo de facturación. ¿Facturación, Arturo? + +23:12 - Unidentified Speaker +Dale clic donde dice facturado y dale ver flujo. + +23:17 - Noe Rocha +Muy bien, y dale si quieres un zoom. Lo vamos recorriendo hacia arriba. Aquí me va a tratar de explicar gráficamente, a ver si me va a entender. Primero, se genera el ticket para la facturación. Por cualquier área que necesite un proceso o por un proceso ya automatizado de facturación, como son las recurrencias. Segundo, se pasa a un estatus de abierto. Después de eso se va al proceso de facturación. ¿Qué quiere decir esto? Que aquí en esta parte, en este proceso de facturación, ya se fue a Bain a hacer la factura. ¿Se explicó? Entonces, Si nos devolvemos a la pantalla de Johann, Johann tiene desde ahí que se haga la facturación. + +24:13 - Araceli Sanchez Jimenez +Entonces... Oye, yo tengo una duda, porque por ejemplo en Vine hay una diferencia entre prefactura y factura. Entonces, en este caso, ¿es ya la factura en sí o es una prefactura? La diferencia es que no está timbrada. O sea, generalmente nosotros hacemos prefacturas para darle un doble Y ya una vez que le dijimos que sí, entonces ya la timbramos con el SAT. Aquí, en el proceso que ustedes están considerando en proceso de facturación, ¿ahí es ya facturarla, ya timbrarla? + +24:44 - Noe Rocha +No, porque este proceso es lo que se va a definir con las reglas de negocio nuevas que vamos a hablar, que es el propósito de esto, ¿no? Es decir, ¿cómo la vamos a hacer? Porque si antes dijimos que el proceso de facturación de Jira era, aquí ya tengo que tener la facturación, entonces vamos a tener que hacer un ajuste. O lo hacemos aquí y luego se lo presentamos al sistema, lo cual no sería lo práctico porque la intención del sistema es que el sistema nos ayude a optimizar, a hacer las cosas, ¿no? O definimos que en esta parte del proceso de facturación sea donde se dispare esa ejecución ahora sí. En la pantalla de Johann. ¿Sí me explicó? No sé si me estoy explicando. + +25:32 - Arturo Rosas Hernandez +Sí, sí, sí, estoy de acuerdo. + +25:35 - Arturo Rosas Hernandez +Nada más que sí es muy importante. Bueno, como dices, ahorita lo estamos definiendo. Sí, sería muy importante que sea prefactura. ¿Para qué? Justo, justo, justo para continuar con este flujo, que es bueno en proceso de facturación. Sabemos que inicia en Bind, pero debe haber una validación de justo de lo que acabas de ver, no de que sí nacional y a lo mejor la generó extranjera o es extranjera y la genera nacional y después pues hacer una validación nacional extranjera y y revisar no revisar que los datos sean correctos que no haya ninguna inconsistencia de que los los el tema fiscal esté registrado correctamente los montos las descripciones etcétera sean todas correctas entonces pero sí que hay una validación previa y que no caigamos en incumplimiento porque se supone cuando generas demasiadas facturas y cancelas demasiadas facturas, también puede ser observado por el SAT. Entonces, evitar en la medida de lo posible la cancelación de facturas como tal. Por eso es necesario que lo que haga la herramienta sea para facturas, para poder revisar. Tal vez en algún futuro ya daremos independencia completa y pediremos que facture directamente. Pero por ahora, para ir monitoreando el uso o la eficiencia de la IA, si tendría que ser ProFacture. + +26:57 - Noe Rocha +Es que recordemos algo, este flujo de Jira, no me quiero atorar mucho aquí porque hay más pantallas que explorar, pero sí tenemos que volvernos a Arturo y a Araceli para redefinir cómo va a quedar este flujo, porque dependiendo de cómo quede este flujo es cómo vamos a ejecutar en el modelo que Johann nos está poniendo sobre la mesa, pero no es algo ni que Johann ni mío que definimos es cómo el proceso lo vamos a definir para el uso dentro del área de facturación. + +27:30 - Araceli Sanchez Jimenez +Ok, entonces si quieres lo dejemos pendiente y si quieres nada más, ya que Erika nos ayudé a coordinarlo, yo salgo de viaje otra vez el miércoles jueves y viernes no voy a estar, entonces si lo podemos ver el martes estaría perfecto porque el lunes ya lo tengo saturado, para que ya no... Porque de esto depende que Johann pueda seguir avanzando, ¿no? + +27:54 - Noe Rocha +Va a avanzar en otras cosas, pero como tal, el prototipo en esta parte está saturado por esta definición de nosotros. + +28:00 - Erika Chavez +Ok, de hecho Johann sigue, ya está en la etapa 1, este es lo de la etapa 0, el entregable, entonces en cuanto él ya le... Ya tiene indicaciones en cuanto a él le detenga algo, pues me va a levantar la mano, pero si esto no le detiene a Johann para seguir avanzando en la etapa 1. Sí. + +28:18 - Unidentified Speaker +Gracias. + +28:19 - Noe Rocha +Esta es una regla de negocio, regla de nosotros. Hay que definirla. + +28:27 - Unidentified Speaker +Adelante, Johann. + +28:29 - Johann +Aquí, de acuerdo. En esta parte de iniciar facturación, voy a compartir pantalla del prototipo navegable, que es este que les compartí. Entonces, en... Solicitud de gira, al abrir una solicitud, después... + +28:50 - Arturo Rosas Hernandez +Creo que no vemos tu pantalla. Yo no la veo. + +28:56 - Unidentified Speaker +Listo, ¿la pueden ver? + +28:58 - Johann +Listo, ahora sí. + +29:00 - Arturo Rosas Hernandez +Ahora sí, pero vemos a nosotros mismos. Listo. + +29:04 - Noe Rocha +Este ya es el prototipo navegable. + +29:07 - Noe Rocha +O sea, no es el PDF, es como tal el URL. + +29:15 - Unidentified Speaker +Así es. + +29:16 - Johann +Aquí estoy dentro de una facturación. Me fui aquí a solicitudes Jira y abrí un ticket de Jira. Ahora, aquí, al iniciar una facturación, se me abrirán estos pasos para completar desde la cotización hasta la aprobación humana que timbra la factura. Ahora, aquí, cada ticket tendrá una cotización. En Bind. Puede ser que se cree por parte comercial o del despacho, entiendo que era quien creaba estas cotizaciones o quien las quería, o el sistema puede crearlas automáticamente utilizando... Apenas se crea el ticket, por ejemplo, va a Bind y lo crea. Después se ligan, no? Ese ticket y esa cosa. Eso estaría genial. + +30:15 - Araceli Sanchez Jimenez +Quisiéramos un ticket en gira porque, por ejemplo, ahorita ese Johann lo hacemos manual, o sea, yo generalmente este soy la parte comercial, entonces yo me meto y como ya están pre configurados los clientes, o sea, sí debe de haber un pre requisito, verdad que ya estén dados de alta en el RP, pero una vez así te vas a cotización y entonces yo escojo los diferentes rubros y ahí ya yo hago la cotización, que es algo muy rápido y ya con esa cotización generalmente ya en los tickets para facturación anexa esa cotización para que facturación nada más haga la búsqueda y pues la convierte en prefactura lo necesario, pero si con levantar el ticket, ya se genera la cotización en el sistema estaría más que genial. + +30:55 - Arturo Rosas Hernandez +De hecho, perdón por la interrupción, pero de hecho ayer, justo ayer en la comida platicábamos Pedro y yo, que yo le decía que en algún momento se fuera preparando porque yo sugería que hubiera un espacio para comercial con su debido proceso en gira. Entonces, si ya tenemos facturación, si ya tenemos cuentas por pagar, cuentas por cobrar RH, etcétera, creo que vamos a tener que crear un espacio para comercial y en ese espacio de comerciales, donde subiríamos los tickets, es donde la IA, que habrá que irle poniendo un nombre a la IA para nombrarla como herramienta. Bueno, a la IA va a ir a buscar los tickets y de donde va a tocar tomar la información para generar la cotización. Eso justo estábamos, se lo prometo, estábamos platicándolo Pedro y yo ayer en la hora de comida. Entonces creo que habrá que considerarlo también como parte de la regla de negocio, como dice Noe. Para dejar todo ordenado. + +31:51 - Noe Rocha +Disculpen porque lo mencionan mucho, pero sí quiero ser muy vocal de lo que estamos viendo. Este es un desarrollo y todavía no está dentro de este desarrollo, en dentro, enbebido en este desarrollo, agentes LLM. Lo que están son reglas de negocio de procesamiento de información e integración con diferentes sistemas. ¿Para qué? Para homologarlo a pantallas. Entonces sí quiero dejar muy claro, no es un agente, es un LLM que está haciendo todo tras BarbaLimna. Es un desarrollo que sí está pensado y sí lo hablamos con Johann, que en un cierto momento le íbamos a tener que meter LLMs, pero como esto todavía no está digamos que en el scope inicial todavía no está el agente. Sí está entendido que lo vamos Pero para esto, que es simplemente regla de negocio y proceso, no es IA. + +32:50 - Araceli Sanchez Jimenez +Nada más quiero aclararlo. En esto, en todo lo que nos han explicado, o en esto, es de preparación, aprobación y emisión de CFDI. + +33:00 - Arturo Rosas Hernandez +En general, en todo. + +33:02 - Araceli Sanchez Jimenez +En general, yo fue lo que entendí también. Entonces esto no es IA. + +33:08 - Noe Rocha +No, es desarrollo. Es desarrollo... Con integración de pantallas. + +33:12 - Araceli Sanchez Jimenez +Ah, y yo pensé que esto era agente de IA. No, no, no, no. + +33:17 - Noe Rocha +Esto es desarrollo a la medida que sí, sí va a tener un componente de IA, pero en este momento todavía no va a estar, porque esto se resuelve con reglas y con procesos. Todavía no es necesario meter un agente como tal para hacer, pues, todas las, todo esto. Sí, lo están mencionando mucho. Y nada más aclarando ese punto, Johann, sí tenemos la intención de meter agentes, pero en este momento es regla de negocio con procesos e integración de sistemas. ¿Por qué? Porque ahorita tenemos todo desvinculado y todo lo tenemos que hacer manualmente, con diferentes pantallas, diferentes procesos, diferentes cálculos. Pero esto, como tal, lo que va a venir a hacer es, va a pivotear todos los sistemas para hasta automatizarlo. Ok. A través de reglas y procesos. Sí. Muy bien. No sé si quede claro. + +34:12 - Unidentified Speaker +Sí. + +34:12 - Unidentified Speaker +Sí. + +34:13 - Noe Rocha +Johann, ¿quieres complementar algo de lo que comenté? + +34:17 - Johann +Sí, justamente en este MVP se busca asentar el proceso que ustedes tienen para en un futuro implementar los modelos ya sobre este sistema bien fundamental. + +34:30 - Araceli Sanchez Jimenez +Esta es la base. + +34:31 - Noe Rocha +Sí, necesitamos una base de un proceso bien claro de cómo va a ser, porque si le metemos IA de inicio va a ser una fiesta. + +34:41 - Araceli Sanchez Jimenez +Y qué haría la IA que no hace, o sea, qué plus nos daría la IA sobre esto? + +34:47 - Araceli Sanchez Jimenez +Ponme un ejemplo. + +34:48 - Noe Rocha +A ver, Johann, ayúdame con esta pregunta, porque ahorita de inicio a mí lo único que lo tengo claro que a lo mejor cosas como una gente que yo le pueda mandar información para que me lo procese ya dentro del sistema, ya no que yo tenga que estar interviniendo todo el tiempo manualmente. + +35:04 - Johann +Pero con una regla, con una regla de vas a hacer A, B, C, D, E, A, B, C en este sistema, por ejemplo, se pudieran implementar en esta parte de tomar decisiones o saber cuándo, por ejemplo, una cotización lleva mucho tiempo parada, por ejemplo, o tomar decisiones y dejar preparadas facturas para que Araceli y Arturo simplemente tomen la decisión final. En ese apartado de dejar listo para que Araceli y Arturo vean un listado de facturas o de consideraciones que, por ejemplo, puedan estar en el riesgo o en el área de este apartado tiene algo raro, en esa parte la IA nos podría ayudar a prevenir Esos casos. Y eso ahorraría tiempo, por ejemplo, para estar leyendo todas las facturas. Y podría presentarlos, por ejemplo, cada mañana en el dashboard, por ejemplo. O de pronto podemos meterlo en la parte de conciliación como extra. Aparte de esa... + +36:41 - Noe Rocha +Ahí sí, por ejemplo, entraría directamente la IA. Oye, ¿cómo hacemos la conciliación ahora? A mano. Sácate un estado de cuenta. Fíjate cómo está Vine, ¿verdad Arturo? Y Concilio, ¿qué se pagó? Bueno, ahí sí metemos la idea, porque es un proceso hoy por hoy que no nos lo resuelve nada manualmente. O sea, todo lo tenemos manual y no hay un proceso que nos ayude muy claramente a machar las conciliaciones. Entonces ahí sí entra, ahí sí entra la parte de un agente. Y después ya con la raíz de la cara clara de es el camino, lo que tiene que hacer para diferentes pasos de facturación. El sistema ya como está hecho, ahora sí, el agente lo puede hacer más automatizado. Ejecútame los pasos de facturación. Básicamente, échatelo, no? Sin que tengamos que estar interviniendo pantalla por pantalla. + +37:39 - Araceli Sanchez Jimenez +Perfecto, ya entendí. + +37:40 - Noe Rocha +Pero parte de que tengamos claras las reglas, porque si no, sin reglas claras, un agente no es eficiente. + +37:50 - Unidentified Speaker +Gracias. + +37:50 - Noe Rocha +Ahora yo hago otra observación aquí, muy importante, porque se menciona que la cotización es necesaria para esto que estamos viendo aquí con Johann, el 1, 2, 3, 4 y 5. Pero por ejemplo, y aquí lo pongo solo en la mesa, las recurrencias no existe una cotización para cada factura. ¿A qué voy? Tenemos facturas que son recurrentes porque ya hay un acuerdo y un contrato, Johann. Significa que no tenemos que tener una cotización para facturar porque ya está vendido un proyecto. ¿Te acuerdas lo que te platicaba la sesión pasada? Oye, tengo un contrato de servicio con un cliente y. Pues ese contrato. + +38:35 - Araceli Sanchez Jimenez +Como el de AXIANS que está pagando por cuatro años, tres años. Y esperemos que ganemos otro. + +38:41 - Noe Rocha +Ahí sí tendríamos que tener. Sí, sí, correcto. Ahí sí tendríamos que tener. + +38:45 - Araceli Sanchez Jimenez +tener una una excepción de que no si es recurrente no necesita una cotización si me explicó o a lo mejor que nunca bueno no sé ustedes saben pero a mí me gustaría que nunca hiciéramos excepciones o sea al final del día todo no ha sido una cotización aunque sea recurrente o no entonces podría siempre generarse la cotización y de la cotización siempre se pasa prefactura o factura bueno dependiendo de lo que definamos no Estoy de acuerdo con Ara, porque al final de cuentas son puntos de revisión, oportunidades para revisar y evitar errores o mitigar los riesgos de errores humanos o errores en las configuraciones, sobre todo al inicio, ¿no? + +39:28 - Arturo Rosas Hernandez +Al inicio de la implementación de esta herramienta, pues sí estar monitoreando en cada fase, en cada paso, todo lo que suceda para asegurar que todo suceda de manera correcta y o, algunas veces, como en Big Brother, las reglas cambian. Entonces, no obviar que cada mes todo es igual, sino estar asegurando que cada mes, si hay algún cambio en la descripción, en los montos, en lo que sea, ese mes se corrija y se emita conforme el nuevo acuerdo, conforme las nuevas reglas. + +40:09 - Noe Rocha +donde entraría algo que no sé si debe vivir aquí y lo pongo sobre la mesa para ver si es algo que más adelante lo ponemos. No ahorita porque si no, no vamos a salir nunca porque va a haber muchos supuestos. Pero por ejemplo, en videos pasados, si tú te acuerdas Arturo, teníamos los contratos. Y ese contrato decía, este contrato por un año vale 12 pesos. Entonces cada orden de compra que yo haga por este contrato me del debe contrato de descontar lo contar que ya se facturó y se pagó de tal forma que si al mes seis yo tengo que ya se facturaron seis pesos y se cobraron seis pesos no puedo cobrar más allá de otros seis pesos porque ese Más o menos, amigo, porque más o menos, porque justo con el ejemplo de Axios, o sea, las personas suben, bajan, los precios cambian, se ajustan, aumentos de sueldo, disminución, nuevos acuerdos, etc. + +41:04 - Arturo Rosas Hernandez +Entonces, por eso diría sí, pero no por eso yo digo que sí o bueno, estoy de acuerdo con lo que dijo Ara, de que siempre generemos la conciliación, porque es una oportunidad para revisar de oye, para el empleado, para colaboradora eran 6 pesos, pero acuérdate que esta vez son 5 por RENECOSA o son 6 más 1 que es viáticos o son 6 más lo que sea, ¿no? Entonces, sí debes tener la oportunidad. + +41:35 - Noe Rocha +Pero aquí entra mi pregunta, porque esto sería un trabajo adicional. ¿Significa que cada vez que se tenga que facturar vas a hacer una cotización, Araceli? Significa que, por ejemplo, vamos a poner el caso de AXS, para cerrar la pregunta. ¿Sería práctico que cada mes tendría que hacer la cotización? + +41:58 - Araceli Sanchez Jimenez +Es lo mismo. Si tú haces una cotización, el esfuerzo es el mismo. Por ejemplo, no hacemos cotización, pero al final del día se captura a mano la factura. Entonces da lo mismo. Porque cuando tú haces una cotización, esa cotización es en el RP, nada más te vas a un menú y esa cotización la conviertes. Nada más le haces un clic a prefactura o a factura. Y cuando tú también, entonces tú nada más es un clic. Y por ejemplo, cuando tú vas a facturar, hace el capturas lo mismo y nada más le haces un clic y lo timbras. Entonces el esfuerzo es el mismo. + +42:35 - Noe Rocha +Ah, entonces miren, fíjense que hay un dato importante. + +42:38 - Araceli Sanchez Jimenez +No sé si tú lo estás viendo, Johann, pero por no sé si nos explicamos o quieren que les expliquemos porque el esfuerzo es lo mismo, o sea, por eso a mí me hace sentido que todo nazca de una cotización, porque todos los datos son todos los mismos y nada más la diferencia en la cotización que, por ejemplo, cuando es un tema comercial, yo nada más la cotización la convierto a PDF, pero cuando ya se vendió, esa cotización yo la subo y entonces Artur lo que hace es, oye, factúrala y baja, nos da un número de folio, se va el sistema, el número de folio, aparece la cotización y nada más le da un clic factura o prefactura. + +43:20 - Noe Rocha +Entonces es lo mismo. Entonces aquí es un arreglo interesante. Si la cotización sirve para que se convierta en factura o prefactura, entonces en estos pasos hace sentido. Primero cotización, los datos, los conceptos y luego ya validado, ya conocido información, se va a prefactura, no a se va a ir a prefactura, se va a tener una aprobación humana que va a ser una... Esa aprobación y después, después ya se timbra. Entonces tenemos candado 1 cotización, candado 2 prefactura, candado 3 aprobación y ya al final pues la factura como tal. Entonces son 3 candados para validar que esa factura tiene que salir pues como tenga que salir, ¿verdad? + +44:10 - Unidentified Speaker +De forma correcta. + +44:12 - Noe Rocha +Sí. ¿Hace sentido ese flujo entonces? + +44:15 - Unidentified Speaker +Sí. + +44:16 - Noe Rocha +Ok, de acuerdo. Gracias. Valente, Johanna. Ok, de acuerdo. + +44:20 - Johann +Ahora, en esa parte donde comentan, así como comentario extra, también para tenerlo presente, ¿va a haber cotizaciones y, bueno, facturas que no van a vivir en Gira? O si esas cotizaciones o esas facturas que no tienen cotización a día de hoy están reflejadas en Gira, porque ahorita este ejercicio comienza desde un ticket de Gira. Entonces, si hay alguna cotización. Que no esté en Gira, no va a ser reflejado, entonces pregunto para, por ejemplo, considerarlas aquí para la regla. + +44:58 - Araceli Sanchez Jimenez +Si no, no, Johann, ya por regla y política de la empresa, los únicos y Lo que no está en JIRA no se procesa, ya sea en facturación, cobranza u otras solicitudes de la operación de la empresa. Entonces, ahora sí, el único punto de inicio en donde realmente se detonan los procesos es JIRA. Entonces, todo debe de estar contenido ahí para que no nos vayamos por otro. Nada más es JIRA. Sí, que no sea un correo, que no sea un mensaje. Si no está en JIRA, no es oficial. Sí, y de hecho, por ejemplo, en mi caso, que luego me llegan correos con facturas cosas así como para yo no capturar de manera manual y un ticket en gira y yo ya tengo una dirección establecida de correo yo lo reenvío ese correo aún y a una dirección de gira y giren automático me hace un ticket entonces todo está por girar ya aquí aquí entiendo muchas gracias Ahora, continuando con estos pasos, así como comentan, sí, aquí los candados serían primero la cotización, después la prefactura, la aprobación y por último el timbrado, que es lo que sucede cuando avanzamos con este proceso de facturar. + +46:18 - Johann +Entonces, primero vemos los datos que tiene la factura. Aquí se selecciona el método de pago, está por defecto el PPD. Ajá. Los conceptos EIVA de esta factura, bueno, de esta cotización. Después, se ve una previsualización de la prefactura. Aquí se puede dejar y guardar para validarla después, o podemos enviarla directamente a aprobación. Y ahora cuando se envía a aprobación, aquí, por ejemplo, se puede dejar lista para que o Arturo o Araceli la aprueben desde su cuenta una vez se apruebe ya se puede timbrar, primero se aprueba y luego se timbra y después pueden o emitir otra factura o continuar y enviar la factura con los documentos para esta parte del correo te tendría que dar un buzón o algo por el estilo, ¿verdad? Sí, ocuparemos un buzón de. + +47:33 - Noe Rocha +Sí. Así es. + +47:35 - Araceli Sanchez Jimenez +Oye, Johann, yo por ejemplo, aquí ya ves que tenemos algunos asegúnes, es decir, hay algunos que nada más le mandamos la factura, es decir, le echa un rollito ahí el por ejemplo, en el en el tema de Accions, le mandamos las cuarenta y tantas facturas en una carpeta zip, o sea, no le mandamos un correo por factura, pero además de de mandárselas todas en un en un solo correo, nos pide el estado de cuenta de esas facturas, es decir, les mandamos así y entonces se le manda un archivo que eso también se se saca de del sistema de entonces veinte y cincuenta, estas son tuyas y corresponde veinte, veinte, Araceli Sánchez del Perú, no sé qué, cinco mil y algo, o sea, se les manda todo eso, o sea, además de la factura. Aquí, por ejemplo, nada más se adicionaría en la factura, y nosotros a este correo le podemos anexar cosas o. + +48:45 - Johann +Sí, sí, justamente, por ejemplo, tenga sus propios requisitos y, por ejemplo, aquí en el ejemplo de Cemex, me parece envío bloqueado porque me faltan las horas, el Excel de horas. + +48:59 - Araceli Sanchez Jimenez +Sí, órale, sí, me gusta. Yay, jubilados, Artur, ya. Ya. Bueno, está en la playa. Exactamente, así desde la playa, autorizar, enviar. Mira, pues de hecho ahí está, ¿eh? + +49:13 - Noe Rocha +Ahí no menciona. ¿Dónde estaba el zip? Acuntia. Ahí viene, .zip, pdf.xml, más estado de cuenta. Ya lo menciona. + +49:21 - Araceli Sanchez Jimenez +Andale, super, sí. O sea, decirlo con particularidad por cliente. Sí, Johann, y ya ves que aquí luego los clientes es como el Big Brother, las reglas cambian. Entonces, por ejemplo, si de repente nos piden otra cosa por sistema, se puede anexar esa o quitar o poner la nueva regla, ¿verdad? + +49:41 - Johann +Ok, habría que desarrollar ese módulo de configuración? Al principio esto estaría cerrado, directo, cerrado, sí, pero si se puede, nada más que ahora mismo sería desarrollar el módulo. + +49:52 - Araceli Sanchez Jimenez +Sí, no, no, y si no, pues te contactamos, nos cobras unas horas de servicio y nos haces el ajuste, ¿no? Sí. Ok, sí, digo, de momento yo creo que no es necesario desarrollar el otro de configuración porque realmente, pues, es pequeño, pero yo nada más porque luego nos cambian la y si sí, nada más saber que la podemos poner ahí, porque al final del día esto nos libera mucho, Johann, porque luego, de entrada, la curva de aprendizaje nos las hace muy laxa o muy soft porque por ejemplo a lo mejor ya le dimos la capacitación a alguien y lo quiere mandar y va a decir ah si cierto tengo que mandar a b c d entonces así quita también mucha vigilancia humana no o acompañamiento de cierta forma gracias así es ok entonces esta parte es todo el proceso por la parte de facturación. + +50:55 - Johann +¿Aquí hay alguna duda? Porque seguiría después cobranza. No. Yo ninguna, no sé si ustedes. + +51:02 - Noe Rocha +No, nada más las reglas, nada más arrañar un poco nosotros para la regla específica de lo que comentamos antes. Pero de ahí en fuera el módulo es bastante, creo que se ve muy visual e intuitivo. + +51:19 - Unidentified Speaker +Sí. + +51:20 - Araceli Sanchez Jimenez +Me encantó. + +51:21 - Johann +De acuerdo, continúo. Ahora, esta parte de cobranza. En el módulo de cobranza vamos a tener las facturas abiertas y los estados de cuenta. Entonces, toda esta información del módulo de cobranza, aquí la podemos ver, tendrá los estados de cuentas asociados. Y ahora aquí, nosotros tenemos dos pantallas. En la primera vamos a ver las cuentas por cobrar. Y aquí se pretende que el segundo reemplazo, no reemplazo, pero que sea el equivalente al Excel que compartió Arturo, en donde pueden ver las facturas y cuánto tiempo llevan de morosidad por cliente. + +52:17 - Johann +Johann, esto se alimenta de Vine, ¿verdad? + +52:19 - Noe Rocha +O sea, si Vine no está conciliado en algún dato, pues no nos va a dar la información. Al día. Si primero no está en Vine. Porque la fuente oficial de información es Vine. Así es. Ok. + +52:35 - Johann +Sí, justamente como mencionas, viene desde Vine. + +52:38 - Arturo Rosas Hernandez +Aquí tengo una duda y es la parte en la finza. Digamos que están los estatus obvios, ¿no? Por pagar, pagada, cancelada o... No veo el resto de estatus. Ok, entonces, pero hay unas facturas especiales que digamos que ya están programadas para pago, que de cierta manera las estamos ahorita categorizando de otra manera, ¿no? Entonces ahorita justo unas facturas que ya están programadas para pago, es decir, hoy mismo me apareció una factura que dice que se va a pagar el 24 de septiembre. Esas le llamamos NAFINSA y las categorizamos con esa tipificación, NAFINSA. La pregunta es, para este módulo de cuentas por cobrar, ¿habría la posibilidad de categorizar de manera diferente este tipo Si no está en Bind, no. + +53:43 - Noe Rocha +Si el estatus no existe en Bind, no. Pero ahora sí ya. Sigue tú Johann. ¿Qué Workaround podemos tener? Muchas gracias Noe. + +53:54 - Johann +Así es como esta información se jala de Bind. Si no existe en Bind, nosotros habría que agregar una capa extra aquí en el sistema. A lo mejor añadirle o o un campo de estatus o agregárselo aquí. + +54:12 - Noe Rocha +Nada más que ahí tendríamos que definir la regla Arturo. Hoy por hoy, ¿cómo se define el estatus de una factura con un estatus diferente en Vine? Para visualizarlo y ponerle esa capa que dice Johann, oye esto no existe en Vine. ¿Cómo lo queremos ver y cuál es la regla para tipificarlo? Para entonces ponerle sobre lo es una capa adicional, es decir, y estas facturas las necesito ver así, pero es una capa arriba de. + +54:43 - Araceli Sanchez Jimenez +Si son solo las de Cemex, el único cliente que tiene cadenas productivas, que es Nafinsa y Cemex. Entonces, por ejemplo, cómo es el proceso de Cemex? Cuando un proveedor está dado de alta en cadenas productivas, nosotros vemos todo el proceso y entonces Cemex dice ok, ya está, se pasa a aprobar a pago y lugar de que nos se nos tenga y porque nos paga 120 días lo que hace es pasar esa factura ya autorizada pago a la finza y entonces nosotros en la finza vemos todas las facturas que ya están en firme en pago sí entonces las cadenas productivas bueno no sé si ustedes sepan pero bueno sino cadenas productivas es es un apoyo que se le da a los proveedores porque es decir si Yo necesito bajar ese dinero antes de los 120 días. Yo lo bajo y me cobran un interés respectivo diferente, dependiendo del banco el que yo decida. Verá, entonces al final del día es como una ayuda, un apoyo al proveedor de crisis. Oye, yo no puedo esperar 120 días, lo bajo ahí. Entonces todas las facturas que nos aparecen en la finza ya están en pago en firme. Entonces, pero, están en pago en firme, en Bain a nivel contable, no se registra hasta que cae en la cuenta. Entonces, este dato nosotros ni siquiera si lo compartimos al despacho contable, porque nos va a decir a mí de qué me sirve, o sea, a mí no me des algo que esté en el aire. Pero para nosotros, de manera interna, sí nos sirve, porque entonces sabemos que ya tenemos ahí en firme el pago de dichas facturas, y las que no aparecen en la finza, entonces sí empezamos a correr porque quiere decir que no están autorizadas. Pero nada más pasa eso para CEMEX. De ahí en fuera, para ningún cliente tenemos NAFINSA o cadenas productivas. + +56:38 - Noe Rocha +Y ese dato, como nada más para ver y pensarlo con Johann. Estos son los datos de Vine. Y la capa siguiente para ver esto, ¿cómo les serviría o cómo lo ven hoy? ¿Cómo les funciona ver ese dato? + +56:55 - Araceli Sanchez Jimenez +y a la mejor nosotros lo podríamos alimentar o manual o por ejemplo nosotros tenemos un portal, un usuario de una contraseña y ahí en ese portal le damos emics, le damos consultar y nos explica todas las facturas con el el cfdi y a cuántos días nos los van a pagar, de hecho nosotros tenemos ahí ya parece el día exacto 4, 3 de agosto, septiembre, entonces este nosotros lo que hacemos por eso le con Artur una capa adicional porque esas no están pendiente de pago o sea si están pendiente de pago pero ya están programadas pero no han caído en la cuenta a fin de cuentas no han caído no han caído entonces nada más yo como lo veo esta pantalla nos dice lo que ya cayó necesitarían otra pantalla para ver lo que está programado para pago cuentas estos son cuentas por cobrar estas son las que no han pagado, o las que no nos han pagado. + +57:56 - Noe Rocha +Sí, las que no se han pagado. Esto solamente nos dice si está pagado o no está pagado. Y cuántos días tiene desde que no se ha pagado a la fecha. Como dice aquí, tiene de 1 a 30 días vencidas, de 30 a 60 días vencidas, etc. Esto no nos dice eso, pero no nos dice o no viene, y como no existe en Vine, también es necesario definirlo. ¿Podemos tener una pantalla para ver lo que ya está programado? + +58:25 - Arturo Rosas Hernandez +Mi respuesta corta, si me permite interrumpirte, Ara, es sí. Sí, porque en algún momento tenemos que ser preventivos o podemos planear nuestras finanzas a futuro. Y poco a poco pudiéramos hacerlo con los clientes. Yo estoy pensando, me estoy imaginando un futuro Balam, que por cierto, ahí viene otra pregunta porque falta el resto de empresas, pero bueno, ahorita voy a enfocarme con Balam, estoy pensando que vamos a crecer en la cantidad de clientes, en la cantidad de facturación, etcétera, etcétera. Y tal vez esos clientes ya van a empezar a tener portales. O sea, caso Frisa, caso Frisa ya tiene su portal, ya tiene un portal de proveedores. Y entonces, si ya tiene el portal, ya nos va a decir o ya nos va a permitir saber cuándo están programadas nuestras facturas. Como con este, con estos casos que mencionara de ya, ya es seguro, o sea, ya es seguro. Que el 24 de septiembre me va a caer una factura y con eso nosotros podemos planear nuestras finanzas, es decir, si tomo del ahorro o tomo de un préstamo o no considero pago para esa semana o la considero para la siguiente o para ese mes o para el otro mes, o sea, poder planear nuestros pagos porque ahorita estamos siendo reactivos, estamos reaccionando a las necesidades financieras de la empresa Y sí, estamos adelantando en unos cuantos meses en el futuro, pero yo quisiera que pudiéramos adelantarnos un poco más, pero de manera por proceso. Que en algún momento alguien nos diga o una pantalla nos diga cuánto dinero tenemos programado en los siguientes meses y qué podemos hacer con ese dinero con base a la facturación que tenemos, a las cuentas por cobrar, qué tenemos, a los ingresos, etcétera. O sea, una planeación financiera. Y ese es el último toque, la cerecita del pastel, diré yo. Adelante, perdón. + +1:00:23 - Noe Rocha +Entonces sería entonces, a mí se me ocurre lo siguiente, muy rápido, nada más antes de perder la idea. A mí se me ocurre lo siguiente, y dígame si les funciona, que de esto, y ya lo veo con Johann, se pueda seleccionar qué factura ya la tenemos por lo menos programada en un portal de algún cliente, este es el que sea, y que manualmente le podamos poner un estatus que diga programada y con la fecha, como para poder decidir mínimo, por lo menos, ya sé que el mes de julio me van a pagar el 50% de las facturas vencidas. Pero yo creo que eso sería para ponerlo en otra pantalla diferente a esta. Esta sería nada más como que, o me pagaste o no me pagaste. Y en la otra, qué es lo que sí tengo programado. No sé si le sirva. + +1:01:13 - Araceli Sanchez Jimenez +Oigan, a mí se me ocurre algo. Yo pensando en que cada vez dependamos menos de nosotros. O sea, de nosotros meternos al portal así. También lo que puede hacer es, por ejemplo, que cada 15 días se genere un ticket en Jira automático de checar portal Nafinsa, no sé, desde Jira, ¿no? Entonces, ese checar que diga, oye, ¿sabes qué? Y que pongas un Excel y que a lo mejor se haga un ticket para que se vaya directamente a cuentas por cobrar. Entonces, al menos cada 15 días, porque tampoco es tanta la transaccionalidad que tenemos con SEMED, como para decir, oye, es que hay que checarlo diario, porque, o sea, no. Entonces, a lo mejor cada 15 días que nosotros se genere un ticket en automático, pongamos lo que nos aparezca en Afinsa, el pantallazo, los FDIs, y ya se cierre. Y ese ticket automático lo jalen ustedes y lo meten en cuentas por cobrar. Y puedan hacer el match, si me entiendes, porque es el número de folio. El número de folio que nos aparece en Afinsa es el mismo número de Entonces que tú digas, ah, mira, en Cemex está el follow 100 y está en Afinsa, ah, ok, entonces aquí, en automático, en Afinsa. No me gustaría que quedara tan manual porque se nos va a ir otra vez de las manos. + +1:02:35 - Noe Rocha +¿Podría ser eso o no? + +1:02:37 - Arturo Rosas Hernandez +Lo veo con Johann. + +1:02:39 - Noe Rocha +Bueno. Sí. + +1:02:40 - Unidentified Speaker +Gracias. + +1:02:40 - Unidentified Speaker +Muy bien. + +1:02:41 - Johann +Adelante, Johann. + +1:02:42 - Johann +Ok. Entonces. En cada factura se ve el detalle de las facturas. También aquí tenemos consideradas la tolerancia por fees. Por ejemplo, si tienen una diferencia que sea considerada un fee, eso se tendría que configurar. Por ejemplo, si es el 5% o una cantidad así fija de fee por cliente, aquí se configuraría y entraría aquí en pagada pero con tolerancia. Esto es por esta pantalla y en la siguiente pantalla de pagos y recordatorios, aquí es para informar o para ver, por ejemplo, los pagos detectados que han ocurrido últimamente en Bind, por ejemplo, hoy. Y aquí se verían los pagos de las facturas que se han hecho hoy y el resultado que se ha hecho. También aquí vemos algunas reglas de recordatorio. Por ejemplo, todas las alertas por el momento serán internas. Aquí, por ejemplo, si lleva un día vencido de la factura, se le avisará a Arturo. Si lleva 15 días, ya se enviar un mensaje a Araceli y también por el momento no está desarrollado pero podría ser en un proceso posterior de si lleva cinco días se le envía un correo al cliente y a 30 otro correo al cliente. + +1:04:26 - Araceli Sanchez Jimenez +¿No está configurado porque no es el alcance? + +1:04:30 - Noe Rocha +No está definida la regla todavía. + +1:04:34 - Araceli Sanchez Jimenez +Gracias. + +1:04:34 - Johann +Y aquí abajito ya aparecerán las alertas internas, que son estas reglas de recordatorio. + +1:04:42 - Johann +Entonces, por ejemplo, si estoy aquí como el usuario de Arturo, aquí me aparecerán todas las facturas que tengan más de un día vencidas. + +1:04:55 - Araceli Sanchez Jimenez +OK. + +1:04:55 - Johann +Y aquí, por ejemplo, esta parte iba para lo de las excepciones de seguimientos está pensado para por ejemplo si había un cliente que no se le quisiera enviar un correo porque era un cliente que ya pagaba pero también esta parte puede no estar ok gracias esto por esta parte y como último este módulo de auditoría Es una bitácora de los movimientos que se han hecho y qué usuario los hizo, a qué hora los hizo. Entonces, de esta forma, por ejemplo, se puede llevar un seguimiento de las facturas que se hicieron, las aprobaciones que se hicieron, las cotizaciones que se vincularon y todas las acciones que se hicieron dentro del sistema. Aquí se puede ver para llevar una transabilidad. + +1:05:57 - Araceli Sanchez Jimenez +OK. Me encanta la idea. Sí a todo. + +1:06:02 - Noe Rocha +Ahora, este MVP y lo importante de la definición del MVP, qué significa MVP? Y lo vuelvo a repetir, porque ya lo habíamos dicho hace tiempo, pero nada más para no perdernos. El MVP es lo mínimo necesario para operar. Yo sé que ahorita vimos muchos temas, muchos segundos, muchos detalles, pero yo sí los invitaría a decir sí, si el cielo, esto nos funciona para empezar a operar algo el día de hoy, lo ideal sería hacerlo. ¿Por qué? Porque ¿qué pasa? Cuando se le da una revisada a un sistema, empiezan a salir muchos hacegúnes, como ya lo hemos visto. Y en esos hacegúnes empezamos a sumarle, sumarle, sumarle. Y al final de cuentas, cuando llegamos ya al momento de querer operarlo, pues nos damos cuenta de que hay cosas que se empiezan a decir. Ah, ¿sabes qué? Esto no, esto sí, esto lo ocupaba así, esto ya no. Entonces El MVP tiene como propósito salir rápido, operar rápido y descubrir sobre eso lo que, si bien ya documentamos ahorita, cosas que a lo mejor ni siquiera habíamos visto porque no lo estamos operando. Entonces. Hay cosas que sí son de reglas, que sí, definitivamente las tenemos que definir para que queden dentro del sistema. Y hay otras cosas, son como los nice to have. Oye, estaría padre que tuviera esto. Entonces, si los nice to have ahorita, nos impiden o no serían impedimento para poder salir a operar con algo. Yo sí les pediría que hagamos team back, veamos los puntos que mencionamos en esta sesión y digamos qué es nice to have y qué es un must. Si es un must, volver con Johann o Johann, esto es must. Por favor, vamos a quitar, poner, subir, bajar, lo que tengamos que hacer. Y lo que no, podamos empezar a avanzar para que Johann en un tiempo corto nos pueda empezar a dar ya algo operativo. Y lo que sí pasa mucho es que ya cuando sales a operación con algo, ahí es cuando se descubren muchos asegúnes. Muchísimos más de los que estamos viendo ahorita, porque ahorita ni siquiera lo estamos operando, nada más lo estamos viendo. + +1:08:12 - Araceli Sanchez Jimenez +¿Sale? Mira, yo tengo la respuesta rápida. La verdad que Johann nos captó absolutamente todo lo indispensable y más o sea a mí me parece fabuloso yo lo único que de mi lado queda es que revisemos el proceso de facturación prefacturación nada más para no hacer si revisamos ese proceso de mi lado está o sea está perfecto porque justo lo como ya habíamos tenido otras sesiones con Johann nos captó súper bien entonces para mí esto se me hace algo súper maravilloso yo de momento no le pondría nada más o sea es como y ya obviamente entiendo que ya después él montaría la IA para pues obviamente ya que nos dé otra analítica y otras cosas. Pero de momento a mí me parece excepcional, o sea, siento que tiene absolutamente todo. ¿Tú qué opinas, Artur? + +1:09:00 - Arturo Rosas Hernandez +Sí, la verdad es que lo dijiste muy bien. Yo no le pondría nada más. Incluso el reporteo está muy bueno, que es lo que nos va a permitir dar visibilidad de lo que falta, lo que se hace, lo que no se hace, etcétera, incumplimientos o omisiones. Entonces, yo lo veo bien, como lo dice Noe, lo conecto con el MVP. Sí, esto es lo mínimo que necesitamos y obviamente esto va a ir creciendo con todo esto que dijimos y más porque sabemos cómo somos, ya nos conocemos para que nos invitan. Sí, le podemos agregar muchas cosas porque sí, seguramente hay muchas cosas por mejorar, pero también dependen mucho de nuestros procesos, ¿no? De los procesos, de cómo los estamos creando o cómo lo estamos mejorando día a día. Entonces, yo también lo dejaría así como está. Sobre todo el tema de la facturación. O sea, si el tema de facturación me va a permitir hacerlo en segundos y no en horas o en minutos y no en horas, yo voy y ya estoy de acuerdo. O sea, con que nos reduzca el tiempo que dedicamos a la facturación, que tampoco es mucho. Y al reporteo, está genial. + +1:10:12 - Araceli Sanchez Jimenez +Sí, sobre todo como tú dices, yo creo que la consolidación, o sea, el tenerlo, porque vamos de uno a otro, y luego agarras el giri, y luego agarras esto, y luego el vine, y O luego sea, no son sé muchos qué, temas y y luego, luego abrimos el archivo de Excel de la cobranza y luego esto. Entonces, yo creo que aquí y además que tengamos los dos o una sola previsualización. Por ejemplo, yo cuando apruebo cosas me tengo que meter al portal de JIR en aprobación y no sé qué. Y aquí ya está todo consolidado. Entonces, no me tengo que. Y luego, por ejemplo, veo las aprobaciones y porque apruebo no nada más las de administración, sino otras. Entonces, cuando veo la lista de aprobaciones, siempre le doy prioridad a facturación y a pagos. Entonces, yo ando seleccionando. Entonces, aquí ya sé que si yo me meto en el portal, yo nada más priorizo esto, ¿no? O sea, desde un solo dashboard, porque en el Jira, pues, sí, yo tengo que, por los títulos me dejo llevar y, bueno, este sí, ahorita este lo veo y cosas así. Entonces, a mí me parece que todo está bien, nada más hagamos Timback para rechecar el flujo de facturación o prefacturación. Y con eso, Johann, muchas gracias. Creo que, este, le decía, no, de que tú tienes, yo veo que tú tienes, digo, tienes muchas cualidades, pero de la cualidad que tiene que ver con lo laboral y que yo he visto que tienen pocas personas, hablas poco y escuchas muchísimo. Y eso hace que nos entiendas mucho. Generalmente la gente te interrumpe. Mucho entonces yo tú eres o sea yo puedo estar hablando una hora y tú jamás me interrumpes y ya al final que termino oye y ya me haces entonces generalmente las personas que que son así tienen mucha capacidad de de percibir y de de atención y de entender y tú eres una de ellas muchas gracias nos entendiste aquí está el ejemplo y el bebé y el bebé balama ahí está de ejemplo exactamente entonces está perfecto yo la verdad lo veo super bien. Muchas gracias. Pues listo, Johann. + +1:12:19 - Noe Rocha +Queda pendiente de nuestro lado nada más una parte de definición del proceso y ya para volver contigo y hacer este MVP ya algo productivo. Que, ojo, nada más Ara y Arturo, vamos a tener que hacer una prueba y esa prueba va a ser muy muy observada, muy segura de lo que sería un flujo normal para la prefacturación. Porque eso ya implicaría ir a escribir sobre Vine, pero eso ya lo haríamos sobre... Ahora sí queda, como dices ahora, bien plenito, ¿no? Bien, paso por paso, valida. Oye, sí está súper seguro de que lo que estamos haciendo esté funcionando y no está afectando a otra cosa. + +1:13:07 - Araceli Sanchez Jimenez +Ok, sí, me late. + +1:13:08 - Noe Rocha +Ese ya sería el final, ya cuando cuando tengamos toda la fase definida del proceso, antes de hacer un go live del sistema. + +1:13:19 - Unidentified Speaker +Ok, perfecto. + +1:13:20 - Noe Rocha +Johann, ¿comentarios? + +1:13:21 - Johann +Muchas gracias, Arturo, Araceli, por sus palabras, las aprecio mucho. Justamente, me han servido mucho las explicaciones que me han dado. Me han dejado espacio para dudas. Entonces, ha sido muy valiosa la información que me han brindado. También cómo mostraban ejemplos, cómo traían casos que no eran tan comunes también para considerarlos, cómo explicaban el proceso porque lo vio en día a día, fue muy útil y fue muy cómodo para mí trabajarlo y entender qué les iba a servir. Me alegra mucho que esta solución, este MVP, les haya agradado, les haya sido de gusto y vamos a trabajar sobre ello. Entonces, pues, mis siguientes pasos serán ya montar o comenzar con el desarrollo de la parte visual. En ese tiempo, he estado trabajando en la parte que va por detrás. En el backend, sí. He estado trabajando en el cliente de cómo se va a conectar con Bind, en la parte de usuario, en la parte de soportar el multitenant, en la base de datos. Entonces, falta conectar a CloudFrontend y hacer las pruebas que comentan hoy. Entonces, esos, por mi parte, serán los siguientes pasos. Y con mucho gusto de seguir trabajando en este proyecto, en el Bebé Balán, como dicen. + +1:14:45 - Araceli Sanchez Jimenez +Ya sé. Muy bien, Johann. Muchas gracias a todos. + +1:14:48 - Noe Rocha +Ya tenemos que ir, porque la parte de gira, pues, ya habíamos, tenemos una sesión pendiente con Pedro, ¿no?, para hacer ese Discovery. Sí, es correcto. En un principio, pero ahora, dado la necesidad del proceso, hay que incluirlo. ¿Vale? + +1:15:03 - Johann +Vale, ok. + +1:15:04 - Araceli Sanchez Jimenez +Bueno, ya está. Gracias, gracias. Feliz viernes y igualmente. Gracias, bye. Bye. \ No newline at end of file diff --git a/fuentes/2026-07-21 a 2026-07-27 - WhatsApp - Erika coordinacion sesiones validacion y API Jira.md b/fuentes/2026-07-21 a 2026-07-27 - WhatsApp - Erika coordinacion sesiones validacion y API Jira.md new file mode 100644 index 0000000..286ac66 --- /dev/null +++ b/fuentes/2026-07-21 a 2026-07-27 - WhatsApp - Erika coordinacion sesiones validacion y API Jira.md @@ -0,0 +1,112 @@ +# WhatsApp — Erika Chávez (PM, Balam) ↔ Johann · coordinación de sesiones (validación de prototipo + API Jira), envío del flujo de facturación y reagenda 23→24 jul + +**Canal:** WhatsApp +**Fechas:** 2026-07-21 (tarde) a 2026-07-27 (mañana) +**Evidencia:** copia del chat compartida por Johann el 27-jul-2026. +**Relación con la bitácora:** continúa el hilo del 21-jul ([#51](../bitacora/REGISTRO.md)); cruza con la sesión de reglas del 22-jul ([#54](../bitacora/REGISTRO.md)), la validación del prototipo del 24-jul ([#55](../bitacora/REGISTRO.md)) y la sesión de API de Jira del 27-jul ([#56](../bitacora/REGISTRO.md)). + +> **Nota sobre imágenes:** las capturas no se conservan en el volcado de texto; se infieren por el contexto y se marcan como **📷 [imagen inferida]**. + +--- + +## Transcripción + +### Martes 21-jul (tarde) — horas por Excel y aclaración de cotizaciones/MVP + +**Johann · 12:51 pm** — “Disculpa acerca de las horas, mientras se habilita el flujo de Jira, ¿te las comparto por Excel?” +**Erika · 12:52 pm** — “Sí por favor con el entregable y act y horas” · “De cada etapa por favor” +**Johann · 12:52 pm** — “De acuerdo” + +**Erika · 12:58 pm** — “disculpa ¿no es esto lo de las cotizaciones?” +> 📷 **[imagen inferida — confianza alta]:** captura señalando el punto de cotizaciones (probablemente §1.4 de la propuesta o la fila del Excel). + +**Johann · 1:00 pm** — “Sí pero desde el MVP” +**Johann · 1:01 pm** — “También identifiqué un punto que no aparece todavía en el Excel: durante el Discovery surgió la posibilidad de que los tickets de Jira generen automáticamente las cotizaciones en BIND. Para eso eventualmente necesitaríamos acceso técnico a Jira y permisos controlados de escritura en BIND. Esto es para que cuando se cree un ticket de Jira, se cree automáticamente la cotización en BIND.” +**Erika · 1:01 pm** *(citando “Sí pero desde el mvp”)* — “¿Qué es MVP?” +**Johann · 1:02 pm** — “Esta aplicación que estamos trabajando” +**Erika · 1:03 pm** — “Okey” · “ya vi que dice fuera de alcance” +> 📷 **[imagen inferida — confianza media]:** posible captura de la §1.3 (Jira “Fuera de alcance”). + +**Johann · 1:04 pm** — “Okay, cualquier cosa me avisas” + +### Miércoles 22-jul — disculpa por la sesión de reglas, propuesta a ajustar, agenda de API Jira y envío del flujo por correo + +**Erika · 11:35 am** — “buenos días Johan, primero que nada una disculpa por no estar en la sesión de hoy, tuve un compromiso personal, sin embargo les avisé a los ingenieros mi ausencia para que pudieran tomar esa reunión importante contigo. Veo que se mencionó lo del ajuste de la integración del sistema Jira ¿vrdd?” +**Erika · 11:35 am** — “¿ajustarás la propuesta?” +**Erika · 11:35 am** — “y quedó pendiente de nuestro lado la revisión de la API con Jira y el flujo de facturación de Jira ¿vrdd?” +**Johann · 11:55–11:56 am** — “Hola buen día” · *(citando su disculpa)* “No hay problema” · *(citando lo del pendiente)* “Sí, así es” +**Erika · 11:58 am** — “Okey de acuerdo, deja valido la información correspondiente para mandarte lo solicitado” +**Erika · 11:59 am** *(citando “ajustarás la propuesta?”)* — “¿Se ajustará?” +**Johann · 12:05 pm** — “Sí, de igual manera entre hoy y mañana te comparto el conteo de horas y la propuesta ajustada” + +**Erika · 1:21 pm** — “Johan, ¿pudieras tener una sesión el viernes a las 7 am para ver lo de la API de Jira junto con el Ing. Noe y mi compañero Pedro?” · “¿Cómo ves?” +**Johann · 1:22 pm** — “Sí, me parece bien” +**Erika · 1:22 pm** — “Va, deja la agendo, gracias” + +**Erika · 2:26 pm** — “Johan, te confirmo: el correo del flujo de facturación de Jira ya lo mandé” · “Quedo al pendiente de cualquier duda o comentario :)” +**Johann · 2:40 pm** — “De acuerdo, muchas gracias :)” +**Erika · 2:47 pm** — “A ti, igual la sesión ya se agendó, la del viernes” + +### Jueves 23-jul — reagenda por tema personal de Araceli; validación se mueve a viernes; API Jira se mueve a lunes + +**Erika · 6:53 am** — “Buenos días Johan” · “¿Ya listo?” +**Johann · 6:53 am** — “Hola Erika, buenos días” · “¡Listo!” +**Erika · 6:54 am** — “¡Súper!” · “Igual comenzaremos con que expliques el prototipo y si hay dudas que se comenten” · “Ten a la mano el archivo que nos compartiste para que proyectes por favor” +**Johann · 6:55 am** — “¿Cuál archivo disculpa?” +**Erika · 6:55 am** — “El que nos enviaste” +**Johann · 6:55 am** — “Oh, el PDF con las capturas” +**Erika · 6:55 am** — “Sí” + +**Erika · 7:00–7:01 am** — “Johan” · “Una disculpa, me van avisando que Araceli trae un tema personal y no podrá conectarse, y es de gran importancia que esté ella ya que es la del proceso completo” · “¿Podemos cambiar esta sesión a mañana a las 7 am?” · “Y la que tenías mañana conmigo de la API de Jira moverla a la tarde, no sé cuál sea tu disponibilidad” +**Johann · 7:01–7:02 am** — “Entiendo” · “¿En qué horario en la tarde podrían para lo de la API de Jira?” +**Erika · 7:02 am** — “A la hora que indiques” · “¿Puedes a las 4-5-6?” +**Johann · 7:03 am** — “¿Podría ser después de las 6:30 de casualidad?” +**Erika · 7:03 am** — “Sí claro, 6:30 a 7:30 va” +**Johann · 7:05 am** — “¿Un poco más cercano a las 7 habrá oportunidad? ¿O ya sería muy tarde?” +**Erika · 7:09 am** — “¿A las 7 entonces?” +**Johann · 7:10 am** — “Sí, a esa hora me quedaría súper” +**Erika · 7:11 am** — “Listo, nos vemos a las 7 am mañana para prototipo y en la tarde 7 pm para lo de la API” · “Gracias Johan y una disculpa” +**Johann · 7:27 am** — “Enterado, muchas gracias Erika” + +**Erika · 9:45–9:46 am** — “Johan” · “¿Puedes el lunes a las 7 am?” · “Es que me comenta Pedro que lo puede mañana a esa hora” +**Johann · 9:56 am** — “Sí sin problema” +**Erika · 10:06 am** — “Súper” · “gracias” +**Erika · 10:08 am** — “Listo ya la moví” +**Johann · 10:09 am** — “Listo, ya la acepté” +**Erika · 10:23 am** — “gracias” + +**Erika · 11:29 am** — “Johan ¿esta actividad se acabó ayer?” +> 📷 **[imagen inferida — confianza alta]:** captura de una actividad del Excel/plan (la de escritura/sync en BIND). + +**Johann · 11:37 am** — “Sí, aún no he hecho pruebas de escritura en BIND, pero ya está” +**Erika · 11:37 am** — “Okey de acuerdo” + +### Viernes 24-jul — arranque de la sesión de validación del prototipo + +**Erika · 6:57 am** — “Buenos días Johan” · “¿Cómo estás?” · “¿Todo listo?” +**Johann · 6:57 am** — “Hola Erika, buenos días” · “Sii” · “Listo” · *(citando “como estas?”)* “Bien ¿y tú?” +**Erika · 6:57–6:59 am** — “Bien gracias” · “Pues ahorita le damos entonces va” · “Vamos a conectarnos” +**Johann · 6:58 am** — “Va” +**Erika · 7:00 am** — “Ya estamos” +*(→ inicia la sesión de validación del prototipo, [#55](../bitacora/REGISTRO.md))* + +### Lunes 27-jul — solicitud de avances de Etapa 1 + +**Erika · 7:11 am** — “Buenos días Johan, disculpa ¿me puedes pasar los avances de la etapa 1 pls?” +**Johann · 7:13 am** — “Buenos días Erika, sin problema” +**Johann · 7:14 am** — “Disculpa, ¿de casualidad ya tenemos el Jira para este proyecto?” +*(→ este mismo día por la mañana ocurre la sesión de API de Jira con Pedro, [#56](../bitacora/REGISTRO.md), donde se compromete el token PAF)* + +--- + +## Acciones derivadas + +1. **Johann — enviar conteo de horas (Excel con entregable + actividad + horas por etapa) + propuesta ajustada** por la integración Jira→BIND. Comprometido “entre hoy y mañana” el 22-jul (es decir, para el 23-jul). ⚠️ **Verificar si ya se envió.** +2. **Johann — preparar y entregar los avances de la Etapa 1** solicitados por Erika el 27-jul (7:11 am). +3. **Conservar el correo del flujo de facturación de Jira** que Erika envió el 22-jul (2:26 pm) — insumo para la integración. +4. **Pregunta abierta de Johann (27-jul):** ¿ya existe el Jira del proyecto? → se atiende en la sesión de API del 27-jul ([#56](../bitacora/REGISTRO.md)): Pedro genera el token **PAF** (1 año). + +## Observaciones + +- **Saga de reagenda:** la **validación del prototipo** pasó de jueves 23-jul 7 am → **viernes 24-jul 7 am** (Araceli, dueña del proceso, tuvo un tema personal). La **sesión de API de Jira** pasó de viernes 24-jul 7 am → viernes 24-jul 7 pm → **lunes 27-jul 7 am** (por disponibilidad de Pedro). +- Erika reiteró dos veces la pregunta de si **se ajustará la propuesta** por el cambio de la integración Jira — es un pendiente comercial, no solo técnico. diff --git a/fuentes/2026-07-27 - API de conexión con JIRA Transcript.txt b/fuentes/2026-07-27 - API de conexión con JIRA Transcript.txt new file mode 100644 index 0000000..80b8c72 --- /dev/null +++ b/fuentes/2026-07-27 - API de conexión con JIRA Transcript.txt @@ -0,0 +1,173 @@ +API de conexión con JIRA +Mon, Jul 27, 2026 + +0:03 - Noe Rocha +Hola Erika, buenos días. ¿Cómo estás? Bien, gracias. Todo muy bien, también. ¿Te confirmó Pedro? Sí. Vamos a esperar. Hola Johann, buenos días. Hola, ¿qué tal? Buenos días. + +0:21 - Unidentified Speaker +Hola Erika, hola Pedro. + +0:23 - Unidentified Speaker +Buenos días. Hola, buenos días. + +0:27 - Pedro Alberto Ayala Elizondo +¿Qué tal? Buenos días. + +0:31 - Noe Rocha +Bueno, pues ya estamos todos. Espero que hayan tenido un buen fin de semana. Caluroso, pero buen fin de semana. Bueno, a ver, como propósito del tema, dentro del descubrimiento que está haciendo Johann, Pedro, se ha visto que muchas partes del proceso, que en un principio no se habían especificado, están llegando a través de JIRA. Específicamente para temas de facturación. Como están haciendo de Jira, originalmente no habíamos contemplado la conectividad, pero ahorita ya vemos que va a ser necesario. Entonces, aquí lo que queremos ver contigo y que le expliques a Johann, bueno, más allá de cómo funciona Jira, sino cómo se conecta a través de un API Jira actualmente para extraer información y darle un poquito de vista de... No sé si quieras ver también el proceso ¿O nos vamos directamente a cómo funciona? ¿Cómo estamos haciendo hoy la conectividad a través del API? Sí, con la conectividad a través del API me es suficiente. + +1:38 - Johann +Vale, ya está. + +1:39 - Noe Rocha +Te dejo el micrófono, Pedro. + +1:41 - Noe Rocha +Adelante, por favor. Muy bien. + +1:43 - Pedro Alberto Ayala Elizondo +Bueno, con el API de Jira, hoy actualmente se está utilizando... Bueno, yo lo utilizo para varios tableros de servicio de TI. Entonces, yo lo utilizo para varios tableros de TI. Entonces, algunos los tengo para limpieza de usuarios, otros los hago para aprobadores, otros simplemente para conectores. Pero sus principales funciones, más que nada, es para crear y consultar actividades, tickets, el tema de aprobaciones, aprobaciones pendientes, el tema de documentos adjuntos. Sí tiene una muy amplia variedad en temas de extracción. En el que sí tiene mucho de dónde agarrar. Entonces, pues, no sé si tienes alguna pregunta en específico de la API, cómo se gestiona o cómo funciona. O si en verdad no sé si necesitas la llave como tal para generar una con alguna fecha de expiración en específica. + +2:46 - Johann +Sí, una API key y también entender por ejemplo ahora que me mencionas que si tiene la posibilidad de extraer por ejemplo los ítems de un tablero y consultar el estatus y cambiar el estatus de esa tarea es es muy útil sí sí todo todo es es accionable es tanto de lectura como de edición entonces vas a poder hacer cualquier tipo de creación que se podría hacer manual pero se puede hacer de manera entonces te paso igual quieres alguna por reporte xt te funciona? + +3:25 - Noe Rocha +disculpa con reporte txt? + +3:28 - Pedro Alberto Ayala Elizondo +si osea con un documento txt con el api si perfecto dejeme entonces lo genero vamos a llamarle De momento vamos a llamarle... Le estamos llamando Plataforma de Automatización Financiera. Vamos a llamarlo PAF, el token, para que no haya... Vamos a hacerlo de un año de expiración. Hasta el... 27 de julio del 2027. Y te la comparto, ya la tengo, si quieres ahorita te la por correo. Excelente. + +4:51 - Johann +No sé si quieren ver algo más, algo que tengan dudas del API en general. + +4:57 - Pedro Alberto Ayala Elizondo +Yo creo que van a salir las dudas ya una vez estando en acción con la herramienta, empezar a extraer los datos, empezar a jugar con las consultas. Yo tengo una duda. + +5:12 - Noe Rocha +El consumo de APIs es algo parecido a Vine, que te limita en cuanto a extracción? + +5:19 - Pedro Alberto Ayala Elizondo +Déjeme ver, porque creo que sí tiene el consumo al lado, pero estaba viendo que no tiene como una página como la de Bind, que es Bind de desarrolladores. Entonces creo que sí tiene una que es Atlassian. + +5:40 - Noe Rocha +Si quieres, nomás investiga y luego lo vemos con Johann. En este momento. Porque si voy a tener un límite de transacción por escritura o por consulta, entonces tendremos que ver cómo funciona esto sobre la operación. + +5:58 - Pedro Alberto Ayala Elizondo +Sí, creo que no existe uno por día. O sea, por día no hay, por así decirlo. + +6:05 - Noe Rocha +Y las APIs las generas desde tu cuenta o... Desde mi cuenta. Las puedes diferenciar, ¿verdad? Con nombre. Con el nombre. + +6:15 - Pedro Alberto Ayala Elizondo +Sí, justo así las tengo diferenciadas. De hecho, una práctica sí es ir renovando constantemente, bueno, no constantemente, pero ir renovando en cierto punto los tokens para evitar ambigüedades. Entonces, todavía están ahí todas en la base de datos y van a seguir apareciendo. + +6:34 - Unidentified Speaker +Ok. + +6:34 - Noe Rocha +¿Qué otra consideración importante es ahí con el uso de la API? De Argentina, particularmente. + +6:43 - Pedro Alberto Ayala Elizondo +Pues, como tal, es algo muy intuitivo. Es como cualquier extracción de datos mediante un API. Simplemente haciendo los comandos correctos mediante SQL o algún lenguaje, se pueden extraer los datos de manera clara. Yo, más que nada, lo utilizo para temas de SLA. Yo tengo unos SLA configurados en cada uno de los procesos que tenemos dentro de Jira. Entonces, tengo la configuración para que este, para que este API me esté arrastrando este tipo de información. Y también el tema de la facturación. ¿Con quién está la prover? ¿En qué estatus está? También han habido temas para cambiar estatus que se han podido lograr con el API. + +7:29 - Unidentified Speaker +Ok. + +7:29 - Noe Rocha +Muy bien. Se fue realmente bastante rápido. Entonces, ¿el acuerdo se lo mandas en un TXT? Sí, ya lo tengo. + +7:37 - Pedro Alberto Ayala Elizondo +Y no sé si así como... + +7:40 - Noe Rocha +hay una página de desarrolladores de Jira. Simplemente para temas de consulta que tenga que tener Johann sobre el uso. + +7:51 - Unidentified Speaker +Ok. + +7:52 - Pedro Alberto Ayala Elizondo +Sí, eso todo te lo incluyo ahorita en el correo como informativo. Va, de acuerdo. + +8:00 - Unidentified Speaker +Muy bien. + +8:01 - Noe Rocha +Johann, ya con esta información, ¿cuál sería su idea? + +8:06 - Johann +¿Cuáles serían los siguientes pasos? Los siguientes pasos, de mi parte, yo revisaría la documentación de Jira. También, si me pudieran compartir pronto el nombre exacto del tablero en donde vamos a consultar los tickets, también sería útil para saber a dónde o de dónde extraer esos tickets. Entonces, yo investigo la documentación y con la piqui que me comparte Pedro, ya puedo integrarlo al prototipo que estamos haciendo. + +8:35 - Noe Rocha +Pedro. Pero no sé si está identificable a través de la API. O con un nombre. Supongo que con el nombre del tablero. + +8:46 - Pedro Alberto Ayala Elizondo +Pero el tablero se refiere al de Power BI. + +8:50 - Noe Rocha +No, no. Es que el tablero... + +8:53 - Pedro Alberto Ayala Elizondo +Corrígeme, Johann. + +8:54 - Noe Rocha +Si te refieres más bien a la... Al Space? Sí, al Space. Así es. + +9:01 - Pedro Alberto Ayala Elizondo +Ah, ok, ok. ¿Dónde están almacenados todos los tickets? De facturación. Sí, en la bandeja de facturación. + +9:10 - Noe Rocha +Sí, porque hay varias bandejas. Entonces, para que no tengas que buscar en todas. Ser muy específico de a cuál nos referimos. + +9:20 - Pedro Alberto Ayala Elizondo +Esas son las bandejas que hay por hoy. Administración General, ITS, Medilo, Recursos Humanos, Facturación. Y por hoy, donde se encuentra lo bueno es aquí. + +9:31 - Noe Rocha +Ya. Y si, por ejemplo, cuando tú has hecho la revisión o has usado el API, ¿cómo identificas cuál bandeja es? Por la llave. + +9:44 - Pedro Alberto Ayala Elizondo +Por la llave. Esta tiene llave AG, llave DITCM, este es RH, este es FAC y este es HD. + +9:54 - Noe Rocha +Ok, entonces la llave para el tablero de facturación debería ser FC. Sí, FAC. + +10:00 - Unidentified Speaker +FAC. + +10:01 - Pedro Alberto Ayala Elizondo +FAC guión y el numerito. Y esos son todos los correspondientes al... Sí, lo bueno que la API de Jira es global, entonces vas a poder extraer información de todas las banderas, pero la bandeja que nos importa es facturación, pero es que hay ciertas cosas que pasan en recursos humanos que al momento de cerrarse en recursos humanos genera cosas en facturación, también en administración general. Haz de cuenta que facturación es como el, la bandeja padre y se va, es la que se alimenta de varios, de varios que vienen siendo las demás. + +10:41 - Unidentified Speaker +Por procesos diferentes. + +10:43 - Pedro Alberto Ayala Elizondo +Ajá. + +10:44 - Noe Rocha +Que todas vienen cayendo en facturación. Muy bien. + +10:49 - Pedro Alberto Ayala Elizondo +Bien, pero, eh, reviso. + +10:51 - Noe Rocha +¿Qué más, Johann? Creo que con esto es suficiente. + +10:57 - Johann +Igual, cuando comience a ser ya las pruebas, les comparto mis dudas, o si me hablan Hasta entonces voy a estar haciendo un script de consulta. Y si pudieran apoyarme, me gustaría también hacer un script de creación, eliminación y edición de un registro de prueba. Para ver que todo esté correcto y ya de ahí implementarlo. + +11:29 - Noe Rocha +O sea ya, digamos, probar una creación de un documento, dices tú? + +11:35 - Unidentified Speaker +Sí. + +11:36 - Noe Rocha +Si te parece, ya cuando sea el momento de hacer la creación. Hacemos una prueba en vivo. Y veremos cómo funciona. + +11:48 - Johann +Sí, sin problema. O también si tienen a la mano un script. Donde ya tengan un CRUD. + +11:57 - Noe Rocha +Fíjate que no tenemos algo así, ¿verdad Pedro? A través de API no. No hemos tenido la necesidad de hacerlo. Bueno, si es el checkpoint, entonces tú nos dices, Johann, para hacer para las dudas o para alguna prueba en específico. ¿Te parece? Sí, me parece bien. Vale, pues. Bueno, pues entonces es todo. Gracias por su desmañanada. + +12:29 - Pedro Alberto Ayala Elizondo +Buen inicio de semana. Igualmente. Igualmente. Bye. Muchas gracias. \ No newline at end of file diff --git a/fuentes/2026-07-27 - Correo - Pedro medicion de consumo API Jira y token.md b/fuentes/2026-07-27 - Correo - Pedro medicion de consumo API Jira y token.md new file mode 100644 index 0000000..7a1bf86 --- /dev/null +++ b/fuentes/2026-07-27 - Correo - Pedro medicion de consumo API Jira y token.md @@ -0,0 +1,57 @@ +# Correo — Pedro Ayala → Johann · medición de consumo de la API de Jira y entrega del token + +**Canal:** Correo +**Fecha:** 2026-07-27, 07:40 am +**De:** Pedro Alberto Ayala Elizondo `` +**Para:** Johann · **CC:** Noe Rocha, Erika Chávez +**Asunto:** Seguimiento: medición de consumo API de Jira y accesos +**Relación:** cumple los compromisos de Pedro en la sesión de API de Jira del mismo día ([REGISTRO #56](../bitacora/REGISTRO.md)): entregar el token e investigar los límites de consumo. + +--- + +## Transcripción del correo + +> Buenos días, Johan. Espero te encuentres bien. +> +> Gracias por la sesión y por tu tiempo. Te comparto el detalle de cómo se mide el consumo de la API de Jira, porque tiene un par de puntos que hay que tener claros. +> +> **Cómo funciona el límite:** +> +> No existe un límite de volumen del tipo "X llamadas por mes". El uso de la API tampoco genera costo adicional sobre la licencia. Lo que sí existen son los **límites de velocidad**, y actualmente son **tres independientes que operan en paralelo**: +> +> 1. **Cuota por puntos (por hora).** Cada llamada consume puntos según el trabajo que implica: 1 punto base más 1 punto por objeto de dominio (issues, proyectos) o 2 puntos por objeto de identidad (usuarios, grupos, roles). **Las escrituras solo cobran el punto base.** La bolsa por defecto es de **65,000 puntos por hora**. +> 2. **Burst por segundo.** Aplica a todo el tráfico, incluido el de API token. Los defaults son **100 request por segundo para GET y POST, y 50 para PUT y DELETE**, con un bucket independiente por endpoint y por tenant. Hay endpoints con límites propios más bajos; el más notable es el de consulta de clientes de un service desk, **restringido a 5 por segundo**. +> 3. **Límite por issue en escrituras.** **20 operaciones de escritura cada 2 segundos y 100 cada 30 segundos** sobre un mismo ticket. +> +> Cualquiera de los tres devuelve **HTTP 429**. El header **`RateLimit-Reason`** indica cuál se activó. +> +> **Sobre la página de desarrolladores para revisar consumo:** aquí la respuesta es que **no existe y es una limitante de Jira**. +> +> - No hay dashboard de consumo en la administración de Jira. No hay pantalla de administrador ni reporte nativo. +> - El Developer Console de Atlassian solo sirve si uno publica una app propia, y ahí únicamente se ve el tier asignado, no el consumo de la instancia. +> - El detalle de uso por API token requiere **Atlassian Guard Premium**, que es una licencia aparte. +> - Existen apps de terceros en Marketplace que estiman el consumo, pero trabajan por muestreo, no con telemetría real de Atlassian. +> +> La **única fuente confiable son los headers de respuesta**: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-NearLimit` (que se activa cuando queda menos del 20% de capacidad), y en respuestas 429 también `X-RateLimit-Reset`, `Retry-After` y `RateLimit-Reason`. +> +> Te comparto el API token en el siguiente link de Google Drive: +> +> `https://drive.google.com/drive/folders/1J4GZcV7gndpXJ6qlXtcpK6ZiNZbvkM_0?usp=sharing` +> +> Si se presenta algún problema con el acceso, estoy al pendiente. +> +> Saludos, + +## Respuesta de Johann + +> Enterado, muchas gracias Pedro! Saludos + +--- + +## Notas e implicaciones para el desarrollo + +- **Cierra el pendiente de la sesión #56:** ya no hay incógnita sobre el límite. **No hay tope mensual** ni costo por uso; el diseño del sync debe respetar **límites de velocidad**, no un cupo diario como en BIND (20K/día). +- **El sync debe autorregularse leyendo los headers** `X-RateLimit-*`: pausar/reducir ritmo cuando `X-RateLimit-NearLimit` aparezca (<20% de capacidad) y respetar `Retry-After` ante un 429. No hay dashboard, así que la telemetría vive en las respuestas. +- **Las escrituras son baratas en puntos** (solo el punto base): favorece la capa de escritura (crear cotizaciones/tickets) frente a las consultas de identidad (2 puntos c/u). +- **Cuidado con el límite por-issue en escrituras** (20/2 s, 100/30 s por ticket): relevante si la automatización hiciera varias escrituras sobre el mismo ticket en ráfaga. +- ⚠️ **El token vive en el enlace de Google Drive** de arriba — tratar como credencial: descargarlo, moverlo a user-secrets / Key Vault y **no** dejarlo en texto plano en el repo ni en el disco. (El conector de Google Drive de claude.ai requiere autorización; el token no se consultó desde aquí.) diff --git a/planeacion/Avance-Etapa1-2026-07-27.md b/planeacion/Avance-Etapa1-2026-07-27.md new file mode 100644 index 0000000..f2625b9 --- /dev/null +++ b/planeacion/Avance-Etapa1-2026-07-27.md @@ -0,0 +1,59 @@ +# Corte de avance — Etapa 1 + +**Fecha:** 27-jul-2026 (corte de los lunes, formato pedido por Erika: entregable + actividad + horas por etapa) +**Etapa:** Plataforma base y sincronización con BIND +**Rango estimado contractual:** 32–39 h · **Horas registradas de Etapa 1:** 17.0 h +**Adjunto:** `Plan-actividades-avance-2026-07-27.xlsx` + +> Documento interno de Johann. El mensaje para Erika va abajo; el resto es sustento propio (no se comparte). + +--- + +## Mensaje breve para Erika (WhatsApp) + +> Hola Erika, buen día. Te comparto el avance de la Etapa 1 al corte de hoy (Excel adjunto, con entregable · actividad · horas por etapa como lo pediste). +> +> El **núcleo de la plataforma ya está construido y probado contra producción**: autenticación con roles y bitácora de auditoría, arquitectura multi-tenant con aislamiento por RLS, el cliente de la API de BIND, la sincronización de clientes, facturas y cotizaciones, el modelo central de facturas con sus estados y la cartera separada por moneda. La sincronización del histórico ya corrió y cuadró: **1,494 facturas** con sus totales de cartera coincidiendo con BIND. +> +> Lo que sigue pendiente es, sobre todo, la **capa de escritura (cotización→factura), que dejé en pausa a propósito hasta que definan el flujo de facturación en la sesión del martes**, ya que de ahí dependen las reglas. También quedan por cerrar el afinado de datos de prueba y la parte de Azure/CI-CD, que depende de los accesos de su lado. +> +> En horas voy en **17 h de Etapa 1** (rango estimado 32–39 h). Con la key de Jira que nos pasó Pedro hoy y las definiciones del martes, arranco la integración con Jira y la capa de escritura. Cualquier duda quedo al pendiente. 🙌 + +*(Nota: el ajuste de la propuesta y el conteo de horas formal van por separado; este mensaje es solo el avance de Etapa 1.)* + +--- + +## Sustento interno + +### Terminado y verificado contra producción +- **Backend base:** autenticación con JWT propio, matriz de roles (Finanzas, Dirección, Operaciones, Administración) con policies, y **bitácora de auditoría universal** (logins, sync, transiciones, escritura). — *entregable contractual 1* ✅ +- **Multi-tenant + RLS real de Postgres** (no solo filtro EF): políticas `tenant_isolation` fail-closed en las 8 tablas de negocio + interceptor de conexión. — *entregable 2* ✅ *(verificación de aislamiento local pendiente de rol de app no-superusuario; las políticas ya están correctas — ver REGISTRO #53)* +- **Cliente productivo de BIND** en C#: paginación OData, reintentos, control de cuota y errores; solo lectura por defecto. — *entregable 3* ✅ +- **Sync de clientes** (full-scan barato + hash + detalle solo de nuevos/cambiados, normalización RFC/nombre, dedup por RFC exacto). — *entregable 5* ✅ +- **Sync de facturas y cotizaciones** con estados normalizados, tipo de cambio y detección de pagos (fecha de detección, ADR-004). — *entregable 6* ✅ +- **Modelo central de facturas con estados** (Emitida, Vigente, Vencida, Pagada, Cancelada) como función pura con pruebas. — *entregable 7* ✅ +- **Cartera por moneda** (jamás suma monedas): `GET /api/cartera` verificado BD↔endpoint — MXN 17 abiertas $1,568,772.32 · USD 92 abiertas $320,379.06. +- **Sync histórico corrido y verificado** (jamás en vivo): 1,494 facturas + 43 cotizaciones, detalle 1,494/1,494, idempotencia comprobada, 0 pagos falsos. (REGISTRO #52) +- 26/26 pruebas unitarias verdes. + +### En construcción / en pausa +- **Capa de escritura controlada (cotización→factura)** — *entregable 4*. 🔴 **En pausa deliberada** hasta la definición del flujo de facturación (sesión martes 28-jul con Arturo/Araceli): de ahí salen las reglas de prefactura, PPD/PUE, alta de cliente y qué estatus de Jira dispara qué. El andamiaje (pipeline dry-run→confirm, flags apagados, `WriteOperations`) está diseñado; se implementa contra las reglas ya cerradas. +- **Scheduler + backfill** (sync programado cada 15 min) — el sync ya funciona en manual; falta automatizarlo. +- **Datos de prueba (seeder) + runbook** — *entregable 8*: migraciones ✅, seeder ficticio pendiente. +- **Suite de pruebas de flujos críticos** (integración) — pendiente. + +### Dependencias externas (lado Balam) +- **Definición del flujo de facturación/prefacturación** — sesión martes 28-jul (Erika coordina). Desbloquea la capa de escritura. +- **Correo del flujo de facturación de Jira** (Erika lo envió 22-jul) — a incorporar. +- **Token de Jira (PAF)** recibido el 27-jul + docs de Atlassian; falta confirmar límites de consumo (Pedro investiga). Bandeja: **Facturación (FAC)**. +- **Acceso a Azure + CI/CD** (Pedro/Noé) — condiciona el despliegue. + +## Criterio de medición +- **Horas de Etapa 1:** 17.0 h registradas de un rango de 32–39 h (**~44–53 % del esfuerzo estimado**). +- **Entregables contractuales:** **6 de 8 terminados** (1, 2, 3, 5, 6, 7); el 8 parcial (migraciones sí, seeder no); el 4 (escritura) en pausa por definición de Balam. +- Se reporta por hora + entregable, no un porcentaje global único, para no dar una cifra engañosa. El Excel muestra ~82 % ponderado por actividad porque el trabajo restante (escritura, seeder, scheduler) es de menor peso que el núcleo ya hecho, pero **la escritura está bloqueada por la definición pendiente de Balam**, no por avance de desarrollo. + +## Puntos de juicio a confirmar por Johann antes de enviar +1. **Horas 22–27 jul:** solo cargué las sesiones documentadas (reglas 22-jul 0.80 h, validación 24-jul 1.05 h como Etapa 0, API Jira 27-jul 0.20 h). Si trabajaste desarrollo adicional en esa ventana, hay que sumarlo. +2. **% de Etapa 1 (82 %):** es el valor ponderado heredado del corte del 21-jul + avance; si prefieres una lectura más conservadora (por horas, ~50 %), lo ajusto. +3. **Tono del mensaje:** el borrador enmarca la capa de escritura como "en pausa por la definición del 28-jul" (pone la pelota de su lado, y es verdad). Si prefieres suavizarlo, lo cambio. diff --git a/planeacion/Guion-validacion-prototipo-2026-07-23.md b/planeacion/Guion-validacion-prototipo-2026-07-23.md new file mode 100644 index 0000000..88253e1 --- /dev/null +++ b/planeacion/Guion-validacion-prototipo-2026-07-23.md @@ -0,0 +1,119 @@ +# Guion — Validación del prototipo Etapa 0 (jue 23-jul, 7:00 pm) + +**Material:** `../prototipo/Prototipo-Balam-Etapa0.pdf` (11 páginas) + demo en paputec.mx/balam. +**Meta de la sesión:** que digan "sí, así opera Balam" pantalla por pantalla → cierra la Etapa 0. +**Regla de oro:** en cada pantalla, terminar con UNA pregunta de validación. No presentar; validar. + +--- + +## Apertura (2 min) + +> "Gracias por el tiempo. Lo que van a ver es el proceso que ustedes me enseñaron en las sesiones con Araceli y Arturo, convertido en pantallas. Todo es dato ficticio. El objetivo de hoy es que me digan qué SÍ refleja su operación y qué corregimos — cada 'así no es' de hoy me ahorra semanas de desarrollo." + +Aviso útil: "Ayer con Arturo y Araceli aprendí cosas nuevas (fee, flujo Jira); les voy a ir señalando dónde ya sé que hay ajustes." + +--- + +## Pág. 2 · El flujo de principio a fin (3 min) + +Recorre los 5 pasos: **Solicitud Jira → Cotización BIND → Prefactura → Aprobación humana → CFDI + Envío**. + +> "Este es el mapa de todo. La automatización está donde ustedes la pidieron: después de Jira, y con validación humana antes de timbrar. Aprobar y timbrar son acciones separadas — nada se timbra solo." + +**⚠️ AQUÍ VA LA PREGUNTA GRANDE (caja de reglas, primera línea "PPD por defecto"):** +> "Esta regla salió del Discovery: PPD por defecto porque cobran a crédito 30–90 días. Pero al sincronizar el histórico real encontré que las 1,374 facturas con método de pago son TODAS PUE, cero PPD. ¿Es política del despacho o práctica que quieren corregir? Cambia el default de la plataforma y toca el requerimiento del SAT que ya vivieron." + +Anotar la respuesta — define B7 (capa de escritura). + +- Validar también: "¿Recordatorios de morosidad a todos los clientes, sin excepciones — sigue firme?" (lo decidió Ara el 6-jul). + +## Pág. 3 · Acceso (30 seg — no gastar tiempo) + +> "Ingreso con cuenta interna, control de sesión y roles — cada quien ve lo suyo. Esto ya está construido en el backend real." + +## Pág. 4 · Panel de control (4 min) + +Señalar en orden: facturado del mes **separado MXN/USD (nunca se suman monedas)** · emitidas vs pendientes · cartera vencida · bandeja "Qué necesita atención". + +> "La bandeja es el corazón: bloqueos por falta de cotización, facturas vencidas escaladas, prefacturas esperando aprobación, clientes nuevos sin cédula, facturas emitidas sin enviar. Cada línea tiene responsable y antigüedad." + +Dato para credibilidad: "Esto ya no es dibujo — el backend real ya sincroniza la cartera de producción: 1,494 facturas, y los totales cuadran contra BIND al centavo." + +**Pregunta:** "¿Son estos los 4 números que quieren ver al abrir? ¿Falta o sobra una tarjeta?" (Recordar: Pedro ya tiene Power BI de aging — esto es operación, no reporteo; no duplico lo suyo.) + +## Pág. 5 · Solicitudes (Jira) (3 min) + +> "La entrada del flujo: sin ticket, no se factura — tal como operan hoy. Filtros por estatus: por validar, listos, bloqueados, facturados." + +Conectar con ayer: +> "Con lo que me mostró Arturo ayer, esto mapea directo a su space 'Facturación' y su flujo de estatus — donde 'resuelto' es el que confirma facturación válida. La sesión con Pedro para el API de Jira nos dirá si estos tickets entran solos o se capturan." + +**Pregunta:** "¿Las columnas (tipo, cliente, moneda, monto, crédito, recurrente, estatus) son las que Arturo necesita para decidir qué facturar?" + +## Pág. 6 · Detalle de la solicitud (3 min) + +Señalar: datos del ticket, adjuntos (cotización, OC, horas con VoBo), doble check de administración, **cotización BIND vinculada como requisito**. + +**Nota ⚠️ (fila "Cliente nuevo"):** +> "Ayer Arturo me mostró el alta completa en BIND. La decisión que les pido hoy: cuando el ticket trae un cliente que NO existe en BIND, ¿la plataforma solo lo detecta y avisa a administración, o también lo da de alta? Mi recomendación para el MVP: detectar y bloquear; el alta la hace administración en BIND como hoy." + +Anotar decisión — cruza con la estimación de ~10 h de Jira→BIND. + +## Pág. 7 · Preparación, aprobación y emisión (4 min) + +> "Asistente de 5 pasos: cotización BIND (sin cotización no se puede continuar) → datos de factura → conceptos e IVA 16%/0% con alerta si no cuadra → prefactura en simulación, sin timbrar → aprobación humana. Aprobar NO timbra: son dos clics distintos, de dos momentos distintos." + +Reforzar seguridad (le importa a Noé): +> "Y cuando llegue la escritura real: dry-run, confirmación humana por factura y feature flag apagado por defecto — como acordamos ayer, con todo el cuidado de que es producción." + +**Pregunta:** "¿Quién aprueba en la vida real — siempre Arturo, o hay segundo aprobador?" + +## Pág. 8 · Envío al cliente (3 min) + +> "El proceso NO termina al timbrar: termina cuando el correo sale con los adjuntos correctos. Checklist bloqueante por cliente — ejemplo CEMEX: PDF+XML automático, Excel de horas con VoBo, asunto con su nomenclatura exacta. Si falta algo, el envío se bloquea — hoy un error de estos rebota la factura y con 90 días de crédito cada rebote empuja el cobro." + +**Pregunta / pendiente:** "Para cargar las reglas reales necesito el Excel de particularidades por cliente que quedó con Ara y Arturo — ¿cómo va? Ya revisé los procedimientos que me mandaron el 16-jul; el Excel me completa destinatarios y nomenclaturas." + +## Pág. 9 · Cuentas por cobrar (3 min) + +> "El aging que hoy llevan en Excel, leído de BIND: por vencer, 1–30, 31–60, 61–90, +90 — MXN y USD siempre separados, el tipo de cambio DOF es solo informativo. Saldo y días de mora por factura." + +Credibilidad: "Los números reales ya viven en el backend: la cartera sincronizada cuadra exacta contra BIND." + +**Pregunta:** "¿Estos rangos de aging son los que usan? ¿Les sirve el corte por factura o necesitan también por cliente?" + +## Pág. 10 · Pagos y recordatorios (4 min) — LA PANTALLA CON MÁS AJUSTES DE AYER + +1. **Fee (caja "Tolerancia por comisión"):** +> "Ayer Araceli me aclaró el proceso real: el fee bancario lo registra y deduce EL DESPACHO — Balam no hace ese asiento. Entonces esta pantalla se ajusta: la plataforma DETECTA la diferencia en pagos internacionales, la ETIQUETA como probable fee y avisa; quien salda es el despacho. ¿De acuerdo con ese ajuste?" + +2. **Fecha de detección:** "La fecha que muestro es la del registro en BIND (lo captura el despacho), no la fecha valor del banco — BIND no expone pagos individuales. ¿Les funciona así para el MVP?" + +3. **Recordatorios (columna derecha) — poner el límite con suavidad:** +> "Ojo con esta parte: las alertas D+1 y el escalamiento D+15 son INTERNAS y van en el MVP. Los correos automáticos AL CLIENTE (D+5, D+30) están cotizados en el Anexo B — aquí los dejo visibles y preparados para activarse, pero no son parte de esta fase. Lo señalo para que no haya sorpresa al cierre." + +## Pág. 11 · Bitácora (2 min) + +> "Todo queda registrado: quién aprobó, quién emitió, qué override de IVA se hizo y por qué, con ticket Jira y folio BIND. Esto responde exactamente al problema que me contó Arturo ayer: 'dijeron que ya facturaron y no había evidencia'. Aquí la evidencia es automática. Y la bitácora ya existe en el backend real, no solo en el prototipo." + +--- + +## Cierre (5 min) + +1. **Pedir el veredicto explícito:** +> "¿Validan que este flujo representa su operación? Con su OK doy por cerrada la Etapa 0, aplico los ajustes que anotamos y el demo público lo doy de baja como quedamos." + +2. **Recap de decisiones tomadas hoy** (leerlas en voz alta): PUE/PPD · alta de cliente (detectar vs crear) · fee = despacho confirmado · recordatorios internos vs Anexo B · rangos de aging. + +3. **Siguientes pasos** (recordar compromisos de ayer): diagrama del flujo Jira en tamaño legible · sesión con Pedro (API Jira + facturación recurrente) · Excel de particularidades de envío · Azure esta semana. + +4. **Si el ambiente lo permite, la comercial:** +> "Ing. Noé, ya de regreso del viaje — ¿pudieron revisar la propuesta v1.2 para lo de la facturación inicial de las 30 horas?" + +## Chuleta de respuestas rápidas + +- **"¿Y si queremos que también mande correos al cliente?"** → Está cotizado en Anexo B; la pantalla ya lo deja preparado. Lo activamos como ampliación cuando cierre el MVP. +- **"¿Esto ya jala con BIND de verdad?"** → La lectura sí: clientes, facturas, cotizaciones y cartera ya sincronizan de producción, en solo-lectura. La escritura va con los candados acordados. +- **"¿Cuándo estará?"** → Etapa 1 va adelantada (backend, auth, sync y seguridad por tenant ya construidos). Las fechas finas dependen de Azure y de las decisiones de hoy. +- **"¿Multiempresa / Regiotour?"** → Fuera del MVP (un token BIND por empresa); el diseño ya lo soporta a futuro. +- **"¿Forecast por contrato?"** → Lo dijo Noé ayer: no es para ahorita; queda anotado para una fase posterior. diff --git a/planeacion/Plan-actividades-avance-2026-07-27.xlsx b/planeacion/Plan-actividades-avance-2026-07-27.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8f05802b11ea111924c90eb7e2633d4e7845a2c0 GIT binary patch literal 8630 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%0DIy^L^%2U;E%IU_3$nkS F{tp1Xw(S4_ literal 0 HcmV?d00001 diff --git a/planeacion/Seguimiento-horas.csv b/planeacion/Seguimiento-horas.csv index 0e8bc91..5996b95 100644 --- a/planeacion/Seguimiento-horas.csv +++ b/planeacion/Seguimiento-horas.csv @@ -28,3 +28,5 @@ fecha,semana,etapa,actividad_id,actividad,horas,estado_hora,fuente_evidencia,fac 2026-07-21,2026-W30,1,E1-03,B6: RLS real de Postgres por tenant (migración + interceptor + filtros EF),0.50,confirmada,bitacora/REGISTRO.md#53,si,"Sesión asistida por IA; verificación manual en psql; tiempo real de sesión" 2026-07-21,2026-W30,1,E1-05,Cierre de sesión: Excel de avance regenerado + bitácora + control de horas,0.25,confirmada,bitacora/REGISTRO.md#52-53,si,"Sesión asistida por IA; tiempo real de sesión" 2026-07-22,2026-W30,1,E1-05,"Sesión de reglas Etapa 1 con Noé, Arturo y Araceli (alta de clientes, fee, flujo Jira)",0.80,confirmada,bitacora/REGISTRO.md#54,si,"Duración real ~48 min según transcript (7:00–7:48 am)" +2026-07-24,2026-W30,0,E0-07,"Sesión de validación del prototipo Etapa 0 con Noé, Arturo y Araceli — APROBADO",1.05,confirmada,bitacora/REGISTRO.md#55,si,"Duración ~1 h 4 min según transcript; Etapa 0 validada, queda 1 definición de proceso (flujo Jira)" +2026-07-27,2026-W31,1,E1-07,"Sesión de API de Jira con Pedro (token PAF, bandeja FAC)",0.20,confirmada,bitacora/REGISTRO.md#56,si,"~12 min; token PAF comprometido (1 año) por correo; integración inicia tras definición del flujo 28-jul" diff --git a/planeacion/generar_avance_2026_07_27.py b/planeacion/generar_avance_2026_07_27.py new file mode 100644 index 0000000..c4dfcd2 --- /dev/null +++ b/planeacion/generar_avance_2026_07_27.py @@ -0,0 +1,146 @@ +"""Genera Plan-actividades-avance-2026-07-27.xlsx a partir del del 21-jul. +Aplica las horas y estatus reales al 27-jul: sesión de reglas (22-jul) y +validación del prototipo (24-jul, APROBADO) completadas; sesión de API de Jira +(27-jul) en curso; capa de escritura EN PAUSA a la espera de la definición del +flujo de facturación (sesión 28-jul con Arturo/Araceli). +Reutiliza el estilo/semáforo del archivo del 21-jul.""" +import re +from datetime import date +import openpyxl +from openpyxl.styles import Font, Alignment, PatternFill, Border, Side + +SRC = "/Users/johann/Desktop/Proyectos personales/BALAM/planeacion/Plan-actividades-avance-2026-07-21.xlsx" +DST = "/Users/johann/Desktop/Proyectos personales/BALAM/planeacion/Plan-actividades-avance-2026-07-27.xlsx" +HOY = date(2026, 7, 27) + +CAFE, CREMA, GRIS_B, AMARILLO = "331F0E", "FDF3D8", "D9D9D9", "F7BD0C" +V_FILL, V_FONT = "C6EFCE", "006100" # verde +A_FILL, A_FONT = "FFEB9C", "9C6500" # amarillo +R_FILL, R_FONT = "FFC7CE", "9C0006" # rojo +G_FILL, G_FONT = "F2F2F2", "595959" # gris + +C_PCT, C_BLQ, C_EST, C_TRAB, C_STAT = 7, 8, 9, 10, 11 + +# Prefijo de la actividad -> overrides de datos (pct=%, trab=horas, comienzo/fin=fechas texto) +OVERRIDES = { + "Integracion de plataformas Balam": dict(pct=0.67, trab=40), + "Etapa 0": dict(pct=1.0, trab=23), + "Documento de hallazgos": dict(pct=1.0), + "Sesión de validación del prototipo": dict(pct=1.0, trab=1.05, + comienzo="vie 24/07/26", fin="vie 24/07/26"), + "Etapa 1": dict(pct=0.82, trab=17), + "Demostración semanal": dict(trab=1.75), + "Sesión de reglas y dudas": dict(pct=1.0, trab=0.80), + "Definición de alcance Jira": dict(pct=0.40, trab=0.20), +} + +# Estatus a mano (gana sobre el semáforo automático): texto, fill, font, negrita +K_ESPECIAL = { + "Documento de hallazgos": ("✅ Completada", V_FILL, V_FONT, False), + "Sesión de validación del prototipo": ("✅ Validado (aprobado)", V_FILL, V_FONT, True), + "Demostración semanal": ("🟡 En curso (semanal)", A_FILL, A_FONT, False), + "Modelo de facturas": ("🟡 En curso · falta seeder", A_FILL, A_FONT, False), + "Capa de escritura controlada": ("🔴 En pausa · def. Balam 28-jul", R_FILL, R_FONT, True), + "Sesión de reglas y dudas": ("✅ Completada", V_FILL, V_FONT, False), + "Definición de alcance Jira": ("🟡 En curso · API Jira 27-jul", A_FILL, A_FONT, False), + "Configuración de infraestructura en Azure": ("🟡 Pendiente (Balam)", A_FILL, A_FONT, False), + "CI/CD": ("🔴 Pendiente · dep. Azure", R_FILL, R_FONT, True), +} + +def fecha(celda): + m = re.search(r"(\d{2})/(\d{2})/(\d{2})", str(celda or "")) + return date(2000 + int(m.group(3)), int(m.group(2)), int(m.group(1))) if m else None + +def pinta(celda, fill, font_color, bold=False): + celda.fill = PatternFill("solid", fgColor=fill) + celda.font = Font(color=font_color, bold=bold, size=10) + celda.alignment = Alignment(horizontal="center", vertical="center") + +wb = openpyxl.load_workbook(SRC) +ws = wb.active + +# 1) Aplica overrides de datos por prefijo de nombre +for row in range(2, ws.max_row + 1): + nombre = str(ws.cell(row=row, column=1).value or "").strip() + if not nombre: + continue + for prefijo, ov in OVERRIDES.items(): + if nombre.startswith(prefijo): + if "pct" in ov: ws.cell(row=row, column=C_PCT, value=ov["pct"]) + if "trab" in ov: ws.cell(row=row, column=C_TRAB, value=ov["trab"]) + if "comienzo" in ov: ws.cell(row=row, column=3, value=ov["comienzo"]) + if "fin" in ov: ws.cell(row=row, column=4, value=ov["fin"]) + break + +# 2) Recalcula el semáforo con HOY=27-jul (mismas reglas que el del 21-jul) +for row in range(2, ws.max_row + 1): + nombre = str(ws.cell(row=row, column=1).value or "").strip() + if not nombre or nombre.startswith("✅") or nombre.startswith("▬"): + continue + es_etapa = nombre.startswith("Etapa") or nombre.startswith("Integracion") + pct = ws.cell(row=row, column=C_PCT).value or 0 + fin = fecha(ws.cell(row=row, column=4).value) + ini = fecha(ws.cell(row=row, column=3).value) + stat = ws.cell(row=row, column=C_STAT) + + if es_etapa: + stat.value = "" + elif pct >= 1: + stat.value = "✅ Completada"; pinta(stat, V_FILL, V_FONT) + elif fin and fin < HOY: + stat.value = "🔴 Vencida"; pinta(stat, R_FILL, R_FONT, bold=True) + elif ini and ini <= HOY: + stat.value = "🟡 En curso"; pinta(stat, A_FILL, A_FONT) + elif pct > 0: + stat.value = "🟢 Adelantada"; pinta(stat, V_FILL, V_FONT) + else: + stat.value = "⚪ Próxima"; pinta(stat, G_FILL, G_FONT) + + # semáforo en la celda de % + pcel = ws.cell(row=row, column=C_PCT) + if not es_etapa: + if pct >= 1: pinta(pcel, V_FILL, V_FONT, bold=True) + elif pct > 0: pinta(pcel, A_FILL, A_FONT, bold=True) + elif fin and fin < HOY: pinta(pcel, R_FILL, R_FONT, bold=True) + pcel.number_format = "0%" + ws.cell(row=row, column=C_TRAB).number_format = "0.0" + +# 3) Overrides finos de estatus (bloqueos y dependencias) +for row in range(2, ws.max_row + 1): + nombre = str(ws.cell(row=row, column=1).value or "").strip() + for prefijo, (txt, fill, font, bold) in K_ESPECIAL.items(): + if nombre.startswith(prefijo): + stat = ws.cell(row=row, column=C_STAT) + stat.value = txt + pinta(stat, fill, font, bold) + break + +# 4) Encabezado de la columna de estatus y pie +ws.cell(row=1, column=C_STAT, value=f"Estatus (hoy {HOY.day}-jul)") + +# 5) Reescribe leyenda/notas (borra las viejas de la línea de HOY del 21-jul) +for row in range(ws.max_row, 1, -1): + v = str(ws.cell(row=row, column=1).value or "") + if v.startswith("✅ Completada ·") or v.startswith("▬ La línea roja"): + for col in range(1, C_STAT + 1): + ws.cell(row=row, column=col).value = None + +ley = ws.max_row + 2 +notas = [ + ("✅ Completada · 🟡 En curso · 🔴 Vencida/Pendiente · ⚪ Próxima", G_FONT, True), + ("Núcleo de la Etapa 1 construido y verificado contra producción: autenticación y roles, " + "bitácora, multi-tenant con RLS, cliente de BIND, sincronización de clientes/facturas/" + "cotizaciones, modelo de facturas con estados y cartera por moneda.", CAFE, False), + ("🔴 La capa de escritura (cotización→factura) queda EN PAUSA a la espera de la definición " + "del flujo de facturación (sesión del martes 28-jul con Arturo y Araceli).", "9C0006", False), + ("API de Jira: token recibido el 27-jul; la integración inicia una vez definido el flujo.", CAFE, False), +] +for i, (txt, color, bold) in enumerate(notas): + c = ws.cell(row=ley + i, column=1, value=txt) + c.font = Font(italic=True, size=9, color=color, bold=bold) + +ws.freeze_panes = "A2" +ws.oddFooter.center.text = "Avance al 27-jul-2026 · Horas conforme al control local (pendiente conciliar con Jira)" + +wb.save(DST) +print("OK ->", DST)