# Repo ja töövoog

## Projektid (Git: gogs.odamus.com, kasutaja `ardo`)

### `ardo/liiklusatlas` (aktive, veebirakendus + pipeline)
- `pipeline/` — analüüsiahel:
  - `run_municipality.py` — orkestreerija ühele vallale
  - `ads_buildings.py`, `ads_ky.py` — ADS-i hooned + katastriüksused (Maa- ja Ruumiamet)
  - `building_population.py` — hoonepõhine rahvastik + kalibreerimine + ADS KÜ-omistamine (`ads_ky` aadress-kinnistu link)
  - `gravity_exit_analysis.py` — gravitatsioonijaotus, haavatavus, kriitilised lõigud
  - `export_qgis.py` — gpkg eksport (omand, kasutus, reisitee, tupikud, väljapääsud)
  - `teeregister_omand.py`, `teeregister_leping.py`, `kataster_laadimine.py` — omand/kasutus allikad
  - `offer.py` — hinnapakkumise PDF
- `preprocess_web.py` — gpkg → GeoJSON kihid + raporti materjalid
- `municipalities.py` — 79 KOV-i register (status + **public** märge)
- `server.py` — FastAPI + **demo-koodi kaitse** (`ATLAS_ACCESS_TOKEN`) + **logimine**
- `report.py` — PDF-raport (kokkuvõte, kriitilised lõigud, liikluskoormuse tabel)
- `web/index.html` — MapLibre kaart (demo-koodi sisend, kaitstud vallad lukus)
- `web/tutvustus.html` — referentsileht (avalik Valga, teised kaitstud 🔒)
- `data/` — genereeritud GeoJSON + raportifailid (commititud), `data/logs/access.log`

### `ardo/Obsidian` — doktoritöö märkmed (koopiad)

### `ardo/ohmu-cron` — serverite varundusskriptid

## Lokaalne struktuur

```
Project/
  liiklussagedus/            # analüüsi algandmed + tulemused (ei ole git-is)
    results/                 # {prefix}_*.csv, {prefix}_*.png, {prefix}_qgis.gpkg
    results/validation/      # kataster, ADS, KÜ, teeregister gpkg-d
    cache/                   # OSMnx vahemälu
    data/                    # WorldPop raster
  liiklusatlas/              # GIT: veebirakendus + pipeline
```

## Analüüsitöövoog (uue valla lisamine)

```bash
# 0. Vajadusel: ADS hooned + KÜ + kataster + teeregister (automaatselt, kui puuduvad)
# 1. Täisanalüüs (võtab 5–15 min olenevalt vallast)
PYTHONPATH=. .venv/bin/python3 liiklusatlas/pipeline/run_municipality.py <vall_id>

# 2. Veebiandmete genereerimine (GeoJSON + raport)
PYTHONPATH=. .venv/bin/python3 liiklusatlas/preprocess_web.py <vall_id>

# 3. Commit + push
cd liiklusatlas && git add -A && git commit -m "..." && git push

# 4. Redeploy (koodimuutus → image build; andmed → pull + restart)
ssh ohmu     # cd /data/docker/liiklusatlas && git pull && docker-compose build && docker-compose up -d --force-recreate
ssh hetzner  # cd ~/swarm/.../liiklusatlas && git pull && docker build -t liiklusatlas:latest . && export ATLAS_ACCESS_TOKEN=<kood> && docker stack deploy --compose-file=stack-prod.yml atlas && docker service update --force atlas_liiklusatlas
```

## Avalik/kaistud mudel + token + logimine

- `municipalities.py`: **Valga `public: True`**, teised `False`. Manifest kannab `access: public|protected`.
- `server.py`: kaitstud valla `/api/maps/{vald}`, `/api/maps/{vald}/{layer}`, `/api/report.pdf`
  nõuavad `ATLAS_ACCESS_TOKEN` (`?token=` või `X-Access-Token`), muidu 403.
- `data/logs/access.log` — iga andmepäring (aeg, IP, vald, kiht, staatus, UA, kas koodiga).
- Token **`.env`-is (ohmu)** ja **eksporditud shellis (hetzner)** — `.env` on `.gitignore`-is (ei leki).

## Valla-id → analüüsiparameetrid

`pipeline/run_municipality.py` KNOWN-tabelis: `vall_id → (place, prefix, area_km2, official_pop)`.
Teadmata vallad: proovib `teedellm.config.MUNICIPALITIES` registrit.

## Väljundfailide konventsioon

- Analüüs: `liiklussagedus/results/{prefix}_*`
- Veeb: `liiklusatlas/data/web/{vall_id}/`, `liiklusatlas/data/report/{vall_id}/`
- Raporti failid saavad **standardnimed** (valga_pop_*.png jne), sisu on valla-spetsiifiline

## Seos

[[Liiklussageduse kaudne hindamine/04_Tehniline/Veebirakendus]]
[[Liiklussageduse kaudne hindamine/04_Tehniline/Deploy ja infrastruktuur]]
