- 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).
Modulo nuevo (solo admin) para dar de alta desarrollos sin tocar codigo:
- CRUD de la ficha, modelos e inventario (alta manual y generador por rango)
- Reglas del cotizador por desarrollo, editables y persistidas en la BD
- El cotizador consume las reglas desde /desarrollos/reglas-cotizador y cae a
las constantes con aviso cuando un desarrollo aun no tiene reglas guardadas
- Micrositio publico en /d/:clave (sin sesion) con ficha, modelos y
disponibilidad; jamas expone datos de clientes ni cotizaciones
Integracion:
- La landing monta el modulo en el grid (clave 'desarrollos', solo admin) y el
micrositio fuera del login; el rol manager NO accede (matriz y API con 403)
- La tabla de roles de Configuracion ahora lista todos los modulos
- Se alinea la FK de ReglaCotizadorDesarrollo con la BD viva (Desarrollo.id)
Verificado: 708 pruebas del API, 115 del cotizador y 89 de la landing en verde;
12/12 cotizaciones identicas antes y despues del cambio de reglas; prueba en
vivo del API con alta, modelos, inventario, reglas, micrositio y baja (30/30).
1. Subcategoría en modal descarte (catálogo completo + select)
2. Apartado sin monto mínimo (eliminada validación de 0,000)
3. PDF solo con propuesta elegida (no las 4)
4. Co-acreditado: checkbox 'no tiene' valida sin campos obligatorios
5. Documentos apartado: previsualizar + descargar (endpoint + frontend)
6. Oportunidades: sin duplicados, orden Confirmar→Afluencia→Cotizar→Aparto(verde)→Descartar
1. Notas propagan entre etapas (convertirLead/apartar updateMany)
2. Afluencia: conexión → aviso amarillo
3. Escrituración: click nombre abre bitácora
4. Co-acreditado: opción 'no tiene'
5. Nota del alta de lead → bitácora
6. Módulo Soporte: formulario + listado solicitudes
7. Captura visible para todos
Backend: mi-dia siempre local, vocabulario canónico, AplicacionPago con usuario
Mi día: modal español real, cita desde modal, score falso eliminado
Cotizador: barra sticky, persistencia local con folio
Alta Clientes: redirect eliminado, foto conectada, asesor desde sesión, refs dinámicas
Cobranza: contrato Mora arreglado, link a Plan, abono próximo pago, WhatsApp
Landing: contactos locales, ModalContacto eliminado, ModoTrabajo eliminado
Dashboards: MiTablero unificado, funnel con descartados, drill-down, rango fechas
Chat FRASA: corpus 5 desarrollos, 6 herramientas, historial conversaciones
69 archivos, 7 apps construidas
- Eliminado NotasApartado import y JSX
- Eliminado apartadoSeleccionado state
- Eliminado onClick/tabIndex/role del card de apartado
- El único modal es DetalleLeadModal (se abre al click en el nombre)
- Campo clienteClave en RecordatorioVendedor (hash nombre+telefono)
- Al crear nota: se calcula clienteClave del lead/cliente
- Al buscar notas: busca por leadId O clienteClave (no por nombre suelto)
- Mantiene compatibilidad: notas viejas sin clienteClave siguen por leadId
- Migración SQL aplicada
- Las notas se buscan por leadId O por nombre del cliente
- Al convertir lead→oportunidad, las notas siguen visibles
- Funciona en todas las etapas: lead, oportunidad, apartado, escrituración
Hermes ahora puede:
- buscar_leads: buscar leads por nombre/teléfono/email
- ver_cliente: info completa de un cliente
- ver_oportunidades: pipeline de ventas con filtro por etapa
- ver_cobranza: resumen de pagos vencidos
Índices DB: LeadCaptura.nombreLead, Cliente.nombreCompleto, PlanPago.status
38 tests nuevos pasan.
1. Cancelar con motivo: Mis apartados y Escrituración piden motivo (modal reutilizado)
2. Origen BROCKER agregado en alta afluencia y captura rápida
3. Etapas oportunidades reordenadas: Agendo Cita → Afluencia → Cotizador
4. Cotizador: mensualidades diferibles (6, 12, 14, 18, 24 meses)
5. Calendario semanal por vendedor en Mi día
6. Hora en citas (datetime-local en vez de solo fecha)
7. Click en nombre → modal DetalleLeadModal (info + notas + historial)
- LeadMiDia ahora incluye campo 'desarrollo'
- Backend: mapeado desde Monday leads y desde LeadCaptura local
- Frontend: FilaLead muestra teléfono · desarrollo · origen