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)
7.7 KiB
AAAS — Autoritatea pentru Administrarea Activelor Statului
Status: ingest portfolio MVP livrat 2026-05-10. Schema + scraper + cron deployed. Sursa: https://www.aaas.gov.ro/ (HTML scraping; nicio sursă Excel / JSON / API publică).
Context AAAS
AAAS administrează cota reziduală a statului în firme privatizate plus recuperează creanțe post-privatizare. A taga o firmă cu "statul deține acțiuni" / "datorează bani statului" / "obligație investițională post-privatizare" este un semnal rar și puternic la nivel național — ~500-1000 CUI-uri totale.
Conform comunicatelor instituției: ~400 firme active monitorizate, ~2.000 contracte post-priv, ~550 în insolvență, ~11.5 mld RON datorii de recuperat. Doar 12 firme (active_holding) sunt publicate online structurat astăzi; restul rămâne în PDF-uri istorice / portal cu login.
Sursele identificate
| URL | Conținut | Stare astăzi | Acțiune |
|---|---|---|---|
/despre-aaas/.../1-9-3-companii-sub-autoritatea-aaas/ |
12 firme active_holding cu subpagină proprie | STRUCTURAT — CUI / J / adresă / participație % | Ingerat |
/4-oferta-a-a-a-s/4-2-vanzari-actiuni/ |
Oferte vânzare acțiuni | "SECȚIUNE ÎN CONSTRUCȚIE" — doar EXPO PARC SRL Iași teaser PDF | Probă logată; recheck cron |
/4-oferta-a-a-a-s/4-3-valorificare-creante/ |
Lista creanțe de vândut | "SECȚIUNE ÎN CONSTRUCȚIE" | Probă logată; recheck cron |
gwp.aaas.gov.ro/Directia-creante |
Portal servicii electronice | Login required, nu există API public anonim | Defer (ar necesita cont AAAS) |
aaas.gov.ro/upload_files/.../ANEXA%20LA%20ORDINUL%20278_18.02.2005_en.pdf |
~800 firme × 41 județe (snapshot 2005) | PDF-only, istoric — referință | Defer (PDF parser pe sesiune ulterioară) |
aaas.gov.ro/upload/FNI_Judet_*.pdf |
Despăgubiri FNI persoane fizice | PDF-only, persoane fizice (CNP) — nu CUI | Out of scope pentru aaas.firme |
Schema livrată — services/seap-scraper/sql/032_aaas.sql
aaas.firme -- PK = cui; one row per AAAS-monitored CUI
-- aaas_status ∈ {active_holding, post_priv_debt, insolventa,
-- recuperare, vanzare_actiuni, vanzare_creante}
-- state_share_pct, debt_to_state_lei, raw jsonb
aaas.scrape_log -- per-run audit trail (mirror anre.scrape_log)
aaas.mv_per_cui -- materialized rollup pentru join uniform
-- REFRESH MATERIALIZED VIEW CONCURRENTLY aaas.mv_per_cui
Scraper — services/seap-scraper/src/scrape-aaas.ts
- Walk index
1-9-3-companii-sub-autoritatea-aaas/→ extrage 12 anchors1-9-3-*/. - Pentru fiecare subpagină:
htmlToText+ ancorează peCUI: NNN / Jxx, apoi extrage Adresa / Telefon / Site / Email / Participație AAAS. - Tratează caz curat de double-render al titlului ("BLUE AIR TEHNIC SA BLUE AIR TEHNIC S.A." → "BLUE AIR TEHNIC S.A.").
- UPSERT pe
cui,aaas_status='active_holding',cui_match_method='aaas_published'(CUI-ul vine direct de la AAAS, deci scor 1.000). - Probează și paginile
vanzari_actiuni/vanzari_creante— astăzi logheazăsection_under_construction. Re-rularea le va detecta când AAAS publică conținut. - Refresh MV + raport match rate la final.
Cron wrapper — services/seap-scraper/cron/scrape-aaas.sh
Mirror scrape-anre.sh: Infisical Machine Identity → env-file → docker run --env-file.
Idempotent (UPSERT). Recomandare cadența: săptămânal (sursa nu se schimbă des).
sudo /opt/vreaudigital/services/seap-scraper/cron/scrape-aaas.sh
sudo LIMIT=3 .../scrape-aaas.sh # smoke test
Rezultate ingest (2026-05-10)
12 subpages found 11 inserted 1 skipped (CRIZANTEMA COM — pagină goală încă)
match_cui_pct: 100.0% (11/11 față de firms.entities)
breakdown: active_holding = 11
| CUI | Nume AAAS | Participație | Match firms.entities |
|---|---|---|---|
| 16695222 | RADIOACTIV MINERAL MAGURELE S.A. | 100.000% | RADIOACTIV MINERAL MAGURELE SA |
| 31029694 | ACTIVE CONEXE | 100.000% | ACTIVE CONEXE S.A. |
| 11369861 | ARCADIA 2000 | 100.000% | ARCADIA 2000 SA |
| 42790517 | BLUE AIR TEHNIC S.A. | 100.000% | BLUE AIR TECHNIC S.R.L. |
| 8359779 | SOCIETATEA DE STRATEGIE PENTRU PIATA DE GROS | 100.000% | SOCIETATEA DE STRATEGIE PENTRU PIATA DE GROS SRL |
| 1960487 | TRIMEC | 98.500% | TRIMEC SA |
| 7638244 | AGROMEC ICLOD | 92.800% | AGROMEC ICLOD SA |
| 360557 | EUROTEST S.A. | 70.000% | EUROTEST SA |
| 1973568 | RECONS | 66.000% | RECONS SA |
| 1074251 | AGROMEC MOLDOVA NOUA | 58.600% | AGROMEC MOLDOVA NOUA SA |
| 1384767 | COMALEX | 53.600% | COMALEX SA |
Cross-source value — recipe SQL drafted
Recipe 1: "Firme AAAS-monitorizate care câștigă contracte SEAP"
Companii în portofoliul activ AAAS care câștigă mai multe contracte de stat — state-owned firms taking state procurement money.
SELECT
a.cui,
a.name AS firma_aaas,
a.state_share_pct,
COUNT(ann.notice_id_internal) AS nr_contracte_seap,
SUM(ann.awarded_value) AS total_castigat_lei,
array_agg(DISTINCT ann.authority_name) FILTER (WHERE ann.authority_name IS NOT NULL)
AS autoritati_contractante
FROM aaas.firme a
LEFT JOIN seap.announcements ann ON ann.supplier_cui = a.cui
GROUP BY a.cui, a.name, a.state_share_pct
ORDER BY total_castigat_lei DESC NULLS LAST;
Smoke test (azi): RADIOACTIV MINERAL MAGURELE (100% AAAS) are 5 contracte SEAP, top 279.700 RON de la Compania Națională a Uraniului S.A. (firmă de stat) — circuit complet stat→stat documentat.
Recipe 2: "Firme AAAS-monitorizate care figurează la ANAF datornici"
Firme cu acționariat de stat care își datorează propriile taxe statului.
SELECT a.cui, a.name, a.state_share_pct, d.suma_totala
FROM aaas.firme a
JOIN anaf.datornici d USING (cui)
ORDER BY d.suma_totala DESC;
Recipe 3: "Performanța portofoliului rezidual de stat"
Cum performează firmele în care statul mai are acțiuni — utilizat pentru KPI / red-flag pe profil.
SELECT a.cui, a.name, a.state_share_pct,
f.cifra_afaceri, f.profit_brut, f.an
FROM aaas.firme a
LEFT JOIN firms.financials f USING (cui)
WHERE f.an = (SELECT MAX(an) FROM firms.financials WHERE cui = a.cui)
ORDER BY f.cifra_afaceri DESC NULLS LAST;
Next steps (sesiuni viitoare)
- PDF parser pentru ORDIN 278/2005 (~800 firme × 41 județe, snapshot 2005)
— ar putea da ~500-700 CUI-uri istorice tagate ca
aaas_legacy_portfolio. Format: PDF tabular, OCR nu e necesar (text extractabil cupdftotext). - Recheck cron pentru
4-2-vanzari-actiuni/4-3-valorificare-creante— când AAAS publică conținut, scraperul deja loghează stare. Adaugă parser când stare ≠section_under_construction. - Insolvențe AAAS — căutare în arhiva BPI (Buletinul Procedurilor de
Insolvență) după CUI-urile din
aaas.firmear produce automat tag-uriinsolventapentru cele ~550 raportate de AAAS. - Recipe în
lib/recipes.ts— adaugă "Firme aflate sub autoritatea AAAS" ca secțiune dedicată (3 recipes: portofoliu, contracte, datorii). - Profile badge —
firms.entities.cui∈aaas.firme.cui⇒ afișează chip "Stat deține X% (AAAS)" pe profilul firmei.
Notițe operaționale
- Sursa AAAS este fragilă (WordPress + Brizy editor, pagini cu boilerplate
"dummy text" în loc de date reale, secțiuni "în construcție" persistente).
Parserul este intentat conservativ — anchor strict pe
CUI: NNN / Jxx. - Nu există rate limiting agresiv; 350ms între cereri e conservator.
- Volumul total e mic (12 pagini) — runtime 6-7 secunde end-to-end.
- Replicabilitate 5/5: doar AAAS publică această taxonomie. Rar și valoros.