Saltar a contenido

SOURCE Secrets Preflight 001 - APV

Fecha: 2026-06-05

Estado: PREFLIGHT SEGURO

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-SECRETS-PREFLIGHT-001.md

1. Objetivo

Preparar la migracion segura de credenciales necesarias para SOURCE-002 SGC Productos y SOURCE-002B WooCommerce Imagenes hacia OpenClaw local y VPS, sin exponer secretos en Git, en Markdown ni en logs.

2. Safe point inicial

  • repo destino: C:\APV\openclawai
  • branch observada: main
  • commit base observado: 17d7cd66606b3d6b1e6c001a309f5a24487ba8cd
  • runtime productivo: no tocado
  • sync real: no ejecutado
  • conexiones reales: no ejecutadas

3. Evidencia revisada

Repos y archivos inspeccionados sin revelar valores:

  • C:\APV\gestor-de-negocios\backend\app\plugins\alpuntodeventa\scheduler_jobs.py
  • C:\APV\gestor-de-negocios\backend\app\utils\connections_helper.py
  • C:\APV\gestor-de-negocios\backend\app\core\connections_registry.py
  • C:\APV\gestor-de-negocios\docs\CODEX-SCHEDULER-CONEXIONES.md
  • C:\APV\gestor-de-negocios\tools\diag_connection_secrets.py
  • C:\APV\gestor-de-negocios\.env.dev
  • C:\APV\gestor-de-negocios\.env.prod
  • C:\APV\gestor-de-negocios\.env.local
  • C:\APV\gestor-de-negocios\.gitignore

4. Conexiones necesarias

SOURCE-002 - SGC Productos

  • tipo: mssql
  • alias canonico APV observado: mssql:mssql-sgc-ecommerce
  • alias legacy observado en material historico: mssql:mssqlserver-sgc-ecommerce
  • destino funcional: lectura de maestro de productos desde SGC
  • claves esperadas por tipo: host, port, database, user, password, encrypt, trustServerCertificate, driver, timeout

SOURCE-002B - WooCommerce Imagenes

  • tipo: woo_api
  • alias canonico APV observado: woo_api:woo-alpuntodeventa
  • destino funcional: lookup de imagen destacada por SKU
  • claves esperadas por tipo: base_url, consumer_key, consumer_secret, version, timeout

Destino Postgres esperado para wiring APV

  • tipo: postgres
  • alias canonico APV observado: postgres:postgres-alpuntodeventa-dev-env
  • alias legacy general observado: postgres:postgres-vps-app-de-negocios
  • destino funcional: escritura/control de datos APV en entorno destino
  • claves esperadas por tipo: host, port, database, user, password, sslmode

5. Origen actual de secretos

Se observaron dos capas vigentes en gestor-de-negocios:

Capa A - system_connections

  • ubicación: public.system_connections
  • uso: source of truth operativa por tag
  • protección observada: secretos cifrados y/o password_enc
  • resolución observada: connections_helper.resolve_connection_by_tag(...)
  • descifrado observado: mediante SECRET_KEY_FERNET, con fallbacks documentados

Capa B - archivos locales ignorados por Git

  • C:\APV\gestor-de-negocios\.env.dev
  • C:\APV\gestor-de-negocios\.env.prod
  • C:\APV\gestor-de-negocios\.env.local

Observaciones seguras:

  • esos archivos contienen nombres de claves para MSSQL, Postgres y material de cifrado
  • .env.dev, .env.prod y .env.local estan ignorados por Git
  • .env del repo origen esta trackeado, pero en la revisión hecha solo se observaron flags basicas no sensibles

6. Qué credenciales existen sin revelar valores

MSSQL SGC

  • existe evidencia fuerte de wiring canonico APV por tag mssql:mssql-sgc-ecommerce
  • existen nombres de variables locales para MSSQL_HOST, MSSQL_DB, MSSQL_USER, MSSQL_PASSWORD, MSSQL_DRIVER, MSSQL_SERVER
  • parece completo a nivel de forma
  • falta validar en una etapa posterior que el secreto vigente en system_connections corresponda al mismo servidor y base que se quieren usar en OpenClaw

WooCommerce API

  • existe evidencia fuerte de wiring canonico APV por tag woo_api:woo-alpuntodeventa
  • el tipo woo_api espera base_url, consumer_key, consumer_secret
  • parece completo a nivel de forma
  • falta validar vigencia funcional del sitio y si el cruce por SKU sigue siendo estable

Postgres destino

  • existe evidencia documental del alias postgres:postgres-alpuntodeventa-dev-env
  • existe alias legacy general postgres:postgres-vps-app-de-negocios
  • existen nombres de variables locales para PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD, DATABASE_URL
  • parece completo a nivel de forma
  • falta decidir si OpenClaw usará este mismo destino, un destino clonado o un destino nuevo dedicado

7. Alias y tags relevantes

Confirmados para APV

  • mssql:mssql-sgc-ecommerce
  • woo_api:woo-alpuntodeventa
  • postgres:postgres-alpuntodeventa-dev-env
  • api:catalogo-pedidos-whatsapp-import-alpuntodeventa

Legacy observados y a no reutilizar por comodidad

  • mssql:mssqlserver-sgc-ecommerce
  • postgres:postgres-vps-app-de-negocios

Regla recomendada:

  • en OpenClaw, documentar siempre el alias canonico APV y conservar los legacy solo como referencia historica

8. Destino esperado en OpenClaw

Local

  • archivo previsto: .env local no trackeado
  • referencia segura: .env.example
  • alcance: placeholders y checklist, sin secretos reales en Git

VPS

  • carga prevista: manual por SSH
  • archivo sugerido: /srv/openclaw/.env o equivalente operativo decidido para el stack
  • copia ahora: no autorizada en esta etapa

9. Qué falta validar

  • si el alias postgres:postgres-alpuntodeventa-dev-env debe migrarse tal cual o renombrarse para OpenClaw
  • si existe un secreto vigente real en system_connections para cada uno de los tags APV observados
  • si env_scope de cada conexión coincide con el futuro entorno local/VPS
  • si el destino Postgres debe ser compartido, clonado o nuevo
  • si la API de publicación APV queda fuera de este alcance o debe incluirse en una segunda preflight

10. Riesgos

  • reutilizar tags legacy y mezclar APV con La Directa
  • copiar secretos a Markdown, commits o logs por error
  • mover solo valores parciales y dejar alias inconsistentes
  • cargar secretos correctos en archivo equivocado
  • asumir que el destino Postgres APV actual sirve para OpenClaw sin decisión explícita

11. Pasos seguros para migración

Preparación local

  1. Crear .env local a partir de .env.example.
  2. Pegar solo valores reales en el .env local no trackeado.
  3. Conservar los tags de referencia como metadatos, no como fuente de verdad del valor.
  4. Validar con revisión humana que git status -sb no muestre archivos con secretos trackeados.

Carga segura en VPS

  1. Abrir sesión SSH al host.
  2. Crear el archivo de entorno local del servicio en el VPS.
  3. Cargar valores manualmente dentro del editor remoto, sin pegarlos en documentación del repo.
  4. Ajustar permisos restrictivos del archivo.
  5. Validar presencia de claves por nombre, nunca por valor visible.

12. Runbook SSH propuesto sin secretos

bash ssh -p <PUERTO_SSH> <USUARIO>@<HOST_VPS> install -m 700 -d /srv/openclaw install -m 600 /dev/null /srv/openclaw/.env editor /srv/openclaw/.env chmod 600 /srv/openclaw/.env

Claves a cargar en esa etapa:

  • APV_SOURCE_002_MSSQL_HOST
  • APV_SOURCE_002_MSSQL_PORT
  • APV_SOURCE_002_MSSQL_DATABASE
  • APV_SOURCE_002_MSSQL_USER
  • APV_SOURCE_002_MSSQL_PASSWORD
  • APV_SOURCE_002_MSSQL_DRIVER
  • APV_SOURCE_002_MSSQL_TRUST_SERVER_CERTIFICATE
  • APV_SOURCE_002_MSSQL_TIMEOUT_SECONDS
  • APV_SOURCE_002B_WOO_BASE_URL
  • APV_SOURCE_002B_WOO_CONSUMER_KEY
  • APV_SOURCE_002B_WOO_CONSUMER_SECRET
  • APV_SOURCE_002B_WOO_VERSION
  • APV_SOURCE_002B_WOO_TIMEOUT_SECONDS
  • APV_DESTINATION_POSTGRES_HOST
  • APV_DESTINATION_POSTGRES_PORT
  • APV_DESTINATION_POSTGRES_DATABASE
  • APV_DESTINATION_POSTGRES_USER
  • APV_DESTINATION_POSTGRES_PASSWORD
  • APV_DESTINATION_POSTGRES_SSLMODE

Validación segura sugerida:

bash grep -E '^(APV_SOURCE_002_|APV_SOURCE_002B_|APV_DESTINATION_POSTGRES_)' /srv/openclaw/.env | cut -d= -f1

La validación anterior debe confirmar solo nombres de claves.

13. Confirmación documental

  • no se escribieron passwords, tokens ni API keys en este documento
  • no se copiaron secretos al repo openclawai
  • no se ejecutaron conexiones reales
  • no se ejecutó sync real
  • no se tocó runtime productivo