- ARCHITECTURE.md: Estado real de 23 repos - IMPLEMENTATION_PLAN.md: 7 fases de implementacion - PHASES/: Scripts detallados para cada fase Resultado de auditoria: - 5 repos implementados - 4 repos parciales - 14 repos solo documentacion
260 lines
5.5 KiB
Markdown
260 lines
5.5 KiB
Markdown
# FASE 3: FLUJO EMPRESARIAL
|
|
|
|
**Complejidad:** Media
|
|
**Duración estimada:** 1-2 días
|
|
**Prioridad:** MEDIA
|
|
|
|
---
|
|
|
|
## OBJETIVO
|
|
|
|
Desplegar MARGARET en CORP (clon de CLARA para servidor empresarial).
|
|
|
|
---
|
|
|
|
## PREREQUISITOS
|
|
|
|
- [x] FASE 1 completada (CLARA funcionando)
|
|
- [ ] SSH acceso a CORP (92.112.181.188)
|
|
- [ ] PostgreSQL en CORP accesible
|
|
- [ ] R2 bucket 'corp' accesible
|
|
|
|
---
|
|
|
|
## PASO 3.1: Crear repo margaret con código
|
|
|
|
MARGARET es esencialmente CLARA con:
|
|
- Diferente h_instancia
|
|
- Bucket R2 'corp' en lugar de 'deck'
|
|
- Tabla margaret_log en lugar de clara_log
|
|
- Campos adicionales para empresas (opcional)
|
|
|
|
### Script
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# Crear MARGARET como fork de CLARA
|
|
|
|
SSH_KEY="/home/orchestrator/.ssh/tzzr"
|
|
WORK_DIR="/tmp/create-margaret"
|
|
|
|
rm -rf $WORK_DIR
|
|
mkdir -p $WORK_DIR
|
|
cd $WORK_DIR
|
|
|
|
# Clonar CLARA
|
|
GIT_SSH_COMMAND="ssh -i $SSH_KEY -p 2222" \
|
|
git clone ssh://git@localhost:2222/tzzr/clara.git margaret
|
|
|
|
cd margaret
|
|
|
|
# Renombrar referencias
|
|
find . -type f -name "*.py" -exec sed -i 's/clara/margaret/g' {} \;
|
|
find . -type f -name "*.py" -exec sed -i 's/CLARA/MARGARET/g' {} \;
|
|
find . -type f -name "*.md" -exec sed -i 's/clara/margaret/g' {} \;
|
|
find . -type f -name "*.md" -exec sed -i 's/CLARA/MARGARET/g' {} \;
|
|
find . -type f -name "*.md" -exec sed -i 's/DECK/CORP/g' {} \;
|
|
|
|
# Actualizar docker-compose.yml
|
|
sed -i 's/5051/5052/g' docker-compose.yml
|
|
sed -i 's/deck/corp/g' docker-compose.yml
|
|
|
|
# Actualizar README
|
|
cat > README.md << 'EOF'
|
|

|
|
|
|
# MARGARET
|
|
|
|
**Log de entrada CORP - Sistema TZZR**
|
|
|
|
Clon de CLARA para servidor empresarial. Recibe contenedores de PACKET y los almacena en PostgreSQL + R2.
|
|
|
|
## Diferencias con CLARA
|
|
|
|
| Aspecto | CLARA | MARGARET |
|
|
|---------|-------|----------|
|
|
| Servidor | DECK | CORP |
|
|
| Puerto | 5051 | 5052 |
|
|
| Bucket R2 | deck | corp |
|
|
| Tabla | clara_log | margaret_log |
|
|
|
|
## Despliegue
|
|
|
|
```bash
|
|
cd /opt/margaret
|
|
cp .env.example .env
|
|
# Editar .env con credenciales
|
|
docker-compose up -d
|
|
```
|
|
|
|
## API
|
|
|
|
Idéntica a CLARA:
|
|
- `POST /ingest` - Recibir contenedor
|
|
- `GET /query/{h_entrada}` - Consultar por hash
|
|
- `GET /list` - Listar entradas
|
|
- `GET /health` - Health check
|
|
EOF
|
|
|
|
# Cambiar origen remoto
|
|
git remote set-url origin ssh://git@localhost:2222/tzzr/margaret.git
|
|
|
|
# Crear nuevo historial
|
|
rm -rf .git
|
|
git init
|
|
git add -A
|
|
git commit -m "MARGARET: fork de CLARA para CORP"
|
|
|
|
# Push (asumiendo que el repo ya existe vacío)
|
|
GIT_SSH_COMMAND="ssh -i $SSH_KEY -p 2222" git push -u origin main --force
|
|
```
|
|
|
|
---
|
|
|
|
## PASO 3.2: Crear tablas en CORP PostgreSQL
|
|
|
|
### Conectar a CORP
|
|
|
|
```bash
|
|
ssh -i /home/orchestrator/.ssh/tzzr root@92.112.181.188
|
|
```
|
|
|
|
### Crear base de datos si no existe
|
|
|
|
```bash
|
|
sudo -u postgres psql << 'EOF'
|
|
CREATE DATABASE corp;
|
|
CREATE USER margaret WITH PASSWORD 'margaret_secure_2024';
|
|
GRANT ALL PRIVILEGES ON DATABASE corp TO margaret;
|
|
EOF
|
|
```
|
|
|
|
### Crear tabla
|
|
|
|
```bash
|
|
sudo -u postgres psql -d corp << 'EOF'
|
|
|
|
CREATE TABLE IF NOT EXISTS margaret_log (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
h_instancia VARCHAR(64) NOT NULL,
|
|
h_entrada VARCHAR(64) NOT NULL,
|
|
contenedor JSONB NOT NULL,
|
|
r2_paths JSONB DEFAULT '{}',
|
|
estado VARCHAR(20) DEFAULT 'recibido',
|
|
-- Campos adicionales para empresas
|
|
empresa_id VARCHAR(64),
|
|
proyecto_id VARCHAR(64),
|
|
aprobado_por VARCHAR(100),
|
|
procesado_at TIMESTAMP,
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|
CONSTRAINT margaret_log_h_entrada_unique UNIQUE (h_entrada)
|
|
);
|
|
|
|
CREATE INDEX idx_margaret_h_instancia ON margaret_log(h_instancia);
|
|
CREATE INDEX idx_margaret_empresa ON margaret_log(empresa_id);
|
|
CREATE INDEX idx_margaret_proyecto ON margaret_log(proyecto_id);
|
|
CREATE INDEX idx_margaret_created ON margaret_log(created_at DESC);
|
|
|
|
COMMENT ON TABLE margaret_log IS 'Log de entrada CORP - contenedores empresariales';
|
|
EOF
|
|
```
|
|
|
|
---
|
|
|
|
## PASO 3.3: Desplegar MARGARET
|
|
|
|
### En CORP
|
|
|
|
```bash
|
|
ssh -i /home/orchestrator/.ssh/tzzr root@92.112.181.188 << 'REMOTE'
|
|
|
|
mkdir -p /opt/margaret
|
|
cd /opt/margaret
|
|
|
|
# Clonar repo
|
|
git clone http://69.62.126.110:3000/tzzr/margaret.git .
|
|
|
|
# Generar h_instancia único para CORP
|
|
SEED="corp-enterprise-$(hostname)-$(date +%s)"
|
|
H_INSTANCIA=$(echo -n "$SEED" | sha256sum | cut -d' ' -f1)
|
|
|
|
# Crear .env
|
|
cat > .env << EOF
|
|
H_INSTANCIA=$H_INSTANCIA
|
|
|
|
# PostgreSQL
|
|
DB_HOST=localhost
|
|
DB_PORT=5432
|
|
DB_NAME=corp
|
|
DB_USER=margaret
|
|
DB_PASSWORD=margaret_secure_2024
|
|
|
|
# R2
|
|
R2_ENDPOINT=https://7dedae6030f5554d99d37e98a5232996.r2.cloudflarestorage.com
|
|
R2_ACCESS_KEY=ecddc771824c3cb3417d9451780db3d2
|
|
R2_SECRET_KEY=c8138e2597100ffb7dd1477ad722c0214f86097cd968752aea3cfcea5d54dbac
|
|
R2_BUCKET=corp
|
|
|
|
PORT=5052
|
|
EOF
|
|
|
|
# Construir y levantar
|
|
docker-compose up -d --build
|
|
|
|
REMOTE
|
|
```
|
|
|
|
---
|
|
|
|
## PASO 3.4: Configurar Caddy en CORP
|
|
|
|
```bash
|
|
ssh -i /home/orchestrator/.ssh/tzzr root@92.112.181.188 << 'REMOTE'
|
|
|
|
cat >> /etc/caddy/Caddyfile << 'EOF'
|
|
|
|
margaret.tzzrcorp.me {
|
|
reverse_proxy localhost:5052
|
|
}
|
|
EOF
|
|
|
|
systemctl reload caddy
|
|
|
|
REMOTE
|
|
```
|
|
|
|
---
|
|
|
|
## PASO 3.5: Probar ingesta
|
|
|
|
```bash
|
|
H_INSTANCIA="<hash_generado_en_corp>"
|
|
|
|
curl -X POST http://92.112.181.188:5052/ingest \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-Auth-Key: $H_INSTANCIA" \
|
|
-d '{
|
|
"id": "test-corp-001",
|
|
"archivo_hash": "test-corp-hash-001",
|
|
"origen": {"app": "test"},
|
|
"empresa_id": "empresa-001",
|
|
"proyecto_id": "proyecto-alpha"
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## CHECKLIST FINAL FASE 3
|
|
|
|
- [ ] 3.1 - Repo margaret creado con código
|
|
- [ ] 3.2 - Tabla margaret_log creada
|
|
- [ ] 3.3 - MARGARET corriendo en Docker
|
|
- [ ] 3.4 - Caddy configurado
|
|
- [ ] 3.5 - Test de ingesta exitoso
|
|
|
|
---
|
|
|
|
## SIGUIENTE FASE
|
|
|
|
Continuar con [FASE_4_PIPELINE_COMPLETO.md](FASE_4_PIPELINE_COMPLETO.md)
|