Files
inq-roi-simulador-web/CHANGELOG.md
Marcos Benítez 8b839baf77
Some checks are pending
/ Deploy to Cloudflare Pages (push) Waiting to run
refactor(router): guards AdminLayout + ImportPage → RequireRole wrapper (Etapa 6A)
- Crea RequireRole component (Approach B — router sin auth context)
- AdminLayout: elimina useEffect + spinner + null check, usa <RequireRole roles={['platform_admin']}>
- ImportPage: elimina useEffect guard + return null client_viewer, usa <RequireRole roles={['platform_admin','member','client_editor']}>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-09 13:18:14 -03:00

6.8 KiB

Changelog

All notable changes to InQ ROI will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • RequireRole componente wrapper para guards de rol declarativos (Approach B — sin router context) (Sprint 8)
  • Edge Function delete-user: hard delete permanente de usuario en auth.users + public.users (Sprint 8)
  • Edge Function list-users: lista usuarios con email desde auth.users vía service_role (Sprint 8)
  • UsersPage: columna "Email" entre Nombre y Rol (via Edge Function list-users) (Sprint 8)
  • Migración 018: policy INSERT en processes extendida para client_editor en su org (Sprint 8)
  • ImportPage: client_editor puede importar BPMN; proceso se crea con orgId de su cuenta (Sprint 8)
  • LibraryPage: botón "Importar BPMN" visible para client_editor; empty state con call-to-action de importar (Sprint 8)

Changed

  • AdminLayout: guard useEffect + spinner → RequireRole wrapper (sin flash de contenido protegido) (Sprint 8)
  • ImportPage: guard useEffect → RequireRole wrapper (Sprint 8)
  • UsersPage: "Eliminar" (soft delete / revoke-user) → "Eliminar permanentemente" (hard delete / delete-user) (Sprint 8)

Fixed

  • ImportPage: texto de marca corregido — "Process Cost Platform · MVP Fase 0" → "InQ ROI" (Sprint 8)
  • ImportPage: párrafo "Sin backend · Sin registro · Datos guardados localmente" eliminado (obsoleto desde Sprint 4) (Sprint 8)
  • OrganizationsPage: InQuality visible en lista con badge naranja — quitar filtro is_provider (Sprint 8)
  • WorkspacePage: back button pasa ?org=orgId para scroll contextual al volver a biblioteca (Sprint 8)
  • LibraryPage: scroll automático a sección de org al recibir ?org param desde workspace (Sprint 8)
  • router.tsx: redirect de settingsRoute pasa search: { org: undefined } para compatibilidad con validateSearch (Sprint 8)

Added (Etapas 1-4)

  • GlobalSettingsPanel: selector de área reemplaza campo libre "Cliente" (Sprint 8)
  • WorkspacePage topbar: display de areaName de solo lectura reemplaza edición inline de cliente (Sprint 8)
  • OrganizationDetailPage: tercer tab "Áreas" con CRUD completo — crear, renombrar, eliminar con confirmación (Sprint 8)
  • LibraryPage: agrupación org → área con headers colapsables para admin (Sprint 8)
  • Settings ⚙ oculto para roles cliente + guard beforeLoad en /settings (Sprint 8)
  • Interface Area en domain/types.ts (Sprint 8)
  • Campos areaId/areaName en Process (Sprint 8)
  • Repositorio supabaseAreaRepo con CRUD completo para tabla areas (Sprint 8)
  • fromRow/toRow/updateEditable/getById en process-repo extendidos con area_id (Sprint 8)

[0.8.0] - 2026-07-07

Added

  • CHANGELOG.md con historial de versiones
  • AppFooter con versión visible en todas las páginas
  • Conventional Commits adoptados como estándar de commits

[0.7.0] - 2026-07-07

Added

  • Multi-tenancy: tabla organizations, 4 roles de plataforma (platform_admin, member, client_editor, client_viewer)
  • Edge Functions invite-user y revoke-user para gestión de acceso
  • Panel de administración /admin con gestión de Organizations y Users
  • Login email/password y página /reset-password para flujo de invitación
  • Back button contextual en workspace (muestra nombre del cliente via JOIN en getById)
  • Política RLS simulations_update para que client_editor pueda guardar simulaciones

Fixed

  • Race condition en AuthContext: isProfileLoaded como guard antes de renderizar contenido rol-dependiente
  • syncProfileFromDB ahora lee platform_role y org_id desde DB (no inferido por dominio de email)
  • normalizeGroupLabel(): limpia artículos iniciales de labels de grupos con datos corruptos

[0.6.0] - 2026-06-24

Added

  • Logo InQuality en header de PDFs (isotipo, páginas 2+, fallback a texto)
  • Panel de análisis de sensibilidad en tab ROI: sliders de volumen e inversión, recálculo en tiempo real
  • Doble línea en CumulativeSavingsChart (base gris dashed + ajustada naranja con área sombreada)
  • whitespace-nowrap en MetricCell de columna Eficiencia

Fixed

  • ProfileSheet.getAccessToken() leía clave inexistente ('supabase.auth.token'); el guardado de perfil nunca llegaba a Supabase desde Sprint 4. Fix: calcular sb-${projectRef}-auth-token

[0.5.0] - 2026-06-23

Added

  • Fix crítico: workspace loading — race condition auth/processId resuelto con isProfileLoaded
  • Controles de zoom BPMN: fit-viewport con centering correcto, botones zoom-in/zoom-out/fit
  • Heatmap con gradiente continuo de 4 stops + toggle percentile/min-max persistido
  • "Ver procesos por recurso" en catálogo de recursos
  • Campo "empresa" en perfil de usuario
  • Columna "Eficiencia de automatización" en ComparisonTable (+ columna "Ahorro esperado")

Fixed

  • Flakiness en botón "Guardar cambios": debounce + Web Locks en process-store
  • Specs E2E migradas de Dexie a Supabase

[0.4.0] - 2026-06-18

Added

  • Autenticación Google Workspace OAuth + Supabase
  • Migración completa IndexedDB (Dexie) → PostgreSQL (Supabase)
  • Row Level Security con is_platform_admin() y políticas granulares
  • Catálogo global de recursos (sin processId)
  • Identidad en UI: avatar/dropdown AppHeader, "Actualizado por" en proceso
  • ResourceCatalogPage + ResourceFormSheet
  • Fix Web Locks API deadlock (processLock)
  • Fix .maybeSingle() en simulation-repo
  • Fix formatCostPerHour() precisión dinámica
  • Fix Google OAuth prompt: 'select_account'
  • Catálogo con contexto de proceso (banner + query param fromProcess)

[0.3.0] - 2026-05-27

Added

  • Biblioteca de procesos con grupos/tags/búsqueda (Dexie v4)
  • Indicador de simulación desactualizada ("Hay cambios sin simular")
  • Zoom BPMN fit-viewport
  • Recursos TO-BE en escenario automatizado (motor + UI + reporte + PDF)
  • Branding InQ ROI en todas las páginas (AppHeader + favicon + logos)
  • Kit de socialización del equipo: guía de usuario, guía de pre-venta, presentación PPTX

[0.2.0] - 2026-05-20

Added

  • Modelo de recursos utilizationMinutes + units (migración Dexie v3)
  • ActivityPanel con cálculo de costo en tiempo real
  • Reporte web con filas expandibles de desglose de recursos
  • Edición inline de proceso/cliente
  • Tabla de recursos en PDF (página condicional)

[0.1.5] - 2026-05-18

Added

  • Identidad visual completa: paleta naranja InQ #F59845, gradiente → magenta #ED3E8F
  • PDFs de clase profesional: 3 documentos (Actual, Automatizado, ROI)
  • Badge en canvas BPMN para actividades automatizables
  • ROI con 5 KPIs
  • Sistema de componentes establecido

[0.1.0] - 2026-05-01

Added

  • MVP: importar BPMN 2.0, parametrizar actividades, simular costos, exportar PDF
  • Motor de simulación AS-IS / TO-BE (Modelo A)
  • Heatmap de costos en canvas BPMN
  • Reporte web básico con tabla de actividades y gráfico de barras