PostgreSQL Local Dev Environment - Business Observer APV¶
Fecha: 2026-06-11
Estado: DB DEDICADA LOCAL CREADA / ROLES GRANTS VALIDADOS
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
Fuente de verdad:
docs/tenants/alpuntodeventa/business-observer/design/POSTGRES-LOCAL-DEV-ENVIRONMENT.md
Documentos relacionados:
docs/tenants/alpuntodeventa/business-observer/design/POSTGRES-PHYSICAL-ARCHITECTURE.mddocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-CREDENTIALS-PREFLIGHT.mddocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-WINDOW-PILOT-001.mddocs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-PILOT-LOAD-001.md
1. Objetivo¶
Preparar una base PostgreSQL local dedicada para Business Observer APV,
separada de gestion_de_negocios_core, con schema propio, roles separados,
credenciales locales no versionadas y validacion de permisos.
Base objetivo:
| Campo | Valor |
|---|---|
| database | openclaw_business_observer_dev |
| schema | business_observer |
| rol admin objetivo | openclaw_bo_admin |
| rol writer objetivo | openclaw_bo_writer |
| rol reader objetivo | openclaw_bo_reader |
2. Safe point¶
| Control | Resultado |
|---|---|
git status -sb |
## main...origin/main |
git rev-parse HEAD |
e698599ed4f09b07990ab1cdcfd196dddbeb7314 |
3. Alcance aplicado¶
| Control | Resultado |
|---|---|
VPS |
NO TOCADO |
Docker |
NO TOCADO |
OpenClaw runtime |
NO TOCADO |
NPM |
NO TOCADO |
SOURCE-003 |
NO EJECUTADO |
| sync diaria | NO EJECUTADA |
| carga de datos | NO EJECUTADA |
| migracion de negocio | NO EJECUTADA |
| datos existentes | NO BORRADOS / NO MOVIDOS |
gestion_de_negocios_core |
NO MODIFICADA |
| passwords impresos | NO |
| connection strings impresas | NO |
4. Validacion de credencial admin local¶
Variables requeridas desde .env local no versionado:
APV_LOCAL_POSTGRES_ADMIN_HOSTAPV_LOCAL_POSTGRES_ADMIN_PORTAPV_LOCAL_POSTGRES_ADMIN_DATABASEAPV_LOCAL_POSTGRES_ADMIN_USERAPV_LOCAL_POSTGRES_ADMIN_PASSWORDAPV_LOCAL_POSTGRES_ADMIN_SSLMODE
Resultado:
| Control | Resultado |
|---|---|
.env local existe |
PASS |
.env ignorado por Git |
PASS |
.env versionado por Git |
NO |
| variables admin presentes | PASS |
cliente psql disponible |
PASS |
admin SELECT 1 |
FAIL |
| clasificacion segura del fallo | authentication |
| admin puede crear DB/roles | NO VALIDADO |
| secretos expuestos | NO |
| decision | STOP |
La validacion se detuvo antes de cualquier CREATE DATABASE, CREATE ROLE,
GRANT, ALTER DEFAULT PRIVILEGES o escritura de credenciales nuevas.
Reejecucion segura posterior:
| Control | Resultado |
|---|---|
| fecha | 2026-06-11 |
git status -sb |
## main...origin/main |
git rev-parse HEAD |
6607cc69f33d558cb2e5e7fab37eeea69a9f246f |
.env local existe |
PASS |
| variables admin presentes | PASS |
cliente psql local disponible |
PASS |
admin SELECT 1 |
PASS |
admin CREATEDB |
PASS |
admin CREATEROLE |
PASS |
| bases creadas | NO |
| roles creados | NO |
| grants o default privileges aplicados | NO |
gestion_de_negocios_core modificada |
NO |
| secretos expuestos | NO |
| connection string expuesta | NO |
| decision | GATE PASS |
El gate admin queda validado solamente para habilitar la preparacion de la base dedicada en una tarea posterior separada. Esta reejecucion no creo bases, schemas, roles, grants, default privileges, tablas ni datos.
5. Estado del entorno dedicado¶
| Control | Resultado |
|---|---|
database openclaw_business_observer_dev |
CREADA / VALIDADA |
schema business_observer |
CREADO / OWNER VALIDADO |
rol openclaw_bo_admin |
CREADO / NOLOGIN / OWNER DB Y SCHEMA |
rol openclaw_bo_writer |
CREADO / NOLOGIN / PERMISOS MINIMOS |
rol openclaw_bo_reader |
CREADO / NOLOGIN / SOLO LECTURA |
| passwords nuevos generados | NO |
.env local actualizado con APV_BO_LOCAL_POSTGRES_* |
NO |
.env.example actualizado con placeholders |
SI |
| default privileges configurados | SI |
| tablas de negocio creadas | NO |
datos migrados desde gestion_de_negocios_core |
NO |
filas piloto 9761 migradas |
NO |
6. Permisos aplicados y validados¶
La documentacion vigente no exige LOGIN para los roles objetivo ni define
secretos para passwords de esos roles. Por seguridad, los roles fueron creados
como NOLOGIN.
| Rol | Permisos objetivo |
|---|---|
openclaw_bo_admin |
owner/admin de openclaw_business_observer_dev y del schema business_observer |
openclaw_bo_writer |
CONNECT, USAGE, SELECT, INSERT, UPDATE; sin DELETE |
openclaw_bo_reader |
CONNECT, USAGE, SELECT; sin escritura |
Default privileges configurados para objetos futuros creados por
openclaw_bo_admin en business_observer:
- tablas futuras:
openclaw_bo_writerconSELECT,INSERT,UPDATE - tablas futuras:
openclaw_bo_readerconSELECT - no conceder
DELETEpor defecto
7. Separacion con el piloto historico¶
| Entorno | Estado | Lectura |
|---|---|---|
gestion_de_negocios_core |
piloto historico validado | conserva la evidencia local de SOURCE-003, con 9761 filas finales tras la ventana movil validada |
openclaw_business_observer_dev |
entorno dedicado local creado | contiene solo el schema minimo business_observer; no contiene tablas ni datos de SOURCE-003 |
Confirmaciones:
- las
9761filas del piloto historico no fueron migradas - no se cargo
SOURCE-003 - no se ejecuto sync
- no se modifico
gestion_de_negocios_core - no se toco
VPS
8. Resultado final¶
Decision vigente: DB DEDICADA LOCAL CREADA / ROLES GRANTS VALIDADOS.
La credencial admin local declarada en .env fue revalidada sin imprimir
secretos ni connection strings. El SELECT 1 paso y el rol conectado tiene
capacidad CREATEDB y CREATEROLE.
Se creo o aseguro la base openclaw_business_observer_dev, el schema minimo
business_observer, los roles objetivo NOLOGIN y los grants minimos. No se
crearon tablas de negocio, no se insertaron datos y no se generaron ni
documentaron passwords nuevos.
9. Evidencia de creacion local dedicada¶
Fecha local: 2026-06-11
Safe point inicial de la tarea:
| Control | Resultado |
|---|---|
git status -sb |
## main...origin/main [ahead 1] |
git rev-parse HEAD |
5490ac4d8f61fd62420c2f3facb06e6454a89bca |
| ultimo commit | docs: record local postgres admin gate pass |
Estado previo observado:
| Control | Resultado |
|---|---|
.env local existe |
PASS |
.env ignorado por Git |
PASS |
.env versionado por Git |
NO |
variables APV_LOCAL_POSTGRES_ADMIN_* presentes |
PASS |
psql local disponible |
PASS con binario local de PostgreSQL 15 |
admin SELECT 1 |
PASS |
admin CREATEDB |
PASS |
admin CREATEROLE |
PASS |
admin superuser |
PASS |
database openclaw_business_observer_dev previa |
NO EXISTIA |
rol openclaw_bo_admin previo |
NO EXISTIA |
rol openclaw_bo_writer previo |
NO EXISTIA |
rol openclaw_bo_reader previo |
NO EXISTIA |
decision sobre LOGIN |
NOLOGIN, porque no hay requisito ni secreto documentado para passwords de roles objetivo |
Accion ejecutada:
| Control | Resultado |
|---|---|
database openclaw_business_observer_dev |
CREADA |
| owner database | openclaw_bo_admin |
schema business_observer |
CREADO |
| owner schema | openclaw_bo_admin |
rol openclaw_bo_admin |
CREADO / NOLOGIN |
rol openclaw_bo_writer |
CREADO / NOLOGIN |
rol openclaw_bo_reader |
CREADO / NOLOGIN |
CONNECT writer/reader |
APLICADO |
USAGE schema writer/reader |
APLICADO |
SELECT, INSERT, UPDATE writer |
APLICADO A TABLAS EXISTENTES SI EXISTEN Y DEFAULT FUTURO |
SELECT reader |
APLICADO A TABLAS EXISTENTES SI EXISTEN Y DEFAULT FUTURO |
DELETE writer |
NO CONCEDIDO |
INSERT, UPDATE, DELETE reader |
NO CONCEDIDOS |
Validacion posterior:
| Control | Resultado |
|---|---|
SELECT current_database() |
openclaw_business_observer_dev |
| owner database | openclaw_bo_admin |
| owner schema | openclaw_bo_admin |
| roles objetivo existen | PASS |
roles objetivo NOLOGIN |
PASS |
writer CONNECT |
PASS |
reader CONNECT |
PASS |
writer USAGE schema |
PASS |
reader USAGE schema |
PASS |
writer CREATE schema |
NO |
reader CREATE schema |
NO |
tablas en business_observer |
0 |
writer DELETE en tablas existentes |
NO |
reader INSERT en tablas existentes |
NO |
reader UPDATE en tablas existentes |
NO |
reader DELETE en tablas existentes |
NO |
default writer SELECT |
PASS |
default writer INSERT |
PASS |
default writer UPDATE |
PASS |
default writer DELETE |
NO |
default reader SELECT |
PASS |
default reader INSERT |
NO |
default reader UPDATE |
NO |
default reader DELETE |
NO |
business_observer.source_003_sales_items en DB dedicada |
NO EXISTE |
SOURCE-003 cargado |
NO |
gestion_de_negocios_core modificada |
NO DDL/DML EJECUTADO |
VPS, Docker, OpenClaw, NPM tocados |
NO |
| secretos impresos | NO |
| connection strings impresas | NO |
10. Proximo paso unico recomendado¶
Mantener openclaw_business_observer_dev como entorno dedicado local vacio
hasta una tarea separada que apruebe explicitamente DDL, migracion piloto,
carga o sync. La produccion final, SOURCE-003, sync diaria, carga masiva,
VPS, Docker, OpenClaw y NPM siguen bloqueados.