# 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.
