arcadiasuite/migrations/phase4_openclaw_patterns.sql

42 lines
1.9 KiB
SQL

-- Phase 4: OpenClaw — Tabelas de detecção de padrões e sugestões de skills emergentes
-- Executar se as tabelas ainda não existirem (schema já definido em shared/schema.ts)
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),
action_type VARCHAR(100) NOT NULL,
description TEXT,
frequency INTEGER NOT NULL DEFAULT 0,
confidence NUMERIC(4,3) NOT NULL DEFAULT 0,
first_seen_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_seen_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
metadata JSONB DEFAULT '{}',
status VARCHAR(20) NOT NULL DEFAULT 'active',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
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),
suggested_skill_name VARCHAR(200) NOT NULL,
suggested_description TEXT,
estimated_automation TEXT,
confidence NUMERIC(4,3) NOT NULL DEFAULT 0,
generated_skill_id UUID REFERENCES arcadia_skills(id),
status VARCHAR(20) NOT NULL DEFAULT 'pending',
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 idx_detected_patterns_status ON detected_patterns(status);
CREATE INDEX IF NOT EXISTS idx_detected_patterns_user ON detected_patterns(user_id, action_type);
CREATE INDEX IF NOT EXISTS idx_skill_suggestions_status ON skill_suggestions(status);
CREATE INDEX IF NOT EXISTS idx_skill_suggestions_pattern ON skill_suggestions(pattern_id);