← Volver al índice de anexos
Macrobloque 3·Estructura·Anexo 13 / 40

Anexo 13 · Tablas maestras

Etapa: Fase 4.1
DECK PARCIAL

ANEXO 13

Tablas maestras FARO

Este anexo corresponde a la Fase 4 — Estructura, etapa “Tablas maestras”. Es una de las bases más importantes de FARO Connect, porque define la verdad oficial de la empresa: clientes, productos, empleados, proveedores, sucursales, cuentas, áreas, rubros, roles, canales y centros de costo.


1. Objetivo del anexo

El objetivo de las Tablas Maestras FARO es crear entidades únicas, confiables y reutilizables para que todos los módulos trabajen sobre la misma base.

La pregunta central es:

¿Cuál es la versión oficial de cada cliente, producto, empleado, proveedor, sucursal, cuenta, área o responsable dentro de FARO?

Ejemplo simple:

Sin tabla maestra:
Cliente aparece como:
- Constructora Norte
- Const. Norte
- Obra Norte
- Constructora Norte SA

Con tabla maestra:
CLI_003 — Constructora Norte SA

Sin tablas maestras, FARO puede limpiar datos, pero no puede consolidarlos correctamente.


2. Tesis del Anexo 13

La tesis es:

FARO necesita una única verdad operativa para poder medir, comparar, alertar, asignar responsables y calcular score.

Una empresa desordenada suele tener muchas versiones de lo mismo:

Un mismo producto con cinco nombres.
Un mismo cliente duplicado.
Un proveedor escrito distinto.
Un empleado cargado como vendedor en un Excel y como administrativo en otro.
Una sucursal llamada SJ, San Juan o S. Juan.

FARO debe unificar eso.

Porque si no lo hace:

Las ventas por cliente salen mal.
El margen por producto sale mal.
El stock por sucursal sale mal.
La comisión por vendedor sale mal.
La deuda por cliente sale mal.
El FARO Score sale contaminado.

3. Qué es una tabla maestra

Una tabla maestra es una tabla que contiene las entidades centrales del negocio.

Ejemplo:

Clientes
Productos
Empleados
Proveedores
Sucursales
Áreas
Cuentas
Rubros
Canales
Zonas
Roles
Centros de costo

Cada entidad tiene un identificador único.

Ejemplo:

PROD_001 = CEMENTO_BOLSA_50KG
CLI_003 = Constructora Norte SA
EMP_014 = Juan Pérez
SUC_002 = San Juan
PROV_010 = Proveedor Norte SA

Ese ID único permite cruzar información entre áreas.


4. Diferencia entre alias, normalización y tabla maestra

Concepto Qué significa Ejemplo
Alias Forma alternativa en la que aparece un dato. “Cem x50”
Normalización Proceso de limpiar y unificar el dato. “Cem x50” → “cemento bolsa 50kg”
Tabla maestra Entidad oficial del sistema. PROD_001 — CEMENTO_BOLSA_50KG

Ejemplo completo:

RAW:
"Cem x50"

Staging:
"cem x50"

Normalización:
Alias detectado de cemento bolsa 50kg

Tabla maestra:
PROD_001 — CEMENTO_BOLSA_50KG

La tabla maestra es la autoridad final.


5. Tablas maestras mínimas FARO

Una base inicial debería tener entre 8 y 12 tablas maestras mínimas.

Tabla maestra Para qué sirve
dim_customer Clientes, segmentos, riesgo, rentabilidad, cobranza.
dim_product Productos, categorías, unidades, costos, stock, margen.
dim_employee Empleados, roles, áreas, sucursales, superiores, comisiones.
dim_supplier Proveedores, rubros, plazos, dependencia, cumplimiento.
dim_branch Sucursales, depósitos, unidades de negocio.
dim_area Áreas de gestión FARO.
dim_account Cuentas contables / gerenciales.
dim_cost_center Centros de costo.
dim_category Rubros y subrubros.
dim_channel Canales de venta o atención.
dim_zone Zonas geográficas o comerciales.
dim_role Roles y responsabilidades.

En versiones Enterprise o Neural, se pueden sumar:

dim_project
dim_contract
dim_asset
dim_vehicle
dim_industry
dim_process
dim_kpi
dim_tension
dim_action_type
dim_workflow_state

6. Tabla maestra de clientes

6.1 Objetivo

Unificar clientes para medir ventas, margen, cobranza, mora, frecuencia, riesgo y rentabilidad.

6.2 Campos recomendados

Campo Descripción
customer_id ID único del cliente.
legal_name Razón social.
commercial_name Nombre comercial.
tax_id CUIT / identificación fiscal.
segment Constructora, consumidor final, empresa, arquitecto, desarrolladora, etc.
zone_id Zona comercial o geográfica.
channel_id Canal principal.
payment_terms Condición de pago.
credit_limit Límite de crédito.
risk_level Bajo, medio, alto.
profitability_level Alta, media, baja.
status Activo, inactivo, bloqueado.
created_at Fecha de alta.
updated_at Última actualización.

6.3 Ejemplo

{
  "customer_id": "CLI_003",
  "legal_name": "Constructora Norte SA",
  "commercial_name": "Obra Norte",
  "tax_id": "30-00000000-0",
  "segment": "Constructora",
  "zone_id": "ZONE_SAN_JUAN",
  "channel_id": "CANAL_OBRA",
  "payment_terms": "30 días",
  "credit_limit": 5000000,
  "risk_level": "medio",
  "profitability_level": "media",
  "status": "activo"
}

6.4 Riesgo si no existe

Clientes duplicados.
Mora mal calculada.
Rentabilidad por cliente incorrecta.
Riesgo financiero invisible.
Ventas por cliente fragmentadas.

7. Tabla maestra de productos

7.1 Objetivo

Unificar productos para medir venta, margen, stock, rotación, quiebres, reposición, compras y rentabilidad.

7.2 Campos recomendados

Campo Descripción
product_id ID único del producto.
sku Código interno.
normalized_name Nombre normalizado.
brand Marca.
category_id Categoría.
subcategory_id Subcategoría.
unit Unidad: bolsa, kg, m2, unidad, metro, litro.
presentation Presentación: 50kg, 8mm, 20L, etc.
supplier_id Proveedor habitual.
standard_cost Costo estándar o costo base.
list_price Precio lista.
expected_margin Margen esperado.
criticality Alta, media, baja.
rotation_level Alta, media, baja.
status Activo, discontinuado, bloqueado.

7.3 Ejemplo

{
  "product_id": "PROD_001",
  "sku": "CEM-50KG-001",
  "normalized_name": "CEMENTO_BOLSA_50KG",
  "brand": "Genérico",
  "category_id": "CAT_CEMENTO",
  "subcategory_id": "SUBCAT_BOLSA",
  "unit": "bolsa",
  "presentation": "50kg",
  "supplier_id": "PROV_010",
  "standard_cost": 6100,
  "list_price": 8500,
  "expected_margin": 0.24,
  "criticality": "alta",
  "rotation_level": "alta",
  "status": "activo"
}

7.4 Riesgo si no existe

El mismo producto aparece como varios productos.
No se calcula margen real.
No se mide rotación correctamente.
No se detecta stock crítico.
No se puede cruzar venta, compra y stock.

8. Tabla maestra de empleados

8.1 Objetivo

Unificar empleados, roles, áreas, sucursales, superiores y esquemas de remuneración para medir productividad, comisiones, ejecución y accountability.

8.2 Campos recomendados

Campo Descripción
employee_id ID único.
full_name Nombre completo.
document_id DNI / identificación.
area_id Área principal.
role_id Rol.
branch_id Sucursal.
supervisor_id Superior directo.
employment_status Activo, baja, licencia.
base_salary Sueldo base.
commission_scheme_id Esquema de comisión.
start_date Fecha de ingreso.
raci_profile Perfil RACI.
user_id Usuario de sistema si aplica.

8.3 Ejemplo

{
  "employee_id": "EMP_014",
  "full_name": "Juan Pérez",
  "area_id": "AREA_COMERCIAL",
  "role_id": "ROLE_VENDEDOR",
  "branch_id": "SUC_SAN_JUAN",
  "supervisor_id": "EMP_002",
  "employment_status": "activo",
  "base_salary": 850000,
  "commission_scheme_id": "COMISION_VENTA_MARGEN",
  "raci_profile": "responsable_comercial"
}

8.4 Riesgo si no existe

No se sabe quién vendió.
No se calcula comisión correctamente.
No se asignan acciones con responsable real.
No se mide productividad.
No se puede escalar tareas vencidas.

9. Tabla maestra de proveedores

9.1 Objetivo

Unificar proveedores para medir compras, plazos, cumplimiento, dependencia, precios, riesgo y relación con stock.

9.2 Campos recomendados

Campo Descripción
supplier_id ID único.
legal_name Razón social.
tax_id CUIT / identificación.
category_id Rubro principal.
products_supplied Productos asociados.
payment_terms Condición de pago.
average_lead_time_days Plazo promedio.
compliance_rate Cumplimiento histórico.
dependency_level Alta, media, baja.
risk_level Bajo, medio, alto.
alternative_available Si existen alternativas.
status Activo, inactivo, bloqueado.

9.3 Ejemplo

{
  "supplier_id": "PROV_010",
  "legal_name": "Proveedor Norte SA",
  "tax_id": "30-11111111-1",
  "category_id": "CAT_CEMENTO",
  "average_lead_time_days": 7,
  "compliance_rate": 0.82,
  "dependency_level": "alta",
  "risk_level": "medio",
  "alternative_available": false,
  "status": "activo"
}

9.4 Riesgo si no existe

No se detecta proveedor crítico.
No se mide cumplimiento.
No se anticipan quiebres de stock.
No se analiza dependencia.
No se negocia con información completa.

10. Tabla maestra de sucursales / unidades

10.1 Objetivo

Permitir análisis por sucursal, depósito, local, unidad de negocio o empresa del grupo.

10.2 Campos recomendados

Campo Descripción
branch_id ID único.
name Nombre.
type Local, depósito, oficina, unidad, empresa.
city Ciudad.
province Provincia.
country País.
manager_id Responsable.
opening_date Fecha de apertura.
status Activa, en apertura, cerrada.
business_unit_id Unidad de negocio si aplica.

10.3 Ejemplo

{
  "branch_id": "SUC_SAN_JUAN",
  "name": "San Juan",
  "type": "local_y_deposito",
  "city": "San Juan",
  "province": "San Juan",
  "country": "Argentina",
  "manager_id": "EMP_020",
  "status": "en_apertura"
}

10.4 Riesgo si no existe

No se compara desempeño por sucursal.
No se asignan gastos correctamente.
No se mide stock por unidad.
No se calcula score por sucursal.

11. Tabla maestra de áreas

11.1 Objetivo

Definir las áreas FARO sobre las cuales se clasifica la gestión.

11.2 Áreas base

Dirección
Directorio
Comercial
Finanzas
Stock
Compras
RRHH
Operaciones
Administración
Clientes
Proveedores
Sucursales
Sistemas

11.3 Campos recomendados

Campo Descripción
area_id ID único.
name Nombre del área.
parent_area_id Área superior si aplica.
owner_employee_id Responsable.
description Descripción.
active Estado.

11.4 Ejemplo

{
  "area_id": "AREA_COMERCIAL",
  "name": "Comercial",
  "parent_area_id": "AREA_DIRECCION",
  "owner_employee_id": "EMP_002",
  "description": "Ventas, margen, clientes, descuentos y objetivos comerciales",
  "active": true
}

12. Tabla maestra de cuentas y centros de costo

12.1 Objetivo

Separar lectura contable de lectura gerencial.

La contabilidad puede decir:

Gastos varios

FARO necesita decir:

Área: Logística
Centro de costo: Distribución
Rubro: Combustible
Responsable: Operaciones

12.2 Tabla de cuentas

Campo Descripción
account_id ID de cuenta.
account_name Nombre.
account_type ingreso, gasto, activo, pasivo, patrimonio.
faro_category_id Categoría FARO asociada.
default_area_id Área sugerida.
active Estado.

12.3 Tabla de centros de costo

Campo Descripción
cost_center_id ID único.
name Nombre.
area_id Área asociada.
branch_id Sucursal si aplica.
owner_employee_id Responsable.
type operativo, comercial, financiero, dirección.

12.4 Ejemplo

{
  "cost_center_id": "CC_DIRECTORIO",
  "name": "Directorio",
  "area_id": "AREA_DIRECTORIO",
  "owner_employee_id": "EMP_DIR_001",
  "type": "direccion"
}

13. Tabla maestra de categorías, rubros y subrubros

13.1 Objetivo

Permitir clasificar productos, gastos, compras, reclamos, acciones y tensiones.

13.2 Ejemplo de categorías

Categoría Subcategorías
Cemento bolsa, granel, especial.
Hierro barras, mallas, perfiles.
Instalaciones agua, gas, electricidad.
Logística flete, combustible, mantenimiento.
Marketing publicidad, eventos, pauta digital.
Finanzas intereses, comisiones, gastos bancarios.
RRHH sueldos, capacitación, uniformes.
Dirección honorarios, representación, salud directores.

13.3 Estructura

{
  "category_id": "CAT_LOGISTICA",
  "name": "Logística",
  "parent_category_id": null,
  "area_id": "AREA_OPERACIONES",
  "type": "gasto_operativo"
}

14. Tabla maestra de canales

14.1 Objetivo

Permitir medir ventas, margen y clientes por canal.

14.2 Canales típicos

Mostrador
Obra
Mayorista
E-commerce
Teléfono
WhatsApp
Vendedor externo
Marketplace
Sucursal
Cuenta corriente

14.3 Ejemplo

{
  "channel_id": "CANAL_OBRA",
  "name": "Obra",
  "description": "Ventas a obras, constructoras o proyectos específicos",
  "area_id": "AREA_COMERCIAL"
}

15. Tabla maestra de zonas

15.1 Objetivo

Permitir análisis territorial.

15.2 Campos recomendados

Campo Descripción
zone_id ID único.
name Nombre de zona.
city Ciudad.
province Provincia.
country País.
manager_id Responsable comercial u operativo.

15.3 Ejemplo

{
  "zone_id": "ZONE_SAN_JUAN",
  "name": "San Juan",
  "province": "San Juan",
  "country": "Argentina",
  "manager_id": "EMP_020"
}

16. Tabla maestra de roles

16.1 Objetivo

Conectar personas con responsabilidades, permisos, workflows y matriz RACI.

16.2 Roles típicos

Gerente General
Gerente Comercial
Responsable de Finanzas
Responsable de Stock
Responsable de Compras
Responsable de RRHH
Responsable de Operaciones
Encargado de sucursal
Vendedor
Cajero
Administrativo
Encargado de depósito
Chofer
Data Owner
Usuario Dirección

16.3 Ejemplo

{
  "role_id": "ROLE_GERENTE_COMERCIAL",
  "name": "Gerente Comercial",
  "area_id": "AREA_COMERCIAL",
  "can_approve_discounts": true,
  "can_view_margin": true,
  "can_assign_actions": true,
  "raci_default": "R"
}

17. Tablas de alias

Las tablas maestras necesitan tablas de alias para resolver nombres alternativos.

17.1 Alias de productos

CREATE TABLE product_alias (
    id UUID PRIMARY KEY,
    product_id TEXT NOT NULL,
    alias TEXT NOT NULL,
    source_id TEXT,
    confidence NUMERIC,
    validated_by TEXT,
    created_at TIMESTAMP DEFAULT now()
);

Ejemplo:

{
  "product_id": "PROD_001",
  "alias": "Cem x50",
  "source_id": "EXCEL_VENTAS",
  "confidence": 0.95,
  "validated_by": "data_admin"
}

17.2 Alias de clientes

CREATE TABLE customer_alias (
    id UUID PRIMARY KEY,
    customer_id TEXT NOT NULL,
    alias TEXT NOT NULL,
    source_id TEXT,
    confidence NUMERIC,
    validated_by TEXT,
    created_at TIMESTAMP DEFAULT now()
);

17.3 Alias de empleados

CREATE TABLE employee_alias (
    id UUID PRIMARY KEY,
    employee_id TEXT NOT NULL,
    alias TEXT NOT NULL,
    source_id TEXT,
    confidence NUMERIC,
    validated_by TEXT,
    created_at TIMESTAMP DEFAULT now()
);

18. Modelo SQL base de tablas maestras

18.1 Productos

CREATE TABLE dim_product (
    product_id TEXT PRIMARY KEY,
    sku TEXT,
    normalized_name TEXT NOT NULL,
    brand TEXT,
    category_id TEXT,
    subcategory_id TEXT,
    unit TEXT,
    presentation TEXT,
    supplier_id TEXT,
    standard_cost NUMERIC,
    list_price NUMERIC,
    expected_margin NUMERIC,
    criticality TEXT,
    rotation_level TEXT,
    status TEXT DEFAULT 'active',
    created_at TIMESTAMP DEFAULT now(),
    updated_at TIMESTAMP DEFAULT now()
);

18.2 Clientes

CREATE TABLE dim_customer (
    customer_id TEXT PRIMARY KEY,
    legal_name TEXT,
    commercial_name TEXT,
    tax_id TEXT,
    segment TEXT,
    zone_id TEXT,
    channel_id TEXT,
    payment_terms TEXT,
    credit_limit NUMERIC,
    risk_level TEXT,
    profitability_level TEXT,
    status TEXT DEFAULT 'active',
    created_at TIMESTAMP DEFAULT now(),
    updated_at TIMESTAMP DEFAULT now()
);

18.3 Empleados

CREATE TABLE dim_employee (
    employee_id TEXT PRIMARY KEY,
    full_name TEXT NOT NULL,
    document_id TEXT,
    area_id TEXT,
    role_id TEXT,
    branch_id TEXT,
    supervisor_id TEXT,
    employment_status TEXT DEFAULT 'active',
    base_salary NUMERIC,
    commission_scheme_id TEXT,
    start_date DATE,
    raci_profile TEXT,
    user_id TEXT,
    created_at TIMESTAMP DEFAULT now(),
    updated_at TIMESTAMP DEFAULT now()
);

18.4 Proveedores

CREATE TABLE dim_supplier (
    supplier_id TEXT PRIMARY KEY,
    legal_name TEXT NOT NULL,
    tax_id TEXT,
    category_id TEXT,
    payment_terms TEXT,
    average_lead_time_days INTEGER,
    compliance_rate NUMERIC,
    dependency_level TEXT,
    risk_level TEXT,
    alternative_available BOOLEAN,
    status TEXT DEFAULT 'active',
    created_at TIMESTAMP DEFAULT now(),
    updated_at TIMESTAMP DEFAULT now()
);

19. Calidad de tablas maestras

Las tablas maestras también deben tener score de calidad.

19.1 Fórmula

Score maestro =
completitud × 30%
+ unicidad × 25%
+ actualización × 15%
+ validación × 15%
+ uso en procesos × 15%

19.2 Código ejemplo

def score_maestro(completitud, unicidad, actualizacion, validacion, uso_procesos):
    return round(
        completitud * 0.30 +
        unicidad * 0.25 +
        actualizacion * 0.15 +
        validacion * 0.15 +
        uso_procesos * 0.15,
        2
    )

19.3 Lectura

Score Estado
0.85 - 1.00 Maestro confiable
0.70 - 0.84 Usable con observaciones
0.50 - 0.69 Maestro débil
0.00 - 0.49 No confiable

20. Gobierno de tablas maestras

Las tablas maestras no pueden quedar libradas a cualquiera.

Maestro Dueño de negocio Dueño técnico
Clientes Comercial / Finanzas Sistemas / Data owner
Productos Stock / Compras / Comercial Sistemas
Empleados RRHH Sistemas
Proveedores Compras / Finanzas Sistemas
Sucursales Dirección Sistemas
Áreas Dirección / RRHH Sistemas
Cuentas Finanzas / Administración Sistemas
Centros de costo Finanzas / Dirección Sistemas
Roles RRHH / Dirección Sistemas

Regla sana:

Sistemas administra la estructura, pero el área de negocio valida la verdad.


21. Estados de una entidad maestra

Estado Significado
Activo Se usa normalmente.
Inactivo No se usa, pero queda histórico.
Pendiente de validación Creado, pero falta aprobación.
Duplicado posible Puede estar repetido.
Fusionado Fue unido con otra entidad.
Bloqueado No debe usarse en nuevas operaciones.
Discontinuado Producto o proveedor ya no operativo.

22. Resolución de duplicados

22.1 Ejemplo cliente duplicado

CLI_003 — Constructora Norte SA
CLI_088 — Const. Norte
CLI_142 — Obra Norte

Resolución:

Mantener CLI_003 como maestro principal.
Fusionar CLI_088 y CLI_142 como alias.
Mantener histórico de operaciones.
No perder trazabilidad.

22.2 Código conceptual

def fusionar_entidades(entidad_principal, entidades_duplicadas):
    for entidad in entidades_duplicadas:
        reasignar_operaciones(entidad, entidad_principal)
        crear_alias(entidad_principal, entidad)
        marcar_como_fusionada(entidad)

    return {
        "principal": entidad_principal,
        "fusionadas": entidades_duplicadas,
        "status": "fusion_completed"
    }

23. Versionado de maestros

Las tablas maestras cambian.

Ejemplo:

Un producto cambia de proveedor.
Un cliente cambia condición de pago.
Un empleado cambia de sucursal.
Un proveedor pasa a riesgo alto.
Un producto se discontinúa.

FARO debe versionar cambios relevantes.

CREATE TABLE master_data_history (
    id UUID PRIMARY KEY,
    entity_type TEXT NOT NULL,
    entity_id TEXT NOT NULL,
    field_name TEXT NOT NULL,
    previous_value TEXT,
    new_value TEXT,
    changed_by TEXT,
    changed_at TIMESTAMP DEFAULT now(),
    reason TEXT
);

Ejemplo:

{
  "entity_type": "customer",
  "entity_id": "CLI_003",
  "field_name": "risk_level",
  "previous_value": "medio",
  "new_value": "alto",
  "changed_by": "finanzas",
  "reason": "Mora superior a 60 días"
}

24. Relación entre tablas maestras y hechos

Las tablas maestras alimentan las tablas de hechos.

Ejemplo de hechos:

fact_sales
fact_payments
fact_inventory_movements
fact_purchases
fact_expenses
fact_commissions
fact_actions
fact_alerts
fact_tensions

Ejemplo:

SELECT
    s.sale_id,
    c.legal_name AS cliente,
    p.normalized_name AS producto,
    e.full_name AS vendedor,
    b.name AS sucursal,
    s.net_amount,
    s.margin
FROM fact_sales s
JOIN dim_customer c ON s.customer_id = c.customer_id
JOIN dim_product p ON s.product_id = p.product_id
JOIN dim_employee e ON s.employee_id = e.employee_id
JOIN dim_branch b ON s.branch_id = b.branch_id;

Esto permite pasar de registros sueltos a lectura gerencial.


25. Relación con KPIs

Sin tablas maestras, muchos KPIs no son confiables.

KPI Maestro necesario
Margen por producto Producto
Rentabilidad por cliente Cliente
Venta por vendedor Empleado
Mora por cliente Cliente
Stock crítico Producto + Sucursal
Cumplimiento proveedor Proveedor
Gasto por área Área + Centro de costo
Comisión por vendedor Empleado + Esquema comisión
Score por sucursal Sucursal
Productividad por empleado Empleado + Rol

26. Relación con tensiones

Tensión FARO Maestros necesarios
Crecimiento no rentable Cliente, producto, vendedor, sucursal.
Caja débil con ventas altas Cliente, cuenta, sucursal.
Stock crítico comercial Producto, sucursal, proveedor.
Stock inmovilizado Producto, sucursal, categoría.
Comisión desalineada Empleado, esquema comisión, cliente, producto.
Proveedor crítico Proveedor, producto, sucursal.
Dirección sin ejecución Empleado, rol, área, acción.
Gasto desalineado Área, centro de costo, cuenta.

27. Ejemplo completo: venta con tablas maestras

Dato normalizado

{
  "fecha": "2026-05-27",
  "customer_id": "CLI_003",
  "product_id": "PROD_001",
  "employee_id": "EMP_014",
  "branch_id": "SUC_SAN_JUAN",
  "cantidad": 100,
  "precio_unitario": 8500,
  "descuento": 0.12
}

Cruce con maestros

CLI_003 = Constructora Norte SA
PROD_001 = CEMENTO_BOLSA_50KG
EMP_014 = Juan Pérez
SUC_SAN_JUAN = San Juan

Lectura FARO

Venta de producto crítico de alta rotación,
a cliente constructor,
por vendedor Juan Pérez,
en sucursal San Juan,
con descuento alto,
posible impacto en margen, comisión, stock y cobranza.

28. Ejemplo completo: gasto con tablas maestras

Dato

{
  "descripcion": "OSDE Mayo",
  "monto": 450000,
  "fecha": "2026-05-10",
  "account_id": "ACC_GASTOS_VARIOS"
}

Clasificación con maestros

{
  "area_id": "AREA_DIRECTORIO",
  "cost_center_id": "CC_DIRECTORIO",
  "category_id": "CAT_SALUD_DIRECTORES"
}

Lectura FARO

El gasto corresponde al Directorio.
No debe distorsionar Administración, RRHH ni gastos operativos.

29. Reglas de creación de nuevos maestros

FARO debe definir cuándo se crea una entidad nueva.

Producto nuevo

Crear nuevo producto solo si:
- no existe en maestro,
- no coincide con alias existentes,
- tiene categoría definida,
- tiene unidad definida,
- tiene responsable de validación.

Cliente nuevo

Crear nuevo cliente solo si:
- no existe por CUIT,
- no coincide por razón social,
- no coincide por alias validado,
- tiene segmento y zona mínima.

Proveedor nuevo

Crear nuevo proveedor solo si:
- no existe por CUIT,
- tiene rubro,
- tiene condición de pago,
- tiene responsable de validación.

Código conceptual:

def puede_crear_cliente(cliente):
    if not cliente.get("tax_id") and not cliente.get("legal_name"):
        return False

    if buscar_cliente_existente(cliente):
        return False

    return True

30. Herramientas posibles

Necesidad Herramientas
Base relacional PostgreSQL, SQL Server, MySQL
ORM / backend Prisma, SQLAlchemy, Django ORM
Validación Great Expectations, dbt tests, reglas propias
Matching Python, RapidFuzz, difflib
Auditoría audit tables, logs, data lineage
Versionado tablas históricas, Slowly Changing Dimensions
Gestión visual panel interno FARO
Integración APIs, ETL, Airbyte, n8n
Seguridad RBAC, permisos por área, logs

31. Riesgos si no existen tablas maestras

Riesgo Consecuencia
Clientes duplicados Mora y rentabilidad incorrecta.
Productos duplicados Stock, margen y rotación erróneos.
Empleados mal vinculados Comisiones y acciones mal asignadas.
Proveedores duplicados Dependencia invisible.
Sucursales mal cargadas Comparación territorial incorrecta.
Gastos sin centro de costo Rentabilidad por área distorsionada.
Roles indefinidos Workflow y RACI débiles.
Maestros sin gobierno El sistema se degrada con el tiempo.

32. Output final del Anexo 13

Al finalizar este anexo, FARO debe tener definido:

1. Tablas maestras mínimas.
2. Estructura de clientes.
3. Estructura de productos.
4. Estructura de empleados.
5. Estructura de proveedores.
6. Estructura de sucursales.
7. Estructura de áreas.
8. Estructura de cuentas.
9. Estructura de centros de costo.
10. Estructura de rubros y subrubros.
11. Estructura de canales.
12. Estructura de zonas.
13. Estructura de roles.
14. Tablas de alias.
15. Reglas de creación de nuevos maestros.
16. Reglas de fusión de duplicados.
17. Versionado de cambios.
18. Dueños de negocio por maestro.
19. Score de calidad de maestros.
20. Relación entre maestros, KPIs, tensiones, acciones y FARO Score.

33. Conexión con otros anexos

Próximo anexo Qué recibe desde Anexo 13
Anexo 11Staging y normalización Entidades limpias y alias detectados.
Anexo 12 — Clasificación FARO Categorías, áreas y centros de costo.
Anexo 14Modelo ejecutivo FARO Dimensiones oficiales para análisis.
Anexo 15 — Modelo por industria Maestros adaptados por rubro.
Anexo 16 — Relaciones entre datos Entidades para conectar causa-impacto.
Anexo 17 — Biblioteca de KPIs Dimensiones para fórmulas y segmentación.
Anexo 20 — Reglas de negocio Entidades y condiciones validadas.
Anexo 22 — Biblioteca de tensiones Variables confiables para tensiones.
Anexo 29 — Biblioteca de acciones Responsables y áreas para asignación.
Anexo 31 — Workflow y escalamiento Roles, empleados y jerarquías.
Anexo 35FARO Score Score por cliente, producto, área, sucursal, responsable y módulo.

Las Tablas Maestras FARO definen la verdad oficial de la empresa. Unifican clientes, productos, empleados, proveedores, sucursales, áreas, cuentas, centros de costo y roles para que todos los módulos midan, alerten, asignen acciones y calculen score sobre la misma base. Sin tablas maestras, FARO puede tener datos, pero no tiene una verdad única para dirigir.

Versión 1.0 · Última revisión: 2026-05-28 Anexo 13 de 40 · Fase 4.1