Files
vreau-digital/services/seap-scraper/sql/044_red_flags_previews_snapshot.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

629 lines
29 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 044_red_flags_previews_snapshot.sql
-- Materialize TOP-5 row previews per red-flag recipe to a snapshot table.
-- Original landing was ~17s (13 recipe.fetch() calls running live, each 1-12s).
-- Now: single SELECT against this table → ~5ms.
--
-- Refresh: nightly from refresh-mvs.sh after KPI snapshot refresh.
--
-- Mirrors the RecipeRow interface (src/lib/recipes.ts):
-- primary, primaryHref, secondary, metric, metricRaw, detail, badge.{label,tone}
--
-- For each of the 13 RED_FLAG_SLUGS in src/pages/achizitii/red-flags.astro,
-- we re-implement the SQL inline (returning the formatted output the page
-- needs) and select TOP-5 per slug.
CREATE SCHEMA IF NOT EXISTS public_kpi;
CREATE TABLE IF NOT EXISTS public_kpi.red_flags_previews (
slug text NOT NULL,
position smallint NOT NULL,
primary_text text,
primary_href text,
secondary text,
metric text,
metric_raw numeric,
detail text,
badge_label text,
badge_tone text,
computed_at timestamptz NOT NULL DEFAULT now(),
PRIMARY KEY (slug, position)
);
COMMENT ON TABLE public_kpi.red_flags_previews IS
'Top-5 row previews per red-flag recipe. Refreshed nightly via refresh-mvs.sh. Read once per landing page load instead of running 13 live cross-source queries.';
-- ─────────────────────────────────────────────────────────────────────────────
-- Helper: RON formatter mirroring fmtRON() in src/lib/recipes.ts.
-- Returns short-form: "1.2 mld", "12.3 mil", "456K", "789".
CREATE OR REPLACE FUNCTION public_kpi.fmt_ron(v numeric) RETURNS text AS $$
BEGIN
IF v IS NULL OR v <= 0 THEN RETURN '0'; END IF;
IF v >= 1000000000 THEN RETURN to_char(v / 1000000000.0, 'FM999990.0') || ' mld'; END IF;
IF v >= 1000000 THEN RETURN to_char(v / 1000000.0, 'FM999990.0') || ' mil'; END IF;
IF v >= 1000 THEN RETURN to_char(round(v / 1000.0), 'FM999999990') || 'K'; END IF;
RETURN to_char(round(v), 'FM999999990');
END;
$$ LANGUAGE plpgsql IMMUTABLE;
-- ─────────────────────────────────────────────────────────────────────────────
CREATE OR REPLACE FUNCTION public_kpi.refresh_red_flags_previews() RETURNS void AS $$
BEGIN
DELETE FROM public_kpi.red_flags_previews;
-- ───── firme-quadra-pipe-public ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH ben AS (
SELECT b.cui, COUNT(*) AS anunturi_eu, SUM(l.buget_lei)::numeric AS buget_eu
FROM fonduri.beneficiar_anunt b
LEFT JOIN fonduri.beneficiar_anunt_lot l ON l.anunt_id = b.id
WHERE b.cui IS NOT NULL GROUP BY b.cui
),
seap AS (
SELECT supplier_cui AS cui, COUNT(*) AS contracte, SUM(awarded_value)::numeric AS valoare
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
afir AS (
SELECT cui, COUNT(*) AS plati,
SUM(COALESCE(ue_total, feadr_total, fega_total, op_amount, 0))::numeric AS afir_lei
FROM fonduri.afir_plati WHERE cui IS NOT NULL GROUP BY cui
),
regas AS (
SELECT cui, COUNT(*) AS nr_ajutoare,
SUM(ajutor_acordat_subcategorie)::numeric AS regas_lei
FROM regas.ajutoare WHERE cui IS NOT NULL GROUP BY cui
),
ranked AS (
SELECT b.cui, e.name, e.adr_judet,
b.buget_eu, s.valoare AS seap_lei, a.afir_lei, r.regas_lei,
(COALESCE(b.buget_eu,0) + COALESCE(s.valoare,0) + COALESCE(a.afir_lei,0) + COALESCE(r.regas_lei,0))::numeric AS total_combined,
ROW_NUMBER() OVER (ORDER BY (COALESCE(b.buget_eu,0) + COALESCE(s.valoare,0) + COALESCE(a.afir_lei,0) + COALESCE(r.regas_lei,0)) DESC NULLS LAST) AS rn
FROM ben b
JOIN seap s ON s.cui = b.cui
JOIN afir a ON a.cui = b.cui
JOIN regas r ON r.cui = b.cui
JOIN firms.entities e ON e.cui = b.cui
)
SELECT 'firme-quadra-pipe-public', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
public_kpi.fmt_ron(total_combined) || ' RON',
total_combined,
'EU: ' || public_kpi.fmt_ron(COALESCE(buget_eu,0)) || ' · SEAP: ' || public_kpi.fmt_ron(COALESCE(seap_lei,0)) || ' · AFIR: ' || public_kpi.fmt_ron(COALESCE(afir_lei,0)) || ' · RegAS: ' || public_kpi.fmt_ron(COALESCE(regas_lei,0)) || ' RON',
'🔱 QUADRA pipe', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── firme-triplu-pipe-public ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH ben AS (
SELECT b.cui, COUNT(*) AS anunturi_eu, SUM(l.buget_lei)::numeric AS buget_eu
FROM fonduri.beneficiar_anunt b
LEFT JOIN fonduri.beneficiar_anunt_lot l ON l.anunt_id = b.id
WHERE b.cui IS NOT NULL GROUP BY b.cui
),
seap AS (
SELECT supplier_cui AS cui, COUNT(*) AS contracte, SUM(awarded_value)::numeric AS valoare
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
afir AS (
SELECT cui, COUNT(*) AS plati,
SUM(COALESCE(ue_total, feadr_total, fega_total, op_amount, 0))::numeric AS afir_lei
FROM fonduri.afir_plati WHERE cui IS NOT NULL GROUP BY cui
),
ranked AS (
SELECT b.cui, e.name, e.adr_judet,
b.anunturi_eu, b.buget_eu, s.contracte, s.valoare AS seap_lei, a.plati, a.afir_lei,
(COALESCE(b.buget_eu,0) + COALESCE(s.valoare,0) + COALESCE(a.afir_lei,0))::numeric AS total_combined,
ROW_NUMBER() OVER (ORDER BY (COALESCE(b.buget_eu,0) + COALESCE(s.valoare,0) + COALESCE(a.afir_lei,0)) DESC NULLS LAST) AS rn
FROM ben b
JOIN seap s ON s.cui = b.cui
JOIN afir a ON a.cui = b.cui
JOIN firms.entities e ON e.cui = b.cui
)
SELECT 'firme-triplu-pipe-public', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
public_kpi.fmt_ron(total_combined) || ' RON',
total_combined,
'EU privat: ' || anunturi_eu || ' / ' || public_kpi.fmt_ron(COALESCE(buget_eu,0)) || ' · SEAP: ' || contracte || ' / ' || public_kpi.fmt_ron(COALESCE(seap_lei,0)) || ' · AFIR: ' || plati || ' / ' || public_kpi.fmt_ron(COALESCE(afir_lei,0)) || ' RON',
'🔱 triplu pipe', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── firme-datornice-cu-contracte-seap ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH agg AS (
SELECT d.cui, d.name,
MIN(d.publication_date) AS pub_date,
MIN(d.period_label) AS period_label,
MAX(d.debt_total) AS debt_total,
MAX(d.debtor_category) AS debtor_category,
COUNT(DISTINCT a.id) AS contracte,
SUM(a.awarded_value)::numeric AS contracte_lei,
MAX(a.publication_date::date) AS ultim_contract
FROM anaf.datornici d
JOIN seap.announcements a
ON a.supplier_cui = d.cui
AND a.publication_date::date > d.publication_date
WHERE a.awarded_value IS NOT NULL AND a.awarded_value > 0
GROUP BY d.cui, d.name
HAVING SUM(a.awarded_value) > 100000
),
ranked AS (
SELECT agg.*, e.adr_judet AS judet,
ROW_NUMBER() OVER (ORDER BY contracte_lei DESC NULLS LAST) AS rn
FROM agg LEFT JOIN firms.entities e ON e.cui = agg.cui
)
SELECT 'firme-datornice-cu-contracte-seap', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN judet IS NOT NULL THEN ' · ' || judet ELSE '' END || ' · ' || COALESCE(period_label, 'T1 2016'),
public_kpi.fmt_ron(contracte_lei) || ' RON',
contracte_lei,
'Datorie ' || public_kpi.fmt_ron(COALESCE(debt_total,0)) || ' RON (' || COALESCE(debtor_category::text, '') || ') · ' || contracte || ' contracte · ultim ' || COALESCE(ultim_contract::text, '?'),
'🚨 datornic + contract', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── donatori-care-au-castigat-seap ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH don AS (
SELECT donator_cui AS cui,
MIN(donator_nume) AS donator,
COUNT(*) AS nr_donatii,
SUM(suma_lei)::numeric AS total_donatii,
array_agg(DISTINCT partid_id ORDER BY partid_id) AS partide,
MIN(an) AS prima, MAX(an) AS ultima
FROM aep.donatii_pj
WHERE donator_cui IS NOT NULL
GROUP BY donator_cui
),
seap AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte,
SUM(awarded_value)::numeric AS contracte_lei,
COUNT(DISTINCT authority_cui) AS autoritati
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT d.cui, COALESCE(e.name, d.donator) AS firma, e.adr_judet AS judet,
d.nr_donatii, d.total_donatii, d.partide, d.prima, d.ultima,
s.contracte, s.contracte_lei, s.autoritati,
ROW_NUMBER() OVER (ORDER BY s.contracte_lei DESC NULLS LAST) AS rn
FROM don d
JOIN seap s ON s.cui = d.cui
LEFT JOIN firms.entities e ON e.cui = d.cui
WHERE s.contracte_lei > 100000
)
SELECT 'donatori-care-au-castigat-seap', rn::smallint,
COALESCE(firma, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN judet IS NOT NULL THEN ' · ' || judet ELSE '' END || ' · partide: ' || array_to_string(COALESCE(partide, ARRAY[]::text[]), ', '),
public_kpi.fmt_ron(contracte_lei) || ' RON',
contracte_lei,
nr_donatii || ' donații (' || public_kpi.fmt_ron(COALESCE(total_donatii,0)) || ' RON, ' || prima || '-' || ultima || ') · ' || contracte || ' contracte la ' || autoritati || ' autorități',
'🗳️ donator + furnizor', 'warn'
FROM ranked WHERE rn <= 5;
-- ───── donatori-politici-care-datoreaza-statului ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH aep_agg AS (
SELECT donator_cui AS cui,
SUM(suma_lei)::numeric AS total_donat,
array_agg(DISTINCT partid_id ORDER BY partid_id) FILTER (WHERE partid_id IS NOT NULL) AS partide,
COUNT(*) AS nr_donatii,
MIN(an) AS prima_an, MAX(an) AS ultima_an
FROM aep.donatii_pj
WHERE donator_cui IS NOT NULL
GROUP BY donator_cui
),
seap_supplier AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte,
SUM(awarded_value)::numeric AS valoare_seap
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT d.cui, d.period_label, d.debt_total::numeric AS debt_total,
a.total_donat, a.partide, a.nr_donatii, a.prima_an, a.ultima_an,
e.name, e.adr_judet,
COALESCE(s.contracte, 0) AS contracte_seap,
COALESCE(s.valoare_seap, 0)::numeric AS valoare_seap,
ROW_NUMBER() OVER (ORDER BY d.debt_total DESC NULLS LAST) AS rn
FROM aep_agg a
JOIN anaf.datornici_latest d ON d.cui = a.cui
LEFT JOIN firms.entities e ON e.cui = a.cui
LEFT JOIN seap_supplier s ON s.cui = a.cui
)
SELECT 'donatori-politici-care-datoreaza-statului', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END || ' · partide: ' || array_to_string(COALESCE(partide, ARRAY[]::text[]), ', ') || ' (' || prima_an || '' || ultima_an || ')',
public_kpi.fmt_ron(debt_total) || ' RON datorie',
debt_total,
'🗳️ donat ' || public_kpi.fmt_ron(COALESCE(total_donat,0)) || ' RON · 🚨 datornic ' || COALESCE(period_label,'') ||
CASE WHEN contracte_seap > 0 THEN ' · 📜 ' || contracte_seap || ' contracte SEAP (' || public_kpi.fmt_ron(valoare_seap) || ' RON)' ELSE '' END,
'🚨 donator + datornic', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── donatori-politici-care-contesta-la-cnsc ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH aep_agg AS (
SELECT donator_cui AS cui,
SUM(suma_lei)::numeric AS total_donat,
array_agg(DISTINCT partid_id ORDER BY partid_id) FILTER (WHERE partid_id IS NOT NULL) AS partide,
COUNT(*) AS nr_donatii,
MAX(an) AS ultima_an
FROM aep.donatii_pj
WHERE donator_cui IS NOT NULL
GROUP BY donator_cui
),
seap AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte,
SUM(awarded_value)::numeric AS valoare_seap
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT a.cui, e.name, e.adr_judet,
a.total_donat, a.partide, a.ultima_an,
c.contestations_filed,
COALESCE(s.contracte, 0) AS contracte_seap,
COALESCE(s.valoare_seap, 0)::numeric AS valoare_seap,
ROW_NUMBER() OVER (ORDER BY (a.total_donat * c.contestations_filed) DESC NULLS LAST) AS rn
FROM aep_agg a
JOIN cnsc.mv_per_contestator_cui c ON c.cui = a.cui
LEFT JOIN firms.entities e ON e.cui = a.cui
LEFT JOIN seap s ON s.cui = a.cui
)
SELECT 'donatori-politici-care-contesta-la-cnsc', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END || ' · partide: ' || array_to_string(COALESCE(partide, ARRAY[]::text[]), ', ') || ' (ultima ' || ultima_an || ')',
public_kpi.fmt_ron(total_donat) || ' × ' || contestations_filed,
(total_donat * contestations_filed)::numeric,
'🗳️ donat ' || public_kpi.fmt_ron(total_donat) || ' RON · ⚖️ ' || contestations_filed || ' contestații CNSC' ||
CASE WHEN contracte_seap > 0 THEN ' · 📜 ' || contracte_seap || ' contracte SEAP (' || public_kpi.fmt_ron(valoare_seap) || ' RON)' ELSE '' END,
'🗳️⚖️ donator + contestator', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── energie-licentiati-anre-datornici-anaf ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH seap AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte,
SUM(awarded_value)::numeric AS valoare_seap
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT a.cui, e.name, e.adr_judet,
a.nr_active, a.nr_expirate, a.surse,
d.debt_total::numeric AS debt_total, d.period_label,
COALESCE(s.contracte, 0) AS contracte_seap,
COALESCE(s.valoare_seap, 0)::numeric AS valoare_seap,
ROW_NUMBER() OVER (ORDER BY d.debt_total DESC NULLS LAST) AS rn
FROM anre.mv_licente_per_cui a
JOIN anaf.datornici_latest d ON d.cui = a.cui
LEFT JOIN firms.entities e ON e.cui = a.cui
LEFT JOIN seap s ON s.cui = a.cui
WHERE a.nr_active > 0
)
SELECT 'energie-licentiati-anre-datornici-anaf', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END || ' · 🔌 ' || nr_active || ' licențe active (' || array_to_string(COALESCE(surse, ARRAY[]::text[]), '/') || ')' || CASE WHEN nr_expirate > 0 THEN ', ' || nr_expirate || ' expirate' ELSE '' END,
public_kpi.fmt_ron(debt_total) || ' RON datorie',
debt_total,
'🚨 datornic ' || COALESCE(period_label, '') ||
CASE WHEN contracte_seap > 0 THEN ' · 📜 ' || contracte_seap || ' contracte SEAP (' || public_kpi.fmt_ron(valoare_seap) || ' RON)' ELSE '' END,
'🚨 ANRE + datornic', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── autoritati-dubla-alerta-cdc-cnsc ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH cdc AS (
SELECT audited_entity_cui AS cui,
COUNT(*) AS audit_count,
array_agg(DISTINCT audit_type) FILTER (WHERE audit_type IS NOT NULL) AS audit_types
FROM curteacont.rapoarte
WHERE audited_entity_cui IS NOT NULL
AND publication_date >= now() - interval '5 years'
GROUP BY audited_entity_cui
HAVING COUNT(*) >= 2
),
cnsc_ AS (
SELECT cui, contestation_count
FROM cnsc.mv_per_authority_cui
WHERE contestation_count >= 3
),
seap AS (
SELECT authority_cui AS cui,
COUNT(*) AS proceduri,
SUM(COALESCE(awarded_value, estimated_value))::numeric AS valoare
FROM seap.announcements
WHERE authority_cui IS NOT NULL
GROUP BY authority_cui
),
ranked AS (
SELECT a.cui, e.name, e.adr_judet,
a.audit_count, a.audit_types,
c.contestation_count,
(a.audit_count + c.contestation_count) AS total_signals,
COALESCE(s.proceduri, 0) AS proceduri,
COALESCE(s.valoare, 0)::numeric AS valoare,
ROW_NUMBER() OVER (ORDER BY (a.audit_count + c.contestation_count) DESC, c.contestation_count DESC) AS rn
FROM cdc a
JOIN cnsc_ c ON c.cui = a.cui
LEFT JOIN firms.entities e ON e.cui = a.cui
LEFT JOIN seap s ON s.cui = a.cui
)
SELECT 'autoritati-dubla-alerta-cdc-cnsc', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/autoritate/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
total_signals || ' semnale',
total_signals::numeric,
'📋 ' || audit_count || ' audituri (' || array_to_string(COALESCE(audit_types, ARRAY[]::text[]), '/') || ') · ⚖️ ' || contestation_count || ' contestații CNSC · ' || proceduri || ' proceduri SEAP · ' || public_kpi.fmt_ron(COALESCE(valoare,0)) || ' RON',
'🚨 dublă alertă', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── autoritati-contestate-cnsc ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH ranked AS (
SELECT m.cui, m.contestation_count,
m.first_contestation_date, m.last_contestation_date,
e.name, e.adr_judet,
COALESCE(s.proceduri, 0) AS proceduri,
COALESCE(s.valoare, 0)::numeric AS valoare,
ROW_NUMBER() OVER (ORDER BY m.contestation_count DESC) AS rn
FROM cnsc.mv_per_authority_cui m
LEFT JOIN firms.entities e ON e.cui = m.cui
LEFT JOIN (
SELECT authority_cui,
COUNT(*) AS proceduri,
SUM(awarded_value)::numeric AS valoare
FROM seap.announcements
WHERE authority_cui IS NOT NULL
GROUP BY authority_cui
) s ON s.authority_cui = m.cui
)
SELECT 'autoritati-contestate-cnsc', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/autoritate/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
contestation_count || ' contestații',
contestation_count::numeric,
proceduri || ' proceduri SEAP · ' || public_kpi.fmt_ron(COALESCE(valoare,0)) || ' RON · contestații ' ||
COALESCE(extract(year FROM first_contestation_date)::text, '?') || '' ||
COALESCE(extract(year FROM last_contestation_date)::text, '?'),
'⚖️ CNSC', 'warn'
FROM ranked WHERE rn <= 5;
-- ───── energie-fara-licenta ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH energy_seap AS (
SELECT a.supplier_cui,
COUNT(*) AS contracte,
SUM(a.awarded_value)::numeric AS valoare,
COUNT(DISTINCT a.authority_cui) AS autoritati,
array_agg(DISTINCT substr(a.cpv_code, 1, 4)) AS cpv_prefs
FROM seap.announcements a
WHERE a.supplier_cui IS NOT NULL
AND a.awarded_value > 0
AND a.cpv_code LIKE '09%'
GROUP BY a.supplier_cui
),
ranked AS (
SELECT s.supplier_cui AS cui, e.name, e.adr_judet,
s.contracte, s.valoare, s.autoritati, s.cpv_prefs,
ROW_NUMBER() OVER (ORDER BY s.valoare DESC NULLS LAST) AS rn
FROM energy_seap s
LEFT JOIN anre.mv_licente_per_cui m ON m.cui = s.supplier_cui
JOIN firms.entities e ON e.cui = s.supplier_cui
WHERE m.cui IS NULL
)
SELECT 'energie-fara-licenta', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
public_kpi.fmt_ron(valoare) || ' RON',
valoare,
contracte || ' contracte · ' || autoritati || ' autorități · CPV ' || array_to_string((COALESCE(cpv_prefs, ARRAY[]::text[]))[1:5], ', '),
'fără licență ANRE', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── telco-fara-licenta ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH telco_seap AS (
SELECT a.supplier_cui,
COUNT(*) AS contracte,
SUM(a.awarded_value)::numeric AS valoare,
COUNT(DISTINCT a.authority_cui) AS autoritati,
array_agg(DISTINCT substr(a.cpv_code, 1, 4)) AS cpv_prefs
FROM seap.announcements a
WHERE a.supplier_cui IS NOT NULL
AND a.awarded_value > 0
AND a.cpv_code LIKE '64%'
GROUP BY a.supplier_cui
),
ranked AS (
SELECT s.supplier_cui AS cui, e.name, e.adr_judet,
s.contracte, s.valoare, s.autoritati, s.cpv_prefs,
ROW_NUMBER() OVER (ORDER BY s.valoare DESC NULLS LAST) AS rn
FROM telco_seap s
LEFT JOIN ancom.mv_operatori_per_cui m ON m.cui = s.supplier_cui
JOIN firms.entities e ON e.cui = s.supplier_cui
WHERE m.cui IS NULL
)
SELECT 'telco-fara-licenta', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
public_kpi.fmt_ron(valoare) || ' RON',
valoare,
contracte || ' contracte · ' || autoritati || ' autorități · CPV ' || array_to_string((COALESCE(cpv_prefs, ARRAY[]::text[]))[1:5], ', '),
'fără autorizare ANCOM', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── stat-actionar-seap ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH aaas_agg AS (
SELECT cui, max_state_share_pct, total_debt_to_state_lei, statusuri
FROM aaas.mv_per_cui
),
seap AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte,
SUM(awarded_value)::numeric AS total_lei,
COUNT(DISTINCT authority_cui) AS autoritati
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT a.cui,
COALESCE(e.name, f.name) AS firma,
e.adr_judet AS judet,
a.max_state_share_pct,
a.total_debt_to_state_lei,
a.statusuri,
s.contracte, s.total_lei, s.autoritati,
ROW_NUMBER() OVER (ORDER BY s.total_lei DESC NULLS LAST) AS rn
FROM aaas_agg a
JOIN seap s ON s.cui = a.cui
LEFT JOIN firms.entities e ON e.cui = a.cui
LEFT JOIN aaas.firme f ON f.cui = a.cui
)
SELECT 'stat-actionar-seap', rn::smallint,
COALESCE(firma, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN judet IS NOT NULL THEN ' · ' || judet ELSE '' END || ' · stat ' || CASE WHEN max_state_share_pct IS NOT NULL THEN to_char(max_state_share_pct, 'FM999990.0') || '%' ELSE '?' END || ' · ' || array_to_string(COALESCE(statusuri, ARRAY[]::text[]), ', '),
public_kpi.fmt_ron(total_lei) || ' RON',
total_lei,
contracte || ' contracte la ' || autoritati || ' autorități' ||
CASE WHEN total_debt_to_state_lei IS NOT NULL AND total_debt_to_state_lei > 0
THEN ' · datorii la stat ' || public_kpi.fmt_ron(total_debt_to_state_lei) || ' RON'
ELSE '' END,
'🏛️ stat→stat', 'risk'
FROM ranked WHERE rn <= 5;
-- ───── firme-cu-ajutor-de-stat-si-seap ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH regas_amount AS (
SELECT cui,
COUNT(*) AS nr_ajutoare,
SUM(ajutor_acordat_subcategorie) AS total_ajutor,
COUNT(DISTINCT id_masura) AS nr_masuri,
COUNT(DISTINCT finantator) AS nr_finantatori
FROM regas.ajutoare
WHERE cui IS NOT NULL
GROUP BY cui
),
seap_amount AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte_seap,
SUM(awarded_value) AS valoare_seap,
COUNT(DISTINCT authority_cui) AS autoritati
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT r.cui, e.name, e.adr_judet,
r.nr_ajutoare, r.total_ajutor::numeric AS total_ajutor, r.nr_finantatori,
s.contracte_seap, s.valoare_seap::numeric AS valoare_seap, s.autoritati,
(COALESCE(r.total_ajutor,0) + COALESCE(s.valoare_seap,0))::numeric AS total_combined,
ROW_NUMBER() OVER (ORDER BY (COALESCE(r.total_ajutor,0) + COALESCE(s.valoare_seap,0)) DESC NULLS LAST) AS rn
FROM regas_amount r
JOIN seap_amount s ON s.cui = r.cui
JOIN firms.entities e ON e.cui = r.cui
WHERE COALESCE(r.total_ajutor,0) + COALESCE(s.valoare_seap,0) > 0
)
SELECT 'firme-cu-ajutor-de-stat-si-seap', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
public_kpi.fmt_ron(total_combined) || ' RON',
total_combined,
'Ajutor stat: ' || nr_ajutoare || ' ajutoare / ' || public_kpi.fmt_ron(COALESCE(total_ajutor,0)) || ' RON la ' || nr_finantatori || ' finanțatori · SEAP: ' || contracte_seap || ' contracte / ' || public_kpi.fmt_ron(COALESCE(valoare_seap,0)) || ' RON la ' || autoritati || ' autorități',
'Ajutor + SEAP', 'warn'
FROM ranked WHERE rn <= 5;
-- ───── firme-cu-fonduri-eu-si-seap ─────
INSERT INTO public_kpi.red_flags_previews
(slug, position, primary_text, primary_href, secondary, metric, metric_raw, detail, badge_label, badge_tone)
WITH ben_amount AS (
SELECT b.cui,
COUNT(*) AS anunturi_eu,
SUM(l.buget_lei) AS buget_eu
FROM fonduri.beneficiar_anunt b
LEFT JOIN fonduri.beneficiar_anunt_lot l ON l.anunt_id = b.id
WHERE b.cui IS NOT NULL
GROUP BY b.cui
),
seap_amount AS (
SELECT supplier_cui AS cui,
COUNT(*) AS contracte_seap,
SUM(awarded_value) AS valoare_seap,
COUNT(DISTINCT authority_cui) AS autoritati
FROM seap.announcements
WHERE supplier_cui IS NOT NULL AND awarded_value > 0
GROUP BY supplier_cui
),
ranked AS (
SELECT b.cui, e.name, e.adr_judet,
b.anunturi_eu, b.buget_eu::numeric AS buget_eu,
s.contracte_seap, s.valoare_seap::numeric AS valoare_seap, s.autoritati,
(COALESCE(b.buget_eu,0) + COALESCE(s.valoare_seap,0))::numeric AS total_combined,
ROW_NUMBER() OVER (ORDER BY (COALESCE(b.buget_eu,0) + COALESCE(s.valoare_seap,0)) DESC NULLS LAST) AS rn
FROM ben_amount b
JOIN seap_amount s ON s.cui = b.cui
JOIN firms.entities e ON e.cui = b.cui
WHERE COALESCE(b.buget_eu,0) + COALESCE(s.valoare_seap,0) > 0
)
SELECT 'firme-cu-fonduri-eu-si-seap', rn::smallint,
COALESCE(name, 'CUI ' || cui),
'/achizitii/firma/' || cui,
'CUI ' || cui || CASE WHEN adr_judet IS NOT NULL THEN ' · ' || adr_judet ELSE '' END,
public_kpi.fmt_ron(total_combined) || ' RON',
total_combined,
'EU: ' || anunturi_eu || ' anunțuri / ' || public_kpi.fmt_ron(COALESCE(buget_eu,0)) || ' RON · SEAP: ' || contracte_seap || ' contracte / ' || public_kpi.fmt_ron(COALESCE(valoare_seap,0)) || ' RON la ' || autoritati || ' autorități',
'EU + SEAP', 'warn'
FROM ranked WHERE rn <= 5;
END;
$$ LANGUAGE plpgsql;
-- Initial populate
SELECT public_kpi.refresh_red_flags_previews();
SELECT slug, COUNT(*) AS rows
FROM public_kpi.red_flags_previews
GROUP BY slug
ORDER BY slug;