171 lines
3.9 KiB
Markdown
171 lines
3.9 KiB
Markdown
|
|
# Infrastructure Object Model (IOM)
|
||
|
|
|
||
|
|
> Universellt språk för fysisk infrastruktur — från observation till kunskapsgraf.
|
||
|
|
> Status: MVP klar | 2026-06-26
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Sammanfattning
|
||
|
|
|
||
|
|
IOM är en tio-lagers modell för att representera, identifiera, observera och analysera fysisk infrastruktur. Byggd för quiXzoom Fas 1.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Arkitektur
|
||
|
|
|
||
|
|
```
|
||
|
|
iom/
|
||
|
|
├── core/ # Lager 1-2: Taxonomi + GOID
|
||
|
|
│ ├── iom_taxonomy.json # Komplett taxonomi (5 domäner)
|
||
|
|
│ ├── goid_generator.py # GOID-generering och validering
|
||
|
|
│ └── test_goid.py # Enhetstester (16/16 passerar)
|
||
|
|
│
|
||
|
|
├── observation/ # Lager 6: Observationer
|
||
|
|
│ ├── observation_models.py # Pydantic-modeller
|
||
|
|
│ └── observation_store.py # PostgreSQL + PostGIS
|
||
|
|
│
|
||
|
|
├── defect/ # Lager 7: Felklassificering
|
||
|
|
│ └── defect_codes.py # 50+ felkoder, hierarki, AI-nyckelord
|
||
|
|
│
|
||
|
|
├── risk/ # Lager 8: Riskmodell
|
||
|
|
│ └── risk_model.py # 10 objekttyper, vikter, beräkning
|
||
|
|
│
|
||
|
|
├── ledger/ # Integration aamos-ledger
|
||
|
|
│ └── iom_ledger_mapping.py # BAS-konton, avskrivningar
|
||
|
|
│
|
||
|
|
└── api/ # API
|
||
|
|
└── main.py # FastAPI, alla endpoints
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 1: Taxonomi
|
||
|
|
|
||
|
|
5 domäner, 10 system, 30+ objekttyper:
|
||
|
|
|
||
|
|
| Domän | Beskrivning |
|
||
|
|
|---|---|
|
||
|
|
| BYG | Byggnad (fasader, tak, fönster) |
|
||
|
|
| BEL | Belysning (gatlyktor, trafiksignaler) |
|
||
|
|
| COM | Kommersiellt (butiksfronter, reklam) |
|
||
|
|
| TRN | Transport (vägar, broar, parkeringar) |
|
||
|
|
| ENE | Energi (laddstationer, transformatorer) |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 2: GOID
|
||
|
|
|
||
|
|
Format: `[DOM]-[SYS]-[SUB]-[OBJ]-[SEQ]`
|
||
|
|
|
||
|
|
Exempel: `BYG-FAC-WIN-GLA-0001`
|
||
|
|
|
||
|
|
- Permanent, unikt, oföränderligt
|
||
|
|
- Validering och parsning
|
||
|
|
- 16/16 tester passerar
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 6: Observationer
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
observation:
|
||
|
|
id: "OBS-2026-0012847"
|
||
|
|
object_goid: "BYG-FAC-WIN-GLA-2847"
|
||
|
|
findings:
|
||
|
|
- type: "dirt_accumulation"
|
||
|
|
code: "2100"
|
||
|
|
confidence: 0.94
|
||
|
|
media:
|
||
|
|
- type: "image"
|
||
|
|
url: "..."
|
||
|
|
geotag: {lat: 59.3293, lng: 18.0686}
|
||
|
|
ai_analysis:
|
||
|
|
overall_condition: 3
|
||
|
|
recommended_action: "schedule_cleaning"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 7: Felkoder
|
||
|
|
|
||
|
|
50+ koder i hierarki:
|
||
|
|
|
||
|
|
```
|
||
|
|
2000 — Ytskada
|
||
|
|
├── 2100 — Nedsmutsning
|
||
|
|
├── 2200 — Färgförändring
|
||
|
|
├── 2300 — Ytskada
|
||
|
|
└── 2400 — Klotter
|
||
|
|
|
||
|
|
3000 — Strukturell skada
|
||
|
|
├── 3100 — Spricka
|
||
|
|
├── 3200 — Deformation
|
||
|
|
└── 3300 — Materialförlust
|
||
|
|
```
|
||
|
|
|
||
|
|
- Flerspråkig (sv/en)
|
||
|
|
- AI-nyckelord för auto-klassificering
|
||
|
|
- Sök och föreslå
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Lager 8: Riskmodell
|
||
|
|
|
||
|
|
6 dimensioner, viktat per objekttyp:
|
||
|
|
|
||
|
|
| Objekttyp | Säkerhet | Ekonomi | Drift | Estetik |
|
||
|
|
|---|---|---|---|---|
|
||
|
|
| Bro | 40% | 15% | 20% | 10% |
|
||
|
|
| Fönster | 20% | 15% | 10% | 35% |
|
||
|
|
| Laddstation | 45% | 15% | 15% | 10% |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Ledger-integration
|
||
|
|
|
||
|
|
- BAS-konton: 1220, 1230, 6110, 7830, 7970
|
||
|
|
- Händelser: installation, underhåll, avskrivning, nedskrivning
|
||
|
|
- Kontradiktionsrapportering
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## API Endpoints
|
||
|
|
|
||
|
|
| Endpoint | Beskrivning |
|
||
|
|
|---|---|
|
||
|
|
| `POST /goid/generate` | Generera GOID |
|
||
|
|
| `GET /goid/validate/{goid}` | Validera GOID |
|
||
|
|
| `GET /taxonomy/domains` | Lista domäner |
|
||
|
|
| `POST /observations` | Skapa observation |
|
||
|
|
| `GET /defects` | Lista felkoder |
|
||
|
|
| `POST /risk/calculate` | Beräkna risk |
|
||
|
|
| `POST /ledger/installation` | Bokför installation |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tester
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd iom/core && python3 test_goid.py
|
||
|
|
# 16/16 tester passerar
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Nästa steg
|
||
|
|
|
||
|
|
1. [ ] Sätt upp PostgreSQL + PostGIS
|
||
|
|
2. [ ] Kör API:t (`uvicorn api.main:app`)
|
||
|
|
3. [ ] Integration med quiXzoom app
|
||
|
|
4. [ ] AI-klassificeringspipeline
|
||
|
|
5. [ ] Digital tvilling (Lager 10)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Dokumentation
|
||
|
|
|
||
|
|
- `INFRASTRUCTURE_OBJECT_MODEL.md` — Komplett spec
|
||
|
|
- `IOM_LEDGER_INTEGRATION.md` — Ledger-integration
|
||
|
|
- `IOM_PRIORITY_ROADMAP.md` — Prioritering
|
||
|
|
- `IOM_IMPLEMENTATION_PLAN.md` — Implementationsplan
|