diff --git a/bitacora/PENDIENTES.md b/bitacora/PENDIENTES.md index de637d2..dc7aedb 100644 --- a/bitacora/PENDIENTES.md +++ b/bitacora/PENDIENTES.md @@ -10,7 +10,7 @@ _Última actualización: 2026-08-01, noche ([#61]: E1 técnica cerrada — B5 sc - [x] ~~📊 **Enviar el Excel de horas de las etapas siguientes (2, 3)**~~ → **Hecho (29-jul, 8:18 am):** `Avance-Balam-2026-07-28.xlsx` por WhatsApp; 👍 de Erika. Ver [REGISTRO #59](REGISTRO.md). - [x] ~~🔑 **Destrabar el acceso a la API de Jira (401 del 29-jul)**~~ → **Resuelto (30-jul):** Pedro confirmó el correo del apikey (`pedro.ayala@...`), regeneró el token y `GET /myself` respondió 200. Ver `../planeacion/Investigacion-API-Jira.md` (Bloque 0). - [x] ~~🌱 **Seeder de datos de prueba (B9)**~~ → **Hecho (1-ago):** `DevDataSeeder` opt-in con datos ficticios (5 estados × MXN/USD × PUE/PPD). El desfase con lo reportado a Erika el 27-jul quedó saldado. Ver [REGISTRO #61](REGISTRO.md). -- [ ] 🔑 **Copiar `propuesta/token-jira.txt` a esta máquina** (quedó en la otra computadora) y correr `../planeacion/pruebas-jira-lectura.sh` — completa los bloques 2/3/4/5 (solo lectura) de `../planeacion/Investigacion-API-Jira.md`. +- [x] ~~🔑 **Copiar `propuesta/token-jira.txt` a esta máquina** y correr `../planeacion/pruebas-jira-lectura.sh`~~ → **Hecho (6-ago):** script corrido completo contra FAC (todo 200; auth OK con el token renovado) + sondeo dirigido de customfields. **Los IDs quedaron capturados y documentados** en `../planeacion/Investigacion-API-Jira.md` (sección 6-ago): sí existen "Monto sin IVA"/"Monto con IVA" pero casi nadie los llena (2/69); "Nombre del Cliente" y "Periodo de Incidencias" llegan como ADF. ⚠️ El token estaba suelto en `balam-plataforma/token-jira.txt` (repo del cliente, sin ignorar): se movió a `propuesta/` + user-secrets y se blindó el `.gitignore` del subrepo. - [ ] 🧪 **Crear el sandbox Jira Cloud Free propio** (decidido 1-ago) para desarrollar escritura (transiciones/comentarios/creación) sin tocar FAC; la prueba en la instancia real sigue reservada a la sesión acompañada que autorizó Noé. - [ ] ⏱️ **Capturar horas 28-jul→1-ago en el CSV** (propuesta preparada, validar montos) y **regenerar `Avance-Balam` desde script** — la copia en disco del 28-jul está desincronizada (re-guardado manual). - [ ] 📅 **Demo del viernes 7-ago:** material listo — frontend (login→cartera→facturas→detalle+PDF→clientes), seeder demo como respaldo si BIND falla, scheduler en vivo. diff --git a/planeacion/Investigacion-API-Jira.md b/planeacion/Investigacion-API-Jira.md index 7a8e974..d99f68a 100644 --- a/planeacion/Investigacion-API-Jira.md +++ b/planeacion/Investigacion-API-Jira.md @@ -290,3 +290,31 @@ Estas van por correo o en la siguiente sesión; ninguna se contesta probando: > Para JSM, usar `/rest/servicedeskapi` al consultar request types y su contrato de campos. FAC tiene los request types Bajas (84), Facturación adicional (83), Automatización (389) y Facturación (12). Bajas y Facturación adicional ya tienen su contrato verificado; el segundo incluye cliente, moneda, crédito, periodo y recurrencia, pero no monto ni conceptos estructurados. > > Pendientes técnicos: revisar changelog y origen de tickets; muestrear tickets nacionales, extranjeros y recurrentes; y diseñar un script de escritura de una sola operación para revisión previa. El script debe ser idempotente, no incluir credenciales y ejecutarse únicamente en sandbox o acompañado en un ticket de prueba acordado. + +--- + +## Sondeo del 6-ago-2026 — customfield IDs capturados (cierre del pendiente de mapeo) + +Corridas: `pruebas-jira-lectura.sh` (todo 200; token renovado funciona, el 401 del 29-jul quedó atrás) + `GET /rest/api/3/field` + `search/jql` con los customfields sobre los **69 tickets** de FAC. Bodies en `/tmp/jira-probes-20260806-004526` (fuera del repo). + +| Campo | ID | Tipo real | Poblado (de 69) | +|---|---|---|---| +| Request Type | `customfield_10010` | `sd-customerrequesttype` (`{requestType:{name}}`) | 59 | +| Nombre del Cliente | `customfield_10202` | ⚠️ **ADF** (schema dice string, el valor es doc) | 54 | +| Cliente Nuevo | `customfield_10052` | option (`{value:"No"}`) — el duplicado `10094` está vacío, no usarlo | 48 | +| Tipo de Moneda | `customfield_10053` | option | 48 | +| Días de Crédito | `customfield_10054` | option (`{value:"45"}`) | 48 | +| Periodo de Incidencias | `customfield_10203` | ⚠️ **ADF** | 46 | +| Facturación recurrente | `customfield_10552` | option (`Si`) | 32 | +| Periodo de recurrencia | `customfield_10553` | string (`"12"`) | 32 | +| Empresa origen | `customfield_11423` | option (ej. `Helmstone`) | **7** — casi vacío; NO sirve como filtro hoy | +| Monto sin IVA | `customfield_11556` | number | **2** | +| Monto con IVA | `customfield_11522` | number | 0 | + +Hallazgos que corrigen al Bloque 2 del 30-jul: +- **Sí existen campos estructurados de monto** (`Monto sin IVA` / `Monto con IVA`), pero casi nadie los llena (2/69 y 0/69). La pantalla los lee (`MontoEstimado = customfield_11556`) y muestra "—" cuando falten; si Balam empieza a llenarlos, aparecen solos. +- "Nombre del Cliente" y "Periodo de Incidencias" llegan como **ADF**, no texto plano — el mapper aplana con `AdfText.Flatten`. +- El filtro del prototipo "empresa origen = Balam" no es viable aún (7/69 poblados, y con valores como `Helmstone`): la bandeja muestra todo FAC con nota honesta. +- Distribución real: 48 Facturación adicional · 6 Bajas · 4 Automatización · 1 Facturación · 10 sin RT. Estatus: 65 Facturado · 2 Cancelado · 1 En proceso · 1 En validación nacional. + +Los IDs quedaron en `balam-plataforma/backend/src/Balam.Api/appsettings.Development.json` (sección `Jira:Fields`, config-driven — los IDs no son secretos).