a6c03a091e
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)
159 lines
7.7 KiB
Markdown
159 lines
7.7 KiB
Markdown
# 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.
|