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)
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
-- 043_red_flags_kpi_snapshot.sql
|
||||
-- Materialize red-flags landing KPI counters to a static refresh table.
|
||||
-- Original page was 30s with all KPI INTERSECTs + 13 recipe fetches running.
|
||||
-- KPI INTERSECTs (TRIPLE/QUADRA pipe etc.) alone = 12s. Now ~1ms read.
|
||||
--
|
||||
-- Refresh: nightly via mvs cron at 04:00 (or add to refresh-mvs.sh).
|
||||
|
||||
CREATE SCHEMA IF NOT EXISTS public_kpi;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public_kpi.red_flags_counts (
|
||||
k_name text PRIMARY KEY,
|
||||
k_value bigint NOT NULL,
|
||||
refreshed_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
COMMENT ON TABLE public_kpi.red_flags_counts IS
|
||||
'KPI counters surfaced on /achizitii/red-flags landing. Refreshed nightly. Page reads as a single SELECT to avoid 12s INTERSECT cost.';
|
||||
|
||||
-- Refresh function — called by cron
|
||||
CREATE OR REPLACE FUNCTION public_kpi.refresh_red_flags_counts() RETURNS void AS $$
|
||||
BEGIN
|
||||
INSERT INTO public_kpi.red_flags_counts (k_name, k_value, refreshed_at) VALUES
|
||||
('regas_seap_firms',
|
||||
(SELECT count(DISTINCT cui) FROM regas.ajutoare WHERE cui IS NOT NULL
|
||||
AND cui IN (SELECT supplier_cui FROM seap.announcements WHERE supplier_cui IS NOT NULL)),
|
||||
now()),
|
||||
('regas_seap_records',
|
||||
(SELECT count(*) FROM regas.ajutoare WHERE cui IS NOT NULL
|
||||
AND cui IN (SELECT supplier_cui FROM seap.announcements WHERE supplier_cui IS NOT NULL)),
|
||||
now()),
|
||||
('ben_seap_firms',
|
||||
(SELECT count(DISTINCT cui) FROM fonduri.beneficiar_anunt WHERE cui IS NOT NULL
|
||||
AND cui IN (SELECT supplier_cui FROM seap.announcements WHERE supplier_cui IS NOT NULL)),
|
||||
now()),
|
||||
('datornic_seap_firms',
|
||||
(SELECT count(DISTINCT d.cui) FROM anaf.datornici d
|
||||
JOIN seap.announcements a ON a.supplier_cui = d.cui
|
||||
AND a.publication_date::date > d.publication_date
|
||||
AND a.awarded_value > 100000),
|
||||
now()),
|
||||
('aep_seap_firms',
|
||||
(SELECT count(DISTINCT donator_cui) FROM aep.donatii_pj
|
||||
WHERE donator_cui IS NOT NULL
|
||||
AND donator_cui IN (SELECT supplier_cui FROM seap.announcements WHERE supplier_cui IS NOT NULL AND awarded_value > 100000)),
|
||||
now()),
|
||||
('triple_firms',
|
||||
(SELECT count(*) FROM (
|
||||
SELECT b.cui FROM fonduri.beneficiar_anunt b WHERE cui IS NOT NULL
|
||||
INTERSECT SELECT supplier_cui FROM seap.announcements WHERE supplier_cui IS NOT NULL
|
||||
INTERSECT SELECT cui FROM fonduri.afir_plati WHERE cui IS NOT NULL
|
||||
) t),
|
||||
now()),
|
||||
('quadra_firms',
|
||||
(SELECT count(*) FROM (
|
||||
SELECT b.cui FROM fonduri.beneficiar_anunt b WHERE cui IS NOT NULL
|
||||
INTERSECT SELECT supplier_cui FROM seap.announcements WHERE supplier_cui IS NOT NULL
|
||||
INTERSECT SELECT cui FROM fonduri.afir_plati WHERE cui IS NOT NULL
|
||||
INTERSECT SELECT cui FROM regas.ajutoare WHERE cui IS NOT NULL
|
||||
) t),
|
||||
now()),
|
||||
('donator_datornic_firms',
|
||||
(SELECT count(DISTINCT a.donator_cui) FROM aep.donatii_pj a
|
||||
JOIN anaf.datornici_latest d ON d.cui = a.donator_cui),
|
||||
now()),
|
||||
('anre_datornic_firms',
|
||||
(SELECT count(DISTINCT a.cui) FROM anre.mv_licente_per_cui a
|
||||
JOIN anaf.datornici_latest d ON d.cui = a.cui WHERE a.nr_active > 0),
|
||||
now()),
|
||||
('dubla_alerta_firms',
|
||||
(SELECT count(*) FROM (
|
||||
SELECT audited_entity_cui AS cui 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
|
||||
INTERSECT
|
||||
SELECT cui FROM cnsc.mv_per_authority_cui WHERE contestation_count >= 3
|
||||
) t),
|
||||
now())
|
||||
ON CONFLICT (k_name) DO UPDATE
|
||||
SET k_value = EXCLUDED.k_value,
|
||||
refreshed_at = EXCLUDED.refreshed_at;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Initial populate
|
||||
SELECT public_kpi.refresh_red_flags_counts();
|
||||
|
||||
SELECT k_name, k_value, refreshed_at FROM public_kpi.red_flags_counts ORDER BY k_name;
|
||||
Reference in New Issue
Block a user