Files
vreau-digital/services/seap-scraper/RESEARCH-NEXT-DATA-SOURCES.md
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

9.3 KiB
Raw Blame History

Research roadmap — surse publice de date pentru firms registry

Sintetizat 2026-05-08 din 4 research agents paraleli. Pentru context complet vezi PROMPTS.md §0a.

Stare de bază:

  • 3.97M firme ONRC, 3.86M financials WEB_UU 2020-2024, 3.21M ANAF v9 enriched, 2.8M lat/lng (postal+UAT centroid). Cron live pentru ANAF daily + ONRC weekly.

A. GIS — pin precision de la centroide la housenumber

A1. Photon 0.5.0 JAR nativ (DONE 2026-05-08)

  • Install: cron/install-photon.sh (apt openjdk-21-jre-headless + 38MB JAR)
  • Run: cron/vreaudigital-photon.service (systemd, -Xmx8G, port 2322)
  • Format extract: ES (Elasticsearch 5.6.16) — Photon 0.6+ folosește OS și e incompatibil. 0.5.0 e ultima versiune ES.
  • Throughput verificat: ~50-100 req/s (CONCURRENCY=20 în geocode-photon.ts)
  • Rezultat estimat: 35-50% din firme prin housenumber match (limitat de acoperirea OSM RO addr:* tags ~1M obiecte vs 3M+ housenumber-ed firme)

A2. osm2pgsql RO în PostGIS (TODO, 1h setup)

sudo apt install osm2pgsql
curl -fL -o /tmp/ro.osm.pbf https://download.geofabrik.de/europe/romania-latest.osm.pbf
osm2pgsql -d architools_db --schema=osm --slim --drop --cache 4000 \
  --number-processes 8 --hstore /tmp/ro.osm.pbf
# disk: ~8-12GB, 15-30 min import

SQL pattern: JOIN firms cu osm.planet_osm_point WHERE addr:housenumber match, fuzzy similarity pe addr:street. Bonus: reusable pentru POI display, validare UAT.

A3. Bucharest Infocod refinement (TODO, 1 zi)

  • data.gov.ro "Infocod Sept 2016 cu SIRUTA" — postal codes 010xxx-067xxx, ~9000 codes
  • Refinează ~250K firme București de la postal-area centroid (~500m) la street-cluster (~50-150m)

A4. ANAF v9 backfill pentru cele 1.17M unpinned firms (TODO)

  • Lansa enrich-anaf cu filtru WHERE adr_cod_postal IS NULL OR siruta IS NULL
  • Multe firme vor primi cod_postal de la ANAF, declanșând geocoding postal

B. Date financiare — categorii lipsă peste WEB_UU

B1. 13 categorii non-WEB_UU pe data.gov.ro (TODO, 1-2 zile)

Toate la slug situatii_financiare_<YEAR> (sau situatii_financiare2023 pentru 2023):

  • web_bl_bs_sl_an.txt (~9MB) — bilanț scurt/lichidare. Alliance Healthcare e aici.
  • web_ong_an.txt (~8MB) — asociații/fundații
  • web_instit_de_credit_an.txt — bănci (~30 records, IFRS schema)
  • web_ifn.txt — instituții financiare nebancare
  • web_ip_ieme.txt — instituții de plată
  • webasig.txt — asigurători
  • webbrok.txt — brokeri asigurări
  • web_sif.txt — fonduri de investiții
  • web_pensii.txt — fonduri de pensii
  • web_vs_.txt — S.S.I.F.
  • web_vm_an.txt — valori mobiliare
  • web_ir_an.txt — instituții religioase
  • web_fond_garantare.txt — fonduri garantare

Total ~17MB/an extra. CSV sidecar = column spec per categorie. Reuse importer existent, parametrizare schema per file.

B2. Backfill 2015-2019 (TODO, one-shot)

Slug situatii_financiare_2021 e megadump cu toți anii 2012-2021. Adaugă 5 ani istorice pentru trend charts.

B3. ANAF Bilanț webservice (TODO, on-demand)

  • Endpoint: https://webservicesp.anaf.ro/bilant?an=<YYYY>&cui=<CUI>
  • Returnează JSON per-CUI bilanț (verified: BCR 2023, OMV Petrom 2023)
  • Coverage: 2015-2023 only (2024+2014 = empty i:[])
  • Use: cache-miss fallback când userul deschide profil firmă fără financials

B4. Watch slug situatii_financiare_2025 (TODO, daily check)

Așteptăm publicare ~iunie 2026 (pattern istoric: an+1 mai-iunie).

C. ONRC + ANAF datasets neimportate

C1. 3 ONRC CSVs lipsă (TODO, ~1h)

Same dataset firme-DD-MM-YYYY:

  • OD_REPREZENTANTI_LEGALI.CSV — DEJA importat (rep_legali JSONB)
  • OD_REPREZENTANTI_IF.CSV — întreprinderi familiale (small)
  • OD_SUCURSALE_ALTE_STATE_MEMBRE.CSV — sucursale UE (very small ~19KB)

C2. ANAF Inactivi (TODO)

  • URL: https://www.anaf.ro/inactivi/rezultatInactivi.jsp (HTML scrape) sau serviciu web async
  • Diferit de is_active_anaf din v9 (acela = activ fiscal; inactivi = declarat oficial inactiv conform art. 92 CPF, blocheaza deductibilitate TVA)
  • Adaugă coloană anaf_inactiv_oficial

C3. ANAF Lista Albă (TODO)

  • URL: https://www.anaf.ro/restante/listaalba.xhtml (XHTML scrape)
  • Boolean lista_alba_anaf — fără obligații restante
  • Util ca "scor încredere" la public

C4. ANAF Datornici (TODO, FOARTE VALOROS)

  • URL: https://www.anaf.ro/restante/ (publicat trimestrial din 2026)
  • Sume datorate per CUI. Semnal financiar real, lucrabil în recipe-uri: "firme datoare la stat care au câștigat contracte recente"

C5. ONRC Puncte de Lucru (NO BULK — defer)

  • Confirmat: nu există export bulk. Doar lookup web per CUI.
  • Opțiuni: scrape controlled 1 req/s (3.97M / an), sau cerere oficială Lege 544/2001 către ONRC pentru bulk (proiect civic poate fi accepted)
  • Defer until justified

D. License/regulator registries (TODO, 3-5 zile pentru mai multe)

Per categorie: PDF/web tabel, scraping necesar. Total ~50K firme cu flag-uri suplimentare per regulator:

Regulator URL Format Volum aprox
ANRE (energie) portal.anre.ro/PublicLists/LicenteAutorizatii (TLS expirat, --insecure) tabel paginat mii licențe
ANCOM (telecom) ancom.ro/furnizori-comunicatii-electronice_133 web list paginat ~3000
ASF (asigurări/finanțe) asfromania.ro/ro/c/54/registrul-entitatilor-din-piata-asigurarilor Excel/PDF mii
ANRSC (utilități publice) anrsc.ro evidenta-licente PDF lunar PDF parsabil sute
ANMDMR (medicamente) portal.anm.ro tabele paginate mii
ASPAAS (auditori) aspaas.gov.ro + cafr.ro PDF PDF mii
CECCAR (contabili) ceccar.ro/?page_id=97 PDF anual mii
ANEVAR (evaluatori) anevar.ro/cautare + PDF lunar per categorie PDF corporativi cu CUI
OAR (arhitecți) oar.archi + Monitor Oficial PI PDF anual toți cu CUI

E. Procurement-adjacent

E1. data.gov.ro proiecte-contractate (fonduri EU) (TODO, 1 zi)

  • URL: https://data.gov.ro/dataset/proiecte-contractate (XLSX bulk, OGL-ROU-1.0)
  • Coverage: POIM, POC, POAT, POCU, POR, POCA, POAD 2018-2024
  • Beneficiari + suma per proiect, link la firms.entities prin CUI
  • Recipe nouă: "firme cu fonduri EU mari" + dependență per program

E2. Consiliul Concurenței blacklist trucări (TODO, 2 zile)

  • ~100 decizii cartel/bid-rigging, ~35 firme distincte
  • URL: consiliulconcurentei.ro/documente-oficiale/concurenta/decizii/serviciul-carteluri/
  • PDF crawl + extracție nume firmă + sumă + decizie
  • IMPACT REPUTATIONAL ENORM pe profile firmă: "Acest furnizor a fost amendat pentru cartel" + link la PDF

E3. ANAF datorii bugetul de stat (TODO, conditional)

  • Verifică dacă anaf.ro/restante are downloadable files (sau doar XHTML scrape)
  • Snapshot 1× / lună
  • Recipe: "datornici care câștigă contracte"

E4. Curtea de Conturi audit reports (TODO, 3-5 zile)

  • URL: curteadeconturi.ro/rapoarte-audit/downloads/<NNN> (sequential IDs ~14000)
  • Numai PDFs, fără API. Crawl + OCR/text extraction necesar
  • Începe cu rapoartele anuale publice (10 PDFs 2014-2024) pentru search full-text
  • Per-instituție audit: defer la v2

E5. PNRR ORDS dashboard (TODO, 1-day spike)

  • pnrr.fonduri-ue.ro/ords/pnrr/r/dashboard-status-pnrr/
  • Reverse-engineer Oracle ORDS endpoints din JS
  • Dacă accesibile bulk → INGEST IMEDIAT (highest-stakes spend RO acum)

E6. CNSC contestații (TODO, 1 săptămână)

  • portal.cnsc.ro/decizii.html, ~16,000+ decizii PDF
  • Heavy parsing, but: "care autorități pierd contestații cel mai mult" e o întrebare jurnalistică deep-value
  • Park la Q3

F. NU SE POATE — gap-uri publice

F1. Per-supplier actual payments

Nu există. ForexeBug are date intern dar nu publică per-supplier. Gap-ul cel mai mare pentru "follow the money".

F2. Per-CUI court decisions

  • ROLII e mort din martie 2022 (anonimizare GDPR + dizolvare fundație)
  • REJUST e replacement dar ANONIMIZAT (nu poți face per-firmă lookup)
  • portal.just.ro web service — limitat la 1000 results/query, nu CUI parameter
  • Per-CUI civil action history NU EXISTĂ ca open data RO

F3. BPI insolvency procedural acts

  • ONRC charges subscription (~paywall)
  • Toate API/wrapper-uri terțe (DateBPI, termene.ro, Coface) sunt paid
  • Defer fără deal comercial

F4. OSIM patente/mărci

  • DB națională OSIM e broken oficial
  • Espacenet (EPO) + EUIPO eSearch nu au per-CUI bulk dump

F5. Email-uri firme

  • Niciun registru public obligatoriu
  • Pragmatic: derive info@<domain> din coloana web (acoperire ~20-30%) sau scrape websiteul firmei (regex email pe homepage + /contact). Legal-OK doar pentru emailuri generice (info@/contact@/office@), respectând robots.txt

Ranking implementare next sprint

  1. Now (running): Photon geocoding pe 1.17M firme fără pin (49 min ETA)
  2. Săptămâna asta (~2 zile):
    • 13 categorii MFP non-WEB_UU (1-2 zile)
    • 3 ONRC CSVs lipsă (1h)
    • data.gov.ro proiecte-contractate fonduri EU (1 zi)
    • ANAF Inactivi + Lista Albă + Datornici scrape (1 zi)
  3. Sprint următor (~1 săptămână):
    • osm2pgsql RO PostGIS load
    • License registries (ANRE, ANCOM, ASF, ANRSC, ANMDMR, ASPAAS, ANEVAR, OAR)
    • Consiliul Concurenței blacklist (2 zile)
    • PNRR ORDS spike (1 zi) → ingest dacă accesibil
  4. Q3-Q4:
    • Curtea de Conturi audit PDF crawl
    • CNSC contestații PDF scrape
    • ANAF Bilanț webservice cache-miss fallback