Dashboard · Changelog
Convención de versiones:
Major Cambios disruptivos o de identidad
Minor Funcionalidades significativas no breaking
Patch Bug fixes y ajustes menores
v4.42.1
Patch
2026-07-15
Privacidad: el integrador solo ve su precio, nunca su margen
- El catálogo del integrador ahora solo devuelve su precio. Se ocultan el margen, el precio base (PVP) y el precio original en USD — el integrador no puede inferir su margen. El admin sigue viendo todo en el preview.
v4.42.0
Minor
2026-07-15
Portal: margen por marca y seguimiento del "en camino"
- 💰 Margen por marca: cada integrador puede tener un margen distinto por marca (⚙ por marca en la vista Distribuidor). Si una marca no tiene margen propio, hereda el margen general del integrador. El precio del portal usa el margen de la marca de cada producto.
- 🚚 Los camiones se descargan solos al recibir: cuando llega una nacionalización (recepción de una orden de compra), las unidades que llegaron se descuentan automáticamente del "en camino" de ese producto (primero las de fecha más próxima); al completarse quedan como ✅ Llegó.
- Seguimiento: en la pestaña "🚚 En camino" ves el estado de cada camión ("faltan X de Y") y un histórico de los que ya llegaron.
v4.41.0
Minor
2026-07-15
Portal: precio con margen por integrador y control del "en camino"
- 💰 Margen por integrador: cada integrador tiene su margen (%), editable desde la vista Distribuidor. En su portal ve su precio neto = precio base − su margen (antes de IVA). En el preview, el admin ve ese neto con el PVP y el margen en el tooltip.
- 🚚 Control del camión (En camino): nueva pestaña donde defines manualmente qué productos vienen, cuántas unidades y en qué fecha. El integrador, al hacer clic en el camión, ve "N unidades nuevas · llegada [fecha]". Se combina con lo que ya viene de las órdenes de compra. Es informativo: no mueve inventario.
v4.40.1
Patch
2026-07-15
Portal: "👁 Vista del integrador" (preview) y claridad de productos habilitados
- La pestaña "Catálogo" pasó a llamarse "👁 Vista del integrador": es el preview exacto de lo que ve ese integrador — solo sus productos habilitados — con un aviso que dice de quién es y cuántos tiene habilitados.
- Desde el dashboard de Distribuidor, cada integrador tiene un acceso directo 👁 Preview (además de "Gestionar →").
v4.40.0
Minor
2026-07-15
Portal de Integradores: nueva vista de Distribuidor con seguimiento
- 📊 Vista "Distribuidor": ahora al entrar al portal como admin ves de una un dashboard con TODOS los integradores — KPIs (integradores, activos, con cuenta, productos habilitados, proyectos abiertos y demanda esperada por moneda) y una tabla con marcas/productos habilitados, estado, cuenta de acceso, proyectos y demanda de cada uno.
- Clic en un integrador → a Gestión: desde la tabla entras directo a habilitar/deshabilitar sus marcas y productos. El integrador sigue viendo solo su propio catálogo, sin cambios.
- Primer incremento: seguiremos puliendo (habilitación por marca + productos, más métricas de seguimiento).
v4.39.1
Patch
2026-07-15
Seguimiento de Ventas: editar una fila ya no lanza un error falso
- Al editar todos los campos de una venta y guardar, salía "Cannot read properties of null" aunque los datos SÍ se guardaban — y la tabla no se refrescaba sola (había que recargar con Cmd+Shift+R). Corregido: el guardado ahora confirma con el aviso de éxito y refresca la lista al instante. Sin más recargas manuales.
v4.39.0
Minor
2026-07-15
Day Focus ahora muestra los pendientes de Proyectos (PM)
- 📁 "Proyectos esperando por BPA": nueva sección en el Day Focus con los proyectos vivos donde la pelota está en nuestra cancha (con los días que lleva ahí) y/o la fecha objetivo está vencida o cae esta semana — ordenados del más urgente al menos, con link directo al proyecto. Las tareas internas de proyecto (checklists del PM) ya aparecían en los buckets cuando tienen fecha y responsable.
v4.38.1
Patch
2026-07-15
Cotizaciones: el IVA ahora se calcula DESPUÉS del descuento global
- Regla corregida (definición de dirección): el descuento global reduce la base gravable, así que el IVA se calcula sobre el valor YA descontado (antes se calculaba sobre el subtotal pleno → IVA de más cuando había descuento global). Prorrateo proporcional que respeta líneas exentas (p.ej. software sin IVA).
- Corregido en los 3 puntos a la vez: totales del editor, API y PDF — siempre cuadran entre sí. Con 5 pruebas de aritmética verificada a mano. Cotizaciones sin descuento global no cambian en nada.
v4.38.0
Minor
2026-07-15
Blindaje de infraestructura: la base de datos ya no puede perderse en silencio
- 🛡️ Restore blindado: si la restauración desde la réplica falla, la plataforma se NIEGA a arrancar con base de datos vacía (antes un fallo transitorio podía arrancar vacía y replicar ese vacío sobre la copia buena — el único escenario de pérdida total que existía). Producción sin replicación configurada tampoco arranca.
- Snapshot antes de cada migración: el arranque guarda una copia de la BD antes de aplicar cambios de esquema; si una migración falla a mitad, hay rollback inmediato (receta en el RUNBOOK).
- Backups que avisan cuando fallan y con cadencia real garantizada aunque la máquina duerma (chequeo por hora contra la edad del último backup, en vez de un temporizador que se pausaba).
- Privacidad: las búsquedas con nombres/NITs de clientes ya no quedan en los logs del servidor.
- Deploys reproducibles: las 75 dependencias quedaron fijadas a las versiones exactas verificadas en producción — un deploy sin cambio de código ya no puede traer sorpresas.
- Interno: secret de sesión ya no tiene valor por defecto horneado (debe venir de Fly secrets) y regla dura documentada de no escalar a más de 1 máquina.
v4.37.0
Minor
2026-07-14
El pipeline ya no miente: caja esperada ponderada por probabilidad
- 💧 Caja esperada (ponderada): nuevo indicador en el CRM que multiplica cada negocio activo por la probabilidad real de su etapa (un negocio "sin contactar" ya no pesa igual que uno con anticipo). Siempre separado por moneda — nunca mezcla COP con USD/EUR.
- ⚙️ Probabilidades configurables: dirección puede ajustar el % de cada etapa desde el propio CRM (punto de partida: 5% sin contactar → 92% anticipo). El sistema valida los valores y nunca se rompe por una configuración mala.
- Cada columna del Kanban muestra su probabilidad, y el desglose por etapa incluye el valor ponderado.
v4.36.0
Minor
2026-07-14
El inventario por fin sabe cuánto nos costó cada cosa
- 📦 Volcar costos al inventario: nuevo botón en el Price Calculator que lleva el costo real de cada nacionalización al ítem del inventario — tanto el costo de fábrica (USD/EUR) como el costo puesto en Colombia (con flete, aduana y TRM incluidos). Primero muestra una vista previa (qué casa, qué no) y solo aplica al confirmar.
- Promedio ponderado automático: si un producto se ha traído en varias importaciones, su costo promedio se calcula solo (ponderado por cantidades) y re-volcar el mismo cálculo no lo distorsiona. Las nacionalizaciones marcadas como "gasto extraordinario" no contaminan el promedio.
- Costo visible (solo dirección): en el inventario, admin y PM ven el costo promedio, el último landed y el de fábrica junto al precio de venta — solo lectura, dato sensible.
- Base para lo que sigue: capital congelado y márgenes calculados sobre el costo REAL (hoy usan precio de venta, que infla el capital atrapado ~2×).
v4.35.3
Patch
2026-07-13
Limpieza (ola 3): negocios estancados, ROI por fuente y candados de seguridad
- 🕓 Negocios estancados (CRM): nueva pestaña que lista los negocios activos sin actividad en X días (7–90, por defecto 21), ordenados del más olvidado al menos, con el valor en riesgo. Deja de perderse plata por deals que se enfrían.
- 📊 ROI por fuente (CRM): el Dashboard de Ventas ahora muestra, por origen del negocio (referido, web, etc.), cuántos se ganaron, el valor ganado y el pipeline activo. Para saber qué fuente rinde.
- Motivo de pérdida obligatorio: marcar un negocio como Perdido ahora exige indicar el motivo (antes se podía dejar en blanco y se perdía la trazabilidad).
- Borrado de leads más seguro: el reinicio total del pipeline crea un respaldo de la base ANTES de borrar y se aborta si el respaldo falla.
- Rendimiento y seguridad: los historiales de inventario (kardex y bitácora de ubicaciones) ahora se cargan por lotes con "Cargar más" (protege la memoria del servidor); y la hoja de conteo por ubicación quedó con el mismo control de acceso que el resto del inventario.
v4.35.2
Patch
2026-07-13
Limpieza de código (ola 2): moneda con una sola fuente y modales a prueba de traductor
- Formato de moneda unificado: se eliminaron las copias locales contradictorias de
fmtCOP (una arriesgaba mostrar montos 100× más grandes) y ahora todo pasa por el global bilingüe ($ en español, COP en inglés), con un helper fmtCents para los montos que vienen en centavos. Los números mostrados no cambian; se cierra el riesgo de error.
- Modales blindados contra el traductor de Chrome: 52 ventanas modales en 26 pantallas ahora llevan la guarda
translate="no" que evita el bug de "botón que no responde / Cannot set properties of null" cuando el navegador traduce la página. Nuevo helper central bpaModal para que los modales futuros nazcan ya blindados.
v4.35.1
Patch
2026-07-13
Limpieza de código (ola 1): menos duplicación, más consistencia
- Guards de rol centralizados: 37 chequeos de permiso repetidos en 28 módulos ahora delegan en un único helper (
check_roles). Mismo comportamiento, un solo lugar que mantener. Matriz de permisos verificada idéntica antes y después.
- Escapado de HTML unificado: 16 pantallas que reimplementaban su propio
escapeHtml/esc (algunas menos seguras) ahora usan el global — cierra riesgo de XSS por copias desactualizadas.
- Menú de perfil: los 7 roles se traducen vía i18n (antes solo 3; el resto salía como texto crudo).
- Interno:
permissions.py reubicado a la capa correcta; suite de pruebas corre limpia con pytest a secas (147 verdes); manejo de errores más preciso en el CRM.
v4.35.0
Minor
2026-07-12
Órdenes de Compra: importar una compra de Siigo con un clic
- Botón "⬇ Importar de Siigo": lista las compras recientes de Siigo (documento, proveedor, fecha, ítems, total) y con un clic reconstruye la elegida como Orden de Compra en BORRADOR — con proveedor e ítems mapeados al inventario por su código. Angélica ya no digita dos veces.
- Entra como borrador: ella revisa y luego le da "Recibir" para que el stock entre al kardex. Idempotente (no re-importa la misma compra) y solo lee de Siigo (no escribe nada allá). Con pruebas automáticas.
v4.34.0
Minor
2026-07-12
Comentarios + @menciones — coordinar sin salir de la plataforma
- Ahora puedes comentar en una tarea (botón 💬 en Day Focus) o en un negocio (sección "Comentarios del equipo" en el CRM), y @mencionar a un compañero (@Angélica, @Laura…). Al mencionarlo, le llega un aviso a la campana con enlace directo.
- Deja rastro donde importa (en el negocio/tarea, no en WhatsApp). Solo el autor o admin/pm puede borrar un comentario. Modelo nuevo con migración aditiva y pruebas automáticas.
v4.33.0
Minor
2026-07-12
Tareas recurrentes — que las obligaciones fijas no se caigan
- Al crear una tarea puedes marcar que se repita: Diario · Semanal · Quincenal · Mensual. Al completarla, el sistema genera sola la siguiente con la próxima fecha (te avisa "próxima el …"). Ideal para PILA, cuenta de cobro Hacienda, nómina, IVA, backups: dejan de depender de tu memoria.
- La recurrencia respeta la fecha programada (no se corre si completas tarde) y ajusta fin de mes (31-ene → 28-feb). Cada tarea recurrente lleva un badge 🔁 en lista y calendario.
- Modelo con migración aditiva y 24 pruebas automáticas verdes (incluye clamp de fin de mes, regla inválida = sin recurrencia, y encadenado de la serie).
v4.32.1
Patch
2026-07-12
Day Focus: mejor lectura — franjas de tiempo + de qué cliente es cada tarea
- Lista: "Próximas" ahora se desglosa en Hoy · Esta semana · Este mes · Futuras, para ver lo cercano y poder adelantarlo (además de Vencidas y Sin fecha).
- Calendario: cada tarea muestra de qué negocio/cliente es (p. ej. "Seguimiento · Digigram PCIe"), para no confundir tareas con el mismo título. También en el detalle del día y en el aviso de vencidas.
v4.32.0
Minor
2026-07-12
Day Focus: vista "Carga" — quién del equipo está saturado
- Nueva vista ⚖️ Carga (solo admin/pm): muestra a cada persona del equipo con cuántas tareas pendientes tiene (vencidas · hoy · próximas · sin fecha · total), juntando personales + CRM + PM, con una barra de nivel. De un vistazo ves quién está cargado.
- Click en una persona → salta a ver su día completo. Segunda feature de la ola (el "tablero + carga por persona").
v4.31.3
Patch
2026-07-12
Tareas: tu "resumen del día" te llega a la campana al abrir la plataforma
- Al entrar a la plataforma, una vez al día, te llega a la campana un aviso "🎯 Tu resumen del día" si tienes tareas para hoy o vencidas ("Tienes 3 para hoy y 1 vencida"). Es 100% dentro de BPA — sin correo y sin depender de que el servidor esté despierto.
- Se genera una sola vez por día (no repite) y solo aparece si de verdad hay algo pendiente. Con esto queda completa la primera ola de "notificaciones que empujan" (aviso al asignar + resumen del día).
v4.31.2
Patch
2026-07-12
Tareas: te avisa cuando te asignan o reasignan una tarea
- Cuando alguien te asigna (o te reasigna) una tarea, te llega un aviso a la campana ("Andrés te asignó una tarea: …") con enlace directo a Day Focus. Primer paso de "notificaciones que empujan": cierra el hueco de "te la puse pero no la viste".
- No te auto-notificas cuando la tarea es para ti mismo. Cubierto con pruebas automáticas.
- Nota: el digest matutino por correo queda pendiente de una decisión de infraestructura (montar proveedor de correo + un "despertador" externo, porque el servidor se suspende). El aviso al asignar NO necesita nada de eso y ya funciona.
v4.31.1
Minor
2026-07-12
Day Focus: vista Calendario (tipo Asana) + filtro por miembro
- Nueva vista Calendario mensual: las tareas (CRM + PM + personales) se ven en una grilla por día, con navegación de meses, aviso de vencidas y detalle del día al hacer clic. Se alterna con la vista Lista con un botón.
- Filtro por miembro (solo admin/pm): chips Mías · [cada persona] · Todas que aplican a las dos vistas. Así Andrés y Angélica pueden ver las tareas de cada quien o de todo el equipo; cada tarea muestra a quién le toca.
- Backend con endpoint
/user-tasks/calendar + scope me/user/all (permiso admin/pm), 13 pruebas automáticas verdes.
v4.31.0
Minor
2026-07-12
Nuevo: Day Focus — tu foco del día + asignar tareas al equipo
- Nueva pantalla "🎯 Day Focus" (grupo Ventas): cada usuario entra y ve, en un solo lugar, sus tareas vencidas / de hoy / próximas juntando las tres fuentes — CRM (sus negocios), PM (sus proyectos) y tareas personales — más la lista de sus negocios sin tarea (los que se quedan en el aire).
- Se pueden crear tareas propias y, como en Asana, asignárselas a otro miembro del equipo (con fecha y prioridad). A cada quien le aparecen en su propio Day Focus y en la bandeja 📋.
- La bandeja flotante ahora tiene una sección "Personales · asignadas a mí" y el badge cuenta también esas tareas.
- Módulo nuevo de tareas (modelo
user_tasks) con API auditada y 9 pruebas automáticas verdes. Roles humanos únicamente (eco/integrador excluidos).
v4.30.0
Minor
2026-07-12
CRM: ver los negocios que se quedan "en el aire" + tarea al crear
- Nuevo filtro "Sin tareas" en la barra del CRM: muestra solo los negocios que no tienen ninguna tarea pendiente — los que se quedan sin próximo paso. Se puede combinar con etapa/responsable y guardar como vista.
- Al crear un negocio, aparece un aviso "¿Le pones una tarea de una vez?" con un próximo paso y fecha (mañana por defecto), para que ningún negocio nazca sin seguimiento. Se puede omitir con "Ahora no".
v4.29.2
Patch
2026-07-11
Finanzas: "Siigo en vivo" ya no se cae por un error 500 pasajero
- El Tablero Financiero (Comparar → "🔌 Siigo en vivo") fallaba con "502: No se pudo consultar Siigo: 500 Internal Server Error". Causa: Siigo devuelve un 500 intermitente en alguna página al paginar (~29 páginas por sync) y el conector no reintentaba en errores 5xx (solo en 401), así que un solo tropiezo abortaba todo.
- Fix: el conector Siigo (solo lectura) ahora reintenta con backoff (1.0s, 2.5s, 4.0s) ante 500/502/503/504 y errores de red, y deja un pequeño respiro entre páginas. El sync se vuelve robusto ante los tropiezos temporales de Siigo.
v4.29.1
Patch
2026-07-11
CRM: el buscador de contactos y empresas ya no falla por los acentos
- Buscar "Simon" ahora encuentra "Simón", y "Linea Estrategica" encuentra "Línea Estratégica". El buscador compara contra el nombre normalizado (sin tildes), no solo el literal.
- La búsqueda por documento/teléfono vuelve a funcionar: como van cifrados, ahora se busca por coincidencia exacta cifrando el término (antes comparaba contra el texto cifrado y nunca calzaba).
v4.29.0
Minor
2026-07-11
Nuevo: Rollos de cable — seguimiento de metraje por proyecto (Sommer Cable)
- Pantalla "🧵 Rollos de cable" en el grupo Inventario: cada rollo muestra cuántos metros quedan vs su metraje inicial, con barra de nivel y aviso cuando baja del umbral.
- Los técnicos registran 3 tipos de movimiento: Consumo de obra (metros usados, ligados a un proyecto — descuentan del rollo), Reponer (rollo nuevo o sobrante devuelto) y Reconteo (medición real del rollo → ajusta el saldo).
- Cada rollo lleva su historial (qué se usó, en qué proyecto, cuándo y quién). Reusa el kardex de inventario existente — sin base de datos nueva.
- Pensada para el celular del técnico en obra. Guía de medición física: aprovechar la marcación de metraje impresa del cable o un contador de metros con rueda en el punto de corte.
v4.28.8
Patch
2026-07-11
Ventas: decidir si la entrega descuenta inventario + arreglo del Historial de envíos
- Al registrar una entrega en Ventas ahora hay un check "Descontar de inventario" (marcado por defecto). Desmárcalo cuando el movimiento de stock ya se hizo a mano o tras un reconteo: la entrega se registra igual, pero no se toca el kardex.
- El mismo criterio aplica al cambiar el estado de entrega a "Despachado/Entregado" (se puede pedir NO descontar).
- Fix: el "📜 Historial de envíos" en Logística daba 404 Not Found por un prefijo
/api/v1 duplicado en la llamada. Ya carga bien.
v4.28.7
Patch
2026-07-11
Cotizaciones: Observaciones y Términos vienen por defecto en toda cotización
- Toda cotización nueva llega con Observaciones / Notas del cliente = "Los precios y tiempos de entrega pueden variar sin previo aviso." y Términos y condiciones = "Pago 100% anticipado." — Andrés los edita si hace falta.
- Antes el default solo salía al crear desde el editor en blanco; ahora también al crear desde un negocio del CRM y por cualquier vía, blindado en el backend.
- Al actualizar una cotización se respeta lo que el usuario deje (puede borrarlos); el default aplica solo en la creación.
v4.28.6
Patch
2026-07-10
Proyectos: cambiar la "pelota en cancha" con dueño + plazo, desde donde estés
- En el detalle del proyecto: el botón "Cambiar pelota" y el propio chip ahora abren un menú de 2 pasos — dueño (BPA / Cliente / Partner / Proveedor / Stand-by / Cerrado) y plazo de recontacto (1/3/7/15/30 días, personalizado o sin plazo).
- En el Inicio de PM: cada proyecto por recontactar tiene un botón "⚙ Pelota" que abre ese mismo menú completo — ya no hay que entrar a cada proyecto ni a la lista global solo para mover la pelota. Se conservan los atajos "+7d" y "✓".
- El menú se construye a prueba del traductor de Chrome (translate="no", sin
<select>), que antes rompía el cambio de pelota.
v4.28.5
Patch
2026-07-10
Proyectos: la "pelota en cancha" ya coincide en el detalle y en las vistas globales
- El chip de pelota en cancha del detalle del proyecto mostraba siempre la antigüedad ("15d"), mientras que la lista/Kanban y el inicio mostraban el plazo de seguimiento ("⚠ +2d" vencido / "5d" restantes). Para el mismo proyecto salían números distintos.
- Ahora el detalle usa exactamente el mismo criterio que las vistas globales: si hay plazo de recontacto muestra el countdown (con aro rojo si está vencido); si no, la antigüedad. Una sola lógica, sin divergencias.
v4.28.4
Patch
2026-07-09
Cotizaciones: buscador en la lista
- Nuevo buscador en la barra de Cotizaciones: filtra la lista al instante por número, cliente o asunto mientras escribes (sin recargar la página).
- Funciona junto con el filtro "sin negocio"; el backend ya soportaba la búsqueda, faltaba exponerla en la interfaz.
v4.28.3
Patch
2026-07-07
Maestro de Cliente: ahora puedes crear un cliente directamente
- Nuevo botón "+ Nuevo cliente" en el Maestro de Cliente (
customers.html): nombre obligatorio, NIT opcional (persona natural / export USA), tipo de documento, ciudad, email y teléfono.
- Es idempotente: si el cliente ya existe (por NIT o por nombre) no se duplica — se enriquece la ficha. Además enlaza solo con la empresa del CRM que coincida.
- Aclara el flujo ERP: el cliente puede nacer aquí en el Maestro, o crearse solo cuando lo registras en el CRM (empresa/lead) o en una cotización/venta. El Maestro sigue siendo la ficha única para Ventas, Cartera y conciliación Siigo.
v4.28.2
Patch
2026-07-07
Préstamos (DM): elige de qué ubicación sale cada equipo
- El editor de remisiones de préstamo ahora tiene una columna "Origen": al armar el préstamo eliges de dónde sale cada cable, parlante o pieza (Cable Case M, Showroom, Rack Gator, etc.).
- Al elegir un equipo del catálogo, el sistema lo vincula al inventario real y muestra dónde está disponible y con cuánto stock (incluida su distribución por ubicaciones), sugiriendo el origen automáticamente.
- Con esto se activa la trazabilidad completa que ya existía en el backend: al emitir el préstamo el equipo se descuenta de esa ubicación exacta y queda "en préstamo", y al registrar el retorno regresa solo a su ubicación de origen. El sistema avisa si alguna línea quedó sin origen.
v4.28.1
Patch
2026-07-06
Cotizaciones: la descripción del ítem respeta los saltos de línea
- En el PDF, la descripción de cada ítem ahora conserva los "Enter" (cada módulo/línea en su propio renglón), en vez de aplastarse en un solo párrafo. El texto largo sigue ajustándose solo.
v4.28.0
Minor
2026-07-02
Tablero Financiero · 💧 Supervivencia (flujo de caja a 13 semanas)
- Nueva vista "Supervivencia" en el Tablero Financiero: proyección de caja semana a semana (13 semanas) con semáforo — el instrumento para navegar la crisis de liquidez.
- Captura de caja actual (tesorería) y obligaciones de caja (nómina, PILA, bancos, tarjetas) con vencimiento, que alimentan las salidas proyectadas.
- Tarjetas nuevas: caja actual, runway (semanas con caja), punto de equilibrio del mes y concentración de cartera (qué % depende de un solo cliente).
- Cartera exacta: se persiste el saldo por factura y su vencimiento (se llena al re-sincronizar Siigo, solo lectura).
- Corregido un semáforo del cockpit de caja que podía pintar "verde" con costo financiero de signo invertido.
v4.27.0
Minor
2026-07-02
Candados de integridad de inventario y seguridad (auditoría multi-agente)
- Inventario a prueba de descuadres: editar una orden de compra ya recibida no vuelve a sumar stock; borrar una venta con entregas o un préstamo emitido queda bloqueado; el hard-delete de un ítem con historial (kardex) se impide; y la distribución por ubicación se valida contra el stock real.
- Cartera exacta: la lista "cobrar hoy" muestra el monto completo de la factura (antes salía redondeado como "$1.2M").
- Descuentos >20% ahora bloqueantes: una cotización que supera el umbral no se puede enviar, convertir a venta ni exportar en PDF hasta que esté aprobada.
- Seguridad: se activó el límite de peticiones global y se protegieron los endpoints públicos de privacidad; el módulo Ventas dejó de ser visible para todos los roles; se ampliaron los registros de auditoría a cotizaciones, compras, comisiones, caja y cartera; y se cerró una fuga del token de recuperación de contraseña.
- UX: el modal de "Nueva venta" ya no se pierde al seleccionar texto; el costo de las órdenes de compra se captura en pesos (no en centavos); fechas de cierre y contadores de papelera corrigen el desfase de zona horaria; y Operaciones (pm) ya entra al tablero financiero.
PM v3.11.4
Patch
2026-07-01
Project Management: la pelota se ve igual en Fases, Kanban y Cards
- Un proyecto cerrado ahora muestra el chip "Closed" en las tres vistas. Antes, Kanban y Cards mostraban el estado crudo de la pelota (p. ej. "BPA · 45d") mientras Fases ya decía "Closed".
- Fuente única: el chip lo decide una sola función (
ballChip), así no vuelven a divergir las vistas.
v4.26.0
Minor
2026-06-25
Numeración de cotizaciones: monotónica y sin saltos al borrar
- El consecutivo es ahora estrictamente creciente (nunca retrocede, ni al cambiar de mes) — seguro para auditoría/DIAN.
- Si borras el último borrador, ese número se reutiliza (caso "rehacer la última cotización"); los huecos intermedios no se rellenan (evita números fuera de orden).
- Unicidad del número solo entre cotizaciones vivas (una borrada y una viva pueden compartirlo); duplicar y editar números más robustos.
v4.25.2
Patch
2026-06-24
Portal de Integradores: habilitar/deshabilitar marca completa
- En Gestión, además de habilitar/deshabilitar referencias una por una, ahora hay botones "✓ Habilitar toda la marca" y "✕ Deshabilitar toda la marca" que actúan sobre toda la marca cargada (no solo lo filtrado). Se confirma con "Guardar cambios".
v4.25.1
Minor
2026-06-24
Nueva venta: buscador de cliente + aviso de duplicado
- El modal de "Nueva venta" ya no recibe el cliente como texto libre: busca en el CRM/Maestro y enlaza el cliente (mata el cliente-duplicado tecleado a mano). Si de verdad no existe, se puede escribir igual.
- Al elegir el cliente, avisa (sin bloquear) si ya tiene ventas abiertas o negocios activos en el CRM, con enlaces para ir a la existente — para no registrar dos veces el mismo negocio.
v4.25.0
Minor
2026-06-24
Sales Follow-up enganchado al flujo: sin duplicidad
- Cuando un negocio del CRM entra a la etapa OC/Contrato, se crea automáticamente una venta preliminar en Sales Follow-up, precargada con la info de la cotización + CRM (cliente, ítems, moneda, montos) y enlazada (negocio + cotización + cliente del maestro). Angélica solo completa lo que falte.
- Idempotente: al pasar de OC/Contrato → Anticipo → Ganado se reusa la misma venta (nunca duplica, no pisa lo editado). La cotización ahora sabe a qué venta dio origen.
- En Ventas, las preliminares se marcan con badge "Preliminar — completar" + contador, y se distingue el origen (CRM vs Directa). En el CRM, al mover a OC/Contrato avisa que la venta quedó creada.
v4.24.5
Patch
2026-06-24
Cotizaciones: menú de acciones claro (sin duplicados accidentales)
- La columna Acciones ahora es un menú ⋮ por fila con opciones explícitas: Duplicar y Enviar a papelera (borrar, admin). Antes el icono de duplicar se confundía con un menú y al hacer clic duplicaba sin querer; y borrar no era evidente.
v4.24.4
Minor
2026-06-24
Portal de Integradores más claro y en pesos
- Catálogo reordenado en columnas Marca · Referencia · Descripción · Precio · Disponibilidad, alineado y legible.
- Precios siempre en pesos colombianos ($ 1.420.168), con TRM configurable (admin/pm) para convertir productos en USD.
- Los integradores ven el portal siempre en español; nuevo enlace ← Inicio y panel de Novedades con la versión.
- Forecast: las referencias se buscan en el catálogo (o se escriben libres), probabilidad con slider arrastrable y líneas de proyecto colapsables.
v4.24.3
Minor
2026-06-24
Mejor organización de módulos y control de accesos por usuario
- Administración ahora agrupa Maestro de Clientes y Contactos & Empresas (antes en Ventas).
- Nuevo grupo Mercadeo con Content Calendar (Cronograma de Contenido).
- En Equipo → permisos, la lista de módulos por usuario ahora se arma del catálogo completo: aparecen TODOS los módulos (Caja, Guía del Flujo ERP, Órdenes de Compra, Forecast, etc.), no solo unos pocos, para habilitar con precisión qué ve cada quien.
v4.24.2
Minor
2026-06-24
"Para hoy" (Daily Focus) ahora es accionable
- En el panel Para hoy del módulo PM: botón ✓ para completar tareas sin abrir el proyecto (las de CRM piden el resultado; las de PM se cierran directo).
- En Recontactar (pelota): +7d pospone el plazo de la pelota y ✓ lo quita, sin salir del tablero. El panel se refresca solo tras cada acción.
v4.24.1
Patch
2026-06-24
Fix: restablecer tu propia contraseña ya no cierra tu sesión
- Al cambiar tu propia contraseña desde Equipo, el sistema invalidaba tu sesión activa y te sacaba con "Unauthorized". Ahora se re-emite la sesión con la nueva contraseña: te quedas dentro y el cambio aplica de inmediato.
v4.24.0
Minor
2026-06-24
Portal de Integradores: login propio + Forecast de proyectos
- Login externo del integrador: cada integrador puede tener su propia cuenta (email + contraseña). Al ingresar ve solo su catálogo y sus proyectos — nunca datos de otro integrador ni módulos internos (aislamiento por rol externo con allowlist estricta). El alta de credenciales la hace admin desde el portal (contraseña temporal de un solo uso).
- Forecast de proyectos: el integrador registra sus proyectos en curso (nombre, ciudad/país, fecha estimada de ejecución, % de probabilidad, estado, valor, marcas y referencias con cantidad).
- Tablero de provisión (admin/pm): demanda esperada por producto = Σ(cantidad × probabilidad) cruzada con el stock actual, para tener el producto a la mano al momento de ejecutar.
v4.23.1
Minor
2026-06-23
Crear cotización directo desde el negocio (CRM)
- En el negocio del CRM, sección Cotizaciones, nuevo botón "➕ Crear cotización": crea la cotización ya vinculada al negocio y con el cliente precargado (empresa, contacto, documento, moneda) y abre el editor para agregar los ítems.
- Cierra el camino para Ventas: negocio → crear cotización → (enviar) → Ganado → generar venta/remisión, sin re-teclear el cliente.
v4.23.0
Minor
2026-06-23
Portal de Red de Distribución para Integradores (preliminar)
- Nuevo módulo (grupo Ventas, vista previa admin/PM): cada integrador ve solo los productos que se le habilitan, con precio y semáforo de disponibilidad (Disponible / No disponible, sin mostrar cantidades), usando los colores por producto del inventario.
- Cuando un producto viene en camino, aparece un 🚚 que al hacer click muestra la fecha tentativa de llegada (de las Órdenes de Compra en tránsito).
- Habilitación por integrador (por marca/producto) desde la plataforma. Piloto: Psicoacústica con productos Audix.
- El acceso de los integradores con su propia cuenta (login externo) es la siguiente fase; por ahora es vista previa interna.
v4.22.0
Minor
2026-06-23
Una sola identidad de cliente: Maestro y CRM enlazados (sin duplicados)
- Empresa = una sola ficha: el Maestro de Cliente (oficial por NIT, para Ventas/Cartera/Siigo) y las Empresas del CRM (directorio del pipeline) ahora quedan enlazados por NIT/nombre — la misma organización deja de vivir duplicada en dos lados. Cada ficha del Maestro muestra "Ver en CRM".
- Sin duplicados nuevos: al crear una empresa en el CRM se enlaza/crea su ficha en el Maestro automáticamente (y al revés desde ventas). Best-effort: nunca bloquea el flujo del CRM.
- Normalización unificada: se corrigió la raíz que generaba duplicados — nombres con tilde ("Café Música") y NITs con puntos ahora se reconocen como el mismo cliente.
- Aditivo y verificado por el agente adversario: no se fusionan ni borran datos; el CRM y las cotizaciones siguen funcionando igual.
v4.21.1
Patch
2026-06-23
Bandeja de tareas: completar sin error + tarea consecutiva
- Fix del "Error 422" al completar una tarea desde la bandeja (📋): faltaba el resultado del seguimiento obligatorio. Ahora al cerrar una tarea del CRM se abre el modal de resultado (igual que en el kanban) en vez de fallar.
- Tarea consecutiva: al completar una tarea, pregunta si quieres crear una nueva ligada al mismo negocio/proyecto — como en el CRM.
- Errores legibles: los mensajes de validación de la plataforma ya no muestran "[object Object]" — ahora explican qué falta, en todos los módulos.
v4.21.0
Minor
2026-06-21
Venta desde "Anticipo" + Entrega parcial escalonada
- Generar venta / remisión desde "Anticipo": el botón del CRM ahora funciona también cuando el negocio está en etapa Anticipo (no solo Ganado) — crea la venta en estado "anticipo", para remitir/entregar sin tener que cerrarla aún.
- Entrega parcial (escalonada): en una venta puedes registrar cuánto entregas por línea ("entregado X de Y"); el inventario descuenta solo lo entregado en cada paso y la venta queda en estado "Entrega parcial" con su saldo pendiente. Ideal para mercancía que llega importada de a pocos.
- Inventario blindado: no se puede bajar la cantidad de una línea por debajo de lo entregado, ni borrar líneas con entregas; el stock no se descuenta doble y se recupera si faltaba al reponer. (Revisado por el agente adversario; 8 pruebas de integridad.)
- La Guía del Flujo ERP documenta ambos casos (incluida la nacionalización antes de despachar).
v4.20.0
Minor
2026-06-21
Soporte más legible + volver a Inicio desde cualquier módulo
- Dashboard de Soporte rediseñado: barras proporcionales con conteo claro, color con significado (antigüedad del backlog reciente→viejo, garantía verde/ámbar), íconos por tarjeta y estado vacío amable. Apagado y dark-mode-safe. Revisado por los agentes de UI y UX.
- Navegación a Inicio / módulo madre: las páginas que no tenían cómo volver (Comisiones, Maestro de Clientes, Órdenes de Compra, Guía del Flujo) ahora tienen un breadcrumb "Inicio / Grupo" consistente.
v4.19.0
Minor
2026-06-21
Inventario: "Candidatos a liquidar" priorizado (palanca de caja)
- Nueva vista en Inventario → Seguimiento → "🔴 Candidatos a liquidar": rankea el inventario comercial por capital congelado × días sin rotar (lo más caro y más viejo primero) para decidir qué empujar primero en las promociones.
- Muestra por ítem: stock, capital congelado, última venta, días sin rotar y rotación; con total congelado y umbrales 90/180/365 días. Permite marcar ítems para liquidar. Apoya la campaña de salida de inventario.
- Nota: el capital se calcula a precio de venta (el catálogo aún no guarda costo); útil para priorizar.
v4.18.0
Datos
2026-06-21
Cierre 2025 firmado cargado como fuente oficial
- Se cargó el Estado Financiero anual 2025 FIRMADO (definitivo) como fuente autoritativa: utilidad operacional $104,3M, utilidad neta $33,1M, patrimonio $407,3M, deuda bancaria $309,5M, inventario $686,8M. El cierre firmado tiene prioridad sobre el borrador mensual (que ya no lo sobreescribe).
- Aparecen los indicadores RUP 2025 que faltaban (liquidez 3,06 · cobertura 1,91 · endeudamiento 0,62 · ROE 0,26 · ROA 0,10).
v4.17.0
Minor
2026-06-21
Anticipos con saldo exacto en Cartera + guía del flujo
- Monto del anticipo en la venta: cuando una venta queda en "anticipo", ahora se registra cuánto pagó el cliente; el campo aparece en la edición de la venta y muestra el saldo en vivo.
- Cartera con saldo real: la lista de "cobrar hoy" muestra "anticipo $X · saldo $Y" y el aging se calcula sobre el saldo pendiente real (ya no aproxima). Las ventas viejas sin monto siguen mostrando el total marcado como aproximado.
- Guía del Flujo ERP ampliada: nueva sección de casos especiales — anticipos, facturar antes de entregar, y contratos de gobierno por hitos (acta de terminación). Recuerda: el inventario solo se mueve al despachar, nunca al facturar ni al recibir el anticipo.
v4.16.0
Minor
2026-06-21
Tablero financiero: cifras corregidas + ver evolución mes a mes
- Corrección de cálculo (importante): la utilidad operacional 2025/2026 mostraba cifras imposibles (≈ o mayores que los ingresos) por un error de signo al sembrar los datos; ya se recalcula bien desde el informe real. También se corrigieron los ingresos 2026 (ahora suma real ene–may) y la deuda 2026 (sale del balance, ya no copiaba los ingresos), y aparecen los indicadores RUP de 2025.
- Evolución mes a mes: en "Crecimiento de ingresos" y "Deuda financiera", al hacer click en un año se abre su detalle mensual (Ene–Dic). Los años sin desglose mensual lo avisan.
- Barras horizontales por defecto en la gráfica de ingresos (el toggle Vertical/Horizontal sigue disponible).
v4.15.0
Minor
2026-06-21
Trazabilidad: quién cambió qué + control de acceso en el servidor
- Auditoría "qué cambió": ahora queda registrado el antes → después de los cambios sensibles — estado/monto/moneda/vendedor de una venta, total/descuento/aprobación de una cotización, reapertura o base de la caja, y etapa/valor/cierre de un negocio del CRM. Sin datos personales. Se ve en el registro de auditoría.
- Permisos en el servidor (RBAC) ampliados: el control de quién entra a cada módulo ya no vive solo en el navegador — el servidor lo valida en 18 módulos (finanzas, cartera, forecast, riesgo, usuarios, cotizaciones, caja, inventario, calculadora/listas de precios, cronograma, respaldos, auditoría, datos personales).
v4.14.0
Minor
2026-06-21
Varios contactos por negocio, comisión por venta pagada y Riesgo privado
- Contactos del negocio (CRM): un negocio ahora puede tener varios contactos — un principal y varios secundarios. Se gestionan desde el negocio (agregar, quitar, "hacer principal").
- Cotizaciones: el nombre del negocio en la columna LEAD ya no se corta — se muestra en dos líneas.
- Comisiones: el vendedor gana 2% de comisión por su negocio cerrado y pagado (las ventas aún por cobrar no causan comisión hasta que se paguen).
- Riesgo: el módulo quedó visible solo para Dirección (admin) y Operaciones (pm).
v4.13.0
Minor
2026-06-21
Accesos, guía del flujo y cotizaciones atadas a su negocio
- Acceso para Operaciones: Finanzas, Cartera y Forecast ahora los pueden ver admin y Angélica (pm) — y nadie más.
- Cotizaciones ↔ negocio: la lista muestra a qué lead del CRM está vinculada cada cotización (chip clickable), marca en ámbar las "⚠ Sin lead" y avisa al guardar una sin negocio, para que no queden cotizaciones sueltas.
- Guía del Flujo ERP: nueva página con el camino correcto (lead nuevo o cliente directo → cotización → venta → despacho → facturación en Siigo) y las reglas para no cruzar datos.
- Maestro de Cliente: poblado con tus clientes reales y enlazado a las ventas; el cliente se identifica por nombre (no hay que memorizar NIT).
- Cmd+K: los atajos rápidos ahora incluyen Maestro de Clientes, Comisiones, Órdenes de Compra, Cartera y la Guía del Flujo ERP.
v4.12.1
Patch
2026-06-21
Acceso directo a los módulos nuevos
- Tiles en el launcher para Maestro de Clientes y Comisiones (Ventas) y Órdenes de Compra (Inventario), para que se puedan abrir desde la pantalla principal sin escribir la URL.
v4.12.0
Minor
2026-06-21
ERP Ola 3 — compras, comisiones formales, finanzas consultables y permisos en el servidor
- Órdenes de compra ligeras: registra "qué pedí, qué llegó, qué falta" por proveedor; al recibir mercancía, el stock entra solo al inventario (kardex), con control de recepción parcial y anti doble-conteo.
- Comisiones formales: reglas de comisión configurables por vendedor y/o línea de negocio (sobre base neta o total), con cálculo trazable por venta y respetando la moneda (nunca mezcla COP con USD). La comisión ad-hoc por venta sigue mandando como excepción.
- Finanzas consultables: además del informe de siempre (que no cambia), ahora los datos financieros se guardan también en forma de tabla consultable por SQL, para validar y cruzar cifras. Nueva vista "Consulta / validación" en el tablero.
- Permisos en el servidor (RBAC): el control de acceso deja de vivir solo en el navegador — el servidor ahora valida el rol en los módulos sensibles (Finanzas, Cartera, Usuarios, datos personales, Forecast). Auditado para que nadie pierda el acceso que ya tenía.
v4.11.0
Minor
2026-06-21
ERP Ola 2 — cobrar mejor, un solo cliente, proteger margen, saber qué cambió
- Cartera / Aging ("a quién cobrar hoy"): nuevo tablero (grupo Estrategia) con la cartera por antigüedad (0-30 / 31-60 / 61-90 / +90 días), separada por moneda, lista accionable ordenada por mora y DSO aproximado. Palanca directa de caja.
- Maestro de Cliente único: nueva ficha de cliente (NIT opcional — admite persona natural / exportación USA sin NIT) que deduplica por NIT o por nombre. Las ventas pueden enlazarse al maestro. Cierra el re-tecleo del cliente.
- Conciliación CRM ↔ Siigo (automática): cruza ventas con facturas Siigo (por NIT + n° factura, y como respaldo NIT + monto + fecha). Solo lectura sobre Siigo; vista previa sin escribir y aplicación idempotente. Devuelve los días/mes que se iban en conciliar a mano.
- Aprobación de descuento: los descuentos por encima del umbral (configurable, por defecto 20%) quedan "pendientes de aprobación" y requieren visto bueno de admin/PM. Protege el margen en crisis.
- Auditoría "qué cambió": el registro de auditoría ahora puede guardar el antes→después de un cambio (quién bajó un precio, reabrió la caja…), con datos sensibles enmascarados.
v4.10.0
Minor
2026-06-21
ERP Ola 1 — la venta empieza a encadenarse (Order-to-Cash)
- Botón "Generar venta / remisión" desde el CRM: un negocio ganado con cotización vinculada crea la venta (y opcionalmente la remisión RE) de un clic, sin re-teclear cliente ni ítems. Idempotente: no duplica.
- Moneda por venta: cada venta ahora guarda su moneda (COP/USD/EUR). Las cifras de caja, comisiones, retención y estacionalidad ya no mezclan dólares con pesos (corrige un error silencioso de reportes).
- Vender descuenta inventario: al marcar una venta como despachada/entregada, se baja el stock automáticamente (kardex), idempotente y sin romper si falta stock (avisa).
- Import de ventas anti-duplicados: re-subir el mismo Excel ya no crea ventas repetidas (llave por # de factura, con respaldo por cliente+fecha+total).
- Logística con historial: cada rótulo generado queda registrado (destinatario, # cajas, transportadora, guía) con su tabla de envíos.
- Fix Forecast: el botón "Usar baseline real (Siigo/CRM)" ya no muestra el error "422: [object Object]"; ahora aplica bien los números reales y la malla mensual queda coherente.
v4.9.1
Patch
2026-06-21
Forecast con ayudas + sistema visual (iconos, tablas, estados)
- Forecast: cada casilla ahora tiene un tooltip que explica qué es (al pasar el cursor); y el baseline usa tus números reales del año en curso (Ene–May 2026 anualizado) en vez de un año viejo, sugiriendo además la distribución mensual.
- Sistema visual (graphic-design): nuevo set de iconos SVG consistentes (reemplazan emojis), componente de tabla legible, badges/pills de estado y estados de vacío/cargando/error — todo apagado y dark-mode-safe. Piloto aplicado en Soporte; rollout al resto por tandas.
v4.9.0
Minor
2026-06-21
Nuevo módulo: Planeación de Ventas (Forecast de embudo)
- Calculadora de embudo de ventas (metodología Pipeline Business School): pones la meta y te dice cuántos negocios, reuniones y leads necesitas — al año, al mes y por semana (lo accionable), con semáforo de esfuerzo.
- Escenarios (DRAMA / IDEAL / personalizados) comparables lado a lado, con dashboard de pipeline/ventas/ingreso/FCV.
- Baseline automático desde Siigo/CRM: ticket promedio, conversión y meta de referencia salen de tus números reales (botón "Usar baseline real"), no de un Excel viejo.
- En el grupo Ventas (admin). La integración bidireccional con CRM/OKRs queda como fase 2.
v4.8.2
Patch
2026-06-20
Correcciones: MEGA mostraba claves, onboarding en dark, % del Bolograma
- MEGA: mostraba las claves crudas (MEGA.TILE…) por caché viejo de i18n.js → refrescado el versionado de caché en toda la plataforma; ahora muestra los rótulos correctos.
- Tarjeta "¿Por dónde empiezo?": ya respeta el modo oscuro (no más fondo claro/glare).
- Bolograma: el % de variación volvió a quedar dentro del círculo (parte superior) sin pisar el nombre.
v4.8.1
Patch
2026-06-20
Navegación amigable, idioma EN/ES en Estrategia y seguridad de Riesgo/OKR
- Rótulos a prueba de novato en los módulos de Estrategia: "Análisis del Entorno (PESTEL)", "Plan de Innovación ERIC", "Objetivos del Trimestre (OKR)", etc., con un subtítulo de una línea que explica la jerga.
- Idioma EN→ES corregido en los tiles de MEGA y en Riesgo (ya no salen en español cuando la plataforma está en inglés).
- Nueva tarjeta "¿Por dónde empiezo?" en el inicio para orientar a quien llega nuevo.
- Seguridad: Riesgo y OKR ahora exigen control de acceso (antes eran los únicos tableros sensibles sin él). OKR agregado al buscador Cmd+K.
v4.8.0
Minor
2026-06-20
Sprint multi-módulo: indicadores de Soporte, KRIs en vivo, % por ítem y más
- Soporte Técnico: corregido el error 404 del reporte + nuevo dashboard de indicadores por periodo (casos recibidos/abiertos/cerrados con variación, tiempo de resolución, backlog, por fabricante/producto, garantía, por ingeniero, repuestos sugeridos a stockear).
- Riesgo: los 8 KRIs ahora se calculan EN VIVO desde datos reales (Siigo/finanzas/CRM), cada uno con fuente y fecha; corregidas las cifras retractadas (DIO ya no muestra 1.445).
- Horizontes: avance % por cada ítem que alimenta el % global del horizonte.
- OKRs: metas recalibradas (revisión CFO) + el sistema sugiere el valor actual de cada KR leyéndolo de finanzas/Siigo/CRM.
- Inventario: nueva vista "Qué infla el DIO" (capital congelado por producto y marca, caja recuperable, marcar para empujar/descontar).
- Bolograma: el % ya no pisa el nombre + tooltip al pasar el cursor con los datos de cada actividad. Arreglada la bandeja de tareas (completar tarea de CRM).
v4.7.1
Patch
2026-06-20
Bolograma — % de variación visible + anillo de prioridad
- El % de variación ahora va centrado y más grande sobre el nombre de cada actividad (verde sube / rojo baja, apagado) — indica claramente en qué crecemos o decrecemos.
- Nuevo anillo de prioridad alrededor de cada burbuja (alta/media/baja): usa la prioridad editada de la actividad, o la deriva de la brecha si no se ha editado.
v4.7.0
Minor
2026-06-20
Nuevo módulo Quarterly OKRs + Matriz ERIC rediseñada
- Quarterly OKRs (Estrategia, admin): objetivos trimestrales con Key Results medibles, semáforo verde/ámbar/rojo, leading/lagging y fuente del dato. Sembrado con los 4 objetivos de Q3-2026 (Caja · Recurrencia · Rebote · Riesgo). Reemplaza el tile "Próximamente" de MEGA.
- Matriz ERIC v1.3.0: cada tarjeta tintada con el color de su sección, una sola barra de progreso gruesa (click/arrastre, sin doble barra) y "cerrar ciclo" como ícono compacto → tarjetas mucho más limpias.
v4.6.2
Patch
2026-06-20
CRM — buscar contactos/empresas existentes al crear un lead
- En el formulario New Lead, los campos Contact name y Company name ahora autocompletan desde los contactos/empresas existentes del CRM. Al elegir uno se autollenan documento (NIT/CC), teléfono y email. Sigue permitiendo crear contactos nuevos a mano.
v4.6.1
Patch
2026-06-20
Navegación superior unificada en todos los módulos
- El menú superior (appbar) ahora es idéntico en los ~26 módulos: Home + los 5 grupos (Administración · Ventas · Inventario · Estrategia · Ingeniería), con el grupo actual resaltado. Se acabaron los submenús distintos en cada pantalla.
- Subtítulos normalizados (sin inglés suelto ni mayúsculas forzadas) y traducibles ES/EN.
- Corregido el doble selector de idioma en Cotizaciones y Cronograma.
v4.6.0
Minor
2026-06-20
Sprint de optimización: Cmd+K, Price Calc, ERIC, Horizontes, Bolograma y Clientes
- Cmd+K (Ir a…): ahora respeta el dark mode (el panel y la lista ya no salen en blanco) y el filtrado/indexación es correcto — busca por título, grupo y subgrupo, con ranking título-exacto › empieza › contiene › grupo. Escribir "CRM" trae solo CRM; "Ventas" trae todos los módulos de Ventas. El buscador del servidor también prioriza el título.
- Price Calculator: los cálculos se agrupan por mes (más nuevo arriba), con los activos primero, y cada tarjeta queda tintada por su estado (activo/borrador/cerrado) en paleta apagada anti-glare.
- Matriz ERIC: cada ítem tiene avance en % (slider + barra) y se puede cerrar el ciclo; los cerrados se conservan atenuados y se pueden reabrir, dejando espacio para agregar ítems nuevos.
- Horizontes: barra de progreso con % por cada horizonte (calculada de los ítems completados).
- Bolograma / Curva de Valor: nueva variación % por actividad y global, visible tanto en la tabla como en la gráfica (verde sube / rojo baja, apagado).
- Clientes: selector por año, botón "Top 20 del año" desde las facturas históricas (para recuperar clientes de años pasados), y el límite de clientes visibles subió de 10 a 30 con "Mostrar 10 más".
- Nuevo agente estratega-gerencial en la Universidad de Agentes (copiloto de dirección: OKRs/KPIs, planeación estratégica medible).
v4.5.0
Minor
2026-06-15
Nuevo módulo: RIESGO — Gestión Integral de Riesgos (ERM)
- Tablero Financiero — doble lente de ingresos: junto a «Ingresos por tipo (facturado · contable)» se agregó «Ingresos por vertical (CRM)» con selector de periodo (por mes / por año / rango de fechas día a día) y mini-reconciliación CRM vs facturado (✓ cuadran / ⚠ revisar). Preparado para cargar años anteriores del CRM.
- Módulo Riesgo (sección Estrategia), nivel firma top con marco COSO ERM 2017 + ISO 31000:2018: tablero ejecutivo, mapa de calor 5×5 con toggle inherente/residual, registro corporativo, KRIs con semáforo de alerta, y cadena de mitigación (análisis→evaluación→tratamiento→monitoreo→resolución).
- Sembrado con los 14 riesgos reales de BPA (Top: iliquidez, inventario congelado, FX, modelo no recurrente, demanda) y 8 KRIs. Cada riesgo tiene dueño y agente responsable.
- Soportado por el nuevo agente de Riesgo (CRO) de la Universidad, autorizado a convocar a CFO, Eco y demás especialistas + la Junta Directiva Agéntica.
v4.4.6
Patch
2026-06-14
CRM: cambiar el vertical desde la tarjeta (sin abrir el negocio)
- En el tablero del CRM, el badge de vertical de cada negocio ahora es clickeable: abre un selector inline (Proyectos · Servicios · E-commerce · Integradores · Venta directa) y lo cambia al instante, sin tener que abrir cada negocio.
- Los negocios sin vertical muestran un chip "+ vertical" para asignarlo rápido. Alimenta directo el indicador de Ventas por vertical en Finanzas.
v4.4.5
Patch
2026-06-14
Ventas por vertical en indicadores financieros
- Ventas por vertical en el Tablero Financiero (Siigo): negocios ganados del CRM agrupados por vertical (Proyectos · Servicios · E-commerce · Integradores · Venta directa), valor sin IVA, por año, con nº de negocios y %.
- Fuente: CRM (campo
business_line del lead) — se actualiza al instante al clasificar cada negocio. Endpoint /finance/sales-by-vertical (admin).
v4.4.4
Patch
2026-06-14
CAC — Costo de Adquisición por Cliente (Siigo)
- CAC destacado junto al NRR: inversión de adquisición de BPA = eventos/talleres/ferias/seminarios + viajes/relacionamiento (núcleo real) + publicidad/promoción + comisiones de canal, extraída de las cuentas de gasto de Siigo, ÷ clientes nuevos del periodo (primera factura ese año).
- Por año (2024, 2025, 2026-YTD) con desglose (eventos · publicidad · comisiones) y nº de clientes nuevos. Excluye lo administrativo/financiero/laboral. Nota: no incluye nómina del equipo comercial (no llega a Siigo como compra).
v4.4.3
Minor
2026-06-14
Nuevo indicador destacado: Net Revenue Retention (NRR)
- NRR en el Tablero Financiero (Siigo), destacado arriba: mide cuánto retienes y expandes tu base de clientes. NRR(año) = lo que facturaron este año los clientes que ya tenías el año anterior ÷ lo que te compraron ese año anterior (clientes nuevos no cuentan).
- Calculado desde las facturas reales de Siigo (2023→) por año, con semáforo (🟢 ≥100% · 🟡 85–100% · 🔴 <85%) y la cohorte (clientes base / cuántos recompraron). El año en curso se muestra YTD (mismos meses vs el año anterior) para comparar parejo.
v4.4.2
Patch
2026-06-13
Seguimiento de Inventario con el histórico de ventas de Siigo
- Pestaña 📊 Seguimiento (Inventario): ahora se alimenta del histórico de ventas real de Siigo (no del kardex interno, que estaba vacío). Muestra: 🔥 más vendidos con frecuencia de venta, 💀 muertos (en stock, sin ventas en el periodo, ordenados por valor congelado), 🐢 rotación lenta (vendió menos de ½ de su stock), 🕒 más tiempo sin venderse y más unidades en stock.
- Periodo configurable (30/90/180/365 días) que recalcula las ventas desde el histórico. De Siigo se usa solo el histórico de ventas, no su inventario.
v4.4.1
Patch
2026-06-13
Rotación / muerto / lento sobre el inventario REAL
- Rotación de inventario (Finanzas): ahora se calcula sobre el stock físico reconciliado (conteo real) y los precios reales del inventario, cruzados con las ventas reales de Siigo (unidades vendidas 12m). Antes usaba el
available_quantity de Siigo, que no coincidía con la realidad (p. ej. API Lunchbox marcaba 10 con stock real 0).
- Cubre todo el Sale Inventory (antes top 40 por valor) y normaliza los códigos (ceros a la izquierda) para cruzar SKU ↔ Siigo. Clasifica 💀 muerto / 🐢 lento / ✓ rota.
- Buscador de inventario corregido: búsqueda por palabras (p. ej. "Audix I5" ya encuentra el ítem).
v4.4.0
Minor
2026-06-11
Nuevo módulo: Cronograma de Contenido (content calendar de marketing)
- Calendario mensual de publicaciones (Ventas): vista semanas × días con pilar, formato y hora por casilla. Flujo de estados Idea → En guion → En diseño → Aprobado → Programado → Publicado → Medido.
- Balance de pilares con semáforo: resumen por pilar del mes (Producto · Historia interesante · Promoción · Nuevo producto · Contenido educativo · Testimonio · Opinión personal) con indicador verde/ámbar/rojo según la mezcla.
- Backlog de ideas con acción (Probar/Estructurar/Estudiar/Tomar fotos/Script/Ebook/Construir/Revisar/OK), responsable, fecha objetivo y notas. Sembrado con 24 ideas reales (Soyuz, RME, DANTE, Pro Tools, Atmos, NAMM, etc.).
- API REST para el agente Eco (CMO AI): leer la agenda (
/cronograma/posts, /cronograma/summary, /cronograma/ideas), crear y actualizar publicaciones e ideas. Cada publicación arrastra su brief, guion y link de la pieza; producto/marca vinculable al catálogo de inventario.
v4.3.0
Minor
2026-06-08
Inventario comercial completo + Cotizaciones avanzadas (TRM, IA, clientes)
- Catálogo comercial cargado: 816 productos del inventario de Angélica (COP) + 902 productos de Zoho (USD/COP/N/A, marcados "Origen: Zoho"). Inventario de venta en COP; equipos internos en USD, sin mezclar.
- Cotizaciones — moneda y TRM: selector COP/USD/EUR + TRM oficial del día (datos abiertos del gobierno) con colchón ±$50; conversión automática de precios al agregar productos. La TRM es interna (no sale en el PDF).
- Buscador de productos multi-palabra (tokenizado), solo catálogo de venta; búsqueda/autocompletado de clientes desde el CRM y creación de cliente nuevo sin duplicar.
- Dictado con IA reforzado (Ollama→Anthropic): captura todos los datos, señala lo que falta. Reordenar ítems ↑↓, cantidades enteras, editar descripción del producto, franja de color por estado, consecutivo continuado de Zoho (2606071).
- UI: ícono de inicio unificado en 26 páginas; bitácora de versiones ordenada por fecha.
v4.2.0
Minor
2026-06-06
Blindaje de seguridad (3 olas) + backup cifrado
- Endurecimiento integral: headers de seguridad + HSTS, docs cerrados en producción, rate-limiting por IP real, whitelist de roles, complejidad de contraseñas, validación de subidas por magic bytes, guards de arranque y CORS estrecho.
- Cifrado de datos financieros en reposo (AES-SIV) en SQLite y réplicas.
- Backup cifrado del lado cliente (AES-256-GCM) a Cloudflare R2, adicional a la replicación continua.
- Auditoría "puertas abiertas" (8 vectores) con doble verificación: sin vías de intrusión por la configuración actual.
v4.1.0
Minor
2026-06-05
Tablero Financiero + Siigo en vivo
- Tablero Financiero (admin): estado de resultados mensual y anual 2017→2026, KPIs con semáforo, indicadores para licitaciones (RUP), EBITDA y Cockpit de Caja.
- Siigo conectado (solo lectura): ventas/compras/cartera con aging, Top 20 productos (por valor y cantidad), inventario con rotación para liquidar lento/muerto.
v4.0.0
Major
2026-06-04
Módulo Cotizaciones — reemplazo de Zoho Invoice
- Cotizaciones estructuradas con subgrupos (MAIN/OUTFILL/…), IVA por ítem, descuentos, PDF en formato BPA y vínculo al CRM.
- Armado por voz e IA: dicta la cotización y la IA la estructura cruzando los productos con el inventario.
v3.10.0
Minor
2026-05-31
Sprint PM (pelota en cancha, fechas) + optimización de rendimiento
- PM: "pelota en cancha" (de quién depende), fecha objetivo con semáforo de slippage, tareas por proyecto y bandeja unificada CRM+PM.
- Rendimiento: compresión gzip, caché de estáticos, fix de N+1 en CRM, auto-suspensión de la VM y wrapper de PDF más estable.
v3.9.0
Minor
2026-05-29
Resiliencia y seguridad base
- Backups continuos Litestream → Cloudflare R2 (RPO < 1s) y backup SQLite cada 12h.
- Cifrado de PII en reposo (AES-SIV), rate-limiting (slowapi), tareas programadas (APScheduler) y migración Kommo → CRM completada.
Caja v1.0.0
Minor
2026-05-28
Módulo Caja Menor: gestión mensual con base + ingresos/egresos liquidables
- Nuevo módulo bajo Administración: tile "Caja Menor" en el grupo Admin del launcher. Acceso para roles admin / pm / assistant (Andrés, Angélica, Laura).
- Periodos mensuales: tabla
cash_periods con (año, mes, base_inicial, status open/closed). UNIQUE(year, month). Al abrir un mes, la base sugerida es el saldo de cierre del mes anterior.
- Movimientos: tabla
cash_movements con fecha, tipo (ingreso|egreso), concepto, categoría, monto, beneficiario, soporte (#factura/recibo) y responsable. Categorías sugeridas: Papelería, Alimentación, Transporte, Aseo y cafetería, Servicios públicos, Mantenimiento, Honorarios pequeños, Mensajería / domicilios, Recarga / reembolso, Otros.
- KPIs vivos: Base + Ingresos − Egresos = Saldo, calculados al vuelo desde la BD (no almacenados).
- Cierre de mes: bloquea ediciones, calcula
closing_balance_cents y deja el registro como soporte contable. Solo admin puede reabrir.
- Endpoints REST:
/cash/periods (list/create/get/patch/close/reopen), /cash/periods/{id}/movements (list/create), /cash/movements/{id} (patch/delete), /cash/categories. Pydantic strict (extra='forbid') en todos los schemas.
- Migración Alembic:
cash_module_001 (ID semántico, encadenada a audit_log_001).
CRM v0.4.0 (piloto)
Minor
2026-05-26
Fase 2 completa: Cotizaciones · Contactos+Empresas · Import Kommo · Dashboard mes a mes
- Cotizaciones por lead: nueva tabla
lead_quotes. Upload de PDF directo desde el drawer del lead, con versión, monto, status, notas. Descarga inline. Storage en /data/lead_quotes/{lead_id}/. Hasta 25 MB por archivo.
- Bases de Contactos & Empresas: tablas
crm_contacts y crm_companies independientes. Dedup automático: empresas por nombre normalizado (uppercase + sin acentos + sin puntuación); contactos por documento > email > (nombre + empresa). Nueva página contacts.html con 4 tabs.
- Backfill desde leads existentes: botón "↻ Backfill" extrae contactos/empresas únicos de los leads ya cargados. Idempotente.
- Auto-upsert al crear/editar lead: en próximos sprints — por ahora el backfill cubre.
- Importador de Kommo (CSV): nueva tab "Importar de Kommo" con previsualización antes de confirmar. Mapeo flexible: detecta columnas comunes (Nombre, Contacto, Empresa, NIT, Email, Teléfono, Etapa, Precio, Etiquetas, Origen, Fecha de cierre). Mapeo de etapas Kommo → BPA. Idempotente por (título + contacto).
- Dashboard mes-a-mes por línea de negocio: tabla con valor en COP por (línea × mes), totales fila/columna. KPIs: leads totales, valor total, ganados, valor ganado. Tooltips con cantidad de leads y ganados. Hasta 24 meses.
- Tile "Contactos & Empresas" en launcher (grupo Ventas).
- Backup R-09:
_backups/platform_pre_crm_v04.tar.gz.
CRM v0.3.0 (piloto)
Minor
2026-05-26
Vista Agenda · tareas agrupadas por urgencia (estilo Kommo)
- Toggle de vista en el header del CRM: Pipeline (kanban habitual) / Tareas (agenda).
- Vista Agenda: 6 columnas con tareas pendientes agrupadas por urgencia.
- Vencidas (rojo) — due_date anterior a hoy.
- Hoy (verde) — due_date = hoy.
- Mañana — due_date = mañana.
- Esta semana — resto de la semana hasta domingo.
- Próxima semana — lunes-domingo siguiente.
- Para el futuro — fechas más allá.
Tareas sin fecha aparecen en sección aparte.
- Cards de tarea: contacto + empresa, nombre del lead clicable (abre drawer del lead), fecha + responsable, descripción y notas. Checkbox para marcar completada sin abrir el lead.
- KPIs reactivos: en vista Agenda, las 6 KPIs cambian a Total pendientes · Vencidas · Hoy · Esta semana · Próxima semana · Futuras.
- Filtro por responsable en la vista agenda.
- Endpoint nuevo
GET /leads/tasks/agenda retorna buckets temporales (overdue/today/tomorrow/this_week/next_week/future/no_date) enriquecidos con info del lead.
- Backup R-09:
_backups/platform_pre_crm_agenda.tar.gz.
Pendiente Fase 2 restante: upload de cotizaciones por lead · bases de contactos y empresas como entidades separadas · importación desde Kommo · dashboard mes-a-mes por línea de negocio.
CRM v0.2.0 (piloto)
Minor
2026-05-26
Etapas BPA · Card mejorada · Tareas · Línea de negocio
- Etapas redefinidas por Andrés: Sin Contactar · Prospecto · Programar Cita · Cotización · Pipeline · OC o Contrato · Anticipo · Ganado · Perdido. Migración
crm_lead_002 con UPDATE: negociacion → pipeline.
- Card kanban rediseñada: contacto + empresa arriba, nombre del lead destacado, fecha de creación en esquina, monto, etiquetas (marcas hasta 4), indicador de tareas (punto de color): gris=sin tareas · rojo=atrasadas · verde=hoy · amarillo=futuras.
- Módulo de Tareas: nueva tabla
lead_tasks + CRUD desde el drawer del lead. Cada tarea: título, fecha de ejecución, estado pendiente/completada. Checkbox para marcar completada (loggea actividad y registra quién/cuándo).
- Línea de negocio: nuevo campo en el lead para indicadores futuros — Proyectos · Servicios · e-commerce · Integradores · Directa. Endpoint
/leads/stats ya retorna totales por línea.
- Documento del contacto: CC / NIT agregado al lead.
- Modal Nuevo Lead reorganizado: arriba Nombre del Lead + Etiquetas; luego Contacto + Documento, Empresa, Teléfono/Email; abajo Responsable, Etapa, Presupuesto, Cierre, Origen, Línea de negocio, Notas.
- Validaciones: ahora "Nombre del Lead" y "Nombre del Contacto" son obligatorios.
- Backup R-09:
_backups/platform_pre_crm_v02.tar.gz.
Pendiente Fase 2: upload de cotizaciones por lead · bases de contactos y empresas como entidades separadas · importación desde Kommo (CSV/API).
CRM v0.1.0 (piloto)
Minor
2026-05-26
Piloto de CRM interno — alternativa kanban a Kommo
- Decisión: tras análisis con el Abogado del Diablo, Andrés decide construir piloto SIN cancelar Kommo todavía. La omnicanalidad (WhatsApp/Instagram/FB) se queda en las apps nativas; el CRM solo cubre pipeline kanban.
- Modelo nuevo
Lead + LeadActivity. 7 etapas canónicas: sin_contactar · prospecto · programar_cita · cotización · negociación · ganado · perdido. Migración crm_lead_001.
- Frontend kanban:
crm.html con drag-and-drop entre columnas, KPIs (leads activos, pipeline activo, ganados, perdidos, total), búsqueda + filtros (etapa, responsable, incluir cerrados).
- Drawer de detalle con datos del lead, etapa, valor, origen, etiquetas, responsable, cierre estimado. Bitácora de actividades (notas, llamadas, reuniones, WhatsApp, email) con auto-log de cambios de etapa.
- API:
GET/POST/PATCH/DELETE /leads, GET /leads/stats, GET/POST /leads/{id}/activities, GET /leads/stages.
- Launcher: tile CRM activado (estaba en "soon"), accesible para admin/pm/commercial/assistant.
- Backup R-09:
_backups/platform_pre_crm_pilot.tar.gz.
Clientes v1.2.0 · AppSettings
Minor
2026-05-25
Umbrales editables de Clasificación Potencial · Tabla de settings configurable desde UI
- Tabla "Clasificación Potencial" editable: los 4 umbrales (t1, t2, t3, t4) que separan los 5 buckets (Dilema · A desarrollar · Cliente · Alto valor · Estrella) ahora se editan inline en la tabla. Pulsa Enter o haz click fuera para guardar. Validación: los umbrales deben ser crecientes (t1 < t2 < t3 < t4). Solo admin/pm puede editar; el resto ve los inputs como readonly.
- Persistencia global: los cambios se guardan en una tabla nueva
app_settings (key→json) y afectan a todos los usuarios. Cuando la compañía crece y los rubros suben, Andrés ajusta y todo el equipo ve la misma clasificación.
- Sistema de settings reusable: nuevo modelo
AppSetting, migración b2c3d4e5f6a7, endpoints GET /settings/{key} y PUT /settings/{key} con defaults centralizados y validación específica por key. Listo para extender a otras configuraciones globales (criterios de Sales, umbrales de Valor Actual, etc.).
- Auto-refresh de buckets: al guardar nuevos umbrales, la vista de Gestión recalcula automáticamente los buckets Potencial de todos los clientes visibles. Los cuadrantes se reposicionan en vivo.
- Backup R-09:
_backups/platform_pre_app_settings.tar.gz.
Inventory v1.10.0
Minor
2026-05-24
Preview de distribución · Categoría Corriente · Cable Case M/L
- Preview de distribución: items marcados como "Distribuida" ahora muestran un sub-renglón con el desglose corto (ej.
Rack Gator: 10 · Cable Case M: 15) bajo la pill. Click en la pill abre un modal de solo lectura con la tabla detallada (ubicación · cantidad · notas · total vs stock) y botón "Editar distribución" para saltar al modal de edición.
- Endpoint
GET /items/distributions-summary: devuelve un mapa {item_id: [{location, quantity, notes}]} con todas las distribuciones de una sola llamada (sin N+1).
- Cable Cases → Cable Case M + L: la ubicación
cable_case se renombró a cable_case_m y se agregó cable_case_l como ubicación nueva. Migración a1b2c3d4e5f6 actualizó: 16 items, 8 movimientos de bitácora, todas las distribuciones.
- Categoría nueva "Corriente" (key
power): para extensiones, tomacorrientes y todo lo eléctrico. Color verde oscuro #4A6B47. Prefijo SKU auto: PWR-XXX.
- Backup R-09:
_backups/platform_pre_corriente_preview.tar.gz.
Platform TZ Bogotá
Minor
2026-05-24
Toda la plataforma renderiza en GMT-5 Bogotá
- Problema: timestamps (bitácoras, kardex, notificaciones, fechas de header) se veían con 5 horas de adelanto. Causa: la DB guarda en UTC (estándar técnico) pero el frontend recibía ISO sin sufijo
Z y JS lo interpretaba como hora local del navegador.
- Estrategia: display-only. La DB sigue en UTC (sin migración invasiva). El frontend convierte siempre a
America/Bogota en el momento de render. Cero riesgo de doble-corrección.
- Helpers nuevos en
app.js?v=1782000012: fmtDateTime(iso), fmtDate(iso), fmtTime(iso), bpaTodayLabel(). Detectan ISO sin TZ y lo tratan como UTC. Siempre formatean con timeZone: 'America/Bogota'. Constante BPA_TZ global.
- Backend: nuevo helper
src/bpa/utils/time.py::iso_utc() que retorna ISO con Z explícito. Aplicado en endpoints con serialización manual: /inventory/location-movements, /items/{id}/location-history, /notifications, /pestel, /dofa.
- Fly:
TZ=America/Bogota en fly.toml para coherencia en logs, PDFs y código backend que use datetime.now() sin UTC.
- Headers de fecha en 23 páginas (Inventory, Sales, Horizontes, Soporte, PESTEL, DOFA, Clientes, Curva, ERIC, Site Survey, Bolograma, etc.) migrados a
bpaTodayLabel().
- Backup R-09:
_backups/platform_pre_tz_bogota.tar.gz.
Inventory v1.9.0
Minor
2026-05-23
Bitácora de ubicaciones · Auto-balance en distribución
- Auto-balance en el modal de distribución: la primera fila ("Origen") se ajusta automáticamente al modificar las demás. Si mueves 4 de 25 cables al Rack Gator, la fila origen pasa de 25 a 21 sola. Es
readonly (no editable directamente) y queda visualmente diferenciada (fondo crema + leyenda "se ajusta automáticamente"). Aviso rojo cuando el resto suma más que el stock total.
- Bitácora de movimientos (
item_location_movements): cada cambio de ubicación queda registrado con fecha, ubicación origen → destino, cantidad, motivo (manual / loan_out / loan_return / restore / redistribute), usuario y notas. Migración f0a1b2c3d4e5.
- Botón "Bitácora ubicaciones" en la barra superior: abre modal global con los últimos 500 movimientos de todo el inventario.
- Botón "Historial" en cada item (junto a Distribuir/Restaurar): abre la bitácora filtrada al ítem específico.
- Auto-log en backend: el endpoint
PATCH /items/{id} registra cualquier cambio de location. PUT /items/{id}/distribution calcula deltas por ubicación y loggea cada uno como redistribución. POST /items/{id}/restore-location queda como motivo "restore".
- Backup R-09:
_backups/platform_pre_movement_log.tar.gz.
PM v3.11.3
Patch
2026-05-21
Fix definitivo: slider de avance ya no dispara el drag de la tarjeta/fila
- Causa del bug (v3.11.2 no lo resolvió): el HTML5 drag-and-drop se decide a partir del atributo
draggable="true" del ancestor — stopPropagation sobre mousedown no lo previene.
- Nueva estrategia: al hacer
pointerdown sobre cualquier input[type="range"][data-advance-id], se desactiva temporalmente el atributo draggable del ancestor (card, fila, etc.). Al soltar el puntero (pointerup/pointercancel) se restaura. Implementado como listener global en captura, así cubre Phases (tabla + cards), Kanban y cualquier vista futura sin reinstalar listeners por render.
PM v3.11.2
Patch
2026-05-21
UX: barra de avance ya no inicia el drag de la card/fila
- Slider de avance protegido contra el drag-and-drop de la tarjeta/fila contenedora. En vista Phases (tabla y cards grandes) ya no se inicia el arrastre al hacer click sobre la barra — antes había que ingresar el dato manualmente porque el
mousedown sobre el slider escalaba al tr[draggable]. Vista Kanban ya tenía la protección.
- Cursor diferenciado:
grab (mano) sobre cards y filas arrastrables, grabbing al arrastrar, ew-resize (flecha doble horizontal) sobre la barra de progreso para indicar que se ajusta el porcentaje.
draggable="false" agregado a los sliders en cards grandes y filas de tabla.
PM v3.11.0 · Administration v1.0.6
Minor
2026-05-19
Edición de remarks en Cards · botón "siguiente fase" · borrar remisiones desde lista · manejo defensivo de sesión expirada
- Edición inline en vista Cards: la sección de remarks de cada tarjeta es
contenteditable con el mismo comportamiento que en la lista (borde punteado al hover, mint al enfocar, "— click para escribir —" si está vacía, autosave al blur o Enter).
- Botón "→ Siguiente fase" en cada tarjeta (vista Cards): avanza el proyecto a la siguiente fase de la secuencia HOT Tracking → Design Hot → Design → Construction Hot → Construction Follow → Execution Tracking → Closed. Con confirm para evitar accidentes. Si la fase destino es CLOSED, el año actual se estampea automáticamente.
- Closed YYYY automático: cuando un proyecto pasa a fase Closed, su
closed_year recibe el año actual (2026 hoy, 2027 cuando llegue enero). La vista agrupa automáticamente proyectos por año cerrado, sin necesidad de crear "Closed 2027" manualmente.
- Borrar remisiones desde la lista: cada tarjeta en Administration tiene ahora un botón
× al lado. Confirma → elimina el documento con todo su contenido. Sin necesidad de entrar al detalle.
- Sesión expirada manejada con elegancia: si abres una remisión y la sesión venció (caso típico: 401 desde el editor), ahora ves un panel claro con "Tu sesión expiró · Iniciar sesión" en lugar de quedarte en "Cargando…". El botón redirige a login y vuelves al mismo documento al re-autenticarte.
- Audit técnico: código fuente 1.78 MB · 18,752 líneas · DB en producción 380 KB · volumen total 4.5 MB. La plataforma es ligera. La sensación de lentitud viene del cold start de Fly.io (8–15 s al primer request tras 5 min de inactividad), no del código. Resoluble con
min_machines_running=1 (~USD 2/mes).
- Backup R-09:
_backups/platform_pre_v1.0.6.tar.gz.
PM v3.10.0 · Administration v1.0.5 · Inventory v1.1.2
Minor
2026-05-19
Edición inline de remarks · Typeahead en remisiones · SKU oculto para demos
- Edición inline en vista global de Proyectos: las columnas Remarks y Admin son ahora
contenteditable. Click directo en la celda → editar → blur o Enter para guardar. Estilo visual: borde punteado al hover, mint al enfocar, placeholder "— click para escribir —" en celdas vacías. Ya no hay que entrar al detalle del proyecto para actualizar notas.
- Typeahead en Remisión DM / RE: al digitar en los campos Marca o Referencia aparece un desplegable con los ítems del catálogo que coinciden. Búsqueda cruzada en marca + referencia + descripción. Navegación con flechas ↑↓ y Enter para seleccionar.
- Contexto inteligente: en un DM (préstamo) el typeahead muestra solo categorías de demos (Demos BPA, Demos AM, Herramienta, Cableado). En un RE (remisión de venta) muestra solo el catálogo de venta.
- Selección → fila completa: al elegir un ítem del typeahead se llenan automáticamente marca, referencia, descripción y valor. El foco salta al campo Serie para que solo digites el número único de la unidad. Toast confirma la operación.
- "Crear unidad demo" desde el typeahead: si la marca + referencia que escribiste no existe en el catálogo, aparece un footer "➕ Crear …" que abre el modal de promote-to-catalog directo.
- SKU oculto para no-venta: en la lista de Inventario, los ítems con categoría Demos BPA / Demos AM / Herramienta / Cableado ya no muestran el SKU auto-generado. Solo Inventario de venta lo muestra. La columna queda visualmente limpia para items donde el SKU no tiene sentido operativo.
- Cache invalidation: al agregar un ítem nuevo al catálogo desde el botón 📌, el typeahead refresca su cache automáticamente.
- Backup R-09:
_backups/platform_pre_v1.0.5.tar.gz.
Administration v1.0.4
Patch
2026-05-19
Promote-to-catalog: agregar al inventario demo desde una remisión de préstamo
- Nuevo botón "📌" por fila en el editor de Préstamo (DM). Click → verifica si el ítem (marca + referencia) ya está en el catálogo de demos.
- Si ya existe: muestra mensaje indicando en qué categoría está registrado. Sin duplicados.
- Si no existe: abre modal mini con selector de categoría (Demos BPA / Demos AM / Herramienta / Cableado), valor comercial USD, opción N/A. El SKU se auto-genera. Notas registran de qué DM provino.
- Flujo recomendado: durante el día creas un préstamo con varios equipos a mano; al final, recorres las filas con "📌" para registrar las unidades demo nuevas al catálogo. La próxima vez aparecen en "📦 Desde catálogo de demos…" sin re-tipear.
- Orden alfabético en el catálogo: ya garantizado por backend (lower(brand), lower(reference)). Se ve igual en el modal "Desde catálogo de demos…" y en la página de Inventario.
Inventory v1.1.1 · Administration v1.0.3 · Site Survey rename
Patch
2026-05-19
SKU opcional para demos + catálogo en remisión de préstamo + cleanup AVIXA + i18n
- SKU opcional para categorías no-venta: al crear un ítem como Demo BPA / Demo AM / Herramienta / Cableado, el SKU ya no es obligatorio. Si lo dejas vacío, el sistema auto-genera
DEMO-BPA-001, DEMO-AM-001, TOOL-001 o CABL-001 con consecutivo histórico por prefijo. Solo el inventario de venta sigue requiriendo SKU manual.
- Catálogo de demos en remisión de préstamo: nuevo botón "📦 Desde catálogo de demos…" en el editor de DM. Abre modal con buscador y filtros por categoría (Demos BPA, Demos AM, Herramienta, Cableado). Selecciona varios ítems con checkboxes y haz click en "Agregar seleccionados" — se prellenan marca, referencia, descripción y valor en una sola operación. Si el catálogo está vacío, sugiere ir a Inventario para agregarlos.
- Site Survey sin "AVIXA" en el UX: el módulo se llama simplemente Visita Técnica. AVIXA queda como referencia técnica interna del código y la memoria operativa, pero no se expone al usuario. Las descripciones y placeholders fueron neutralizados.
- i18n cleanup: el switcher de idioma queda oculto temporalmente. La plataforma queda 100% en español por defecto hasta hacer el audit completo de traducciones (planeado para v2.0). Esto evita el efecto de "mitad UI en inglés, mitad en español" que aparecía al cambiar de idioma.
- Backup R-09:
_backups/platform_pre_v1.0.4_fixes.tar.gz.
Inventory v1.1.0
Minor
2026-05-19
Categorías de inventario, semáforo de stock, importador CSV/Excel, hard delete
- 5 categorías con tabs separadas: Inventario de venta · Demos BPA · Demos AM (Andrés Millán) · Herramienta y Medición · Cableado. Tab "Todos" muestra el global. Conteo en vivo por categoría.
- Semáforo visual de stock: rojo si no hay stock, amarillo si está bajo el umbral (
reorder_point), verde si está OK. KPIs nuevos: stock bajo, sin stock.
- Precio N/A: checkbox para marcar ítems que no tienen precio comercial (típico de demos propios usados en eventos, canales TV, instituciones). En la lista aparece "N/A" en lugar de un precio.
- Orden alfabético por marca (case-insensitive) y luego por referencia, por defecto. Compara marcas mayúscula/minúscula como iguales.
- Plantilla CSV descargable: botón "📋 Plantilla CSV" que descarga un archivo con headers + 2 ejemplos. Listo para llenar en Excel/Numbers e importar.
- Importador Excel/CSV:
POST /items/import acepta .xlsx o .csv. Idempotente: si el SKU ya existe, actualiza el ítem (no duplica). Si es nuevo, lo crea con stock inicial. Devuelve resumen (creados / actualizados / errores).
- Eliminación de productos descontinuados: ahora el botón "×" pregunta si quieres desactivar (soft delete, recuperable) o eliminar permanente (hard delete + kardex via cascade).
- Categoría editable: en el formulario de crear/editar, dropdown con las 5 categorías. Permite migrar un ítem de "Venta" a "Demo BPA" si entró a flota interna.
- Permisos read/write: si el usuario tiene
inventory:read (Laura), se ocultan los botones de "+ Nuevo", "Importar", editar, eliminar y movimientos. Solo ve la lista.
- Notas en ítems: campo editable para anotar condición especial, dueño físico (ej. "Demo AM — Mic Earthworks M30"), localización, etc.
- Backup R-09:
_backups/inventory_v1.0.0_pre_v1.1.0.tar.gz.
Logistics v1.0.2 · Administration v1.0.2
Patch
2026-05-18
Rótulo balanceado sin fondo + auto-llenado en remisiones + saltar a Logística
- Sin fondo crema en remitente: el PDF de Logística ya no tiene la franja color crema atrás del bloque del remitente. Cero gasto extra de tinta de fondo. Logo en blanco y negro con contrast boost.
- Remitente más grande y proporcional: Nombre del remitente 18 pt, datos 13 pt; Destinatario 24 pt + datos 14 pt. Logo del remitente 32 mm. Aprovecha el ancho útil de la media carta.
- Formato Title Case automático para nombre, dirección y ciudad. Al perder foco o al usar auto-llenar, "av suba cota km7" se convierte en "Av Suba Cota Km7". Conectores como "de/del/la" quedan en minúscula.
- Formato de cédula/NIT:
1070917361 → 1.070.917.361. Aplicado al perder foco y en el auto-llenado.
- Auto-llenado en Remisión (RE): bloque amarillo en el editor de remisión con textarea de pega rápida. Mismo motor de detección que Logística (email → documento → dirección → ciudad → teléfono → nombre). Aplica Title Case y formato de cédula al volcar.
- Salto a Logística desde Remisión: tras descargar el PDF de una remisión RE, aparece un confirm "¿Generar el rótulo de envío?". Si aceptas, se llevan los datos del cliente prellenados al módulo Logística y la referencia queda como "Remisión RE2605110".
- Backup R-09:
_backups/platform_pre_v1.0.4.tar.gz.
Clientes v1.1.0
Minor
2026-05-22
Tercera dimensión "Riesgo" + dos cuadrantes + barras refinadas
- Campo nuevo
riesgo (1=bajo · 5=alto) en client_evaluations (migración d2e3f4a5b6c7). Escala fiel al Excel M1 Ejercicio 5 invertida para que mayor número = mayor riesgo, según convenio mostrado por Andrés.
- Segmentación ahora suma 3 filas extra al pie de la tabla: Valor Actual · Potencial · Riesgo. Las 5 columnas de criterios de los 20% siguen igual.
- Barras del termómetro refinadas: anchura reducida a ~26px (estilo cápsula fina); el valor numérico aparece dentro de la barra en blanco; el color de relleno indica la clasificación: 🟢 Excelente (≥4.1) · 🟡 Bueno (≥3.1) · 🟠 Aceptable (≥2.1) · 🔴 Complejo (<2.1). El dot de color del cliente se mantiene debajo para identificación.
- Tabla con anchos iguales (
table-layout: fixed): nombres de cliente envuelven en 2 líneas si es necesario, columnas no se desbordan ni dominan visualmente.
- Gestión con dos cuadrantes lado a lado:
- 📍 Actual vs Potencial: etiquetas Estrella · Por desarrollar · Alto valor actual · Dilema.
- 📍 Actual vs Riesgo: etiquetas Alto/Bajo valor × Alto/Bajo riesgo (4 cuadrantes).
- Backup R-09:
_backups/platform_pre_clients_v1.1.0.tar.gz.
MEGA v1.3.0 · Clientes v1.0.0 · Bolograma v1.1.1
Minor
2026-05-21
Nuevo módulo "Clientes" en MEGA — Segmentación + Gestión + bugfixes Bolograma
- Módulo Clientes (nuevo) dentro de MEGA. Dos vistas:
- 📊 Segmentación — 5 criterios (Facturación, Rentabilidad, Complejidad, Crecimiento, Probabilidad de pérdida) ponderados al 20%. Total + clasificación automática (Excelente/Bueno/Aceptable/Complejo). Gráfica de barras tipo termómetro.
- 🎯 Gestión — Valor Actual vs. Valor Potencial. Cuadrante con etiquetas Estrella · Por desarrollar · Alto valor actual · Dilema.
- Fuente de clientes: lista única de Sales Follow-up (
GET /client-evaluations/from-sales?q=…) con búsqueda y contador de ventas por cliente.
- Selección visual: cada cliente calificado tiene un color editable; máximo 10 visibles en las gráficas (botón "Ocultar / ✓ Visible" por fila).
- Permisos: solo admin/pm puede calificar; otros roles ven la calificación.
- Bugfix dashboard.html: el link en Bolograma apuntaba a
dashboard.html inexistente; corregido a index.html.
- Bolograma v1.1.1: viewBox ampliado con padding (ya no se corta arriba); radio de actividades 60px + wrap a 4 líneas (texto largo cabe); bug "1.1 1.1" corregido con
data-current; tab Atributos×Iniciativas removida; botones "+ categoría/actividad" agregados a la vista 🌐.
- Backup R-09:
_backups/platform_pre_clients_v1.0.0.tar.gz.
MEGA v1.2.0 · Bolograma v1.0.0
Minor
2026-05-21
Bolograma — Valoración Actividades Clave (nuevo módulo dentro de MEGA)
- Modelo de datos: tres tablas (
bolograms, bolograma_categories, bolograma_activities) con jerarquía radial. Campos: Relevancia · Valor Ideal · Valor Anterior · Valor Actual · Prioridad. Brecha y Total se calculan en cliente.
- Multi-bolograma desde el inicio: el modelo soporta varios documentos (BPA hoy; clientes / Diffusion en el futuro).
- Dos vistas en
bolograma.html:
- 📋 Tabla editable — replica el Excel: categorías como filas resaltadas con el color asignado, actividades indentadas; click en cualquier celda numérica o textual edita en línea (Enter guarda, Esc cancela); botones para agregar/eliminar categorías y actividades.
- 🌐 Bolograma SVG — visualización radial con nodos circulares, conexiones desde el centro "Propuesta de valor", pills superior (gris = actual) e inferior (verde = ideal). Fondo crema con líneas diagonales y firma "Bolograma" tipo caligrafía.
- Aristas dinámicas: cada categoría nueva genera su rama propia con un color tomado de la paleta BPA (paleta circular).
- Seed BPA cargado: 5 categorías (Tiempos · Calidad · Confianza · Planeación · Soporte) y 15 actividades con los valores del Excel.
- Tile "Bolograma" visible en MEGA junto a PESTEL y DOFA.
- Backup R-09:
_backups/platform_pre_bolograma_v1.0.0.tar.gz.
Inventory v1.5.0
Minor
2026-05-21
Préstamos: sub-pestañas Activos / Histórico + botón "Finalizar préstamo"
- Sub-pestañas en el tab Préstamos:
- 🚚 Activos — préstamos abiertos (sin fecha de devolución). Cada fila ahora tiene un botón "✓ Finalizar".
- 📚 Histórico — préstamos cerrados con su fecha y observaciones de devolución. Repositorio consultable.
- Botón "Finalizar préstamo" directo desde la lista: abre un modal con fecha de devolución (default hoy) y observaciones; al confirmar hace
PATCH /admin-docs/{id} con return_date, return_observations y status='returned'. El préstamo pasa al histórico inmediatamente.
- Editor DM ya soportaba múltiples items (
addRow / removeItem / moveRow) y return_date/return_observations; este release expone esos campos en el flujo natural del módulo sin necesidad de abrir el editor completo.
- Backup R-09:
_backups/platform_pre_inventory_v1.5.0.tar.gz.
Sales v2.3.2
Patch
2026-05-21
Estados correctos: 4 amarillos + 10 rojos visibles en Q1/Q2 + overrides puntuales
- Pestañas Anticipo y Por Cobrar son ventas reales independientes (no duplicados de Q1/Q2 como se pensó inicialmente). Se cargan como filas propias.
- Defaults por pestaña corregidos: Anticipo →
advance + pending (amarillo); Por Cobrar → pending + pending (rojo). Antes Por Cobrar quedaba como pending + delivered que mostraba "Entregada" siendo falso.
- Filtro de trimestre ampliado: Q1/Q2 ahora incluyen filas de Anticipo y Por Cobrar cuya
sale_date cae en el rango. Q1 = ENE-MAR + DANIEL VEGA (1) = 138. Q2 = ABR-JUN + 3 Anticipo + 11 Por Cobrar = 69.
- Overrides puntuales aplicados en el seed:
- EL EDEN POST PRODUCCIONES (Anticipo) →
paid_full + delivered (verde, ya se entregó).
- EUFORIA MUSIC (Por Cobrar) →
advance + pending (amarillo, en realidad pagó 100% anticipado).
- Fechas de venta asignadas a las 15 filas activas (no estaban en Excel): DANIEL VEGA = 2026-02-15 (Q1); INGENIERIA ACUSTICA, DANIEL AMAYA, EL EDEN POST = 2026-04-15 (Q2); EUFORIA MUSIC y STARGATE (10) = 2026-05-15 (Q2).
- Mapeo de color ampliado en frontend: cualquier
pending en pago → rojo; paid_full/advance sin entregar → amarillo; paid_full + delivered → verde.
Sales v2.3.1
Patch
2026-05-21
Fix: texto ya no se parte letra por letra (PAGADA/teléfonos/NIT/montos)
- El default de las celdas vuelve a
white-space: nowrap. Sólo col-address, col-desc, col-email y la columna sticky de cliente permiten wrap — y siempre en espacios, no en cualquier carácter.
- Pills (PAGADA, ENTREGADA, etc.) y enlaces (Editar) forzados a una línea.
- Causa raíz: el
word-break: break-word global de v2.3.0 estaba partiendo entre dígitos/letras de teléfonos, NITs, montos, guías y hasta las pills.
Sales v2.3.0
Minor
2026-05-21
Estado correcto por pestaña · semáforo de filas · estética BPA · sin truncado
- Rename: "Sales Followup" → "Sales Follow-up" en launcher, users, i18n y módulo.
- Mapeo correcto de estados por pestaña Excel en el parser:
- ENE-MAR / ABR-JUN →
paid_full + delivered (trimestre cerrado).
- Anticipo →
advance + pending (pagado 100% pero NO entregado).
- Por Cobrar →
pending + delivered (entregado pero NO pagado).
Antes todas las pestañas caían a pending+delivered, lo que mostraba todo como "Por Cobrar + Entregada".
- Semáforo visual: la fila completa adopta color según estado.
- 🟢 Verde mint BPA → Mercancía entregada y pagada (137+55).
- 🟡 Amarillo cream → Anticipo pagado, pendiente de entrega (4).
- 🔴 Rojo suave → Entregada pero por cobrar (11).
- Sin truncado destructivo: email, dirección y descripción se muestran completos (con
word-break y anchos máximos generosos). Se elimina overflow: hidden; text-overflow: ellipsis globales.
- Estética BPA: padding generoso (10×14), headers en cream-soft con tracking y caps pequeñas, sombra suave en el contenedor, separadores mint en lugar de la grilla cerrada estilo Excel.
- Backup R-09:
_backups/platform_pre_sales_v2.3.0.tar.gz.
Sales v2.2.2
Patch
2026-05-20
Tabla: header sticky, líneas verticales, anchos optimizados, paleta BPA
- Header fila 1 sticky: la fila de títulos se queda anclada arriba al hacer scroll. Subrayado mint inferior para separar visualmente del cuerpo.
- Columna "Cliente" sticky a la izquierda (ya existía) — refinada con hover cream coordinado.
- "Fecha" → "Fecha Compra": el encabezado deja claro a qué hace referencia la fecha.
- Líneas verticales entre celdas (border-right) para mejorar lectura de la grilla.
- Anchos optimizados con clases CSS (
.col-address, .col-email, .col-desc, .col-ref, .col-brand, .col-tipo): texto largo se trunca con ellipsis y muestra el contenido completo en tooltip al hover.
- Paleta consistente: cream-soft para headers, mint para divisores principales, sin colores fuera de la guía BPA.
Sales v2.2.1
Patch
2026-05-20
Filtros: solo Año + Trimestre (Q1/Q2 2026), limpieza de UI
- Filtro restaurado a Año + Trimestre como antes: Año 2026 + Q1 (Ene–Mar) o Q2 (Abr–Jun). Se elimina el dropdown "Pestaña Excel" introducido en v2.2.0.
- Mapeo interno trimestre → pestaña Excel en el backend (
SHEET_BY_QUARTER): Q1 → ENE-MAR (137 filas), Q2 → ABR-JUN. (55 filas). Sin perder filas por fechas 2025 en facturas 2026.
- Default al abrir: 2026 Q1.
- Parámetro
sheet removido del endpoint público; _quarter_bounds y la lógica de filtro por sale_date eliminadas en list_sales.
Sales v2.2.0
Minor
2026-05-20
Fidelidad 1:1 con Excel — filtro por pestaña Excel, sin agrupación de filas
- Modo Excel-fidelity: cada fila del Excel corresponde a una venta en la BD. Se elimina el agrupamiento por (invoice_number + client_name) — preserva el consecutivo de compras del cliente tal cual aparece en la hoja.
- Nueva columna
source_sheet en sales (migración f8a9b0c1d2e3): conserva el nombre exacto de la pestaña Excel de origen (ENE-MAR, ABR-JUN., Anticipo, Por Cobrar).
- Filtro "Pestaña Excel" reemplaza el dropdown de Año/Trimestre que confundía cuando una factura 2026 tenía
sale_date en 2025. Opciones: Todas (207) · ENE-MAR (137) · ABR-JUN (55) · Anticipo (4) · Por Cobrar (11).
- Orden estricto por id ASC (= orden Excel). Sin re-sort por fecha.
- Endpoint
GET /sales: nuevo parámetro sheet; limit subido a 1000.
- Reseed completo de las 4 pestañas relevantes del Excel: 207 ventas / 207 items.
Sales v1.0.0
Minor
2026-05-18
Módulo de Ventas — seguimiento, comisiones y importador Excel
- Nuevo tile "Ventas" en el launcher. Tabs por estado: Todas · Anticipos · Por cobrar · Pagadas · Sin entregar · 💰 Comisiones.
- Modelo Sale + SaleItem: cliente (tipo doc, número, nombre, ciudad, dirección, email, teléfono), comercial (vendedor, mercado, forma de pago), dos ejes de estado independientes (financial_status: pending/advance/paid_full · delivery_status: pending/shipped/delivered), valores monetarios (neto, IVA, retefuente, ReteICA, total), FKs opcionales a remisión (admin_documents) y proyecto.
- Importador del Excel histórico Ventas 2026.xlsx: detecta automáticamente las pestañas (ENE-MAR, ABR-JUN, Anticipo, Por Cobrar, etc.), normaliza headers, agrupa filas por N° de factura + cliente, mapea estados según la pestaña de origen. Idempotente: omite duplicados por (invoice_number + client_name).
- Comisiones automáticas: endpoint
GET /sales/commissions?year=YYYY agrega ventas por vendedor + trimestre, calcula (net_subtotal - retefuente - reteica) × 0.02 (Régimen Simple). Vista en la app con totales por vendedor.
- Filtros: año, trimestre, vendedor, búsqueda por cliente (con debounce 350 ms).
- KPIs en vivo: # ventas, total neto, total facturado, conteos por estado financiero y de entrega.
- Editor inline: cambio rápido de estado financiero/entrega, vendedor y valor neto desde el modal. Listado de equipos vendidos.
- Migración Alembic: tablas
sales + sale_items.
- Backup R-09:
_backups/platform_pre_sales_v1.0.0.tar.gz.
Logistics v1.0.1
Patch
2026-05-18
Rótulo media carta apaisada, logo BN, auto-llenado corregido, formato de teléfono colombiano
- Formato media carta apaisada (216 × 140 mm) en lugar de A6. Aprovecha mejor el papel y queda perfecto para imprimir en una hoja Letter con dos rótulos por hoja.
- Logo en blanco y negro: aplicado
filter: grayscale(100%) tanto en el PDF como en la vista previa. No consume tinta de color.
- Remitente más grande: bloque del remitente con tipografía 11 pt y nombre 14 pt. Más legible para el mensajero.
- Destinatario compacto: sin espacio vacío entre remitente y destinatario, contenido pegado arriba.
- Footer sin fondo negro: borde superior gris claro, texto sutil. Cero gasto de tinta de fondo.
- Tipo de documento separado: nuevo campo Tipo (CC / NIT / CE / TI / Pasaporte) + Número. El PDF muestra "CC: 1234567890" en lugar de un genérico "Documento".
- Auto-llenado corregido: el orden de detección ahora es
email → documento (CC/NIT con patrón) → dirección → ciudad (word boundary) → teléfono → nombre. Ya no confunde "Av suba cota km7…" con la ciudad (antes capturaba por la palabra "cota").
- Formato de teléfono colombiano: al detectar 10 dígitos los formatea como
(311) 252-0516. También al perder foco en el campo manual.
- Botón "Abrir e imprimir": además del botón Descargar, ahora hay opción de abrir el PDF en una pestaña nueva. Cmd+P/Ctrl+P para imprimir directo, sin pasar por descarga.
- Backup R-09:
_backups/logistics_v1.0.0_pre_v1.0.1.tar.gz.
Platform v1.0.3 · Logistics v1.0.0 · Users v1.2.0
Minor
2026-05-18
Permisos read/write granulares + Módulo Logística (Rótulos) + Préstamos activos
- Permisos por nivel:
allowed_modules ahora soporta "inventory:read" (solo lectura) además de "inventory" (acceso completo). UI en Users con dropdown Sin acceso · Solo lectura · Acceso completo por cada módulo. Caso de uso: Laura puede ver el inventario para saber qué hay en stock, pero solo Angélica lo administra.
- Nuevo módulo Logística (
logistics.html): generador de rótulos de envío para impresión en cajas. Formulario con datos del destinatario y vista previa en vivo del rótulo. Remitente fijo con datos BPA (NIT 901.052.401, Calle 97A # 60D-71, (320) 292-4491, operaciones@bproaudio.com).
- Auto-llenado inteligente: pega un bloque de texto del cliente (correo, WhatsApp, etc.) y el sistema detecta automáticamente nombre, documento, dirección, ciudad, teléfono y email. Reconoce ciudades colombianas y patrones de identificación (CC/NIT).
- PDF en formato A6 (148×105 mm, paisaje) con identidad BPA — listo para impresora térmica o A4 con corte. Endpoint:
POST /logistics/shipping-label (stateless, sin escritura en DB).
- Préstamos activos en Administration: nuevo tab "📦 Equipos fuera (activos)" que lista todos los DM sin fecha de devolución, expandidos por equipo. Muestra cliente, ciudad, fecha de salida, expiración, marca, referencia, descripción, serie y cantidad. Reemplaza la pestaña PRESTAMOS del Excel histórico.
- Backup R-09:
_backups/platform_v1.0.2_pre_v1.0.3.tar.gz.
Administration v1.0.1
Patch
2026-05-18
Fixes PDF DM/RE — header compacto, firma seleccionable, expiración con fecha o "Nueva Orden", consecutivo editable
- Header del PDF compacto: logo más pequeño, dirección apretada y alineada como el documento de referencia físico.
- Firma seleccionable: nuevo dropdown "Firmado por" en el editor. Lista usuarios elegibles (admin / pm / commercial / engineer). El PDF usa el nombre + título profesional + email del firmante seleccionado. Si no se selecciona, usa el preparador o "Andrés Millán · Gerente General" por defecto. Andrés y Angélica pueden firmar indistintamente.
- Expiración del préstamo: radio "Hasta nueva orden" / "Fecha específica" en el editor. Si eliges fecha, se habilita un date picker. El PDF refleja la opción correctamente en la tabla de cabecera y en el texto legal.
- Consecutivo editable: el código
DM/RE[YY][MM][###] se muestra ahora como input editable en el editor. Por defecto se genera automáticamente; si necesitas conservar una numeración manual (porque cambiaste mes/año o quieres alinear con tu contabilidad), puedes sobrescribirlo.
- Email actualizado: en el PDF de Préstamo (DM) el correo de contacto en el cierre cambió de
ingenieria@bproaudio.com a operaciones@bproaudio.com (ya alineado con el correo del encabezado).
- RE sin columna Valor USD: el editor y el PDF de Remisión ya no muestran la columna Valor USD (no aplica para entregas al cliente). El PDF de Préstamo la mantiene.
- Nuevo endpoint:
GET /admin-docs/signers devuelve los usuarios elegibles para firmar.
- Migración Alembic:
admin_documents.signer_user_id FK → users.id.
- Backup R-09:
_backups/administration_v1.0.0_pre_v1.0.1.tar.gz.
Platform v1.0.2 · Users v1.1.0 · Site Survey v1.1.1
Patch / Minor
2026-05-18
Permisos granulares por usuario + fix de inputs numéricos en Visita Técnica
- Permisos por usuario y módulo: nueva columna
users.allowed_modules (CSV) que permite habilitar exactamente qué módulos ve cada usuario. Selector de checkboxes integrado en el modal de crear/editar usuario (Project Management, Inventario, Reportes, Visita Técnica, Administration, Team & Users).
- Roles ampliados: además de admin/pm/commercial ahora se incluyen Ingeniero y Auxiliar Administrativa. El rol Administrador siempre tiene acceso total automáticamente, sin importar el checklist.
- Guard en cada página de módulo: nuevo helper
requireModule(user, key) en app.js?v=1782000012. Si un usuario abre directamente una URL sin permiso, se le redirige al launcher con un toast explicativo. Aplicado a site-survey, administration, reports, inventory y users.
- Filtro de tiles en launcher: prioriza la lista explícita
allowed_modules del usuario; si está vacía, mantiene el fallback histórico por rol. Admin ve todo siempre.
- Datos profesionales en el modal de edición de usuario: ahora se pueden editar título profesional, tarjeta profesional, celular y prefijo de firma directamente desde Users (antes solo via API). Esto facilita configurar a Angélica y Laura.
- Site Survey — inputs numéricos: todos los
input type="number" reciben min="0" en runtime (no se pueden poner negativos). Contadores discretos (cantidad de luces, mesas, sillas, etc.) muestran 0 por defecto. Las medidas físicas (largo, ancho, alto, latitud) quedan vacías. La métrica de completitud ignora valores 0 para no inflar el porcentaje.
- Migración Alembic:
users.allowed_modules VARCHAR(500).
- Backup R-09:
_backups/platform_v1.0.1_pre_v1.0.2.tar.gz.
Administration v1.0.0
Minor
2026-05-18
Nuevo módulo Administration — Préstamos (DM) y Remisiones (RE) con PDF firmable
- Nuevo tile "Administration" en el launcher. Dos sub-flujos: Préstamo de equipos (prefijo
DM) y Remisión de entrega al cliente (prefijo RE).
- Consecutivo automático: formato
[TIPO][YY][MM][###] con contador histórico por tipo que no se resetea por mes. Ejemplos: DM2605110, RE2605110. Asignado al crear el documento.
- Tabla editable de equipos con campos Marca, Referencia, Descripción, Serie, Cantidad, Valor USD. Botones + Agregar fila y + Agregar varias filas… (carga rápida por lote). Auto-save de cada fila al perder foco.
- PDF que replica la identidad BPA: logo, dirección Calle 97A No 60D 71 Bogotá, email contextual (operaciones@ para DM, ventas@ para RE), número del documento en el lateral derecho con fondo gris en RE, tabla con líneas de equipos, texto legal de préstamo (TRM + IVA 19%) o agradecimiento de remisión, firma del Gerente General, bloque de "Observaciones de recibido" para devoluciones de préstamo.
- Bloque de devolución en Préstamos: campos para la fecha de devolución y observaciones del ingeniero que recibe los equipos al retornar.
- Estados: borrador → emitido → firmado. Botón "Emitir documento" cierra la edición principal y lo deja listo para firma del cliente.
- Endpoints:
GET/POST/PATCH/DELETE /admin-docs, items POST/PATCH/DELETE /admin-docs/{id}/items/{iid}, emisión POST /admin-docs/{id}/issue, PDF POST /admin-docs/{id}/render-pdf.
- Migración Alembic: tablas
admin_documents + admin_document_items.
- Backup R-09:
_backups/platform_pre_administration_v1.0.0.tar.gz.
Site Survey v1.1.0
Minor
2026-05-17
Alineación con la Guía Técnica BPA de Levantamiento V1 (abril 2026)
- Nuevo paso "Cielo raso": tipología (modular / continuo / expuesto / mixto), alturas piso-cielo y piso-losa, pleno técnico, dimensión de placas (600×600, 610×610, etc.), ancho de perfilería T-bar, material, estado, recortes perimetrales. Elementos integrados: luminarias, rejillas HVAC, detectores de humo, rociadores, altavoces, cámaras. Crítico para selección de materiales ISINAC sin recortes.
- Nuevo paso "Elementos técnicos": puertas (cantidad, dim, sentido de apertura, material), ventanas (tipo, tratamiento existente), columnas y vigas, espesores de muros, eléctrico (interruptores con altura, tableros, tomas dobles y RJ45), sensores (movimiento/luz/humo/rociadores), HVAC (rejillas de inyección/extracción, equipo central).
- Nuevo paso "Mediciones y validación cruzada": instrumento principal (distanciómetro láser certificado / cinta de respaldo), marca/modelo, última calibración, tolerancia (±5 mm por defecto), origen de coordenadas con ejes X/Y/Z, validación cruzada confirmada, conteo de medidas críticas, notas de discrepancias, documentación redundante (plano + foto + nota).
- Upload de video: dropzone separado para el recorrido del sitio. Soporta MP4/MOV/WebM/HEIC hasta 80 MB, reproducción inline con controles.
capture="environment" activa la cámara trasera del celular. Categoría auto-asignada a "recorrido".
- Errores comunes: callout educativo permanente en el paso de fotos/video con la lista de errores recurrentes según la guía BPA (omisión de elementos pequeños, falta de referencia, sin contexto, alturas no registradas, cielo raso ignorado).
- Checklist ampliado: de 22 a 28 items, agrupado en bloques (fotografía y video / mediciones y validación / acústica / infraestructura / cliente y proceso) alineados con BPA Guide §3, §5–7.
- Selector de sala asociada al subir fotos: permite asociar archivos a una sala específica sin necesidad de estar en su tab activo.
- 11 pasos del wizard (antes 8): visión general, salas, cielo raso, elementos técnicos, sistemas existentes, necesidades, infraestructura, mediciones, fotos/video, checklist, cierre. Pesos ponderados de completitud ajustados.
- Migración Alembic:
site_survey_photos ahora con columnas media_type (image|video) y duration_seconds.
- Backup R-09:
_backups/site_survey_v1.0.0_pre_v1.1.0.tar.gz.
Site Survey v1.0.0 · Reports v1.2.1
Minor
2026-05-17
Nuevo módulo Visita Técnica (AVIXA) + fixes RT60 y carga de imágenes en Reports
- Módulo Visita Técnica (
site-survey.html + site-survey-editor.html): formulario de campo basado en AVIXA ANSI/INFOCOMM 2M:2010 — Standard Guide for AV Design and Coordination Processes y AV Implementation Handbook. Wizard de 8 pasos: Visión general · Salas · Sistemas existentes · Necesidades · Infraestructura · Fotos · Checklist · Cierre.
- Multi-sala: un proyecto puede tener varias salas (sala de juntas + auditorio + estudio, etc.). Cada sala con sus dimensiones, materiales, acústica, sistemas existentes, uso y necesidades. Tabs para alternar.
- Captura visual: fotos múltiples con drag&drop, captura desde cámara del celular (atributo
capture="environment"), geolocalización opcional adjunta a cada foto, categorías (general, rack, infraestructura, acústica, frente, croquis, documento), captions persistentes vía PATCH.
- Scoring híbrido: cálculo automático tipo Acoustix pero más completo — promedia acústica (30%), infraestructura (25%), sistemas/uso (20%), operación (15%) y checklist (10%). Devuelve total, clasificación (Simple → Premium) y eje crítico priorizado.
- Completitud por paso: % de avance por cada uno de los 8 pasos del wizard, con barra global ponderada y marca verde en pasos >80% completos.
- Checklist AVIXA: 22 verificaciones de campo (fotos generales, medidas, ruido, sistemas, infraestructura, stakeholders, presupuesto, timeline, próximo paso) — pills tipo Acoustix.
- Auto-save con debounce de 800 ms — no se pierde nada al cambiar de paso, no requiere "guardar".
- Geolocalización del proyecto: botón "Capturar mi ubicación" en la vista general guarda latitud/longitud del sitio.
- Reports v1.2.1 (hotfix):
_collectPayload() ahora hace merge con el form_data existente — antes sobreescribía y borraba rt60_points al agregar punto manual. Botón de imágenes ya abre el file picker de inmediato (sin setTimeout que rompía el user gesture).
- Backup R-09:
_backups/platform_pre_site_survey_v1.0.0.tar.gz y _backups/reports_v1.1.1_pre_v1.2.0.tar.gz.
Reports v1.2.0
Minor
2026-05-17
PDF rediseñado · RT60 multipuntos + CSV Smaart/EASE · Firma unificada · Captions persistentes
- PDF rediseñado: portada en plantilla
@page cover independiente (sin overflow ni elementos sueltos en página 2), header y footer corporativo aplicados solo en @page body, Tabla de Contenido auto-generada desde los H1 del markdown, sección de Anexo de figuras y bloque de firmas con introducción profesional.
- Firma unificada: cuando "Realizado por" y "Supervisado por" son la misma persona, el PDF muestra un solo bloque con encabezado "Realizado y Supervisado por" en portada y en la página de firmas. Antes salía duplicado.
- RT60 multipuntos: nueva sección en el editor que acepta múltiples posiciones de medición con valores por banda de octava (125 Hz – 8 kHz). Tabla editable con cálculo automático de promedio y desviación estándar inter-posición.
- Importación CSV de Smaart V9 / EASE / EASERA: endpoint
POST /reports/{id}/import-rt60-csv. Parser detecta automáticamente columnas de frecuencia (Freq, Hz, Banda) y RT60 (T30, T20, RT60, EDT), tolera separadores , o ;, decimales con coma, y notación 1k/1 kHz. Resultado se guarda como JSON estructurado en form_data.rt60_points.
- Captions persistentes: nuevo endpoint
PATCH /reports/{id}/images/{img_id}. Los pies de figura se guardan al perder foco — antes solo vivían en memoria del navegador.
- Botón "Adjuntar imágenes" prominente en la barra de acciones superior, con conteo en vivo. El panel de imágenes se movió a la columna principal para que no quede oculto en pantallas chicas.
- Prompt IA refinado: instrucción explícita de NO escribir cierre/despedida (el bloque de firmas lo agrega el sistema). Mención específica de
rt60_points para que la IA arme tabla con bandas × posiciones y describa promedio + variabilidad.
- Modelo configurable: secret
ANTHROPIC_MODEL (default claude-sonnet-4-5); ya documentado para migrar a Opus 4.7 cuando el prompt esté maduro.
- Backup R-09:
_backups/reports_v1.1.1_pre_v1.2.0.tar.gz.
Reports v1.1.0
Minor
2026-05-17
Generación con IA (Claude) + Render PDF con identidad BPA + i18n expandido
- Generación con IA: nuevo endpoint
POST /reports/{id}/generate que invoca Anthropic Claude (modelo Sonnet 4.6) con system prompt en español replicando el estilo profesional de los reportes Magic Trick / Javeriana. Regla R-03: el prompt prohíbe explícitamente inventar datos numéricos, equipos o recomendaciones.
- Render PDF: nuevo endpoint
POST /reports/{id}/render-pdf con WeasyPrint. PDF incluye portada con datos del cliente/proyecto, header y footer corporativo (web/email/móvil), paginación, anexos con figuras y bloque de firmas con datos profesionales completos del realizador y supervisor.
- Editor de Reportes (
report-editor.html): formulario completo Dolby Atmos (recinto, sistema, mediciones, metodología), toggles para activar/desactivar secciones, drag&drop de imágenes con captions, vista previa markdown, edición inline del markdown generado, pickers Realizado por / Supervisado por que muestran auto-fill de los datos profesionales del usuario seleccionado.
- i18n expandido: catálogo crece de ~40 a 180+ claves. Cubre common UI, login, launcher, nav completo, dashboard, projects (todos los filtros y campos), users, inventory, reports y modales. Sistema soporta múltiples atributos i18n por elemento.
- Auto-cleanup: las imágenes adjuntas se eliminan automáticamente 30 días después de marcar el reporte como delivered. Endpoint admin
POST /reports/cleanup/run.
- Reglas R-03 (nada fantasioso): cualquier dato que el formulario no proporcione queda marcado en el texto generado como
[Pendiente: …] en cursiva en lugar de ser inventado.
- Backup R-09:
_backups/reports_v1.0.0_pre_v1.1.0.tar.gz.
Platform v1.0.0 · PM v3.8.0
Major
2026-05-17
Plataforma versionada + Módulo de usuarios + Forgot password + Menú móvil
- Platform v1.0.0: primera versión oficial de la plataforma BPA como producto independiente. Cada módulo desde hoy lleva su propia versión adicional.
- Módulo Team & Users (v1.0.0): pantalla
users.html con crear / editar / reset password / deactivate. Endpoints /api/v1/users protegidos para admins. Tile habilitado en launcher.
- Forgot password: link en login → modal con contacto admin. El reset real se ejecuta desde el módulo de usuarios.
- Login sin email pre-cargado: ya no se filtra quién es admin.
- Menú hamburguesa móvil: en pantallas <768 px, los links del nav se despliegan verticalmente con todos los accesos.
- Backup R-09:
_backups/v3.7.0_pre_v3.8.0.tar.gz.
PM v3.7.0
Minor
2026-05-17
Logout real + Proyectos eliminados con razón + Mobile-first
- 🔒 Fix Logout: ahora invalida la sesión server-side. Nuevo campo
User.session_version se incrementa en cada logout; tokens previos quedan inválidos aunque la cookie persista en el navegador.
- Pantalla "Deleted" (
deleted.html): tabla con proyectos eliminados, razón, observations, fecha y botón Restore. Endpoint POST /projects/{id}/restore.
- Modal de eliminación en detalle de proyecto: razones predefinidas (Price · Competition · Lost Interest · Other con texto libre) + campo de observations.
- Filtro automático: la lista activa excluye los eliminados. Solo aparecen en
deleted.html.
- Mobile-first: en pantallas <768 px se default a vista Cards; filtros y nav más compactos. Eliminado el link "Mobile preview" del nav porque las páginas ya son responsive.
- Backup R-09:
_backups/v3.6.0_pre_v3.7.0.tar.gz.
v3.6.0
Minor
2026-05-17
Home icon + Remember-me 30 días + Dockerfile/fly.toml + CORS
- Botón Home con ícono reemplaza el texto "← Platform" en la nav de cada módulo.
- Sesión por defecto = solo navegador: la cookie se borra al cerrar el navegador.
- Checkbox "Remember this device for 30 days".
- Backend listo para deploy:
Dockerfile y fly.toml generados; CORS configurado.
- Backup R-09:
_backups/v3.5.0_pre_v3.6.0.tar.gz.
v3.5.0
Minor
2026-05-17
Launcher de plataforma + renombrado de fases + R-09 backup + guía de deploy
- Launcher (
launcher.html): hub central que aparece al iniciar sesión. Tiles por módulo con icono + título + descripción + badge "Available" o "Coming soon". Tiles ocultos según rol del usuario. Project Management activo; Sales/CRM, Inventory, Finance, Team, Reports quedan como "Coming soon".
- Nav "← Platform" en cada módulo para volver al hub.
- Login redirige al launcher en lugar de directo al dashboard.
- Renombrado de fases activas (sujeto a revisión): Design — Active / Follow-up y Execution — Active / Follow-up.
- R-09 backup: nueva regla operativa.
_backups/v3.4.0_pre_v3.5.0.tar.gz creado antes de esa release.
- Guía de deploy (
DEPLOY_GUIDE.md): paso a paso para subir el sistema a Bluehost + Fly.io.
v3.4.0
Minor
2026-05-16
Cards agrupados + sliders en Kanban y Cards + prompt de avance al cambiar fase
- Cards agrupados por fase: la vista Cards ahora muestra encabezado por fase con sus proyectos debajo.
- Slider de avance en Kanban: cada card del Kanban tiene un slider editable con debounce.
- Slider de avance en Cards: la barra de Advance es editable también.
- Prompt al cambiar fase: cualquier transición pregunta si pones nuevo % o mantienes el actual.
- Dashboard "Projects by phase" dividido: Closed muestra dos filas — Closed Projects {año} y Previous Years Closed Projects.
- Fix Sign out: el campo email del login ya no llega pre-rellenado.
v3.3.0
Minor
2026-05-16
Menú de perfil + logout + vista Cards
- Menú de perfil con avatar circular en el appbar (iniciales del usuario). Click despliega: nombre, cargo, email y botón Sign out. Aparece automáticamente en todas las pantallas autenticadas vía
app.js?v=1782000012.
- Logout funcional: cierra sesión en backend (
POST /api/v1/auth/logout) y redirige a login.html.
- Vista Cards habilitada: tercer tab en Projects con galería responsive (1/2/3 columnas según pantalla). Cada card muestra code, phase, nombre, ubicación + partner, descripción, primera línea de remarks, barra de avance con %, PMs y entidades. Borde superior color por fase. Ideal para presentaciones de comité.
v3.2.0
Minor
2026-05-16
Drag & drop también en Phases + slider de avance inline
- Drag & drop en vista Phases: arrastrar cualquier fila desde una sección y soltarla en otra dispara
POST /projects/{id}/transition. Mismo flujo que en Kanban, ahora también funciona en la lista densa.
- Slider de avance inline en la columna "Advance" de la lista por fases: mover la barra hace
PATCH /projects/{id} con debounce de 150 ms. No necesitas entrar al detalle para actualizar el %.
- Feedback visual: la fila arrastrada se atenúa y la sección destino se ilumina con borde mint.
v3.1.0
Minor
2026-05-16
Bitácora HTML + frontend conectado al API + Kanban + Quick actions
- Bitácora HTML (esta página) reemplaza el link a
CHANGELOG.md que mostraba texto crudo.
- Página de login (
login.html) con form que autentica contra /api/v1/auth/login.
app.js?v=1782000012: utilidades JS comunes (fetch wrapper con credentials, manejo automático de 401 → redirect a login, helpers de render).
- Dashboard funcional: contadores, pie chart, breakdown por PM y entidad ahora se llenan desde
/api/v1/stats/dashboard.
- Lista de proyectos funcional: las 9 secciones por fase se renderizan dinámicamente desde
/api/v1/projects.
- Vista Kanban habilitada: tab "Kanban" muestra columnas por fase (1-5 activas + Closed). Cards apiladas con datos vivos.
- Drag & drop entre fases en Kanban: arrastrar una card a otra columna dispara
POST /api/v1/projects/{id}/transition. Histórico de fases queda registrado en PhaseTransition.
- Quick actions funcionales en detalle de proyecto: Mark advance %, Move to next phase, Move to Stand By, Mark as closed. Cada acción es un PATCH o transition al backend.
- Crear proyecto funcional: el form de
new-project.html hace POST real y redirige al detalle del nuevo proyecto.
v3.0.1
Patch
2026-05-16
Fix del importer: 68/68 proyectos cargados
- Clave de idempotencia del importer ampliada de
(project_code, name) a (project_code, name, description). Resuelve la pérdida de 5 proyectos cuando un mismo cliente abre varios proyectos el mismo día con scopes distintos (Auditorio Luis A Calvo ×2, PUJ 250820 ×3, PUJ 260311 ×2, PUJ 250710 ×2).
- Base de datos ahora carga 68/68 proyectos del Excel sin warnings.
v3.0.0
Major
2026-05-16
De mockup a aplicación real
- Backend Python funcional: FastAPI + SQLAlchemy 2 + Alembic + SQLite local, montado en
src/bpa/.
- Importer del Excel a BD: lee las 9 tablas, mapea a fases + closed_year, normaliza ubicación, personas, entidades.
- API REST en
/api/v1/: auth (login/logout/me), projects (CRUD + transition), catalogs (phases, persons, entities), stats (dashboard).
- Login con sesiones HTTP-only cookies + Argon2 password hashing.
- Servidor unificado: FastAPI sirve los HTMLs estáticos desde el mismo proceso en
http://localhost:8000.
- Modelo relacional: Project + Phase + Person + Entity + PhaseTransition (histórico) + User. PMs RP/CB/OR como
is_active=false.
- Script de arranque
./start.sh: un solo comando levanta todo (venv, deps, migraciones, seed, importer, servidor).
- README.md con instrucciones operativas.
v2.1.0
Minor
2026-05-16
Pie chart, listas expandidas, países, entity multi-select
- Pie chart SVG en dashboard con distribución de proyectos activos (fases 1-5, excluye Closed). 41 proyectos, 5 slices con porcentajes dentro + leyenda. Cero JavaScript.
- Listas completas en
projects.html: Stand By con 25 proyectos reales, Closed 2025 con 10, Closed 2024 con 7 (antes placeholders "+ X more").
- 193 países en
new-project.html con Colombia + United States arriba en optgroup "Priority markets".
- Entity como multi-select: ahora un proyecto puede pertenecer a varias entidades simultáneamente (BPA + BPAI).
v2.0.0
Major
2026-05-16
Identidad visual BPA + agrupación por fase + New Project
- Logo Boutique Pro Audio en cabecera de todas las pantallas.
- Paleta corporativa BPA extraída del logo por muestreo de píxeles: mint, mint-dark, cream, off-white, burgundy, charcoal.
- Paleta de fases coordinada con la corporativa. Paleta cromática por año en
project_code preservada intacta.
- Lista de proyectos rediseñada: 9 secciones colapsables por fase (estilo Excel original), con sticky filter bar.
- Filtros: tipo de proyecto, PM (activos + ex-miembros marcados), entidad, año, búsqueda libre.
- PMs inactivos: RP, CB, OR removidos del dashboard. Atribución histórica preservada en proyectos cerrados con badge "Former team member".
- Nueva pantalla
new-project.html: formulario completo con required + opcionales, suggestion chips para descripción.
v1.0.0
Major
2026-05-16
Primera entrega — Camino 1 (mockups estáticos)
- 5 archivos HTML estáticos abribles con doble click (sin servidor, sin internet, sin instalación):
index.html — Dashboard con contadores ONGOING (16), breakdown por fase, por PM, por entidad, year tabs para Closed, "Projects requiring attention".
projects.html — Tabla densa con 22 proyectos reales del Excel, filtros, 3 tabs de vista.
project-detail.html — Detalle Valencia Producciones — Dolby Atmos en 4 capas (resumen, operativo, sensitive, documents).
mobile.html — Frame 375px con cards apiladas, filtros en accordion, tab bar inferior.
styles.css — Tokens de diseño, paleta cromática por año, mobile-first, sin frameworks.