PDF-007B2 SOURCE-003 Production Dedicated PostgreSQL Provisioning¶
Fecha local: 2026-06-20
Estado:
SOURCE-003 PRODUCTION DEDICATED POSTGRES PROVISIONED / EMPTY / NO LOAD
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
Fuente de verdad:
docs/tenants/alpuntodeventa/business-observer/production/PDF-007B2-SOURCE-003-PRODUCTION-DEDICATED-POSTGRES-PROVISIONING.md
1. Contexto¶
PDF-007A preparo el paquete candidate productivo para SOURCE-003.
PDF-007B fue ejecutado operativamente con resultado verde, pero dejo el
target productivo vacio dentro del contenedor llamado
openclaw-business-observer-postgres-staging.
Este gate corrige la arquitectura antes de cargar datos productivos: produccion queda en un PostgreSQL Docker dedicado, con contenedor, red, volumen y baseline propios.
2. Safe point local¶
git status -sb:## main...origin/mainHEAD:2a4f90cf9ba82b7ace9f0f9c65705abf57ffd3dcorigin/main:2a4f90cf9ba82b7ace9f0f9c65705abf57ffd3dc- ultimo commit:
2a4f90c docs: prepare source-003 production controlled rollout git diff --check:PASS..\.venv-portal\Scripts\mkdocs.exe build --strict: ruta inexistente desdeC:\APV\openclawai.\.venv-portal\Scripts\mkdocs.exe build --strict:PASS
3. Safe point VPS¶
- host:
srv977009 - repo:
/opt/openclawai git status -sb:## main...origin/mainHEAD/origin:2a4f90cf9ba82b7ace9f0f9c65705abf57ffd3dc- ultimo commit:
2a4f90c docs: prepare source-003 production controlled rollout - staging:
openclaw-business-observer-postgres-staging,postgres:16.14-alpine,healthy, sin puertos host publicados - sandbox:
openclaw-postgres-sandbox,healthy, no usado - Portainer:
portainer/portainer-ce:2.39.3,Up - NPM:
jc21/nginx-proxy-manager:2.15.1,Up
4. Diagnostico Portainer read-only¶
Resolucion DNS:
www.portainer.alpuntodeventa.com.ar: resuelve a46.202.151.32portainer.alpuntodeventa.com.ar: resuelve a46.202.151.32
HTTP/TLS:
https://portainer.alpuntodeventa.com.ar/:200 OKhttps://www.portainer.alpuntodeventa.com.ar/: falla TLS/SNI (tlsv1 unrecognized namedesde VPS, error Schannel desde Windows)
Conclusion:
text
Portainer container UP
NPM container UP
portainer.alpuntodeventa.com.ar OK
www.portainer.alpuntodeventa.com.ar NO-OK por TLS/SNI/certificado o proxy host
El problema no parece DNS ni contenedor caido. Parece configuracion NPM/TLS para
el alias www. No se modifico DNS, NPM ni Portainer.
5. Target viejo en staging¶
El target openclaw_business_observer_prod existe dentro de
openclaw-business-observer-postgres-staging.
Conteos read-only:
| Tabla | Filas |
|---|---|
source_003_sales_items |
0 |
raw_source_003_sales_items |
0 |
core_source_003_sales_items |
0 |
mart_source_003_sales_daily |
0 |
mart_source_003_sales_by_seller |
0 |
mart_source_003_sales_by_customer |
0 |
mart_source_003_sales_by_sku |
0 |
Clasificacion:
text
LEGACY_EMPTY_TARGET / PENDING_CLEANUP
Ese target no debe usarse para carga futura. No fue borrado.
6. Nuevo PostgreSQL productivo dedicado¶
Contenedor:
text
openclaw-business-observer-postgres-prod
Imagen:
text
postgres:16.14-alpine
Runtime:
- stack operativo:
/opt/stacks/business-observer-prod - compose:
/opt/stacks/business-observer-prod/docker-compose.yml - env externo:
/opt/stacks/business-observer-prod/.env.business-observer-prod - secret externo:
/opt/secrets/openclaw/business-observer-prod/postgres_bootstrap_password - volumen:
openclaw_business_observer_prod_data - red interna:
openclaw-bo-prod-internal HostConfig.PortBindings:{}- estado:
healthy
El contenedor no publica puertos host. El secret no fue impreso ni versionado.
7. Provisioning estructural¶
DB:
text
openclaw_business_observer_prod
Schema:
text
business_observer
Roles NOLOGIN:
openclaw_bo_prod_owneropenclaw_bo_prod_writeropenclaw_bo_prod_readeropenclaw_bo_prod_reporting_ro
Tablas SOURCE-003 creadas vacias:
business_observer.source_003_sales_itemsbusiness_observer.raw_source_003_sales_itemsbusiness_observer.core_source_003_sales_itemsbusiness_observer.mart_source_003_sales_dailybusiness_observer.mart_source_003_sales_by_sellerbusiness_observer.mart_source_003_sales_by_customerbusiness_observer.mart_source_003_sales_by_sku
SQL ejecutado:
- DDL estructural de roles, DB y schema, adaptado desde el patron staging
PDF-004F infra/business-observer/production/postgres/ddl/PDF-007A/002-source-003-production-target-tables-forward.candidate.sql
No se ejecutaron scripts de load.
8. Post-checks¶
Resultado:
- contenedor prod dedicado:
healthy - DB prod presente:
PASS - roles prod
4/4presentes yNOLOGIN:PASS - schema
business_observerpresente:PASS - tablas
SOURCE-0037/7:PASS - owner de las 7 tablas:
openclaw_bo_prod_owner - conteos:
0/0/0/0/0/0/0 PUBLICtable ACL rows:0- writer:
SELECT/INSERT/UPDATEsobre7/7 - reader:
SELECTsobre7/7 - reporting_ro:
SELECTsobre7/7 - PostgreSQL prod sin exposicion publica:
PortBindings {} - staging:
healthy - sandbox:
healthy, no usado
9. Backup baseline¶
Baseline estructural vacio fuera de Git:
text
/opt/backups/openclaw/business-observer-prod/postgres/baseline/20260620T192631Z/openclaw-bo-prod-postgres-baseline-20260620T192631Z.dump
Tamanio:
text
56581 bytes
SHA256:
text
d66a1c2636ab7f7d03f40f2abb4d6f8d10b63acf218dcd1b8e27c2ff580252a8
pg_restore --list:
text
PASS / 92 lines
Permisos:
- directorio:
700 root:root - dump/checksum/listado:
600 root:root
git status remoto en /opt/openclawai quedo limpio despues del backup.
10. Restricciones respetadas¶
- no se cargaron datos
SOURCE-003; - no se ejecuto
COPY; - no se ejecuto
INSERT/UPDATE/DELETE/TRUNCATEde datos de negocio; - no se ejecuto sync;
- no se ejecuto scheduler;
- no se ejecuto cron;
- no se ejecutaron pipelines;
- no se uso
openclaw-postgres-sandbox; - no se modifico OpenClaw;
- no se modifico NPM;
- no se modifico DNS;
- no se modifico Portainer;
- no se reinicio NPM ni Portainer;
- no se expusieron puertos publicos para PostgreSQL;
- no se imprimieron passwords ni connection strings reales;
- no se agregaron backups/dumps al repo;
- no se borro el target viejo dentro de staging.
11. Decision¶
Decision:
text
PDF-007B2 VERDE
Produccion SOURCE-003 tiene ahora un PostgreSQL dedicado, estructuralmente
provisionado y vacio.
Produccion cargada:
text
NO
Sync, scheduler, cron y pipelines:
text
NO-GO
12. Proximo gate recomendado¶
Proximo gate recomendado:
text
PDF-007C SOURCE-003 production initial controlled load preflight
Ese gate debe validar snapshot/hash, preparar CSV fuera de Git, confirmar
baseline vigente, ejecutar preflight de carga y pedir autorizacion separada
antes de cualquier COPY o DML de negocio.