-- 020_fonduri_proiect_v2.sql -- Refactor fonduri.beneficiar_proiect to match what the source actually exposes. -- Source: https://beneficiar.fonduri-ue.ro:8080/proiecte/details/1/{id} -- -- The page exposes only 7 fields (Cod SMIS, Program operațional, Axa, Domeniul -- de intervenție, Operațiune, Beneficiar, Data contract) — NOT valoare_totala/ -- valoare_eligibila/contributie_ue/data_start/data_end/judet/localitate that -- the original aspirational schema (018) implied. Drop unused fields, add the -- ones we can populate, split each "Program/Axa/Domeniul/Operațiune" into a -- {cod, text} pair (first whitespace-separated token = code, rest = text). -- -- The placeholder table from 018 has 0 rows → safe to drop + recreate. DROP TABLE IF EXISTS fonduri.beneficiar_proiect; CREATE TABLE fonduri.beneficiar_proiect ( id integer PRIMARY KEY, -- /proiecte/details/{type}/{id} → id proiect_type smallint NOT NULL, -- 1=SMIS (only type seen so far) smis_code text, -- "Cod SMIS" e.g. "313646" titlu text, -- from tag beneficiar_name text, -- "REALMET SRL" program_op_cod text, -- "PRNE" / "POIM" / "POR" / "PNRR" … program_op_text text, -- "Program Regional Nord-Est" axa_cod text, -- "PRNE_P1" axa_text text, -- "P1.P1. Nord-Est – O regiune mai competitivă…" domeniul_cod text, -- "RSO1.3" domeniul_text text, -- "RSO1.3_Intensificarea creșterii…" operatiune_cod text, -- "PRNE_A18" operatiune_text text, -- "Investiții pentru modernizarea…" data_contract date, cui text, -- fuzzy-matched later cui_match_score real, cui_match_method text, matched_at timestamptz, fetched_at timestamptz DEFAULT now(), raw_html_sha256 char(64) ); CREATE INDEX idx_ben_proiect_smis ON fonduri.beneficiar_proiect(smis_code); CREATE INDEX idx_ben_proiect_program ON fonduri.beneficiar_proiect(program_op_cod); CREATE INDEX idx_ben_proiect_axa ON fonduri.beneficiar_proiect(axa_cod); CREATE INDEX idx_ben_proiect_cui ON fonduri.beneficiar_proiect(cui) WHERE cui IS NOT NULL; CREATE INDEX idx_ben_proiect_data ON fonduri.beneficiar_proiect(data_contract DESC NULLS LAST);