transceiver-db/sql/015-blog-feedback.sql
Rene Fichtmueller d1d23ce31d feat(v0.2.1): data confidence tracking + validation + blog feedback system
- Migration 016: data_confidence column (vendor_verified/enriched_estimated/scraped_unverified)
- Migration 015: blog_feedback table with 8 quality scores + free text
- Validation script: 8 physics-based rules (wavelength↔fiber, reach plausibility, power limits)
- Blog feedback API: POST /api/blog/:id/feedback + training data export
- FO Blog Pipeline v3: 10-step Flexoptix Style prompts (Less bullshit. More engineering.)
- Auto-fix: wavelength↔fiber mismatches corrected automatically
2026-03-31 09:12:37 +02:00

44 lines
2.3 KiB
SQL

-- Migration 015: Blog Feedback System for FO_Blog_LLM training
CREATE TABLE IF NOT EXISTS blog_feedback (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
blog_id UUID REFERENCES blog_drafts(id) ON DELETE CASCADE,
-- Ratings (1-10)
score_overall INTEGER CHECK (score_overall BETWEEN 1 AND 10),
score_technical_depth INTEGER CHECK (score_technical_depth BETWEEN 1 AND 10),
score_real_world INTEGER CHECK (score_real_world BETWEEN 1 AND 10),
score_clarity INTEGER CHECK (score_clarity BETWEEN 1 AND 10),
score_originality INTEGER CHECK (score_originality BETWEEN 1 AND 10),
score_engineer_voice INTEGER CHECK (score_engineer_voice BETWEEN 1 AND 10),
score_decision_value INTEGER CHECK (score_decision_value BETWEEN 1 AND 10),
score_failure_scenarios INTEGER CHECK (score_failure_scenarios BETWEEN 1 AND 10),
score_opinion_strength INTEGER CHECK (score_opinion_strength BETWEEN 1 AND 10),
-- Free text feedback (this gets fed back to the LLM)
feedback_text TEXT,
reviewer TEXT DEFAULT 'human', -- human, auto_qa, llm_self
-- Context for LLM training
blog_type TEXT, -- market_alert, migration_guide, etc.
blog_topic TEXT, -- original topic
improvements JSONB, -- array of specific improvement suggestions
-- Was this feedback used for training?
fed_to_llm BOOLEAN DEFAULT FALSE,
fed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_blog_feedback_blog ON blog_feedback(blog_id);
CREATE INDEX IF NOT EXISTS idx_blog_feedback_score ON blog_feedback(score_overall);
CREATE INDEX IF NOT EXISTS idx_blog_feedback_unfed ON blog_feedback(fed_to_llm) WHERE fed_to_llm = FALSE;
-- Track which LLM model/config was used for each blog
ALTER TABLE blog_drafts ADD COLUMN IF NOT EXISTS llm_model TEXT DEFAULT 'qwen2.5:14b';
ALTER TABLE blog_drafts ADD COLUMN IF NOT EXISTS llm_temperature NUMERIC DEFAULT 0.7;
ALTER TABLE blog_drafts ADD COLUMN IF NOT EXISTS pipeline_version TEXT DEFAULT 'v3-flexoptix-style';
ALTER TABLE blog_drafts ADD COLUMN IF NOT EXISTS pipeline_steps_completed INTEGER DEFAULT 0;
ALTER TABLE blog_drafts ADD COLUMN IF NOT EXISTS auto_qa_score JSONB;