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)
76 lines
2.9 KiB
PL/PgSQL
76 lines
2.9 KiB
PL/PgSQL
-- Financial indicators per firm-year, from Ministerul Finanțelor "Situații financiare"
|
|
-- annual datasets on data.gov.ro (CC-BY 4.0).
|
|
--
|
|
-- 21 indicators (I1-I20 + CAEN) extracted from balance sheet + P&L + headcount.
|
|
-- Schema covers years 2020-2024 initially; older years available too if needed.
|
|
|
|
BEGIN;
|
|
|
|
CREATE TABLE IF NOT EXISTS firms.financials (
|
|
cui TEXT NOT NULL,
|
|
year INT NOT NULL,
|
|
caen TEXT,
|
|
|
|
-- ── Bilanț — active ──
|
|
active_imobilizate NUMERIC(20,2), -- I1
|
|
active_circulante NUMERIC(20,2), -- I2
|
|
stocuri NUMERIC(20,2), -- I3
|
|
creante NUMERIC(20,2), -- I4
|
|
casa_banci NUMERIC(20,2), -- I5
|
|
cheltuieli_avans NUMERIC(20,2), -- I6
|
|
|
|
-- ── Bilanț — datorii / pasive ──
|
|
datorii NUMERIC(20,2), -- I7
|
|
venituri_avans NUMERIC(20,2), -- I8
|
|
provizioane NUMERIC(20,2), -- I9
|
|
capitaluri_total NUMERIC(20,2), -- I10
|
|
capital_subscris NUMERIC(20,2), -- I11
|
|
patrimoniul_regiei NUMERIC(20,2), -- I12
|
|
|
|
-- ── Cont profit/pierdere ──
|
|
cifra_afaceri NUMERIC(20,2), -- I13 (cifră afaceri netă)
|
|
venituri_total NUMERIC(20,2), -- I14
|
|
cheltuieli_total NUMERIC(20,2), -- I15
|
|
profit_brut NUMERIC(20,2), -- I16
|
|
pierdere_bruta NUMERIC(20,2), -- I17
|
|
profit_net NUMERIC(20,2), -- I18
|
|
pierdere_neta NUMERIC(20,2), -- I19
|
|
|
|
-- ── HR ──
|
|
numar_salariati BIGINT, -- I20 (some data anomalies need wider range)
|
|
|
|
-- ── Metadata ──
|
|
source TEXT DEFAULT 'mfinante.data.gov.ro',
|
|
fetched_at TIMESTAMPTZ DEFAULT now(),
|
|
|
|
PRIMARY KEY (cui, year)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_fin_cui ON firms.financials(cui);
|
|
CREATE INDEX IF NOT EXISTS idx_fin_year ON firms.financials(year);
|
|
CREATE INDEX IF NOT EXISTS idx_fin_ca_desc ON firms.financials(year, cifra_afaceri DESC NULLS LAST);
|
|
CREATE INDEX IF NOT EXISTS idx_fin_profit_desc ON firms.financials(year, profit_net DESC NULLS LAST);
|
|
CREATE INDEX IF NOT EXISTS idx_fin_salariati_desc ON firms.financials(year, numar_salariati DESC NULLS LAST);
|
|
CREATE INDEX IF NOT EXISTS idx_fin_caen ON firms.financials(caen);
|
|
|
|
-- Materialized view: latest year financials per CUI for fast profile lookup
|
|
CREATE MATERIALIZED VIEW IF NOT EXISTS firms.mv_financials_latest AS
|
|
SELECT DISTINCT ON (cui) *
|
|
FROM firms.financials
|
|
WHERE cui IS NOT NULL
|
|
ORDER BY cui, year DESC;
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_mv_fin_latest_pk ON firms.mv_financials_latest(cui);
|
|
|
|
-- Staging table for raw CSV imports
|
|
CREATE TABLE IF NOT EXISTS firms.staging_financials (
|
|
cui TEXT,
|
|
caen TEXT,
|
|
i1 NUMERIC, i2 NUMERIC, i3 NUMERIC, i4 NUMERIC, i5 NUMERIC,
|
|
i6 NUMERIC, i7 NUMERIC, i8 NUMERIC, i9 NUMERIC, i10 NUMERIC,
|
|
i11 NUMERIC, i12 NUMERIC, i13 NUMERIC, i14 NUMERIC, i15 NUMERIC,
|
|
i16 NUMERIC, i17 NUMERIC, i18 NUMERIC, i19 NUMERIC, i20 NUMERIC
|
|
);
|
|
|
|
COMMIT;
|