623561d30a
- Backend: Docker-container på port 8082 - Redis: Intern container (ingen exposed port) - Nginx-config: nginx-passwordless.conf (väntar på deploy) - Webb: API_BASE uppdaterad till api.quixzoom.com - Fix: datetime timezone-aware i approve-endpoint - Test: End-to-end flöde verifierat
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
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
cd iom/core && python3 test_goid.py
# 16/16 tester passerar
Nästa steg
- Sätt upp PostgreSQL + PostGIS
- Kör API:t (
uvicorn api.main:app) - Integration med quiXzoom app
- AI-klassificeringspipeline
- Digital tvilling (Lager 10)
Dokumentation
INFRASTRUCTURE_OBJECT_MODEL.md— Komplett specIOM_LEDGER_INTEGRATION.md— Ledger-integrationIOM_PRIORITY_ROADMAP.md— PrioriteringIOM_IMPLEMENTATION_PLAN.md— Implementationsplan