A tabela audits NÃO tem a coluna id!
Isso significa que o schema do banco de dados está incompleto ou foi criado incorretamente.
Acesse o SQL Editor do Supabase e execute:
-- Ver estrutura da tabela audits
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'audits'
ORDER BY ordinal_position;Resultado esperado:
- Se
idNÃO aparecer na lista → PROBLEMA CONFIRMADO - Se
idaparecer → Outro problema (pule para Passo 4)
Se você tem auditorias importantes, faça backup primeiro:
-- Backup (opcional)
CREATE TABLE audits_backup AS SELECT * FROM audits;Agora delete a tabela:
-- Remover tabela audits (incompleta)
DROP TABLE IF EXISTS audits CASCADE;Execute este SQL completo:
-- ============================================
-- TABELA AUDITS - Versão Corrigida
-- ============================================
CREATE TABLE audits (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
profile_id UUID NOT NULL REFERENCES instagram_profiles(id) ON DELETE CASCADE,
-- Data da auditoria
audit_date TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
audit_type VARCHAR(20) DEFAULT 'express',
posts_analyzed INTEGER CHECK (posts_analyzed >= 0),
-- Performance da auditoria
audit_duration_seconds INTEGER,
gemini_cost_usd NUMERIC(10,4),
total_api_calls INTEGER,
total_tokens_used INTEGER,
-- Scores gerais
score_overall INTEGER CHECK (score_overall BETWEEN 0 AND 100),
classification VARCHAR(50),
-- Scores por dimensão (5 auditores)
score_behavior INTEGER CHECK (score_behavior BETWEEN 0 AND 100),
score_copy INTEGER CHECK (score_copy BETWEEN 0 AND 100),
score_offers INTEGER CHECK (score_offers BETWEEN 0 AND 100),
score_metrics INTEGER CHECK (score_metrics BETWEEN 0 AND 100),
score_anomalies INTEGER CHECK (score_anomalies BETWEEN 0 AND 100),
-- Métricas de engajamento
engagement_rate NUMERIC(6,3) CHECK (engagement_rate >= 0),
total_likes INTEGER CHECK (total_likes >= 0),
total_comments INTEGER CHECK (total_comments >= 0),
avg_likes_per_post INTEGER CHECK (avg_likes_per_post >= 0),
avg_comments_per_post INTEGER CHECK (avg_comments_per_post >= 0),
-- Métricas do perfil (snapshot)
snapshot_followers INTEGER,
snapshot_following INTEGER,
snapshot_posts_count INTEGER,
-- Dados completos (JSONB)
raw_json JSONB,
top_strengths JSONB,
critical_problems JSONB,
quick_wins JSONB,
strategic_moves JSONB,
hypotheses JSONB,
-- Análise de texto
audit_summary TEXT,
search_vector tsvector,
-- Soft delete
deleted_at TIMESTAMP WITH TIME ZONE,
-- Timestamps
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Indexes
CREATE INDEX idx_audits_profile_id ON audits(profile_id, audit_date DESC) WHERE deleted_at IS NULL;
CREATE INDEX idx_audits_date ON audits(audit_date DESC) WHERE deleted_at IS NULL;
CREATE INDEX idx_audits_score ON audits(score_overall DESC NULLS LAST);
CREATE INDEX idx_audits_classification ON audits(classification);
-- JSONB indexes
CREATE INDEX idx_audits_raw_json_gin ON audits USING GIN (raw_json);
CREATE INDEX idx_audits_strengths_gin ON audits USING GIN (top_strengths);
CREATE INDEX idx_audits_problems_gin ON audits USING GIN (critical_problems);
-- Comentários
COMMENT ON TABLE audits IS 'Auditorias completas com scores dos 5 auditores';
COMMENT ON COLUMN audits.raw_json IS 'JSON completo da auditoria (backup)';Execute novamente:
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'audits'
ORDER BY ordinal_position;Agora deve mostrar id como primeira coluna! ✅
Execute o script de teste:
node scripts/fix-audits-fk-automated.jsDeve mostrar:
✅ TUDO FUNCIONANDO CORRETAMENTE!
Se ainda houver problemas, execute:
-- Ver todas as tabelas
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;Tabelas necessárias:
- ✅
instagram_profiles - ✅
audits - ✅
posts(opcional) - ✅
comments(opcional) - ✅
comparisons(opcional) - ✅
analysis_queue(opcional) - ❌
profiles(NÃO deve existir - foi migrada para instagram_profiles)
- Executei query de verificação (Passo 1)
- Coluna
idnão existia na tabelaaudits - Deletei tabela
auditsantiga (Passo 2) - Recriei tabela
auditscom SQL corrigido (Passo 3) - Verifiquei que coluna
idagora existe (Passo 4) - Testei com script
fix-audits-fk-automated.js(Passo 5) - Teste passou com sucesso ✅
- Criei uma auditoria no dashboard
- Auditoria foi criada SEM ERRO ✅
- Verifique se a tabela
instagram_profilesexiste - Verifique se há dados em
instagram_profiles:SELECT COUNT(*) FROM instagram_profiles;
- Se não houver dados, crie um perfil de teste:
INSERT INTO instagram_profiles (username, full_name, followers_count) VALUES ('crokolabs', 'Croko Labs', 1000);
Tempo total: ~5 minutos Risco: Médio (perde auditorias antigas, mas são regeneráveis) Benefício: Sistema volta a funcionar 100%