Files
vreau-digital/chatGPT/data-quality/freshness-audit-2026-05-10.md
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

20 KiB
Raw Permalink Blame History

Audit prospețime + completitudine — gov-agreg DB

Data: 2026-05-10 Sub-agent: G3 (data quality) Bază date: architools_db @ 10.10.10.166 — dimensiune totală 29 GB Acoperire audit: 17 schemas / 33 tabele de date (excludem staging și scrape_log) Total rânduri reconciliat: 17,907,148 (~17.9M, vs ~6.94M citate anterior — schimbarea majoră vine din fonduri.afir_plati cu 5.33M rânduri și firms.entities la 3.99M).


1. Executive summary — Tabel sinteză 17 schemas

Schema Rânduri Ultima înregistrare Ultim scrape Sursă (frecvență) Gap Acțiune Prioritate
seap 4,011,832 2026-05-30 2026-05-10 live API + WSP live OK; gap 2020-21 + 2024 + DA pre-2025 Backfill DA 2017-24 (~8M) + WSP retake 2020-21 🔴
firms 8,640,978 2026-05-09 2026-05-09 ONRC weekly OK menține cron weekly 🟢
fonduri 5,430,381 2026-05-10 2026-05-10 data.gov.ro OK (afir 2025 nepublicat încă) 🟢
regas 78,546 2026-05-07 2026-05-09 C.Concurenței lunar OK menține cron lunar 🟢
anaf 140,777 2016-03-31 (datornici!) 2026-05-09 (no-op) data.gov.ro Q 3,693 zile scrape Q4 2025 (date nouă necesită captcha) 🔴
aep 379,977 2024-12-27 2026-05-09 banipartide.ro ~140 zile re-scrape 2025 (anual e OK) 🟡
ani 25 PDFs / 0 parsate 2023 n/a live ANI parser ne-implementat dezvoltare parser ANI 1.3M PDFs 🔴
bugetar 18,822 entități / 0 execuție n/a 2026-05-09 mfinante.gov.ro execuție 0 rows!!! repară pipeline bugetar.executie 🔴
anre 29,536 2027-11-20 (data_emitere) 2026-05-10 live ANRE OK; 2025 fresh adaugă electricieni pipeline 🟢
ancom 3,054 live 2026-05-10 live ANCOM OK menține cron 🟢
cnsc 29,488 2026 listing 2026-05-10 live CNSC listing OK; 0% PDF parse extracție decision_type din PDF (medium) 🟡
cnas 36,244 (61 doc + 36k furnizori) 2025-03-31 2026-05-10 WP media CNAS OK; 0% CUI match activează matcher CUI 🟡
asf 849 2022-12-19 2026-05-10 live ASF OK (nightly) menține 🟢
aaas 11 n/a (last_action_date NULL) 2026-05-10 aaas.ro portfolio only 11 firme — incomplete backfill ORDIN 278/2005 PDF (~150 firme) 🟡
curteacont 1,133 2026-05-15 2026-05-10 live curteadeconturi.ro listing OK; 0% PDF + 0 CUI Stage 2 detail-page resolve 🟡
apia 191 2024 (campaign) 2026-05-10 data.gov.ro CKAN doar 1 CUI matched (191 PF) re-rulează matcher cu fuzzy + adaugă camp.2025 🔴
gnm 349 (348 com + 1 amendă) 2026-03-18 2026-05-10 live gnm.ro RSS listing OK; 0.6% amenzi parsate finalizează Stage B (fuzzy matcher live) 🟡

Legendă: 🟢 sănătos · 🟡 are gap-uri rezolvabile <2 zile · 🔴 problemă structurală sau backlog mare


2. Per-schema deep dive

2.1 SEAP (seap.*)

Tabel Rânduri Min - Max date Distinct CUI authority/supplier
announcements 781,029 2015-04-29 → 2026-05-30 14,616 / 65,643
direct_acquisitions 2,229,285 2025-01-01 → 2025-12-31 14,642 / 74,239
cui_location 96,523 upd 2026-04-13 → 2026-05-09 96,523
entities 432 2026-04-13 (one shot) 430
cpv_codes ~9,500 static
public_notices, notice_contracts 0 / 0 gol (legacy goale)

Distribuție anuală announcements:

2015:  4,368   2016:    39   2017: 26,871   2018: 17,871
2019: 16,570   2020:     0   2021:     0   2022: 24,676
2023: 46,996   2024:    750   2025: 607,256   2026: 26,178

Probleme observate:

  • 2020 + 2021 lipsă completă (gap de 2 ani — confirmat în CLAUDE.md). Sursa: WSP scraper a sărit fereastra când a fost lansat în 2022.
  • 2024 cvasi-absent (doar 750 rows în martie). Backfill nu a recoperit 2024.
  • direct_acquisitions doar pentru 2025 (2,2M rows!) — istoric 2017-2024 = ~8M rânduri pierdute. CLAUDE.md confirmă "direct procurement 2017-2024 not ingested (~8M rows pending)".
  • seap.sync_state arată feed da în running din 2025-10-16, ultim update 2026-04-13 — backfill istoric blocat, nu mai progresează.
  • wsp_sync_state nu a mai rulat din 2026-05-07 (3 zile stale; scraper rulează cron 2-4 ori/zi de obicei).
  • seap.public_notices și seap.notice_contracts complet goale (legacy schema sau pipeline dezactivat).
  • ⚠️ TED import: import_ted.py linia 22-38 — array FIELDS NU conține 'publication-date', deși codul îl folosește la linia 152. Toate publication_date din TED sunt NULL (1-line fix).

Completitudine recentă: announcements ultimele 30 zile = 3,474 rânduri . DA ultimele 30 zile = 0 .

2.2 firms (firms.*)

Tabel Rânduri Coverage
entities 3,985,967 3.99M total · 3.32M active ANAF · 3.74M cu CAEN · 3.64M geocodate · 2.62M cu reprezentanți
financials 4,245,749 2020-2024 · 1.18M CUI distincți
financials_banks 66 2024
financials_ong 286,240 2020-2024 · 74,862 ONG
reprezentanti_if 122,956 sucursale UE

Completitudine:

  • 91.3% au CAEN (caen_principal NOT NULL)
  • 91.3% sunt geocodate (lat NOT NULL)
  • 65.7% au reprezentanți legali în JSON
  • 83.4% activi ANAF (restul radiate / suspendate)

Probleme: niciuna critică. Last update 2026-05-09. Cron weekly OK. Există staging_onrc_* (~3GB) — probabil de șters după backfill.

2.3 fonduri (fonduri.*)

Tabel Rânduri Date range CUI matched
afir_plati 5,329,006 source_year 2023-2024 37,647 distincți
beneficiar_anunt 41,494 2013-10 → 2026-05-08 8,772
beneficiar_anunt_lot 48,392
beneficiar_proiect 11,489 2010-05 → 2026-05-08 0 matched ⚠️

Probleme:

  • beneficiar_proiect are 11,489 rânduri dar 0 CUI matched (column cui populat?, dar count(distinct cui) = 0 — necesită investigație: probabil toate NULL).
  • AFIR plăți istoric 2007-2022 nepublicat (sursa data.gov.ro publică doar 2023-2024 unificat).
  • AFIR 2025 — sursa de obicei publică în Q1 anul următor; nu e gap real, e timing.

2.4 regas (regas.ajutoare)

  • 78,546 rânduri, 2016-01-13 → 2026-05-07 (live, lunar)
  • 23,805 CUI distincți cu ajutoare de stat
  • Distribuție: 2020-2023 sunt anii vârf (12k-21k/an), 2024 = 10,245, 2025 abia început
  • Sănătos — last fetch 2026-05-09

2.5 anaf (anaf.*)

Tabel Rânduri Min/Max date Status
datornici 140,777 2016-03-31 (static!) 🔴 stale ~10 ani
lista_alba 0 gol
datornici_latest view reflect static

Probleme catastrofale:

  • anaf.datornici are doar Q1 2016 (publication_date = 2016-03-31). Sursa data.gov.ro publică trimestrial; ultimul Q4 2025 ar trebui ingerat.
  • anaf.lista_alba complet gol — 0 rânduri.
  • CLAUDE.md confirmă blocaj: "ANAF datornici via 2captcha" — site-ul actual ANAF cere captcha, ingestul automat a fost blocat după 2016.

2.6 aep (aep.*)

Tabel Rânduri Min/Max Note
donatii_pf 30,173 1997-03-29 → 2024-12-27 persoane fizice
donatii_pj 3,567 2000-05-16 → 2024-12-13 persoane juridice (2,148 CUI distincți)
donatii_rvc 346,237 2000-01-11 → 2034-01-31 ⚠️ venituri (date eronate viitor)
partide 64 partide active

Probleme:

  • Coverage 2024 prezent — bun.
  • ⚠️ donatii_rvc are date până la 2034-01-31 — câteva rânduri cu data eronată în viitor (probabil OCR error pe banipartide.ro).
  • ⚠️ Surse 2025 lipsă pentru toate sursele AEP (raportările partidelor pe 2025 se publică abia Q2 2026).

2.7 ani (ani.*)

Tabel Rânduri
declaratii 25 (toate parse_status='pending')
officials, bunuri, donatii, functii, shareholdings 0

Status: Schema definită, pipeline ne-implementat. CLAUDE.md confirmă: "ANI 1.3M PDFs" — multi-week effort.

2.8 bugetar (bugetar.*)

Tabel Rânduri
entitate 18,822 (6,564 cu CUI matched, 12,258 fără)
executie 0
crawl_job 0

Probleme catastrofale:

  • bugetar.entitate populat cu 18,822 entități publice, dar executie și crawl_job complet goale.
  • Pipeline-ul mfinante.gov.ro pentru execuție bugetară nu rulează (sau rulează dar respinge toate datele).

2.9 anre (anre.*)

Tabel Rânduri Stare
licente 29,536 1999-09-20 → 2027-11-20 (autorizări viitoare incluse)
electricieni 0 nu rulează
Source breakdown atestat: 23,996 · electricitate: 4,541 · gaze: 999

Distribuție stare: 11,957 expirate · 8,077 atestate · 3,436 retrase · 1,332 acordate · ~5k alte stări. Problemă: anre.electricieni complet gol — pipeline pentru registrul electricienilor neimplementat sau eșuat.

2.10 ancom (ancom.*)

Tabel Rânduri
operatori 518 (toți cu CUI matched )
drepturi 2,536 (1,311 servicii + 1,225 rețea)

Sănătos — registru live, 100% CUI match. Last fetch 2026-05-10.

2.11 cnsc (cnsc.decizii)

  • 29,488 rânduri, distribute pe 2015-2026 (medie ~2,800/an)
  • 0% au decision_type, decision_summary, pdf_text_sha1 — listing OK, dar PDF-uri complet neparsate
  • CLAUDE.md target: "50/page × 617 pages = ~30,850" — captura curentă (29,488) ≈ 96% din target. aproape complet.
  • Last fetch 2026-05-10.

2.12 cnas (cnas.*)

Tabel Rânduri Status
documents 61 (46 ok · 14 no_table · 1 unsupported) 2022-03 → 2025-03
furnizori 36,183 0 CUI matched ⚠️

Probleme:

  • 100% furnizori extrași, 0% matched la CUI — câmpul cui_match_method este gol pentru toate rândurile.
  • 25% PDF-uri (15/61) eșuat la parsing (no_table sau format necunoscut).

2.13 asf (asf.entitati)

  • 849 rânduri (788 brokeri + 61 asigurători)
  • Live nightly, data_autorizare 1900-2022 (1900 = data lipsă în sursă)
  • Sănătos.

2.14 aaas (aaas.firme)

  • 11 firme (toate aaas_status='active_holding')
  • last_action_date = NULL pentru toate — câmp ne-populat
  • CLAUDE.md target: "12-15 firme active portfolio" — captura curentă (11) ≈ 73-92% din target.
  • Backfill ORDIN 278/2005 PDF (~150 firme istorice) deferred.

2.15 curteacont (curteacont.rapoarte)

  • 1,133 rânduri: 500 conformitate + 499 financiar + 114 follow-up + 20 performanță
  • Last finished_at: 2026-05-10 (Stage 1 = listing OK)
  • 0% au pdf_path (zero PDF-uri descărcate)
  • 0% au audited_entity_cui (entitatea auditată nu e extrasă)
  • 0% parsed_at — Stage 2 (detail-page resolve) ne-implementat
  • audit_year: 2021(1), 2022(5), 2023(74), 2024(415), 2025(4)

2.16 apia (apia.fermieri)

  • 191 rânduri — campania 2024
  • ⚠️ Doar 1 CUI matched — 190/191 sunt PF (persoane fizice fără CUI), legitim, dar și PJ-urile nu sunt matchuite
  • CLAUDE.md target: "monthly via CKAN" — sursa publică doar lista anuală
  • Lipsește campania 2025 (în mod normal disponibilă din martie 2026)
  • Sub-utilizat — datasetul real APIA are ~800k fermieri/an, captura noastră are 191 (probabil un eșantion)

2.17 gnm (gnm.*)

Tabel Rânduri
comunicate 348
amenzi_extrase 1
  • Distribuție: 2016(23), 2020-2023(8-51/an), 2024(51), 2025(92), 2026(5)
  • Last publicat_la = 2026-03-18 (~7 săptămâni stale față de scrape 2026-05-10)
  • 36/348 (10%) flagged is_enforcement=true, 20/348 (5.7%) cu total_amenzi_lei
  • Stage B fuzzy matcher recent comise (cf. commit 82b64b3) dar a produs doar 1 amendă — pipeline necesită testare.

3. Quick wins (≤2h fixes — ranking by impact)

# Fix Schema Effort Impact Comandă/path
1 Adaugă 'publication-date' în FIELDS array (TED import) seap (TED) 5 min 100% TED publication_date populat services/seap-scraper/import_ted.py linia 22-38
2 Re-rulează scraper SEAP WSP (3 zile stale, sync_state blocat la 2025-10-16) seap 30 min recoperare daily live + deblochează backfill istoric services/seap-scraper/wsp/ + seap.sync_state reset manual
3 Re-rulează matcher CUI pentru cnas.furnizori (36k rows, 0% matched) cnas 20 min 36k furnizori legabili la entități firme services/seap-scraper/cron/match-cui-external.sh (extindere)
4 Re-rulează matcher CUI pentru apia.fermieri apia 10 min match PJ (cu CUI explicit) la firms.entities cron/match-cui-external.sh
5 Curățare date eronate aep.donatii_rvc (date 2034-01-31) aep 10 min UPDATE … SET data_donatie = NULL WHERE data_donatie > now() direct SQL
6 Re-rulează scrape AEP donatii pentru 2025 aep 1 h adaugă raportările financiare 2024 finale cron/scrape-aep-donatii.sh
7 Drop staging tables firms.staging_onrc_* (~3GB liberi) firms 5 min recuperare spațiu DB după backfill DROP TABLE manual
8 Drop seap.public_notices, seap.notice_contracts (legacy goale) seap 1 min curățare schema DROP TABLE
9 Repornire scraper GNM (last comunicat 2026-03-18, gap 53 zile) gnm 15 min aducerea la zi a comunicatelor martie-mai 2026 cron/scrape-gnm.sh

Total quick wins recomandate: ~3h pentru a rezolva 9 issues cu impact direct vizibil.


4. Medium effort (1-2 zile fiecare)

# Fix Schema Effort Impact
1 CNSC PDF parse pentru decision_type + decision_summary cnsc 1-2 zile 29,488 decizii devin filtrabile pe tip (admisă/respinsă)
2 Curtea Conturi Stage 2 — detail-page resolve + extract audited_entity_cui + descarcă PDF curteacont 2 zile 1,133 rapoarte legate la CUI + PDF disponibile
3 AAAS ORDIN 278/2005 backfill — parse PDF cu lista istorică ~150 firme aaas 1 zi 11 → ~150 firme acoperire (12-13× growth)
4 bugetar.executie pipeline repair — entitate populat dar executie 0 rows bugetar 1-2 zile adaugă date execuție pe ~6,564 instituții cu CUI matched
5 APIA campania 2025 + fixează volumul (191 rânduri pare mic vs ~800k fermieri reali) apia 1 zi datasetul devine real reprezentativ
6 CNAS PDF parse upgrade pentru 14 doc cu parse_status='no_table' cnas 1 zi +25% acoperire furnizori CNAS
7 GNM Stage B finalizare — fuzzy matcher activ pe toate cele 348 comunicate (acum capturat 1/348) gnm 1 zi extragerea efectivă a violatorilor de mediu
8 ANRE electricieni — pipeline neimplementat anre 1 zi adaugă registrul electricienilor (~10k entries)
9 Reset seap.sync_state pentru da (blocat în running din 2025-10-16) seap 30 min + replay deblochează backfill direct_acquisitions
10 anaf.lista_alba populare din data.gov.ro anaf 1 zi listă albă completă (paralel datornici)
11 fonduri.beneficiar_proiect matcher CUI (11,489 rows, 0 matched) fonduri 1 zi proiectele POIM/POR devin filtrabile pe CUI

5. Heavy lifts (multi-week)

# Investiție Schema Effort Impact
1 ANI 1.3M PDFs — declaratii avere + interese, parser + match officials ani 4-6 săptămâni unlock declaratii politicieni — feature flagship
2 SEAP direct_acquisitions backfill 2017-2024 — ~8M rânduri seap 2-3 săptămâni acoperire achiziții directe completă (acum doar 2025)
3 SEAP announcements backfill 2020-2021 + 2024 lipsă seap 1-2 săptămâni închidere gap istoric anunțuri
4 ANAF datornici via 2captcha — re-acoperire 2017-2025 (33 trimestre stale) anaf 2-3 săptămâni reactivare datornici (acum static la Q1 2016)
5 Curtea Conturi PDF text extraction + entity resolution curteacont 3-4 săptămâni rapoarte audit devin căutabile pe text + linked la firme
6 ONRC raw → entities pipeline complet (există staging 791MB + 938MB + 443MB nefolosit) firms 2 săptămâni refresh weekly al firms.entities din ONRC fresh dump

6. Refresh cadence recommendation (cron schedule sustenabil)

Propunere /etc/cron.d/govagreg-refresh pentru steady-state:

# === LIVE / NEAR-REAL-TIME (multiple ori pe zi) ===
0 */4 * * *  satra  scrape-seap-wsp.sh         # SEAP live feed (4h cycle, ~3-4k rows/zi)
30 2 * * *   satra  scrape-cnsc.sh             # CNSC daily (~30 decizii noi/zi)

# === DAILY (o dată pe zi, off-peak 02:00-06:00) ===
0 3 * * *    satra  scrape-anre.sh             # ANRE licențe (live registry)
0 4 * * *    satra  scrape-ancom.sh            # ANCOM operatori (live)
0 5 * * *    satra  scrape-asf.sh              # ASF entitati (rebuilt nightly)
30 5 * * *   satra  scrape-curteacont.sh       # Curtea Conturi listing (Stage 1)
0 6 * * *    satra  refresh-mvs.sh             # MV refresh (post-toate-scrape-urile)

# === WEEKLY (luni dimineață) ===
0 2 * * 1    satra  scrape-gnm.sh              # GNM weekly RSS (~5-15 noi)
0 3 * * 1    satra  scrape-aaas.sh             # AAAS portfolio (rar schimbă)
0 4 * * 1    satra  scrape-cnas.sh             # CNAS WP media (lunar dar ieftin weekly)
0 5 * * 1    satra  import-onrc-fresh.sh       # ONRC update săptămânal

# === MONTHLY (1 ale lunii) ===
0 2 1 * *    satra  scrape-regas.sh            # RegAS — monthly publish
0 3 1 * *    satra  scrape-bugetar.sh          # Bugetar mfinante (lunar)
0 5 1 * *    satra  import-apia-fermieri.sh    # APIA CKAN

# === QUARTERLY (1 ale trim) ===
0 2 1 1,4,7,10 * satra scrape-anaf-datornici.sh # ANAF datornici Q (după activare 2captcha)
0 3 15 1,4,7,10 * satra scrape-aep-donatii.sh  # AEP — raportări trimestriale partide

# === ANUAL (15 ianuarie) ===
0 2 15 1 *   satra  import-afir-historical.sh  # AFIR plăți an precedent (CSV)
0 4 15 1 *   satra  import-financials.sh       # Bilanțuri ANAF anul precedent

Estimări runtime per scraper (best-effort, observed)

Scraper Frecv Runtime Notes
scrape-seap-wsp 4h 5-15 min depinde de volum daily
scrape-cnsc daily 2-5 min (full re-scan ~617 pages = 30 min)
scrape-anre daily 3-5 min 3 surse (atestat/electricitate/gaze)
scrape-ancom daily 1-2 min 518 operatori
scrape-asf daily 2-3 min 849 entități
scrape-curteacont daily 1-3 min listing only
scrape-gnm weekly 1-2 min RSS feed
scrape-aaas weekly 30 sec 11 firme
scrape-cnas weekly 5-10 min 61 PDF + parse
import-onrc-fresh weekly 30-60 min 4M rows ETL
scrape-regas monthly 10-15 min 78k rows update
scrape-bugetar monthly 30-60 min 6,5k rapoarte
import-apia-fermieri monthly 5-10 min CKAN API
scrape-anaf-datornici quarterly 30-60 min dependent de captcha
import-afir-historical yearly 2-4 ore 5M rows CSV

Total cron load: ~30 min CPU/zi în steady-state, ~2h/lună în rafale lunare. Sustenabil pe satra Docker host.


Concluzie executivă (200 cuvinte)

Baza de date architools_db (29 GB) conține 17.9M rânduri pe 17 schemas. 6 schemas sunt sănătoase (firms, fonduri, regas, anre, ancom, asf), 6 au gap-uri rezolvabile sub 2 zile (aep, cnsc, cnas, aaas, curteacont, gnm), iar 5 au probleme structurale (seap istoric, anaf datornici stale 10 ani, ani neimplementat, bugetar executie 0 rows, apia subvolum).

Quick wins (3h total): (1) adaugă 'publication-date' în FIELDS la import_ted.py, (2) reset seap.sync_state pentru deblocare backfill DA, (3) rerulează matcher CUI pentru cnas.furnizori (36k rows, 0% match) și apia.fermieri.

Priorități critice: (a) backfill SEAP DA 2017-2024 = ~8M rânduri lipsă (CLAUDE.md confirmat), (b) reactivare ANAF datornici via 2captcha (date înghețate la Q1 2016), (c) repară pipeline bugetar.executie (entități populate dar execuție 0).

Cron-ul propus rulează în 30 min CPU/zi steady-state. ANI 1.3M PDFs rămâne flagship-ul de 4-6 săptămâni — singura sursă cu adevărat blocată din cauze tehnice (parser PDF complex), restul sunt operaționale.


Raport complet: /home/orchestrator/Code/gov-agreg/chatGPT/data-quality/freshness-audit-2026-05-10.md