-- Platform tables for submissions + voting
BEGIN;

CREATE SCHEMA IF NOT EXISTS platform;

-- Ideas/submissions — anyone can propose
CREATE TABLE platform.ideas (
  id            BIGSERIAL PRIMARY KEY,
  title         TEXT NOT NULL,
  problem       TEXT NOT NULL,         -- "Ce te deranjează?"
  solution      TEXT,                  -- "Cum ar trebui să fie?"
  category      TEXT DEFAULT 'general', -- transparenta, cereri, ai, educatie, sanatate, etc
  author_name   TEXT,                  -- optional
  author_email  TEXT,                  -- optional, for follow-up
  author_city   TEXT,                  -- optional
  status        TEXT DEFAULT 'nou',    -- nou, în discuție, în lucru, mvp, live, respins
  votes         INTEGER DEFAULT 0,
  created_at    TIMESTAMPTZ DEFAULT now(),
  updated_at    TIMESTAMPTZ DEFAULT now()
);

CREATE INDEX idx_ideas_votes ON platform.ideas(votes DESC);
CREATE INDEX idx_ideas_status ON platform.ideas(status);
CREATE INDEX idx_ideas_created ON platform.ideas(created_at DESC);
CREATE INDEX idx_ideas_category ON platform.ideas(category);

-- Votes — fingerprint-based (no accounts)
CREATE TABLE platform.votes (
  id         BIGSERIAL PRIMARY KEY,
  idea_id    BIGINT REFERENCES platform.ideas(id) ON DELETE CASCADE,
  fingerprint TEXT NOT NULL,  -- hash of IP + user-agent
  created_at TIMESTAMPTZ DEFAULT now(),
  UNIQUE(idea_id, fingerprint)
);

-- Comments on ideas — simple, no accounts
CREATE TABLE platform.comments (
  id         BIGSERIAL PRIMARY KEY,
  idea_id    BIGINT REFERENCES platform.ideas(id) ON DELETE CASCADE,
  author_name TEXT DEFAULT 'Anonim',
  content    TEXT NOT NULL,
  created_at TIMESTAMPTZ DEFAULT now()
);

CREATE INDEX idx_comments_idea ON platform.comments(idea_id, created_at);

-- Seed some initial ideas to get things started
INSERT INTO platform.ideas (title, problem, solution, category, author_name, status, votes) VALUES
(
  'Verificare status dosar la orice instituție',
  'Trebuie să mergi fizic sau să suni repetat ca să afli ce se întâmplă cu dosarul tău. Fiecare instituție are alt sistem, unele nu au deloc.',
  'O platformă unificată unde introduci numărul de dosar și vezi statusul instant, indiferent de instituție.',
  'cereri', 'Comunitate', 'nou', 42
),
(
  'Extras Carte Funciară online, instant',
  'Durează 3-5 zile și necesită deplasare la OCPI. În 2026, un document public ar trebui disponibil online.',
  'Introduci număr cadastral → primești PDF cu extrasul CF. Fără deplasare, fără așteptare.',
  'cereri', 'Comunitate', 'nou', 38
),
(
  'Certificat fiscal în 30 de secunde',
  'Stai la coadă la primărie, plătești timbru, aștepți 1-3 zile. De 3 ori pe an minim, dacă ai firmă.',
  'CNP sau CUI → certificat fiscal digital, semnat electronic, valid legal.',
  'cereri', 'Comunitate', 'nou', 35
),
(
  'Programare buletin/pașaport care chiar funcționează',
  'Sistemul MAI e permanent supraîncărcat, cade, nu găsești slot-uri. Ajungi la 4 dimineața la coadă.',
  'Calendar cu disponibilitate reală, notificare când se eliberează slot, programare în 3 click-uri.',
  'cereri', 'Comunitate', 'nou', 50
),
(
  'Calculator taxe și impozite locale',
  'Nu știi cât datorezi, trebuie să mergi la primărie să afli. Fiecare primărie calculează diferit.',
  'Introdu adresa sau nr. cadastral → vezi toate taxele datorate, cu deadline-uri și posibilitate de plată.',
  'transparenta', 'Comunitate', 'nou', 30
),
(
  'Monitor licitații publice cu alerte',
  'Informația e dispersată, greu de urmărit. Firmele mici pierd oportunități pentru că nu știu de ele.',
  'Feed cu licitații filtrat pe domeniu/județ/valoare. Alerte pe email când apare ceva relevant.',
  'transparenta', 'Comunitate', 'în lucru', 25
),
(
  'Profil digital per primărie',
  'Nu existe un loc centralizat unde să vezi cum performează primăria ta: buget, licitații, servicii digitale.',
  'Pagina per primărie cu: buget, top cheltuieli, licitații, nivel digitalizare, comparație cu altele.',
  'transparenta', 'Comunitate', 'în lucru', 22
),
(
  'Generator cereri și petiții cu AI',
  'Oamenii nu știu cum să formuleze o cerere oficială. Limbajul birocratic intimidează.',
  'Descrii în cuvintele tale ce vrei → AI generează cererea completă, cu referințe legale corecte.',
  'ai', 'Comunitate', 'nou', 28
);

COMMIT;
