Business Observer Data Contract 001 - APV¶
Fecha: 2026-06-10
Estado: CONTRATO FUNCIONAL DE DATOS
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
Fuente de verdad:
docs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-DATA-CONTRACT-001.md
1. Proposito¶
Este contrato existe para convertir la auditoria de datos ya realizada en una
guia funcional clara para futuras bases Postgres, datasets del tenant y
scripts de sincronizacion del Business Observer de APV.
Su funcion no es implementar nada todavia.
Su funcion es evitar que una futura base nazca por intuicion, por comodidad tecnica o por copia de estructuras genericas sin relacion directa con negocio.
El contrato conecta:
- necesidades reales de
UC001aUC009 - evidencia y gobierno de datos
- futura preparacion de dataset tenant
- futura traduccion a entidades
Postgres - futura sincronizacion y validacion
Regla madre:
ningun dato debe entrar por suposicion.
Todo dato debe nacer de un caso de uso real, con origen esperado, responsable, frecuencia y criterio minimo de calidad.
Regla transversal adicional:
historicos por valor de decision
Todo dato util para indicadores, toma de decisiones, patrones, tendencias, alertas o aprendizaje futuro debe contemplar historico desde el diseno.
Esto aplica cuando el dato permita:
- medir evolucion
- detectar patrones
- explicar tendencias
- generar alertas
- mejorar decisiones comerciales
- alimentar aprendizaje futuro
No implica guardar todo sin criterio ni sin limite.
Implica disenar historicos livianos, trazables y utiles.
Regla transversal adicional para SOURCE-002:
tenant_id + SKUes la clave canonica del dominio producto- todo dato que salga de
SOURCE-002debe interpretarse como atributo, medicion, relacion vigente o relacion historica delSKU - articulo, marca, estado, stock, stock en bultos, costos, descuentos de
compra, precios, listas,
IVA, margenes, descuento permitido, precio oferta, proveedor, categoria, subcategoria, unidad de medida, palletizado, fechas operativas e historicos utiles quedan subordinados a esa clave - el analisis por proveedor o por marca debe derivarse desde los
SKUasociados y no desde valores textuales sueltos - politica comercial, promociones, estrategia comercial, actividad comercial y
volumetria / logistica tambien deben quedar explicitamente subordinadas a
tenant_id + SKU
Regla transversal adicional para SOURCE-001:
tenant_id + codigo_clientees la clave logica recomendada del dominio cliente derivado deVCLIENTEScodigo_clientedebe canonicalizarse comoNULLIF(LTRIM(RTRIM([Codigo])), '')- la validacion real del
2026-06-08sobreVCLIENTESobservo11401filas,11401codigos normalizados distintos,0codigos nulos o vacios y0codigos duplicados distintos - la validacion real del
2026-06-08sobreTelefonousado comoWhatsAppobservo11401filas,7107telefonos informados,4294vacios,350telefonos repetidos distintos entre clientes y mayoria de formatos controlables de10a13digitos tras quitar separadores - una corrida real posterior del mismo
2026-06-08para vendedor y frecuencia observo11404filas, lo que confirma queVCLIENTESes una fuente viva y refuerza la necesidad futura desync_batch_id,extracted_atylast_seen_at - en esa corrida real posterior del
2026-06-08,Codigo_vendedoryNombre_Vendedoraparecieron completos en11404/11404filas y sostuvieron relacion1:1, con76codigos distintos,76nombres distintos y0inconsistencias en ambos sentidos dentro deVCLIENTES - en esa misma corrida real posterior del
2026-06-08,CodFrecyFrecuenciaaparecieron completos en11404/11404filas, con4codigos y4etiquetas en relacion1:1, sin inconsistencias - en esa misma corrida real posterior del
2026-06-08, los campos diarioslunesasabadosolo observaronS,NyNULL/VACIO, sin texto libre sorpresa - en otra corrida real del
2026-06-08orientada a territorialidad,LocalidadyProvinciaaparecieron completas en11404/11404filas,Zonaaparecio informada en11403/11404, se observaron24provincias,516localidades y365zonas distintas - en esa misma corrida territorial del
2026-06-08,Zonamostro una taxonomia util pero imperfecta:1522casosNO DEFINIDA,1NULL/VACIO,9437casos con prefijoZONA,444valores no prefijados y76zonas multi-provincia que involucran6365clientes - por evidencia real observada,
tenant_id + codigo_clientepuede tratarse como clave logica fuerte deSOURCE-001mientras se preserve esa canonicalizacion - por esa misma evidencia,
whatsappno debe tratarse como identificador unico del cliente - por esa misma evidencia,
seller_code_raw,seller_name_raw,visit_frequency_code_rawyvisit_frequency_label_rawpueden tratarse como senales operativas aprovechables del cliente dentro deSOURCE-001 - por esa misma evidencia,
city_raw,state_province_rawylogistic_zone_rawpueden tratarse como senales territoriales aprovechables del cliente, con semaforoAMARILLOy sin asumir todavia una jerarquia geografica perfectamente normalizada - la estrategia canonica futura para territorio de
SOURCE-001queda documentada en:docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-NORMALIZATION-STRATEGY.md - el inventario documental inicial del catalogo real de aliases territoriales
para
SOURCE-001queda documentado en:docs/tenants/alpuntodeventa/business-observer/territory/TERRITORY-ALIAS-CATALOG-001.md - esa estrategia fija
provincia_raw + provincia_normalized,localidad_raw + localidad_normalizedyzona_raw + zona_type + zona_normalizedcomo arquitectura territorial canonica previa al diseno fisico final - en
SOURCE-001,Zonaqueda definida por negocio como agrupacion logistica para rutas y reparto, no como territorio comercial del vendedor - el vendedor responsable de cada cliente debe salir de
Codigo_vendedor / Nombre_Vendedor - ese vendedor de
SOURCE-001debe tratarse comoseller_assigned - el territorio comercial del vendedor debe derivarse de su cartera real de clientes asignados y del cruce posterior con geografia, ventas reales y productos
- el vendedor observado en
SOURCE-003debe tratarse comoseller_transactional - la atribucion real de facturacion debe usar
seller_transactionaly no debe sobrescribirse conseller_assigned - la diferencia entre
seller_assignedyseller_transactionaldebe preservarse como senal analitica - el canal transaccional observado en
SOURCE-003debe preservarse comochannel_rawy no debe sobrescribir el canal comercial del cliente enSOURCE-001 RamodeSOURCE-003debe preservarse como senal complementaria porque en la validacion real explica mejor aOTROSy aSIN ASIGNAR- la taxonomia funcional parcial de canal para
SOURCE-003queda documentada ensources/SOURCE-003-CHANNEL-TAXONOMY.md - no corresponde inferir
ecommerceoshared_channelsolo porOTROS - ese catalogo inicial documenta evidencia
raw, reglas de alias, clasificacion deZona, nivelesautomatic/suggested/manual_reviewy metadata futura de aprobacionapproved_by,approved_atysource_evidence - la futura sync de
SOURCE-001debe preservarwhatsapp_rawo valor fuente equivalente cuando el formato sea ambiguo - no corresponde cerrar normalizacion definitiva de
whatsappmientras sigan apareciendo formatos heterogeneos o ambiguos en la fuente - todos los grupos de datos derivados de
SOURCE-001deben interpretarse como atributos, contactos, direcciones, datos fiscales, datos comerciales, ownership comercial o calendario de visita del mismo clienteSGC - si se usan grupos logicos como
customers_core,customers_contact,customers_address,customers_tax,customers_commercial,customers_sales_ownerycustomers_visit_schedule, esa separacion es solo logica y no una multiplicacion de clientes - el primer mapeo campo por campo vigente de esa separacion queda documentado
en:
docs/tenants/alpuntodeventa/business-observer/mappings/SOURCE-001-CLIENTES-MAPPING.md - ningun grupo derivado de
SOURCE-001debe leerse como cliente independiente mientras el origen comun siga siendoCodigo - la extraccion base de
SOURCE-001no debe agregarWHERE Estado = 'CLIENTE ACTIVO' - la sync futura de
SOURCE-001debe preservarCLIENTE ACTIVO,CLIENTE SUSPENDIDOyCLIENTE DE BAJA - el valor textual de
EstadoenSGCdebe guardarse comoestado_raw - el estado operativo derivado recomendado es:
CLIENTE ACTIVO -> active / can_sell = true - el estado operativo derivado recomendado es:
CLIENTE SUSPENDIDO -> suspended / can_sell = false - el estado operativo derivado recomendado es:
CLIENTE DE BAJA -> inactive / can_sell = false - los filtros de venta o facturacion deben vivir en vistas, datasets derivados o capas de consumo y no en la base sincronizada
- un cliente con
fecha_baja, estado suspendido, estado de baja o inactividad no debe tratarse como eliminado del dominio comercial historico - la suspension o baja debe preservarse como estado o evento historico del cliente
- esos clientes deben seguir disponibles para analisis historico, medicion de perdida de territorio, recuperacion comercial, campanas de reactivacion, calculo de masa comercial total, recomposicion de masa comercial y desempeno por zona, vendedor y periodo
- la desaparicion completa del registro en una extraccion futura debe tratarse
distinto de
Estado = CLIENTE DE BAJA
2. Principio rector¶
Flujo oficial:
Contrato funcional de datos
↓
Dataset del tenant alpuntodeventa
↓
Diseno Postgres futuro
↓
Scripts de sincronizacion
↓
Validaciones
↓
Observer operativo futuro
Interpretacion:
- primero se define que dato hace falta y para que sirve
- despues se define como se organiza dentro del dataset
APV - recien luego se transforma en tablas futuras
- solo despues tiene sentido pensar sincronizacion y validacion
- el observer operativo debe ser consecuencia del contrato, no su reemplazo
3. Reglas de separacion tenant¶
- todo dato de
APVdebe quedar aislado por tenant - no se deben mezclar datos de
APVconLa Directa - todo dataset futuro debe respetar
tenant_id, contexto y owner Coredefine patrones reutilizables de gobierno, trazabilidad y aislamientoAPVdefine sus datos, reglas comerciales, prioridades y criterios propios- un dato reusable de
Coreno habilita mezcla de contenido concreto entre tenants - una futura tabla, vista, export o script que no preserve contexto tenant no queda aceptado
4. Clasificacion de datos del contrato¶
4.1 Regla de territorio comercial del vendedor¶
Pregunta incorrecta:
cual es el territorio del vendedor segun Zona
Pregunta correcta:
cual es el territorio comercial del vendedor segun clientes asignados, geografia, ventas reales y mix de productos
Reglas cerradas:
ZonaenSOURCE-001es dimension logisticaZonano define vendedor- el vendedor responsable sale de
Codigo_vendedor / Nombre_Vendedor - el territorio comercial del vendedor se construye desde:
clientes asignados al vendedor, localidad y provincia de esos clientes,
zona logistica, ventas reales,
SKU, marcas, proveedores y categorias - el cruce analitico final debe sostenerse con
SOURCE-001,SOURCE-002ySOURCE-003
Documento conceptual relacionado:
- la futura capa analitica especifica para responder territorio comercial del
vendedor queda documentada en:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-COMMERCIAL-TERRITORY-VIEW.md - la reconciliacion conceptual entre vendedor asignado y vendedor real de la
venta queda documentada en:
docs/tenants/alpuntodeventa/business-observer/analytics/SELLER-RECONCILIATION-RULES.md - la futura capa conceptual para identificar quien trabaja realmente cada
cliente queda documentada en:
docs/tenants/alpuntodeventa/business-observer/analytics/CUSTOMER-OWNERSHIP-ANALYTICS.md - esa capa debe preservar por separado ownership formal, ultima venta, ownership efectivo, recuperacion, crecimiento, riesgo y abandono sin reemplazar la autoria real de la venta
A. Datos existentes del ERP / SGC / sistema de ventas¶
Datos que razonablemente deberian existir ya en fuentes operativas de APV,
como clientes, vendedores, productos, ventas, comprobantes, stock y maestros
comerciales.
B. Datos existentes que deben validarse¶
Datos plausibles pero aun no confirmados con suficiente calidad, cobertura o vigencia, como historicos, zonas, supervisores, vigencias o unidades por bulto.
C. Datos nuevos a capturar¶
Datos que hoy no tienen una fuente madura y deberian capturarse en el futuro, como demanda no atendida, relevamientos, acciones comerciales o resultados de esas acciones.
D. Datos calculados futuros¶
Datos que no deben cargarse como verdad primaria sino derivarse luego con trazabilidad, como riesgo comercial, margen estimado, rentabilidad estimada, score de prioridad o recomendacion priorizada.
E. Datos de gobierno comercial¶
Datos que ordenan foco y ownership comercial, como objetivos, metas, prioridades, responsables, ventanas y criterios de cumplimiento.
F. Datos de auditoria y trazabilidad¶
Datos que permiten explicar origen, vigencia, responsable, ultima actualizacion y confianza de cada lectura futura.
5. Catalogo funcional de datos¶
| Dato funcional | Descripcion | Categoria | Origen esperado | Responsable de generacion | Responsable de validacion | Frecuencia esperada | Nivel de confianza inicial | Casos de uso consumidores | Prioridad | Observaciones |
|---|---|---|---|---|---|---|---|---|---|---|
| codigo de cliente | Identificador comercial estable del cliente | A | ERP / SGC / maestro clientes |
sistema origen | direccion comercial / administracion | diaria o por sync | alta | UC001, UC002, UC003, UC004, UC007, UC008 |
alta | clave base para trazabilidad |
| razon social / nombre | Nombre comercial del cliente | A | maestro clientes | sistema origen | administracion comercial | diaria o por sync | alta | UC001, UC002, UC003, UC004, UC007, UC008 |
alta | debe evitar duplicados |
| localidad | Ubicacion comercial del cliente | B | maestro clientes | sistema origen | supervision comercial | diaria o por sync | media | UC004, UC006, UC008, UC009 |
media | validar consistencia de nombres |
| provincia | Provincia asociada al cliente | B | maestro clientes | sistema origen | supervision comercial | diaria o por sync | media | UC004, UC006, UC008, UC009 |
media | importante para lectura territorial |
| zona | Agrupacion logistica de clientes para rutas, reparto y operacion | B | maestro clientes / definicion operativa | sistema origen / operacion comercial | supervision comercial | semanal o por cambio | media | UC002, UC003, UC005, UC006, UC007, UC008, UC009 |
media | no usar para inferir vendedor responsable; puede requerir normalizacion |
| vendedor asignado | Vendedor responsable del cliente | A | maestro clientes | sistema origen | direccion comercial | diaria o por sync | alta | UC001, UC002, UC003, UC004, UC007, UC008 |
alta | control critico de ownership |
| estado comercial | Estado funcional del cliente | B | maestro clientes / direccion comercial | sistema origen / direccion comercial | direccion comercial | semanal o por cambio | media | UC001, UC002, UC007, UC008 |
media | distinguir activo, inactivo, pausado o baja; baja no implica eliminacion |
| fecha baja cliente | Fecha en la que el cliente pasa a baja comercial | B | maestro clientes | sistema origen / direccion comercial | direccion comercial | semanal o por cambio | media | UC001, UC002, UC003, UC005, UC007, UC008, UC009 |
alta | debe preservarse como hito historico y no como criterio de borrado |
| fecha ultima compra | Ultima fecha de compra confirmada | A | ventas / comprobantes | sistema origen | direccion comercial | diaria | alta | UC001, UC002, UC005, UC007 |
alta | base para riesgo comercial |
| codigo vendedor | Identificador estable del vendedor | A | maestro vendedores | sistema origen | direccion comercial | diaria o por sync | alta | UC001 a UC009 |
alta | clave operativa minima |
| nombre vendedor | Nombre del vendedor | A | maestro vendedores | sistema origen | direccion comercial | diaria o por sync | alta | UC001 a UC009 |
alta | lectura humana y ownership |
| supervisor | Responsable jerarquico del vendedor | B | maestro vendedores / direccion comercial | sistema origen / direccion comercial | direccion comercial | semanal o por cambio | media | UC002, UC003, UC005, UC007, UC009 |
media | validar vigencia organizacional |
| zona vendedor | Agrupacion operativa o logistico-administrativa del vendedor | B | maestro vendedores | sistema origen | supervision comercial | semanal o por cambio | media | UC002, UC003, UC005, UC006, UC007, UC009 |
media | no asumir equivalencia exacta con la zona del cliente ni con su territorio comercial |
| estado vendedor | Estado funcional del vendedor | B | maestro vendedores | sistema origen | direccion comercial | semanal o por cambio | media | UC001, UC002, UC003, UC007 |
media | activo, licencia, baja, etc. |
| SKU | Identificador operativo del item | A | maestro productos | sistema origen | administracion comercial | diaria o por sync | alta | UC002, UC004, UC005, UC006, UC007, UC008, UC009 |
alta | granularidad real de stock, precio y venta |
| descripcion | Descripcion comercial del item | A | maestro productos | sistema origen | administracion comercial | diaria o por sync | alta | UC002, UC004, UC006, UC008, UC009 |
alta | debe ser interpretable para negocio |
| marca | Marca del producto o SKU |
A | maestro productos | sistema origen | direccion comercial | diaria o por sync | alta | UC001, UC002, UC003, UC004, UC006, UC007, UC008, UC009 |
alta | critica para regla 90/10 |
| proveedor | Proveedor asociado al SKU; debe conservar Cod Proveedor como identificador de negocio y Proveedor como nombre legible |
A | maestro productos / compras | sistema origen | compras / direccion comercial | diaria o por sync | alta | UC002, UC003, UC006, UC007, UC008, UC009 |
alta | no usar solo el texto de proveedor como clave analitica |
| categoria | Categoria comercial | B | maestro productos | sistema origen | direccion comercial | diaria o por sync | media | UC001, UC008, UC009 |
media | revisar normalizacion |
| unidades por bulto | Conversion comercial a bultos | B | maestro productos | sistema origen | administracion comercial | diaria o por sync | media | UC004, UC005, UC008, UC009 |
media | importante para comparacion operativa |
| estado producto | Estado funcional del producto | B | maestro productos | sistema origen | direccion comercial | semanal o por cambio | media | UC002, UC006, UC008, UC009 |
media | activo, discontinuado, pausado |
| producto estrategico si/no | Marca de prioridad comercial del producto | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | media | UC002, UC007, UC008, UC009 |
media | dato de gobierno, no transaccional |
| marca estrategica si/no | Marca de prioridad comercial de la marca | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | media | UC001, UC002, UC007, UC008, UC009 |
alta | no confundir con marca normal |
| fecha venta | Fecha del hecho de venta | A | ventas / comprobantes | sistema origen | administracion comercial | diaria | alta | UC001, UC002, UC003, UC005, UC006, UC008, UC009 |
alta | base temporal principal |
| tipo comprobante | Tipo documental de la operacion | A | comprobantes | sistema origen | administracion comercial | diaria | alta | UC005, UC001, UC002 |
alta | distinguir facturas, notas, etc. |
| estado comprobante | Estado del comprobante segun logica documental de SOURCE-003 |
A | comprobantes | sistema origen | administracion comercial | diaria | alta | UC005, UC001, UC002 |
alta | no inferir anulados fuera de la query autoridad |
| cliente en venta | Referencia del cliente en la transaccion | A | ventas / comprobantes | sistema origen | administracion comercial | diaria | alta | UC001, UC002, UC003, UC004, UC007, UC008 |
alta | debe cruzar contra maestro |
| vendedor en venta | Referencia del vendedor en la transaccion | A | ventas / comprobantes | sistema origen | direccion comercial | diaria | alta | UC001, UC002, UC003, UC005, UC007 |
alta | ownership real de la venta |
| SKU en venta | SKU vendido |
A | ventas / comprobantes | sistema origen | administracion comercial | diaria | alta | UC002, UC003, UC004, UC005, UC006, UC008, UC009 |
alta | no reemplazar por producto agregado |
| unidades | Unidades vendidas | A | ventas / comprobantes | sistema origen | administracion comercial | diaria | alta | UC002, UC003, UC004, UC005, UC008, UC009 |
alta | medida operativa base |
| bultos | Equivalencia comercial en bultos | B | ventas / conversion de producto | sistema origen | administracion comercial | diaria | media | UC004, UC005, UC008, UC009 |
media | depende de unidades por bulto |
| venta neta | Importe neto de la venta | A | ventas / comprobantes | sistema origen | administracion / direccion comercial | diaria | alta | UC001, UC002, UC003, UC005, UC006, UC007, UC008 |
alta | aclarar criterio neto |
line_key o clave funcional de linea |
Identificador robusto de la linea itemizada sincronizada | B | derivado de SOURCE-003 / Tabla 2 |
capa futura de sync | direccion comercial / datos | diaria | media | UC001, UC002, UC003, UC005, UC006, UC008, UC009 |
alta | necesaria porque un comprobante podria repetir el mismo SKU |
| proveedor en venta | Codigo proveedor historico preservado en la transaccion | A | SOURCE-003 / Tabla 2 |
sistema origen | compras / direccion comercial | diaria | alta | UC002, UC003, UC006, UC007, UC008, UC009 |
alta | en SOURCE-003, Proveedor = codigo proveedor |
| razon social proveedor en venta | Nombre o razon social historica del proveedor preservada en la transaccion | A | SOURCE-003 / Tabla 2 |
sistema origen | compras / direccion comercial | diaria | alta | UC002, UC003, UC006, UC007, UC008, UC009 |
alta | en SOURCE-003, RazonSocial_Proveedor = nombre proveedor |
| precio historico de venta | Precio unitario o de linea preservado al momento de la transaccion | A | SOURCE-003 / Tabla 2 |
sistema origen | administracion comercial | diaria | alta | UC001, UC002, UC003, UC005, UC006, UC007, UC008 |
alta | no depender del maestro actual |
| descuentos historicos | Descuentos de linea o al pie preservados en la transaccion | A | SOURCE-003 / Tabla 2 |
sistema origen | administracion comercial | diaria | alta | UC001, UC002, UC003, UC005, UC006, UC007, UC008 |
alta | necesarios para paridad economica |
| impuestos historicos | IVA, IIBB y otros importes calculados preservados por linea |
A | SOURCE-003 / Tabla 2 |
sistema origen | administracion comercial | diaria | alta | UC005, UC006, UC007, UC008, UC009 |
alta | respetar precision y reglas de signo |
| costo historico de venta | Costo asociado a la linea al momento de la transaccion | B | SOURCE-003 / Tabla 2 |
sistema origen | direccion comercial / administracion | diaria | media | UC006, UC007, UC008, UC009 |
alta | no reconstruir luego desde PRODUCTS vigente |
| marca historica en venta | Marca preservada dentro de la transaccion | B | SOURCE-003 / Tabla 2 |
sistema origen | direccion comercial | diaria | media | UC001, UC002, UC003, UC006, UC007, UC008, UC009 |
alta | protege cambios futuros del maestro |
| peso, volumen y bultos historicos | Contexto logistico preservado por linea de venta | B | SOURCE-003 / Tabla 2 |
sistema origen | operaciones / administracion comercial | diaria | media | UC004, UC005, UC008, UC009 |
alta | no recalcular despues desde el producto vigente |
| costo | Costo asociado al item vendido | B | costos / ventas | sistema origen | direccion comercial / administracion | diaria o por vigencia | media | UC006, UC007, UC008 |
alta | validar vigencia y cobertura |
| margen estimado | Aproximacion de margen comercial | D | calculado desde venta y costo | capa derivada futura | direccion comercial | diaria o por analisis | baja-media | UC006, UC007, UC008 |
media | explicitar como estimado |
| rentabilidad estimada | Lectura derivada de rentabilidad | D | capa derivada futura | capa derivada futura | direccion comercial / gerencia | diaria o por analisis | baja-media | UC006, UC007, UC008 |
media | no tratar como verdad exacta |
| stock actual | Stock vigente observado | A | stock / ERP |
sistema origen | compras / operaciones | diaria o intradiaria | media-alta | UC004, UC007, UC008, UC009 |
alta | validar si es teorico o vendible |
| stock diario al cierre | Snapshot diario de stock | C | futura captura o export diario | proceso futuro de captura | compras / operaciones | diaria | baja | UC004, UC005, UC008, UC009 |
media | clave para historico de disponibilidad |
| fecha/hora de corte | Momento del snapshot de stock | F | stock / proceso futuro | sistema origen / proceso futuro | operaciones | diaria o intradiaria | media | UC005, UC009 |
alta | sin fecha de corte el stock pierde valor |
| SKU en stock | SKU del registro de stock |
A | stock / ERP |
sistema origen | operaciones | diaria o intradiaria | alta | UC004, UC005, UC008, UC009 |
alta | debe cruzar con maestro |
| unidades en stock | Unidades disponibles o teoricas | A | stock / ERP |
sistema origen | operaciones | diaria o intradiaria | media-alta | UC004, UC005, UC008, UC009 |
alta | aclarar disponible vs teorico |
| bultos en stock | Equivalencia en bultos del stock | B | stock / conversion producto | sistema origen | operaciones | diaria o intradiaria | media | UC004, UC005, UC009 |
media | dependiente de conversion valida |
| estado de faltante | Senal de disponibilidad critica | D | derivacion futura / operaciones | capa derivada futura | operaciones / compras | diaria | media | UC004, UC005, UC007, UC009 |
media | no cargar sin criterio explicito |
| costo vigente | Ultimo costo aceptado como vigente | A | costos / listas internas | sistema origen | administracion / direccion comercial | por cambio | media | UC006, UC007 |
alta | costo sin fecha no sirve |
| fecha ultima actualizacion costo | Fecha de vigencia del costo | B | costos / listas internas | sistema origen | administracion | por cambio | media | UC006, UC007 |
alta | dato critico para comparabilidad |
| precio lista vigente | Precio propio vigente | A | listas de precio | sistema origen | direccion comercial / administracion | por cambio | media-alta | UC006, UC007 |
alta | debe quedar separado de competencia |
| fecha vigencia precio | Fecha desde la que aplica el precio | B | listas de precio | sistema origen | administracion | por cambio | media | UC006, UC007 |
alta | precio sin vigencia no es util |
| precio especial si aplica | Precio especial negociado | B | listas / acuerdos comerciales | direccion comercial / administracion | direccion comercial | por evento | baja-media | UC006, UC007 |
media | usar con contexto y owner |
| fecha relevamiento | Fecha del relevamiento de mercado | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | baja-media | UC004, UC006, UC009 |
media | todo relevamiento debe tener fecha |
| vendedor relevamiento | Vendedor que informa | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC006, UC009 |
media | ownership humano claro |
| cliente relevamiento | Cliente vinculado al relevamiento | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC006 |
media | puede ser opcional segun contexto |
| SKU/marca relevada | Item o marca observada | C | formulario futuro / vendedor | vendedor | direccion comercial | por evento | media | UC004, UC006, UC009 |
media | permitir granularidad flexible |
| precio esperado | Precio que el cliente considera razonable | C | relevamiento vendedor | vendedor | supervision comercial | por evento | baja | UC004, UC006 |
media | dato subjetivo; no tratar como hecho |
| precio competencia | Precio observado en competencia | C | relevamiento vendedor | vendedor | direccion comercial | por evento | baja-media | UC006 |
media | declarar contexto de comparabilidad |
| fecha compra competidor | Fecha de compra a competidor informada | C | relevamiento vendedor / cliente | vendedor | supervision comercial | por evento | baja | UC006 |
baja-media | puede no existir siempre |
| fecha oferta competidor | Fecha de oferta o promocion observada | C | relevamiento vendedor | vendedor | supervision comercial | por evento | baja | UC006 |
baja-media | clave para no leer precios fuera de tiempo |
| comentario relevamiento | Comentario libre contextual | C | relevamiento vendedor | vendedor | supervision comercial | por evento | baja-media | UC004, UC006, UC009 |
media | no reemplaza campos estructurados |
| nivel de confianza relevamiento | Grado de confianza del relevamiento | F | formulario futuro | vendedor | supervision comercial | por evento | media | UC004, UC006, UC009 |
media | ayuda a filtrar lecturas debiles |
| fecha informe demanda | Fecha del reporte de demanda no atendida | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC007, UC009 |
alta | base minima de la captura manual |
| cliente demanda | Cliente afectado por demanda no atendida | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC007 |
alta | clave para accion comercial |
| vendedor demanda | Vendedor que reporta la demanda | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC007, UC009 |
alta | ownership del reporte |
| SKU/marca solicitada | Producto o marca pedida y no atendida | C | formulario futuro / vendedor | vendedor | direccion comercial | por evento | media | UC004, UC007, UC009 |
alta | permitir item o marca si no hay SKU |
| cantidad solicitada opcional | Cantidad estimada requerida | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | baja | UC004, UC009 |
media | opcional para no bloquear captura |
| precio esperado opcional | Precio que el cliente hubiera aceptado | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | baja | UC004, UC006 |
baja-media | no debe exigirse siempre |
| causa probable | Motivo probable de no atencion | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | baja-media | UC004, UC009 |
media | idealmente normalizada |
| sustituto aceptado si/no | Si hubo sustitucion aceptada | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC006, UC007 |
media | separa perdida total de parcial |
| quiere aviso de reposicion si/no | Preferencia de seguimiento del cliente | C | formulario futuro / vendedor | vendedor | supervision comercial | por evento | media | UC004, UC007, UC009 |
baja-media | util para accion futura |
| fecha accion | Fecha de accion comercial | C | registro futuro de acciones | vendedor / supervisor / direccion | direccion comercial | por evento | media | UC003, UC007 |
media | trazabilidad minima |
| tipo accion | Tipo normalizado de accion comercial | C | registro futuro de acciones | vendedor / supervisor / direccion | direccion comercial | por evento | media | UC003, UC007 |
media | requiere catalogo futuro |
| responsable accion | Persona o rol responsable | E | registro futuro de acciones | vendedor / supervisor / direccion | direccion comercial | por evento | alta | UC003, UC007 |
media | ownership obligatorio |
| cliente objetivo accion | Cliente alcanzado por la accion | C | registro futuro de acciones | vendedor / supervisor | supervision comercial | por evento | media | UC003, UC007 |
media | puede ser cliente, marca o proveedor |
| SKU/marca/proveedor objetivo | Foco de la accion | C | registro futuro de acciones | vendedor / supervisor | direccion comercial | por evento | media | UC003, UC007, UC009 |
media | declarar sujeto principal |
| resultado esperado | Resultado que se busca obtener | E | registro futuro de acciones | responsable accion | direccion comercial | por evento | media | UC003, UC007 |
media | conecta accion y aprendizaje |
| resultado observado | Resultado real posterior | C | registro futuro de acciones | responsable accion | direccion comercial | por evento | baja-media | UC003, UC007 |
media | base del aprendizaje comercial |
| objetivo | Objetivo comercial declarado | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | alta | UC002, UC003, UC005, UC007, UC008, UC009 |
media | no es transaccion, es gobierno |
| meta | Expresion medible del objetivo | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | alta | UC002, UC003, UC005, UC007, UC008, UC009 |
media | requiere owner y ventana |
| owner | Responsable del objetivo o meta | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | alta | UC002, UC003, UC005, UC007, UC008, UC009 |
media | no se aceptan metas sin owner |
| ventana | Periodo de vigencia de la meta | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | alta | UC002, UC003, UC005, UC007, UC008, UC009 |
media | mensual, trimestral, etc. |
| unidad de medida | Unidad usada para evaluar la meta | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | alta | UC002, UC003, UC005, UC007, UC008, UC009 |
media | volumen, clientes, mix, etc. |
| estado meta | Estado de cumplimiento de la meta | D | capa derivada futura / gobierno | capa derivada futura | direccion comercial | semanal o por corte | media | UC003, UC007 |
baja-media | no es dato fuente primario |
| criterio de cumplimiento | Regla funcional para decidir si se cumple | E | direccion comercial | direccion comercial | gerencia comercial | por ventana | alta | UC003, UC005, UC007 |
media | evita interpretaciones ambiguas |
| fecha calendario | Fecha de referencia del calendario | A | calendario oficial / capa tiempo | sistema origen / calendario futuro | direccion comercial / administracion | diaria | alta | UC005 |
alta | grano base temporal |
| dia calendario | Numero o etiqueta del dia calendario | A | calendario oficial | sistema origen | administracion | diaria | alta | UC005 |
media | apoyo descriptivo |
| dia laborable teorico | Si el dia era laborable en teoria | B | calendario oficial | sistema origen | administracion | anual o por calendario | alta | UC005 |
alta | no equivale a dia trabajado real |
| feriado si/no | Marca de feriado | B | calendario oficial | sistema origen | administracion | anual o por calendario | alta | UC005 |
alta | relevante para comparabilidad |
| comprobantes emitidos si/no | Evidencia de actividad documental | D | derivacion desde comprobantes | capa derivada futura | administracion comercial | diaria | media-alta | UC005 |
alta | regla APV de evidencia comercial |
| dia trabajado real si/no | Lectura funcional de dia realmente trabajado | D | derivacion futura desde calendario y comprobantes | capa derivada futura | direccion comercial | diaria | media | UC005, UC009 |
alta | no asumir automatico sin criterio |
| recomendacion | Texto o etiqueta de la recomendacion | D | capa derivada futura | observer futuro | direccion comercial | por evento | baja-media | UC007 |
baja-media | salida futura, no fuente primaria |
| origen recomendacion | Senales y UC que la originan |
F | capa derivada futura | observer futuro | direccion comercial | por evento | media | UC007 |
baja-media | trazabilidad obligatoria |
| evidencia recomendacion | Resumen de evidencia usada | F | capa derivada futura | observer futuro | direccion comercial | por evento | media | UC007 |
baja-media | no recomendar sin evidencia visible |
| prioridad recomendacion | Orden relativo de atencion | D | capa derivada futura | observer futuro | direccion comercial | por evento | baja-media | UC007 |
baja-media | no es hecho observado |
| responsable recomendacion | Actor objetivo o owner | E | capa derivada futura / direccion comercial | observer futuro / direccion comercial | direccion comercial | por evento | media | UC007 |
baja-media | debe quedar claro quien decide |
| estado recomendacion | Estado de ejecucion humana | C | seguimiento futuro | actor humano responsable | direccion comercial | por evento | baja-media | UC003, UC007 |
baja | sirve para recomendado vs ejecutado |
| resultado recomendacion | Resultado posterior observado | C | seguimiento futuro | actor humano responsable | direccion comercial | por evento | baja | UC003, UC007 |
baja | no confundir con promesa |
6. Matriz dato vs UC001-UC009¶
| Bloque de datos | UC001 |
UC002 |
UC003 |
UC004 |
UC005 |
UC006 |
UC007 |
UC008 |
UC009 |
|---|---|---|---|---|---|---|---|---|---|
| clientes y estado comercial | X | X | X | X | X | X | |||
| vendedores, supervisores y zonas | X | X | X | X | X | X | X | X | |
productos, SKU, marcas y proveedores |
X | X | X | X | X | X | X | X | |
| categorias y unidades por bulto | X | X | X | X | |||||
| ventas historicas | X | X | X | X | X | X | X | X | |
| comprobantes y estado documental | X | X | X | ||||||
| stock actual | X | X | X | X | X | ||||
| stock diario al cierre | X | X | X | X | |||||
| costos y precios propios vigentes | X | X | X | ||||||
| precios / contexto de competencia | X | X | X | ||||||
| relevamientos de vendedores | X | X | X | ||||||
| demanda no atendida | X | X | X | ||||||
| acciones comerciales y resultados | X | X | |||||||
| objetivos, metas y owners | X | X | X | X | X | X | |||
| calendario operativo | X | X | |||||||
| recomendaciones y trazabilidad | X | X |
Lectura funcional:
UC001depende sobre todo de identidad comercial consistente y ultima compraUC002necesita cartera, producto, marca y foco comercial vigenteUC003depende de registrar accion, resultado y responsableUC004necesita captura manual minima mas contexto de stockUC005exige capa temporal gobernadaUC006requiere fecha y vigencia en todos los precios y costosUC007solo es responsable si hereda senales confiables de los demasUCUC008depende de surtido historico y catalogo limpioUC009necesita unir stock, faltantes, proveedor y evidencia de reclamo
7. MVP de datos para primera implementacion futura¶
Nivel MVP 1¶
Incluye:
- clientes
- vendedores
- productos
- marcas
- proveedores
- ventas historicas
- comprobantes
- stock actual
- costos y precios propios vigentes
UC activables parcialmente:
UC001: siUC002: siUC005: si, en lectura basica por comprobantesUC006: si, en lectura interna de costo y precio propioUC008: si, en version inicialUC009: si, con foco en stock actual y proveedorUC007: solo de forma muy limitada y siempre explicada
Nivel MVP 2¶
Agrega:
- stock diario al cierre
- calendario operativo
- demanda no atendida manual
- relevamiento simple de vendedores
UC que ganan traccion:
UC004: pasa de intuicion a lectura funcional minimaUC005: mejora fuerte por dias efectivos y cortes de stockUC006: gana contexto temporal y territorialUC009: mejora al poder mirar faltantes y reclamos en el tiempoUC007: mejora, pero sigue dependiendo de calidad de origen
Nivel MVP 3¶
Agrega:
- precios competencia
- acciones comerciales
- resultados de acciones
- objetivos y metas
- sustituciones
UC que se vuelven mas maduros:
UC003: gana memoria comercial y aprendizaje realUC006: mejora comparabilidad de pricingUC007: pasa a tener una base mas seria para priorizacionUC004: diferencia mejor venta perdida, sustitucion y oportunidad estimadaUC002yUC008: se conectan mejor con foco comercial gobernado
Regla de priorizacion:
conviene abrir primero lo que hace confiables UC001, UC002, UC005,
UC006, UC008 y UC009, antes de intentar sofisticar UC007.
7.1 Aclaracion de fuente de ventas calculadas¶
Para APV, el contrato deja explicitamente asentado que la capa transaccional
de ventas y comprobantes debera respetar una fuente calculada y no una lectura
cruda del ERP:
SOURCE-003: ventas / comprobantes calculados desde la query compartida porGabi, registrada en esta iteracion comovNext candidate- salida principal documentada:
Tabla 2 - Detalle items (composicion BalanceCtaCteFinal) - autoridad candidata preservada:
source-authority/SOURCE-003-VENTAS-VNEXT-TABLA2-AUTHORITY.sql - autoridad anterior preservada:
source-authority/SOURCE-003-VENTAS-TABLA2-AUTHORITY.sql - inventario real de
Tabla 2 vNext:SOURCE-INVENTORY-RESULTS-003.md - decision de identidad de linea:
design/SOURCE-003-LINE-IDENTITY-DECISION.md - diseno
DDLdocumental futuro:design/SOURCE-003-SALES-ITEMS-DDL-DESIGN.md - analisis de deriva confirmado:
SOURCE-003-DRIFT-ANALYSIS-001.md
Reglas de contrato:
SOURCE-003debe tratar la query compartida porGabicomo autoridad funcional estricta de calculo y como candidatavNextpara syncSOURCE-003 / SGC Ventasdebe tratarse como fuente viva, no como historico congelado por fecha de comprobante- el
SGCpuede modificar, anular, refacturar o ajustar comprobantes aproximadamente hasta7dias hacia atras por liquidacion de entregas, rechazos de clientes, anulaciones, refacturacion, descuentos posteriores, notas de credito, ajustes de cuenta corriente y cambios operativos de cobro/entrega - no debe usarse incremental simple basado solo en
ultima fecha cargada - una fecha ya cargada puede cambiar si se reextrae desde
SGCvivo - una linea puede aparecer, cambiar valores, desaparecer de la extraccion activa, quedar anulada o recibir nota de credito o ajuste posterior
SOURCE-003debe sincronizar soloTabla 2Tabla 1,Tabla 3,Tabla 4,Tabla 5yTabla 6deben tratarse como reportes derivados reconstruibles desdeTabla 2- la base sincronizada conceptual futura recomendada es
source_003_sales_items - esa base debe preservar datos
raw, datos normalizados, metricas calculadas por item y trazabilidad de sync - el
DDLdocumental futuro de esa base ya queda preservado como diseno revisable; no es migracion ni autorizacion de ejecucion - la query
vNextya cuenta con inventario real controlado deTabla 2, pero no queda declarada como runtime productivo ni comoDDLejecutable - el estado oficial de preservacion de autoridad queda registrado en
source-authority/SOURCE-AUTHORITY-REGISTRY.md - no debe reemplazar calculos por campos crudos del
ERP - no debe tratar
V_VENTAScomo autoridad suficiente por si sola - debe respetar la composicion completa entre
V_VENTAS,VCLIENTES,PRODUCTS,VPROVEEDORESy calculos - no debe simplificar
IVA,IIBB, descuentos,CMV, notas de credito, guias, motivos niBalanceCtaCteFinal - debe preservar suficiente precision para evitar diferencias futuras por redondeo
- debe modelar el grano esperado como:
fecha + cliente + comprobante + documento + SKU + seller_transactional + linea_tecnica - debe contemplar una
line_keyo clave funcional robusta para no colapsar lineas cuando un comprobante repite el mismoSKU - la decision humana acepta
line_key_v4en estadoAMARILLO ACEPTADOpara sync inicial analitico de ventas itemizadas line_key_v4se compone con:fecha,hora_origen_sgc,tipo_comp,nro_comp,tipo_doc_int,nro_int_doc,documento,codigo_cliente,sku,vendedoryline_sequence_v1- no existe
line_id_sourcefisico disponible en la vistaSGCaccesible line_sequence_v1debe preservarse como columna tecnica de pipeline basada enROW_NUMBER(); resuelve unicidad agregada, pero no representa identidad fisicaERP- el alcance de
line_key_v4esBusiness Observer, analytics,BI,IAyML; no es auditoria legal perfecta de renglonesERP - la regla preservada
source_row_hash_v1debe cubrir las68columnas reales deTabla 2 V2segun el mapping CSV/PostgreSQL vigente, incluyendo identidad documental, cliente, vendedor, producto, proveedor, entrega, reparto, unidades, precios, descuentos, impuestos, importes,CMV, costos, canal, ramo, motivo de devolucion, peso, volumen y bultos - debe preservar contexto historico de transaccion: costo, proveedor, marca, precio, descuentos, impuestos, peso, volumen y bultos
- cualquier sync futuro debera combinar carga historica inicial, snapshot
diario, ventana movil inicial sugerida de
10dias y trazabilidad de cambios - la persistencia futura debera hacer
upsertportenant_id + line_key, compararsource_row_hash, refrescarlast_seen_atsi no cambia, actualizar si cambia y marcarmissing_from_sourcesi deja de aparecer en una extraccionfullo ventana controlada - no debe hacer
hard deletesobre ventas sincronizadas - el freeze date de pilotos, conciliaciones y cortes auditables debe salir del
snapshot tomado, no de una consulta posterior a
SGCvivo - debe preservar el estado raw del comprobante si la salida o una extension de autoridad lo expone
- antes de produccion final, se debe revalidar
line_key_v4en backfill o ventana mayor adicional, confirmar escalas numericas, schema destino, permisos y particionado por fecha
Tablas derivadas futuras recomendadas desde source_003_sales_items:
analytics_sales_dailyanalytics_sales_by_seller_dailyanalytics_sales_by_customer_dailyanalytics_sales_by_product_dailyanalytics_sales_by_brand_dailyanalytics_sales_by_supplier_dailyanalytics_sales_rejections_dailyanalytics_cmv_margin_dailyanalytics_sales_logistics_daily
7.2 Aclaracion de fuentes de stock futuras¶
Para APV, el contrato deja explicitamente separadas dos capas futuras:
SOURCE-002: maestro de productos vigente y fuente base de stock actual, proveedor, costos, precios y logistica comercialSOURCE-002C: snapshot diario de inventario al cierre aproximado de17:00SOURCE-002D: stock intradiario liviano con frecuencia funcional sugerida de10 minutos
La separacion es obligatoria porque:
- una capa sirve para historia diaria gobernada
- la otra sirve para estado vivo y deteccion intradiaria de reposicion
La frontera con SOURCE-002 tambien es obligatoria porque:
SOURCE-002es la autoridad vigente del maestro de productos- la query preservada de
SOURCE-002queda confirmada porGabicomo autoridad vigente de ahora en adelante tenant_id + SKUqueda documentado como clave canonica del dominio producto- todo dato que salga de
SOURCE-002debe leerse como atributo, medicion, relacion vigente o relacion historica delSKU SKU NOT IN ('0124', '3857', '3998', '3793')queda documentado como la primera lista conocida de exclusiones operativas- esos
SKUse excluyen porque pueden representar articulos usados para operaciones internas o no tradicionales de compra/venta y no productos comerciales normales SOURCE-002Cagrega historia diariaSOURCE-002Dagrega seguimiento intradiario liviano
Reglas de contrato:
SOURCE-002sigue siendo la fuente base vigente para stock actual dentro del maestro de productos- cualquier futuro script de sincronizacion de
SOURCE-002debera tratar la lista de exclusiones operativas como configurable SOURCE-002Cno reemplazaSOURCE-002DSOURCE-002Dno reemplazaSOURCE-002CSOURCE-002Cno reemplazaSOURCE-002SOURCE-002Dno reemplazaSOURCE-002- ninguna de las dos implica todavia implementacion, tabla final, script
definitivo ni
API
7.3 Separacion futura de producto, stock y valores economicos¶
Sin disenar tablas reales, el contrato recomienda esta separacion conceptual
futura para Postgres:
- producto maestro:
identidad estable del
SKU, marca, categoria, proveedor, estado, unidades por bulto,PLU, logistica y atributos relativamente lentos - stock actual:
ultima observacion intradiaria liviana por
SKU, con timestamp y origen - stock historico diario:
fotografia diaria por
SKUcon corte de cierre y contexto minimo de producto - listas de precios:
capa separada para precios por lista y por
SKU, con vigencia y trazabilidad - costos: capa separada para costo vigente y sus cambios con fecha efectiva
- impuestos:
capa separada o bloque economico separado para
IVAy otros atributos fiscales que cambien en el tiempo - margenes y descuentos: capa separada para margen, descuentos de compra, descuento permitido y reglas comerciales variables
Regla conceptual:
tenant_id + SKUdebe seguir siendo la ancla comun entre todas las capas futuras derivadas del maestro de productos- no conviene guardar todo dentro de una sola entidad de producto
- tampoco conviene historizar cada dominio con el mismo nivel de detalle
- el detalle historico debe responder a cambio real y utilidad comercial
Documento de soporte:
SOURCE-002-FUTURE-LAYER-MAPPING.md: baja esta separacion a una matriz de campos y capas futuras recomendadasSOURCE-002-ECONOMIC-LAYER.md: cierra la decision de modelar listas de precios como filas normalizadas porSKU+lista_codigoy no como columnas fijasL1..L9en la capa destino principal; tambien documenta queCostoListaProveedores precio de lista proveedor, queDcto Compra 1..3son descuentos encadenados y queCostoes el costo unitario neto final a pagar al proveedor; ademas deja el ejemplo real deL7compartido porGabipara validar el patron repetibleMargenLn,PrecioLn,IVAPrecioLnyPrecioNetoLn
7.4 Regla documental para precios, costos, impuestos y margenes¶
Como estos valores pueden cambiar durante el dia, la recomendacion documental es una combinacion liviana:
- dentro del producto maestro: solo el ultimo valor vigente visible para lectura operativa actual
- en snapshot diario: un valor de cierre opcional y resumido cuando haga falta contexto historico
- en historial por cambio: la trazabilidad principal de listas, costos, impuestos, margenes y descuentos cuando cambie un valor
Esta combinacion es la mas prudente porque:
- evita que el maestro pierda utilidad operativa
- evita que el snapshot diario cargue demasiada historia
- evita perder cambios intradiarios relevantes si solo se pisa el ultimo valor
Lectura contractual:
- precio y costo no deberian vivir solo dentro del maestro
- precio y costo tampoco deberian vivir solo en snapshot diario
- el historico por cambio es el lugar documental correcto para trazabilidad fina
SOURCE-002Dno debe transportar precio, costo, impuesto, margen ni descuentoSOURCE-002Cpuede conservar stock de cierre y un contexto economico resumido, pero no debe reemplazar los historiales por cambio
7.5 Cierre de cobertura documental de SOURCE-002¶
Queda documentado adicionalmente que la autoridad preservada de
SOURCE-002 devuelve 81 campos en su SELECT vigente y que los 81
campos quedan:
- clasificados documentalmente
- relacionados por
tenant_id + SKU - asignados a una capa futura conceptual
- tipificados como vigente, historico util, snapshot proyectado o auditoria futura segun corresponda
Referencia oficial del detalle campo por campo:
SOURCE-002-FUTURE-LAYER-MAPPING.md
Resultado documental:
- no quedan campos de
SOURCE-002fuera de documentacion - no quedan campos de
SOURCE-002sin relacion clara contenant_id + SKU - no quedan campos de
SOURCE-002sin capa futura asignada
Cobertura documental SOURCE-002: 100% de campos del SELECT clasificados.
8. Futuro diseno Postgres¶
Sin disenar SQL ni nombres finales de tablas productivas, este contrato
deja estas reglas:
- toda tabla futura debe alinearse con
docs/governance/standards/DATA-DESIGN-STANDARD.md - cada entidad funcional podra transformarse luego en tablas
Postgres - cualquier nombre de tabla mencionado en el futuro durante diseno conceptual debera considerarse tentativo y no definitivo
- cada tabla futura debera declarar al menos origen, owner, fecha de actualizacion y estado de validacion
- cada tabla futura debera respetar separacion tenant y contexto comercial
- no se deben crear tablas sin caso de uso asociado
- no se debe crear una tabla solo porque el sistema origen la tenga
- la estructura futura debe diferenciar dato real, relevado, estimado y calculado
- las entidades de auditoria y trazabilidad son parte del contrato, no un agregado opcional
Aplicacion contractual minima para APV:
created_atyupdated_atinternos son obligatorios salvo excepcion documentadafecha_alta_sgcno reemplazacreated_atfecha_modificacion_origen, si existe, debe vivir separada deupdated_atsource_row_hashdebe evaluarse cuando convenga detectar cambios sin comparar campo por camposync_batch_iddebe evaluarse para trazabilidad de sync y auditorialast_seen_atdebe evaluarse para reconciliacion y desaparicion de filas en origenfeatures_jsonymetadata_jsonsolo deben usarse para metadata flexible o preparacion analitica no criticaJSONno debe reemplazar columnas criticas del negocio
Actualizacion documental 2026-06-10:
- el primer diseno fisico conceptual
PostgreSQLparaBusiness Observer APVqueda documentado endocs/tenants/alpuntodeventa/business-observer/design/POSTGRES-PHYSICAL-ARCHITECTURE.md - ese documento baja este contrato y el
DATA-DESIGN-STANDARDa grupos de tablas futuras para sync, auditoria, clientes, productos, ventas, territorio y analytics - no crea
DDL, migraciones, tablas, queries ni vistas fisicas - preserva como pendientes la validacion real de
Tabla 2, la conciliacion contraTabla 1/3/4/5/6, la preparacion piloto/documental deline_key_v4, permisos y performance real - el
DDLdocumental futuro desource_003_sales_itemsqueda preservado endocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-DDL-DESIGN.mdy su SQL documental no ejecutable endocs/tenants/alpuntodeventa/business-observer/design/sql/001_source_003_sales_items_design.sql
9. Futuro diseno de scripts de sincronizacion¶
Sin crear scripts, este contrato define que cada script futuro debera documentar como minimo:
- nombre
- origen
- destino
- frecuencia
- campos esperados
- validaciones
- manejo de errores
- evidencia de ultima corrida
- owner
- casos de uso afectados
Reglas funcionales:
- ningun script debera cargar datos sin identificar el tenant
- ningun script debera promover a dato real algo que era relevado o estimado
- ningun script debera ocultar errores de cobertura, duplicado o vigencia
- si un script sincroniza
SOURCE-001, no debera filtrar la extraccion base a soloCLIENTE ACTIVO - si un script sincroniza
SOURCE-001, debera preservar en la base sincronizadaCLIENTE ACTIVO,CLIENTE SUSPENDIDOyCLIENTE DE BAJA - si un script sincroniza
SOURCE-001, debera guardarEstadocomoestado_rawy derivar el estado operativo en una capa posterior o explicitamente trazada - si un script sincroniza
SOURCE-001, debera aplicar filtros de venta o facturacion solo en vistas o capas de consumo derivadas y no en la base sincronizada - si un script sincroniza
SOURCE-001, debera distinguir entre baja comercial explicita y desaparicion completa del registro en una extraccion - si un script sincroniza
SOURCE-001, no debera habilitar hard delete por baja comercial - si un script sincroniza
SOURCE-002, debera externalizar la lista deSKUexcluidos como regla operativa configurable y trazable - si un script sincroniza
SOURCE-003, debera reprocesar una ventana movil controlada, sugerida inicialmente de10dias - si un script sincroniza
SOURCE-003, debera usarupsertportenant_id + line_keyy compararsource_row_hash - si un script sincroniza
SOURCE-003, debera refrescarlast_seen_atpara filas sin cambios y actualizar la fila cuando cambiesource_row_hash - si un script sincroniza
SOURCE-003, debera marcarmissing_from_sourcecuando una linea deje de aparecer dentro de una extraccionfullo ventana controlada - si un script sincroniza
SOURCE-003, no debera hacerhard delete - si un script sincroniza
SOURCE-003, debera congelar fechas piloto desde snapshot y no desde una relectura posterior deSGCvivo - toda corrida futura debera dejar evidencia trazable para auditoria
9.1 Rutina futura segura y liviana¶
Rutina documental recomendada:
- alta frecuencia:
SOURCE-002Dsolo para stock intradiario liviano - una vez por dia:
SOURCE-002Cpara snapshot diario de stock y contexto minimo de producto - por cambio: listas de precios, costos, impuestos, margenes y descuentos
- opcional en cierre diario: snapshot economico resumido de cierre si negocio necesita comparar el valor con el stock del mismo dia
Regla de carga:
- consultar mas seguido solo lo que cambia rapido y es liviano
- consultar una vez por dia lo que sirve para historia comparativa
- preservar por cambio lo que perderia trazabilidad al sobrescribirse
Decision documental adicional para SOURCE-002:
tenant_id + SKUes la clave canonica del dominio producto- la capa economica principal debe normalizar listas de precios como entidad
repetible por
SKU+lista_codigo PrecioL1..PrecioL9y campos equivalentes no deben ser el diseno estructural principal de tablas futuras- si el
ERPagregaL10,L11u otras listas, el modelo principal no debe requerir cambio de estructura - la semantica de costo de compra debe preservar
CostoListaProveedorcomo precio de lista proveedor,Dcto Compra 1..3como descuentos encadenados yCostocomo costo unitario neto final Cod Proveedordebe preservarse como identificador de negocio del proveedor asociado alSKUProveedordebe preservarse como nombre o razon social legible asociado alSKUMarcadebe preservarse como atributo comercial asociado alSKU- si aparece codigo de marca en el futuro, debera preservarse junto con
Marca JSONo payload agregado solo puede usarse como cache, vista materializada o auditoria secundaria
10. Validaciones minimas futuras¶
Validaciones base requeridas:
- cantidad de registros
- fechas maximas
- duplicados
- clientes sin vendedor
- productos sin marca
- ventas anuladas excluidas
- stock negativo
- costos nulos
- precios nulos
- comprobantes fuera de periodo
- datos manuales incompletos
Lectura recomendada:
- si falla identidad comercial, se degrada
UC001,UC002yUC008 - si falla tiempo o vigencia, se degrada
UC005yUC006 - si fallan datos manuales, se degradan
UC003,UC004,UC006yUC009 UC007debe heredar bloqueos o alertas de calidad, no ignorarlos
11. Riesgos¶
Riesgos principales:
- crear tablas antes de definir datos
- confundir dato estimado con dato real
- mezclar tenants
- usar precios sin vigencia
- usar stock no confiable
- cargar datos manuales sin validacion
- sobrecargar vendedores
- construir recomendaciones con datos debiles
Riesgo rector:
querer llegar a recomendaciones maduras antes de estabilizar identidad, vigencia, calendario y disponibilidad.
12. Reglas de aceptacion de un dato¶
Un dato entra al contrato solo si:
- sirve a un
UCreal - tiene origen claro
- tiene responsable
- tiene frecuencia
- tiene uso definido
- tiene criterio minimo de calidad
Un dato no deberia entrar si:
- existe solo por intuicion tecnica
- no tiene consumidor funcional claro
- mezcla
APVcon otro tenant - no puede distinguirse de una estimacion o comentario
- no tiene nadie responsable de explicarlo o corregirlo
12.1 Regla de historizacion por valor de decision¶
Todo dominio de datos futuro debe evaluar, desde diseno, si necesita historizacion por valor de decision.
Aplicacion minima ya documentada para APV:
- cambios de costo
- cambios de precio y listas
- cambios de
IVA - cambios de margen y descuento
- quiebres de stock
- recuperaciones de stock
- ingresos de mercaderia
- snapshots diarios utiles
Criterio contractual:
- si el dato solo aporta lectura actual, puede quedar como vigente
- si el dato ayuda a comparar en el tiempo, explicar comportamiento o disparar alertas, debe contemplar historico por cambio, vigencia o snapshot
- la historizacion debe ser proporcionada al uso y no una acumulacion sin criterio
13. Proximo paso recomendado¶
El siguiente paso documental correcto, antes de cualquier implementacion, debe ser:
inventario de fuentes reales
Justificacion:
- la auditoria ya identifico que datos parecen existir y cuales faltan
- este contrato ya definio para que sirve cada dato y quien lo consume
- todavia falta confirmar campo por campo que existe de verdad en
APV - sin ese inventario no conviene pasar todavia a mapeo origen-destino completo
- tampoco conviene disenar conceptualmente
Postgressin saber que calidad y cobertura real tienen las fuentes
Orden recomendado:
- inventario de fuentes reales
- mapeo origen-destino
- diseno conceptual
Postgres
Actualizacion al 2026-06-08:
- el primer mapeo origen-destino de
SOURCE-001ya queda documentado enmappings/SOURCE-001-CLIENTES-MAPPING.md - eso no reemplaza el inventario real pendiente de otras fuentes ni habilita
cerrar todavia diseno fisico final de
Postgres
Actualizacion al 2026-06-10:
- el primer diseno fisico conceptual de
PostgreSQLya queda documentado endesign/POSTGRES-PHYSICAL-ARCHITECTURE.md - sigue pendiente convertir ese diseno en
DDL, migraciones, carga inicial y validaciones reales antes de cualquier implementacion
Validacion de coherencia¶
Resultado:
- no contradice la auditoria de datos:
SI - no duplica el rol de
DATA-NEEDS.md:SI;DATA-NEEDSqueda como sintesis y este documento como contrato detallado - no disena
SQL:SI - no disena
APIs:SI - no disena
IA:SI - no declara implementacion:
SI - respeta
CorevsTenant:SI - respeta
APVvsLa Directa:SI - vincula todos los datos con
UC001aUC009:SI
Confirmaciones de alcance¶
- no se tocaron tablas
- no se crearon bases
- no se crearon scripts
- no se toco runtime
- no se toco VPS
- no se toco
Docker - no se toco
OpenClaw runtime - no se toco
Portainer - no se toco
NPM - no se disenaron
APIs - no se diseno
IA