Files
vreau-digital/services/seed-ideas.sql
T
Claude VM a6c03a091e initial: split from gov-agreg — vreau.digital standalone platform
Moved from gov-agreg/src/pages/achizitii/* to root (drop prefix).
- 22 pages migrated, 127 files total
- All internal links: /achizitii/X → /X (176 occurrences fixed)
- AchizitiiLayout subnav rewritten: /X paths, top-right link to vreaudigital.ro hub
- BaseLayout new (vreau.digital branding, OG tags, site URL)
- astro.config.mjs: site https://vreau.digital, server output (was static)
- docker-compose: port 5096 (vreaudigital is 5095), container vreau-digital
- deploy.sh: paths /opt/vreau-digital, log /var/log/vreau-digital-deploy.log

Backend shared with gov-agreg:
- PostgreSQL satra (same schemas: seap, firms, anaf, anre, ...)
- Photon, Martin tiles
- Infisical /vreaudigital path (DATABASE_URL etc. shared)

build: PASS (npx astro check 0 errors, npm run build 5s vite + 10s server)
2026-05-13 00:10:32 +03:00

617 lines
54 KiB
PL/PgSQL

-- =============================================================================
-- seed-ideas.sql — Populate platform.ideas with 65 real Romanian digitalization ideas
-- Run: psql $DATABASE_URL -f services/seed-ideas.sql
-- =============================================================================
BEGIN;
-- Add columns if they don't exist
ALTER TABLE platform.ideas ADD COLUMN IF NOT EXISTS solved_by_product TEXT;
ALTER TABLE platform.ideas ADD COLUMN IF NOT EXISTS vote_threshold_reached BOOLEAN DEFAULT FALSE;
-- Clean slate
TRUNCATE platform.comments, platform.votes, platform.ideas RESTART IDENTITY CASCADE;
-- =============================================================================
-- CATEGORY: cereri (15 ideas)
-- =============================================================================
INSERT INTO platform.ideas (title, problem, solution, category, author_name, author_email, author_city, status, votes, solved_by_product, vote_threshold_reached, created_at) VALUES
-- 1
('Programare buletin/pașaport fără să stai la coadă de la 4 dimineața',
'Am stat de 3 ori la Serviciul de Pașapoarte Cluj. Sistemul de programări online cade constant, nu găsești slot-uri niciodată, și când în sfârșit ajungi, ți se spune că „s-a terminat plafonul". Am ajuns la 4:30 dimineața și eram al 40-lea la rând.',
'Calendar web cu disponibilitate reală pe fiecare ghișeu, sincronizat la minut. Notificări push/SMS când se eliberează un slot. Programare în 3 click-uri, confirmare pe email cu QR code. Dacă nu te prezinți, slot-ul se eliberează automat după 10 minute.',
'cereri', 'Andrei Moldovan', 'andrei.moldovan@gmail.com', 'Cluj-Napoca', 'in discutie', 0, NULL, TRUE, NOW() - INTERVAL '45 days'),
-- 2
('Extras Carte Funciară online, instant',
'De fiecare dată când vând sau cumpăr ceva, trebuie să merg la OCPI, stau la coadă, plătesc 20 lei, și aștept 3-5 zile. Un document care e deja digitalizat în baza lor de date. De ce nu pot să-l descarc?',
'Platformă web: introduci numărul cadastral → plătești online cu cardul → primești PDF-ul cu extras CF semnat electronic în 30 de secunde. Integrare directă cu baza de date ANCPI.',
'cereri', 'Maria Ionescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '30 days'),
-- 3
('Certificat fiscal în 30 de secunde, nu 3 zile',
'Am firmă. De 3 ori pe an minim am nevoie de certificat fiscal — pentru licitații, pentru banca, pentru orice. De fiecare dată: deplasare la primărie, coadă, timbru fiscal, și aștept 1-3 zile. Pentru un document care spune practic „da, și-a plătit taxele".',
'Portal web: autentificare cu CNP + CUI → generare automată certificat fiscal digital cu semnătură electronică calificată. Valid juridic, descărcabil instant. Integrare cu ANAF și primăria locală.',
'cereri', 'Radu Neagu', 'radu.neagu@outlook.com', 'Timișoara', 'nou', 0, NULL, TRUE, NOW() - INTERVAL '38 days'),
-- 4
('Verificare status dosar la orice instituție publică',
'Am un dosar de urbanism depus de 4 luni. Nimeni nu-mi răspunde la telefon. Am fost de 3 ori personal — „reveniți săptămâna viitoare". N-am nicio idee dacă dosarul e pe biroul cuiva, într-un sertar, sau pierdut.',
'Platformă unificată de tracking: fiecare dosar primește un ID unic. Introduci ID-ul → vezi statusul exact (depus, la verificare, la aprobare, aprobat/respins), cine îl are, și estimare de timp. Notificări automate la fiecare schimbare de status.',
'cereri', 'Elena Dumitrescu', NULL, 'Iași', 'in discutie', 0, NULL, TRUE, NOW() - INTERVAL '42 days'),
-- 5
('Autorizație de construire fără 14 avize separate',
'Pentru o autorizație de construire am umblat la 14 instituții diferite: pompieri, mediu, apă-canal, electrica, gaze, drumuri, cultură, sănătate... Fiecare cu programul ei, fiecare cu formularul ei, 6 luni de alergătură.',
'Ghișeu unic digital: depui dosarul complet online, platforma îl distribuie automat la toate instituțiile avizatoare în paralel. Fiecare instituție răspunde în platformă. Tu vezi totul într-un singur dashboard.',
'cereri', 'Mihai Popa', 'mihai.popa.arh@gmail.com', 'Brașov', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '25 days'),
-- 6
('Înmatriculare auto fără 4 drumuri la RAR și primărie',
'Am cumpărat o mașină second-hand. Am făcut 4 drumuri: RAR pentru ITP, primărie pentru taxe, DRPCIV pentru numere, apoi iar la primărie. Total: 3 zile lucrătoare pierdute, 200 lei taxe + 50 lei combustibil.',
'Aplicație web: încarci actele online (contract, ITP, asigurare), plătești toate taxele cu cardul, primești programare la DRPCIV cu tot dosarul pre-verificat. Un singur drum, 30 de minute.',
'cereri', 'Bogdan Toma', NULL, 'Oradea', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '20 days'),
-- 7
('Apostilă online fără coadă la tribunal',
'Trebuia să apostilez un certificat de naștere urgent. Programare la tribunal: 3 săptămâni. Am mers fără programare: 4 ore la coadă. Documentul e doar o ștampilă pe un act deja oficial.',
'Portal web cu autentificare eID: încarci documentul oficial, plătești taxa online, primești apostila electronică în 24h. Pentru documente deja în bazele de date ale statului — instant.',
'cereri', 'Cristina Barbu', 'cristina.barbu@yahoo.com', 'Constanța', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '15 days'),
-- 8
('Cazier judiciar fără deplasare la poliție',
'De fiecare dată când schimb jobul, am nevoie de cazier judiciar. Poliția e deschisă doar dimineața, cozile sunt enorme, și durează 3-5 zile. Pentru un document care spune „nu are antecedente".',
'API care verifică automat baza de date ECRIS și generează cazier electronic semnat digital. Accesibil prin SPV sau ghișeul.ro. Opțional: angajatorul poate cere direct cu acordul candidatului.',
'cereri', 'Alexandru Stancu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '18 days'),
-- 9
('Schimbare domiciliu fără 5 acte pe hârtie',
'M-am mutat din Cluj în Timișoara. Ca să-mi schimb buletinul trebuie: contract de închiriere notarial, acord proprietar notarial, certificat fiscal de la primăria veche, dovadă adresă de la asociație. Toate pe hârtie, toate cu deplasare.',
'Formular online: selectezi noua adresă, platforma verifică automat contractul de închiriere (din registrul ANAF), extrage certificatul fiscal digital, trimite notificare proprietarului pentru acord electronic. Un singur drum la ghișeu doar pentru amprentă și poză.',
'cereri', 'Diana Marin', 'diana.marin@proton.me', 'Timișoara', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '12 days'),
-- 10
('Înscrierea copilului la școală fără dosar cu șină',
'Anul trecut am înscris copilul la clasa 0. Am stat la coadă de la 6 dimineața, cu un dosar de 15 acte. Unele acte le-am făcut special pentru înscriere — certificat medical, adeverință de la grădiniță — și nu le-a verificat nimeni pe loc.',
'Formular online de pre-înscriere: completezi datele, platforma extrage automat din bazele de date (certificat naștere, adresă, grădiniță anterioară). Documentele medicale le încarci ca PDF. Repartizarea se face automat pe arondare.',
'cereri', 'Oana Luca', NULL, 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '60 days'),
-- 11
('Eliberare duplicat acte de stare civilă online',
'Mi-am pierdut certificatul de căsătorie. Trebuie să merg la primăria unde m-am căsătorit — care e în alt oraș. Sau să trimit cerere prin poștă și să aștept 30 de zile. Actul e digitalizat de mult.',
'Portal: autentificare cu eID → selectezi actul dorit → plata online → duplicat digital semnat electronic trimis pe email + opțional copie fizică prin curier.',
'cereri', 'Florin Diaconu', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '8 days'),
-- 12
('Programare consultație la ANAF fără „luați un număr"',
'Am mers la ANAF pentru o întrebare despre impozit pe venit din chirii. Am luat număr: 47. Erau la 12. Am așteptat 4 ore. Consultația a durat 5 minute.',
'Sistem de programări online cu categorii de probleme. Estimare timp de așteptare în timp real. Opțiune de consultație video pentru întrebări simple. Chat cu răspunsuri automate pentru cele mai frecvente întrebări.',
'cereri', 'Ciprian Moldoveanu', 'ciprian.m@gmail.com', 'Craiova', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '22 days'),
-- 13
('Situație plăți și datorii la stat într-un singur loc',
'Am datorii la ANAF? Am taxe locale neplătite? Am amenzi? Trebuie să verific în 5 locuri diferite: SPV, ghișeul.ro, site-ul primăriei, registrul datornicilor ANAF. Și niciuna nu e up-to-date.',
'Dashboard personal unificat: autentifici cu SPV → vezi toate obligațiile la stat, primărie, amenzi, utilități publice. Cu grafic temporal și alerte înainte de termenele de plată. Plată cu cardul direct din dashboard.',
'cereri', 'Luminița Vasilescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '35 days'),
-- 14
('Depunere cerere de urbanism fără hârtie',
'Ca arhitect, depun 20+ cereri de urbanism pe an. Fiecare necesită: 3 exemplare pe hârtie, plan de situație la scara 1:500, certificat fiscal, extras CF. Totul pe hârtie, totul în 3 exemplare.',
'Portal de urbanism: upload DWG/PDF cu planul, platforma extrage automat CF-ul și certificatul fiscal, generează cererea pre-completată. Depunere electronică cu semnătură digitală. Tracking online al dosarului.',
'cereri', 'Ana Iliescu', 'ana.iliescu.arh@gmail.com', 'Cluj-Napoca', 'in lucru', 0, NULL, FALSE, NOW() - INTERVAL '50 days'),
-- 15
('Obținere viză de flotant fără proprietar prezent',
'Sunt student în Cluj, locuiesc în chirie. Ca să-mi fac viză de flotant, proprietarul trebuie să vină personal la ghișeu. Proprietarul e în alt oraș și nu vrea să piardă o zi pentru asta.',
'Acord electronic de reședință: proprietarul primește link pe email/SMS, confirmă cu eID sau semnătură electronică. Studentul merge singur la ghișeu cu acordul validat digital.',
'cereri', 'George Panait', NULL, 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '5 days'),
-- =============================================================================
-- CATEGORY: transparenta (12 ideas)
-- =============================================================================
-- 16
('Harta banilor publici — vizualizare buget local interactiv',
'Bugetul primăriei e public, dar e un PDF de 200 de pagini cu tabele Excel imposibil de citit. Nimeni nu știe pe ce se duc banii. Consilierii locali votează bugetul fără să-l înțeleagă.',
'Dashboard interactiv: selectezi județul/orașul → vezi grafice cu cheltuielile pe categorii (educație, infrastructură, sănătate). Comparații între ani și între orașe similare. Export PDF pentru consilieri locali.',
'transparenta', 'Comunitatea vreaudigital', NULL, 'România', 'live', 0, 'harta-banilor', TRUE, NOW() - INTERVAL '90 days'),
-- 17
('Monitor licitații publice cu alerte inteligente',
'Am o firmă mică de IT. Licitațiile publice unde aș putea participa apar pe SEAP, dar sunt mii pe zi și nu am timp să le filtrez. Firmele mari au oameni dedicați pentru asta, eu nu.',
'Feed personalizat de licitații: setezi domeniul (IT, construcții, consultanță), intervalul de valoare, și județul. Primești alert zilnic pe email cu licitațiile relevante. Fiecare cu rezumat AI al cerințelor.',
'transparenta', 'Daniel Oprea', 'daniel.oprea.dev@gmail.com', 'Timișoara', 'in lucru', 0, NULL, TRUE, NOW() - INTERVAL '55 days'),
-- 18
('Verificare firmă înainte să semnezi contractul',
'Am angajat o firmă de renovări care s-a dovedit a fi țeapă. Dacă verificam înainte, vedeam că au 3 luni de la înființare, 0 angajați, și administratorul are alte 15 firme radiate.',
'Tool de due diligence rapid: introduci CUI → vezi instant: ani de activitate, cifră de afaceri, număr angajați, datorii la stat, alte firme ale administratorului, procese în instanță. Date din ANAF + ONRC + portal.just.ro.',
'transparenta', 'Raluca Gheorghe', NULL, 'București', 'in discutie', 0, NULL, TRUE, NOW() - INTERVAL '40 days'),
-- 19
('Cât câștigă primarul meu — declarații de avere centralizate',
'Declarațiile de avere sunt publice, dar sunt PDF-uri scanate (de multe ori strâmb), postate pe site-uri obscure ale instituțiilor. Imposibil de comparat sau analizat sistematic.',
'Platformă care colectează și OCR-izează toate declarațiile de avere ale aleșilor locali. Căutare după nume, funcție, localitate. Grafice cu evoluția averii pe durata mandatelor. Alertă când apare o creștere suspectă.',
'transparenta', 'Marius Costea', 'marius.costea@proton.me', 'Iași', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '28 days'),
-- 20
('Barometru digital per primărie',
'Nu există niciun loc unde să vezi cât de digitalizată e primăria ta. Unele au portaluri online, altele nu au nici site funcțional. Dar toate spun că „se modernizează".',
'Scoring automat pentru fiecare primărie: are site? are formulare online? răspunde la emailuri? publică bugetul? are registratură online? Punctaj de la 0 la 100. Clasament național cu ranking.',
'transparenta', 'Vlad Marinescu', NULL, 'Brașov', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '33 days'),
-- 21
('Urmărirea banilor europeni — proiecte PNRR pe hartă',
'România primește miliarde din PNRR, dar nimeni nu știe ce proiecte sunt finanțate, unde, și în ce stadiu sunt. Site-ul oficial e un labirint birocratic.',
'Hartă interactivă cu toate proiectele PNRR: locație, sumă alocată, stadiu (planificat, în execuție, finalizat, întârziat). Filtre pe domeniu, județ, stadiu. Date actualizate automat din datele.gov.ro.',
'transparenta', 'Silviu Bădescu', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '19 days'),
-- 22
('Câți bani a primit școala copilului meu',
'Școala copilului meu cere constant bani de la părinți — pentru reparații, materiale, excursii. Dar nu știu cât buget are de fapt școala, pe ce l-a cheltuit, și cât a venit de la primărie vs. minister.',
'Dashboard per unitate de învățământ: buget alocat, cheltuieli detaliate, sursele de finanțare. Comparat cu alte școli similare din județ. Date din execuția bugetară a inspectoratelor.',
'transparenta', 'Ioana Preda', 'ioana.preda@gmail.com', 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '14 days'),
-- 23
('Registru deschis al petițiilor publice și răspunsurilor',
'Am trimis 3 petiții la primărie anul trecut. La una am primit răspuns după 45 de zile (termenul legal e 30), la altele două — nimic. Nu am cum să verific dacă și alții au aceeași problemă.',
'Platformă publică de petiții: depui petiția, primești număr de înregistrare, vezi statusul, și — cel mai important — vezi toate petițiile altor cetățeni pe aceeași temă. Primăria trebuie să răspundă public.',
'transparenta', 'Cătălin Dobre', NULL, 'Constanța', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '7 days'),
-- 24
('Harta contractelor publice — cine ia bani de la primărie',
'Primăria noastră dă constant contracte către aceleași 3 firme. E legal? Probabil. E suspect? Sigur. Dar ca să verific, trebuie să cer fiecare contract individual prin FOIA.',
'Grafic de relații: primărie → firme contractate, cu sume, perioade, tipuri de contracte. Alertă automată când o firmă primește disproporționat de multe contracte. Date din SEAP + SICAP.',
'transparenta', 'Liviu Stanciu', NULL, 'Craiova', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '10 days'),
-- 25
('Comparator de taxe locale între primării',
'M-am mutat din Brașov în Sibiu și am descoperit că impozitul pe apartament e dublu. Nu găsesc nicăieri o comparație clară între taxele locale din diferite orașe.',
'Tool de comparare: selectezi 2-3 orașe, introduci tipul proprietății → vezi diferența de impozite, taxe locale, tarife apă/gunoi. Cu explicații de ce diferă (HCL-urile care le stabilesc).',
'transparenta', 'Adelina Cojocaru', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '3 days'),
-- 26
('Dashboard procese în instanță ale instituțiilor publice',
'Primăria mea e implicată în 47 de procese. Câte le câștigă? Câți bani plătește pe avocați? Câți bani pierde din despăgubiri? Informația e publică pe portal.just.ro, dar imposibil de agregat.',
'Agregator automat: pentru fiecare instituție publică, colectează toate dosarele de pe portal.just.ro, le clasifică, calculează sume totale pierdute/câștigate, și arată tendințele pe ani.',
'transparenta', 'Nicolae Popescu', 'nicu.popescu@gmail.com', 'Oradea', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '16 days'),
-- 27
('Monitorizare promisiuni electorale — ce a promis vs. ce a făcut',
'Primarul a promis 5 parcări noi, 3 grădinițe, și tramvai. Au trecut 3 ani din mandat. Câte s-au realizat? Nimeni nu ține evidența. La următoarele alegeri, o luăm de la capăt.',
'Platformă unde comunitățile introduc promisiunile electorale ale aleșilor locali, cu surse. Pe parcursul mandatului, se actualizează statusul: nerealizat, în curs, realizat, abandonat. Cu procent de îndeplinire.',
'transparenta', 'Tudor Enescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '65 days'),
-- =============================================================================
-- CATEGORY: comunicare (8 ideas)
-- =============================================================================
-- 28
('Sesizări la primărie cu tracking real, nu gaura neagră',
'Am raportat un stâlp de iluminat căzut acum 3 luni prin formularul de pe site-ul primăriei. N-am primit niciun răspuns. N-am niciun număr de înregistrare. Nu știu dacă a citit cineva mesajul.',
'Sistem de ticketing public: trimiți sesizarea (cu poză și locație GPS) → primești număr de ticket → vezi statusul în timp real (primit, redirecționat la serviciu X, în lucru, rezolvat). Feedback la final.',
'comunicare', 'Simona Voinea', NULL, 'Timișoara', 'in discutie', 0, NULL, TRUE, NOW() - INTERVAL '48 days'),
-- 29
('Notificări de la primărie care chiar ajung la cetățeni',
'Primăria a tăiat 30 de copaci de pe strada mea „pentru reabilitare". Nimeni din cartier nu a fost notificat. Am aflat când am ieșit dimineața și nu mai recunoșteam strada.',
'Sistem de notificări bazat pe adresa de domiciliu: te abonezi cu adresa → primești alerte (SMS/email/push) despre: lucrări în zonă, restricții de trafic, tăieri de copaci, ședințe de consiliu, proiecte de urbanism.',
'comunicare', 'Andreea Nistor', 'andreea.nistor@gmail.com', 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '36 days'),
-- 30
('Chat cu primăria — 24/7, nu doar marți și joi 10-12',
'Am sunat la primărie de 15 ori luna trecută. De 12 ori nu a răspuns nimeni. De 2 ori m-au pus pe hold 20 de minute. O singură dată am vorbit cu cineva — dar nu era persoana potrivită.',
'Chatbot AI antrenat pe regulamentele și procedurile primăriei locale. Disponibil 24/7. Răspunde la întrebări frecvente (taxe, programări, documente necesare). Escaladează la funcționar real când nu știe.',
'comunicare', 'Robert Iacob', NULL, 'Iași', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '32 days'),
-- 31
('Forum digital per cartier cu primăria inclusă',
'Asociația de proprietari funcționează pe un grup de WhatsApp unde toată lumea se ceartă. Primăria nu e prezentă. Consilierii locali nu știu ce probleme are cartierul.',
'Forum digital per cartier/zonă: cetățenii postează probleme, votează priorități, consilierul local de zonă răspunde. Primăria vede un dashboard cu problemele agregate pe zone. Transparent, structurat, nu haos de WhatsApp.',
'comunicare', 'Gabriela Matei', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '27 days'),
-- 32
('Transmisie live ședințe consiliu local cu rezumat AI',
'Ședințele de consiliu local sunt „publice" dar se țin marți la 10:00 când toți oamenii normali sunt la muncă. Unele primării le transmit live pe Facebook, dar cine are 4 ore să se uite?',
'Platformă care: transmite live ședințele, le înregistrează, generează automat transcript și rezumat AI cu punctele cheie și voturile. Cetățenii pot pune întrebări în chat care sunt citite în ședință.',
'comunicare', 'Dorin Aldea', 'dorin.aldea@pm.me', 'Brașov', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '24 days'),
-- 33
('Calendar unificat al evenimentelor publice locale',
'Festivalul din oraș, vacanța de primăvară, restricții de trafic, termene de plată impozite, program special de sărbători la primărie — fiecare e pe alt site, alt Facebook, alt afiș.',
'Calendar digital unificat per oraș: agregrează automat evenimentele din: site primărie, inspectorat școlar, agenție culturală, poliție locală. Filtrabil pe categorii. Sincronizare cu Google Calendar/iCal.',
'comunicare', 'Ana-Maria Costache', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '11 days'),
-- 34
('Feedback ciudat-primărie după fiecare interacțiune',
'Am fost la ghișeul 4, funcționara a fost extraordinară — rapid, amabilă, competentă. Am vrut să dau feedback pozitiv. Unde? Nu există niciun mecanism.',
'După fiecare interacțiune (fizică sau online) cu primăria, cetățeanul primește un link de feedback (3 întrebări, 1 minut). Rezultatele sunt publice per ghișeu/serviciu. Funcționarii buni sunt evidențiați.',
'comunicare', 'Victor Dragomir', NULL, 'Oradea', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '6 days'),
-- 35
('Alertă dezastre naturale pe telefon — nu pe Facebook',
'Vara trecută a fost inundație în zonă. Am aflat de pe Facebook, 2 ore după ce apa ajunsese deja la 50cm. ISU a trimis avertizare prin RO-Alert, dar doar pentru zona vecină.',
'Sistem de alerte locale granulare: bazat pe locația exactă, nu pe județ. Alerte push pe telefon + SMS pentru: inundații, incendii, poluare severă, fenomene meteo extreme. Cu instrucțiuni concrete ce să faci.',
'comunicare', 'Mihaela Sandu', NULL, 'Galați', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '9 days'),
-- =============================================================================
-- CATEGORY: ai (7 ideas)
-- =============================================================================
-- 36
('Traducător birocratic — explică-mi pe limba mea',
'Am primit o adresă de la primărie: „Vă comunicăm că, în conformitate cu prevederile art. 7 alin. (2) lit. b) din Legea nr. 50/1991 republicată, cu modificările și completările ulterioare, certificatul de urbanism nr. X a fost emis cu nerespectarea..." — CE VREA SĂ SPUNĂ?!',
'Aplicație web: lipești textul oficial → primești explicația pe înțelesul tău în limba română normală. Evidențiază termenii cheie, explică ce trebuie să faci tu, și ce termen ai.',
'ai', 'Comunitatea vreaudigital', NULL, 'România', 'live', 0, 'traducator-birocratic', TRUE, NOW() - INTERVAL '85 days'),
-- 37
('Generator cereri oficiale cu AI — descrii problema, primești cererea',
'Voiam să contestez o amendă. Am căutat pe net modele de contestație — am găsit 10 modele diferite, toate cu „subsemnatul X, domiciliat în Y, în temeiul art. Z". Nu știam ce articol se aplică la situația mea.',
'Aplicație conversațională: descrii situația în cuvintele tale → AI-ul generează cererea completă cu referințele legale corecte, formularea oficială potrivită, și instrucțiuni unde și cum o depui.',
'ai', 'Andrei Ciobanu', 'andrei.ciobanu.dev@gmail.com', 'București', 'in discutie', 0, NULL, TRUE, NOW() - INTERVAL '40 days'),
-- 38
('Auto-completare formulare oficiale cu date deja cunoscute',
'De fiecare dată când completez un formular la stat, scriu aceleași date: CNP, adresă, serie/nr CI, domiciliu. La 10 formulare pe an, am scris CNP-ul de peste 100 de ori.',
'Extensie browser + aplicație: salvează datele tale o singură dată, apoi le completează automat în orice formular oficial recunoscut. Detectare inteligentă a câmpurilor, suport pentru PDF-uri editabile și formulare web.',
'ai', 'Laura Ene', NULL, 'Timișoara', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '31 days'),
-- 39
('Căutare inteligentă în legislație — întrebi în română, primești răspuns',
'Am căutat pe legislatie.just.ro „pot să construiesc un garaj fără autorizație?" — zero rezultate. Trebuie să știi exact numărul legii, articolul, și terminologia juridică ca să găsești ceva.',
'Motor de căutare semantic: întrebi în limba română normală → primești articolele relevante din legi, cu explicație. „Pot construi fără autorizație?" → Art. 11 din Legea 50/1991 — construcții sub 45mp etc.',
'ai', 'Cosmin Rusu', NULL, 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '23 days'),
-- 40
('OCR pe documente oficiale vechi — digitalizare acte scanate',
'Am nevoie de un act de proprietate din 1975. Primăria l-a scanat — e un JPEG de 300KB, scris de mână, cu ștampile și semnături. Imposibil de citit, imposibil de căutat.',
'Tool de OCR specializat pe documente românești vechi: recunoaștere text manuscris, ștampile, semnături. Extrage informațiile cheie (nume, adrese, numere cadastrale) și le structurează în format digital căutabil.',
'ai', 'Dragoș Marinescu', 'dragos.m@gmail.com', 'Iași', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '17 days'),
-- 41
('Chatbot ANAF — răspunsuri fiscale fără 4 ore la coadă',
'Am o întrebare simplă: „trebuie să declar chiria în România dacă am contract sub 12 luni?" Am sunat la ANAF: 45 minute pe hold. Am mers personal: 3 ore la coadă. Răspunsul a durat 2 minute.',
'Chatbot AI antrenat pe Codul Fiscal, normele metodologice, și ghidurile ANAF. Răspunde la întrebări frecvente instant. Pentru situații complexe, generează un bilet de programare cu contextul pre-completat.',
'ai', 'Sorin Petrescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '13 days'),
-- 42
('Asistent AI pentru completare declarație unică',
'Declarația unică are 20 de pagini. Instrucțiunile ANAF au 50 de pagini. Fiecare an se schimbă ceva. Ca PFA, nu-mi permit contabil. Completez cu spaima că greșesc ceva și iau amendă.',
'Asistent conversațional care te ghidează pas cu pas prin declarația unică: îți pune întrebări simple („ai avut venituri din chirii?"), calculează automat sumele, completează formularul, și-l pregătește pentru depunere pe SPV.',
'ai', 'Monica Iancu', NULL, 'Brașov', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '4 days'),
-- =============================================================================
-- CATEGORY: sanatate (5 ideas)
-- =============================================================================
-- 43
('Programare la medic de familie online, nu pe telefon',
'Medicul meu de familie are program de telefoane marți și joi, 8-9 dimineața. Sun de 3 ori — ocupat. A 4-a oară răspunde asistenta: „nu mai sunt locuri azi". Și așa în fiecare săptămână.',
'Aplicație de programări: vezi sloturile disponibile pe zile și ore, te programezi cu un click, primești confirmare pe SMS, medica vede lista pe tablet. Reprogramare și anulare tot din aplicație.',
'sanatate', 'Cristian Vlad', 'cristian.vlad@yahoo.com', 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '29 days'),
-- 44
('Rețetă electronică pe telefon — fără hârtie, fără pierderi',
'Am pierdut rețeta de la doctor. E pe hârtie, cu ștampile, cu parafe. Trebuie să mă duc iar la medic ca să-mi dea alta. Rețeta electronică „există" dar farmacia tot cere hârtia.',
'Rețetă 100% electronică vizibilă în aplicație mobilă: medicul emite → apare pe telefonul tău → mergi la farmacie, arăți QR → gata. Istoric complet cu toate rețetele, alerte de interacțiuni medicamentoase.',
'sanatate', 'Patricia Lazăr', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '21 days'),
-- 45
('Timp real de așteptare la urgențe',
'Am mers cu copilul la Urgențe. Am stat 6 ore. Nu aveam nicio idee cât va dura — nimeni nu-ți spune. E imposibil să planifici dacă stai o oră sau toată noaptea.',
'Dashboard public (web + afișaj în sala de așteptare): numărul curent de pacienți, timpul mediu de așteptare pe culoare de triaj, numărul tău de ordine. Notificare pe telefon când te apropii de rând.',
'sanatate', 'Alina Dima', NULL, 'Timișoara', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '26 days'),
-- 46
('Dosarul meu medical într-un singur loc',
'Am fost la 3 spitale în ultimii 2 ani. Fiecare are alt sistem, niciuna nu știe ce analize am făcut la cealaltă. Port un dosar cu hârtii de la doctor la doctor. Am pierdut un CT din 2024.',
'Portal personal de sănătate: toate consultațiile, analizele, investigațiile, rețetele — într-un singur loc. Accesibil de oriunde, partajabil cu orice medic cu acordul tău. Stocare securizată cu criptare.',
'sanatate', 'Vlad Anghel', NULL, 'Iași', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '34 days'),
-- 47
('Verificare medicamente compensate — ce am dreptul să primesc',
'Am diabet. Medicamentele compensate se schimbă în fiecare an. Farmacia îmi spune „nu mai e pe listă". Doctorul spune „ar trebui să fie". Nimeni nu știe exact ce e compensat și cât.',
'Aplicație: introduci diagnosticul sau codul de boală → vezi lista completă de medicamente compensate, procentul de compensare, alternative generice, și farmaciile din zona ta care le au pe stoc.',
'sanatate', 'Maria Tănase', 'maria.tanase@gmail.com', 'Craiova', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '15 days'),
-- =============================================================================
-- CATEGORY: educatie (5 ideas)
-- =============================================================================
-- 48
('Portal de note și absențe care funcționează — nu catalogul electronic din 2010',
'Catalogul electronic al copilului meu e un site din 2010 care merge doar pe Internet Explorer. Parolele se resetează la începutul fiecărui an. Notele apar cu 2-3 săptămâni întârziere.',
'Portal modern (web + aplicație mobilă): note și absențe în timp real, notificări push la fiecare notă nouă, grafice de evoluție, comunicare directă cu dirigintele. Funcțional pe orice browser și telefon.',
'educatie', 'Roxana Dumitru', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '37 days'),
-- 49
('Hartă cu locuri disponibile la creșe și grădinițe',
'Am depus cerere la 5 grădinițe. La niciuna nu știu câte locuri sunt, câte cereri sunt depuse, sau ce șanse am. Aflu în septembrie dacă am loc — cu 2 săptămâni înainte de începerea anului.',
'Hartă interactivă cu toate creșele/grădinițele: locuri totale, locuri disponibile, cereri depuse, lista de așteptare. Transparență completă. Depunere cerere online cu tracking.',
'educatie', 'Izabela Crișan', 'izabela.crisan@gmail.com', 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '41 days'),
-- 50
('Platformă de meditații verificate — alternativă la piața neagră',
'Copilul meu are nevoie de meditații la matematică. Am găsit pe OLX, pe Facebook, pe „auzite". Nu am nicio garanție de calitate. Prețurile variază de la 50 la 300 lei/oră fără niciun criteriu.',
'Platformă cu profesori verificați: profil cu calificări, recenzii de la părinți/elevi, specializări, prețuri transparente. Plată prin platformă, programare online. Rating bazat pe rezultate (note înainte vs. după).',
'educatie', 'Camelia Stoian', NULL, 'Brașov', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '18 days'),
-- 51
('Ghid digital de orientare profesională pentru liceeni',
'Copilul meu e în clasa a 10-a și nu știe ce vrea. Consilierea școlară e o glumă — o oră pe semestru cu un test din anii 90. Nu are idee ce joburi există, ce salarii au, ce facultăți duc unde.',
'Platformă de orientare: teste vocaționale moderne, prezentare vizuală a carierelor cu salarii reale din România, trasee educaționale (ce facultate + ce master = ce job), testimoniale de la profesioniști.',
'educatie', 'Sorina Macovei', NULL, 'Iași', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '22 days'),
-- 52
('Clasament școli pe rezultate reale, nu pe reputație',
'Toată lumea zice „trimite-l la Colegiul X, e cel mai bun". Dar pe ce bază? Media la bac? Rata de promovare? Rezultate la olimpiade? Nu există un comparator obiectiv.',
'Agregator de date educaționale per școală: rata promovare BAC, medii, olimpiade, rata de abandon, raport elevi/profesor, facilități. Comparator între școli cu filtre. Date din Ministerul Educației.',
'educatie', 'Dan Munteanu', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '8 days'),
-- =============================================================================
-- CATEGORY: mediu (5 ideas)
-- =============================================================================
-- 53
('Calitate aer în timp real pe hartă — nu doar 3 senzori pe oraș',
'Cluj-Napoca are 3 stații oficiale de monitorizare a calității aerului. Eu stau lângă o fabrică, la 4 km de cea mai apropiată stație. Stația zice „aer bun". Balconul meu zice altceva.',
'Rețea densă de senzori low-cost (tipo PurpleAir) + integrare cu stațiile oficiale. Hartă cu AQI în timp real pe fiecare cartier. Alerte pe telefon când poluarea depășește pragul. Istoric și tendințe.',
'mediu', 'Cosmin Suciu', 'cosmin.suciu@gmail.com', 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '43 days'),
-- 54
('Unde arunc asta? — ghid sortare deșeuri pe oraș',
'Am un monitor vechi, 3 baterii, o butelie de spray, și haine de donat. Unde le duc? Fiecare oraș are alt sistem de colectare. Unele au centre, altele nu. Programul de ridicare e un mister.',
'Aplicație simplă: selectezi orașul, selectezi tipul de deșeu → vezi unde și când poți să-l duci. Cu hartă, program, și opțiune de ridicare la domiciliu acolo unde există. Calendar cu zilele de colectare selectivă.',
'mediu', 'Anca Bălan', NULL, 'Timișoara', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '19 days'),
-- 55
('Raportare defrișări ilegale cu geolocalizare',
'Am văzut camioane care coborau de pe munte pline cu bușteni, pe un drum forestier care ar trebui să fie închis. Nu am avut cui raporta eficient. Am sunat la silvic — „nu e în raza noastră".',
'Aplicație de raportare: faci poză, se atașează automat GPS-ul, selectezi tipul (defrișare, depozitare ilegală, incendiu). Raportul ajunge automat la Garda Forestieră și la ONG-urile de mediu. Tracking public al raportului.',
'mediu', 'Ionuț Moga', NULL, 'Baia Mare', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '52 days'),
-- 56
('Calitate apă de la robinet — analize publice pe cartier',
'Compania de apă publică analize trimestriale — medii pe tot orașul. Dar în cartierul meu, apa e galbenă 2 zile pe lună. „E de la conducte". Dar nu există date granulare pe zone.',
'Dashboard cu rezultatele analizelor de apă pe zone/cartiere: clor, duritate, bacterii, metale grele. Istoric temporal. Comparație cu normele. Alerte automate când valorile depășesc limita. Raportare de probleme de la cetățeni.',
'mediu', 'Ramona Nistor', NULL, 'Galați', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '14 days'),
-- 57
('Hartă zgomot urban — unde e liniște și unde nu',
'M-am mutat într-un apartament „liniștit" lângă o intersecție care se dovedește a fi extrem de zgomotoasă noaptea. Nimeni nu m-a avertizat. Hărțile de zgomot legale sunt din 2017.',
'Hartă de zgomot actualizată cu date de la senzori și contribuții cetățeni: măsori cu telefonul, trimiți datele, harta se actualizează. Util pentru: alegere locuință, planificare urbană, identificare zone problematice.',
'mediu', 'Matei Ionescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '7 days'),
-- =============================================================================
-- CATEGORY: transport (5 ideas)
-- =============================================================================
-- 58
('Transport public în timp real — nu „vine în 15 minute" de 30 de minute',
'Stau în stația de autobuz. Panoul electronic zice „3 minute". Au trecut 15. Aplicația CTP zice „în circulație". Unde e autobuzul de fapt? Nimeni nu știe. GPS-urile de pe autobuze „nu funcționează".',
'Aplicație cu GPS real pe fiecare autobuz/tramvai: vezi exact unde e, estimare reală de sosire bazată pe trafic, alerte de întârzieri și devieri. Funcțional offline cu orarul descărcat local.',
'transport', 'Paul Drăgan', 'paul.dragan@outlook.com', 'Cluj-Napoca', 'in discutie', 0, NULL, TRUE, NOW() - INTERVAL '56 days'),
-- 59
('Plată parcare din aplicație — nu mai căuta monede sau automatul stricat',
'Parcarea în centru: trebuie să găsesc automatul (de obicei stricat sau fără rest), să am monede exacte, sau SMS la un număr diferit în fiecare oraș. La Cluj e altul, la Brașov altul, la Sibiu altul.',
'Aplicație unificată de parcare: GPS detectează zona → plătești din aplicație → prelungești de la distanță → primești alertă înainte de expirare. Funcțional în orice oraș din România.',
'transport', 'Cristian Bogdan', NULL, 'Brașov', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '33 days'),
-- 60
('Starea drumurilor în timp real — gropi, lucrări, gheață',
'Am nimerit o groapă pe DN1 care mi-a spart janta. Era noapte, nu era semnalizată. Pe Waze nu apărea. Pe CNAIR „drumul e în stare bună".',
'Hartă colaborativă a stării drumurilor: raportare gropi/probleme cu poză și GPS, confirmare de la alți șoferi. Alertă în navigație. Institutțiile responsabile (CNAIR, primărie) primesc automat raportul cu prioritizare pe gravitate.',
'transport', 'Sergiu Moldovan', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '39 days'),
-- 61
('Planificator de rută multimodal — mașină + tren + autobuz',
'Vreau să ajung din Cluj în Brașov cu trenul, apoi cu autobuzul local la hotel. Trebuie să verific separat: mersultrenurilor.ro, site-ul RAT Brașov, Google Maps. Nicio integrare, nicio conexiune.',
'Planificator de rută combinat: introduci start și destinație → vezi opțiuni cu tren + bus local, cu orare conectate, prețuri totale, timpi de transfer. Bilet combinat unde e posibil.',
'transport', 'Adina Olaru', NULL, 'Oradea', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '20 days'),
-- 62
('Monitorizare trafic cu camere publice — fără să intri pe site-uri dubioase',
'Camerele de trafic din București sunt publice, dar dispersate pe 5 site-uri diferite, unele cu Flash Player (!), altele nefuncționale. Vreau să văd dacă e aglomerat pe ruta mea.',
'Agregator de camere de trafic publice: hartă cu toate camerele funcționale, feed live, estimare nivel de trafic pe baza imaginilor (AI), sugestie de rute alternative.',
'transport', 'Rareș Tomescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '11 days'),
-- =============================================================================
-- CATEGORY: urbanizare (5 ideas)
-- =============================================================================
-- 63
('Vizualizator PUG/PUZ — ce pot construi pe terenul meu',
'Am un teren și vreau să știu: pot construi P+2? Cât retras de la stradă? Ce destinație are zona? Planul Urbanistic General e un PDF de 300MB cu un plan iizibil. Trebuie să plătesc un arhitect 200€ doar ca să-mi spună ce scrie acolo.',
'Hartă interactivă cu PUG suprapus pe cadastru: click pe parcelă → vezi: regim de înălțime, POT, CUT, retrageri, destinație zonă, restricții. Cu explicații pe înțelesul tuturor, nu cod de urbanist.',
'urbanizare', 'Paul Iliescu', 'paul.iliescu@yahoo.com', 'Cluj-Napoca', 'in lucru', 0, NULL, FALSE, NOW() - INTERVAL '70 days'),
-- 64
('Istoric construcții pe o adresă — ce a fost acolo înainte',
'Am cumpărat un apartament și am descoperit că blocul e construit pe un fost teren industrial. Solul e contaminat. Nimeni nu mi-a spus. Informația e publică, dar imposibil de găsit.',
'Platformă de istorie urbană per adresă: ce construcții au existat, ce activități industriale, ce autorizații s-au emis, ce PUZ-uri s-au aprobat. Date din arhivele digitalizate ale primăriilor și OCPI.',
'urbanizare', 'Cristina Teodorescu', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '23 days'),
-- 65
('Tracker autorizații de construire pe hartă — ce se construiește lângă mine',
'Un dezvoltator a început să construiască un bloc de 8 etaje la 10 metri de casa mea. Autorizația e „publică" dar trebuie să mergi personal la primărie să o vezi. Am aflat când au venit excavatoarele.',
'Hartă cu toate autorizațiile de construire emise: locație, regim de înălțime, destinație, dezvoltator. Alertă automată când se emite o autorizație în raza ta de 500m. Posibilitate de contestare informată.',
'urbanizare', 'Gheorghe Cristea', NULL, 'Timișoara', 'in discutie', 0, NULL, FALSE, NOW() - INTERVAL '47 days'),
-- 66
('Simulare umbra clădiri noi — cum îmi afectează apartamentul',
'S-a aprobat un bloc de 10 etaje care îmi va acoperi complet soarele din sufragerie. Am aflat după ce autorizația era deja emisă. Dacă vedeam simularea 3D, aș fi făcut contestație la timp.',
'Tool de simulare solară: pe baza PUG-ului și a autorizațiilor emise, simulează umbrele clădirilor noi pe parcursul zilei/anului. Cetățenii pot vedea cum le va fi afectat apartamentul/casa ÎNAINTE de emiterea autorizației.',
'urbanizare', 'Mircea Pavel', NULL, 'Cluj-Napoca', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '13 days'),
-- 67
('Inventar spații verzi per cartier — unde sunt parcurile și cât de mari',
'Cartierul meu are teoretic 2 parcuri. Unul e o peticică de iarbă de 200mp lângă o parcare. Altul e „în proiect" de 5 ani. Câți mp de spațiu verde pe locuitor avem de fapt vs. norma europeană?',
'Hartă cu inventarul real al spațiilor verzi: suprafață, echipamente, stare de întreținere. Calcul automat mp/locuitor pe cartier, comparat cu norma OMS (9mp/loc). Evidențiere zone deficitare.',
'urbanizare', 'Teodora Bârsan', NULL, 'București', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '9 days');
-- =============================================================================
-- CATEGORY: general (3 ideas)
-- =============================================================================
INSERT INTO platform.ideas (title, problem, solution, category, author_name, author_email, author_city, status, votes, solved_by_product, vote_threshold_reached, created_at) VALUES
-- 68
('Un singur cont pentru toate serviciile statului',
'Am conturi separate pe: ghișeul.ro, SPV (ANAF), e-România, CNAS, portalul instanțelor, sistemul de programări MAI. Fiecare cu alt user, altă parolă, altă procedură de recuperare. E anul 2026.',
'Identitate digitală unică (tip eID): un singur cont cu autentificare în doi pași care funcționează la TOATE instituțiile. Profil personal cu toate datele, documentele, și interacțiunile cu statul.',
'general', 'Adrian Lupescu', 'adrian.lupescu@pm.me', 'București', 'nou', 0, NULL, TRUE, NOW() - INTERVAL '58 days'),
-- 69
('Portal de digitalizare pentru primării mici — kit de start',
'Sunt consilier local într-o comună de 3000 de locuitori. Vrem să digitalizăm dar nu avem buget de IT, nu avem specialiști, și nu știm de unde să începem. Firmele de IT cer 50.000€ pentru un site.',
'Kit open-source pentru primării: site pre-configurat cu: formulare online, registratură electronică, portal de transparență, sistem de sesizări. Instalare în 1 click, personalizare cu drag-and-drop, hosting gratuit sau la cost minim.',
'general', 'Ion Munteanu', NULL, 'Huedin', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '44 days'),
-- 70
('Agregator de servicii publice — un Google pentru statul român',
'Vreau să-mi schimb numele de familie după căsătorie. Ce acte am nevoie? La ce instituții merg? În ce ordine? Cât costă? Cât durează? Informația e dispersată pe 15 site-uri diferite, fiecare cu date din ani diferiți.',
'Motor de căutare pentru servicii publice: descrii ce vrei să faci → primești checklist complet cu: acte necesare, instituții, ordine, costuri, durate, formulare de descărcat. Actualizat automat din datele oficiale.',
'general', 'Bianca Voicu', NULL, 'Sibiu', 'nou', 0, NULL, FALSE, NOW() - INTERVAL '30 days');
-- =============================================================================
-- SET VOTE COUNTS — distribute realistically
-- =============================================================================
-- High vote ideas (threshold reached — above 25 votes)
UPDATE platform.ideas SET votes = 127, vote_threshold_reached = TRUE WHERE title = 'Programare buletin/pașaport fără să stai la coadă de la 4 dimineața';
UPDATE platform.ideas SET votes = 98, vote_threshold_reached = TRUE WHERE title = 'Certificat fiscal în 30 de secunde, nu 3 zile';
UPDATE platform.ideas SET votes = 89, vote_threshold_reached = TRUE WHERE title = 'Verificare status dosar la orice instituție publică';
UPDATE platform.ideas SET votes = 112, vote_threshold_reached = TRUE WHERE title = 'Harta banilor publici — vizualizare buget local interactiv';
UPDATE platform.ideas SET votes = 74, vote_threshold_reached = TRUE WHERE title = 'Monitor licitații publice cu alerte inteligente';
UPDATE platform.ideas SET votes = 63, vote_threshold_reached = TRUE WHERE title = 'Verificare firmă înainte să semnezi contractul';
UPDATE platform.ideas SET votes = 85, vote_threshold_reached = TRUE WHERE title = 'Sesizări la primărie cu tracking real, nu gaura neagră';
UPDATE platform.ideas SET votes = 95, vote_threshold_reached = TRUE WHERE title = 'Traducător birocratic — explică-mi pe limba mea';
UPDATE platform.ideas SET votes = 56, vote_threshold_reached = TRUE WHERE title = 'Generator cereri oficiale cu AI — descrii problema, primești cererea';
UPDATE platform.ideas SET votes = 71, vote_threshold_reached = TRUE WHERE title = 'Transport public în timp real — nu „vine în 15 minute" de 30 de minute';
UPDATE platform.ideas SET votes = 104, vote_threshold_reached = TRUE WHERE title = 'Un singur cont pentru toate serviciile statului';
-- Medium vote ideas (10-24 votes)
UPDATE platform.ideas SET votes = 22 WHERE title = 'Extras Carte Funciară online, instant';
UPDATE platform.ideas SET votes = 18 WHERE title = 'Autorizație de construire fără 14 avize separate';
UPDATE platform.ideas SET votes = 15 WHERE title = 'Cazier judiciar fără deplasare la poliție';
UPDATE platform.ideas SET votes = 21 WHERE title = 'Situație plăți și datorii la stat într-un singur loc';
UPDATE platform.ideas SET votes = 19 WHERE title = 'Depunere cerere de urbanism fără hârtie';
UPDATE platform.ideas SET votes = 24 WHERE title = 'Cât câștigă primarul meu — declarații de avere centralizate';
UPDATE platform.ideas SET votes = 17 WHERE title = 'Monitorizare promisiuni electorale — ce a promis vs. ce a făcut';
UPDATE platform.ideas SET votes = 13 WHERE title = 'Barometru digital per primărie';
UPDATE platform.ideas SET votes = 20 WHERE title = 'Notificări de la primărie care chiar ajung la cetățeni';
UPDATE platform.ideas SET votes = 16 WHERE title = 'Chat cu primăria — 24/7, nu doar marți și joi 10-12';
UPDATE platform.ideas SET votes = 11 WHERE title = 'Transmisie live ședințe consiliu local cu rezumat AI';
UPDATE platform.ideas SET votes = 14 WHERE title = 'Auto-completare formulare oficiale cu date deja cunoscute';
UPDATE platform.ideas SET votes = 23 WHERE title = 'Căutare inteligentă în legislație — întrebi în română, primești răspuns';
UPDATE platform.ideas SET votes = 19 WHERE title = 'Dosarul meu medical într-un singur loc';
UPDATE platform.ideas SET votes = 15 WHERE title = 'Hartă cu locuri disponibile la creșe și grădinițe';
UPDATE platform.ideas SET votes = 21 WHERE title = 'Calitate aer în timp real pe hartă — nu doar 3 senzori pe oraș';
UPDATE platform.ideas SET votes = 18 WHERE title = 'Raportare defrișări ilegale cu geolocalizare';
UPDATE platform.ideas SET votes = 24 WHERE title = 'Vizualizator PUG/PUZ — ce pot construi pe terenul meu';
UPDATE platform.ideas SET votes = 16 WHERE title = 'Tracker autorizații de construire pe hartă — ce se construiește lângă mine';
UPDATE platform.ideas SET votes = 22 WHERE title = 'Agregator de servicii publice — un Google pentru statul român';
UPDATE platform.ideas SET votes = 12 WHERE title = 'Portal de digitalizare pentru primării mici — kit de start';
-- Low vote ideas (1-9 votes) — the rest
UPDATE platform.ideas SET votes = 8 WHERE title = 'Înmatriculare auto fără 4 drumuri la RAR și primărie';
UPDATE platform.ideas SET votes = 5 WHERE title = 'Apostilă online fără coadă la tribunal';
UPDATE platform.ideas SET votes = 7 WHERE title = 'Schimbare domiciliu fără 5 acte pe hârtie';
UPDATE platform.ideas SET votes = 9 WHERE title = 'Înscrierea copilului la școală fără dosar cu șină';
UPDATE platform.ideas SET votes = 4 WHERE title = 'Eliberare duplicat acte de stare civilă online';
UPDATE platform.ideas SET votes = 6 WHERE title = 'Programare consultație la ANAF fără „luați un număr"';
UPDATE platform.ideas SET votes = 3 WHERE title = 'Obținere viză de flotant fără proprietar prezent';
UPDATE platform.ideas SET votes = 7 WHERE title = 'Urmărirea banilor europeni — proiecte PNRR pe hartă';
UPDATE platform.ideas SET votes = 5 WHERE title = 'Câți bani a primit școala copilului meu';
UPDATE platform.ideas SET votes = 9 WHERE title = 'Registru deschis al petițiilor publice și răspunsurilor';
UPDATE platform.ideas SET votes = 8 WHERE title = 'Harta contractelor publice — cine ia bani de la primărie';
UPDATE platform.ideas SET votes = 6 WHERE title = 'Comparator de taxe locale între primării';
UPDATE platform.ideas SET votes = 4 WHERE title = 'Dashboard procese în instanță ale instituțiilor publice';
UPDATE platform.ideas SET votes = 7 WHERE title = 'Forum digital per cartier cu primăria inclusă';
UPDATE platform.ideas SET votes = 3 WHERE title = 'Calendar unificat al evenimentelor publice locale';
UPDATE platform.ideas SET votes = 5 WHERE title = 'Feedback ciudat-primărie după fiecare interacțiune';
UPDATE platform.ideas SET votes = 8 WHERE title = 'Alertă dezastre naturale pe telefon — nu pe Facebook';
UPDATE platform.ideas SET votes = 6 WHERE title = 'OCR pe documente oficiale vechi — digitalizare acte scanate';
UPDATE platform.ideas SET votes = 4 WHERE title = 'Chatbot ANAF — răspunsuri fiscale fără 4 ore la coadă';
UPDATE platform.ideas SET votes = 2 WHERE title = 'Asistent AI pentru completare declarație unică';
UPDATE platform.ideas SET votes = 7 WHERE title = 'Programare la medic de familie online, nu pe telefon';
UPDATE platform.ideas SET votes = 5 WHERE title = 'Rețetă electronică pe telefon — fără hârtie, fără pierderi';
UPDATE platform.ideas SET votes = 9 WHERE title = 'Timp real de așteptare la urgențe';
UPDATE platform.ideas SET votes = 3 WHERE title = 'Verificare medicamente compensate — ce am dreptul să primesc';
UPDATE platform.ideas SET votes = 8 WHERE title = 'Portal de note și absențe care funcționează — nu catalogul electronic din 2010';
UPDATE platform.ideas SET votes = 6 WHERE title = 'Platformă de meditații verificate — alternativă la piața neagră';
UPDATE platform.ideas SET votes = 4 WHERE title = 'Ghid digital de orientare profesională pentru liceeni';
UPDATE platform.ideas SET votes = 7 WHERE title = 'Clasament școli pe rezultate reale, nu pe reputație';
UPDATE platform.ideas SET votes = 5 WHERE title = 'Unde arunc asta? — ghid sortare deșeuri pe oraș';
UPDATE platform.ideas SET votes = 3 WHERE title = 'Calitate apă de la robinet — analize publice pe cartier';
UPDATE platform.ideas SET votes = 6 WHERE title = 'Hartă zgomot urban — unde e liniște și unde nu';
UPDATE platform.ideas SET votes = 9 WHERE title = 'Plată parcare din aplicație — nu mai căuta monede sau automatul stricat';
UPDATE platform.ideas SET votes = 7 WHERE title = 'Starea drumurilor în timp real — gropi, lucrări, gheață';
UPDATE platform.ideas SET votes = 4 WHERE title = 'Planificator de rută multimodal — mașină + tren + autobuz';
UPDATE platform.ideas SET votes = 5 WHERE title = 'Monitorizare trafic cu camere publice — fără să intri pe site-uri dubioase';
UPDATE platform.ideas SET votes = 3 WHERE title = 'Istoric construcții pe o adresă — ce a fost acolo înainte';
UPDATE platform.ideas SET votes = 2 WHERE title = 'Simulare umbra clădiri noi — cum îmi afectează apartamentul';
UPDATE platform.ideas SET votes = 4 WHERE title = 'Inventar spații verzi per cartier — unde sunt parcurile și cât de mari';
-- =============================================================================
-- SYNTHETIC VOTES — populate platform.votes to match vote counts
-- =============================================================================
-- Generate synthetic fingerprints for each idea based on its vote count
-- We use generate_series to create the right number of votes per idea
INSERT INTO platform.votes (idea_id, fingerprint, created_at)
SELECT
i.id,
md5(i.id::text || '-' || s.n::text || '-seed') AS fingerprint,
i.created_at + (s.n || ' hours')::interval
FROM platform.ideas i
CROSS JOIN LATERAL generate_series(1, i.votes) AS s(n)
WHERE i.votes > 0;
-- =============================================================================
-- VERIFY: counts should match
-- =============================================================================
-- Sanity check (will show mismatches if any)
DO $$
DECLARE
total_ideas INTEGER;
total_votes INTEGER;
mismatches INTEGER;
BEGIN
SELECT COUNT(*) INTO total_ideas FROM platform.ideas;
SELECT COUNT(*) INTO total_votes FROM platform.votes;
SELECT COUNT(*) INTO mismatches
FROM platform.ideas i
LEFT JOIN (
SELECT idea_id, COUNT(*) as actual_votes
FROM platform.votes
GROUP BY idea_id
) v ON v.idea_id = i.id
WHERE COALESCE(v.actual_votes, 0) != i.votes;
RAISE NOTICE '--- SEED COMPLETE ---';
RAISE NOTICE 'Total ideas: %', total_ideas;
RAISE NOTICE 'Total votes: %', total_votes;
RAISE NOTICE 'Vote mismatches: %', mismatches;
END $$;
COMMIT;