- Aplicacion para Android con precio propio de $20,000.00, dentro del paquete.
- Modulo de buro de credito con precio de $15,000.00, aparte del paquete.
- Cambios en la pagina web: $3,000.00 aparte del paquete (partida 39 nueva).
- Las otras 37 partidas reacomodadas para que el paquete siga sumando $70,000.00
con IVA incluido (verificado sumando la tabla).
- Resumen de importes en tres bloques: paquete $70,000, conceptos aparte $18,000 y
total $88,000.00 con IVA incluido (subtotal $75,862.07 + IVA $12,137.93).
- Portada con los tres importes, fecha 23 de septiembre y control de versiones 1.3.
- PDF (19 paginas) y pagina web regenerados y publicados.
- Seccion 10 con el importe de cada una de las 38 partidas, ya con IVA incluido;
la suma cuadra exactamente con el total (se verifico sumando la tabla).
- Seccion 12 nueva: suma de partidas $70,000.00, subtotal $60,344.83, IVA 16%
$9,655.17 y total a pagar $70,000.00 (setenta mil pesos 00/100 M.N.).
- Partida 38 nueva: aplicacion para Android, incluida en el importe y pendiente
de ejecutar (hoy el sistema se instala desde el navegador como PWA).
- El modulo de buro de credito queda fuera del importe y marcado como "se cotiza
por separado", por depender del contrato y las credenciales del buro.
- Portada con la version 1.2 y el importe total; control de versiones actualizado.
- PDF (18 paginas) y pagina web regenerados.
- Seccion 6.9 nueva: la solicitud queda registrada como partida 37, marcada como
PENDIENTE DE EJECUTAR (no entregada) para no inflar lo facturable.
- Incluye el alcance propuesto (consulta desde alta y contactos, consentimiento
del titular, folio y reporte en el expediente, control de consumo y permisos)
y los requisitos que debe entregar el cliente: contrato, credenciales de la API
del buro y definicion de la informacion que quiere ver.
- Partida 6.9-37 en la tabla de facturacion y punto 5 en los pendientes abiertos.
- Control de versiones en la seccion 1, fecha de emision 22 de septiembre y
cronologia actualizada. PDF (17 paginas) y pagina web regenerados.
- scripts/generar-web-documento.py arma la pagina (barra con logotipo, boton de
descarga del PDF, hoja centrada, tablas con scroll en pantallas chicas, modo
oscuro automatico y estilos de impresion) y reutiliza el generador de PDF.
- La pagina se sirve con un prefijo privado en NGINX: no se enlaza desde ninguna
app, lleva X-Robots-Tag y meta noindex, y la cache se desactiva para que los
cambios se vean al momento.
- Se sincroniza deploy/nginx-host.conf con lo que estaba instalado en el host
(faltaba el cache de assets immutable) y se agrega la ruta privada.
- El logotipo se reduce a tamano de pantalla: venia de un JPEG de 959 px y era el
90% del peso del PDF (495 KB -> 240 KB), sin cambiar el diseno.
Script que convierte cualquier documento de docs/ a PDF (portada con logotipo y
tabla de datos, encabezados de tabla repetidos, pie numerado y control de saltos
de pagina). Genera el logotipo con transparencia real: el PNG del repo trae fondo
gris y sobre la portada blanca dibujaba un rectangulo.
Con esto el PDF del documento de alcance se puede regenerar tras cualquier
cambio del markdown:
/root/.venv-tools/bin/python scripts/generar-pdf-documento.py docs/ALCANCE-VS-ENTREGADO.md
Documento en markdown y PDF con:
- El alcance originalmente contratado (4 apps, API Gateway puente a Monday,
infraestructura Docker/NGINX/SSL y checklist de 10 dias) y lo diferido (WA CRM).
- El estado entregado: 7 aplicaciones en produccion, 12 modulos, 137 endpoints,
33 tablas, 7 roles, 1,203 pruebas automatizadas y las metricas de uso real.
- 36 partidas de desarrollo adicional solicitado fuera del alcance, con evidencia
en commits del repositorio, mas 11 retrabajos por cambios de sentido.
- Tabla de partidas con unidad de cobro sugerida y columnas de horas e importe
en blanco para acordarlas con el cliente.
- Seccion de pendientes abiertos (WA CRM no solicitado, reglas de SOLE y MUTUO,
contactos del micrositio, migracion opcional a PostgreSQL/Redis).
Nueva GUIA-FLUJO-COMPLETO.md (mapa del embudo + paso a paso para
Ventas, Coordinacion, Administracion, Cobranza, Escrituracion, SAC,
DG/Obra y Agente IA, con tabla de que se ve en Monday en cada momento).
GUION-DEMO actualizado con captura completa de afluencia, Mis capturas,
Mis clientes y perfilamiento.
- Script sync-obra-estatus.py (idempotente, --dry-run, retry/backoff):
parsea ESTATUS OBRA, SENDA-ACT-AGO2026, SENDA/SOLE DG, Diagonal 38 y
las hojas de ventas; mapea a Unidades vía maestro-unidades.json
- Board Unidades: +12 columnas (% avance obra, meses atraso, contratista,
clave catastral, no. oficial, vendedor, broker, venc. autorización,
fecha entrega obra, 4 checkboxes de hitos documentales) — 147 items
actualizados (DIAGONAL 38/38, SENDA 109/142)
- Board nuevo 'Flujo Escrituras' (18429252054): 32 items mayo–ago/2026
por proyecto/semana con escrituras e ingreso
- Board nuevo 'Saldos a Favor' (18429252069): 7 pendientes (Estanza/Sole)
- Receta nativa documentada: recordatorio 7 días antes de Venc.
autorización al coordinador
- SOLE y MUTUO no existen como inventario en Monday: sus datos de obra
se reportan como saltados (no se crean unidades)
- Al avanzar cada paso del wizard: upsert silencioso del borrador local
+ sync a Monday (iniciar → Contacto en PROSPECTO; pasos siguientes →
PATCH con los campos mapeables: datos generales, dirección armada,
actividad económica)
- Al completar: Contacto pasa a CLIENTE + Apartado + funnel (dedup)
- progresoId viaja con el borrador (se restaura solo); fallos de sync
no bloquean el avance (aviso ámbar no bloqueante); submit final con
fallback al endpoint legado si nunca hubo sync
- API: POST /clientes/progreso/iniciar, PATCH /clientes/progreso/:id,
POST /clientes/progreso/:id/completar; POST /clientes legado intacto
- Tests: API 338 (+16), alta-clientes 112 (+4); smoke en vivo
verificado (PROSPECTO → patch → CLIENTE + Apartado) y limpiado
- Captura rápida crea lead + oportunidad en etapa Afluencia (vinculadas
por nueva tabla LeadOportunidad); también aplica a leads creados
directo en Monday vía webhook
- Transiciones automáticas: AGENDA CITA → Agendo Cita, descarte →
Perdido (+ dropdown Motivo No Compra), cotización con mismo teléfono
ACTUALIZA la oportunidad (no duplica) → Cotizador, alta de cliente
con leadMondayId → Aparto (dedup previo para no duplicar Apartado)
- Columna Desarrollo agregada al board Oportunidades (color_mm6sa20t)
- Migración lead_oportunidad aplicada con migrate diff + resolve (la DB
tiene drift histórico por db push; migrate dev pedía reset)
- Tests: 322 verdes; smoke en vivo verificado y limpiado
- Webhook Oportunidades: cambio de etapa dispara escaneo (Aparto→Apartado,
Ganado→Venta) además del round-robin de leads por create_item
- Acepta los nombres reales de los eventos de Monday: create_pulse/pulseId
y update_column_value (verificados en vivo)
- Token interno (X-Internal-Token) para que los syncs locales llamen
POST /cotizaciones/alertas-inventario sin JWT de usuario
- sync-estatus-maestro.py notifica los cambios aplicados al endpoint de
alertas (actividad al vendedor con cotizaciones recientes)
- Fix P1008 SQLite: escaneos del poll cron secuenciales +
connection_limit=1 en DATABASE_URL
- Webhooks registrados en Monday sobre https://frasa.consultoria-as.com
(Leads create_item, Oportunidades change_column_value); crons quedan
como red de seguridad
- Docs: sección 0 en AUTOMATIZACIONES-MONDAY.md con la matriz de eventos
y los quirks de Monday
- Escalado: lead asignado sin contactar >48h genera actividad URGENTE
al coordinador (LEAD_ESCALADO_HORAS, MONDAY_COORDINADOR_USER_ID)
- Oportunidad en Aparto crea item en Apartado (fecha límite +7d);
en Ganado crea la Venta; ambos con dedup
- GET /api/reportes/resumen: leads, funnel, unidades por desarrollo,
cobranza y actividades en una respuesta (cache 60s)
- App dashboards (/dash): 8 KPIs + 3 gráficas Recharts, con auth
- Landing: tarjeta Tableros; docs/AUTOMATIZACIONES-MONDAY.md con las
recetas nativas para activar en la UI
- Tests: api 158, dashboards 7, landing 5 — todo verde