nordabiz/database/migrations/041_ai_enrichment_proposals.sql
Maciej Pienczyn f166668f22 feat: Add AI enrichment approval workflow
- Remove confusing "Zweryfikowano 2x | Jakość: 100%" badge
- Create AiEnrichmentProposal model for pending AI suggestions
- Modify AI enrichment to create proposals instead of direct saves
- Add approve/reject API endpoints for proposals
- Update frontend to show approval buttons after AI analysis
- Proposals expire after 30 days if not reviewed

The workflow now requires owner/admin approval before AI-generated
data is applied to company profiles. This prevents unwanted data
from being automatically added.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 11:03:53 +01:00

59 lines
2.1 KiB
SQL

-- ============================================================
-- 041_ai_enrichment_proposals.sql
-- System akceptacji propozycji wzbogacenia danych przez AI
-- ============================================================
-- Tabela propozycji wzbogacenia AI
CREATE TABLE IF NOT EXISTS ai_enrichment_proposals (
id SERIAL PRIMARY KEY,
company_id INTEGER NOT NULL REFERENCES companies(id) ON DELETE CASCADE,
-- Status workflow
status VARCHAR(20) NOT NULL DEFAULT 'pending',
-- Typ propozycji
proposal_type VARCHAR(50) NOT NULL DEFAULT 'website_extraction',
-- Źródło danych (URL strony, API, itp.)
data_source VARCHAR(500),
-- Proponowane dane jako JSON
proposed_data JSONB NOT NULL,
-- Komentarz AI wyjaśniający propozycję
ai_explanation TEXT,
-- Wskaźnik pewności AI (0.00 - 1.00)
confidence_score NUMERIC(3, 2),
-- Timestamps
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
reviewed_at TIMESTAMP,
applied_at TIMESTAMP,
expires_at TIMESTAMP,
-- Kto przeglądał
reviewed_by_id INTEGER REFERENCES users(id),
-- Komentarz przy akceptacji/odrzuceniu
review_comment TEXT,
-- Które pola zostały zaakceptowane (częściowa akceptacja)
approved_fields JSONB
);
-- Indeksy
CREATE INDEX IF NOT EXISTS idx_ai_proposals_company ON ai_enrichment_proposals(company_id);
CREATE INDEX IF NOT EXISTS idx_ai_proposals_status ON ai_enrichment_proposals(status);
CREATE INDEX IF NOT EXISTS idx_ai_proposals_created ON ai_enrichment_proposals(created_at DESC);
-- Komentarze
COMMENT ON TABLE ai_enrichment_proposals IS 'Propozycje wzbogacenia danych przez AI wymagające akceptacji';
COMMENT ON COLUMN ai_enrichment_proposals.status IS 'Status: pending, approved, rejected, expired';
COMMENT ON COLUMN ai_enrichment_proposals.proposed_data IS 'JSON z proponowanymi danymi (services, keywords, summary, etc.)';
COMMENT ON COLUMN ai_enrichment_proposals.approved_fields IS 'Lista zaakceptowanych pól przy częściowej akceptacji';
-- Grant permissions
GRANT ALL ON TABLE ai_enrichment_proposals TO nordabiz_app;
GRANT USAGE, SELECT ON SEQUENCE ai_enrichment_proposals_id_seq TO nordabiz_app;