# 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 anchors `1-9-3-*/`. - Pentru fiecare subpagină: `htmlToText` + ancorează pe `CUI: 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. ```sql 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. ```sql 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. ```sql 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) 1. **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 cu `pdftotext`). 2. **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`. 3. **Insolvențe AAAS** — căutare în arhiva BPI (Buletinul Procedurilor de Insolvență) după CUI-urile din `aaas.firme` ar produce automat tag-uri `insolventa` pentru cele ~550 raportate de AAAS. 4. **Recipe în `lib/recipes.ts`** — adaugă "Firme aflate sub autoritatea AAAS" ca secțiune dedicată (3 recipes: portofoliu, contracte, datorii). 5. **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.