arcadiasuite/migrations/0004_openclaw_tables.sql

75 lines
2.6 KiB
SQL

-- Migration 0004: OpenClaw — Detecção de Padrões e Sugestões de Skills Emergentes
-- Fase 4 do planejamento estratégico Arcádia Agentic Suite
-- Tabela de padrões detectados
CREATE TABLE IF NOT EXISTS "detected_patterns" (
"id" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
"tenant_id" INTEGER REFERENCES "tenants"("id"),
"user_id" VARCHAR REFERENCES "users"("id"),
-- Padrão detectado
"action_type" VARCHAR(100) NOT NULL,
"description" TEXT,
"frequency" INTEGER NOT NULL DEFAULT 0,
"confidence" NUMERIC(4, 3) NOT NULL DEFAULT '0',
-- Janela de análise
"first_seen_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"last_seen_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- Metadados do padrão (contexto, módulos envolvidos, etc.)
"metadata" JSONB DEFAULT '{}',
-- Ciclo de vida: active | archived | converted
"status" VARCHAR(20) NOT NULL DEFAULT 'active',
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS "detected_patterns_tenant_user_idx"
ON "detected_patterns"("tenant_id", "user_id");
CREATE INDEX IF NOT EXISTS "detected_patterns_action_type_idx"
ON "detected_patterns"("action_type");
CREATE INDEX IF NOT EXISTS "detected_patterns_status_idx"
ON "detected_patterns"("status");
-- Tabela de sugestões de skills emergentes
CREATE TABLE IF NOT EXISTS "skill_suggestions" (
"id" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
"pattern_id" UUID REFERENCES "detected_patterns"("id") ON DELETE CASCADE,
"tenant_id" INTEGER REFERENCES "tenants"("id"),
"user_id" VARCHAR REFERENCES "users"("id"),
-- Skill sugerida
"suggested_skill_name" VARCHAR(200) NOT NULL,
"suggested_description" TEXT,
"estimated_automation" TEXT,
"confidence" NUMERIC(4, 3) NOT NULL DEFAULT '0',
-- Skill gerada (após confirmação)
"generated_skill_id" UUID REFERENCES "skills"("id"),
-- Estado da sugestão: pending | accepted | rejected | expired
"status" VARCHAR(20) NOT NULL DEFAULT 'pending',
-- Rastreabilidade
"source" VARCHAR(50) NOT NULL DEFAULT 'openclaw',
"reviewed_by" VARCHAR REFERENCES "users"("id"),
"reviewed_at" TIMESTAMP,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS "skill_suggestions_pattern_id_idx"
ON "skill_suggestions"("pattern_id");
CREATE INDEX IF NOT EXISTS "skill_suggestions_tenant_user_idx"
ON "skill_suggestions"("tenant_id", "user_id");
CREATE INDEX IF NOT EXISTS "skill_suggestions_status_idx"
ON "skill_suggestions"("status");