🔒 Estado de Implementación · Pack vs Build  ·  NDA OBLIGATORIO
← hub modelos
Transparencia interna · v1.2 · 2026-05-31 · + 20 piezas MVP (CC4) · ~56 HTML totales

Estado de implementación · pack vs build

Vista única honesta del pack FARO Connect: cada activo con su estado real en el ciclo documentado → prototipado → codificado → productivo. Sirve para planificación interna, conversación honesta con socio técnico/CTO, y para no inflar el pack vendiéndolo como producto cuando aún es spec robusta. Cada fila incluye su doc fuente (FARO-XXX-NNN) y la fase de integración (1 Fundamento · 2 Motor+UI+Score · 3 Gov+Ops+Deploy+Docs).

Activos totales
Categorías
—%
Avance ponderado
56
Piezas HTML pack
📊 ¿Cómo leer esta matriz?
Cada activo del pack está clasificado en uno de 4 estados:
📄 Documentado: definido, especificado, con HTML/PDF/Excel del pack — pero no codificado/ejecutable. La mayoría del pack está acá (es lo correcto para etapa de validación).
🛠 Prototipado: existe artefacto técnico funcional (script, SQL ejecutable, módulo) — pero no integrado a producción.
⚙ Codificado: en repo, funciona, testeado — pero todavía no corre con tráfico real.
🚀 Productivo: corriendo en cliente piloto con tráfico real.

Honestidad ante todo: este pack tiene grandeza conceptual y arquitectónica. NO es producto corriendo. Mostrar esta matriz a un CTO/inversor es lo más sólido que podés hacer — vende confianza por transparencia, no por inflar.
Mostrando 0 de 0
📋 Link copiado
ID Activo Categoría Estado Prio Fuente Fase Qué falta para el siguiente estado
Cargando…
📦 Avance por categoría

🎯 Cómo usar esta matriz

Para vos (planificación): filtrá por estado = 📄 Documentado + prioridad = P1. Esos son los que más impacto tienen al pasar a 🛠 Prototipado o ⚙ Codificado.

Para socio técnico/CTO: abrí esta vista en la reunión. La transparencia sobre dónde está cada cosa genera más confianza que diapositivas perfectas. Acepta el "todavía no" y muestra que tenés plan.

Para inversor: el porcentaje arriba ("avance ponderado") es honesto y defendible. Sumá una historia: "estamos en X%, en 3 meses con piloto + 1 dev senior llegamos a Y%, en 12 meses con equipo de 4 llegamos a Z%". Cronograma realista > aspiración inflada.

FARO-SQL-003 · V024 · Seed técnico MVP

Seeds Empresa Demo Cuyo S.A.

Empresa canónica del MVP. Comercialización de insumos para la construcción en Mendoza / San Juan, modelo mayorista-minorista con sucursales, depósito, vendedores, stock y cobranza. La narrativa elegida para la demo es "crecimiento no rentable": las ventas crecen, el margen cae, los descuentos suben, la cobranza se estira y aparecen acciones vencidas — el caso típico que FARO Connect debe detectar y bajar a foco ejecutivo.

📌 Caso narrativo en una sola frase
"La empresa vende más, pero está sacrificando margen, financiando clientes y acumulando tensión operativa en stock y ejecución." Ese es el corazón de la demo. No es "mirá qué lindo gráfico". Es "mirá cómo el sistema encuentra el problema y lo baja a acción".

Cantidades por entidad (V024)

EntidadCantidadDetalle
Empresa demo1Empresa Demo Cuyo S.A. · rubro construction_supplies · AR
Sucursales3Mendoza Central, San Juan, Depósito Central Cuyo
Áreas8Dirección, Comercial, Finanzas, Stock, Compras, Operaciones, RRHH, Administración
Usuarios demo8Director, Gerente General, Comercial, Finanzas, Stock, Compras, 2 Vendedores
Roles base10Fallback canónico (faro_owner, company_admin, director, etc.)
Asignaciones de roles5Director, GG, Comercial, Finanzas, Stock
Fuentes de datos6Ventas CSV, Stock XLSX, Cobranza CSV, Productos, Clientes, Acciones
Lotes de ingesta3Batch mayo 2026 (ventas + stock + cobranza)
Productos10Cemento, hierro, porcelanato, grifería, termofusión, adhesivo, loza, membrana
Clientes8Constructoras, desarrolladores, arquitectos, maestros, mineros, mostrador
Proveedores5Cemento, hierro, pisos, instalaciones, grifería
Empleados/vendedores6Incluye 2 vendedores con perfiles opuestos (alto descuento vs rentable)
Ventas fact10Mayo 2026 · margen erosionado, descuentos altos visibles en datos reales
Stock snapshots8Incluye crítico (cemento/hierro/TF-20) e inmovilizado (porcelanato/grifería)
Cuentas por cobrar6Cliente Obras Cuyo con mora 47 días (riesgo alto)
KPI definitions8KPI-SAL-001..003 · KPI-FIN-001..002 · KPI-STK-001..002 · KPI-ACT-001
KPI snapshots8Mayo 2026 vs abril referencia · 3 critical, 3 warning, 0 ok-ok
Señales (derivadas de KPIs)8SIG-SALES-UP, SIG-MARGIN-DOWN, SIG-DISCOUNT-UP, etc.
Reglas (rule_definitions)5RULE-TNS-001..005 (códigos provisorios · ver patch SQL-003.1)
Tensiones5Crecimiento no rentable, Venta sin caja, Stock crítico, Stock inmovilizado, Acciones
Acciones7Política descuentos, comisiones, cobranza, reposición, liquidación, regularizar, reporte
Evidencias3Gestión cobranza, reporte semanal, borrador política descuentos
Score snapshots2Abril 74 (good) → Mayo 66 (warning) · delta −8
Reporte semanal1REP-WEEKLY-2026-W22 · ejecutivo con top tensiones + foco recomendado
Notificaciones3Email a Director, Comercial, Finanzas, Stock

IDs determinísticos principales (UUIDs fijos)

El seed usa UUIDs fijos para reproducibilidad de pruebas y demos. Esto permite que tests, fixtures y queries de validación apunten a los mismos identificadores en cualquier entorno.

EntidadUUID
Empresa Demo Cuyo S.A.10000000-0000-0000-0000-000000000001
Sucursal Mendoza Central11000000-0000-0000-0000-000000000001
Sucursal San Juan11000000-0000-0000-0000-000000000002
Depósito Central Cuyo11000000-0000-0000-0000-000000000003
Usuario Director12000000-0000-0000-0000-000000000001
Usuario Gerente General12000000-0000-0000-0000-000000000002
Usuario Comercial12000000-0000-0000-0000-000000000003
Usuario Finanzas12000000-0000-0000-0000-000000000004
Usuario Stock12000000-0000-0000-0000-000000000005

Fragmento representativo del V024

Este es un extracto ilustrativo. Para el SQL verbatim completo, ver pack-build/sql/FARO-SQL-003-seeds-empresa-demo.md (725+ líneas).

-- FARO-SQL-003 · V024__seed_demo_company.sql
BEGIN;

SELECT set_config('app.company_id', '10000000-0000-0000-0000-000000000001', true);
SELECT set_config('app.user_id', '12000000-0000-0000-0000-000000000001', true);

-- 1. EMPRESA DEMO
INSERT INTO faro.companies (company_id, company_code, legal_name, ...)
VALUES (
  '10000000-0000-0000-0000-000000000001',
  'EMP_DEMO_CUYO',
  'Empresa Demo Cuyo S.A.',
  ...,
  '{"demo": true, "mvp_scope": ["sales","margin","discounts","stock","receivables","actions","score"]}'::jsonb
)
ON CONFLICT (company_id) DO UPDATE SET ...;

-- 17. KPI SNAPSHOTS · mayo 2026 vs abril referencia
INSERT INTO faro.kpi_snapshots (kpi_code, value, reference_value, delta_pct, status, ...)
VALUES
  ('KPI-SAL-002', 0.2130, 0.2800, -0.2392, 'critical', ...),  -- margen cae
  ('KPI-SAL-003', 0.1230, 0.0620,  0.9838, 'critical', ...),  -- descuentos suben
  ('KPI-FIN-002', 3800000, 1800000, 1.1111, 'critical', ...), -- mora vencida ×2
  ...;

-- 25. FARO SCORE · 74 (abril) → 66 (mayo · warning)
INSERT INTO faro.score_snapshots (period_start, score_value, previous_score_value, delta_value, ...)
VALUES
  ('2026-04-01', 74, NULL,  NULL, 'good',    ...),
  ('2026-05-01', 66,   74,    -8, 'warning', ...);

COMMIT;
⚠ Avisos técnicos obligatorios
No aplicar en producción real sin control: este seed sobrescribe datos demo y asume que ya corrieron FARO-SQL-001 (DDL base) y FARO-SQL-002 (multiempresa + RLS).
Idempotencia garantizada: usa ON CONFLICT DO NOTHING (o DO UPDATE donde aplica) en todas las inserciones. Re-ejecutarlo no rompe el estado.
UUIDs fijos: facilitan testing pero significan que no se puede correr el seed dos veces para "más empresas". Para datasets reales, ver FARO-DEMO-001 (no implementado aún).
Datos ficticios: no usar nombres de empresas reales. El seed simula el flujo, no contabilidad perfecta.

Cross-references: catalogo-tensiones-mvp.html (catálogo TNS canónico) · modelo-sql.html (DDL base) · contrato-datos-mvp.html (esquema de datos)

FARO-SQL-003.1 · V027 · Patch correctivo

Patch V027 · Alineación con catálogos canónicos

FARO-SQL-003 quedó con códigos provisorios de tensión (TNS-002, TNS-003, TNS-004, TNS-005) anteriores al congelamiento del Catálogo Canónico (catalogo-tensiones-mvp.html). Este patch reasigna esos códigos a los oficiales TNS-004 (Venta sin caja), TNS-006 (Stock crítico), TNS-007 (Stock inmovilizado), TNS-009 (Acciones vencidas) y agrega TNS-010 (Acciones sin evidencia), separando lo que el seed viejo mezclaba.

🚨 Problema que evita
Sin este patch, el motor evaluador puede disparar TNS-004 (canónico = Venta sin caja) mientras la demo tiene cargado TNS-004 = Stock inmovilizado. Resultado: "el dato está, pero no aparece". Cada módulo (SQL, YAML, motor, UI, tests, reportes) habla un idioma distinto.

Regla de gobierno: el número de RULE-TNS-NNN debe coincidir con el número de TNS-NNN. Nada de RULE-TNS-002 disparando TNS-004. Técnicamente se puede. Operativamente es una trampa.

Mapeo antes → después

Tensión (significado)Código viejo (seed V024)Código canónico (V027)Rule code
Crecimiento no rentableTNS-001TNS-001 ✓ okRULE-TNS-001
Venta sin conversión a cajaTNS-002TNS-004RULE-TNS-004
Stock crítico en productos de alta rotaciónTNS-003TNS-006RULE-TNS-006
Stock inmovilizadoTNS-004TNS-007RULE-TNS-007
Acciones vencidasTNS-005 (mezclado)TNS-009RULE-TNS-009
Acciones sin evidenciaTNS-005 (mezclado)TNS-010 (nuevo)RULE-TNS-010

El patch también alinea action_code de ACT-001..007 a ACT-COM-001, ACT-COM-002, ACT-FIN-001, ACT-STK-001, ACT-STK-003, ACT-OPS-001, ACT-DIR-001 + nueva ACT-OPS-002.

Fragmento representativo del V027

-- FARO-SQL-003.1 · V027__patch_demo_company_align_canonical_tns.sql
BEGIN;

-- 1. PREFLIGHT (bloquea si falta FARO-SQL-004 o tension_definitions canónicas)
DO $$
BEGIN
  IF NOT EXISTS (SELECT 1 FROM information_schema.tables
                 WHERE table_schema='faro' AND table_name='tension_definitions') THEN
    RAISE EXCEPTION 'FARO-SQL-004 must be applied before FARO-SQL-003.1.';
  END IF;
  IF (SELECT COUNT(*) FROM faro.tension_definitions
      WHERE tension_code IN ('TNS-001','TNS-004','TNS-006','TNS-007','TNS-009','TNS-010')
        AND status='active') < 6 THEN
    RAISE EXCEPTION 'Canonical tension definitions required for demo patch are missing.';
  END IF;
END $$;

-- 2. UPDATE rule_definitions · reasignar códigos canónicos
UPDATE faro.rule_definitions SET rule_code='RULE-TNS-007', name='Stock inmovilizado', ...
  WHERE rule_id='20000000-0000-0000-0000-000000000004';  -- antes RULE-TNS-004

UPDATE faro.rule_definitions SET rule_code='RULE-TNS-006', name='Stock crítico...', ...
  WHERE rule_id='20000000-0000-0000-0000-000000000003';  -- antes RULE-TNS-003

UPDATE faro.rule_definitions SET rule_code='RULE-TNS-004', name='Venta sin conversión a caja', ...
  WHERE rule_id='20000000-0000-0000-0000-000000000002';  -- antes RULE-TNS-002

-- 3. INSERT nueva regla TNS-010 (Acciones sin evidencia)
INSERT INTO faro.rule_definitions (...) VALUES ('20000000-0000-0000-0000-000000000010', ...);

-- 5. UPDATE tensions · reasignar tension_code canónico + payload enriquecido
UPDATE faro.tensions SET tension_code='TNS-004', title='Venta sin conversión a caja', ...
  WHERE tension_id='22000000-0000-0000-0000-000000000002';

-- 6. UPDATE actions · canonical action_code (ACT-001 → ACT-COM-001, etc.)
-- 8. UPDATE score_snapshots · components.main_tensions = ["TNS-001","TNS-004","TNS-006","TNS-007","TNS-009","TNS-010"]
-- 9. UPDATE reports · reporte semanal con códigos canónicos · score 74 → 66

COMMIT;

Preflight check (obligatorio antes de aplicar)

El patch bloquea automáticamente la ejecución si las dependencias canónicas no están aplicadas. No requiere intervención manual.

-- Bloquea si faltan:
-- a) tabla faro.tension_definitions (creada por FARO-SQL-004)
-- b) las 6 fichas canónicas TNS-001, TNS-004, TNS-006, TNS-007, TNS-009, TNS-010 con status='active'

7 validaciones SQL posteriores

Después de aplicar V027, correr estas validaciones para confirmar consistencia. Ninguna debe devolver filas inesperadas.

#ValidaciónResultado esperado
7.1Tensiones demo alineadas con catálogo canónicoTNS-001, TNS-004, TNS-006, TNS-007, TNS-009, TNS-010 visibles
7.2No deben quedar tensiones fuera de catálogo0 filas
7.3Rule code debe coincidir con tension code0 filas (regla de gobierno)
7.4Reglas demo activas esperadas (6 reglas)RULE-TNS-001/004/006/007/009/010
7.5Acciones con evidencia requerida (true + closure_criteria + codes)Todas las acciones con campos no vacíos
7.6Reporte semanal con códigos canónicos en top_tensionsIncluye TNS-001, 004, 006, 009, 010
7.7Score snapshot con main_tensions canónicasArray con los 6 códigos finales
🔴 Dependencia obligatoria
Regla dura: si se ejecutó FARO-SQL-003 (V024), entonces DEBE ejecutarse FARO-SQL-003.1 (V027) antes de cualquier UI, motor evaluador o reporte. No es opcional.

Orden de aplicación:
V001..V0NN (SQL-001 DDL base)V0NN (SQL-002 RLS)V0NN (SQL-004 catálogo TNS canónico)V024 (SQL-003 seed demo)V027 (SQL-003.1 patch alineación).

El patch es idempotente: se puede correr varias veces sin romper el estado.

Cross-references: catalogo-tensiones-mvp.html (catálogo canónico TNS-001..030) · modelo-sql.html (DDL base) · contrato-datos-mvp.html