Business Observer - Al Punto de Venta¶
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
Estado: definicion documental con inventario real iniciado
Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/README.md
portal_visible = yes
Autoridad funcional principal:
docs/tenants/alpuntodeventa/business-observer/BUSINESS-OBSERVER-GOVERNANCE-MODEL.md
Que es¶
Este espacio documenta el Business Observer del tenant alpuntodeventa.
Su objetivo es ordenar, en lenguaje simple, como APV quiere usar el observer
para leer riesgo comercial, crecimiento y prioridades de accion.
La capa Customer Ownership Analytics agrega la lectura conceptual de quien
trabaja realmente cada cliente sin reemplazar la cartera formal ni la autoria
real de las ventas.
La capa Blueprints define los dominios funcionales
principales del Business Observer APV antes de tablas, SQL, migraciones o
implementacion.
Blueprints funcionales vigentes:
Visibilidad en Knowledge Portal¶
Este espacio tenant queda clasificado como portal_visible = yes para su
overview, governance funcional, blueprints principales, contratos de datos y
evidencia relevante.
Criterio local:
Business Observer README, governance model y blueprints principales:portal_visible = yes- contratos funcionales de datos:
portal_visible = yes - disenos estables y evidencia relevante:
portal_visible = yesoportal_visible = technical_reference, segun funcion documental - SQL de autoridad de fuentes:
portal_visible = technical_referenceoportal_visible = internal_only, segun sensibilidad y necesidad de soporte - change packets:
portal_visible = pending_reviewoportal_visible = internal_only - runtime, seguridad, credenciales o detalle operativo sensible:
portal_visible = internal_only
Regla critica vigente para SOURCE-003:
- el piloto dedicado de
SOURCE-003queda cerrado como hitoVERDEpublicado: DDL ejecutadoVERDE, CSV preparadoVERDE, candidate loadVERDE, post-checksVERDE,1886filas cargadas y batch1827f887-9499-4579-b4f3-234d54f41f7f - la evidencia publica vive en
SOURCE-003 Pilot Load Execution 002 - la validacion DB controlada del runner quedo registrada en
SOURCE-003 Runner Preflight DB 001: el runner conecto, valido fingerprint y ejecuto elpreflightautorizado, pero el resultado funcional correcto esPREFLIGHT BLOQUEADO / TABLA NO VACIA ESPERADA POR PILOTO YA CARGADO - la validacion DB read-only de
statusquedo registrada enSOURCE-003 Runner Status DB 001: el runner valido fingerprint y ejecuto el SQL autorizado de post-checks conPASS,1886filas del batch1827f887-9499-4579-b4f3-234d54f41f7f, sin modificar datos - la semantica vigente del runner separa explicitamente:
preflight-before-loadcomo gate estricto de tabla vacia ystatus/verify-existing-pilotcomo verificacion read-only del piloto ya cargado;post-checksqueda como alias legacy destatusy ningunPASSde lectura habilita escritura - sync diaria, carga masiva y produccion final siguen
BLOQUEADAS - el proximo frente recomendado es automatizar en Python el flujo reproducible
raw -> prepared CSV; el generador ya existe con resultadoREPRODUCIBLE ESTRUCTURAL / SHA DIFERENTEpor diferencia acotada aid, y ya existe tambien un runner Python controlado para la futura orquestacionpreflight/status -> candidate load -> post-checks -> rollback, pero con modos de escritura bloqueados en esta revision porque la tabla dedicada ya tiene1886filas del batch piloto verde; tambien existe el primer skeleton del Python importer formal enSOURCE-003 Python Importer Skeleton 001, coninspect-sourceimplementado como inspeccion local read-only de raw snapshot y prepared CSV:PASS, raw sha25607092c284b5b636b8a31cd616ef5b4fa5d0ce499b81c767437842b1f7edfcbc3, prepared sha2563f16a957a79fc84d4ca37930988287cb81f05166210d057fcf8b45007f184afe,1886filas,83columnas, batch1827f887-9499-4579-b4f3-234d54f41f7f, fecha unica2026-06-09,record_status = active, CSV preparado fuera de Git, sin DB, sin SQL, sin runner y sin datos escritos;validate-preparedqueda tambien implementado como validacion local read-only del prepared historico y generated existente: ambos CSV fuera de Git, SHA256 esperados,1886filas,83columnas, batch1827f887-9499-4579-b4f3-234d54f41f7f, fecha unica2026-06-09,record_status = active,source_row_hashyline_keyno vacios, y comparacionREPRODUCIBLE ESTRUCTURAL ACEPTADOcon82/83columnas coincidentes y diferencia esperada enid; cualquier nueva lectura DB debe distinguir entrepreflight-before-loadystatus, y cualquier nueva ejecucion real sigue requiriendo un gate separado; clientes y productos siguen no iniciados - el plan controlado para el futuro
load-rawdel importer queda documentado enSOURCE-003 Importer Load Raw Plan: define alcance futuro solo paralocal-devo DB dedicada, precondiciones, fingerprint DB, batch explicito, target table gobernada, staging, transaccion, idempotencia, deduplicacion, rollback por batch, logs, auditoria, riesgos y criterios de aceptacion; decisionLOAD-RAW PLAN DOCUMENTADO / NO IMPLEMENTADO / NO EJECUTABLE; no implementa Python, no tocaPostgreSQL, no ejecuta SQL, no creaDDL, no genera CSV y no habilita sync diaria, carga masiva, produccion,OpenClaw executorni jobs automaticos - la revision tecnica documental del contrato
load-rawqueda publicada enSOURCE-003 Load Raw Technical Review: confirma que el plan respeta el contrato RAW, preserva separacionraw / core / mart, bloqueapostgres-sandboxcomo produccion y deja recomendacion finalAPTO PARA DISENAR DDL RAW / NO APTO PARA IMPLEMENTAR LOAD-RAW TODAVIA; no implementa Python, no creaDDL, no ejecuta SQL, no tocaPostgreSQLy mantiene bloqueados sync diaria, carga masiva, produccion yOpenClaw executor - el paquete
DDLRAW candidato queda publicado enSOURCE-003 Raw DDL Candidate: proponebusiness_observer.raw_source_003_sales_items, aclara quebusiness_observer.source_003_sales_itemsesPILOTOy no RAW final, incluye columnas del prepared CSV mas metadata RAW obligatorialoaded_at, clave tecnicaid, clave logica por batchtenant_id + sync_batch_id + line_key, constraints, indices, owner, grants, rollback que aborta si hay filas y post-checks conrow_count = 0; no se ejecuto SQL, no se tocoPostgreSQL, no se creo tabla real, no se modifico Python y no se habilitaload-raw - la revision tecnica del paquete
DDLRAW candidato queda publicada enSOURCE-003 Raw DDL Candidate Technical Review: resultadoAPTO PARA EJECUCION LOCAL-DEV / NO APTO PARA PRODUCCION / NO APTO PARA IMPLEMENTAR LOAD-RAW TODAVIA; confirma separacion con tabla piloto, metadata RAW obligatoria, columnas prepared CSV masloaded_at, clave tecnicaid, clave logica por batch, constraints, indices, ownership/grants,PUBLICsin privilegios, writer sinDELETE, preflight, forward, rollback y post-checks; no se ejecuto SQL, no se tocoPostgreSQL, no se creo tabla real, no se modifico Python, no se genero CSV y no se habilita carga de datos - el forward
DDLRAW local-dev queda ejecutado y publicado enSOURCE-003 Raw DDL Local Dev Forward 001:preflight PASS,forward OKypost-checks PASScontraopenclaw_business_observer_dev; la tablabusiness_observer.raw_source_003_sales_itemsqueda creada vacia conrow_count = 0, owneropenclaw_bo_admin,84columnas,21constraints,9indices, writer sinDELETE, reader read-only yPUBLICsin privilegios; no se cargo dato, no se toco Python, no se ejecuto runner/importerload-raw, no se genero CSV y produccion sigue bloqueada - el plan del futuro
promote-corequeda documentado enSOURCE-003 Importer Promote Core Plan: define la promocion futura desdebusiness_observer.raw_source_003_sales_itemshacia la tabla candidatabusiness_observer.core_source_003_sales_items, limitada al batch1827f887-9499-4579-b4f3-234d54f41f7f, con reglas de normalizacion, tipos, claves logicas, idempotencia, deduplicacion, rollback/rebuild por batch, validaciones pre/post y relacion futura con mart; decisionPROMOTE-CORE PLAN DOCUMENTADO / NO IMPLEMENTADO / NO EJECUTADO, apto para disenarDDL COREcandidato, no apto para produccion ni sync diaria - el forward
DDLCORE local-dev queda ejecutado y publicado enSOURCE-003 Core DDL Local Dev Forward 001:preflight PASS,forward OKypost-checks PASScontraopenclaw_business_observer_dev; la tablabusiness_observer.core_source_003_sales_itemsqueda creada vacia conrow_count = 0, owneropenclaw_bo_admin,66columnas,22constraints,10indices, writer sinDELETE, reader read-only yPUBLICsin privilegios; RAW conserva el batch autorizado de1886filas segun preflight y no hubo escrituras contra RAW ni tabla piloto; no se cargo dato, no se toco Python, no se ejecutopromote-core, runner/importer ni CSV, y produccion sigue bloqueada - el gate documental para el futuro
promote-core --executelocal-dev queda publicado enSOURCE-003 Promote Core Local Dev Execution Gate: define DB permitidaopenclaw_business_observer_dev, RAW sourcebusiness_observer.raw_source_003_sales_items, CORE targetbusiness_observer.core_source_003_sales_items, batch1827f887-9499-4579-b4f3-234d54f41f7f,RAW batch rows = 1886,CORE row_count inicial = 0,1886filas esperadas a promover,66columnas CORE, fingerprint DB obligatorio,postgres-sandboxprohibido, confirmaciones futuras, transformacion RAW -> CORE, idempotencia, bloqueo por batch duplicado, transaccion, validaciones pre/post, rollback/rebuild por batch, evidencia minima y criterioPASS/FAIL/BLOCKED; decision documentalGATE PROMOTE-CORE DOCUMENTADO / NO EJECUTADO, no apto para produccion ni sync diaria - el gate execute del importer queda implementado y publicado en
SOURCE-003 Promote Core Execute Gate Implementation 001:promote-coresigueDRY_RUN;promote-core --executeexige confirmaciones explicitas y quedaBLOCKEDsi faltan o son incompletas; preservadb_write=false,data_written=false,sync_enabled=false, sin modificar RAW, sin cargar CORE, sin runner, sin CSV, sin rollback real, sin VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy - la ruta futura de escritura del importer queda preparada y publicada en
SOURCE-003 Promote Core Write Path Implementation 001:promote-coresigueDRY_RUNypromote-core --executesigueBLOCKED;future_write_pathdocumenta fingerprint obligatorio, bloqueopostgres-sandbox, bloqueo de batch duplicado CORE, transaccion futura, idempotencia, post-checkCORE batch rows = 1886, preservacion desource_row_hashyline_key, timestamps gobernados y rollback/rebuild, conwrite_path_enabled=false,data_written=falseysync_enabled=false - el write real local-dev del importer queda implementado y publicado en
SOURCE-003 Promote Core Write Implementation 001: no se ejecutaron confirmaciones completas; la ruta queda detras dewrite_path_enabled=true, con transaccion RAW -> CORE,INSERTcontrolado en CORE, sin modificar RAW, bloqueo por batch duplicado, rollback automatico ante error, fingerprint obligatorio,postgres-sandboxprohibido,idCORE deterministico gobernado y timestamps gobernados;data_written=false,sync_enabled=falsey CORE conservarow_count = 0 - la promocion real local-dev queda ejecutada y publicada en
SOURCE-003 Promote Core Local Dev Execution 001:PASS,inserted_rows=1886, CORE total/batch1886, RAW batch preservado en1886, duplicados CORE0, claves y hashes completos, timestamps no nulos, idempotenciaBLOCKEDsin nuevas filas,sync_enabled=falsey produccionfalse; no se modifico RAW ni MART, no se genero CSV, no hubo runner, VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy - el plan del futuro
build-martqueda documentado enSOURCE-003 Importer Build Mart Plan: define el flujo futuro desdebusiness_observer.core_source_003_sales_items, batch1827f887-9499-4579-b4f3-234d54f41f7f, con MART V1 candidato para ventas por dia, vendedor, cliente, SKU/producto, zona/territorio si aplica y rentabilidad/CMV si aplica; decisionBUILD-MART PLAN DOCUMENTADO / NO IMPLEMENTADO / NO EJECUTADO, apto para disenarDDL MARTcandidato, no apto para produccion ni sync diaria build-martqueda implementado en safe mode y publicado enSOURCE-003 Importer Build Mart Safe Mode 001:python scripts/source_003_importer.py build-martdevuelveDRY_RUN, valida fingerprint DB aprobado, CORE batch1886, las cuatro MART en0filas y agrega estimaciones1diario,25por vendedor,173por cliente y180por SKU;build-mart --executedevuelveBLOCKED,db_write=false,data_written=false,sync_enabled=false- el paquete
DDLCORE candidato queda publicado enSOURCE-003 Core DDL Candidate: proponebusiness_observer.core_source_003_sales_itemscomo capa de negocio normalizada desdebusiness_observer.raw_source_003_sales_items, con clave tecnicaid, claves de trazabilidadtenant_id,sync_batch_id,line_keyysource_row_hash,66columnas,22constraints,10indices, owneropenclaw_bo_admin,PUBLICsin privilegios, writer sinDELETE, rollback que aborta si hay filas y post-checks conrow_count = 0; no se ejecuto SQL, no se tocoPostgreSQL, no se modifico Python y no se cargo data - la autoridad anterior de ventas queda preservada sin reemplazo
- la nueva query completa de ventas queda documentada como
vNext candidate Tabla 2queda como salida canonica futura de sync itemizadaTabla 1/3/4/5/6quedan como referencias de calculoERPy conciliacionSOURCE-003 / SGC Ventases fuente viva: una fecha ya cargada puede cambiar aproximadamente hasta7dias hacia atras por entregas, rechazos, cobros, descuentos, notas de credito, anulaciones, refacturacion o ajustes de cuenta corriente- la sync futura no debe usar incremental simple por
ultima fecha cargada - la estrategia recomendada combina carga historica inicial, snapshot diario,
ventana movil inicial de
10dias,upsertportenant_id + line_key, comparacion porsource_row_hash,last_seen_at,missing_from_sourcey nohard delete - la validacion real de
Tabla 2y la proxima fecha piloto deben congelarse desde snapshot, no desdeSGCvivo
Regla critica vigente para SOURCE-001:
Clientees la entidad comercial central del observer, no solo una fila delERPtenant_id + codigo_clientees la clave logica fuerte actual del dominioZonarepresenta una agrupacion logistica para rutas y repartoZonano define vendedor responsable- el territorio comercial del vendedor se deriva de su cartera real de clientes asignados y del cruce con geografia, ventas y productos
Como se separa¶
Esto es Core¶
El Business Observer Core pertenece a OpenClaw cuando se trata de:
- capacidad reutilizable de observar negocio
- deteccion generica de clientes en riesgo
- deteccion generica de oportunidades de crecimiento
- aislamiento por tenant
- gobierno de datos
- permisos
- trazabilidad
- auditoria
Ese material vive en la documentacion global y debe poder servir tambien para otros tenants futuros.
Esto es APV¶
Este espacio documenta solo lo que pertenece a alpuntodeventa, por ejemplo:
- reglas comerciales propias
- prioridades de negocio propias
- ejemplos de marcas, productos y proveedores propios
- criterios operativos propios
- decisiones comerciales propias
Reglas de este espacio¶
- usa capacidades Core reutilizables
- documenta decisiones especificas de
APV - no mezcla reglas de otros tenants
- no duplica sin necesidad la documentacion global
- referencia al Core cuando el contenido pertenece a
OpenClaw
Relacion con otros tenants¶
La Directa tendra en el futuro su propio espacio documental de
Business Observer.
Ese futuro espacio no debe compartir automaticamente reglas comerciales de
APV.
Navegacion¶
- Governance Model
- Blueprints
- Customer Blueprint
- Product Blueprint
- Sales Blueprint
- Ownership Blueprint
- Territory Blueprint
- Vision APV del Observer
- Estado del proyecto tenant
- Roadmap tenant
- Casos de uso
- Reglas APV
- Crecimiento y colocacion estrategica
- Recomendaciones comerciales priorizadas
- Inteligencia de surtido y mix
- Inteligencia de proveedores y abastecimiento
- Calendario operativo e inteligencia temporal
- Inteligencia de mercado y pricing
- Necesidades de datos
- Auditoria de fundacion de datos 001
- Contrato funcional de datos 001
- Business Observer Data Layers Architecture
- SOURCE-003 Data Layers Milestone
- SOURCE-003 Raw Layer Contract
- SOURCE-003 Core Layer Contract
- SOURCE-003 Mart Layer Contract
- SOURCE-003 Python Importer Contract
- SOURCE-003 Python Importer Skeleton 001
- SOURCE-003 Importer Generate Prepared 001
- SOURCE-003 Importer Validate Prepared 001
- SOURCE-003 Importer Load Raw Plan
- SOURCE-003 Importer Promote Core Plan
- SOURCE-003 Importer Build Mart Plan
- SOURCE-003 Mart DDL Candidate
- SOURCE-003 Core DDL Candidate
- SOURCE-003 Core DDL Local Dev Forward 001
- SOURCE-003 Promote Core Local Dev Execution Gate
- SOURCE-003 Promote Core Execute Gate Implementation 001
- SOURCE-003 Promote Core Write Implementation 001
- SOURCE-003 Load Raw Technical Review
- SOURCE-003 Raw DDL Candidate
- SOURCE-003 Raw DDL Candidate Technical Review
- SOURCE-003 Raw DDL Local Dev Forward 001
- PostgreSQL Physical Architecture
- SOURCE-003 Line Identity Decision
- SOURCE-003 Dedicated DB DDL Pilot Gate
- SOURCE-003 Dedicated DB DDL Pilot Package
- SOURCE-003 Dedicated DB DDL Pilot Execution 001
- SOURCE-003 Dedicated DB Pilot Load Gate
- SOURCE-003 Dedicated DB Pilot Load Execution 001
- SOURCE-003 Pilot Load Prepared CSV 001
- SOURCE-003 Pilot Load Preflight 001
- SOURCE-003 Pilot Load Execution 001
- SOURCE-003 Pilot Load Execution 002
- SOURCE-003 Pilot Load Python Runner 001
- SOURCE-003 Runner Preflight DB 001
- SOURCE-003 Runner Status DB 001
- SOURCE-003 Prepared CSV Python Generator 001
- SOURCE-003 Sales Items DDL Design
- SOURCE-003 Sales Items DDL SQL Design
- SOURCE-003 Sales Items Pilot Migration
- SOURCE-003 Sales Items Pilot Load
- SOURCE-003 Drift Analysis 001
- SOURCE-003 Query Delta Review
- SOURCE-003 Sales Items Pilot SQL
- SOURCE-003 Sales Items Pilot Rollback SQL
- SOURCE-003 Dedicated DB DDL Pilot Preflight SQL
- SOURCE-003 Dedicated DB DDL Pilot Forward SQL
- SOURCE-003 Dedicated DB DDL Pilot Rollback SQL
- SOURCE-003 Dedicated DB DDL Pilot Post Checks SQL
- SOURCE-003 Raw DDL Candidate Preflight SQL
- SOURCE-003 Raw DDL Candidate Forward SQL
- SOURCE-003 Raw DDL Candidate Rollback SQL
- SOURCE-003 Raw DDL Candidate Post Checks SQL
- SOURCE-003 Core DDL Candidate Preflight SQL
- SOURCE-003 Core DDL Candidate Forward SQL
- SOURCE-003 Core DDL Candidate Rollback SQL
- SOURCE-003 Core DDL Candidate Post Checks SQL
- SOURCE-003 Mart DDL Candidate Preflight SQL
- SOURCE-003 Mart DDL Candidate Forward SQL
- SOURCE-003 Mart DDL Candidate Rollback SQL
- SOURCE-003 Mart DDL Candidate Post Checks SQL
- Data Design Standard global
- Source Inventory Results 001
- Source 001 Clientes Mapping
- Customer Ownership Analytics
- Seller Commercial Territory View
- Seller Reconciliation Rules
- Territory Normalization Strategy
- Territory Alias Catalog 001
- Territory Human Review 001
- Source 002 Economic Layer
- Source 002 Future Layer Mapping
- Source Authority Registry
- Source 001 - SGC Clientes
- Source 002 - SGC Productos
- Source 001 Authority Placeholder
- Source 002 Authority SQL
- Source 003 - Channel Taxonomy
- Source 003 Authority SQL - Previous
- Source 003 Authority SQL - vNext Candidate
- Source 003 Authority SQL - vNext Candidate V2
- Source 003 Query Delta Review
- Source 002B - WooCommerce Imagenes
- Source 002C - Stock Daily Snapshot
- Source 002D - Stock Current 10min
- Inventory Events Layer - Future
- Source 002 Query Recovery Report
- Decisiones aprobadas