a6c03a091e
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)
75 lines
4.2 KiB
SQL
75 lines
4.2 KiB
SQL
-- 021_regas_ajutoare.sql
|
|
-- RegAS — Registrul Ajutoarelor de Stat (Consiliul Concurenței).
|
|
-- Source: https://regas.consiliulconcurentei.ro/transparenta/index.html
|
|
-- API: POST /apitransparenta/cautareTransparenta (XSRF-TOKEN cookie + header)
|
|
-- Volume at first scrape (2026-05-09): 132,363 ajutoare individuale.
|
|
--
|
|
-- Each row = one ajutor de stat acordat unei firme (denumireBeneficiar+cui),
|
|
-- cu masura (referintaMasura SA.xxx/yyyy), categorie/subcategorie, suma în RON,
|
|
-- finantator (ministerul/agentia care a dat banii), instrumentAcordare
|
|
-- (fonduri nerambursabile / credite / garantii / scutiri).
|
|
--
|
|
-- Cheie naturală: (cui, idMasura, dataAcordare, ajutorAcordatSubcategorie) —
|
|
-- același beneficiar poate primi multiple tranșe pe aceeași măsură. Folosim
|
|
-- un id sintetic SHA1 pentru ON CONFLICT idempotent.
|
|
|
|
CREATE SCHEMA IF NOT EXISTS regas;
|
|
|
|
CREATE TABLE IF NOT EXISTS regas.ajutoare (
|
|
id char(40) PRIMARY KEY, -- sha1(cui|idMasura|dataAcordare|subcategorie|sumaSubcategorie)
|
|
cui text NOT NULL,
|
|
denumire_beneficiar text NOT NULL,
|
|
raf text, -- "Registrul Ajutoarelor Fiscale" id (rare)
|
|
alt_cod text, -- ID alternativ (rare)
|
|
dimensiune_intreprindere text, -- "întreprindere mare" / "IMM" / etc.
|
|
regiune text[], -- ["Regiunea I Nord-Est", ...] sau ["Toate regiunile"]
|
|
domeniu_activitate text, -- CAEN cod (4 digits)
|
|
data_acordare date, -- "DD/MM/YYYY" parsed
|
|
id_masura integer NOT NULL, -- FK logic la /apitransparenta/downloadPdfMasura/{idMasura}
|
|
denumire_masura text NOT NULL,
|
|
referinta_masura text, -- "SA.104966/2022"
|
|
activitati_finantate text[], -- CAEN codes
|
|
categorie text,
|
|
subcategorie text,
|
|
obiectiv text,
|
|
ajutor_acordat_categorie numeric(20,2), -- RON
|
|
ajutor_acordat_subcategorie numeric(20,2), -- RON (de obicei = categorie pentru o singură subcategorie)
|
|
intermediari_financiari text[],
|
|
executanti text[],
|
|
instrument_acordare text, -- "fonduri nerambursabile" / "garantii" / "credite"
|
|
intensitate numeric(6,2), -- procent (e.g. 65.00)
|
|
finantator text, -- "Ministerul ... (MIPE)"
|
|
pdf_masura text, -- "1195_MASURA.pdf"
|
|
fetched_at timestamptz DEFAULT now(),
|
|
raw_json jsonb
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_regas_ajutoare_cui ON regas.ajutoare(cui);
|
|
CREATE INDEX IF NOT EXISTS idx_regas_ajutoare_data ON regas.ajutoare(data_acordare DESC NULLS LAST);
|
|
CREATE INDEX IF NOT EXISTS idx_regas_ajutoare_finantator ON regas.ajutoare(finantator);
|
|
CREATE INDEX IF NOT EXISTS idx_regas_ajutoare_referinta ON regas.ajutoare(referinta_masura);
|
|
CREATE INDEX IF NOT EXISTS idx_regas_ajutoare_id_masura ON regas.ajutoare(id_masura);
|
|
|
|
COMMENT ON TABLE regas.ajutoare IS
|
|
'State aid records from Consiliul Concurentei RegAS portal. One row per ajutor acordat. Source: https://regas.consiliulconcurentei.ro/transparenta/';
|
|
|
|
COMMENT ON COLUMN regas.ajutoare.id IS
|
|
'Synthetic sha1 of (cui|idMasura|dataAcordare|subcategorie|ajutorAcordatSubcategorie). Used for idempotent upsert.';
|
|
|
|
-- Materialized view aggregating per CUI for fast firma profile lookup.
|
|
CREATE MATERIALIZED VIEW IF NOT EXISTS regas.mv_ajutoare_per_cui AS
|
|
SELECT
|
|
cui,
|
|
COUNT(*) AS nr_ajutoare,
|
|
SUM(ajutor_acordat_subcategorie) AS total_ron,
|
|
COUNT(DISTINCT id_masura) AS nr_masuri,
|
|
COUNT(DISTINCT finantator) AS nr_finantatori,
|
|
MIN(data_acordare) AS prima_acordare,
|
|
MAX(data_acordare) AS ultima_acordare,
|
|
array_agg(DISTINCT finantator) FILTER (WHERE finantator IS NOT NULL) AS finantatori,
|
|
array_agg(DISTINCT instrument_acordare) FILTER (WHERE instrument_acordare IS NOT NULL) AS instrumente
|
|
FROM regas.ajutoare
|
|
GROUP BY cui;
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_regas_mv_cui ON regas.mv_ajutoare_per_cui(cui);
|