- 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>
59 lines
2.1 KiB
SQL
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;
|