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

204 lines
9.3 KiB
Markdown
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.
# 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)
```bash
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<YEAR>.txt (~9MB) — bilanț scurt/lichidare. **Alliance Healthcare e aici.**
- web_ong_an<YEAR>.txt (~8MB) — asociații/fundații
- web_instit_de_credit_an<YEAR>.txt — bănci (~30 records, IFRS schema)
- web_ifn<YEAR>.txt — instituții financiare nebancare
- web_ip_ieme<YEAR>.txt — instituții de plată
- webasig<YEAR>.txt — asigurători
- webbrok<YEAR>.txt — brokeri asigurări
- web_sif<YEAR>.txt — fonduri de investiții
- web_pensii<YEAR>.txt — fonduri de pensii
- web_vs_<YEAR>.txt — S.S.I.F.
- web_vm_an<YEAR>.txt — valori mobiliare
- web_ir_an<YEAR>.txt — instituții religioase
- web_fond_garantare<YEAR>.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