From 7d40cf95bfab0b28d8baeb44bc14b7af53714ee2 Mon Sep 17 00:00:00 2001 From: Bernt Date: Sun, 5 Jul 2026 05:55:48 +0000 Subject: [PATCH] landvex: IOL v3 + Identify API + Neo4j-graf + byggpipeline - FastAPI Identify API (port 8081) - Neo4j propertygraf (64 noder, 80 kanter) - Ingest-pipeline (Python) - Byggscript + integrationstester - Docker Compose setup --- projects/landvex/00-styrning/AGENTARME.md | 69 + projects/landvex/00-styrning/MANIFEST.json | 210 + projects/landvex/00-styrning/OVERSIKT.md | 37 + projects/landvex/00-styrning/verifiera.py | 111 + .../10-data/lvx-bounty-kandidater-vag7.json | 178 + .../10-data/lvx-exempel-brunnsbetackning.json | 145 + .../landvex/10-data/lvx-graf-kanter-v3.json | 1408 +++++ projects/landvex/10-data/lvx-id-register.json | 39 + .../10-data/lvx-klassposter-master-v3.json | 4749 +++++++++++++++++ .../landvex/10-data/lvx-objekt-schema.json | 225 + .../10-data/lvx-produktmodeller-auto.json | 60 + .../10-data/lvx-produktmodeller-vag2.json | 216 + .../10-data/lvx-produktmodeller-vag3.json | 118 + .../landvex/10-data/lvx-taxonomi-tier1.json | 202 + .../landvex/10-data/lvx-taxonomi-tier2.json | 38 + .../10-data/lvx-zoomer-bounties-vag1.json | 30 + projects/landvex/20-automation/ingest.py | 233 + .../20-automation/intag/kallpaket-vag7.json | 55 + .../intag/kandidatposter-vag7.json | 115 + .../20-automation/lvx-extraktionsprompt.md | 40 + .../landvex/20-automation/lvx-ingest-spec.md | 71 + .../landvex/30-produkt/lvx-api-demosvar.json | 109 + .../landvex/30-produkt/lvx-pilot-api-spec.md | 89 + .../30-produkt/lvx-zoomer-bountyprogram.md | 85 + .../40-strategi/iol-grundspecifikation.md | 202 + .../40-strategi/landvex-genome-strategi.md | 259 + .../40-strategi/landvex-pilotpitch.pptx | Bin 0 -> 170939 bytes .../rapporter/lvx-leveransrapport-tier1.md | 55 + .../rapporter/lvx-leveransrapport-vag2.md | 63 + .../rapporter/lvx-leveransrapport-vag3.md | 49 + .../rapporter/lvx-leveransrapport-vag4.md | 51 + .../rapporter/lvx-leveransrapport-vag5.md | 53 + .../rapporter/lvx-leveransrapport-vag7.md | 53 + projects/landvex/README.md | 84 + projects/landvex/api/Dockerfile | 7 + projects/landvex/api/main.py | 231 + projects/landvex/api/requirements.txt | 4 + projects/landvex/arkiv/README.md | 5 + .../landvex/arkiv/byggscript/bygg_manifest.py | 18 + projects/landvex/arkiv/byggscript/deck.js | 328 ++ .../landvex/arkiv/byggscript/konsolidera.py | 156 + .../arkiv/byggscript/konsolidera_v2.py | 122 + .../data-ersatta/lvx-graf-kanter-v1.json | 911 ++++ .../data-ersatta/lvx-graf-kanter-v2.json | 1333 +++++ .../data-ersatta/lvx-klassposter-eln.json | 191 + .../lvx-klassposter-master-v1.json | 2739 ++++++++++ .../lvx-klassposter-master-v2.json | 4642 ++++++++++++++++ .../data-ersatta/lvx-klassposter-tel-prk.json | 210 + .../lvx-klassposter-tier2-ovriga.json | 252 + .../lvx-klassposter-tier2-trp.json | 376 ++ .../data-ersatta/lvx-klassposter-trp.json | 374 ++ .../lvx-klassposter-vag2-uppdaterade.json | 275 + .../data-ersatta/lvx-klassposter-vat.json | 153 + projects/landvex/build.sh | 59 + projects/landvex/db/kanter.csv | 81 + projects/landvex/db/load_graph.cypher | 36 + projects/landvex/db/load_to_neo4j.py | 99 + projects/landvex/db/noder.csv | 65 + projects/landvex/docker-compose.yml | 22 + projects/landvex/scripts/export_csv.py | 62 + projects/landvex/scripts/test_api.py | 78 + 61 files changed, 22330 insertions(+) create mode 100644 projects/landvex/00-styrning/AGENTARME.md create mode 100644 projects/landvex/00-styrning/MANIFEST.json create mode 100644 projects/landvex/00-styrning/OVERSIKT.md create mode 100644 projects/landvex/00-styrning/verifiera.py create mode 100644 projects/landvex/10-data/lvx-bounty-kandidater-vag7.json create mode 100644 projects/landvex/10-data/lvx-exempel-brunnsbetackning.json create mode 100644 projects/landvex/10-data/lvx-graf-kanter-v3.json create mode 100644 projects/landvex/10-data/lvx-id-register.json create mode 100644 projects/landvex/10-data/lvx-klassposter-master-v3.json create mode 100644 projects/landvex/10-data/lvx-objekt-schema.json create mode 100644 projects/landvex/10-data/lvx-produktmodeller-auto.json create mode 100644 projects/landvex/10-data/lvx-produktmodeller-vag2.json create mode 100644 projects/landvex/10-data/lvx-produktmodeller-vag3.json create mode 100644 projects/landvex/10-data/lvx-taxonomi-tier1.json create mode 100644 projects/landvex/10-data/lvx-taxonomi-tier2.json create mode 100644 projects/landvex/10-data/lvx-zoomer-bounties-vag1.json create mode 100644 projects/landvex/20-automation/ingest.py create mode 100644 projects/landvex/20-automation/intag/kallpaket-vag7.json create mode 100644 projects/landvex/20-automation/intag/kandidatposter-vag7.json create mode 100644 projects/landvex/20-automation/lvx-extraktionsprompt.md create mode 100644 projects/landvex/20-automation/lvx-ingest-spec.md create mode 100644 projects/landvex/30-produkt/lvx-api-demosvar.json create mode 100644 projects/landvex/30-produkt/lvx-pilot-api-spec.md create mode 100644 projects/landvex/30-produkt/lvx-zoomer-bountyprogram.md create mode 100644 projects/landvex/40-strategi/iol-grundspecifikation.md create mode 100644 projects/landvex/40-strategi/landvex-genome-strategi.md create mode 100644 projects/landvex/40-strategi/landvex-pilotpitch.pptx create mode 100644 projects/landvex/40-strategi/rapporter/lvx-leveransrapport-tier1.md create mode 100644 projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag2.md create mode 100644 projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag3.md create mode 100644 projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag4.md create mode 100644 projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag5.md create mode 100644 projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag7.md create mode 100644 projects/landvex/README.md create mode 100644 projects/landvex/api/Dockerfile create mode 100644 projects/landvex/api/main.py create mode 100644 projects/landvex/api/requirements.txt create mode 100644 projects/landvex/arkiv/README.md create mode 100644 projects/landvex/arkiv/byggscript/bygg_manifest.py create mode 100644 projects/landvex/arkiv/byggscript/deck.js create mode 100644 projects/landvex/arkiv/byggscript/konsolidera.py create mode 100644 projects/landvex/arkiv/byggscript/konsolidera_v2.py create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v1.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v2.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-eln.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v1.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v2.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-tel-prk.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-ovriga.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-trp.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-trp.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-vag2-uppdaterade.json create mode 100644 projects/landvex/arkiv/data-ersatta/lvx-klassposter-vat.json create mode 100755 projects/landvex/build.sh create mode 100644 projects/landvex/db/kanter.csv create mode 100644 projects/landvex/db/load_graph.cypher create mode 100644 projects/landvex/db/load_to_neo4j.py create mode 100644 projects/landvex/db/noder.csv create mode 100644 projects/landvex/docker-compose.yml create mode 100644 projects/landvex/scripts/export_csv.py create mode 100644 projects/landvex/scripts/test_api.py diff --git a/projects/landvex/00-styrning/AGENTARME.md b/projects/landvex/00-styrning/AGENTARME.md new file mode 100644 index 000000000..2e7627eb3 --- /dev/null +++ b/projects/landvex/00-styrning/AGENTARME.md @@ -0,0 +1,69 @@ +# AGENTARMÉ — implementeringsorder v1 +## Landvex produktionspaket · 58 agenter · 11 skvadroner · 4 faser + +Detta dokument är arbetsordern. Paketets filer är enda sanningskällan. Ingenting implementeras som inte går att spåra hit. + +⸻ + +## Hårda regler — gäller varje agent, utan undantag + +1. **Enda sanningskälla:** `10-data/` + `lvx-objekt-schema.json`. Ingen agent uppfinner fakta, fält, klasser, standarder eller ID:n. +2. **Aldrig mock i kundnära väg.** Saknad förmåga levereras som ärligt svar med konfidens + automatisk bounty (mönstret i `30-produkt/lvx-api-demosvar.json`, case 3) — aldrig som låtsad träff, aldrig som stubbe i miljö en kund kan nå. +3. **PLATSHÅLLARE serialiseras aldrig** ut ur något publikt gränssnitt. Filtret sitter i serialiseringskoden och testas. +4. **Källa på varje påstående.** Publika svar bär `verifieringsniva`, `konfidens` och `kallor[]` — obligatoriska fält enligt API-kontraktet. +5. **Standarder refereras** med organ + beteckning + roll. Standardtext återges aldrig (juridikregeln). +6. **ID:n mintas endast** via registertjänsten (`lvx-id-register.json`-logiken i `ingest.py`). ID:n återanvänds aldrig, av ingen. +7. **Verifieringstrappan är enkelriktad:** obekräftad → källbelagd (kräver källor) → fältverifierad (endast fotoflödet) → tillverkarbekräftad (endast portalflödet). Ingen kod får sätta nivå utanför sitt flöde. +8. **Grind före merge/deploy:** `00-styrning/verifiera.py` grönt + checksummor mot `MANIFEST.json`. Rött stoppar allt. +9. **Ontologi-/schemaändring** endast via Ändringsrådet (skvadron A) med versionslyft och migrering. +10. **Osäkerhet uttrycks, döljs aldrig.** Konfidens är produktyta, inte intern metadata. + +⸻ + +## Skvadroner (58 agenter) + +**A · Programkontor & arkitektur (3)** — äger detta dokument, MANIFEST, gränssnittskontrakt och Ändringsrådet. Godkänner fasgrindar. *Input:* allt. *Output:* beslut, versionslyft. + +**B · Plattform & SRE (6)** — Fas 0: dev/stage/prod, IaC, hemligheter, observabilitet, larm, backup/DR. Driftsätter samtliga tjänster. *DoD:* verifiera.py körs grönt i CI på varje miljö; återställningstest genomfört. + +**C · Datakärna & graf (6)** — laddar `lvx-klassposter-master-v3.json` + modellfilerna till dokument-+graflager; grafen härleds alltid ur posterna (aldrig handredigerad); ID-registertjänst med atomär mintning. *DoD:* laddad databas reproducerar exakt grafstatistiken i `lvx-graf-kanter-v3.json` (176 kanter · 80 LVX · 82 standard). + +**D · Ingest-automation (7)** — produktifierar `20-automation/ingest.py` till tjänst: tre köer (schemalagd / kunddriven / fält), skördare med källvitlista och referatregel, extraktor-API bakom `lvx-extraktionsprompt.md`, granskningskö-UI för konflikter, körningsrapporter. *DoD:* våg 7-batchen i `intag/` replayad genom tjänsten ger identiskt resultat (4 nivålyft, 1 mint, 0 fel). + +**E · Object API (7)** — implementerar `30-produkt/lvx-pilot-api-spec.md` exakt: 6 endpoints, svarskontraktet, PLATSHÅLLARE-filter, feedback→bounty, nycklar, rate limits och **usage-mätning per identify för debitering** (SaaS-kärnan). *DoD:* kontraktstester gröna; de tre golden-casen reproduceras via API:t mot riktig data. + +**F · Vision & identify (6)** — utvärderings- och träningsflöde från bountydata; identify-modell bakom API:t. Tills modellen når beslutad tröskel svarar identify med klasskandidat + ärlig konfidens — regel 2 i praktiken. *DoD:* golden-case-regressionssvit; konfidenskalibrering rapporterad. + +**G · QUIXZOOM fältflöde (6)** — bounty-motorn (`lvx-zoomer-bounties-vag1.json` + auto-förslagen): poäng, först-på-individ ×2, dubblettkontroll hash+geo, hårdkodade säkerhets- och integritetsregler (auto-blurr, inga registreringsskyltar), foto→OCR→**fältverifierad**-lyft, LVX-I-individregister. *DoD:* ett komplett e2e-lyft källbelagd→fältverifierad i stage med riktigt foto. + +**H · Tillverkarportal (4)** — flödet som sätter **tillverkarbekräftad**: claims kopplade till modellposter, spårbara godkännanden, aldrig standardtext. *DoD:* en modellpost lyft e2e i stage. + +**I · Säkerhet, juridik & compliance (4)** — källpolicy (referat, aldrig kopiering), licensregister per källa, GDPR för positionsdata, åtkomstmodell, pentest. *DoD:* godkänd granskning av serialisering + datalager. + +**J · QA & verifiering (5)** — äger och utökar `verifiera.py`; kontraktstester mot API-spec; datagrind 0 valideringsfel; golden-case-replay i CI; last- och kaostester. *DoD:* grindarna blockerar på riktigt (bevisat med avsiktligt rött bygge). + +**K · Kund, pilot & SaaS-paketering (4)** — Pilot/Pro/Enterprise enligt API-specens paketering, mätarbaserad debitering på identify, onboarding, pilotworkshop med `40-strategi/landvex-pilotpitch.pptx`. *DoD:* första designpartner tecknad till pilotstart. + +⸻ + +## Faser & grindar + +**Fas 0 — Grund (B, C, J):** miljöer uppe, data laddad, verifiera.py grönt i CI. +→ *Grind 0:* checksummor + 0 valideringsfel + grafstatistik reproducerad. + +**Fas 1 — Produkt (D, E, F, I):** ingest-tjänst och Object API live mot riktig data. +→ *Grind 1:* golden cases via API:t; våg 7-replay identisk; pentest av API-ytan. + +**Fas 2 — Flyhjul (G, F):** fältflödet live; feedback→bounty→foto→fältverifierad sluter loopen. +→ *Grind 2:* första e2e-nivålyftet; kunddrivna kön mätbar. + +**Fas 3 — Skala (H, K, D):** tillverkarportal, fler skördebatchar genom pipelinen, pilotkund onboardad. +→ *Grind 3:* tillverkarbekräftad e2e; kostnad per verifierat faktum rapporteras sjunkande. + +Beroenden: C före D/E · E före F/G-exponering · G före H:s fältdata · J tvärs igenom alla faser. + +⸻ + +## Eskalering + +Datakonflikt → granskningskö (D) → Ändringsrådet (A). Schemabehov → A med versionslyft. Säkerhets-/juridikfynd → I stoppar berörd leverans omedelbart. Oklarhet om fakta → svaret är alltid: gå till källfilen; finns det inte där, finns det inte. diff --git a/projects/landvex/00-styrning/MANIFEST.json b/projects/landvex/00-styrning/MANIFEST.json new file mode 100644 index 000000000..18c518a57 --- /dev/null +++ b/projects/landvex/00-styrning/MANIFEST.json @@ -0,0 +1,210 @@ +{ + "paket": "landvex-produktionspaket", + "version": "1.0", + "genererad": "2026-07-04", + "statistik": { + "objektklasser": 37, + "kallbelagda_klasser": 35, + "produktmodeller": 27, + "grafkanter": 176, + "aktiva_bounties": 16, + "bounty_forslag": 17, + "valideringsfel": 0 + }, + "kanonisk_not": "10-data/ ersätter alla tidigare versioner (master v1/v2, delfiler). Arkiv kvar i arbetsytan utanför paketet.", + "antal_filer": 32, + "filer": [ + { + "sokvag": "00-styrning/AGENTARME.md", + "roll": "styrning", + "bytes": 6037, + "sha256": "dcacfff60fa3354729fe758b0baf2a0478faa011acd679686709de813dac85c1" + }, + { + "sokvag": "00-styrning/OVERSIKT.md", + "roll": "styrning", + "bytes": 2497, + "sha256": "6005162be3fd4921255bf39eed7d6ec8f8ecbffa058f3e32d367410375fe0880" + }, + { + "sokvag": "00-styrning/verifiera.py", + "roll": "styrning", + "bytes": 5745, + "sha256": "1723e94897d87f3a83a22995ae034aca88302b70611ad3b12dfb51888503ec64" + }, + { + "sokvag": "10-data/lvx-bounty-kandidater-vag7.json", + "roll": "data (enda sanningskälla)", + "bytes": 4798, + "sha256": "d6f3e8a192c769a85fcc7c5e0043128838ccbb6074c38857943f8b558cd9d682" + }, + { + "sokvag": "10-data/lvx-exempel-brunnsbetackning.json", + "roll": "data (enda sanningskälla)", + "bytes": 4700, + "sha256": "cc7f09f629512829330f91232523d4f5d33bef92983e4c2a24631064d703454b" + }, + { + "sokvag": "10-data/lvx-graf-kanter-v3.json", + "roll": "data (enda sanningskälla)", + "bytes": 40573, + "sha256": "2a920c49767e812574a2d4d83cd6d04c2231d3005ff09ebb54c364a5dfe47527" + }, + { + "sokvag": "10-data/lvx-id-register.json", + "roll": "data (enda sanningskälla)", + "bytes": 593, + "sha256": "939ce9b0305724e7cdf3fb00a44610f6e122489ccdec652a7188cc747f6ff54e" + }, + { + "sokvag": "10-data/lvx-klassposter-master-v3.json", + "roll": "data (enda sanningskälla)", + "bytes": 152207, + "sha256": "b568ee83d4f6b941dcf07b0f5631cd38431cd727436687bb0f3e52cf9d5078f8" + }, + { + "sokvag": "10-data/lvx-objekt-schema.json", + "roll": "data (enda sanningskälla)", + "bytes": 8023, + "sha256": "8abb092517947b5313c3a7fd23c835c9126b9054d688f50c1b5fa968a17f05f5" + }, + { + "sokvag": "10-data/lvx-produktmodeller-auto.json", + "roll": "data (enda sanningskälla)", + "bytes": 1592, + "sha256": "59e1fdc6af7ec282664fadd7c9943bdd1742e6d97a14a5fe24fdb7fa8b4ccfd7" + }, + { + "sokvag": "10-data/lvx-produktmodeller-vag2.json", + "roll": "data (enda sanningskälla)", + "bytes": 24976, + "sha256": "25d8618e172971982fab827ae45982c9e161f59050deb3d44e1c1813e2f7f2cb" + }, + { + "sokvag": "10-data/lvx-produktmodeller-vag3.json", + "roll": "data (enda sanningskälla)", + "bytes": 15428, + "sha256": "490242c8f798c09932451226d1fcadb255bcc808c258d81e583346417d911c50" + }, + { + "sokvag": "10-data/lvx-taxonomi-tier1.json", + "roll": "data (enda sanningskälla)", + "bytes": 6316, + "sha256": "7ef057a11d6d0cc5ba6da6fac40790f85f9a713716c7eb20b8c27993cd616464" + }, + { + "sokvag": "10-data/lvx-taxonomi-tier2.json", + "roll": "data (enda sanningskälla)", + "bytes": 4419, + "sha256": "4701f03f5dbed92d48dae5d40a9d5ad5ed427340b9f9bdc6b04bcb7776787515" + }, + { + "sokvag": "10-data/lvx-zoomer-bounties-vag1.json", + "roll": "data (enda sanningskälla)", + "bytes": 5651, + "sha256": "fc314b0641e92d3ee663a08a423826b04e53a9361d474f35520acafb7466081d" + }, + { + "sokvag": "20-automation/ingest.py", + "roll": "automation", + "bytes": 12071, + "sha256": "93c41f1eebe2564454e1743d7791eb8ed3f02916bede017f648d556bfb729ea5" + }, + { + "sokvag": "20-automation/intag/kallpaket-vag7.json", + "roll": "automation", + "bytes": 4242, + "sha256": "0df98d5bb0843f563ea39a8716e5ed9e450a2cee06689734afab39199df840db" + }, + { + "sokvag": "20-automation/intag/kandidatposter-vag7.json", + "roll": "automation", + "bytes": 7126, + "sha256": "c1816b9077232ecf1752ffd659d0385eae6f0edac3f5bf90b4b91e1ab2f701d3" + }, + { + "sokvag": "20-automation/lvx-extraktionsprompt.md", + "roll": "automation", + "bytes": 2171, + "sha256": "ae9bceb372fa64745bee75979ff7907643e50133bfae120f2f50321266255a30" + }, + { + "sokvag": "20-automation/lvx-ingest-spec.md", + "roll": "automation", + "bytes": 3879, + "sha256": "073a67d8921fe005f89dd4a4a5647a0c4abfc920022e65612ffa2e63d4b20ce4" + }, + { + "sokvag": "30-produkt/lvx-api-demosvar.json", + "roll": "produkt", + "bytes": 4936, + "sha256": "f9a7eb102084b1d0add635260d1fe623b7467c3b57fc50be1a762a56773348be" + }, + { + "sokvag": "30-produkt/lvx-pilot-api-spec.md", + "roll": "produkt", + "bytes": 3766, + "sha256": "596325020e8f87009639491036c7d65f23a2eb321b2524f1d5f1e294927794d7" + }, + { + "sokvag": "30-produkt/lvx-zoomer-bountyprogram.md", + "roll": "produkt", + "bytes": 3887, + "sha256": "05f70da6891b34901ede9b4f1249375b051f6927035cb46830005bdeb70a6c04" + }, + { + "sokvag": "40-strategi/iol-grundspecifikation.md", + "roll": "strategi & rapporter", + "bytes": 9721, + "sha256": "4c7fbed1d30407467d17b2ff97ea14692028b5632e9d6a522381c82c1836f01a" + }, + { + "sokvag": "40-strategi/landvex-genome-strategi.md", + "roll": "strategi & rapporter", + "bytes": 8777, + "sha256": "99b6a5030f70a6abf2c3f4a65d2869e4dfde598d135c83ecb54f01204726b28a" + }, + { + "sokvag": "40-strategi/landvex-pilotpitch.pptx", + "roll": "strategi & rapporter", + "bytes": 170939, + "sha256": "bbcbec18e3701a73e27e987b873abac886fc70ef96bc93fc315cbe9518dd113a" + }, + { + "sokvag": "40-strategi/rapporter/lvx-leveransrapport-tier1.md", + "roll": "strategi & rapporter", + "bytes": 3613, + "sha256": "a5b3d57dc00f3d56df91c27664f186a237eaa783344988db31504e7151983140" + }, + { + "sokvag": "40-strategi/rapporter/lvx-leveransrapport-vag2.md", + "roll": "strategi & rapporter", + "bytes": 3186, + "sha256": "f63016785654b7bc0d9face400fc8ac4401aba52c45aea03cc25f61b1fb4c1d4" + }, + { + "sokvag": "40-strategi/rapporter/lvx-leveransrapport-vag3.md", + "roll": "strategi & rapporter", + "bytes": 2804, + "sha256": "3276174b8f65b28a88a6bfd911d5773e1c4f5e1fa15ee002269c6e7b3f765058" + }, + { + "sokvag": "40-strategi/rapporter/lvx-leveransrapport-vag4.md", + "roll": "strategi & rapporter", + "bytes": 2698, + "sha256": "19a62e5d4c7e9d8422ec46baae85576dec2b4d769a1cc227669ecc93b6ccefc4" + }, + { + "sokvag": "40-strategi/rapporter/lvx-leveransrapport-vag5.md", + "roll": "strategi & rapporter", + "bytes": 2745, + "sha256": "8a019cc71ede7683026f60401c46f96bdde0117c025808225871c7c657a56652" + }, + { + "sokvag": "40-strategi/rapporter/lvx-leveransrapport-vag7.md", + "roll": "strategi & rapporter", + "bytes": 2887, + "sha256": "a8e9f287988a44eca60c13c05015903e4918d04e4db5b36e6971977533ff9644" + } + ] +} \ No newline at end of file diff --git a/projects/landvex/00-styrning/OVERSIKT.md b/projects/landvex/00-styrning/OVERSIKT.md new file mode 100644 index 000000000..26de1621c --- /dev/null +++ b/projects/landvex/00-styrning/OVERSIKT.md @@ -0,0 +1,37 @@ +# LANDVEX PRODUKTIONSPAKET v1 +## Översikt · 2026-07-04 + +Allt material och all automation från utvecklingstråden, paketerat för implementering av agentarmén. Arbetsordern ligger i `00-styrning/AGENTARME.md`. Integriteten ligger i `00-styrning/MANIFEST.json` (SHA-256 per fil) och grinden i `00-styrning/verifiera.py`. + +⸻ + +## Innehållskarta + +| Mapp | Innehåll | Kanonisk status | +|---|---|---| +| `00-styrning/` | AGENTARMÉ (arbetsorder, 58 agenter), MANIFEST (checksummor), verifiera.py (grind), denna översikt | Styr allt | +| `10-data/` | Biblioteket: master v3 (37 klasser, 35 källbelagda), graf v3 (176 kanter), schema, taxonomier, 27 modeller, ID-register, 16 bounties + 17 auto-förslag, exempelpost | **Enda sanningskälla.** Ersätter alla äldre versioner (v1/v2 och delfiler arkiveras utanför paketet) | +| `20-automation/` | `ingest.py` (pipelinens kärna), extraktionsprompten (LLM-kontraktet), `intag/` med våg 7-batchen (källpaket + kandidatposter) för replay-test | Körbar, demonstrerad: 4 nivålyft · 1 ID mintat · 0 fel | +| `30-produkt/` | Object API-spec v0 (6 endpoints, svarskontrakt, SaaS-paketering), tre golden demo-svar, Zoomer-bountyprogrammet | Implementeras exakt av skvadron E/G | +| `40-strategi/` | Genome-strategin, IOL-grundspecifikationen, pilotpitch-deck (pptx), samtliga leveransrapporter | Kontext & säljmaterial | + +⸻ + +## Snabbstart (varje agent, dag 1) + +1. Läs `AGENTARME.md` — särskilt de tio hårda reglerna. +2. Kör `python3 00-styrning/verifiera.py` från paketroten — ska sluta **GRÖNT**. +3. Hitta din skvadron, dina inputfiler och din Definition of Done. +4. Fakta finns bara i `10-data/`. Finns det inte där, finns det inte. + +⸻ + +## Nyckeltal vid paketering + +37 objektklasser (35 källbelagda, 2 ärligt obekräftade) · 27 produktmodeller (alla källbelagda) · 176 grafkanter (80 LVX-upplösta, 82 standardkanter) · 0 valideringsfel · ID-register: nästa P = 0000028 · Verifieringstrappa: obekräftad → källbelagd → fältverifierad → tillverkarbekräftad. + +⸻ + +## Ärlighetsnot om "deployat" + +Paketet är körbart och maskinverifierat i byggmiljön (verifiera.py grönt vid paketering). Driftsättning i er infrastruktur är per definition **Fas 0 i arbetsordern** — miljöer, dataladdning och CI-grindar sätts av skvadron B/C/J innan något exponeras. Att påstå något annat vore att bryta paketets egen regel 2. Inga mockar, inga låtsade tjänster: det som inte är driftsatt hos er kallas inte driftsatt. diff --git a/projects/landvex/00-styrning/verifiera.py b/projects/landvex/00-styrning/verifiera.py new file mode 100644 index 000000000..52256741a --- /dev/null +++ b/projects/landvex/00-styrning/verifiera.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +# Landvex produktionspaket — verifieringsgrind +# Körs från paketroten: python3 00-styrning/verifiera.py +# GRÖNT krävs för merge/deploy. Kontrollerar: +# 1) SHA-256 mot MANIFEST 2) schemaregler (0 fel) 3) grafen reproduceras exakt +# 4) ID-registret konsistent 5) referensintegritet (bounties, demosvar, relationer) +import json, re, hashlib, sys +from pathlib import Path + +ROT = Path(__file__).resolve().parent.parent +PREDIKAT = {"monteras_pa","star_pa","ansluts_med","matas_fran","ingar_i","del_av", + "ersatter","ersatts_av","kompatibel_med","forvaxlas_med","tillverkas_av","foljer_standard","variant_av"} +VERIF = {"obekraftad","kallbelagd","faltverifierad","tillverkarbekraftad"} +DOMANER = {"TRP","ELN","VAT","TEL","BYG","PRK","JVG","HMN","FLG"} +ID_RE = re.compile(r"^LVX-(TRP|ELN|VAT|TEL|BYG|PRK|JVG|HMN|FLG)-[0-9]{4}$|^LVX-P-[0-9]{7}$") +fel = [] + +def load(rel): + with open(ROT/rel, encoding="utf-8") as f: return json.load(f) + +# ---- 1. Checksummor ---- +man = load("00-styrning/MANIFEST.json") +for post in man["filer"]: + p = ROT/post["sokvag"] + if not p.exists(): + fel.append(f"MANIFEST: saknad fil {post['sokvag']}"); continue + h = hashlib.sha256(p.read_bytes()).hexdigest() + if h != post["sha256"]: + fel.append(f"MANIFEST: checksumma avviker {post['sokvag']}") + +# ---- 2. Schemaregler ---- +poster = {p["lvx_id"]: p for p in load("10-data/lvx-klassposter-master-v3.json")["poster"]} +modeller = {} +for fn in ["lvx-produktmodeller-vag2.json","lvx-produktmodeller-vag3.json","lvx-produktmodeller-auto.json"]: + for m in load(f"10-data/{fn}")["poster"]: modeller[m["lvx_id"]] = m + +def kolla(rec, typ): + rid = rec.get("lvx_id","?") + if not ID_RE.match(rid): fel.append(f"{rid}: ID-format") + if rec.get("doman") not in DOMANER: fel.append(f"{rid}: domän") + if not (rec.get("namn",{}).get("sv") and rec["namn"].get("en")): fel.append(f"{rid}: namn") + prov = rec.get("proveniens",{}) + if prov.get("verifieringsniva") not in VERIF: fel.append(f"{rid}: verifieringsnivå") + for pr in rec.get("problem",[]): + if not pr.get("kalla"): fel.append(f"{rid}: problem utan källa") + for rel in rec.get("relationer",[]): + if rel.get("predikat") not in PREDIKAT: fel.append(f"{rid}: predikat") + if typ=="modell" and not rec.get("parent"): fel.append(f"{rid}: parent") + if prov.get("verifieringsniva")=="kallbelagd" and not prov.get("kallor"): fel.append(f"{rid}: källbelagd utan källor") + +for p in poster.values(): kolla(p,"klass") +for m in modeller.values(): kolla(m,"modell") + +# ---- 3. Grafen reproduceras ---- +kanter, olosta = [], set() +def multi(m): return " / " in m and all(ID_RE.match(x.strip()) for x in m.split(" / ")) +def kant(s,pred,obj): + typ = "lvx" if ID_RE.match(obj or "") else ("standard" if pred=="foljer_standard" else "text") + if typ=="text": olosta.add(obj) + kanter.append(typ) +def emit(s,pred,m): + for x in (m.split(" / ") if multi(m) else [m]): kant(s,pred,x.strip()) +for p in poster.values(): + for rel in p.get("relationer",[]): emit(p["lvx_id"],rel["predikat"],rel["mal"]) + for st in p.get("standarder",[]): + if st.get("beteckning"): kant(p["lvx_id"],"foljer_standard",st["beteckning"]) +for m in modeller.values(): + kant(m["lvx_id"],"tillhor_klass",m["parent"]) + for e in m.get("historik",{}).get("ersatter",[]): kant(m["lvx_id"],"ersatter",e) + for e in m.get("historik",{}).get("ersatts_av",[]): kant(m["lvx_id"],"ersatts_av",e) + for rel in m.get("relationer",[]): emit(m["lvx_id"],rel["predikat"],rel["mal"]) +g = load("10-data/lvx-graf-kanter-v3.json")["statistik"] +fakta = {"kanter_totalt": len(kanter), "upplosta_lvx_kanter": kanter.count("lvx"), + "standardkanter": kanter.count("standard"), "textnoder_olosta": len(olosta)} +for k,v in fakta.items(): + if g.get(k) != v: fel.append(f"GRAF: {k} förväntat {g.get(k)}, fick {v}") + +# ---- 4. ID-registret ---- +reg = load("10-data/lvx-id-register.json") +max_p = max(int(m[6:]) for m in modeller) +if reg["P_nasta"] <= max_p: fel.append(f"REGISTER: P_nasta {reg['P_nasta']} ≤ högsta använda {max_p}") +for rid in poster: + dom, num = rid[4:7], rid[8:] + tier, nn = num[1], int(num[2:]) + if reg["klass_nasta"].get(dom,{}).get(tier,0) <= nn: + fel.append(f"REGISTER: {dom} tier {tier} nästa ≤ använda {nn}") + +# ---- 5. Referensintegritet ---- +alla = set(poster) | set(modeller) +for b in load("10-data/lvx-zoomer-bounties-vag1.json")["bounties"]: + if b["mal_lvx"] not in alla: fel.append(f"BOUNTY {b['bounty_id']}: okänt mål {b['mal_lvx']}") +for f_ in load("10-data/lvx-bounty-kandidater-vag7.json")["forslag"]: + if f_["mal_lvx"] not in alla: fel.append(f"BOUNTYFÖRSLAG: okänt mål {f_['mal_lvx']}") +demoraw = (ROT/"30-produkt/lvx-api-demosvar.json").read_text(encoding="utf-8") +for rid in set(re.findall(r"LVX-(?:TRP|ELN|VAT|TEL|BYG|PRK|JVG|HMN|FLG)-[0-9]{4}|LVX-P-[0-9]{7}", demoraw)): + if rid not in alla: fel.append(f"DEMOSVAR: okänt lvx_id {rid}") +for p in poster.values(): + for rel in p.get("relationer",[]): + m = rel["mal"] + for x in (m.split(" / ") if multi(m) else [m]): + if ID_RE.match(x.strip()) and x.strip() not in alla: + fel.append(f"{p['lvx_id']}: relation mot okänt ID {x.strip()}") + +# ---- Resultat ---- +print(f"Filer i manifest: {len(man['filer'])} | Klasser: {len(poster)} | Modeller: {len(modeller)}") +print(f"Graf: {fakta['kanter_totalt']} kanter ({fakta['upplosta_lvx_kanter']} lvx / {fakta['standardkanter']} standard / {fakta['textnoder_olosta']} textnoder)") +if fel: + print(f"\nRÖTT — {len(fel)} fel:") + for e in fel: print(" !!", e) + sys.exit(1) +print("\nGRÖNT — paketet verifierat. Grind passerad.") diff --git a/projects/landvex/10-data/lvx-bounty-kandidater-vag7.json b/projects/landvex/10-data/lvx-bounty-kandidater-vag7.json new file mode 100644 index 000000000..9869bde99 --- /dev/null +++ b/projects/landvex/10-data/lvx-bounty-kandidater-vag7.json @@ -0,0 +1,178 @@ +{ + "beskrivning": "Auto-genererade bounty-förslag (granskas innan publicering).", + "genererad": "2026-07-04", + "forslag": [ + { + "forslag_id": "BNTY-K-001", + "mal_lvx": "LVX-ELN-0201", + "titel": "OCR-fält: Mätarskåp", + "ocr_falt": [ + "nätbolag", + "anläggnings-ID" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-002", + "mal_lvx": "LVX-PRK-0101", + "titel": "OCR-fält: Pollare", + "ocr_falt": [ + "tillverkare", + "modell", + "ev. klassningskod" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-003", + "mal_lvx": "LVX-PRK-0102", + "titel": "OCR-fält: Papperskorg", + "ocr_falt": [ + "kommun/förvaltare", + "ibland tillverkare/modell", + "fraktion" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-004", + "mal_lvx": "LVX-PRK-0103", + "titel": "OCR-fält: Cykelställ", + "ocr_falt": [ + "förvaltare", + "ibland tillverkare" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-005", + "mal_lvx": "LVX-TEL-0201", + "titel": "OCR-fält: Kabelbrunn/kanalisation", + "ocr_falt": [ + "funktion", + "operatör", + "tier" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-006", + "mal_lvx": "LVX-TRP-0104", + "titel": "OCR-fält: Trafiksignal, signalhuvud", + "ocr_falt": [ + "tillverkare", + "modell", + "spänning" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-007", + "mal_lvx": "LVX-TRP-0107", + "titel": "OCR-fält: Vägräcke", + "ocr_falt": [ + "system/typ", + "ibland tillverkare" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-008", + "mal_lvx": "LVX-TRP-0202", + "titel": "OCR-fält: Signalstolpe & mastarm", + "ocr_falt": [ + "stolp-/korsnings-ID" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-009", + "mal_lvx": "LVX-TRP-0203", + "titel": "OCR-fält: Fundament (stolpe/mast/skåp)", + "ocr_falt": [ + "tillverkare", + "typ" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-010", + "mal_lvx": "LVX-TRP-0204", + "titel": "OCR-fält: Styrnod belysning (NEMA/Zhaga)", + "ocr_falt": [ + "tillverkare" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-011", + "mal_lvx": "LVX-TRP-0205", + "titel": "OCR-fält: Vägportal/skyltbrygga", + "ocr_falt": [ + "portal-ID" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-012", + "mal_lvx": "LVX-TRP-0208", + "titel": "OCR-fält: Broräcke", + "ocr_falt": [ + "system", + "klass" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-013", + "mal_lvx": "LVX-TRP-0209", + "titel": "OCR-fält: Bullerskydd", + "ocr_falt": [ + "system", + "klass DLR/DLα" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-014", + "mal_lvx": "LVX-TRP-0210", + "titel": "OCR-fält: Räckesterminal/ändavslut", + "ocr_falt": [ + "fabrikat", + "modell" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-015", + "mal_lvx": "LVX-VAT-0102", + "titel": "OCR-fält: Dagvattengaller", + "ocr_falt": [ + "gjuteri", + "klass", + "funktion" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-016", + "mal_lvx": "LVX-VAT-0201", + "titel": "OCR-fält: Betäckningsram", + "ocr_falt": [ + "tillverkare", + "EN 124-klass" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + }, + { + "forslag_id": "BNTY-K-017", + "mal_lvx": "LVX-VAT-0202", + "titel": "OCR-fält: Nedstigningsbrunn", + "ocr_falt": [ + "tillverkare", + "datum" + ], + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)" + } + ] +} \ No newline at end of file diff --git a/projects/landvex/10-data/lvx-exempel-brunnsbetackning.json b/projects/landvex/10-data/lvx-exempel-brunnsbetackning.json new file mode 100644 index 000000000..3f20736e2 --- /dev/null +++ b/projects/landvex/10-data/lvx-exempel-brunnsbetackning.json @@ -0,0 +1,145 @@ +{ + "lvx_id": "LVX-VAT-0101", + "posttyp": "objektklass", + "slug": "brunnsbetackning", + "namn": { + "sv": "Brunnsbetäckning", + "en": "Manhole cover" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos (Norden)", + "Saint-Gobain PAM (EU)", + "EJ (US)", + "Neenah Foundry (US)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Vanliga nominella öppningar ca 600–650 mm (rund); kvadratiska format förekommer", + "material": ["segjärn", "gråjärn", "komposit", "betong"], + "montering": "Vilar i betäckningsram monterad på brunnens överdel; fast eller flytande (självjusterande) ram", + "livslangd_ar": "50+ (gjutjärn i normal trafikmiljö)", + "belastningsklass": "EN 124-klasser A15–F900; körbana normalt D400" + }, + "historik": { + "revisioner": [], + "ersatter": [], + "ersatts_av": [] + }, + "geografi": { + "lander": ["US", "EU", "UK", "CA", "AU"], + "miljotyper": ["körbana", "gång- och cykelväg", "grönyta", "industriyta"] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124", + "titel": "Betäckningar för brunnar och rännstensbrunnar i trafikerade ytor", + "roll": "Belastningsklassning (A15–F900), material- och provningskrav", + "marknad": "EU/UK" + }, + { + "organ": "Kommunala specifikationer", + "beteckning": "H-20/HS-20-lastkrav", + "titel": "Vanligt förekommande lastkrav i amerikanska kommunala upphandlingar", + "roll": "Belastningskrav i körbana", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Rund eller kvadratisk gjutgodsyta i markplan", + "Mönstrad halkskyddsyta", + "Gjuten text: funktion (VA, DAGVATTEN, TELE, EL), kommun- eller gjuterimärke", + "Klassmärkning (t.ex. D400) ofta synlig i gjutgodset" + ], + "sarskiljande_detaljer": [ + "Mönstertyp och logotyp identifierar gjuteri/tillverkare", + "Ramtyp: fast eller flytande", + "Gångjärn, låsning och lyfthål varierar per modell" + ], + "forvaxlingsrisker": [ + "Dagvattengaller (LVX-VAT-0102)", + "Ventilbetäckning (mindre diameter)", + "Telebrunnslock (ofta rektangulära, egen märkning)" + ], + "kameravinklar": [ + "Rakt uppifrån med hela betäckningen i bild", + "Närbild på gjuten text och klassmärkning" + ], + "ocr": { + "typskylt_position": "Gjuten text på lockets ovansida", + "falt": ["funktion", "tillverkare/gjuteri", "belastningsklass", "årtal (ibland)"] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Klapper/rörelse", + "beskrivning": "Lock som rör sig i ramen orsakar buller och accelererat slitage", + "typisk_alder_ar": "varierar med trafiklast", + "kalla": "PLATSHÅLLARE — kräver fältobservation eller branschkälla innan publicering" + }, + { + "typ": "Sättning", + "beskrivning": "Betäckning under eller över omgivande beläggningsnivå efter sättningar eller omasfaltering", + "typisk_alder_ar": "varierar", + "kalla": "PLATSHÅLLARE — kräver fältobservation innan publicering" + }, + { + "typ": "Stöld", + "beskrivning": "Metallstöld av gjutjärnslock förekommer i vissa marknader", + "typisk_alder_ar": "ej åldersrelaterat", + "kalla": "PLATSHÅLLARE — belägg med myndighets- eller nyhetskälla per marknad" + } + ], + "dokumentation": [ + { + "typ": "standardreferens", + "titel": "EN 124 — beteckning och tillämpningsområde (publik metadata)", + "utgivare": "CEN", + "url": "", + "licensstatus": "referens_endast" + }, + { + "typ": "katalog", + "titel": "PLATSHÅLLARE — tillverkarens publika produktkatalog länkas här", + "utgivare": "", + "url": "", + "licensstatus": "tillverkarpublik" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "Betäckningsram (Tier 2 — LVX-ID tilldelas)", + "beskrivning": "Locket vilar i ram som utgör egen objektklass" + }, + { + "predikat": "del_av", + "mal": "Nedstigningsbrunn (Tier 2 — LVX-ID tilldelas)", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0102", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 124 — publik standardmetadata (beteckning, klassindelning)", + "url": "", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } +} diff --git a/projects/landvex/10-data/lvx-graf-kanter-v3.json b/projects/landvex/10-data/lvx-graf-kanter-v3.json new file mode 100644 index 000000000..232326992 --- /dev/null +++ b/projects/landvex/10-data/lvx-graf-kanter-v3.json @@ -0,0 +1,1408 @@ +{ + "beskrivning": "Landvex IOL — grafexport v3 (efter ingest våg 7).", + "genererad": "2026-07-04", + "noder": { + "objektklasser": 37, + "produktmodeller": 27 + }, + "statistik": { + "kanter_totalt": 176, + "upplosta_lvx_kanter": 80, + "standardkanter": 82, + "textnoder_olosta": 14 + }, + "olosta_platshallare": [ + { + "text": "Accessnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Avstängningsventil (framtida klass)", + "forekomster": 1 + }, + { + "text": "Brokantbalk (framtida klass)", + "forekomster": 1 + }, + { + "text": "CCS1-utrustade stationer (US, gradvis)", + "forekomster": 1 + }, + { + "text": "Dagvattennät (framtida klass)", + "forekomster": 1 + }, + { + "text": "Distributionsnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Eftergivliga stödsystem (EN 12767-scope)", + "forekomster": 1 + }, + { + "text": "Mellanspänningsnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Möbleringsprogram (kommunspecifikt)", + "forekomster": 1 + }, + { + "text": "Teknikbod/skåp vid bas (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vattenledningsnät/servisventil (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vägbana/beläggning (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vägbana/beläggning (framtida klass)", + "forekomster": 1 + }, + { + "text": "Äldre G4/27¾-tums strong-post W-balk", + "forekomster": 1 + } + ], + "kanter": [ + { + "subjekt": "LVX-ELN-0101", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätstation/transformator" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Matar bl.a. belysningsnät" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "foljer_standard", + "objekt": "EN 61439-5", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "ingar_i", + "objekt": "Distributionsnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "foljer_standard", + "objekt": "ANSI O5.1", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "foljer_standard", + "objekt": "Penta-utfasningsbeslut 2022", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "matas_fran", + "objekt": "Mellanspänningsnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "ansluts_med", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Matar kabelskåpen i LV-nätet" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "foljer_standard", + "objekt": "IEC 62271-202:2022", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "foljer_standard", + "objekt": "IEEE C57.12.28 m.fl.", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-kapslingskrav (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "ersatter", + "objekt": "CCS1-utrustade stationer (US, gradvis)", + "objekt_typ": "text", + "niva": "klass", + "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "SAE J3400 (NACS)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "SAE J1772", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "IEC 61851 / IEC 62196", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)" + }, + { + "subjekt": "LVX-ELN-0201", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Servis via kabelskåpsnätet" + }, + { + "subjekt": "LVX-ELN-0201", + "predikat": "variant_av", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Mätarutförande av skåpfamiljen (CDCM)" + }, + { + "subjekt": "LVX-ELN-0201", + "predikat": "foljer_standard", + "objekt": "SS-EN 61439-5 (familjekrav)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Samma normfamilj som kabelskåpen" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "PAS 68 (2005)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "IWA 14-1 (2013)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "ASTM F2656", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter" + }, + { + "subjekt": "LVX-PRK-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0103", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0103", + "predikat": "foljer_standard", + "objekt": "Sheffield-bygel", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer" + }, + { + "subjekt": "LVX-PRK-0201", + "predikat": "ingar_i", + "objekt": "Möbleringsprogram (kommunspecifikt)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "ansluts_med", + "objekt": "LVX-TEL-0201", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "ingar_i", + "objekt": "Accessnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "foljer_standard", + "objekt": "Operatörsprogram", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "ansluts_med", + "objekt": "Teknikbod/skåp vid bas (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "foljer_standard", + "objekt": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "foljer_standard", + "objekt": "Eurokoder", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-strukturkrav (kartläggs per land)" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "ansluts_med", + "objekt": "LVX-TEL-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Kanalisationen matar skåpen" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "foljer_standard", + "objekt": "ANSI/SCTE 77", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "foljer_standard", + "objekt": "ANSI/SCTE 77", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturell integritet och tier-lastklassning för handholes (först 2002, reviderad därefter)" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "foljer_standard", + "objekt": "NEC 314.30", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kräver dimensionering för förekommande laster; lockmärkning av funktion; lock ska kräva verktyg eller väga >45 kg" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Belysningsnätets kabelskåp" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "foljer_standard", + "objekt": "EN 40 (del 1–7)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "foljer_standard", + "objekt": "LTS-serien", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Topp- eller armmontage på belysningsstolpe" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0204", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fotocell eller smart nod i standardiserad sockel" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "ANSI C136-serien", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "EN 60598 / EN 13201", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "UL 1598", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktsäkerhet" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0201", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "portalvariant → LVX-TRP-0205" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "MUTCD / TSRGD / nationella kataloger", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "TSRGD 2016 (SI 2016/362)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "Wienkonventionen 1968 + nationella kataloger", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "AS 1742", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Australisk motsvarighet" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "EN 12899-1 / ASTM D4956", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0105", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Styrs av trafiksignalskåpets styrapparat" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0202", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "foljer_standard", + "objekt": "EN 12368:2024", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "foljer_standard", + "objekt": "VTCSH", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-spec för signalhuvuden (kartläggs vidare)" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0104", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Styr signalhuvudena" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "foljer_standard", + "objekt": "NEMA TS 2-2021", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "foljer_standard", + "objekt": "ATC-standarder; Caltrans 33x-typ", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "del_av", + "objekt": "Vägbana/beläggning (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "EN 1436 / MUTCD", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "EN 1436:2018", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "MUTCD 11:e utgåvan", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "EN 1317 / MASH", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "EN 1317", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "MASH (2016)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)" + }, + { + "subjekt": "LVX-TRP-0108", + "predikat": "ansluts_med", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Belysning/realtidsskylt matas från nätet" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "foljer_standard", + "objekt": "EN 12767", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "foljer_standard", + "objekt": "EN 12767:2019 (+A1:2024)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krocktestklassning HE/LE/NE för bl.a. skylt- och belysningsstolpar; utesluter räcken" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "foljer_standard", + "objekt": "Breakaway-krav (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-motsvarighet — slipbase och brytkopplingar" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0104", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Bär signalhuvudena" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "foljer_standard", + "objekt": "LTS-serien (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav för mastarmar" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "foljer_standard", + "objekt": "LTS-6 (2013, interim t.o.m. 2025)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav (ASD) för signalstolpar och mastarmar" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "foljer_standard", + "objekt": "LRFD-LTS-1 (2015)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Parallell LRFD-dimensionering" + }, + { + "subjekt": "LVX-TRP-0203", + "predikat": "ingar_i", + "objekt": "Eftergivliga stödsystem (EN 12767-scope)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0203", + "predikat": "foljer_standard", + "objekt": "EN 12767:2019 (+A1:2024)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Scope omfattar fundament i eftergivliga system" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "foljer_standard", + "objekt": "ANSI C136.10/.41; Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "foljer_standard", + "objekt": "ANSI C136.10 / C136.41", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Mekaniskt och elektriskt gränssnitt (US/UK-tradition)" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "foljer_standard", + "objekt": "Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-vanligt nodgränssnitt" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Bär vägmärken/vägvisning" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "foljer_standard", + "objekt": "LTS / Eurokoder (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Vind-/utmattningsdimensionering" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "foljer_standard", + "objekt": "LTS-6 (2013, interim t.o.m. 2025)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Scope kategoriserar skyltstöd inkl. portaler (overhead bridge/cantilever)" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "foljer_standard", + "objekt": "LRFD-LTS-1 (2015)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "LRFD-spår; Iowa DOT tillämpar båda för skylttruss" + }, + { + "subjekt": "LVX-TRP-0206", + "predikat": "del_av", + "objekt": "Vägbana/beläggning (framtida klass)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0206", + "predikat": "foljer_standard", + "objekt": "EN 1340", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krav och provning för betongkantsten, rännor och passbitar; ersatte BS 7263-3" + }, + { + "subjekt": "LVX-TRP-0206", + "predikat": "foljer_standard", + "objekt": "EN 1343", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Naturstenskantsten — prestandaklasser i väghållarkrav (t.ex. UK MCHW)" + }, + { + "subjekt": "LVX-TRP-0207", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Eller direkt nedslagen" + }, + { + "subjekt": "LVX-TRP-0207", + "predikat": "foljer_standard", + "objekt": "EN 12899-3", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kolorimetri, retroreflex, statisk/dynamisk last och påkörning; färg/form styrs nationellt" + }, + { + "subjekt": "LVX-TRP-0207", + "predikat": "foljer_standard", + "objekt": "Kategori 1-enheter", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-klassning för flexposts" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "monteras_pa", + "objekt": "Brokantbalk (framtida klass)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "forvaxlas_med", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "foljer_standard", + "objekt": "EN 1317", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kapacitetsklasser (upp till H4b) tillämpas på broräcken; arbetsbredd kritisk vid kant" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "foljer_standard", + "objekt": "MASH", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "TL-klassning av broräcken" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fundamentrad" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "foljer_standard", + "objekt": "EN 14388", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Harmoniserad produktstandard (CE/UKCA)" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "foljer_standard", + "objekt": "EN 1793 (del 1/2/5/6)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Ljudisolering DLR, absorption DLα, in-situ-metoder" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "foljer_standard", + "objekt": "EN 1794 (del 1/2)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Mekanik/stabilitet respektive säkerhet/miljö" + }, + { + "subjekt": "LVX-TRP-0210", + "predikat": "del_av", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Avslutar räckeslinjen" + }, + { + "subjekt": "LVX-TRP-0210", + "predikat": "foljer_standard", + "objekt": "MASH", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0210", + "predikat": "foljer_standard", + "objekt": "MASH (TL-2/TL-3)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krocktestklassning; FHWA eligibility letters (t.ex. CC-115D för SoftStop)" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "monteras_pa", + "objekt": "LVX-VAT-0201", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "del_av", + "objekt": "LVX-VAT-0202", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0102", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "foljer_standard", + "objekt": "EN 124:2015 (del 1–6)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "foljer_standard", + "objekt": "H-20/HS-20-lastkrav", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "del_av", + "objekt": "LVX-VAT-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "foljer_standard", + "objekt": "EN 124:2015", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "ansluts_med", + "objekt": "Vattenledningsnät/servisventil (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "AWWA C502/C503, EN 14384/14339", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "ANSI/AWWA C502", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "ANSI/AWWA C503", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Våtposter för milt klimat utan frysrisk" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "EN 14384", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Minimikrav, provning och märkning för pelarbrandposter" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "EN 14339", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Underjordiska brandposter" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "NFPA 1963", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Slanganslutningarnas gängor" + }, + { + "subjekt": "LVX-VAT-0201", + "predikat": "ansluts_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Ram + lock bildar betäckningen" + }, + { + "subjekt": "LVX-VAT-0201", + "predikat": "monteras_pa", + "objekt": "LVX-VAT-0202", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0201", + "predikat": "foljer_standard", + "objekt": "EN 124", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Klassning A15–F900 gäller ram + lock som enhet" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "ansluts_med", + "objekt": "LVX-VAT-0201", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Kröns av ram + betäckning" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "ASTM C478 / AASHTO M199", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "ASTM C478/C478M", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Tillverkningskrav för brunnsdelar (sewer/drainage/water works)" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "M199", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Parallellkrav i väghållarled" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "EN 1917:2002", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-krav för prefab brunnsenheter (DN/LN ≤1250; inspektionsbrunn ≤2 m), fogar och täthet" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "BS 5911-3", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "UK-komplement till EN 1917" + }, + { + "subjekt": "LVX-VAT-0203", + "predikat": "ansluts_med", + "objekt": "LVX-VAT-0102", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Gallret är intaget" + }, + { + "subjekt": "LVX-VAT-0203", + "predikat": "del_av", + "objekt": "Dagvattennät (framtida klass)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0203", + "predikat": "foljer_standard", + "objekt": "ASTM C913-21", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Scope-notering omfattar catch basins och drop inlets (US)" + }, + { + "subjekt": "LVX-VAT-0203", + "predikat": "foljer_standard", + "objekt": "BS 5911-6", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "UK-krav för vägbrunnar" + }, + { + "subjekt": "LVX-VAT-0204", + "predikat": "ansluts_med", + "objekt": "Avstängningsventil (framtida klass)", + "objekt_typ": "text", + "niva": "klass", + "beskrivning": "Ger åtkomst till spindeln" + }, + { + "subjekt": "LVX-VAT-0204", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-P-0000001", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000001", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000002", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "ersatter", + "objekt": "LVX-P-0000001", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000003", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000003", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000003", + "predikat": "ersatter", + "objekt": "LVX-P-0000002", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000004", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000005", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000005", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000006", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000006", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000006", + "predikat": "ersatter", + "objekt": "LVX-P-0000005", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000007", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000008", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000009", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000010", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000011", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000012", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000013", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000014", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000015", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000016", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000017", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000018", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000019", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000020", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000020", + "predikat": "ersatter", + "objekt": "Äldre G4/27¾-tums strong-post W-balk", + "objekt_typ": "text", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000021", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0210", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000022", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0105", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000023", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000024", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000025", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000025", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000026", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000026", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000026", + "predikat": "ersatter", + "objekt": "LVX-P-0000025", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000027", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0201", + "objekt_typ": "lvx", + "niva": "modell" + } + ] +} \ No newline at end of file diff --git a/projects/landvex/10-data/lvx-id-register.json b/projects/landvex/10-data/lvx-id-register.json new file mode 100644 index 000000000..310cb490a --- /dev/null +++ b/projects/landvex/10-data/lvx-id-register.json @@ -0,0 +1,39 @@ +{ + "beskrivning": "Landvex ID-register. Nästa lediga nummer per serie. Pipelinen mintar härifrån och skriver tillbaka — ID:n återanvänds aldrig.", + "uppdaterad": "2026-07-04", + "P_nasta": 28, + "klass_nasta": { + "TRP": { + "1": 9, + "2": 11 + }, + "VAT": { + "1": 4, + "2": 5 + }, + "ELN": { + "1": 5, + "2": 2 + }, + "TEL": { + "1": 3, + "2": 2 + }, + "PRK": { + "1": 4, + "2": 2 + }, + "BYG": { + "1": 1 + }, + "JVG": { + "1": 1 + }, + "HMN": { + "1": 1 + }, + "FLG": { + "1": 1 + } + } +} \ No newline at end of file diff --git a/projects/landvex/10-data/lvx-klassposter-master-v3.json b/projects/landvex/10-data/lvx-klassposter-master-v3.json new file mode 100644 index 000000000..b9682cba3 --- /dev/null +++ b/projects/landvex/10-data/lvx-klassposter-master-v3.json @@ -0,0 +1,4749 @@ +{ + "beskrivning": "Landvex IOL — master v3 (ingest-pipelinen, våg 7). Ersätter v2.", + "genererad": "2026-07-04", + "antal_poster": 37, + "verifieringsfordelning": { + "kallbelagd": 35, + "obekraftad": 2 + }, + "poster": [ + { + "lvx_id": "LVX-ELN-0101", + "posttyp": "objektklass", + "slug": "kabelskap-lagspanning", + "namn": { + "sv": "Kabelskåp, lågspänning", + "en": "LV distribution cabinet" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "ABB Kabeldon (Norden, fabrik i Alingsås)", + "nätbolagsspecifika program per land" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "varmförzinkad stålplåt (nordisk standard)", + "glasfiberkomposit", + "polykarbonat" + ], + "montering": "Integrerat markfundament eller sockel; justerbara ben; förberedd för VP-rör och värmekabel (arktiskt klimat)", + "ip_klass": "t.ex. IP34D enligt SS-EN 60529 (Kabeldon CDC)", + "ovrigt": { + "las": "Trekantslås standard i Norden (t.ex. CDC-LT); cylinderlås som tillval", + "innehall": "Säkringslister/skensystem, kabelavgreningar; lucka med hållare för kabelskåpskort" + } + }, + "geografi": { + "lander": [ + "EU", + "UK", + "US", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "bostadsområde", + "landsbygd" + ] + }, + "standarder": [ + { + "organ": "IEC/CENELEC", + "beteckning": "EN 61439-5", + "titel": "Lågspänningsfördelningar — kopplingsutrustning i publika distributionsnät", + "roll": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Fristående grå/grön låda på sockel eller integrerat fundament", + "Nätbolagsdekal och skåpnummer", + "Varningsskylt med blixtsymbol", + "Trekants- eller specialnyckellås", + "Ofta markeringsstång med reflex intill (snöröjning)" + ], + "sarskiljande_detaljer": [ + "Skåpnumret i nätbolagets format — nyckel-OCR", + "Präglad lucka anpassad för märkning (Kabeldon)", + "Varmförzinkad yta vs lackerad komposit skiljer generation/marknad", + "CDCM-variant med ovandel används som mätarskåp" + ], + "forvaxlingsrisker": [ + "Telekomskåp (LVX-TEL-0101) — saknar blixtsymbol, har ofta ventilation", + "Trafiksignalskåp (LVX-TRP-0105)", + "Belysningscentral (undervariant)" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på dekal, skåpnummer och varningsskylt" + ], + "ocr": { + "typskylt_position": "Dekal/prägling på lucka", + "falt": [ + "nätbolag", + "skåpnummer", + "varningstext" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Påkörning/snöröjningsskador", + "beskrivning": "Markeringsstång med varselmärkning och reflexband säljs som standardtillbehör — indikerar känt riskmönster", + "kalla": "ABB Kabeldon tillbehörskatalog (KSPS 7 markeringsstång)" + }, + { + "typ": "Fukt", + "beskrivning": "Fuktspärr finns som tillbehör till hela CDC-serien", + "kalla": "ABB Kabeldon CDC-katalog" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0103", + "beskrivning": "Nätstation/transformator" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0101", + "beskrivning": "Matar bl.a. belysningsnät" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ABB — Kabeldon kabelskåp och kapslingar (produktfamilj, hårda miljöer)", + "url": "https://new.abb.com/low-voltage/sv/produkter/kabelskap_cewe_kabeldon/kabeldon-kabelskap", + "hamtad": "2026-07-04" + }, + { + "titel": "Onninen — Kabelskåp CDC 420 (varmförzinkat, integrerat markfundament, 400 A, SS-EN 61439-5, arktiskt klimat, trekantslås)", + "url": "https://www.onninen.se/abb-kabeldon-kabelskap-cdc-420/p/AQO708", + "hamtad": "2026-07-04" + }, + { + "titel": "ABB Kabeldon produktkatalog (Alingsås; IP34D SS-EN 60529; CDC/CDCM-användning)", + "url": "https://library.e.abb.com/public/5c949d884df64a6882b049397a2b94e0/2013_Katalog_Kabeldon_lagspanningsfordelningar_svensk_REV%20A_6.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0102", + "posttyp": "objektklass", + "slug": "elstolpe", + "namn": { + "sv": "Elstolpe", + "en": "Utility pole" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Stella-Jones (trä, NA)", + "Koppers (impregnering, NA)", + "Valmont (stål)", + "RS Technologies (komposit)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "impregnerat trä (southern yellow pine — vattenburna medel; douglasgran — oljebaserade medel)", + "stål", + "komposit", + "betong (vissa marknader)" + ], + "montering": "Direkt nedgrävd (trä) eller på fundament (stål/komposit)", + "livslangd_ar": "40–70 för impregnerat trä beroende på medel och klimat", + "ovrigt": { + "impregnering": "Pentaklorfenol (penta) utfasas i US efter EPA-beslut 2022: nyproduktion/försäljning upphörde feb 2024, behandling med befintliga lager tillåten till feb 2027; alternativ: kopparnaftenat, DCOIT, CCA, kreosot. CCA-behandlade stolpar dominerar sydöstra US. Kanada drog in registreringen okt 2022." + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "AU", + "delar av EU/UK" + ], + "miljotyper": [ + "landsbygd", + "förort", + "stadsgata (äldre nät)" + ] + }, + "standarder": [ + { + "organ": "ANSI", + "beteckning": "ANSI O5.1", + "titel": "Wood poles — specifications and dimensions", + "roll": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)", + "marknad": "US" + }, + { + "organ": "EPA / Health Canada", + "beteckning": "Penta-utfasningsbeslut 2022", + "titel": "Registration review decision pentachlorophenol", + "roll": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer", + "marknad": "US/CA" + } + ], + "ai": { + "kannetecken": [ + "Trästolpe med travers/regel, isolatorer och ledningar", + "Kraft överst, tele/fiber-linjer lägre — vertikal zonindelning", + "Stolptransformator (burk) på många NA-stolpar", + "Stolpsteg eller klätterspår" + ], + "sarskiljande_detaljer": [ + "'Birthmark'-märkning inbränd/spikad i stolpen med år, längd, klass, träslag och impregneringsmedel — bästa OCR-källan och daterar stolpen", + "Impregneringens färgton (grönaktig CCA vs brunoljig penta/kreosot) ger generationsledtråd", + "Nätbolagets stolpnummerbricka" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe (LVX-TRP-0101)", + "Telestolpe utan kraft", + "Flagg-/antennmast" + ], + "kameravinklar": [ + "Helbild", + "Närbild på birthmark i ögonhöjd", + "Toppzon med utrustning" + ], + "ocr": { + "typskylt_position": "Inbränd birthmark ca 3 m över mark + nummerbricka", + "falt": [ + "år", + "längd/klass", + "träslag", + "impregneringsmedel", + "stolpnummer" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Impregneringsmedel under regulatorisk avveckling", + "beskrivning": "Penta-behandlade stolpar (uppskattningsvis ca 60 miljoner i drift i US) blir en utbytes- och hanteringsfråga i takt med utfasningen", + "kalla": "EPA — Cancellation of pentachlorophenol (2022); University of Wisconsin PAT-sammanfattning" + }, + { + "typ": "Röta i markzon", + "beskrivning": "Nedbrytning vid marklinjen är dominerande livslängdsbegränsning för trä", + "kalla": "PLATSHÅLLARE — belägg med inspektionsdata" + }, + { + "typ": "Hackspettskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ingar_i", + "mal": "Distributionsnät (Tier 2-topologi)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EPA — Pentachlorophenol (utfasningstidslinje: feb 2024 / feb 2027)", + "url": "https://www.epa.gov/ingredients-used-pesticide-products/pentachlorophenol", + "hamtad": "2026-07-04" + }, + { + "titel": "UW PAT — EPA to Phase Out Pentachlorophenol (~60 M penta-stolpar; alternativmedel)", + "url": "https://fyi.extension.wisc.edu/pat/2022/05/04/epa-to-phase-out-use-of-pentachlorophenol/", + "hamtad": "2026-07-04" + }, + { + "titel": "C&EN — träslag/medel-koppling (yellow pine/CCA sydöstra US; douglasgran/oljebaserat)", + "url": "https://cen.acs.org/business/specialty-chemicals/Pentachlorophenol-way-utility-pole-preservative/98/i14", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0103", + "posttyp": "objektklass", + "slug": "natstation-transformator", + "namn": { + "sv": "Nätstation/transformatorstation", + "en": "Distribution substation / padmount transformer" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Eaton", + "Hitachi Energy", + "Schneider Electric", + "ERMCO (US)", + "Howard Industries (US)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stålkapsling", + "betonghus (kioskstationer)" + ], + "montering": "Padmount: låg kapsling på betongfundament (NA-typiskt). Prefabricerad kiosk-/kompaktstation: gångbar (walk-in) eller manövrerad utifrån (non-walk-in); kan vara helt/delvis nedgrävd", + "ovrigt": { + "funktion": "Transformerar mellanspänning till lågspänning; IEC 62271-202 klassar bl.a. intern ljusbågstålighet (IAC, tillgänglighetstyp A/B/AB)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "bostadsområde", + "stadsgata", + "industriområde" + ] + }, + "standarder": [ + { + "organ": "IEC", + "beteckning": "IEC 62271-202:2022", + "titel": "AC prefabricated substations >1 kV–52 kV", + "roll": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC", + "marknad": "EU/internationellt" + }, + { + "organ": "IEEE", + "beteckning": "IEEE C57.12.28 m.fl.", + "titel": "Padmount enclosure integrity", + "roll": "US-kapslingskrav (kartläggs vidare i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Padmount: låg grön/grå plåtlåda på betongplatta, ofta i villaområden", + "Kioskstation: litet hus/skåp med dörrgaller och ventilation", + "Varningsskyltar högspänning på alla varianter", + "Svagt transformatorsurr hörs nära" + ], + "sarskiljande_detaljer": [ + "Typskylt med kVA-tal, spänningar och tillverkare — nyckel-OCR", + "Padlock-hasp och pentabult (NA)", + "Kabelrör/kabelbrunnar intill", + "Fundamenttyp" + ], + "forvaxlingsrisker": [ + "Kabelskåp LV (LVX-ELN-0101) — mindre, ingen HV-skyltning", + "Telekomskåp (LVX-TEL-0101)", + "Pumpstation VA (liknande hus, annan skyltning)" + ], + "kameravinklar": [ + "Helbild med omgivning", + "Närbild på varningsskylt och typskylt (utan att öppna något)" + ], + "ocr": { + "typskylt_position": "Typskylt på kapslingens front/sida", + "falt": [ + "tillverkare", + "kVA", + "spänningar", + "serienummer", + "år" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Korrosion i kapsling", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — nätbolagsdata" + }, + { + "typ": "Oljeläckage (oljeisolerade transformatorer)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "Mellanspänningsnät (Tier 2-topologi)", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-ELN-0101", + "beskrivning": "Matar kabelskåpen i LV-nätet" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "IEC 62271-202:2022 (scope: >1–52 kV, walk-in/non-walk-in, offentlig placering, IAC)", + "url": "https://webstore.iec.ch/en/publication/66264", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0104", + "posttyp": "objektklass", + "slug": "laddstation", + "namn": { + "sv": "Laddstation", + "en": "EV charging station" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Tesla", + "ChargePoint", + "ABB E-mobility", + "Alpitronic", + "Kempower" + ], + "status": "aktiv" + }, + "teknik": { + "montering": "AC-box på stolpe/vägg (destinationsladdning) eller fristående DC-skåp med tjock, ofta vätskekyld kabel (snabbladdning)", + "ovrigt": { + "kontakter": "NACS/SAE J3400 (kompakt, samma stift AC+DC), CCS1 (US) / CCS2 (EU), CHAdeMO (utfasande), Typ 2 (EU AC), J1772 (US AC). Federalt finansierade US-snabbladdare kan ha J3400 om CCS1 också finns." + } + }, + "historik": { + "revisioner": [ + "Tesla-kontakten (2012) → öppnad som NACS (2022) → SAE J3400: TIR dec 2023, Recommended Practice sep 2024; flertalet biltillverkare i Nordamerika går över från CCS1 från modellår 2025" + ] + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "parkering", + "servicestation", + "gatuladdning", + "depå" + ] + }, + "standarder": [ + { + "organ": "SAE", + "beteckning": "SAE J3400 (NACS)", + "titel": "North American Charging System", + "roll": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default", + "marknad": "US/CA" + }, + { + "organ": "SAE", + "beteckning": "SAE J1772", + "titel": "AC-kontakt nivå 1/2", + "roll": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC", + "marknad": "US/CA" + }, + { + "organ": "IEC", + "beteckning": "IEC 61851 / IEC 62196", + "titel": "Konduktiv laddning / kontaktdon", + "roll": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)", + "marknad": "EU/internationellt" + } + ], + "ai": { + "kannetecken": [ + "Kontakttypen är den snabbaste klassificeraren: NACS är kompakt; CCS är större kombikontakt; CHAdeMO rund", + "DC-snabbladdare: högt skåp, tjock/kyld kabel, ofta skärm", + "AC-destinationsladdare: liten box, tunn kabel eller uttag", + "Operatörsvarumärke och belysning" + ], + "sarskiljande_detaljer": [ + "Stations-ID och QR-kod — nyckel-OCR", + "Effektmärkning i kW", + "Antal uttag och kabelhantering (topphängd/sidohängd)" + ], + "forvaxlingsrisker": [ + "Parkeringsautomat", + "Belysningsstolpe med uttag", + "Batterilager-/nätskåp" + ], + "kameravinklar": [ + "Helbild framifrån", + "Närbild på kontakt", + "Närbild på skärm/ID/QR" + ], + "ocr": { + "typskylt_position": "Front: operatör, stations-ID, QR, effekt", + "falt": [ + "operatör", + "stations-ID", + "effekt kW", + "kontakttyper" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Kontaktgenerationsskifte", + "beskrivning": "CCS1-parken i Nordamerika fasas gradvis mot J3400; adaptrar överbryggar under övergången — viktigt för ersättningskedjan i grafen", + "kalla": "SAE/Joint Office — J3400-standardisering och branschadoption" + }, + { + "typ": "Kabelstöld/vandalism", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — operatörsdata" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0103 / LVX-ELN-0101", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "predikat": "ersatter", + "mal": "CCS1-utrustade stationer (US, gradvis)", + "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Joint Office — SAE J3400 Charging Connector (TIR dec 2023; CCS1-krav vid federal finansiering)", + "url": "https://driveelectric.gov/charging-connector", + "hamtad": "2026-07-04" + }, + { + "titel": "Wikipedia — North American Charging Standard (historik, RP sep 2024, branschadoption)", + "url": "https://en.wikipedia.org/wiki/North_American_Charging_Standard", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0201", + "posttyp": "objektklass", + "slug": "matarskap", + "namn": { + "sv": "Mätarskåp", + "en": "Meter cabinet" + }, + "doman": "ELN", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "ABB Kabeldon (CDCM)", + "fasadskåpsleverantörer nationellt" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "plåt", + "isolermaterial (Kabeldon-typ)", + "polykarbonat" + ], + "montering": "Markstående vid tomtgräns (nordisk CDCM-typ) eller fasadmonterat; mätarfönster och plomberade utrymmen", + "ovrigt": { + "referens": "Kabeldon CDCM är kabelskåpsserien i mätarutförande — samma skåpfamilj som LVX-ELN-0101 men med mätardel" + } + }, + "geografi": { + "lander": [ + "SE/NO/FI (markstående vanliga)", + "EU", + "UK", + "US (meter socket på fasad)" + ], + "miljotyper": [ + "tomtgräns", + "fasad" + ] + }, + "standarder": [ + { + "organ": "IEC/CENELEC", + "beteckning": "SS-EN 61439-5 (familjekrav)", + "titel": "Distributionsskåp", + "roll": "Samma normfamilj som kabelskåpen", + "marknad": "EU" + } + ], + "ai": { + "kannetecken": [ + "Mätarfönster i dörr", + "Mindre än kabelskåp men samma formspråk", + "Plomber vid mätarplats" + ], + "sarskiljande_detaljer": [ + "CDCM-beteckning på nordiska skåp", + "Abonnent-/anläggnings-ID-etikett" + ], + "forvaxlingsrisker": [ + "Kabelskåp (LVX-ELN-0101)", + "Fiber-/teleskåp (LVX-TEL-0101)" + ], + "kameravinklar": [ + "Front", + "Närbild etikett/fönster" + ], + "ocr": { + "typskylt_position": "Dörr-etikett", + "falt": [ + "nätbolag", + "anläggnings-ID" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Påkörning/vandalism vid gata", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "Servis via kabelskåpsnätet" + }, + { + "predikat": "variant_av", + "mal": "LVX-ELN-0101", + "beskrivning": "Mätarutförande av skåpfamiljen (CDCM)" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ABB Kabeldon-katalog — CDC/CDCM-serierna (återanvänd, våg 2)", + "url": "https://library.e.abb.com/public/0b1d1ae1e7d0af90c1257b1a0055f36d/Kabeldon%20kabelskapssystem%20produktkatalog%202013.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.7, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0101", + "posttyp": "objektklass", + "slug": "pollare", + "namn": { + "sv": "Pollare", + "en": "Bollard" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "ATG Access (säkerhetspollare, UK)", + "Heald (säkerhetspollare, UK)", + "Avon Barrier (HVM-system)", + "stadsmiljöprogram varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål", + "gjutjärn (klassisk kronpollare)", + "rostfritt", + "betong", + "plast/flexibel" + ], + "montering": "Fast ingjuten, löstagbar i hylsa, fällbar/låsbar eller automatisk hydraulisk (typiskt ca 1000 mm över mark i höjt läge)", + "ovrigt": { + "sakerhet": "Fordonshindrande säkerhetspollare (HVM, Hostile Vehicle Mitigation) krocktestas och klassas; klassningskoden anger fordonsvikt, hastighet, vinkel och penetration" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gågata", + "torg", + "entré", + "cykelbana", + "skyddsobjekt" + ] + }, + "standarder": [ + { + "organ": "BSI", + "beteckning": "PAS 68 (2005)", + "titel": "Impact test specifications for vehicle security barriers", + "roll": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika", + "marknad": "UK/EU/MEA" + }, + { + "organ": "ISO (IWA)", + "beteckning": "IWA 14-1 (2013)", + "titel": "Vehicle security barriers — performance requirement", + "roll": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration", + "marknad": "internationellt" + }, + { + "organ": "ASTM", + "beteckning": "ASTM F2656", + "titel": "Crash testing of vehicle security barriers", + "roll": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Fristående kort stolpe utan skylt-/ljusfunktion", + "Reflexband vanligt i trafiknära lägen", + "Automatiska pollare: markring/lucka och varningsmarkering", + "Kättingöglor på parkpollare" + ], + "sarskiljande_detaljer": [ + "Kronformad gjutjärnstopp = klassisk stadsmodell", + "Grov diameter + djupt fundament indikerar HVM-säkerhetspollare (klassning kan vara märkt)", + "Hylslock i mark = löstagbar variant" + ], + "forvaxlingsrisker": [ + "Belysningspollare (låg armatur)", + "Hydrant i pollarform (LVX-VAT-0103)", + "Laddstolpe (LVX-ELN-0104)", + "Förtöjningspollare i hamn (LVX-HMN, Tier 3)" + ], + "kameravinklar": [ + "Helbild", + "Toppen i närbild (form/gjutmärke)", + "Markanslutning (fast/hylsa/automatik)" + ], + "ocr": { + "typskylt_position": "Gjutmärke/etikett på topp eller kropp; HVM-klassning kan förekomma", + "falt": [ + "tillverkare", + "modell", + "ev. klassningskod" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Påkörningsskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + }, + { + "typ": "Automatikfel (hydrauliska pollare)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ATG Access — IWA 14-1-guiden (relation PAS 68/ASTM F2656, klasskod)", + "url": "https://atgaccess.com/what-is-iwa-14/", + "hamtad": "2026-07-04" + }, + { + "titel": "Avon Barrier — Certification & testing (PAS 68/CPNI, IWA 14-1, CWA 16221)", + "url": "https://www.avon-barrier.com/certification-testing/", + "hamtad": "2026-07-04" + }, + { + "titel": "Teknisk guide — ASTM F2656 (2007, ersatte SD-STD-02.01; P1–P4; PAS 68 2005; IWA 14-1 2013/2016)", + "url": "https://www.uparkbollards.com/bollard-crash-ratings-the-complete-technical-guide-to-astm-pas-68-iwa-14-1_n596", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0102", + "posttyp": "objektklass", + "slug": "papperskorg", + "namn": { + "sv": "Papperskorg", + "en": "Litter bin" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Glasdon (UK, grundat 1959, Blackpool)", + "Victor Stanley (US)", + "kommunala program varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polymer (t.ex. Glasdon Durapol — väder-, vandal- och klottertålig)", + "stål/gjutgods", + "trä-stål-kombination" + ], + "montering": "Fundament-, stolp- eller väggmonterad; innerbehållare i zinkbelagd stål eller plast; låsbar (nyckel eller nyckellös)", + "ovrigt": { + "referensexempel": "Glasdon Topsy 2000: 110 l volym, 90 l innerbehållare, lyft-av-kropp för tömning utan tunga lyft, höjd 1000 mm" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "park", + "gågata", + "hållplats", + "torg" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Kommunprogram ger enhetlig design inom en stad — stark geografisk signal", + "Inkastöppningens form (fågelsäkrad mindre öppning)", + "Låst tömningslucka eller lyft-av-kropp", + "Fraktionsdekaler vid sortering" + ], + "sarskiljande_detaljer": [ + "Kommunlogga/programdekal — nyckel-OCR", + "Symbol/dekortyp (t.ex. Glasdons Bin-it-symbol i guld/silver)", + "Askkoppsring i topp", + "Smartkorg: solpanel i lock" + ], + "forvaxlingsrisker": [ + "Sandbehållare/saltlåda", + "Hundlatrin (egen dekal)", + "Returstation" + ], + "kameravinklar": [ + "Helbild framifrån", + "Närbild på dekal/inkast" + ], + "ocr": { + "typskylt_position": "Dekal på kropp", + "falt": [ + "kommun/förvaltare", + "ibland tillverkare/modell", + "fraktion" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Vandalism/klotter", + "beskrivning": "Materialval (t.ex. Durapol) marknadsförs uttryckligen som vandal- och klottertåligt — indikerar känt riskmönster", + "kalla": "Glasdon produktdokumentation (Topsy-serien)" + }, + { + "typ": "Brand i behållare", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ArchiExpo/Glasdon — Topsy 2000 specifikation (Durapol, 110/90 l, lyft-av-kropp, lås)", + "url": "https://www.archiexpo.com/prod/glasdon-group-limited/product-150131-1798607.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Glasdon — företag sedan 1959, ISO 9001 (produktsida Topsy-serien)", + "url": "https://uk.glasdon.com/topsy-royale-tm-litter-bin", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.7, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0103", + "posttyp": "objektklass", + "slug": "cykelstall", + "namn": { + "sv": "Cykelställ", + "en": "Cycle stand" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Cyclehoop (UK)", + "Falco", + "Broxap", + "Dero (US)", + "kommunala program varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "varmförzinkat stålrör (BS EN ISO 1461)", + "rostfritt (304/316)", + "pulverlack i RAL-kulör" + ], + "dimensioner": "Sheffield-bygel typiskt Ø48–60 mm rör, ca 750–900 mm över mark, ca 750–800 mm bred", + "montering": "Nedgjuten (ca 300 mm i betongfickor, krympta ändar mot uppdragning) eller fotplatta med bult", + "ovrigt": { + "tillganglighet": "Tapper-list/platta nertill hjälper synskadade att upptäcka stället; reflexband som tillval" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "station", + "skola", + "handel" + ] + }, + "standarder": [ + { + "organ": "Branschpraxis/upphandling", + "beteckning": "Sheffield-bygel", + "titel": "Omvänt U — de facto-standardtyp", + "roll": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer", + "marknad": "UK (spridd globalt)" + } + ], + "ai": { + "kannetecken": [ + "Sheffield-bygel (omvänt U) — global bastyp som medger ramlåsning", + "Rader med jämna centrumavstånd", + "Framhjulshållare = äldre typ", + "Tvåvåningsställ vid stationer (utbrett i NL/DK)" + ], + "sarskiljande_detaljer": [ + "Rördiameter, tvärslå (moped-/skotervariant) och fotinfästning skiljer fabrikat", + "Tapper-platta nertill = tillgänglighetsanpassad", + "Programkulör och dekal", + "Krympta rörändar vid nedgjutning syns aldrig — fotplatta med bult syns" + ], + "forvaxlingsrisker": [ + "Avspärrningsbygel/räcke", + "Pollare med kätting (LVX-PRK-0101)", + "Mopedparkering (grövre rör, tvärslå)" + ], + "kameravinklar": [ + "Snett ovanifrån hel rad", + "Närbild på infästning och ev. dekal" + ], + "ocr": { + "typskylt_position": "Dekal förekommer", + "falt": [ + "förvaltare", + "ibland tillverkare" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Påkörnings-/plogskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Cyclehoop — Sheffield Stand (3 mm stål, ram+hjullåsning, nedgjutning 300 mm, tapper-tillval)", + "url": "https://cyclehoop.com/product/sheffield-stand/", + "hamtad": "2026-07-04" + }, + { + "titel": "The Bike Storage Company — Sheffield-bygeln som branschstandard/benchmark i UK", + "url": "https://www.thebikestoragecompany.co.uk/product/the-sheffield-cycle-stand-galvanised/", + "hamtad": "2026-07-04" + }, + { + "titel": "Falco — Sheffield-varianter (Ø48/Ø60, höjder, fotplatta/nedgjutning)", + "url": "https://www.falco.co.uk/products/cycle-parking/cycle-stands/sheffield-stands.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0201", + "posttyp": "objektklass", + "slug": "parkbank", + "namn": { + "sv": "Parkbänk", + "en": "Public bench" + }, + "doman": "PRK", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Victor Stanley (US)", + "Hags/Nola (Norden)", + "Glasdon (UK)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "trä på gjutjärns-/stålgavlar", + "helmetall", + "återvunnen plast", + "betong" + ], + "montering": "Bultad i markplatta eller nedgjuten; fasta program per kommun" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "park", + "torg", + "hållplats", + "gågata" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Gavlarnas form är programsignaturen (kommuner standardiserar modell)", + "Armstöd/mittarmstöd", + "Ribbverkets antal och profil" + ], + "sarskiljande_detaljer": [ + "Gjutna gavelmönster", + "Tillverkaretikett under sits förekommer" + ], + "forvaxlingsrisker": [ + "Soffa i väderskydd (del av LVX-TRP-0108)", + "Privata möbler" + ], + "kameravinklar": [ + "Snett framifrån", + "Gavelnärbild" + ], + "ocr": { + "typskylt_position": "Ev. etikett/plakett", + "falt": [ + "tillverkare", + "modell", + "donationsplakett" + ] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Rötskadat trä/flagnande färg", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ingar_i", + "mal": "Möbleringsprogram (kommunspecifikt)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-TEL-0101", + "posttyp": "objektklass", + "slug": "telekomskap", + "namn": { + "sv": "Telekomskåp (fiber/koppar)", + "en": "Telecom street cabinet" + }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "operatörsprogram (t.ex. Openreach i UK)", + "skåpelektronik: t.ex. Huawei, ECI (Openreach FTTC)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "plåt", + "glasfiberkomposit" + ], + "montering": "Sockel-/fundamentmonterat; kabelbrunnar och kanalisation intill", + "ovrigt": { + "typer": "Passivt korskopplingsskåp (UK: PCP, Primary Connection Point) vs aktivt FTTC/DSLAM-skåp; G.fast-poddar kan bultas på befintligt PCP-skåp; AIO-skåp kombinerar PCP + DSLAM i en enhet" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "bostadsområde", + "landsbygd" + ] + }, + "standarder": [ + { + "organ": "Operatörer", + "beteckning": "Operatörsprogram", + "titel": "Operatörsspecifika skåpfamiljer", + "roll": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön", + "marknad": "per land" + } + ], + "ai": { + "kannetecken": [ + "Fristående skåp utan högspänningsskyltning", + "Operatörskonsekvent kulör (UK/Openreach: grön, ofta mörkgrön)", + "Ventilationsgaller på aktiva skåp (DSLAM)", + "Kabelbrunnslock i marken intill", + "Sidopodd på äldre skåp = G.fast-utbyggnad (UK)" + ], + "sarskiljande_detaljer": [ + "Nod-/skåpetikett med operatörens ID — nyckel-OCR", + "Passivt PCP-skåp (endast korskoppling) är enklare och ofta äldre; aktivt skåp har fläktgaller", + "Dubbelskåp PCP + intilliggande FTTC-skåp med kabelkanal emellan" + ], + "forvaxlingsrisker": [ + "Kabelskåp el (LVX-ELN-0101) — har blixtsymbol", + "Trafiksignalskåp (LVX-TRP-0105)", + "Kabel-tv-skåp (egen operatörskulör)" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på etikett/ID", + "Sidovy (poddar/utbyggnader)" + ], + "ocr": { + "typskylt_position": "Etikett på dörr", + "falt": [ + "operatör", + "nod-/skåp-ID" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Kapacitetstak", + "beskrivning": "Fulla skåp (inga lediga portar) är ett känt fenomen som kräver extra DSLAM eller sidopoddar", + "kalla": "ISPreview/BT Community — dokumenterade fall av fulla PCP/FTTC-skåp" + }, + { + "typ": "Korrosion", + "beskrivning": "Rostiga och intryckta äldre skåp rapporteras av abonnenter", + "kalla": "ISPreview läsarrapporter (Virgin Media-skåp)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TEL-0201", + "beskrivning": "" + }, + { + "predikat": "ingar_i", + "mal": "Accessnät (Tier 2-topologi)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ISPreview — Identifying BT/Openreach street furniture (grön kulör; Huawei/ECI-skåp; AIO; G.fast-poddar)", + "url": "https://www.ispreview.co.uk/index.php/2019/12/identifying-bt-and-virgin-medias-uk-broadband-street-furniture-2019.html/2", + "hamtad": "2026-07-04" + }, + { + "titel": "Beaming — PCP-begreppet (Primary Connection Point, gröna gatuskåp)", + "url": "https://www.beaming.co.uk/knowledge-base/techs-techie-jargon-buster/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0102", + "posttyp": "objektklass", + "slug": "mobilmast-antennplats", + "namn": { + "sv": "Mobilmast/antennplats", + "en": "Cell tower / antenna site" + }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Sabre Industries (tillverkare)", + "Valmont (tillverkare)", + "American Tower / Crown Castle / Cellnex (siteägare, ej tillverkare)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (fackverk, rörmast/monopole)", + "betong (vissa master)" + ], + "montering": "Fribärande fackverkstorn, stagad mast eller monopole; alternativt takplacering och kamouflerade utföranden", + "ovrigt": { + "struktur": "TIA-222 omfattar just fribärande fackverkstorn, stagade master och rörmaster samt antennfästen, stag och fundament" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "landsbygd", + "stadsmiljö (tak/monopole)", + "trafikleder" + ] + }, + "standarder": [ + { + "organ": "TIA/ANSI", + "beteckning": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", + "titel": "Structural Standard for Antenna Supporting Structures and Antennas", + "roll": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet", + "marknad": "US (de facto internationell referens)" + }, + { + "organ": "CEN", + "beteckning": "Eurokoder", + "titel": "Bärverksregler", + "roll": "EU-strukturkrav (kartläggs per land)", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Strukturtyp: monopole (slät rörmast) vs fackverk vs stagad mast", + "Antennsektorer typiskt i tre riktningar per teknikgeneration", + "Mikrovågslänk-diskar", + "Hinderbelysning på högre master", + "Inhägnad teknikyta med skåp vid basen" + ], + "sarskiljande_detaljer": [ + "Site-ID-skylt på grind/mast — nyckel-OCR (kopplar mast till ägare/registrering)", + "Kamouflerade utföranden (flaggstång, träd, skorsten) i stadsmiljö", + "Antalet antennplattformar indikerar samlokalisering av operatörer" + ], + "forvaxlingsrisker": [ + "Radio-/TV-mast", + "Belysningsmast för arena", + "Vindmätarmast" + ], + "kameravinklar": [ + "Helbild på struktur", + "Närbild på grindskylt/site-ID", + "Toppzon med antennkonfiguration" + ], + "ocr": { + "typskylt_position": "Skylt vid grind/bas", + "falt": [ + "siteägare", + "site-ID", + "kontakt/nödnummer", + "FCC/registrering (US)" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Struktur- och infästningsslitage", + "beskrivning": "Inspektionsbehov av fästen och stag; drönarinspektion växer som metod", + "kalla": "TIA-222-revisionsarbetet (Rev I: drönarinspektion diskuteras)" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "Teknikbod/skåp vid bas (Tier 2)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "TIA — publicering av ANSI/TIA-222 Rev H (scope: torn, stagade master, rörmaster)", + "url": "https://tiaonline.org/press-release/tia-announces-publication-of-tia-222-h-standard-for-antennas-and-the-supporting-structures-for-antennas-and-small-wind-turbines/", + "hamtad": "2026-07-04" + }, + { + "titel": "Cabling Install — TIA-222-H → I-revision inledd (vind/snö/is; drönarinspektion)", + "url": "https://www.cablinginstall.com/standards/article/14276514/tia-222-standard-for-towers-and-antenna-supporting-structures-up-for-revision", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0201", + "posttyp": "objektklass", + "slug": "kabelbrunn", + "namn": { + "sv": "Kabelbrunn/kanalisation", + "en": "Cable chamber / handhole" + }, + "doman": "TEL", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Oldcastle/Quazite (polymerbetong)", + "Charles Industries (komposit)", + "Hubbell", + "betongprefab" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polymerbetong", + "avancerad komposit", + "betong" + ], + "montering": "Grade-level-låda i gångyta/vägren; handhole = åtkomst utan nedstigning", + "ovrigt": { + "lastklassning": "ANSI/SCTE 77 Tier 5/8/15/22 för icke-avsiktlig trafik (tiernumret × 1000 lb designlast, provlast +50 %); avsiktlig körbanetrafik hänvisas till AASHTO" + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "EU", + "UK", + "AU" + ], + "miljotyper": [ + "trottoar", + "vägren", + "parkering" + ] + }, + "standarder": [ + { + "organ": "ANSI/SCTE", + "beteckning": "ANSI/SCTE 77", + "titel": "Specification for Underground Enclosure Integrity", + "roll": "Strukturell integritet och tier-lastklassning för handholes (först 2002, reviderad därefter)", + "marknad": "US/CA" + }, + { + "organ": "NFPA", + "beteckning": "NEC 314.30", + "titel": "Handhole enclosures", + "roll": "Kräver dimensionering för förekommande laster; lockmärkning av funktion; lock ska kräva verktyg eller väga >45 kg", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Rektangulärt lock med gjuten funktionstext: COMMUNICATIONS/FIBER/ELECTRIC/CATV", + "Polymerbetongens karaktäristiska yta", + "Bultade lock med lyftöglor" + ], + "sarskiljande_detaljer": [ + "Tier-märkning förekommer på lock", + "Operatörslogga (Openreach-brunnar i UK m.fl.)" + ], + "forvaxlingsrisker": [ + "VA-betäckning (LVX-VAT-0101)", + "Elnätets kabelbrunnar (funktionstexten avgör)" + ], + "kameravinklar": [ + "Rakt uppifrån", + "Närbild funktionstext" + ], + "ocr": { + "typskylt_position": "Gjuten/formsprutad text i lock", + "falt": [ + "funktion", + "operatör", + "tier" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Fel lastklass för läget", + "beskrivning": "Underdimensionerade lådor i ytor med tung icke-avsiktlig trafik havererar — hela motivet bakom SCTE 77", + "kalla": "ANSI/SCTE 77 (syfte) / Oldcastle" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TEL-0101", + "beskrivning": "Kanalisationen matar skåpen" + }, + { + "predikat": "foljer_standard", + "mal": "ANSI/SCTE 77", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Oldcastle Infrastructure — SCTE 77-historik och tier-nivåerna 5/8/15/22", + "url": "https://oldcastleinfrastructure.com/load-ratings-in-underground-enclosure-selection/", + "hamtad": "2026-07-04" + }, + { + "titel": "SCTE — Specification for Underground Enclosure Integrity (scope: non-deliberate traffic; deliberate → AASHTO)", + "url": "https://account.scte.org/standards/library/catalog/scte-77-specification-for-underground-enclosure-integrity/", + "hamtad": "2026-07-04" + }, + { + "titel": "Quazite/Hubbell — tierlaster, NEC 314.30-koppling", + "url": "https://studylib.net/doc/18069634/ansi-scte-77-2007-specification-for-underground-enclosure", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0101", + "posttyp": "objektklass", + "slug": "belysningsstolpe", + "namn": { + "sv": "Belysningsstolpe", + "en": "Lighting column" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "Hydro (aluminium)", + "Europoles", + "Tehomet (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "EN 40 omfattar toppmonterade stolpar upp till 20 m och armstolpar upp till 18 m; gatumiljö vanligen 3–12 m", + "material": [ + "stål (varmförzinkat)", + "aluminium", + "armerad/förspänd betong", + "fiberkomposit (FRP)" + ], + "montering": "Fotplatta på gjutet fundament eller nedstucken; inspektionslucka med kabelanslutning nära basen", + "livslangd_ar": "30–50 (stål/aluminium i normal miljö)", + "korrosionsklass": "C3–C5 beroende på miljö (kust, vägsalt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "stadsgata", + "GC-väg", + "park", + "parkering" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 40 (del 1–7)", + "titel": "Lighting columns", + "roll": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO", + "beteckning": "LTS-serien", + "titel": "Structural Supports for Highway Signs, Luminaires and Traffic Signals", + "roll": "Strukturkrav (kartläggs vidare i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Konisk, stegad rund eller oktagonal profil (vanligast enligt EN 40-2)", + "Inspektionslucka nära basen", + "Fotplatta med fundamentbultar eller markingjutning", + "Enkel- eller dubbelarm för armatur" + ], + "sarskiljande_detaljer": [ + "Ägar-/driftdekal med stolpnummer (kommun eller nätbolag)", + "Svetssöm och stegning indikerar stål; strängpressad slät yta indikerar aluminium", + "Luckans form och låsning varierar per tillverkare" + ], + "forvaxlingsrisker": [ + "Elstolpe (LVX-ELN-0102)", + "Skylt- och signalstolpar", + "Flaggstänger" + ], + "kameravinklar": [ + "Helbild med topp och bas", + "Närbild på lucka och eventuell dekal/stolpnummer" + ], + "ocr": { + "typskylt_position": "Dekal eller etikett vid lucka/bas", + "falt": [ + "ägare", + "stolpnummer", + "ibland tillverkare och år" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Korrosion i markzon", + "beskrivning": "Rostangrepp i övergången mark/luft förkortar livslängden på stålstolpar", + "kalla": "PLATSHÅLLARE — branschkänt; belägg med förvaltningsrapport eller fältobservation före publicering" + }, + { + "typ": "Påkörningsskador", + "beskrivning": "Deformation vid trafikolyckor; eftergivliga stolpar minskar personskaderisk", + "kalla": "PLATSHÅLLARE — koppla till passiv säkerhet i EN 40/EN 12767 vid modellkartläggning" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" + }, + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "Belysningsnätets kabelskåp" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "BSI — BS EN 40-serien (del 1–7, inkl. komposit del 7)", + "url": "https://landingpage.bsigroup.com/LandingPage/Series?UPI=BS+EN+40", + "hamtad": "2026-07-04" + }, + { + "titel": "EN 40-2:2004 General requirements and dimensions (scope: ≤20 m/≤18 m, tvärsnitt, lucka, passiv säkerhet)", + "url": "https://www.en-standard.eu/bs-en-40-2-2004-lighting-columns-general-requirements-and-dimensions/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0102", + "posttyp": "objektklass", + "slug": "vagbelysningsarmatur", + "namn": { + "sv": "Vägbelysningsarmatur", + "en": "Road lighting luminaire" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Signify", + "Schréder", + "Acuity Brands/AEL", + "Cree Lighting", + "Thorn" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminium (gjutet hus)", + "polykarbonat/glas (kupa)" + ], + "montering": "Toppmontage eller sidoarm (spigot); NEMA- eller Zhaga-sockel för styrnod", + "livslangd_ar": "20+ för LED-fixtur; drivdon ofta först ut", + "ip_klass": "IP65–IP66 vanligt" + }, + "historik": { + "revisioner": [ + "kvicksilver → högtrycksnatrium (HPS, 1970-tal) → LED (2010-tal och framåt)" + ] + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "stadsgata", + "GC-väg", + "parkering" + ] + }, + "standarder": [ + { + "organ": "NEMA/ANSI", + "beteckning": "ANSI C136-serien", + "titel": "Roadway and Area Lighting Equipment", + "roll": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal", + "marknad": "US" + }, + { + "organ": "Zhaga Consortium", + "beteckning": "Zhaga Book 18", + "titel": "Smart interface luminaire–node", + "roll": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI", + "marknad": "EU/global" + }, + { + "organ": "CEN/CENELEC", + "beteckning": "EN 60598 / EN 13201", + "titel": "Armatursäkerhet / vägbelysningsklasser", + "roll": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)", + "marknad": "EU/UK" + }, + { + "organ": "UL", + "beteckning": "UL 1598", + "titel": "Luminaires", + "roll": "Produktsäkerhet", + "marknad": "US/CA" + } + ], + "ai": { + "kannetecken": [ + "'Cobra head'-silhuett = klassisk amerikansk gatuarmatur (ofta HPS)", + "Plan rektangulär 'shoebox'-form = modern LED", + "Skruvsockel/puck ovanpå: NEMA twist-lock (US/UK) eller Zhaga (EU)", + "Orange/gult sken = HPS; vitt sken = LED eller metallhalogen" + ], + "sarskiljande_detaljer": [ + "Tillverkarlogga ofta gjuten i husets sida", + "ANSI C136.15-etikett (svart text på vit botten) anger lamptyp och wattal — snabbaste US-identifieringen", + "Typskylt med modell, effekt och tillverkningsdatum under eller inuti huset", + "Zhaga-nodens diameter och placering" + ], + "forvaxlingsrisker": [ + "Parkarmatur på låg stolpe", + "Strålkastare/floodlight", + "Tunnelarmatur" + ], + "kameravinklar": [ + "Snett underifrån mot husets sida (logga)", + "Rakt underifrån (typskylt/etikett)", + "Ovanifrån vid lyftkorg (sockeltyp)" + ], + "ocr": { + "typskylt_position": "Undersida eller insida av hus; C136.15-etikett på utsidan (US)", + "falt": [ + "tillverkare", + "modell", + "wattal", + "tillverkningsdatum", + "lamptyp" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Lila/violett ljusskifte", + "beskrivning": "Delaminering av fosforskiktet i vissa CSP-LED tillverkade cirka 2017–2019 gör att blåviolett ljus läcker igenom; rapporterat i Nordamerika och Europa från början av 2020-talet; byts under garanti", + "typisk_alder_ar": "3–6 år efter installation", + "kalla": "Wikipedia: 2020s purpling of streetlights; inside.lighting LSRC-utredning (CSP-LED, fosfor-silikonskikt)" + }, + { + "typ": "Drivdonshaveri", + "beskrivning": "LED-drivdonet är ofta den komponent som fallerar först", + "kalla": "PLATSHÅLLARE — belägg med servicedata före publicering" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0101", + "beskrivning": "Topp- eller armmontage på belysningsstolpe" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0204", + "beskrivning": "Fotocell eller smart nod i standardiserad sockel" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA — ANSI C136-serien (C136.10, C136.15, C136.41)", + "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", + "hamtad": "2026-07-04" + }, + { + "titel": "Zhaga Book 18 — smart interface för utomhusarmaturer", + "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Wikipedia — 2020s purpling of streetlights", + "url": "https://en.wikipedia.org/wiki/2020s_purpling_of_streetlights", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0103", + "posttyp": "objektklass", + "slug": "vagmarke", + "namn": { + "sv": "Vägmärke", + "en": "Road sign" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "3M (reflexfolie)", + "Avery Dennison (reflexfolie)", + "regionala skylttillverkare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminiumplåt (substrat)", + "retroreflekterande folie i klasser" + ], + "montering": "U-profilstolpe (US), rörstolpe/klammer (EU), portal eller väggmontage", + "livslangd_ar": "10–15 för folien; retroreflexionen avgör" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "FHWA", + "beteckning": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", + "titel": "Manual on Uniform Traffic Control Devices", + "roll": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion", + "marknad": "US" + }, + { + "organ": "UK DfT", + "beteckning": "TSRGD 2016 (SI 2016/362)", + "titel": "Traffic Signs Regulations and General Directions", + "roll": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016", + "marknad": "UK" + }, + { + "organ": "FN/nationella", + "beteckning": "Wienkonventionen 1968 + nationella kataloger", + "titel": "Konvention om vägmärken och signaler", + "roll": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog", + "marknad": "EU" + }, + { + "organ": "Standards Australia", + "beteckning": "AS 1742", + "titel": "Manual of uniform traffic control devices", + "roll": "Australisk motsvarighet", + "marknad": "AU" + }, + { + "organ": "CEN / ASTM", + "beteckning": "EN 12899-1 / ASTM D4956", + "titel": "Fasta vägmärken / reflexfolieklasser", + "roll": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)", + "marknad": "EU / US" + } + ], + "ai": { + "kannetecken": [ + "Form + färg är regelverkets grammatik: gul romb = varning (US); triangel med röd bård = varning (EU); åttahörning = stopp (globalt)", + "Retroreflex som lyser upp i blixt-/lyktljus" + ], + "sarskiljande_detaljer": [ + "Baksidesetikett med tillverkare, tillverkningsdatum och folietyp — den säkraste identifieringen", + "Folietypens glittermönster (prismatisk vs glaspärla) syns i närbild", + "Stolptyp och klamring skiljer marknader" + ], + "forvaxlingsrisker": [ + "Privata/kommersiella skyltar i regelverksliknande färger", + "Tillfälliga arbetsplatsmärken", + "Utgångna märkesgenerationer" + ], + "kameravinklar": [ + "Framsida rakt framifrån", + "Baksida i närbild (etikett)", + "Med blixt för folieanalys" + ], + "ocr": { + "typskylt_position": "Etikett på skyltens baksida", + "falt": [ + "tillverkare", + "datum", + "folietyp", + "ibland beställare" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Retroreflexionsförlust", + "beskrivning": "Folien åldras under UV och väder; MUTCD kräver metod för att hålla retroreflexion över miniminivåer", + "kalla": "FHWA MUTCD (retroreflexionskrav)" + }, + { + "typ": "Delaminering/blekning", + "beskrivning": "Folie släpper från substrat eller bleks", + "kalla": "PLATSHÅLLARE — belägg per folietyp i modellvågen" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0201", + "beskrivning": "portalvariant → LVX-TRP-0205" + }, + { + "predikat": "foljer_standard", + "mal": "MUTCD / TSRGD / nationella kataloger", + "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "FHWA — MUTCD 11th Edition with Revision 1 (gällande utgåva)", + "url": "https://mutcd.fhwa.dot.gov/kno_11th_Editionr1.htm", + "hamtad": "2026-07-04" + }, + { + "titel": "FHWA — delstatsadoption senast 18 jan 2026", + "url": "https://mutcd.fhwa.dot.gov/resources/state_info/index.htm", + "hamtad": "2026-07-04" + }, + { + "titel": "GOV.UK — TSRGD 2016 overview", + "url": "https://www.gov.uk/government/publications/traffic-signs-regulations-and-general-directions-2016-an-overview", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.82, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0104", + "posttyp": "objektklass", + "slug": "trafiksignal-signalhuvud", + "namn": { + "sv": "Trafiksignal, signalhuvud", + "en": "Traffic signal head" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "SWARCO", + "Yunex Traffic", + "Econolite", + "McCain" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Nominell linsdiameter 200 mm eller 300 mm (EN 12368)", + "material": [ + "polykarbonat", + "aluminium" + ], + "montering": "Stolpe/mast (EU-typiskt) eller mastarm/wire över körbana (US-typiskt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar", + "övergångsställen", + "påfarter" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12368:2024", + "titel": "Traffic control equipment — Signal heads", + "roll": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning", + "marknad": "EU/UK" + }, + { + "organ": "ITE", + "beteckning": "VTCSH", + "titel": "Vehicle Traffic Control Signal Heads", + "roll": "US-spec för signalhuvuden (kartläggs vidare)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Antal ljusöppningar (1–5 moduler) och pilsymboler", + "200 vs 300 mm lins", + "Visir/solskärmar per öppning", + "Bakgrundsskärm — i nyare US-installationer ofta med retroreflekterande gul ram" + ], + "sarskiljande_detaljer": [ + "Husets modulskarvar och fästen skiljer tillverkare", + "Gång-/cykelsymboler är regionala (hand/gubbe, röd-grön gubbe, cykelsymbol)", + "LED-insats syns som punktmatris; glödlins är jämnlysande" + ], + "forvaxlingsrisker": [ + "Körfältssignaler", + "Järnvägssignaler (LVX-JVG, Tier 2)", + "Bro-/tunnelsignaler" + ], + "kameravinklar": [ + "Framifrån med alla öppningar", + "Snett bakifrån (hus och fäste)" + ], + "ocr": { + "typskylt_position": "Etikett på husets bak- eller undersida", + "falt": [ + "tillverkare", + "modell", + "spänning" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Kondens/vatteninträngning", + "beskrivning": "Imma i lins vid bristande tätning; EN 12368 klassar därför IP-skydd", + "kalla": "PLATSHÅLLARE — belägg per modell" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0105", + "beskrivning": "Styrs av trafiksignalskåpets styrapparat" + }, + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0202", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 12368:2024 (scope: 200/300 mm-roundels, prestandaklasser)", + "url": "https://www.en-standard.eu/bs-en-12368-2024-traffic-control-equipment-signal-heads/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0105", + "posttyp": "objektklass", + "slug": "trafiksignalskap", + "namn": { + "sv": "Trafiksignalskåp/styrapparat", + "en": "Traffic signal controller cabinet" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Econolite", + "SWARCO McCain", + "Yunex Traffic", + "Q-Free" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminium (t.ex. 5052-plåt)", + "stål" + ], + "montering": "Sockel-/fundamentmonterat vid korsning, ibland stolpmonterat", + "ovrigt": { + "inre": "styrapparat, konfliktmonitor/MMU, detektorrack, lastbrytare; NEMA TS 2 använder seriell busskommunikation" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar" + ] + }, + "standarder": [ + { + "organ": "NEMA", + "beteckning": "NEMA TS 2-2021", + "titel": "Traffic Controller Assemblies", + "roll": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare", + "marknad": "US/CA" + }, + { + "organ": "ITE/AASHTO/NEMA", + "beteckning": "ATC-standarder; Caltrans 33x-typ", + "titel": "Advanced Transportation Controller; kaliforniska skåptyper", + "roll": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Grå/aluminiumfärgad plåtlåda vid gathörn nära signaler", + "Ventilationsgaller med filter nertill, fläktutlopp upptill", + "Separat liten 'polislucka' i dörren", + "Ofta batteribackupskåp intill" + ], + "sarskiljande_detaljer": [ + "Skåpform (NEMA-typer vs smala dubbelhöga 33x-typ i Kalifornien)", + "Myndighetsetikett med korsnings-ID — nyckel-OCR", + "Dörrarnas antal och gångjärnssida" + ], + "forvaxlingsrisker": [ + "Kabelskåp el (LVX-ELN-0101)", + "Telekomskåp (LVX-TEL-0101)", + "Belysningscentral" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på etikett/ID och polislucka" + ], + "ocr": { + "typskylt_position": "Etikett på dörr", + "falt": [ + "väghållare", + "korsnings-ID", + "serviceinfo" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Värme/ventilation", + "beskrivning": "Elektronik känslig för värmeansamling; filter och fläkt kräver underhåll", + "kalla": "PLATSHÅLLARE — belägg med servicedata" + }, + { + "typ": "Påkörning", + "beskrivning": "Exponerad placering i korsning ger hög påkörningsrisk", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0104", + "beskrivning": "Styr signalhuvudena" + }, + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA TS 2-2021 Traffic Controller Assemblies (innehåll och scope)", + "url": "https://www.nema.org/docs/default-source/standards-document-library/nema-ts-2-2021-contents-and-scopeb71294ae-eb9a-45e2-a501-e5c0672dbd6b.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "Econolite NEMA Traffic Control Cabinets (skåpfamiljer, polislucka)", + "url": "https://www.econolite.com/products/traffic-control-cabinets/nema-traffic-control-cabinets/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0106", + "posttyp": "objektklass", + "slug": "vagmarkering", + "namn": { + "sv": "Vägmarkering", + "en": "Road marking" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "PPG (Ennis-Flint)", + "Geveko Markings", + "SWARCO" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "termoplast/massa", + "vägfärg (vattenburen/lösningsmedel)", + "2-komponent (kallplast)", + "prefabricerad tejp" + ], + "ovrigt": { + "tillsatser": "drop-on glaspärlor för retroreflexion; profilerad/bullrande utformning; vägbanereflektorer (RPM) vanliga i US" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla belagda vägar" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1436:2018", + "titel": "Road marking performance for road users", + "roll": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper", + "marknad": "EU/UK" + }, + { + "organ": "FHWA", + "beteckning": "MUTCD 11:e utgåvan", + "titel": "Del om markeringar", + "roll": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Färggrammatik: gul mittlinje/vit kantlinje (US); vit mittlinje i större delen av EU", + "Linjebredd och mönster (heldragen, streckad, dubbel)", + "Symbolbibliotek: pilar, cykel, buss, övergångsställen" + ], + "sarskiljande_detaljer": [ + "Materialtjocklek: massa står upp från ytan, färg gör det inte", + "Profilerad kant = bullrande/våtsynbar markering", + "RPM-reflektorer i linjen = nordamerikanskt" + ], + "forvaxlingsrisker": [ + "Tillfällig gul/orange arbetsmarkering", + "Utfräst borttagen markering (spökbild)", + "Lekplats-/parkeringsmålning utanför regelverket" + ], + "kameravinklar": [ + "Snett framåt i körriktning", + "Rakt uppifrån för symboler", + "Närbild på kant och tjocklek" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Slitage i hjulspår", + "beskrivning": "Retroreflexion och synbarhet försvinner först där däcken går; MUTCD:s minimikrav gör detta till underhållsfråga", + "kalla": "FHWA MUTCD retroreflexionskrav (via RetroTek-sammanställning)" + }, + { + "typ": "Plogskador", + "beskrivning": "Snöplogar river massa och reflektorer i nordligt klimat", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "Vägbana/beläggning (Tier 2)", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 1436 / MUTCD", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 1436:2018 (Qd, retroreflexion, färg, friktion; relation till EN 1871)", + "url": "https://standards.iteh.ai/catalog/standards/cen/95bb9e65-a6d3-4051-94e5-6acba96c92c0/en-1436-2018", + "hamtad": "2026-07-04" + }, + { + "titel": "RetroTek — Road Marking Standards Europe & US (MUTCD-minimikrav, sept 2026)", + "url": "https://www.reflective-systems.com/usa-and-european-standards/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0107", + "posttyp": "objektklass", + "slug": "vagracke", + "namn": { + "sv": "Vägräcke", + "en": "Road safety barrier" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Valtir", + "Lindsay", + "Hill & Smith", + "Saferoad/Birsta (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "förzinkat stål (W-/trie-balk, rör)", + "vajer", + "betong", + "trä-stål-kombination" + ], + "montering": "Nedslagna eller ingjutna stolpar; betongbarriärer fristående eller förankrade" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg (sida/mitt)", + "landsväg", + "bro" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1317", + "titel": "Road restraint systems", + "roll": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH (2016)", + "titel": "Manual for Assessing Safety Hardware", + "roll": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Balkprofil: W-balk (två vågor) vs trie-balk (tre) vs rörräcke", + "Vajerräcke: 3–4 linor på klena stolpar — vanligt nordiskt mitträcke", + "Betongbarriär med lutande profil", + "Stolptyp och stolpavstånd" + ], + "sarskiljande_detaljer": [ + "Skarvarnas överlapp och bultbild", + "Ändavslut: nedförd, utsvängd eller energiupptagande terminal med slädhuvud", + "Reflektorer monterade på räcket", + "Distansklossar mellan balk och stolpe" + ], + "forvaxlingsrisker": [ + "Broräcke (Tier 2)", + "GC-räcke/staket", + "Bullerskydd med räckesfunktion" + ], + "kameravinklar": [ + "Längs räcket (profil och skarvar)", + "Närbild på ändavslut", + "Stolpe med infästning" + ], + "ocr": { + "typskylt_position": "Stansning/etikett på balk eller terminal förekommer", + "falt": [ + "system/typ", + "ibland tillverkare" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Påkörningsskador", + "beskrivning": "Deformerade sektioner ska bytas för bibehållen funktion", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + }, + { + "typ": "Korrosion vid skarv och markzon", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 1317 / MASH", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "DELTABLOC — EN 1317 kapacitetsklasser T1–H4b, arbetsbredd W1–W8", + "url": "https://deltabloc.com/en/about-us/road-safety-norms", + "hamtad": "2026-07-04" + }, + { + "titel": "TxDOT — MASH 2016 testnivåer och ersättning av NCHRP 350", + "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0108", + "posttyp": "objektklass", + "slug": "hallplatsvaderskydd", + "namn": { + "sv": "Hållplatsväderskydd", + "en": "Bus shelter" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "JCDecaux (operatör/tillverkare)", + "Clear Channel (operatör)", + "Outfront/Decaux (JV, Nordamerika)", + "Team Tejbrant (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminiumprofiler", + "härdat glas", + "stål", + "rostfritt (t.ex. NYC-programmet)" + ], + "montering": "Fundamentmonterade moduler; drivs ofta som reklamfinansierade franchiseprogram där operatören bygger och underhåller utan kostnad för staden", + "ovrigt": { + "affarsmodell": "Reklamfinansierat väderskydd uppfanns av Jean-Claude Decaux 1964; JCDecaux har över 136 000 väderskydd installerade globalt" + } + }, + "historik": { + "introducerad": "1964 (reklamfinansierad modell, Frankrike)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "landsväg" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Belyst reklamvitrin i gavel = reklamfinansierat program", + "Modulbyggt glas/aluminium med tak", + "Sittbänk, tidtabellstavla, allt oftare realtidsskylt/USB", + "Enhetlig programdesign inom en stad (t.ex. rostfritt-och-glas i NYC-franchisen)" + ], + "sarskiljande_detaljer": [ + "Operatörslogga och hållplats-ID — nyckel-OCR", + "Takform och gavelprofil skiljer program/tillverkare", + "Nya generationer: gröna tak (t.ex. JCDecaux Filtreo), återbrukade material" + ], + "forvaxlingsrisker": [ + "Cykelparkeringstak", + "Rökkur/entrétak", + "Reklampelare utan hållplatsfunktion" + ], + "kameravinklar": [ + "Snett framifrån hela skyddet", + "Närbild på hållplatsskylt och ID" + ], + "ocr": { + "typskylt_position": "Hållplatsskylt och programetikett", + "falt": [ + "hållplatsnamn", + "hållplats-ID", + "operatör" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Glaskross/vandalism", + "beskrivning": "Drift- och underhållsansvar ligger i franchisen; operatörer sköter veckostädning, reparationer och inspektioner", + "kalla": "Outfront/Decaux programbeskrivning (LA: löpande underhåll av 2 500+ möbler)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-ELN-0101", + "beskrivning": "Belysning/realtidsskylt matas från nätet" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JCDecaux — The advertising bus shelter: uppfunnen 1964, 136 000+ installerade", + "url": "https://www.jcdecaux.com/blog/advertising-bus-shelter-jcdecauxs-trademark", + "hamtad": "2026-07-04" + }, + { + "titel": "NYC Street Design Manual — Bus Stop Shelter (JCDecaux-franchise, rostfritt/glas)", + "url": "https://www.nycstreetdesign.info/furniture/bus-stop-shelter", + "hamtad": "2026-07-04" + }, + { + "titel": "Outfront/Decaux — LA-programmet (2 400+ väderskydd, P3-modell)", + "url": "https://www.outfrontjcdecaux.com/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0201", + "posttyp": "objektklass", + "slug": "skyltstolpe", + "namn": { + "sv": "Skyltstolpe", + "en": "Sign post" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "regionala stål-/rörleverantörer", + "Valmont (strukturer)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "förzinkat stål (U-profil, rör)", + "aluminium", + "trä (vissa marknader)", + "komposit" + ], + "montering": "Nedslagen, i hylsa/fundament eller med brytkoppling (slipbase); eftergivlighet klassas i EU enligt EN 12767", + "ovrigt": { + "passiv_sakerhet": "EN 12767 klassar energiupptagning i tre klasser: HE (hög), LE (låg), NE (ingen); omfattar stolpar, konstruktionsdelar och fundament" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12767:2019 (+A1:2024)", + "titel": "Passive safety of support structures for road equipment", + "roll": "Krocktestklassning HE/LE/NE för bl.a. skylt- och belysningsstolpar; utesluter räcken", + "marknad": "EU/UK" + }, + { + "organ": "FHWA/AASHTO", + "beteckning": "Breakaway-krav (kartläggs)", + "titel": "Eftergivliga skyltstöd", + "roll": "US-motsvarighet — slipbase och brytkopplingar", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "U-profil med hålrad = klassisk US-stolpe", + "Rundrör med klammer = EU-typiskt", + "Slipbase-fläns strax ovan mark = eftergivlig US-montering" + ], + "sarskiljande_detaljer": [ + "Hålradens delning", + "Skarvhylsa vid mark (stub + överdel)", + "Dubbel-/portalben vid större tavlor" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe (LVX-TRP-0101)", + "Staket-/grindstolpe", + "Signalstolpe (LVX-TRP-0202)" + ], + "kameravinklar": [ + "Helbild med skylt", + "Närbild markanslutning (brytkoppling?)" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Påkörning", + "beskrivning": "Eftergivlighetsklasserna finns just för kollisionsrisken", + "kalla": "EN 12767 (scope)" + }, + { + "typ": "Korrosion vid markzon", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 12767", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NBS — BS EN 12767:2019 (klasserna HE/LE/NE)", + "url": "https://www.thenbs.com/PublicationIndex/documents/details?Pub=BSI&DocID=327316", + "hamtad": "2026-07-04" + }, + { + "titel": "iTeh — EN 12767:2019 scope (stolpar, konstruktionsdelar, fundament; ej räcken)", + "url": "https://standards.iteh.ai/catalog/standards/cen/ea3ba437-12fd-4b81-a98c-009b9762e0d8/en-12767-2019", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0202", + "posttyp": "objektklass", + "slug": "signalstolpe-mastarm", + "namn": { + "sv": "Signalstolpe & mastarm", + "en": "Signal pole & mast arm" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "Millerbernd (US)", + "regionala" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (rund/månghörning)", + "aluminium" + ], + "montering": "Fotplatta på fundament; mastarm över körbana (US-typiskt) eller kort stolpe vid stopplinje (EU-typiskt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar" + ] + }, + "standarder": [ + { + "organ": "AASHTO", + "beteckning": "LTS-serien (kartläggs)", + "titel": "Structural supports — signals", + "roll": "Strukturkrav för mastarmar", + "marknad": "US" + }, + { + "organ": "AASHTO", + "beteckning": "LTS-6 (2013, interim t.o.m. 2025)", + "titel": "Standard Specifications for Structural Supports for Highway Signs, Luminaires, and Traffic Signals", + "roll": "Strukturkrav (ASD) för signalstolpar och mastarmar", + "marknad": "US" + }, + { + "organ": "AASHTO", + "beteckning": "LRFD-LTS-1 (2015)", + "titel": "LRFD Specifications for Structural Supports", + "roll": "Parallell LRFD-dimensionering", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Lång horisontell mastarm med signalhuvuden = nordamerikanskt", + "Kort stolpe + sekundärsignal = europeiskt", + "Kombistolpe med både signal och belysning förekommer" + ], + "sarskiljande_detaljer": [ + "Armens infästning (fläns/knä)", + "Tryckknappslåda för gående på stolpen" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe med arm (LVX-TRP-0101)", + "Skyltportalben (LVX-TRP-0205)" + ], + "kameravinklar": [ + "Helbild med arm", + "Fotplatta/fundament" + ], + "ocr": { + "typskylt_position": "Ev. väghållardekal", + "falt": [ + "stolp-/korsnings-ID" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Utmattning i arminfästning", + "beskrivning": "Vindinducerade svängningar i långa mastarmar", + "kalla": "PLATSHÅLLARE — belägg med DOT-underlag" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0104", + "beskrivning": "Bär signalhuvudena" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "AASHTO Journal — 2025 interimsrevisioner till LTS-6", + "url": "https://aashtojournal.transportation.org/new-interim-revisions-for-structural-support-standards/", + "hamtad": "2026-07-04" + }, + { + "titel": "Iowa DOT BDM 10.2 — LTS-6/LRFD-LTS-1 i praktiken", + "url": "https://iowadot.gov/media/4676/download?inline=", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0203", + "posttyp": "objektklass", + "slug": "fundament", + "namn": { + "sv": "Fundament (stolpe/mast/skåp)", + "en": "Foundation" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "prefabgjuterier regionalt", + "jordskruvsleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "prefabricerad betong", + "platsgjuten betong", + "stål (jordskruv/helical)" + ], + "montering": "Nedgrävt/skruvat; endast topp med bultgrupp eller fläns synlig", + "ovrigt": { + "passiv_sakerhet": "Fundament ingår i EN 12767:s omfattning för eftergivliga system" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12767:2019 (+A1:2024)", + "titel": "Passive safety of support structures", + "roll": "Scope omfattar fundament i eftergivliga system", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Synlig betongtopp med 3–4 fundamentbultar", + "Jordskruvens rörfläns", + "Justermuttrar under fotplatta" + ], + "sarskiljande_detaljer": [ + "Prefab har jämn gjutyta och ev. märkning", + "Bultcirkelns diameter indikerar stolptyp" + ], + "forvaxlingsrisker": [ + "Kapad stolpe (stubbe)", + "Betäckning i grönyta" + ], + "kameravinklar": [ + "Snett ned mot topp/bultgrupp" + ], + "ocr": { + "typskylt_position": "Prefabmärkning förekommer i gjutytan", + "falt": [ + "tillverkare", + "typ" + ] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Sättning/lutning", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ingar_i", + "mal": "Eftergivliga stödsystem (EN 12767-scope)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "iTeh — EN 12767:2019 scope (stolpar, konstruktionsdelar, fundament)", + "url": "https://standards.iteh.ai/catalog/standards/cen/ea3ba437-12fd-4b81-a98c-009b9762e0d8/en-12767-2019", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0204", + "posttyp": "objektklass", + "slug": "styrnod-belysning", + "namn": { + "sv": "Styrnod belysning (NEMA/Zhaga)", + "en": "Lighting control node" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Signify (Interact-noder)", + "Itron", + "Telensa", + "Tvilight" + ], + "status": "aktiv" + }, + "teknik": { + "montering": "Vrids fast i standardsockel på armaturen: ANSI C136.10 (fotocell, twist-lock), C136.41 (5/7-polig med dimning) eller Zhaga Book 18 (över- eller undersida)", + "ovrigt": { + "funktion": "Från enkel skymningsrelä-fotocell till uppkopplad smart nod med mätning och styrning" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla belysta vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "NEMA/ANSI", + "beteckning": "ANSI C136.10 / C136.41", + "titel": "Fotocellssockel / dimsockel", + "roll": "Mekaniskt och elektriskt gränssnitt (US/UK-tradition)", + "marknad": "US" + }, + { + "organ": "Zhaga", + "beteckning": "Zhaga Book 18", + "titel": "Smart interface luminaire–node", + "roll": "EU-vanligt nodgränssnitt", + "marknad": "EU/global" + } + ], + "ai": { + "kannetecken": [ + "Liten puck/kupol ovanpå armaturen", + "Skymningsfönster på enkel fotocell", + "Zhaga-nod ofta mindre, kan sitta under armaturen" + ], + "sarskiljande_detaljer": [ + "3-polig kort fotocell vs högre 7-polig smart nod", + "Tillverkarlogga på kupolen" + ], + "forvaxlingsrisker": [ + "Kamera-/sensorenhet", + "Blindlock i sockeln" + ], + "kameravinklar": [ + "Telefoto snett uppifrån/gatuvinkel mot armaturens topp" + ], + "ocr": { + "typskylt_position": "Text på kupol (svårläst från mark)", + "falt": [ + "tillverkare" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Fotocellsdrift (lampor lyser dagtid)", + "beskrivning": "Felande nod ger dygnslysning — vanlig felanmälan", + "kalla": "PLATSHÅLLARE — driftdata" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0102", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "ANSI C136.10/.41; Zhaga Book 18", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA — ANSI C136-serien (återanvänd, våg 1)", + "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", + "hamtad": "2026-07-04" + }, + { + "titel": "Zhaga Book 18 (återanvänd, våg 1)", + "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0205", + "posttyp": "objektklass", + "slug": "vagportal", + "namn": { + "sv": "Vägportal/skyltbrygga", + "en": "Sign gantry" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "regionala stålbyggare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "fackverksstål", + "rörbalk (monotube)" + ], + "montering": "Två- eller enbent över körbana; fundament per ben" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "större leder" + ] + }, + "standarder": [ + { + "organ": "AASHTO/CEN", + "beteckning": "LTS / Eurokoder (kartläggs)", + "titel": "Strukturkrav", + "roll": "Vind-/utmattningsdimensionering", + "marknad": "US/EU" + }, + { + "organ": "AASHTO", + "beteckning": "LTS-6 (2013, interim t.o.m. 2025)", + "titel": "Standard Specifications for Structural Supports", + "roll": "Scope kategoriserar skyltstöd inkl. portaler (overhead bridge/cantilever)", + "marknad": "US" + }, + { + "organ": "AASHTO", + "beteckning": "LRFD-LTS-1 (2015)", + "titel": "LRFD Specifications for Structural Supports", + "roll": "LRFD-spår; Iowa DOT tillämpar båda för skylttruss", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Fackverk vs slät rörbalk", + "Halvportal (utliggare) vs helportal", + "Vägvisningstavlor och/eller variabla skyltar monterade" + ], + "sarskiljande_detaljer": [ + "Servicegång med räcke ovanpå äldre portaler", + "Benens tvärsnitt och fundamentstorlek" + ], + "forvaxlingsrisker": [ + "Kontaktledningsbryggor järnväg", + "Belysningsramper" + ], + "kameravinklar": [ + "Helbild framifrån", + "Ben + fundament" + ], + "ocr": { + "typskylt_position": "Väghållar-ID förekommer på ben", + "falt": [ + "portal-ID" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Utmattning/korrosion i knutpunkter", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0103", + "beskrivning": "Bär vägmärken/vägvisning" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Accuris — AASHTO LTS-6 (utgåvor/interim)", + "url": "https://store.accuristech.com/standards/aashto-lts-6?product_id=1859294", + "hamtad": "2026-07-04" + }, + { + "titel": "Iowa DOT BDM 10.2 — portal-/utliggartruss enligt LTS", + "url": "https://iowadot.gov/media/4676/download?inline=", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0206", + "posttyp": "objektklass", + "slug": "kantsten", + "namn": { + "sv": "Kantsten", + "en": "Kerb/curb" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "betongvaruindustrin regionalt", + "naturstensleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "prefabricerad betong (EN 1340)", + "natursten/granit (EN 1343)", + "platsgjuten/asfaltlimmad" + ], + "montering": "Satt i bruk/betongmotstöd eller limmad; radieelement för kurvor", + "ovrigt": { + "funktion": "Separation, visuell avgränsning, avvattning och inneslutning av beläggning (EN 1340-scope)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "GC", + "refug" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1340", + "titel": "Concrete kerb units", + "roll": "Krav och provning för betongkantsten, rännor och passbitar; ersatte BS 7263-3", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 1343", + "titel": "Kerbs of natural stone", + "roll": "Naturstenskantsten — prestandaklasser i väghållarkrav (t.ex. UK MCHW)", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Granit: grå/röd med huggen yta; betong: jämn ljusgrå", + "Visningshöjd varierar (nedsänkt vid ramp/övergång)", + "Rännstensplattor och avvisarsten som varianter" + ], + "sarskiljande_detaljer": [ + "Fasens vinkel och bredd", + "Radieelement vs raka", + "Limfog syns vid limmad kantsten" + ], + "forvaxlingsrisker": [ + "L-stöd/mur", + "Trädgårdskantstöd" + ], + "kameravinklar": [ + "Snett längs kantlinjen", + "Närbild profil" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Plog-/påkörningsskador", + "beskrivning": "Avslagna kanter och rubbade element", + "kalla": "PLATSHÅLLARE — driftdata" + }, + { + "typ": "Dubbdäcksslitage", + "beskrivning": "EN 1340 noterar att tilläggskrav kan behövas vid regelbunden dubbdäckstrafik", + "kalla": "EN 1340 (scope-notis)" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "Vägbana/beläggning (framtida klass)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ANSI Webstore — BS EN 1340:2003 scope (separation/avgränsning/avvattning; dubbdäcksnotis)", + "url": "https://webstore.ansi.org/standards/bsi/bsen13402003", + "hamtad": "2026-07-04" + }, + { + "titel": "UK MCHW Series 1100 — EN 1340/EN 1343-krav för kantsten", + "url": "https://www.standardsforhighways.co.uk/tses/attachments/86a315ce-4061-4659-960b-8b47bc333485?inline=true", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0207", + "posttyp": "objektklass", + "slug": "reflexstolpe", + "namn": { + "sv": "Reflexstolpe/kantstolpe", + "en": "Delineator post" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valtir (Safe-Hit, US flexpost)", + "europeiska plastvarutillverkare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polyeten/plast (flexibel, återfjädrande)", + "stålrör (äldre)" + ], + "montering": "Nedslagen/hylsa i vägren; rörliknande tvärsnitt som viker sig vid påkörning (typkrav)", + "ovrigt": { + "prestanda": "EN 12899-3 anger visuella och fysiska krav inkl. fordonspåkörning; nationella krav kan ange böjnings-/skadeklasser (t.ex. WL1, D1–D3)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "landsväg", + "motorväg", + "arbetszon" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12899-3", + "titel": "Delineator posts and retroreflectors", + "roll": "Kolorimetri, retroreflex, statisk/dynamisk last och påkörning; färg/form styrs nationellt", + "marknad": "EU/UK" + }, + { + "organ": "NCHRP/MASH", + "beteckning": "Kategori 1-enheter", + "titel": "Flexibla delineatorer", + "roll": "US-klassning för flexposts", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "EU-kantstolpe: vit med svart band och reflex (höger/vänster-kodning i vissa länder)", + "US-flexpost: orange/vit/gul flexibel stolpe", + "Snöstör-varianter i nordligt klimat" + ], + "sarskiljande_detaljer": [ + "Reflexens form (rektangel/rund) och färg per land", + "Tvärsnitt (triangel/rör/platt)" + ], + "forvaxlingsrisker": [ + "Pollare (LVX-PRK-0101)", + "Snökäpp", + "Arbetszonskon" + ], + "kameravinklar": [ + "Helbild", + "Närbild reflex" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Påkörning/plogskador", + "beskrivning": "Flexmaterialet finns just för överkörningarna", + "kalla": "EN 12899-3 (påkörningskrav) / tillverkardokumentation" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Eller direkt nedslagen" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "SIS — SS-EN 12899-3:2007 scope (retroreflex, last, påkörning)", + "url": "https://www.sis.se/en/produkter/civil-engineering/road-engineering/road-equipment-and-installations/ssen1289932007/", + "hamtad": "2026-07-04" + }, + { + "titel": "EU TRIS (FI) — kantstolpskrav: rörtvärsnitt som viker sig; klasser WL1/D1–D3 enl. EN 12899-3", + "url": "https://technical-regulation-information-system.ec.europa.eu/mt/notification/24662/text/F/EN", + "hamtad": "2026-07-04" + }, + { + "titel": "Valtir Safe-Hit delineator (NCHRP 350/MASH Cat 1) — återanvänd, våg 3", + "url": "https://www.trafficmanagement.com/products/valtir-energy-absorption", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0208", + "posttyp": "objektklass", + "slug": "broracke", + "namn": { + "sv": "Broräcke", + "en": "Bridge parapet" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Saferoad/Birsta", + "Hill & Smith", + "brobyggarnas systemleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (ståndare + följare)", + "betong (barriärkant)", + "kombination med GC-överliggare" + ], + "montering": "Ståndare förankrade i brokantbalk; högre kapacitetsklasser än väg i övrigt är vanliga" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "broar", + "stödmurar" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1317", + "titel": "Road restraint systems", + "roll": "Kapacitetsklasser (upp till H4b) tillämpas på broräcken; arbetsbredd kritisk vid kant", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH", + "titel": "Bridge rails", + "roll": "TL-klassning av broräcken", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Ståndare bultade i kantbalk", + "Tätare följare/fyllning än vägräcke", + "Ofta kombiräcke med högre GC-del" + ], + "sarskiljande_detaljer": [ + "Infästningsplattans bultbild", + "Övergångssträcka mot vägräcke (styvhetsanpassning)" + ], + "forvaxlingsrisker": [ + "Vägräcke (LVX-TRP-0107)", + "GC-räcke utan kapacitetsklass" + ], + "kameravinklar": [ + "Längs räcket", + "Närbild infästning i kantbalk" + ], + "ocr": { + "typskylt_position": "Systemetikett förekommer", + "falt": [ + "system", + "klass" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Korrosion vid infästning/fogar", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — broinspektionsdata" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "Brokantbalk (framtida klass)", + "beskrivning": "" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-TRP-0107", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "DELTABLOC — EN 1317-klasser (återanvänd, våg 1)", + "url": "https://deltabloc.com/en/about-us/road-safety-norms", + "hamtad": "2026-07-04" + }, + { + "titel": "TxDOT — MASH-krav inkl. broräcken (återanvänd, våg 1)", + "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0209", + "posttyp": "objektklass", + "slug": "bullerskydd", + "namn": { + "sv": "Bullerskydd", + "en": "Noise barrier" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Gramm (UK)", + "Jacksons (UK)", + "Kohlhauer (DE)", + "regionala betong-/träleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "trä (absorberande kassetter)", + "betong", + "aluminium-hålplåt", + "akryl/glas (transparent)", + "gabion/grönskärm" + ], + "montering": "Paneler mellan I-balksstolpar (HEA/HEB) på fundamentrad", + "ovrigt": { + "prestanda": "Akustik deklareras som DLR (isolering, EN 1793-1) och DLα (absorption, EN 1793-2); EN 1793-5/-6 för fältmätning" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "järnväg", + "tätortsleder" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 14388", + "titel": "Road traffic noise reducing devices", + "roll": "Harmoniserad produktstandard (CE/UKCA)", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 1793 (del 1/2/5/6)", + "titel": "Akustisk prestanda", + "roll": "Ljudisolering DLR, absorption DLα, in-situ-metoder", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 1794 (del 1/2)", + "titel": "Icke-akustisk prestanda", + "roll": "Mekanik/stabilitet respektive säkerhet/miljö", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Panelrader mellan synliga I-balksstolpar", + "Absorberande sida (perforerad/ribbad) mot vägen", + "Transparenta sektioner med fågelmarkering" + ], + "sarskiljande_detaljer": [ + "Kassettmaterial och profil", + "Krön (rakt/böjt/T-topp)", + "Grön vall vs byggd skärm" + ], + "forvaxlingsrisker": [ + "Plank/stängsel utan akustikfunktion", + "Vindskydd", + "Broräcke med tät fyllning" + ], + "kameravinklar": [ + "Snett längs skärmen (vägsida)", + "Närbild panel + stolpe" + ], + "ocr": { + "typskylt_position": "CE-/systemetikett förekommer på stolpe/panel", + "falt": [ + "system", + "klass DLR/DLα" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Klotter/UV-åldring (akryl)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Fundamentrad" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "IOA — Navigating the British Standards for road traffic noise barriers (EN 14388, EN 1793-1/2, EN 1794-1/2, EN 14389)", + "url": "https://www.ioa.org.uk/dam/jcr:fc90c2d5-c6eb-4851-9dc8-851531f57cf9/Navigating%20the%20British%20Standards%20for%20road%20traffic%20noise%20barriers%20January-February%202017.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "Air Acoustics — EN 1793 DLα/DLR och relation till EN 14388/EN 1794", + "url": "https://www.air-acoustics.com/understanding-bs-en-1793-what-specifiers-need-to-know", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0210", + "posttyp": "objektklass", + "slug": "rackesterminal", + "namn": { + "sv": "Räckesterminal/ändavslut", + "en": "Guardrail end terminal" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valtir (SoftStop)", + "Road Systems Inc. (SKT, FLEAT)", + "Lindsay" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål" + ], + "montering": "Terminalhuvud + eftergivliga stolpar närmast änden; energiupptagande (extruderande) eller enklare nedförd/utsvängd ände", + "ovrigt": { + "typer": "Tangentiella (SKT-typ) vs flärade (FLEAT-typ); MGS-versioner med skarv mellan stolpar och 31-tumshöjd" + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "AU", + "delar av EU" + ], + "miljotyper": [ + "räckesändar på alla vägtyper" + ] + }, + "standarder": [ + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH (TL-2/TL-3)", + "titel": "Terminaltester 3-30…3-37", + "roll": "Krocktestklassning; FHWA eligibility letters (t.ex. CC-115D för SoftStop)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Karakteristiskt huvud på räckets ände", + "SYTP/CRT-eftergivliga stolpar närmast änden", + "Flärad linje som viker ut från vägen (FLEAT-typ)" + ], + "sarskiljande_detaljer": [ + "Huvudets form skiljer fabrikat", + "Dekal/stansning med modell", + "Nedförd ände utan huvud = äldre/enklare lösning" + ], + "forvaxlingsrisker": [ + "Krockdämpare (crash cushion — egen framtida klass)", + "Vanlig räckesskarv" + ], + "kameravinklar": [ + "Framifrån mot huvudet", + "Längs terminalsträckan" + ], + "ocr": { + "typskylt_position": "Dekal/stansning på huvud", + "falt": [ + "fabrikat", + "modell" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Ej återställd efter påkörning", + "beskrivning": "Deformerad terminal skyddar inte — utbyteskritisk komponent", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "LVX-TRP-0107", + "beskrivning": "Avslutar räckeslinjen" + }, + { + "predikat": "foljer_standard", + "mal": "MASH", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Roadside Safety Pooled Fund — SoftStop (MASH-tester, CC-115D) — återanvänd, våg 3", + "url": "https://www.roadsidepooledfund.org/crash-att/soft-stop/", + "hamtad": "2026-07-04" + }, + { + "titel": "Road Systems Inc — SKT/FLEAT i MGS-utförande — återanvänd, våg 3", + "url": "https://roadsystems.com/nchrp-350-mgs-31-terminals/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0101", + "posttyp": "objektklass", + "slug": "brunnsbetackning", + "namn": { + "sv": "Brunnsbetäckning", + "en": "Manhole cover" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos (Norden)", + "Saint-Gobain PAM", + "EJ (US)", + "Neenah Foundry (US)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Vanliga nominella öppningar ca 600–650 mm (rund); kvadratiska format förekommer", + "material": [ + "segjärn (t.ex. EN-GJS-500-7 enligt EN 1563)", + "gråjärn", + "komposit (EN 124-5)", + "armerad betong (EN 124-4)" + ], + "montering": "Vilar i betäckningsram, fast eller flytande (självjusterande); ram i bruksbädd — svag bruksbädd ger sättning", + "livslangd_ar": "50+ (gjutjärn i normal trafikmiljö)", + "belastningsklass": "EN 124: A15–F900 efter provlast i kN; D400 (400 kN provlast) normal klass i körbana" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "körbana", + "GC-väg", + "grönyta", + "industriyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124:2015 (del 1–6)", + "titel": "Gully tops and manhole tops for vehicular and pedestrian areas", + "roll": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit", + "marknad": "EU/UK" + }, + { + "organ": "Kommunala spec.", + "beteckning": "H-20/HS-20-lastkrav", + "titel": "Vanliga lastkrav i amerikanska kommunala upphandlingar", + "roll": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Rund eller kvadratisk gjutgodsyta i markplan", + "Mönstrad halkskyddsyta", + "Gjuten text: funktion (VA/DAGVATTEN/TELE/EL), kommun- eller gjuterimärke", + "Klassmärkning (t.ex. D400) ofta gjuten och läsbar" + ], + "sarskiljande_detaljer": [ + "Mönstertyp och logotyp identifierar gjuteri/tillverkare", + "Ramtyp: fast eller flytande", + "Gångjärn, låsning och lyfthål varierar per modell", + "Komposit har jämnare yta och saknar rostton" + ], + "forvaxlingsrisker": [ + "Dagvattengaller (LVX-VAT-0102)", + "Ventilbetäckning (mindre diameter)", + "Telebrunnslock (ofta rektangulära, egen märkning)" + ], + "kameravinklar": [ + "Rakt uppifrån, hela betäckningen i bild", + "Närbild på gjuten text och klassmärkning" + ], + "ocr": { + "typskylt_position": "Gjuten text på lockets ovansida", + "falt": [ + "funktion", + "tillverkare/gjuteri", + "belastningsklass", + "ibland årtal" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Klapper/buller", + "beskrivning": "Lock som rör sig i ramen bullrar under trafik; moderna ramar förses med elastisk packning just för att dämpa detta", + "kalla": "Produktdokumentation D400 (elastisk packning mot buller, Galco/Pamline)" + }, + { + "typ": "Sättning", + "beskrivning": "Betäckning som sjunker under beläggningsnivå när bruksbädden under ramen är för svag eller för tunn", + "kalla": "Branschgenomgång D400-installation (manholecoverworld: bruksbäddens hållfasthet)" + }, + { + "typ": "Stöld", + "beskrivning": "Metallstöld av gjutjärnslock; kompositlock saknar skrotvärde och används delvis som stöldskydd", + "kalla": "Branschgenomgång D400-material (manholecoverworld: komposit eliminerar stöldproblemet)" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-VAT-0201", + "beskrivning": "" + }, + { + "predikat": "del_av", + "mal": "LVX-VAT-0202", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0102", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JDP — BS EN 124:2015 klasser A15–F900 och materialdelar 1–6", + "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Galco — D400 segjärnsbetäckning (EN-GJS-500-7/EN 1563, packning mot buller)", + "url": "https://galco.ie/d400-ductile-manhole-cover-ef922123/", + "hamtad": "2026-07-04" + }, + { + "titel": "Manhole Cover World — D400-klassens innebörd, bruksbädd, komposit och stöld", + "url": "https://manholecoverworld.com/what-does-d400-load-class-really-mean-for-city-roads/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.82, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0102", + "posttyp": "objektklass", + "slug": "dagvattengaller", + "namn": { + "sv": "Dagvattengaller", + "en": "Gully grating" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "Saint-Gobain PAM", + "EJ", + "Neenah Foundry", + "ACO (linjeavvattning)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "segjärn", + "gråjärn", + "komposit" + ], + "montering": "I ram över dagvattenbrunn; varianter i rännsten, kantsten (sidointag) och som kupolgaller i grönyta", + "belastningsklass": "EN 124-klasser; C250 vanlig vid rännsten, D400 i körbana" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "rännsten/körbana", + "GC-väg", + "parkering", + "grönyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124:2015", + "titel": "Gully tops and manhole tops", + "roll": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Spaltförsett galler i stället för tätt lock", + "Placering i rännsten/lågpunkt", + "Kantstensintag: öppning i kantstenen med galler under", + "Kupolformat galler i grönytor och diken" + ], + "sarskiljande_detaljer": [ + "Spaltriktning och spaltbredd (tvärgående spalter är cykelsäkrare än längsgående)", + "Gjutmärke och klass i ramen/gallret", + "Linjeavvattningsränna (t.ex. ACO-typ) är långsträckt och egen produktfamilj" + ], + "forvaxlingsrisker": [ + "Brunnsbetäckning (LVX-VAT-0101)", + "Ventilationsgaller för undermarksutrymmen", + "Trädgaller runt stadsträd" + ], + "kameravinklar": [ + "Rakt uppifrån", + "Snett mot kantstensintag" + ], + "ocr": { + "typskylt_position": "Gjuten text på galler eller ram", + "falt": [ + "gjuteri", + "klass", + "funktion" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Igensättning", + "beskrivning": "Löv och sediment blockerar spalterna; funktionsproblem snarare än produktfel", + "kalla": "PLATSHÅLLARE — driftdata" + }, + { + "typ": "Cykelsäkerhet vid längsgående spalter", + "beskrivning": "Smala hjul kan fastna i spalter i färdriktningen; moderna galler utformas tvärställda eller diagonala", + "kalla": "PLATSHÅLLARE — belägg med väghållarriktlinje" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "LVX-VAT-0203", + "beskrivning": "" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EasyMerchant — BS EN 124 grupper/klasser samt gränsdragning mot EN 1433 (rännor)", + "url": "https://www.easymerchant.co.uk/blog/understanding-the-bs-en-124-classification/", + "hamtad": "2026-07-04" + }, + { + "titel": "JDP — BS EN 124:2015 översikt", + "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0103", + "posttyp": "objektklass", + "slug": "brandpost", + "namn": { + "sv": "Brandpost/hydrant", + "en": "Fire hydrant" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Mueller (US)", + "M&H Valve (US)", + "American AVK", + "Hawle (EU)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn/segjärn", + "brons (ventilsäten)", + "epoxibelagda ytor" + ], + "montering": "Torrpost (dry-barrel): ventil under frostdjup, stigarrör dräneras — för klimat med frysrisk. Våtpost (wet-barrel): vattenfylld, endast milt klimat. Underjordisk post med spindel och markeringsskylt vanlig i delar av Europa", + "ovrigt": { + "sakerhet": "Traffic breakaway-fläns som bryts vid påkörning skyddar huvudventil och stigarrör" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "industriområde", + "bostadsområde" + ] + }, + "standarder": [ + { + "organ": "AWWA", + "beteckning": "ANSI/AWWA C502", + "titel": "Dry-Barrel Fire Hydrants", + "roll": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår", + "marknad": "US/CA" + }, + { + "organ": "AWWA", + "beteckning": "ANSI/AWWA C503", + "titel": "Wet-Barrel Fire Hydrants", + "roll": "Våtposter för milt klimat utan frysrisk", + "marknad": "US (varma delstater)" + }, + { + "organ": "CEN", + "beteckning": "EN 14384", + "titel": "Pillar fire hydrants", + "roll": "Minimikrav, provning och märkning för pelarbrandposter", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 14339", + "titel": "Underground fire hydrants", + "roll": "Underjordiska brandposter", + "marknad": "EU/UK" + }, + { + "organ": "NFPA", + "beteckning": "NFPA 1963", + "titel": "Fire Hose Connections", + "roll": "Slanganslutningarnas gängor", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "US: fristående post med kupolformad hätta, typiskt två 2½-tums slangutlopp plus ett större pumperutlopp, femkantig manövermutter", + "EU-pelarpost: slankare röd/gul pelare med lock över kopplingar", + "Underjordisk typ: endast betäckning i mark plus markeringsskylt med avståndsangivelser", + "Färgkodning av kapacitet förekommer (US-praxis, NFPA 291)" + ], + "sarskiljande_detaljer": [ + "Gjuten märkning: tillverkare, ventilstorlek, öppningsriktning, tillverkningsår — föreskriven i AWWA C502 och utmärkt OCR", + "Hättans och utloppens form skiljer modellfamiljer", + "Breakaway-flänsens skarv strax ovan mark" + ], + "forvaxlingsrisker": [ + "Spolpost/vattenutkastare", + "Gasventil-markeringsstolpe", + "Pollare i röd kulör" + ], + "kameravinklar": [ + "Helbild rakt framifrån", + "Närbild på gjuten märkning vid hätta/kropp", + "Underjordisk: skylt + betäckning" + ], + "ocr": { + "typskylt_position": "Gjuten text på kropp/hätta; skylt vid underjordisk post", + "falt": [ + "tillverkare", + "ventilstorlek", + "öppningsriktning", + "årtal", + "skylt: avstånd/dimension" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Frysskada vid fel typ i fel klimat", + "beskrivning": "Uppdelningen torrpost/våtpost finns just för frysrisken; våtpost i frysklimat havererar", + "kalla": "AWWA C502/C503 scope-uppdelning" + }, + { + "typ": "Påkörning", + "beskrivning": "Hanteras konstruktivt med breakaway-fläns som offras vid kollision", + "kalla": "Tillverkardokumentation (breakaway-funktion, SFFECO/AWWA-kompatibla poster)" + }, + { + "typ": "Läckage i spindeltätning", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — servicedata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "Vattenledningsnät/servisventil (Tier 2)", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "AWWA C502/C503, EN 14384/14339", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ANSI/AWWA C502-18 förord (torrpost alla klimat; våtpost C503; märkningskrav)", + "url": "https://webstore.ansi.org/preview-pages/awwa/preview_c502-2018.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "GlobalSpec — EN 14384 pelarbrandposter (scope)", + "url": "https://standards.globalspec.com/topics/fire-hydrant-standards", + "hamtad": "2026-07-04" + }, + { + "titel": "M&H Valve — AWWA C502-spec (märkning: tillverkare, ventilstorlek, öppningsriktning, år)", + "url": "https://www.mh-valve.com/upl/downloads/resources/feature-benefits/929.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0201", + "posttyp": "objektklass", + "slug": "betackningsram", + "namn": { + "sv": "Betäckningsram", + "en": "Cover frame" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "EJ", + "Saint-Gobain PAM", + "Kasi/teleskopleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn/segjärn", + "kompositramar förekommer" + ], + "montering": "Fast (gjuten i bruksbädd), flytande (vilar i beläggningen och följer den) eller teleskopisk (höjdjusterbar mot underdel)", + "ovrigt": { + "innovation": "Självnivellerande ramsystem (t.ex. EJ SELFLEVEL) låter ram/lock flyta med vägytan och minskar sättningsgupp" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "körbana", + "gångyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124", + "titel": "Gully tops and manhole tops", + "roll": "Klassning A15–F900 gäller ram + lock som enhet", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Ramkant och infästning syns runt locket", + "Teleskopram avslöjas av dubbel ringkant", + "Flytande ram saknar synlig gjutfläns i beläggningen" + ], + "sarskiljande_detaljer": [ + "Ramgjutning med tillverkare/klass (fältexempel: ULEFOS UFKNS EN124-2 D400)", + "Boltade lås i ramen" + ], + "forvaxlingsrisker": [ + "Locket i sig (LVX-VAT-0101)", + "Ventilbetäckningens mindre ram (LVX-VAT-0204)" + ], + "kameravinklar": [ + "Rakt uppifrån med ramkant i bild", + "Närbild ramgjutning" + ], + "ocr": { + "typskylt_position": "Gjuten text i ramkant", + "falt": [ + "tillverkare", + "EN 124-klass" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Sättning/nivåskillnad mot beläggning", + "beskrivning": "Traditionella ramar hamnar över/under slityta när vägen ändras — motivet bakom självnivellerande system", + "kalla": "EJ (SELFLEVEL-fallstudien)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-VAT-0101", + "beskrivning": "Ram + lock bildar betäckningen" + }, + { + "predikat": "monteras_pa", + "mal": "LVX-VAT-0202", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JDP — EN 124-klasserna (återanvänd, våg 1)", + "url": "https://www.jdpipes.co.uk/knowledge/civils-explained/en124-explained.html", + "hamtad": "2026-07-04" + }, + { + "titel": "EJ — SELFLEVEL/ramfunktion (återanvänd, våg 3)", + "url": "https://www.ejco.com/am/en/resource-center/case-studies/manhole-cover-case-study", + "hamtad": "2026-07-04" + }, + { + "titel": "Fältexempel ramgjutning Oslo (återanvänd, våg 3)", + "url": "https://manhole.co.il/coverDetails.asp?c=7603", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0202", + "posttyp": "objektklass", + "slug": "nedstigningsbrunn", + "namn": { + "sv": "Nedstigningsbrunn", + "en": "Manhole/chamber" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "prefabbetongindustrin (t.ex. Rinker i US)", + "plastbrunnsleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "prefabricerad armerad betong (ringar, konor, bottendelar)", + "plast (PP/PE)", + "platsmurad (äldre)" + ], + "montering": "Bottendel + stigarringar + kona/toppäll + justerringar under betäckningen", + "ovrigt": { + "us_komponenter": "ASTM C478 omfattar riser sections, cone tops, flat slab tops, grade rings och steg" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "spillvatten", + "dagvatten", + "kombinerat" + ] + }, + "standarder": [ + { + "organ": "ASTM", + "beteckning": "ASTM C478/C478M", + "titel": "Circular precast reinforced concrete manhole sections", + "roll": "Tillverkningskrav för brunnsdelar (sewer/drainage/water works)", + "marknad": "US" + }, + { + "organ": "AASHTO", + "beteckning": "M199", + "titel": "Precast reinforced concrete manhole sections", + "roll": "Parallellkrav i väghållarled", + "marknad": "US" + }, + { + "organ": "CEN", + "beteckning": "EN 1917:2002", + "titel": "Concrete manholes and inspection chambers", + "roll": "EU-krav för prefab brunnsenheter (DN/LN ≤1250; inspektionsbrunn ≤2 m), fogar och täthet", + "marknad": "EU/UK" + }, + { + "organ": "BSI", + "beteckning": "BS 5911-3", + "titel": "Concrete manholes, inspection chambers and soakaways", + "roll": "UK-komplement till EN 1917", + "marknad": "UK" + } + ], + "ai": { + "kannetecken": [ + "Från gatan syns endast betäckningen — klassen identifieras primärt via lock + läge", + "Vid öppet schakt: ringar med gummiringsfogar och excentrisk kona" + ], + "sarskiljande_detaljer": [ + "Prefabstämpel i betongen (tillverkare/datum)", + "Stegjärnens typ" + ], + "forvaxlingsrisker": [ + "Dagvattenbrunn (LVX-VAT-0203)", + "Kabelbrunn (LVX-TEL-0201)" + ], + "kameravinklar": [ + "(Zoomer: endast betäckning — aldrig öppning)" + ], + "ocr": { + "typskylt_position": "Prefabstämpel (endast synlig vid anläggning)", + "falt": [ + "tillverkare", + "datum" + ] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Inläckage i fogar", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — VA-driftdata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-VAT-0201", + "beskrivning": "Kröns av ram + betäckning" + }, + { + "predikat": "foljer_standard", + "mal": "ASTM C478 / AASHTO M199", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ASTM C478 — scope och komponenter (riser/cone/grade rings/steps)", + "url": "https://store.astm.org/c0478_c0478m-22.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Rinker — ASTM C478 / AASHTO M199 produktfamilj", + "url": "https://www.rinkerpipe.com/product_specifications/astm-c478-aashto-m199-precast-reinforced-concrete-manhole-sections/", + "hamtad": "2026-07-04" + }, + { + "titel": "ANSI Webstore — BS EN 1917:2002 scope", + "url": "https://webstore.ansi.org/standards/bsi/bsen19172002", + "hamtad": "2026-07-04" + }, + { + "titel": "GlobalSpec — BS 5911-3 som komplement till EN 1917", + "url": "https://standards.globalspec.com/std/1146029/BS%20EN%201917", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0203", + "posttyp": "objektklass", + "slug": "dagvattenbrunn", + "namn": { + "sv": "Dagvattenbrunn", + "en": "Gully/catch basin" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "prefabbetong- och plastbrunnsleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "betong", + "plast (PP)" + ], + "montering": "Sandfång under galler; kupolsil i grönyta; vattenlås mot spillnät i kombinerade system" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "rännsten", + "lågpunkter", + "grönytor" + ] + }, + "standarder": [ + { + "organ": "ASTM", + "beteckning": "ASTM C913-21", + "titel": "Precast Concrete Water and Wastewater Structures", + "roll": "Scope-notering omfattar catch basins och drop inlets (US)", + "marknad": "US" + }, + { + "organ": "BSI", + "beteckning": "BS 5911-6", + "titel": "Road gullies and gully cover slabs", + "roll": "UK-krav för vägbrunnar", + "marknad": "UK" + } + ], + "ai": { + "kannetecken": [ + "Sitter vid kantsten/lågpunkt", + "Galler (LVX-VAT-0102) istället för tätt lock", + "Kupolsil i grönyta" + ], + "sarskiljande_detaljer": [ + "Sidointag i kantstenen (kerb inlet, US-vanligt)", + "Brunnens placering i rännstenslinjen" + ], + "forvaxlingsrisker": [ + "Nedstigningsbrunn (LVX-VAT-0202)", + "Linjeavvattning/ränna" + ], + "kameravinklar": [ + "Snett mot galler + kantsten" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Igensatt sandfång/galler", + "beskrivning": "Löv och sediment — översvämningsrisk vid skyfall", + "kalla": "PLATSHÅLLARE — driftdata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-VAT-0102", + "beskrivning": "Gallret är intaget" + }, + { + "predikat": "del_av", + "mal": "Dagvattennät (framtida klass)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ASTM — C913-21 (Note 1: catch basins, drop inlets)", + "url": "https://store.astm.org/c0913-21.html", + "hamtad": "2026-07-04" + }, + { + "titel": "GlobalSpec — BS 5911-6 (road gullies)", + "url": "https://standards.globalspec.com/std/1146029/BS%20EN%201917", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0204", + "posttyp": "objektklass", + "slug": "ventilbetackning", + "namn": { + "sv": "Ventil-/spindelbetäckning", + "en": "Valve surface box" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "EJ", + "vonRoll", + "AVK-gruppen" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn", + "komposit" + ], + "montering": "Liten (ofta teleskopisk) betäckning över ventilspindel; nyckelrör ned till avstängningsventilen" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "gångyta", + "tomtgräns" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Liten rund/oval lucka (ofta 10–20 cm)", + "Gjuten funktionstext: VATTEN/AVLOPP/GAS/SV/WATER/GAS", + "Sitter ofta i linje mellan huvudledning och servis" + ], + "sarskiljande_detaljer": [ + "Funktionstexten är primär klassificerare", + "Teleskopöverdelens dubbelring" + ], + "forvaxlingsrisker": [ + "Full brunnsbetäckning (LVX-VAT-0101)", + "Mätarbrunnslock", + "Kabelmarkeringsbricka" + ], + "kameravinklar": [ + "Rakt uppifrån, närbild text" + ], + "ocr": { + "typskylt_position": "Gjuten funktionstext i lock", + "falt": [ + "funktion", + "tillverkare" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Överasfalterad/försvunnen", + "beskrivning": "Ventil oåtkomlig vid akut avstängning", + "kalla": "PLATSHÅLLARE — VA-driftdata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "Avstängningsventil (framtida klass)", + "beskrivning": "Ger åtkomst till spindeln" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + } + ] +} \ No newline at end of file diff --git a/projects/landvex/10-data/lvx-objekt-schema.json b/projects/landvex/10-data/lvx-objekt-schema.json new file mode 100644 index 000000000..eb9bb5466 --- /dev/null +++ b/projects/landvex/10-data/lvx-objekt-schema.json @@ -0,0 +1,225 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://landvex.io/schema/lvx-objekt-schema-v1.json", + "title": "Landvex Infrastructure Object Library — objektpost v1", + "description": "Utbytesformat för objektklasser och produktmodeller. I grafen bryts posten ner till enskilda fakta med källa, konfidens och bitemporal giltighet.", + "type": "object", + "required": ["lvx_id", "posttyp", "namn", "doman", "proveniens"], + "additionalProperties": false, + "properties": { + "lvx_id": { + "type": "string", + "pattern": "^LVX-(TRP|ELN|VAT|TEL|BYG|PRK|JVG|HMN|FLG)-[0-9]{4}$|^LVX-P-[0-9]{7}$", + "description": "Permanent identitet. Objektklass: LVX-{DOMÄN}-NNNN. Produktmodell: LVX-P-NNNNNNN. Ändras aldrig." + }, + "posttyp": { + "enum": ["objektklass", "produktmodell"] + }, + "slug": { + "type": "string", + "pattern": "^[a-z0-9-]+$" + }, + "namn": { + "type": "object", + "required": ["sv", "en"], + "properties": { + "sv": { "type": "string" }, + "en": { "type": "string" } + }, + "additionalProperties": { "type": "string" }, + "description": "Ytterligare språk läggs till som ISO 639-1-nycklar." + }, + "doman": { + "enum": ["TRP", "ELN", "VAT", "TEL", "BYG", "PRK", "JVG", "HMN", "FLG"] + }, + "parent": { + "type": "string", + "description": "LVX-ID för överordnad klass. Obligatorisk för produktmodeller." + }, + "tier": { + "type": "integer", + "minimum": 1, + "maximum": 3 + }, + "identitet": { + "type": "object", + "additionalProperties": false, + "properties": { + "tillverkare": { "type": "string" }, + "exempel_tillverkare": { + "type": "array", + "items": { "type": "string" }, + "description": "På klassnivå: ledande tillverkare per marknad." + }, + "produktfamilj": { "type": "string" }, + "modell": { "type": "string" }, + "revision": { "type": "string" }, + "generation": { "type": "string" }, + "artikelnummer": { "type": "array", "items": { "type": "string" } }, + "produktionsperiod": { + "type": "object", + "properties": { + "fran": { "type": "string" }, + "till": { "type": "string" } + } + }, + "status": { "enum": ["aktiv", "utgangen", "ersatt", "aterkallad", "forbjuden", "okand"] }, + "certifieringar": { "type": "array", "items": { "type": "string" } } + } + }, + "teknik": { + "type": "object", + "additionalProperties": false, + "properties": { + "dimensioner": { "type": "string" }, + "material": { "type": "array", "items": { "type": "string" } }, + "vikt_kg": { "type": "number" }, + "montering": { "type": "string" }, + "livslangd_ar": { "type": "string" }, + "ip_klass": { "type": "string" }, + "belastningsklass": { "type": "string" }, + "temperaturomrade": { "type": "string" }, + "korrosionsklass": { "type": "string" }, + "ovrigt": { "type": "object" } + } + }, + "historik": { + "type": "object", + "additionalProperties": false, + "properties": { + "introducerad": { "type": "string" }, + "utfasad": { "type": "string" }, + "revisioner": { "type": "array", "items": { "type": "string" } }, + "ersatter": { "type": "array", "items": { "type": "string" } }, + "ersatts_av": { "type": "array", "items": { "type": "string" } } + } + }, + "geografi": { + "type": "object", + "additionalProperties": false, + "properties": { + "lander": { "type": "array", "items": { "type": "string" } }, + "regioner": { "type": "array", "items": { "type": "string" } }, + "miljotyper": { + "type": "array", + "items": { "type": "string" }, + "description": "T.ex. motorväg, stadsgata, landsbygd, park, industri, hamn, flygplats." + } + } + }, + "standarder": { + "type": "array", + "items": { + "type": "object", + "required": ["beteckning"], + "additionalProperties": false, + "properties": { + "organ": { "type": "string" }, + "beteckning": { "type": "string" }, + "titel": { "type": "string" }, + "roll": { "type": "string", "description": "Vad standarden styr för klassen." }, + "marknad": { "type": "string" } + } + }, + "description": "Endast referens: beteckning och metadata. Aldrig standardinnehåll." + }, + "ai": { + "type": "object", + "additionalProperties": false, + "properties": { + "kannetecken": { "type": "array", "items": { "type": "string" } }, + "sarskiljande_detaljer": { "type": "array", "items": { "type": "string" } }, + "forvaxlingsrisker": { "type": "array", "items": { "type": "string" } }, + "kameravinklar": { "type": "array", "items": { "type": "string" } }, + "ocr": { + "type": "object", + "properties": { + "typskylt_position": { "type": "string" }, + "falt": { "type": "array", "items": { "type": "string" } } + } + }, + "konfidenskrav": { "type": "number", "minimum": 0, "maximum": 1 } + } + }, + "problem": { + "type": "array", + "items": { + "type": "object", + "required": ["typ", "beskrivning", "kalla"], + "additionalProperties": false, + "properties": { + "typ": { "type": "string" }, + "beskrivning": { "type": "string" }, + "typisk_alder_ar": { "type": "string" }, + "kalla": { + "type": "string", + "description": "Obligatorisk. Återkallelse, servicebulletin eller verifierad fältobservation." + } + } + } + }, + "dokumentation": { + "type": "array", + "items": { + "type": "object", + "required": ["typ", "titel"], + "additionalProperties": false, + "properties": { + "typ": { + "enum": ["datablad", "manual", "serviceanvisning", "katalog", "standardreferens", "myndighetsdokument", "patent", "sakerhetsblad", "aterkallelse", "ovrigt"] + }, + "titel": { "type": "string" }, + "utgivare": { "type": "string" }, + "url": { "type": "string" }, + "datum": { "type": "string" }, + "licensstatus": { + "enum": ["public_domain", "oppen_licens", "tillverkarpublik", "referens_endast", "okand"] + } + } + }, + "description": "Metadata och länkar — aldrig kopierat innehåll." + }, + "relationer": { + "type": "array", + "items": { + "type": "object", + "required": ["predikat", "mal"], + "additionalProperties": false, + "properties": { + "predikat": { + "enum": ["monteras_pa", "star_pa", "ansluts_med", "matas_fran", "ingar_i", "del_av", "ersatter", "ersatts_av", "kompatibel_med", "forvaxlas_med", "tillverkas_av", "foljer_standard", "variant_av"] + }, + "mal": { + "type": "string", + "description": "LVX-ID när det finns, annars beskrivande platshållare tills ID tilldelats." + }, + "beskrivning": { "type": "string" } + } + } + }, + "proveniens": { + "type": "object", + "required": ["skapad", "verifieringsniva"], + "additionalProperties": false, + "properties": { + "skapad": { "type": "string" }, + "uppdaterad": { "type": "string" }, + "kallor": { + "type": "array", + "items": { + "type": "object", + "properties": { + "titel": { "type": "string" }, + "url": { "type": "string" }, + "hamtad": { "type": "string" } + } + } + }, + "konfidens": { "type": "number", "minimum": 0, "maximum": 1 }, + "verifieringsniva": { + "enum": ["obekraftad", "kallbelagd", "faltverifierad", "tillverkarbekraftad"] + } + } + } + } +} diff --git a/projects/landvex/10-data/lvx-produktmodeller-auto.json b/projects/landvex/10-data/lvx-produktmodeller-auto.json new file mode 100644 index 000000000..26fe76103 --- /dev/null +++ b/projects/landvex/10-data/lvx-produktmodeller-auto.json @@ -0,0 +1,60 @@ +{ + "beskrivning": "Modellposter mintade av ingest-pipelinen.", + "genererad": "2026-07-04", + "poster": [ + { + "posttyp": "produktmodell", + "slug": "ej-selflevel", + "namn": { + "sv": "EJ SELFLEVEL betäckningsram", + "en": "EJ SELFLEVEL access frame" + }, + "doman": "VAT", + "parent": "LVX-VAT-0201", + "identitet": { + "tillverkare": "EJ", + "produktfamilj": "SELFLEVEL", + "modell": "SELFLEVEL", + "status": "aktiv" + }, + "teknik": { + "material": [ + "segjärn" + ], + "ovrigt": { + "funktion": "Självnivellerande ram som vilar i beläggningen och följer vägytans rörelser — minskar sättningsgupp och omjusteringar" + } + }, + "ai": { + "kannetecken": [ + "Flytande ramkrans utan fast gjutfläns", + "EJ-märkning i gods" + ], + "forvaxlingsrisker": [ + "Konventionell fast ram" + ], + "ocr": { + "typskylt_position": "Gjuten text i ram/lock", + "falt": [ + "EJ", + "SELFLEVEL" + ] + } + }, + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EJ — SELFLEVEL-fallstudie", + "url": "https://www.ejco.com/am/en/resource-center/case-studies/manhole-cover-case-study", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + }, + "lvx_id": "LVX-P-0000027" + } + ] +} \ No newline at end of file diff --git a/projects/landvex/10-data/lvx-produktmodeller-vag2.json b/projects/landvex/10-data/lvx-produktmodeller-vag2.json new file mode 100644 index 000000000..e52a5c65e --- /dev/null +++ b/projects/landvex/10-data/lvx-produktmodeller-vag2.json @@ -0,0 +1,216 @@ +{ + "beskrivning": "Landvex IOL — produktmodellskiktet, våg 2. De första 17 LVX-P-posterna för topp 5-klasserna: armaturer, vägmärkesfolier, brunnsbetäckningar, kabelskåp, brandposter. ID:n är permanenta och delas ut sekventiellt.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-P-0000001", + "posttyp": "produktmodell", + "slug": "ge-evolve-ermc", + "namn": { "sv": "GE Evolve LED Medium Cobrahead (ERMC)", "en": "GE Evolve LED Medium Cobrahead (ERMC)" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "GE Lighting / Current", "produktfamilj": "Evolve LED Roadway", "modell": "ERMC", "status": "ersatt", "produktionsperiod": { "fran": "ca 2009", "till": "kartläggs" } }, + "teknik": { "material": ["gjuten aluminium"], "montering": "4-bults slipfitter, 1,25/2 tum rör", "ovrigt": { "utmarkelse": "Best-in-Class, DOE Next Generation Luminaires 2009" } }, + "historik": { "ersatts_av": ["LVX-P-0000002"] }, + "ai": { "kannetecken": ["Cobrahead-silhuett som efterliknar HID-föregångarna", "Kylflänsdesign integrerad i huset — vattenavrinning minskar smutsansamling"], "ocr": { "typskylt_position": "Etikett i/på hus", "falt": ["modellkod ERMC", "wattal", "datum"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "GE pressmeddelande 2013 (ERMC Best-in-Class 2009)", "url": "https://www.ge.com/news/press-releases/ges-evolve%E2%84%A2-led-scalable-cobrahead-fixture-wins-best-class-roadway-lighting-award", "hamtad": "2026-07-04" } ], "konfidens": 0.75, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000002", + "posttyp": "produktmodell", + "slug": "ge-evolve-ers-scalable", + "namn": { "sv": "GE Evolve LED Scalable Cobrahead (ERS1–ERS4)", "en": "GE Evolve LED Scalable Cobrahead (ERS1–ERS4)" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "GE Lighting / Current", "produktfamilj": "Evolve LED Roadway", "modell": "ERS1, ERS2, ERS3, ERS4", "status": "ersatt", "produktionsperiod": { "fran": "2012", "till": "utgången (discontinued)" } }, + "teknik": { "ovrigt": { "prestanda": "4000K/5700K, ca 3 000–21 900 lm; upp till 25 % lägre effekt än första generationens LED-cobrahead", "utmarkelse": "Best-in-Class, NGL 2012 (ER2S)" } }, + "historik": { "ersatter": ["LVX-P-0000001"], "ersatts_av": ["LVX-P-0000003"] }, + "ai": { "kannetecken": ["Bibehållen cobrahead-estetik i fyra storlekar", "Robust kylfläns utan fläkt"], "ocr": { "typskylt_position": "Etikett i/på hus", "falt": ["modellkod ERS1–4", "wattal", "datum"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "GE pressmeddelande 2012 (lansering, fyra storlekar, prestanda)", "url": "https://www.ge.com/news/press-releases/ge-roadway-lighting-puts-energy-savings-fast-lane", "hamtad": "2026-07-04" }, { "titel": "Current by GE — ERS discontinued, ersatt av ERL", "url": "https://products.currentbyge.com/outdoor-lighting/street-roadway/evolve-led-roadway-fixtures-first-gen", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000003", + "posttyp": "produktmodell", + "slug": "ge-evolve-erl", + "namn": { "sv": "GE Evolve LED Roadway ERL-serien (ERL1/ERLH/ERL2)", "en": "GE Evolve LED Roadway ERL series" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "Current (GE)", "produktfamilj": "Evolve LED Roadway", "modell": "ERL1, ERLH, ERL2", "status": "aktiv" }, + "teknik": { "montering": "Slipfitter ±5° justering, 1,25/2 tum rör", "temperaturomrade": "-40 °C till +45/50 °C beroende på storlek", "ovrigt": { "livslangd": "100 000 h designlivslängd", "optik": "Reflektoroptik, distributionstyper II–V" } }, + "historik": { "ersatter": ["LVX-P-0000002"] }, + "ai": { "kannetecken": ["Modern Evolve-profil, ersättaren i fält där ERS fasas ut", "Distributionskod (A1/B3/C3 m.fl.) i beställningsnumret"], "ocr": { "typskylt_position": "Etikett i/på hus", "falt": ["modellkod ERL", "wattal", "spänning", "datum"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Current by GE — ERL ersätter ERS (produktsida)", "url": "https://products.currentbyge.com/outdoor-lighting/street-roadway/evolve-led-roadway-fixtures-first-gen", "hamtad": "2026-07-04" }, { "titel": "GE Evolve ERL1-ERLH-ERL2 datablad (100 000 h, temperaturområden, optik)", "url": "https://assets.usesi.com/product-media/brochures/USESI_784135_brochure.pdf", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000004", + "posttyp": "produktmodell", + "slug": "ael-autobahn-serien", + "namn": { "sv": "AEL Autobahn-serien (ATB Micro/ATB0/ATB2 + ATBL/M/S/X)", "en": "AEL Autobahn series" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "American Electric Lighting (Acuity Brands)", "produktfamilj": "Autobahn", "modell": "ATB Micro, ATB0, ATB2 (rektilinjär form); ATBL, ATBM, ATBS, ATBX (klassisk cobraform)", "status": "aktiv", "certifieringar": ["CSA (US/CA)", "ANSI C136.2/.10/.14/.15/.31/.37"] }, + "teknik": { "temperaturomrade": "-40 °C till +40 °C", "ovrigt": { "livslangd": "LED-motor >100 000 h (L70, 25 °C)", "ersattning": "50–1 000 W HID-cobrahead-ersättare; 'Power Door' för verktygslös service; XVOLT-skydd på ATB0/ATB2" } }, + "ai": { "kannetecken": ["Sju modeller i två formfaktorer: slät rektilinjär (ATB2/ATB0/Micro) vs traditionell cobra (ATBL/M/S/X)", "Mycket vanlig som HPS-ersättare i nordamerikanska nät"], "ocr": { "typskylt_position": "Etikett enligt ANSI C136.15", "falt": ["modellkod ATB", "wattal", "lamptyp"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "AEL/Acuity — Autobahn-familjen (7 modeller, två formfaktorer, HID-ersättning)", "url": "https://americanelectriclighting.acuitybrands.com/products/family/autobahn-led-cobra-head", "hamtad": "2026-07-04" }, { "titel": "ATB2 specifikation (ANSI C136-lista, -40/+40 °C, 100 000 h)", "url": "https://www.acuitybrands.com/products/detail/122047/american-electric-lighting/autobahn-atb2/autobahn-led-cobra-head", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000005", + "posttyp": "produktmodell", + "slug": "schreder-ampera", + "namn": { "sv": "Schréder Ampera (Mini/Midi/Maxi)", "en": "Schréder Ampera" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "Schréder", "produktfamilj": "Ampera", "modell": "Ampera Mini, Midi, Maxi", "status": "aktiv (EVO-generation lanserad)", "produktionsperiod": { "fran": "ca 2014", "till": "" } }, + "teknik": { "material": ["högtrycksgjuten aluminium"], "montering": "Tvådelad konstruktion: underdel med universalfäste och vinkeljustering, överdel med drivdon och optik", "ovrigt": { "styrning": "7-polig NEMA- eller Zhaga-sockel som tillval; LensoFlex-optik; ThermiX upp till Ta 50 °C" } }, + "historik": { "ersatts_av": ["LVX-P-0000006"] }, + "ai": { "kannetecken": ["Slank tvådelad EU-profil i tre storlekar", "Mini ersätter typiskt 70 W HID, Midi/Maxi 150/250 W", "NGL-priser 2014 (Midi/Maxi)"], "ocr": { "typskylt_position": "Etikett i hus", "falt": ["Ampera-storlek", "konfigurationskod", "wattal"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Schréder — Ampera produktsida (tvådelad design, NEMA/Zhaga, ThermiX)", "url": "https://www.schreder.com/en/products/ampera-led-street-lighting", "hamtad": "2026-07-04" }, { "titel": "PRNewswire 2014 — NGL-priser Ampera Midi/Maxi", "url": "https://www.prnewswire.com/news-releases/schreder-lighting-receives-two-next-generation-luminaires-awards-recognized-for-excellence-during-solid-state-lighting-design-competition-249915741.html", "hamtad": "2026-07-04" } ], "konfidens": 0.78, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000006", + "posttyp": "produktmodell", + "slug": "schreder-ampera-evo", + "namn": { "sv": "Schréder Ampera EVO", "en": "Schréder Ampera EVO" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "Schréder", "produktfamilj": "Ampera", "modell": "Ampera EVO", "status": "aktiv" }, + "teknik": { "montering": "IzyFix-universalfäste: topp- eller sidomontage på spigot Ø32/42–48/60/76 mm, 110° tiltområde, omställbar utan demontering", "ovrigt": { "styrning": "7-polig NEMA- eller Zhaga-sockel; LensoFlex/MidFlex-optik; återvinningsbara material" } }, + "historik": { "ersatter": ["LVX-P-0000005"] }, + "ai": { "kannetecken": ["Ampera-silhuett med IzyFix-fäste — omställbarheten är särskiljaren mot första generationen"], "ocr": { "typskylt_position": "Etikett i hus", "falt": ["EVO-kod", "wattal"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Schréder — Ampera EVO produktsida (IzyFix, spigotmått, optikmotorer)", "url": "https://www.schreder.com/en/products/ampera-evo-led-street-lighting", "hamtad": "2026-07-04" } ], "konfidens": 0.78, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000007", + "posttyp": "produktmodell", + "slug": "signify-philips-luma-gen2", + "namn": { "sv": "Philips Luma gen2 (BGP701)", "en": "Philips Luma gen2 (BGP701)" }, + "doman": "TRP", + "parent": "LVX-TRP-0102", + "identitet": { "tillverkare": "Signify (varumärke Philips)", "produktfamilj": "Luma", "modell": "Luma gen2 / BGP701", "revision": "gen2 (bevarar gen1-designen)", "status": "aktiv" }, + "teknik": { "material": ["gjuten aluminium"], "montering": "Topp Ø60–76 mm eller sidoinstick Ø42–60 mm", "ip_klass": "IP66; IK09–IK10", "ovrigt": { "styrning": "DALI + SystemReady; GearFlex utbytbar elmodul", "service": "Service tag: QR-baserad unik identifiering med dokumentation på plats" } }, + "ai": { "kannetecken": ["Skandinavisk-slät EU-profil; gen2 känns igen på Service tag-QR", "QR-koden gör varje individ unikt identifierbar — direkt koppling klass→modell→individ"], "ocr": { "typskylt_position": "Service tag (QR) + typskylt", "falt": ["QR/Service tag", "ordernummer", "lm/W-data"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Signify — Philips Luma gen2 familjesida (BGP701, Service tag, GearFlex, montagemått)", "url": "https://www.signify.com/global/prof/outdoor-luminaires/road-and-street/philips-luma-gen2/LP_CF_BGP701_EU/family", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000008", + "posttyp": "produktmodell", + "slug": "3m-diamond-grade-dg3-4000", + "namn": { "sv": "3M Diamond Grade DG3, serie 4000", "en": "3M Diamond Grade DG3 Series 4000" }, + "doman": "TRP", + "parent": "LVX-TRP-0103", + "identitet": { "tillverkare": "3M", "produktfamilj": "Diamond Grade", "modell": "Serie 4000 (t.ex. 4090 vit; 4000UDS för digitaltryck)", "status": "aktiv" }, + "teknik": { "ovrigt": { "optik": "Fullkubs-mikroprismatisk retroreflex, överträffar ASTM D4956 Typ XI; upp till 12 års garantikontext", "anvandning": "Premiumfolie för vägmärken och delineatorer; standard- och fluorescerande kulörer" } }, + "ai": { "kannetecken": ["Diamantkedjemönster (primary groove lines) synligt i närbild", "Mycket hög retroreflex även vid ogynnsamma vinklar (överliggande skyltar)"], "ocr": { "typskylt_position": "Foliekod på skyltens baksidesetikett", "falt": ["serie/kod (t.ex. 4090)", "tillverkningsdatum"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "3M — DG3 Series 4000 produktsida (fullkub, Typ XI, 4000UDS)", "url": "https://www.3m.com/3M/en_US/p/d/b00050505/", "hamtad": "2026-07-04" }, { "titel": "3M produktbulletin 4000 (kulörkoder, ASTM D4956, orientering)", "url": "https://multimedia.3m.com/mws/media/349914O/pb-4000-february-2024-pdf.pdf", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000009", + "posttyp": "produktmodell", + "slug": "3m-hip-3930", + "namn": { "sv": "3M High Intensity Prismatic (HIP), serie 3930", "en": "3M High Intensity Prismatic Series 3930" }, + "doman": "TRP", + "parent": "LVX-TRP-0103", + "identitet": { "tillverkare": "3M", "produktfamilj": "High Intensity Prismatic", "modell": "Serie 3930", "status": "aktiv" }, + "teknik": { "ovrigt": { "optik": "Icke-metalliserad mikroprismatisk folie för beständiga vägmärken, arbetszoner och delineatorer; tryckbar (latex/screen), kombineras med ElectroCut 1170" } }, + "ai": { "kannetecken": ["Mellanklassfolie under DG3 — vanligaste nivån för standardmärken i många väghållarprogram", "Prismamönstret grövre än DG3-fullkub i närbild"], "ocr": { "typskylt_position": "Foliekod på baksidesetikett", "falt": ["serie 3930", "datum"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Produktbeskrivning 3M HIP 3930 (icke-metalliserad mikroprismatisk, användningsområden)", "url": "https://www.americansignandsignal.com/products/3m-4000-yd", "hamtad": "2026-07-04" } ], "konfidens": 0.7, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000010", + "posttyp": "produktmodell", + "slug": "pam-pamrex", + "namn": { "sv": "Saint-Gobain PAM PAMREX", "en": "Saint-Gobain PAM PAMREX" }, + "doman": "VAT", + "parent": "LVX-VAT-0101", + "identitet": { "tillverkare": "Saint-Gobain PAM", "produktfamilj": "PAMREX", "modell": "PAMREX 600/700/800 (fri öppning 610/700 mm m.fl.)", "status": "aktiv", "produktionsperiod": { "fran": "1987", "till": "" } }, + "teknik": { "material": ["segjärn"], "belastningsklass": "EN 124 D400", "ovrigt": { "funktion": "Gångjärnsförsedd: öppnar till 130°, låser vid 90°; elastomerring dämpar buller; tätad manöverficka; stöldskyddslås som tillval" } }, + "ai": { "kannetecken": ["Gångjärnslock som fälls upp som en lucka — omisskännlig i öppet läge", "PAMREX-namnet gjutet i locket", "Elastomerring synlig i ramkanten"], "forvaxlingsrisker": ["Andra gångjärnsbetäckningar (Ulefos m.fl.)"], "ocr": { "typskylt_position": "Gjuten text på lock", "falt": ["PAMREX", "klass D400", "funktion"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "ArchiExpo/Saint-Gobain — PAMREX (sedan 1987, 130°/90°, D400, varianter)", "url": "https://www.archiexpo.com/prod/saint-gobain-canalisation/product-706-1537602.html", "hamtad": "2026-07-04" }, { "titel": "Saint-Gobain PAM katalog Municipal Castings (elastomerring, manöverficka, stöldskyddslås, EN 124)", "url": "https://pdf.archiexpo.com/pdf/saint-gobain-canalisation/municipal-castings/706-334669.html", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000011", + "posttyp": "produktmodell", + "slug": "neenah-r-1642", + "namn": { "sv": "Neenah R-1640/R-1642-serien", "en": "Neenah R-1640/R-1642 series" }, + "doman": "VAT", + "parent": "LVX-VAT-0101", + "identitet": { "tillverkare": "Neenah Foundry (Charlotte Pipe, Infrastructure Division)", "produktfamilj": "R-1640-serien, ram + tätt lock", "modell": "R-1642-A (26 tum), R-1642-B, R-1642-HV, R-1642-LM (LiftMate-gångjärn) m.fl.", "status": "aktiv" }, + "teknik": { "material": ["gjutjärn (grå-/segjärn)"], "belastningsklass": "H-20/H-25 och flygplatsklass förekommer", "ovrigt": { "markning": "Kommunala typritningar föreskriver ofta R-1642-B med dolda lyfthål och gjuten text SANITARY SEWER/STORM SEWER" } }, + "ai": { "kannetecken": ["Klassisk amerikansk kommunal betäckning — katalognumret återfinns i stadens typritningar", "Gjuten funktionstext (SANITARY/STORM) på locket"], "ocr": { "typskylt_position": "Gjuten text på lock", "falt": ["NEENAH", "R-nummer ibland", "funktion"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Neenah katalogblad R-1640-serien", "url": "https://www.trenchdrainsupply.com/prodimages/submittals/NFCat/Neenah%20Catalog%20Page%2042.pdf", "hamtad": "2026-07-04" }, { "titel": "City of Eagan typritning E234 (R-1642-B, SANITARY/STORM-gjutning)", "url": "https://cityofeagan.com/images/PublicWorks/DetailPlates/E234.pdf", "hamtad": "2026-07-04" }, { "titel": "Neenah Foundry — manhole covers (lastklasser, Charlotte Pipe-ägarskap)", "url": "https://neenahfoundry.com/products/infrastructure/manhole-frames-covers/", "hamtad": "2026-07-04" } ], "konfidens": 0.78, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000012", + "posttyp": "produktmodell", + "slug": "abb-kabeldon-cdc", + "namn": { "sv": "ABB Kabeldon CDC-serien", "en": "ABB Kabeldon CDC series" }, + "doman": "ELN", + "parent": "LVX-ELN-0101", + "identitet": { "tillverkare": "ABB (Kabeldon, Alingsås)", "produktfamilj": "Kabeldon", "modell": "CDC 040/060/420 m.fl.; CDCM (med ovandel/mätning); CDCP (stolpmontage)", "status": "aktiv" }, + "teknik": { "material": ["varmförzinkad stålplåt"], "ip_klass": "IP34D (SS-EN 60529)", "montering": "Integrerat markfundament, justerbara ben; testad enligt SS-EN 61439-5 inkl. arktiskt klimat", "ovrigt": { "detaljer": "Trekantslås CDC-LT; präglad lucka för märkning; hållare för kabelskåpskort; CDC 420 med skensystem 400 A" } }, + "ai": { "kannetecken": ["Nordiskt standardutseende: varmförzinkad grå låda med präglad lucka", "CDCM-ovandel = mätarskåpsanvändning", "CDCP på stolpe"], "ocr": { "typskylt_position": "Prägling/dekal på lucka", "falt": ["nätbolag", "skåpnummer"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "ABB — Kabeldon CDC-serien (varmförzinkade kapslingar)", "url": "https://new.abb.com/low-voltage/sv/produkter/kabelskap_cewe_kabeldon/kabeldon-varmforzinkade-kapslingsserie-djup-220-mm", "hamtad": "2026-07-04" }, { "titel": "Onninen — CDC 420 (400 A, SS-EN 61439-5, fundament, trekantslås)", "url": "https://www.onninen.se/abb-kabeldon-kabelskap-cdc-420/p/AQO708", "hamtad": "2026-07-04" } ], "konfidens": 0.78, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000013", + "posttyp": "produktmodell", + "slug": "mueller-super-centurion", + "namn": { "sv": "Mueller Super Centurion", "en": "Mueller Super Centurion" }, + "doman": "VAT", + "parent": "LVX-VAT-0103", + "identitet": { "tillverkare": "Mueller Co.", "produktfamilj": "Centurion", "modell": "Super Centurion", "status": "aktiv", "certifieringar": ["UL/FM (enligt tillverkarens produktkategori)"] }, + "teknik": { "montering": "Torrpost (dry-barrel) enligt AWWA C502-kategori", "ovrigt": { "position": "En av de vanligaste hydrantfamiljerna i USA; modellprofil och hättform särskiljer mot konkurrenter" } }, + "ai": { "kannetecken": ["Mueller-namn och modell gjutet i kropp/hätta (AWWA C502 kräver gjuten märkning med tillverkare, ventilstorlek, öppningsriktning, år)"], "ocr": { "typskylt_position": "Gjuten text kropp/hätta", "falt": ["MUELLER", "ventilstorlek", "år", "öppningsriktning"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Mueller — Super Centurion produktsida (UL/FM-hydranter)", "url": "https://www.muellercompany.com/fire-protection/ulfm-hydrants/super-centurionr/", "hamtad": "2026-07-04" }, { "titel": "AWWA C502-18 (märkningskrav för torrposter)", "url": "https://webstore.ansi.org/preview-pages/awwa/preview_c502-2018.pdf", "hamtad": "2026-07-04" } ], "konfidens": 0.7, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000014", + "posttyp": "produktmodell", + "slug": "mh-style-929", + "namn": { "sv": "M&H Valve Style 929", "en": "M&H Valve Style 929" }, + "doman": "VAT", + "parent": "LVX-VAT-0103", + "identitet": { "tillverkare": "M&H Valve (McWane)", "produktfamilj": "M&H brandposter", "modell": "Style 929", "status": "aktiv" }, + "teknik": { "montering": "Torrpost enligt AWWA C502", "ovrigt": { "markning": "Specen anger gjuten märkning: tillverkare, ventilstorlek, öppningsriktning och tillverkningsår" } }, + "ai": { "kannetecken": ["M&H-gjutmärkning; två slangutlopp + pumperutlopp i standardkonfiguration"], "ocr": { "typskylt_position": "Gjuten text", "falt": ["M&H", "storlek", "år"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "M&H Valve — Style 929 AWWA C502-spec (features/benefits, märkning)", "url": "https://www.mh-valve.com/upl/downloads/resources/feature-benefits/929.pdf", "hamtad": "2026-07-04" } ], "konfidens": 0.72, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000015", + "posttyp": "produktmodell", + "slug": "american-avk-series-27", + "namn": { "sv": "American AVK Series 27", "en": "American AVK Series 27" }, + "doman": "VAT", + "parent": "LVX-VAT-0103", + "identitet": { "tillverkare": "American AVK (AVK Group)", "produktfamilj": "AVK-hydranter", "modell": "Series 27", "status": "aktiv" }, + "teknik": { "montering": "Torrpost (dry-barrel)" }, + "ai": { "kannetecken": ["AVK-märkning gjuten; AVK-gruppens hydranter förekommer på båda sidor Atlanten (dansk koncern)"], "ocr": { "typskylt_position": "Gjuten text", "falt": ["AVK", "serie", "år"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "American AVK — Series 27 Dry Barrel Fire Hydrants", "url": "https://www.americanavk.com/en-us/products/series-27-dry-barrel-fire-hydrants", "hamtad": "2026-07-04" } ], "konfidens": 0.7, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000016", + "posttyp": "produktmodell", + "slug": "american-darling-b-84-b", + "namn": { "sv": "American-Darling B-84-B (AMERICAN Flow Control)", "en": "American-Darling B-84-B" }, + "doman": "VAT", + "parent": "LVX-VAT-0103", + "identitet": { "tillverkare": "AMERICAN Flow Control", "produktfamilj": "American-Darling (arv från Darling Pump & Mfg, grundat 1888)", "modell": "B-84-B-5 (5¼ tum ventilöppning)", "status": "aktiv", "produktionsperiod": { "fran": "1984", "till": "" }, "certifieringar": ["UL/FM (i tillämpliga konfigurationer)", "NSF/ANSI/CAN 61 + 372"] }, + "teknik": { "material": ["segjärnsbarrel", "helbronssäte och dräneringsring", "rostfria fästelement under mark"], "montering": "Torrpost AWWA C502; 250 psig arbetstryck, 500 psig provtryck; traffic-feature med brytbar stångkoppling och 360° vridbar nossektion", "ovrigt": { "yta": "E-coat-primer + polyuretantopplack på övre barrel", "digitalt": "Levereras med 2D-streckkod för inläsning av tillverkningsdata och position till GIS" } }, + "historik": { "introducerad": "1984" }, + "ai": { "kannetecken": ["Tillverkad i över 40 år — en av de mest spridda amerikanska hydranterna", "2D-streckkod på nyare exemplar = direkt maskinläsbar identitet", "Gjuten märkning enligt AWWA C502"], "ocr": { "typskylt_position": "Gjuten text + 2D-kod", "falt": ["AMERICAN-DARLING", "storlek", "år", "2D-kod"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "AMERICAN — B-84-B-5 produktsida (introducerad 1984, 250/500 psig, UL/FM, NSF, 2D-kod, traffic-feature)", "url": "https://american-usa.com/products/valves-and-hydrants/fire-hydrants/american-darling-b-84-b-5", "hamtad": "2026-07-04" }, { "titel": "AMERICAN — Darling-arvet sedan 1888 (industrivariant B-84-B)", "url": "https://american-usa.com/products/valves-and-hydrants/industrial-applications/american-darling-b-84-bb-5-industrial-fire-hydrant", "hamtad": "2026-07-04" } ], "konfidens": 0.82, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000017", + "posttyp": "produktmodell", + "slug": "waterous-pacer", + "namn": { "sv": "Waterous Pacer (AMERICAN Flow Control)", "en": "Waterous Pacer" }, + "doman": "VAT", + "parent": "LVX-VAT-0103", + "identitet": { "tillverkare": "AMERICAN Flow Control (varumärke Waterous)", "produktfamilj": "Waterous", "modell": "Pacer 5¼ tum", "status": "aktiv" }, + "teknik": { "montering": "Torrpost; systermodell till American-Darling i AMERICANs hydrantprogram" }, + "ai": { "kannetecken": ["Waterous-gjutmärkning; profil skiljer sig från Darling-serien"], "ocr": { "typskylt_position": "Gjuten text", "falt": ["WATEROUS", "storlek", "år"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "AMERICAN — hydrantprogram (American-Darling & Waterous Pacer)", "url": "https://american-usa.com/products/valves-and-hydrants/fire-hydrants", "hamtad": "2026-07-04" } ], "konfidens": 0.68, "verifieringsniva": "kallbelagd" } + } + ] +} diff --git a/projects/landvex/10-data/lvx-produktmodeller-vag3.json b/projects/landvex/10-data/lvx-produktmodeller-vag3.json new file mode 100644 index 000000000..bc084d88b --- /dev/null +++ b/projects/landvex/10-data/lvx-produktmodeller-vag3.json @@ -0,0 +1,118 @@ +{ + "beskrivning": "Landvex IOL — produktmodellskiktet, våg 3. Nio nya LVX-P-poster (0000018–0000026). Bibliotekstotal: 26 modeller.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-P-0000018", + "posttyp": "produktmodell", + "slug": "ulefos-gatugjutgods", + "namn": { "sv": "Ulefos gatugjutgods (t.ex. A6-betäckning)", "en": "Ulefos street castings" }, + "doman": "VAT", + "parent": "LVX-VAT-0101", + "identitet": { "tillverkare": "Ulefos (Ulefos Jernværk, Norge; Niemisen Valimo, Finland)", "produktfamilj": "Betäckningar och galler", "modell": "T.ex. A6 fast betäckning (öppning 640/600, nyckelhål, rotationsstopp) och A6-galler", "status": "aktiv" }, + "teknik": { "material": ["gjutjärn/segjärn"], "belastningsklass": "EN 124 (fältexempel: ramgjutning 'ULEFOS UFKNS EN124-2 D400')" }, + "historik": { "introducerad": "Företaget grundat 1657 genom kungligt privilegiebrev — ett av Europas äldsta tillverkande företag; dominerande i norska gatunät" }, + "ai": { "kannetecken": ["ULEFOS gjutet i lock eller ram", "Nordisk standardestetik; kommunvapen vanliga på norska lock", "Nyckelhål och rotationsstopp på A6-typen"], "ocr": { "typskylt_position": "Gjuten text lock/ram", "falt": ["ULEFOS", "EN 124-klass", "funktion/kommun"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Ahlsell — Ulefos A6 betäckning/galler (640/600, nyckelhål, rotationsstopp)", "url": "https://www.ahlsell.se/en/category/infra--sewer/cast-iron-covers/fixed-covers/ulefos", "hamtad": "2026-07-04" }, { "titel": "Manhole miscellany — Ulefos Jernværk grundat 1657, Nordens huvudproducent", "url": "https://manholemiscellany.blogspot.com/2007/04/norway.html", "hamtad": "2026-07-04" }, { "titel": "Fältexempel Oslo: ULEFOS UFKNS EN124-2 D400 i ramgjutning", "url": "https://manhole.co.il/coverDetails.asp?c=7603", "hamtad": "2026-07-04" } ], "konfidens": 0.75, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000019", + "posttyp": "produktmodell", + "slug": "ej-ergo", + "namn": { "sv": "EJ ERGO / ERGO XL", "en": "EJ ERGO / ERGO XL access assembly" }, + "doman": "VAT", + "parent": "LVX-VAT-0101", + "identitet": { "tillverkare": "EJ (f.d. East Jordan Iron Works)", "produktfamilj": "ERGO", "modell": "ERGO (fri öppning 24/28 tum), ERGO XL (30/36 tum)", "status": "aktiv" }, + "teknik": { "material": ["segjärn (85 % återvunnet innehåll)"], "ovrigt": { "funktion": "Gångjärnslock som öppnar till 120° med säkerhetsstopp vid 90°; camlås vars nyckel bara kan tas ur i låst läge; XL med fjäderstrut som sänker lyftkraften till under 50 lb; MPIC-verktygsspår; kundlogotyp kan gjutas in" } }, + "ai": { "kannetecken": ["Gångjärn + camlås-försänkning synlig i locket", "Ofta kommun-/verksbadge gjuten (t.ex. stadslogga)", "Strut-fäste skymtar i XL-varianten"], "forvaxlingsrisker": ["PAM PAMREX (LVX-P-0000010) — annan gångjärnslösning"], "ocr": { "typskylt_position": "Gjuten text på lock", "falt": ["EJ", "kommun/verk", "funktion"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "EJ — ERGO access assembly (24/28 tum, 120°/90°, camlås)", "url": "https://www.ejco.com/am/en/resource-center/product-briefs/product-ergo-access-assembly", "hamtad": "2026-07-04" }, { "titel": "EJ — ERGO XL fallstudie Pearland (30 tum, fjäderstrut <50 lb, stöldskydd)", "url": "https://www.ejco.com/am/en/resource-center/case-studies/ergo-xl-case-study", "hamtad": "2026-07-04" } ], "konfidens": 0.78, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000020", + "posttyp": "produktmodell", + "slug": "mgs-midwest-guardrail-system", + "namn": { "sv": "MGS — Midwest Guardrail System (generiskt)", "en": "Midwest Guardrail System (MGS)" }, + "doman": "TRP", + "parent": "LVX-TRP-0107", + "identitet": { "tillverkare": "Generiskt/icke-proprietärt — alla räckestillverkare kan leverera", "produktfamilj": "Strong-post W-balk", "modell": "MGS 31-tum", "status": "aktiv", "produktionsperiod": { "fran": "utvecklat 2001–2002 (Midwest States Pooled Fund / MwRSF, Nebraska)", "till": "" } }, + "teknik": { "dimensioner": "Överkant balk 31 tum (mot äldre 27¾); 12-tums distansklossar; stolpavstånd 6 fot 3 tum; W6x9 stålstolpe eller trä", "ovrigt": { "sarskiljare": "Balkskarvarna flyttade från stolparna till mittspann — synlig systemsignatur; MASH TL-3-testat (FHWA-brev B212)" } }, + "historik": { "ersatter": ["Äldre G4/27¾-tums strong-post W-balk"] }, + "ai": { "kannetecken": ["Skarvöverlapp MELLAN stolpar (inte på stolpe) = MGS", "Högre balkläge än äldre installationer", "12-tums kloss ger större avstånd balk–stolpe"], "ocr": { "typskylt_position": "—", "falt": [] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Roadside Safety Pooled Fund — 31-inch MGS (icke-proprietärt, MASH 3-10/3-11, B212)", "url": "https://www.roadsidepooledfund.org/longitudinal-barrier/midwest-guardrail-system/", "hamtad": "2026-07-04" }, { "titel": "Gregory Highway — MGS vs äldre W-balk (31 tum, generiskt utan patent, 2001–2002)", "url": "https://www.gregorycorp.com/gregory-highway/highway-guardrail/mgs-guardrail-system", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000021", + "posttyp": "produktmodell", + "slug": "valtir-softstop", + "namn": { "sv": "Valtir SoftStop-terminal", "en": "Valtir SoftStop end terminal" }, + "doman": "TRP", + "parent": "LVX-TRP-0210", + "identitet": { "tillverkare": "Valtir (f.d. Trinity Highway Products)", "produktfamilj": "MASH-terminaler", "modell": "SoftStop", "status": "aktiv", "certifieringar": ["MASH 2016 TL-3 (FHWA-brev CC-115D); användbar TL-1/2/3"] }, + "teknik": { "material": ["helstål"], "ovrigt": { "funktion": "Tangentiell, ensidig, energiupptagande och grindande terminal för 31-tums W-balksystem; huvudet plattar ut och extruderar balken vid frontalpåkörning; smalt huvud minskar plog-/klippskador" } }, + "ai": { "kannetecken": ["Karakteristiskt terminalhuvud i räckesänden", "SYTP-eftergivliga stolpar närmast änden", "Modellnamn ofta på dekal/stansning på huvudet"], "forvaxlingsrisker": ["Andra fabrikats terminalhuvuden (SKT/FLEAT m.fl.)", "Nedförd/utsvängd ände utan huvud"], "ocr": { "typskylt_position": "Dekal/stansning på huvud", "falt": ["fabrikat", "modell"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Valtir — SoftStop System (funktion, MASH TL-1/2/3)", "url": "https://www.valtir.com/product/softstop-system/", "hamtad": "2026-07-04" }, { "titel": "Roadside Safety Pooled Fund — SoftStop (CC-115D, gating, proprietär, Valtir f.d. Trinity)", "url": "https://www.roadsidepooledfund.org/crash-att/soft-stop/", "hamtad": "2026-07-04" } ], "konfidens": 0.78, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000022", + "posttyp": "produktmodell", + "slug": "econolite-blue-series", + "namn": { "sv": "Econolite Blue Series NEMA-skåp", "en": "Econolite Blue Series NEMA cabinets" }, + "doman": "TRP", + "parent": "LVX-TRP-0105", + "identitet": { "tillverkare": "Econolite", "produktfamilj": "Blue Series / NEMA Traffic Control Cabinets", "modell": "T.ex. TS2 Type 2 P44", "status": "aktiv" }, + "teknik": { "material": ["aluminiumplåt"], "ovrigt": { "kompatibilitet": "NEMA TS 2-arkitektur; skåpfamiljer med polislucka och detektorrack" } }, + "ai": { "kannetecken": ["Econolite-märkning på dörr", "NEMA-skåpsform med ventilationsgaller/filter nertill", "Polislucka i dörr"], "ocr": { "typskylt_position": "Etikett dörr + väghållarens korsnings-ID", "falt": ["fabrikat", "typ", "korsnings-ID"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Econolite — NEMA Traffic Control Cabinets (produktfamilj)", "url": "https://www.econolite.com/products/traffic-control-cabinets/nema-traffic-control-cabinets/", "hamtad": "2026-07-04" }, { "titel": "Econolite Blue Series TS2 Type 2 P44 datablad", "url": "https://www.econolite.com/wp-content/uploads/2023/09/BSC-TS2_Type2-P44_datasheet-2023_digital.pdf", "hamtad": "2026-07-04" } ], "konfidens": 0.72, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000023", + "posttyp": "produktmodell", + "slug": "kempower-satellite", + "namn": { "sv": "Kempower Satellite (distribuerat system)", "en": "Kempower Satellite charging system" }, + "doman": "ELN", + "parent": "LVX-ELN-0104", + "identitet": { "tillverkare": "Kempower (FI)", "produktfamilj": "Satellite + Power Unit", "modell": "Satellite V2; Power Unit upp till 600 kW; Liquid-Cooled Satellite ≥400 kW", "status": "aktiv" }, + "teknik": { "dimensioner": "Satellitstolpe 300 × 1738 × 300 mm", "ip_klass": "IP54, IK10", "ovrigt": { "arkitektur": "Distribuerad: central Power Unit (50 kW-moduler, upp till 12) matar upp till 8 satelliter på upp till 80 m avstånd; dynamisk effektdelning; 7-tums pekskärm, fjäderavlastad kabel; CCS2/CHAdeMO (EU), CCS1/CHAdeMO/NACS (NA); OCPP 1.6j/2.0.1" } }, + "ai": { "kannetecken": ["Smal satellitstolpe UTAN stort kraftskåp vid stolpen — kraftkabinettet står separat", "Fjäderarm för kabeln upptill", "Kempower-branding + QR på skärm"], "forvaxlingsrisker": ["All-in-one-laddare (Alpitronic/ABB) — bredare skåp med kraftelektronik i stolpen"], "ocr": { "typskylt_position": "Front: skärm-QR, stations-ID, energimätarfönster", "falt": ["operatör", "stations-ID", "effekt"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Kempower — Satellite (arkitektur, 600 kW PU, 8 uttag, kontakttyper)", "url": "https://kempower.com/solution/kempower-satellite/", "hamtad": "2026-07-04" }, { "titel": "Kempower Satellite V2 datablad (mått, IP54/IK10, OCPP, 80 m)", "url": "https://spklu.co/wp-content/uploads/2024/03/Kempower-Satellite-V2-DC.pdf", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000024", + "posttyp": "produktmodell", + "slug": "alpitronic-hypercharger", + "namn": { "sv": "Alpitronic Hypercharger (HYC-serien)", "en": "Alpitronic Hypercharger HYC series" }, + "doman": "ELN", + "parent": "LVX-ELN-0104", + "identitet": { "tillverkare": "Alpitronic (IT)", "produktfamilj": "Hypercharger", "modell": "HYC50/200/300/400 (all-in-one) samt HYC1000 (distribuerad, 1 MW, 8 uttag, SiC Gen2)", "status": "aktiv" }, + "teknik": { "dimensioner": "HYC400: 2185 × 732 × 663 mm", "ovrigt": { "generationer": "HYC400 Series 2 (2026): 22-tums frontpekskärm lägre placerad, betalterminal under skärmen, DIN 18040-3-tillgänglighet; 150–1000 V; verkningsgrad upp till 97,5 %", "utbredning": "Utrullad av bl.a. Ionna, Mercedes-Benz HPC och BP Pulse; brandas ofta med helfoliering och reflexränder" } }, + "ai": { "kannetecken": ["Hög, slät monolit med kabel på var sida", "Reflexränder + operatörsfoliering", "Series 2: stor liggande pekskärm mitt på fronten"], "forvaxlingsrisker": ["Kempower Satellite (smalare, separat kraftenhet)", "Tesla V4 (egen silhuett, NACS)"], "ocr": { "typskylt_position": "Front: skärm, betalterminal, stations-ID", "falt": ["operatör", "stations-ID", "effekt kW"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Alpitronic — Hypercharger-serien 50–1000 kW", "url": "https://www.alpitronic.it/en/hypercharger/", "hamtad": "2026-07-04" }, { "titel": "electrive — HYC400 Series 2 (22-tums pekskärm, DIN 18040-3, mått, 97,5 %)", "url": "https://www.electrive.com/2026/03/04/alpitronic-unveils-new-generation-of-the-hypercharger-hyc400/", "hamtad": "2026-07-04" }, { "titel": "HYC1000 — distribuerad 1 MW, 8 uttag, SiC Gen2; nät: Ionna/MB/BP Pulse", "url": "https://evchargingstations.com/chargingnews/alpitronics-new-hyc1000-megawatt-charger/", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000025", + "posttyp": "produktmodell", + "slug": "tesla-supercharger-v3", + "namn": { "sv": "Tesla Supercharger V3", "en": "Tesla Supercharger V3" }, + "doman": "ELN", + "parent": "LVX-ELN-0104", + "identitet": { "tillverkare": "Tesla", "produktfamilj": "Supercharger", "modell": "V3", "status": "ersatt", "produktionsperiod": { "fran": "2019", "till": "utfasas till förmån för V4" } }, + "teknik": { "ovrigt": { "prestanda": "Upp till 250 kW per fordon; kabinett max ca 500 V, fyra uttag per kabinett; vit/röd klassisk silhuett utan skärm/kortläsare" } }, + "historik": { "ersatts_av": ["LVX-P-0000026"] }, + "ai": { "kannetecken": ["Kort vit pelare, röd detalj, kort kabel", "Ingen skärm eller kortläsare = V3-generation", "Hybrider (V4-stolpe på V3-kabinett, 'V3.5') levererar V3-nivåer"], "ocr": { "typskylt_position": "Stolpnummer/dekal", "falt": ["stall-nummer", "site"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Jämförelse V3/V4 (250 kW, 500 V, 4 uttag per kabinett; V3.5-hybrider)", "url": "https://evchargingstations.com/chargingnews/first-true-tesla-v4-supercharging-station-launched-500-kw/", "hamtad": "2026-07-04" } ], "konfidens": 0.75, "verifieringsniva": "kallbelagd" } + }, + { + "lvx_id": "LVX-P-0000026", + "posttyp": "produktmodell", + "slug": "tesla-supercharger-v4", + "namn": { "sv": "Tesla Supercharger V4", "en": "Tesla Supercharger V4" }, + "doman": "ELN", + "parent": "LVX-ELN-0104", + "identitet": { "tillverkare": "Tesla", "produktfamilj": "Supercharger", "modell": "V4 (dispenser 2023; 'true V4' med 1,2 MW-kabinett från sep 2025; Folding Unit prefab 2026)", "status": "aktiv" }, + "teknik": { "ovrigt": { "prestanda": "Dispensermärkning 1000 V/615 A; med V4-kabinett upp till 500 kW per uttag och 1,2 MW totalt över åtta uttag (>96 % verkningsgrad, dispenser upp till 100 m från kabinett)", "detaljer": "Längre kabel (ca 10 fot, immersionskyld), kortläsare + display för icke-Tesla, NACS-kontakt (adapter för CCS1); 25 000:e V4-dispensern producerad 2025" } }, + "historik": { "ersatter": ["LVX-P-0000025"] }, + "ai": { "kannetecken": ["Högre, slankare svartvit stolpe än V3", "Kortläsare + liten display = V4", "Separat vitt kraftkabinett vid 'true V4'-siter"], "ocr": { "typskylt_position": "Dekal med spänning/ström + stall-nummer", "falt": ["1000 V/615 A-märkning", "stall-nummer", "site"] } }, + "proveniens": { "skapad": "2026-07-04", "kallor": [ { "titel": "Första 'true V4'-stationen (Redwood City 2025: 1,2 MW, 500 kW, 1000 V, 8 uttag)", "url": "https://evchargingstations.com/chargingnews/first-true-tesla-v4-supercharging-station-launched-500-kw/", "hamtad": "2026-07-04" }, { "titel": "25 000:e V4-dispensern; V4-designens skillnader mot V3 (kabel, kortläsare, 1000 V)", "url": "https://evchargingstations.com/chargingnews/tesla-celebrates-25000th-v4-supercharging-dispenser/", "hamtad": "2026-07-04" }, { "titel": "InsideEVs — V4 i fält: 10-fots kabel, Magic Dock, dekal 1000 V/615 A", "url": "https://insideevs.com/news/697139/tesla-v4-supercharger-atlanta-georgia/", "hamtad": "2026-07-04" } ], "konfidens": 0.8, "verifieringsniva": "kallbelagd" } + } + ] +} diff --git a/projects/landvex/10-data/lvx-taxonomi-tier1.json b/projects/landvex/10-data/lvx-taxonomi-tier1.json new file mode 100644 index 000000000..2a12d442a --- /dev/null +++ b/projects/landvex/10-data/lvx-taxonomi-tier1.json @@ -0,0 +1,202 @@ +{ + "version": "1.0", + "genererad": "2026-07-04", + "beskrivning": "Landvex Infrastructure Object Library — taxonomiseed. Nio domäner och de 20 första objektklasserna (Tier 1). ID:n är permanenta.", + "domaner": [ + { "kod": "TRP", "namn_sv": "Transport/väg", "namn_en": "Road transport" }, + { "kod": "ELN", "namn_sv": "Elnät", "namn_en": "Electrical grid" }, + { "kod": "VAT", "namn_sv": "Vatten & avlopp", "namn_en": "Water & sewer" }, + { "kod": "TEL", "namn_sv": "Telekom", "namn_en": "Telecom" }, + { "kod": "BYG", "namn_sv": "Byggnad", "namn_en": "Buildings" }, + { "kod": "PRK", "namn_sv": "Park & offentlig miljö", "namn_en": "Parks & public realm" }, + { "kod": "JVG", "namn_sv": "Järnväg", "namn_en": "Rail" }, + { "kod": "HMN", "namn_sv": "Hamn", "namn_en": "Ports" }, + { "kod": "FLG", "namn_sv": "Flygplats", "namn_en": "Airports" } + ], + "objektklasser": [ + { + "lvx_id": "LVX-TRP-0101", + "slug": "belysningsstolpe", + "namn_sv": "Belysningsstolpe", + "namn_en": "Lighting column", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["EN 40 (EU)", "AASHTO LTS (US)"] + }, + { + "lvx_id": "LVX-TRP-0102", + "slug": "vagbelysningsarmatur", + "namn_sv": "Vägbelysningsarmatur", + "namn_en": "Road lighting luminaire", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["EN 60598 (EU)", "EN 13201 (EU)", "UL 1598 (US)"] + }, + { + "lvx_id": "LVX-TRP-0103", + "slug": "vagmarke", + "namn_sv": "Vägmärke", + "namn_en": "Road sign", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["MUTCD (US)", "TSRGD (UK)", "nationella kataloger (EU)", "AS 1742 (AU)"] + }, + { + "lvx_id": "LVX-TRP-0104", + "slug": "trafiksignal-signalhuvud", + "namn_sv": "Trafiksignal, signalhuvud", + "namn_en": "Traffic signal head", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["EN 12368 (EU)", "ITE-specifikationer (US)"] + }, + { + "lvx_id": "LVX-TRP-0105", + "slug": "trafiksignalskap", + "namn_sv": "Trafiksignalskåp/styrapparat", + "namn_en": "Traffic signal controller cabinet", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["NEMA TS-serien (US)"] + }, + { + "lvx_id": "LVX-TRP-0106", + "slug": "vagmarkering", + "namn_sv": "Vägmarkering", + "namn_en": "Road marking", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["EN 1436 (EU)", "MUTCD (US)"] + }, + { + "lvx_id": "LVX-TRP-0107", + "slug": "vagracke", + "namn_sv": "Vägräcke", + "namn_en": "Road safety barrier", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": ["EN 1317 (EU)", "MASH (US)"] + }, + { + "lvx_id": "LVX-TRP-0108", + "slug": "hallplatsvaderskydd", + "namn_sv": "Hållplatsväderskydd", + "namn_en": "Bus shelter", + "doman": "TRP", + "tier": 1, + "nyckelstandarder_exempel": [], + "kommentar": "Identifieras främst via tillverkar- och kommunprogram." + }, + { + "lvx_id": "LVX-VAT-0101", + "slug": "brunnsbetackning", + "namn_sv": "Brunnsbetäckning", + "namn_en": "Manhole cover", + "doman": "VAT", + "tier": 1, + "nyckelstandarder_exempel": ["EN 124 (EU/UK)", "kommunala lastkrav (US)"] + }, + { + "lvx_id": "LVX-VAT-0102", + "slug": "dagvattengaller", + "namn_sv": "Dagvattengaller", + "namn_en": "Gully grating", + "doman": "VAT", + "tier": 1, + "nyckelstandarder_exempel": ["EN 124 (EU/UK)"] + }, + { + "lvx_id": "LVX-VAT-0103", + "slug": "brandpost", + "namn_sv": "Brandpost/hydrant", + "namn_en": "Fire hydrant", + "doman": "VAT", + "tier": 1, + "nyckelstandarder_exempel": ["AWWA C502/C503 (US)", "nationella typer (EU)"] + }, + { + "lvx_id": "LVX-ELN-0101", + "slug": "kabelskap-lagspanning", + "namn_sv": "Kabelskåp, lågspänning", + "namn_en": "LV distribution cabinet", + "doman": "ELN", + "tier": 1, + "nyckelstandarder_exempel": [], + "kommentar": "Styrs av nätbolagsnormer per land — kartläggs i protokollets steg 1." + }, + { + "lvx_id": "LVX-ELN-0102", + "slug": "elstolpe", + "namn_sv": "Elstolpe", + "namn_en": "Utility pole", + "doman": "ELN", + "tier": 1, + "nyckelstandarder_exempel": ["ANSI O5.1 (trä, US)"] + }, + { + "lvx_id": "LVX-ELN-0103", + "slug": "natstation-transformator", + "namn_sv": "Nätstation/transformatorstation", + "namn_en": "Distribution substation / padmount transformer", + "doman": "ELN", + "tier": 1, + "nyckelstandarder_exempel": [], + "kommentar": "IEC/IEEE-serier kartläggs i protokollets steg 1." + }, + { + "lvx_id": "LVX-ELN-0104", + "slug": "laddstation", + "namn_sv": "Laddstation", + "namn_en": "EV charging station", + "doman": "ELN", + "tier": 1, + "nyckelstandarder_exempel": ["IEC 61851", "kontaktstandarder (CCS, J1772)"] + }, + { + "lvx_id": "LVX-TEL-0101", + "slug": "telekomskap", + "namn_sv": "Telekomskåp (fiber/koppar)", + "namn_en": "Telecom street cabinet", + "doman": "TEL", + "tier": 1, + "nyckelstandarder_exempel": [], + "kommentar": "Operatörsspecifika program — kartläggs per marknad." + }, + { + "lvx_id": "LVX-TEL-0102", + "slug": "mobilmast-antennplats", + "namn_sv": "Mobilmast/antennplats", + "namn_en": "Cell tower / antenna site", + "doman": "TEL", + "tier": 1, + "nyckelstandarder_exempel": [] + }, + { + "lvx_id": "LVX-PRK-0101", + "slug": "pollare", + "namn_sv": "Pollare", + "namn_en": "Bollard", + "doman": "PRK", + "tier": 1, + "nyckelstandarder_exempel": ["PAS 68 / IWA 14 (säkerhetspollare)"] + }, + { + "lvx_id": "LVX-PRK-0102", + "slug": "papperskorg", + "namn_sv": "Papperskorg", + "namn_en": "Litter bin", + "doman": "PRK", + "tier": 1, + "nyckelstandarder_exempel": [] + }, + { + "lvx_id": "LVX-PRK-0103", + "slug": "cykelstall", + "namn_sv": "Cykelställ", + "namn_en": "Cycle stand", + "doman": "PRK", + "tier": 1, + "nyckelstandarder_exempel": [] + } + ] +} diff --git a/projects/landvex/10-data/lvx-taxonomi-tier2.json b/projects/landvex/10-data/lvx-taxonomi-tier2.json new file mode 100644 index 000000000..404321905 --- /dev/null +++ b/projects/landvex/10-data/lvx-taxonomi-tier2.json @@ -0,0 +1,38 @@ +{ + "version": "1.0", + "genererad": "2026-07-04", + "beskrivning": "Landvex IOL — Tier 2-taxonomi. 17 nya objektklasser med permanenta ID:n. Relationskartan mappar platshållartexter i Tier 1-posterna till de nya ID:na — kör den som datastädning.", + "objektklasser": [ + { "lvx_id": "LVX-TRP-0201", "slug": "skyltstolpe", "namn_sv": "Skyltstolpe", "namn_en": "Sign post", "doman": "TRP", "tier": 2, "kommentar": "U-profil (US) vs rör (EU); eftergivlighet EN 12767 kartläggs" }, + { "lvx_id": "LVX-TRP-0202", "slug": "signalstolpe-mastarm", "namn_sv": "Signalstolpe & mastarm", "namn_en": "Signal pole & mast arm", "doman": "TRP", "tier": 2 }, + { "lvx_id": "LVX-TRP-0203", "slug": "fundament", "namn_sv": "Fundament (stolpe/mast/skåp)", "namn_en": "Foundation", "doman": "TRP", "tier": 2, "kommentar": "Prefab betong/stål-jordskruv; syns vid fotplattan" }, + { "lvx_id": "LVX-TRP-0204", "slug": "styrnod-belysning", "namn_sv": "Styrnod belysning (NEMA/Zhaga)", "namn_en": "Lighting control node", "doman": "TRP", "tier": 2, "kommentar": "Fotocell eller smart nod i standardsockel" }, + { "lvx_id": "LVX-TRP-0205", "slug": "vagportal", "namn_sv": "Vägportal/skyltbrygga", "namn_en": "Sign gantry", "doman": "TRP", "tier": 2 }, + { "lvx_id": "LVX-TRP-0206", "slug": "kantsten", "namn_sv": "Kantsten", "namn_en": "Kerb/curb", "doman": "TRP", "tier": 2 }, + { "lvx_id": "LVX-TRP-0207", "slug": "reflexstolpe", "namn_sv": "Reflexstolpe/kantstolpe", "namn_en": "Delineator post", "doman": "TRP", "tier": 2 }, + { "lvx_id": "LVX-TRP-0208", "slug": "broracke", "namn_sv": "Broräcke", "namn_en": "Bridge parapet", "doman": "TRP", "tier": 2 }, + { "lvx_id": "LVX-TRP-0209", "slug": "bullerskydd", "namn_sv": "Bullerskydd", "namn_en": "Noise barrier", "doman": "TRP", "tier": 2 }, + { "lvx_id": "LVX-TRP-0210", "slug": "rackesterminal", "namn_sv": "Räckesterminal/ändavslut", "namn_en": "Guardrail end terminal", "doman": "TRP", "tier": 2, "kommentar": "Egen klass — energiupptagande terminaler (t.ex. SoftStop) är egna produktfamiljer med egna krocktest" }, + { "lvx_id": "LVX-VAT-0201", "slug": "betackningsram", "namn_sv": "Betäckningsram", "namn_en": "Cover frame", "doman": "VAT", "tier": 2, "kommentar": "Fast, flytande eller teleskopisk" }, + { "lvx_id": "LVX-VAT-0202", "slug": "nedstigningsbrunn", "namn_sv": "Nedstigningsbrunn", "namn_en": "Manhole/chamber", "doman": "VAT", "tier": 2 }, + { "lvx_id": "LVX-VAT-0203", "slug": "dagvattenbrunn", "namn_sv": "Dagvattenbrunn", "namn_en": "Gully/catch basin", "doman": "VAT", "tier": 2 }, + { "lvx_id": "LVX-VAT-0204", "slug": "ventilbetackning", "namn_sv": "Ventil-/spindelbetäckning", "namn_en": "Valve surface box", "doman": "VAT", "tier": 2, "kommentar": "Mindre diameter — vanlig förväxling med LVX-VAT-0101" }, + { "lvx_id": "LVX-ELN-0201", "slug": "matarskap", "namn_sv": "Mätarskåp", "namn_en": "Meter cabinet", "doman": "ELN", "tier": 2, "kommentar": "Jfr Kabeldon CDCM-varianten" }, + { "lvx_id": "LVX-TEL-0201", "slug": "kabelbrunn", "namn_sv": "Kabelbrunn/kanalisation", "namn_en": "Cable chamber/duct access", "doman": "TEL", "tier": 2 }, + { "lvx_id": "LVX-PRK-0201", "slug": "parkbank", "namn_sv": "Parkbänk", "namn_en": "Public bench", "doman": "PRK", "tier": 2 } + ], + "relationskarta": [ + { "platshallare": "Betäckningsram (Tier 2 — LVX-ID tilldelas)", "nytt_id": "LVX-VAT-0201" }, + { "platshallare": "Nedstigningsbrunn (Tier 2 — LVX-ID tilldelas)", "nytt_id": "LVX-VAT-0202" }, + { "platshallare": "Dagvattenbrunn (Tier 2)", "nytt_id": "LVX-VAT-0203" }, + { "platshallare": "Skyltstolpe/portal (Tier 2 — LVX-ID tilldelas)", "nytt_id": "LVX-TRP-0201 (stolpe) / LVX-TRP-0205 (portal)" }, + { "platshallare": "Signalstolpe/mastarm (Tier 2)", "nytt_id": "LVX-TRP-0202" }, + { "platshallare": "Stolpfundament (Tier 2 — LVX-ID tilldelas)", "nytt_id": "LVX-TRP-0203" }, + { "platshallare": "Fundament (Tier 2)", "nytt_id": "LVX-TRP-0203" }, + { "platshallare": "Fundament/hylsa (Tier 2)", "nytt_id": "LVX-TRP-0203" }, + { "platshallare": "Styrnod (NEMA/Zhaga) — Tier 2", "nytt_id": "LVX-TRP-0204" }, + { "platshallare": "Räckesstolpe/fundament (Tier 2)", "nytt_id": "LVX-TRP-0203" }, + { "platshallare": "Ventilbetäckning (mindre diameter)", "nytt_id": "LVX-VAT-0204" }, + { "platshallare": "Kanalisation/kabelbrunn (Tier 2)", "nytt_id": "LVX-TEL-0201" } + ] +} diff --git a/projects/landvex/10-data/lvx-zoomer-bounties-vag1.json b/projects/landvex/10-data/lvx-zoomer-bounties-vag1.json new file mode 100644 index 000000000..8f857f314 --- /dev/null +++ b/projects/landvex/10-data/lvx-zoomer-bounties-vag1.json @@ -0,0 +1,30 @@ +{ + "version": "1.0", + "genererad": "2026-07-04", + "program": "QUIXZOOM Zoomer-bounties — våg 1", + "beskrivning": "16 bounties härledda ur Tier 1-posternas OCR- och kameravinkelfält. Varje godkänt bidrag fältverifierar en post och blir träningsdata. Säkerhetsreglerna i lvx-zoomer-bountyprogram.md är obligatoriska för samtliga.", + "sakerhetsregler_kort": [ + "Fota alltid från trottoar, gångyta eller annan plats där du får vistas", + "Beträd aldrig körbana, spårområde eller inhägnat/låst område", + "Öppna, rör eller kliv aldrig på objekt", + "Inga personer, ansikten eller registreringsskyltar i bild" + ], + "bounties": [ + { "bounty_id": "BNTY-0001", "titel": "Armaturens typskylt/etikett", "mal_lvx": "LVX-TRP-0102", "foton": ["etikett/typskylt läsbar (zoom från marken)", "armaturens sida med ev. logga"], "ocr_falt": ["tillverkare", "modell", "wattal", "datum"], "poang": 20, "prioritet": "hög", "sakerhet": "Endast om etiketten är läsbar från marken med zoom — klättra aldrig" }, + { "bounty_id": "BNTY-0002", "titel": "Sockeltyp på armatur: NEMA eller Zhaga", "mal_lvx": "LVX-TRP-0102", "foton": ["armaturens ovansida/undersida med sockel/nod synlig (telefoto)"], "ocr_falt": [], "poang": 10, "prioritet": "medel", "sakerhet": "Telefoto från marken" }, + { "bounty_id": "BNTY-0003", "titel": "Lila gatubelysning (purpling)", "mal_lvx": "LVX-TRP-0102", "foton": ["kvällsbild som visar violett ljus", "dagbild på samma armatur", "stolpnummer"], "ocr_falt": ["stolpnummer"], "poang": 30, "prioritet": "hög", "sakerhet": "Standardregler", "kommentar": "Fältbelägger det källbelagda klassproblemet fosfor-delaminering" }, + { "bounty_id": "BNTY-0004", "titel": "Stolpnummer/ägardekal belysningsstolpe", "mal_lvx": "LVX-TRP-0101", "foton": ["helbild", "närbild dekal/lucka"], "ocr_falt": ["ägare", "stolpnummer"], "poang": 8, "prioritet": "medel" }, + { "bounty_id": "BNTY-0005", "titel": "Elstolpens birthmark", "mal_lvx": "LVX-ELN-0102", "foton": ["närbild på inbränd märkning i ögonhöjd", "helbild"], "ocr_falt": ["år", "längd/klass", "träslag", "impregneringsmedel"], "poang": 20, "prioritet": "hög", "sakerhet": "Rör aldrig stag eller utrustning", "kommentar": "Bonus +10 p om medlet är penta — daterar generationen mot utfasningen" }, + { "bounty_id": "BNTY-0006", "titel": "Betäckningens gjutmärke och klass", "mal_lvx": "LVX-VAT-0101", "foton": ["rakt uppifrån hela betäckningen", "närbild gjuttext"], "ocr_falt": ["gjuteri/tillverkare", "funktion", "EN 124-klass", "ev. årtal"], "poang": 10, "prioritet": "hög", "sakerhet": "Endast betäckningar i gångyta — aldrig i körbana" }, + { "bounty_id": "BNTY-0007", "titel": "Gångjärnsbetäckning identifierad (PAMREX/ERGO m.fl.)", "mal_lvx": "LVX-VAT-0101", "foton": ["ovanifrån med gångjärn och ev. camlås synliga (stängd!)"], "ocr_falt": ["fabrikatnamn i gjutgods"], "poang": 12, "prioritet": "medel", "sakerhet": "Locket ska vara stängt — öppna aldrig" }, + { "bounty_id": "BNTY-0008", "titel": "Hydrantens gjutmärkning", "mal_lvx": "LVX-VAT-0103", "foton": ["helbild framifrån", "närbild gjuten text vid hätta/kropp"], "ocr_falt": ["tillverkare", "ventilstorlek", "år", "öppningsriktning"], "poang": 15, "prioritet": "hög", "kommentar": "Bonus +10 p för 2D-streckkod (nyare American-Darling)" }, + { "bounty_id": "BNTY-0009", "titel": "Laddstation: kontakttyp + ID + effekt", "mal_lvx": "LVX-ELN-0104", "foton": ["front med skärm", "närbild kontakt", "stations-ID/QR"], "ocr_falt": ["operatör", "stations-ID", "effekt kW", "kontakttyper"], "poang": 12, "prioritet": "hög" }, + { "bounty_id": "BNTY-0010", "titel": "Nätstationens utvändiga typskylt", "mal_lvx": "LVX-ELN-0103", "foton": ["helbild med omgivning", "närbild utvändigt läsbar skylt"], "ocr_falt": ["tillverkare", "kVA", "spänningar"], "poang": 15, "prioritet": "medel", "sakerhet": "Endast utifrån — aldrig innanför staket eller nära öppna dörrar" }, + { "bounty_id": "BNTY-0011", "titel": "Kabelskåpsnummer + nätbolag", "mal_lvx": "LVX-ELN-0101", "foton": ["front", "närbild dekal/prägling"], "ocr_falt": ["nätbolag", "skåpnummer"], "poang": 8, "prioritet": "medel" }, + { "bounty_id": "BNTY-0012", "titel": "Telekomskåpets nodetikett", "mal_lvx": "LVX-TEL-0101", "foton": ["front", "närbild etikett", "ev. sidopodd"], "ocr_falt": ["operatör", "nod-/skåp-ID"], "poang": 8, "prioritet": "medel", "kommentar": "UK-bonus +5 p: klassa PCP vs FTTC vs G.fast-podd" }, + { "bounty_id": "BNTY-0013", "titel": "Mastens site-ID vid grind", "mal_lvx": "LVX-TEL-0102", "foton": ["helbild på strukturen", "närbild grindskylt"], "ocr_falt": ["siteägare", "site-ID"], "poang": 12, "prioritet": "medel", "sakerhet": "Utanför inhägnaden — alltid" }, + { "bounty_id": "BNTY-0014", "titel": "Signalskåpets korsnings-ID", "mal_lvx": "LVX-TRP-0105", "foton": ["front", "närbild etikett; polislucka om synlig"], "ocr_falt": ["väghållare", "korsnings-ID"], "poang": 10, "prioritet": "medel" }, + { "bounty_id": "BNTY-0015", "titel": "Vägmärkets baksidesetikett", "mal_lvx": "LVX-TRP-0103", "foton": ["framsida", "närbild baksidesetikett"], "ocr_falt": ["tillverkare", "datum", "folietyp"], "poang": 12, "prioritet": "hög", "sakerhet": "Endast märken vars baksida nås från gångyta" }, + { "bounty_id": "BNTY-0016", "titel": "Hållplats-ID + operatör", "mal_lvx": "LVX-TRP-0108", "foton": ["snett framifrån hela skyddet", "närbild hållplatsskylt/program-etikett"], "ocr_falt": ["hållplatsnamn", "hållplats-ID", "operatör"], "poang": 8, "prioritet": "medel" } + ] +} diff --git a/projects/landvex/20-automation/ingest.py b/projects/landvex/20-automation/ingest.py new file mode 100644 index 000000000..2e56d9b14 --- /dev/null +++ b/projects/landvex/20-automation/ingest.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 +# Landvex Ingest v0 — deterministisk pipeline +# kandidatposter (extraktorns output) -> resolve -> merge -> validera -> master/graf/bounty-förslag +import json, re, difflib +from pathlib import Path + +OUT = Path("/mnt/user-data/outputs") +IDAG = "2026-07-04" + +PREDIKAT = {"monteras_pa","star_pa","ansluts_med","matas_fran","ingar_i","del_av", + "ersatter","ersatts_av","kompatibel_med","forvaxlas_med","tillverkas_av","foljer_standard","variant_av"} +VERIF_RANK = {"obekraftad":0,"kallbelagd":1,"faltverifierad":2,"tillverkarbekraftad":3} +DOMANER = {"TRP","ELN","VAT","TEL","BYG","PRK","JVG","HMN","FLG"} +ID_RE = re.compile(r"^LVX-(TRP|ELN|VAT|TEL|BYG|PRK|JVG|HMN|FLG)-[0-9]{4}$|^LVX-P-[0-9]{7}$") + +def load(p): + with open(OUT/p, encoding="utf-8") as f: return json.load(f) + +def save(p,obj): + with open(OUT/p,"w",encoding="utf-8") as f: json.dump(obj,f,ensure_ascii=False,indent=2) + +def norm_bet(b): + b = b.upper().split(":")[0] + b = re.sub(r"\((KARTLÄGGS|KARTLAGGS)\)","",b) + return re.sub(r"\s+"," ",b).strip() + +TOM = ("", None) +def ar_tom(v): return v in TOM or v == [] or v == {} + +class Ingest: + def __init__(self): + self.poster = {p["lvx_id"]: p for p in load("lvx-klassposter-master-v2.json")["poster"]} + self.modeller = {} + for fn in ["lvx-produktmodeller-vag2.json","lvx-produktmodeller-vag3.json"]: + for m in load(fn)["poster"]: self.modeller[m["lvx_id"]] = m + self.reg = load("lvx-id-register.json") + self.nya_modeller, self.logg, self.konflikter = [], [], [] + self.stat = {"uppdaterade":0,"nya":0,"nivalyft":0,"kallor":0,"standarder":0} + + # ---- resolve ---- + def hitta(self, kand): + rid = kand.get("lvx_id") + if rid: + if rid in self.poster: return self.poster[rid] + if rid in self.modeller: return self.modeller[rid] + raise KeyError(f"{kand['kandidat_id']}: okänt lvx_id {rid}") + # entitetsupplösning utan ID: slug, annars fuzzy på namn + post = kand.get("post",{}) + alla = {**self.poster, **self.modeller} + for r in alla.values(): + if r.get("slug") and r["slug"] == post.get("slug"): return r + namn = post.get("namn",{}).get("sv","") + kandnamn = {r["namn"]["sv"]: r for r in alla.values()} + tr = difflib.get_close_matches(namn, kandnamn.keys(), n=1, cutoff=0.88) + return kandnamn[tr[0]] if tr else None + + # ---- merge-primitiver ---- + def merge_kallor(self, rec, nya): + kl = rec.setdefault("proveniens",{}).setdefault("kallor",[]) + urls = {k.get("url") for k in kl} + for k in nya: + if k.get("url") not in urls: + kl.append(k); urls.add(k.get("url")) + self.stat["kallor"] += 1 + self.logg.append(f"{rec['lvx_id']}: +källa {k.get('url','?')[:60]}") + + def merge_standarder(self, rec, nya): + st = rec.setdefault("standarder",[]) + idx = {norm_bet(s["beteckning"]): i for i,s in enumerate(st) if s.get("beteckning")} + for s in nya: + n = norm_bet(s["beteckning"]) + if n in idx: + st[idx[n]] = s + self.logg.append(f"{rec['lvx_id']}: standard uppdaterad {s['beteckning']}") + else: + st.append(s) + self.logg.append(f"{rec['lvx_id']}: +standard {s['beteckning']}") + self.stat["standarder"] += 1 + + def fyll(self, base, patch, rid, stig=""): + for k,v in patch.items(): + here = f"{stig}.{k}" if stig else k + if k not in base or ar_tom(base.get(k)): + base[k] = v + self.logg.append(f"{rid}: fyllde {here}") + elif isinstance(base[k], dict) and isinstance(v, dict): + self.fyll(base[k], v, rid, here) + elif base[k] != v: + self.konflikter.append(f"{rid}: {here} — befintligt värde behålls (granskningskö i produktion)") + + # ---- åtgärder ---- + def uppdatera(self, kand): + rec = self.hitta(kand) + patch = dict(kand.get("patch",{})) + if "standarder" in patch: self.merge_standarder(rec, patch.pop("standarder")) + prov = patch.pop("proveniens", {}) + if prov.get("kallor"): self.merge_kallor(rec, prov["kallor"]) + if patch: self.fyll(rec, patch, rec["lvx_id"]) + fs = kand.get("verifieringsniva_forslag") + if fs: + nu = rec["proveniens"].get("verifieringsniva","obekraftad") + if VERIF_RANK[fs] > VERIF_RANK[nu]: + if VERIF_RANK[fs] >= 1 and not rec["proveniens"].get("kallor"): + self.konflikter.append(f"{rec['lvx_id']}: nivålyft nekad — inga källor") + else: + rec["proveniens"]["verifieringsniva"] = fs + rec["proveniens"]["konfidens"] = max(rec["proveniens"].get("konfidens",0), 0.72) + self.stat["nivalyft"] += 1 + self.logg.append(f"{rec['lvx_id']}: {nu} → {fs}") + rec["proveniens"]["uppdaterad"] = IDAG + self.stat["uppdaterade"] += 1 + + def ny(self, kand): + if self.hitta(kand): + self.konflikter.append(f"{kand['kandidat_id']}: dublett — matchar befintlig post, konverteras ej") + return + post = kand["post"] + typ = kand.get("serie",{}).get("typ","modell" if post.get("posttyp")=="produktmodell" else "klass") + if typ == "modell": + post["lvx_id"] = f"LVX-P-{self.reg['P_nasta']:07d}" + self.reg["P_nasta"] += 1 + if not post.get("parent"): raise ValueError(f"{kand['kandidat_id']}: modell utan parent") + self.modeller[post["lvx_id"]] = post + self.nya_modeller.append(post) + else: + dom, tier = post["doman"], str(kand["serie"]["tier"]) + nn = self.reg["klass_nasta"].setdefault(dom,{}).setdefault(tier,1) + post["lvx_id"] = f"LVX-{dom}-0{tier}{nn:02d}" + self.reg["klass_nasta"][dom][tier] = nn + 1 + self.poster[post["lvx_id"]] = post + post.setdefault("proveniens",{}).setdefault("skapad",IDAG) + post["proveniens"]["uppdaterad"] = IDAG + self.stat["nya"] += 1 + self.logg.append(f"NY: {post['lvx_id']} — {post['namn']['sv']}") + + def kor(self, fil): + for kand in load(fil)["kandidater"]: + (self.uppdatera if kand["atgard"]=="uppdatera" else self.ny)(kand) + +# ---- validering (samma regler som konsolidering v2) ---- +def validera(poster, modeller): + fel = [] + def kolla(rec, typ): + rid = rec.get("lvx_id","?") + if not ID_RE.match(rid): fel.append(f"{rid}: ID-format") + if rec.get("doman") not in DOMANER: fel.append(f"{rid}: domän") + if not (rec.get("namn",{}).get("sv") and rec["namn"].get("en")): fel.append(f"{rid}: namn") + prov = rec.get("proveniens",{}) + if prov.get("verifieringsniva") not in VERIF_RANK: fel.append(f"{rid}: verifieringsnivå") + for pr in rec.get("problem",[]): + if not pr.get("kalla"): fel.append(f"{rid}: problem utan källa") + for rel in rec.get("relationer",[]): + if rel.get("predikat") not in PREDIKAT: fel.append(f"{rid}: predikat {rel.get('predikat')}") + if typ=="modell" and not rec.get("parent"): fel.append(f"{rid}: parent") + if prov.get("verifieringsniva")=="kallbelagd" and not prov.get("kallor"): fel.append(f"{rid}: källbelagd utan källor") + for p in poster.values(): kolla(p,"klass") + for m in modeller.values(): kolla(m,"modell") + return fel + +# ---- graf ---- +def bygg_graf(poster, modeller): + kanter, olosta = [], {} + def multi(m): return " / " in m and all(ID_RE.match(x.strip()) for x in m.split(" / ")) + def kant(s,pred,obj,niva,beskr=""): + typ = "lvx" if ID_RE.match(obj or "") else ("standard" if pred=="foljer_standard" else "text") + if typ=="text": olosta[obj] = olosta.get(obj,0)+1 + kanter.append({"subjekt":s,"predikat":pred,"objekt":obj,"objekt_typ":typ,"niva":niva, + **({"beskrivning":beskr} if beskr else {})}) + def emit(s,pred,m,niva,beskr=""): + if multi(m): + for x in m.split(" / "): kant(s,pred,x.strip(),niva,beskr) + else: kant(s,pred,m,niva,beskr) + for p in poster.values(): + for rel in p.get("relationer",[]): emit(p["lvx_id"],rel["predikat"],rel["mal"],"klass",rel.get("beskrivning","")) + for st in p.get("standarder",[]): + if st.get("beteckning"): kant(p["lvx_id"],"foljer_standard",st["beteckning"],"klass",st.get("roll","")) + for m in modeller.values(): + kant(m["lvx_id"],"tillhor_klass",m["parent"],"modell") + for e in m.get("historik",{}).get("ersatter",[]): kant(m["lvx_id"],"ersatter",e,"modell") + for e in m.get("historik",{}).get("ersatts_av",[]): kant(m["lvx_id"],"ersatts_av",e,"modell") + for rel in m.get("relationer",[]): emit(m["lvx_id"],rel["predikat"],rel["mal"],"modell",rel.get("beskrivning","")) + return kanter, olosta + +# ---- flyhjulet: bounty-förslag ur nya/uppgraderade poster ---- +def bounty_forslag(poster): + try: tackta = {b["mal_lvx"] for b in load("lvx-zoomer-bounties-vag1.json")["bounties"]} + except FileNotFoundError: tackta = set() + ut = [] + for p in poster.values(): + if VERIF_RANK[p["proveniens"]["verifieringsniva"]] < 1: continue + falt = p.get("ai",{}).get("ocr",{}).get("falt",[]) + if falt and p["lvx_id"] not in tackta: + ut.append({"forslag_id": f"BNTY-K-{len(ut)+1:03d}", "mal_lvx": p["lvx_id"], + "titel": f"OCR-fält: {p['namn']['sv']}", "ocr_falt": falt, + "grund": "auto-genererad ur postens OCR-fält (ingest-pipelinen)"}) + return ut + +if __name__ == "__main__": + ing = Ingest() + ing.kor("intag/kandidatposter-vag7.json") + fel = validera(ing.poster, ing.modeller) + kanter, olosta = bygg_graf(ing.poster, ing.modeller) + vf = {} + for p in ing.poster.values(): + v = p["proveniens"]["verifieringsniva"]; vf[v] = vf.get(v,0)+1 + + save("lvx-klassposter-master-v3.json", { + "beskrivning":"Landvex IOL — master v3 (ingest-pipelinen, våg 7). Ersätter v2.", + "genererad": IDAG, "antal_poster": len(ing.poster), "verifieringsfordelning": vf, + "poster":[ing.poster[k] for k in sorted(ing.poster)]}) + if ing.nya_modeller: + save("lvx-produktmodeller-auto.json", { + "beskrivning":"Modellposter mintade av ingest-pipelinen.", "genererad": IDAG, "poster": ing.nya_modeller}) + lvx_k = sum(1 for k in kanter if k["objekt_typ"]=="lvx"); std_k = sum(1 for k in kanter if k["objekt_typ"]=="standard") + save("lvx-graf-kanter-v3.json", { + "beskrivning":"Landvex IOL — grafexport v3 (efter ingest våg 7).", "genererad": IDAG, + "noder":{"objektklasser":len(ing.poster),"produktmodeller":len(ing.modeller)}, + "statistik":{"kanter_totalt":len(kanter),"upplosta_lvx_kanter":lvx_k,"standardkanter":std_k,"textnoder_olosta":len(olosta)}, + "olosta_platshallare":[{"text":k,"forekomster":v} for k,v in sorted(olosta.items())], + "kanter":kanter}) + bf = bounty_forslag(ing.poster) + save("lvx-bounty-kandidater-vag7.json", {"beskrivning":"Auto-genererade bounty-förslag (granskas innan publicering).","genererad":IDAG,"forslag":bf}) + ing.reg["uppdaterad"] = IDAG + save("lvx-id-register.json", ing.reg) + + print(f"Uppdaterade poster: {ing.stat['uppdaterade']} | Nya: {ing.stat['nya']} (register P_nasta={ing.reg['P_nasta']})") + print(f"Nivålyft: {ing.stat['nivalyft']} | +källor: {ing.stat['kallor']} | standarder: {ing.stat['standarder']}") + print(f"Verifieringsfördelning: {vf}") + print(f"Modeller totalt: {len(ing.modeller)} | Kanter: {len(kanter)} ({lvx_k} lvx / {std_k} standard / {len(olosta)} textnoder)") + print(f"Bounty-förslag: {len(bf)} | Konflikter: {len(ing.konflikter)} | Valideringsfel: {len(fel)}") + for r in ing.logg: print(" ·", r) + for k in ing.konflikter: print(" !", k) + for f_ in fel: print(" !!", f_) diff --git a/projects/landvex/20-automation/intag/kallpaket-vag7.json b/projects/landvex/20-automation/intag/kallpaket-vag7.json new file mode 100644 index 000000000..5d9a19211 --- /dev/null +++ b/projects/landvex/20-automation/intag/kallpaket-vag7.json @@ -0,0 +1,55 @@ +{ + "beskrivning": "Landvex Ingest — källpaket från skördepass 2026-07-04 (våg 7). Skördare i denna miljö: Claude web_search. Utdragen är REFERAT — aldrig kopierad källtext.", + "paket": [ + { + "paket_id": "KP-20260704-001", + "amne": "AASHTO LTS — strukturstandard för skylt-, belysnings- och signalstöd", + "metod": "web_search", + "hamtad": "2026-07-04", + "kallor": [ + { "titel": "AASHTO Journal — 2025 Interim Revisions till LTS-6", "url": "https://aashtojournal.transportation.org/new-interim-revisions-for-structural-support-standards/" }, + { "titel": "Accuris — AASHTO LTS-6 med interimsrevisioner 2015/2019/2020/2022/2025", "url": "https://store.accuristech.com/standards/aashto-lts-6?product_id=1859294" }, + { "titel": "Iowa DOT Bridge Design Manual 10.2 — LTS-6 (ASD) vs LRFD-LTS-1 (2015)", "url": "https://iowadot.gov/media/4676/download?inline=" } + ], + "referat": "AASHTO:s LTS-serie ar strukturstandarden for stod till vagmarken, belysning och trafiksignaler. LTS-6 (6:e utgavan, 2013, ASD) galler med interimsrevisioner t.o.m. 2025; parallellt finns LRFD-LTS-1 (2015). Scope kategoriserar stodkonstruktioner som skyltstod, belysningsstod, signalstod och kombinationer — inklusive portaler (overhead bridge/cantilever).", + "mal_lvx": ["LVX-TRP-0202", "LVX-TRP-0205"] + }, + { + "paket_id": "KP-20260704-002", + "amne": "EN 1917 — prefabricerade betongbrunnar", + "metod": "web_search", + "hamtad": "2026-07-04", + "kallor": [ + { "titel": "ANSI Webstore — BS EN 1917:2002 scope", "url": "https://webstore.ansi.org/standards/bsi/bsen19172002" }, + { "titel": "iTeh — SIST EN 1917:2003 (innehall, provmetoder)", "url": "https://standards.iteh.ai/catalog/standards/sist/49425637-2c7e-4408-8568-df3d9c49f270/sist-en-1917-2003" }, + { "titel": "GlobalSpec — BS 5911-3 (UK-komplement) och BS 5911-6 (road gullies)", "url": "https://standards.globalspec.com/std/1146029/BS%20EN%201917" } + ], + "referat": "EN 1917:2002 staller prestandakrav och provmetoder for prefabricerade betongenheter till nedstigningsbrunnar och inspektionsbrunnar (oarmerade, stalfiber, armerade), cirkulara/rektangulara/elliptiska, upp till DN/LN 1250; inspektionsbrunnar for vattengang max 2 m djup. Omfattar fogar och tathetsprov. UK kompletterar med BS 5911-3; BS 5911-6 tacker vaggallerbrunnar (road gullies).", + "mal_lvx": ["LVX-VAT-0202", "LVX-VAT-0203"] + }, + { + "paket_id": "KP-20260704-003", + "amne": "ASTM C913 — prefab betongkonstruktioner inkl. catch basins", + "metod": "web_search", + "hamtad": "2026-07-04", + "kallor": [ + { "titel": "ASTM — C913-21 scope (Note 1: catch basins, drop inlets)", "url": "https://store.astm.org/c0913-21.html" }, + { "titel": "ANSI Webstore — ASTM C913-18", "url": "https://webstore.ansi.org/standards/astm/astmc91318" } + ], + "referat": "ASTM C913 tacker konstruktions- och tillverkningskrav for monolitiska/sektionerade prefab-betongkonstruktioner for vatten/avlopp. Scope-notering raknar upp bl.a. catch basins och drop inlets; det som ligger under C478 (brunnsringar m.m.) ar undantaget. Aktuell utgava C913-21.", + "mal_lvx": ["LVX-VAT-0203"] + }, + { + "paket_id": "KP-20260704-004", + "amne": "Ateranvandning: EN 12767-scope tacker fundament; EJ SELFLEVEL som modell", + "metod": "intern korsreferens (vag 5/3-kallor)", + "hamtad": "2026-07-04", + "kallor": [ + { "titel": "iTeh — EN 12767:2019 scope (stolpar, konstruktionsdelar, fundament)", "url": "https://standards.iteh.ai/catalog/standards/cen/ea3ba437-12fd-4b81-a98c-009b9762e0d8/en-12767-2019" }, + { "titel": "EJ — SELFLEVEL-fallstudie (sjalvnivellerande ramsystem)", "url": "https://www.ejco.com/am/en/resource-center/case-studies/manhole-cover-case-study" } + ], + "referat": "Redan skordade kallor racker for tva atgarder: (1) EN 12767-scopet omfattar aven fundament — lyfter LVX-TRP-0203 till kallbelagd. (2) EJ SELFLEVEL ar en namngiven produktfamilj (sjalvnivellerande betackningsram) — ny modellpost under LVX-VAT-0201.", + "mal_lvx": ["LVX-TRP-0203", "LVX-VAT-0201"] + } + ] +} diff --git a/projects/landvex/20-automation/intag/kandidatposter-vag7.json b/projects/landvex/20-automation/intag/kandidatposter-vag7.json new file mode 100644 index 000000000..fbf440dc3 --- /dev/null +++ b/projects/landvex/20-automation/intag/kandidatposter-vag7.json @@ -0,0 +1,115 @@ +{ + "beskrivning": "Landvex Ingest — kandidatposter (extraktorns output) fran kallpaket-vag7. Patch-format: 'uppdatera' merger mot befintlig post enligt policy; 'ny' mintar ID ur registret.", + "extraktor": "Claude (manuell korning av extraktionsprompten)", + "genererad": "2026-07-04", + "kandidater": [ + { + "kandidat_id": "K-20260704-01", + "atgard": "uppdatera", + "lvx_id": "LVX-TRP-0202", + "paket_ref": ["KP-20260704-001"], + "patch": { + "standarder": [ + { "organ": "AASHTO", "beteckning": "LTS-6 (2013, interim t.o.m. 2025)", "titel": "Standard Specifications for Structural Supports for Highway Signs, Luminaires, and Traffic Signals", "roll": "Strukturkrav (ASD) för signalstolpar och mastarmar", "marknad": "US" }, + { "organ": "AASHTO", "beteckning": "LRFD-LTS-1 (2015)", "titel": "LRFD Specifications for Structural Supports", "roll": "Parallell LRFD-dimensionering", "marknad": "US" } + ], + "proveniens": { "kallor": [ + { "titel": "AASHTO Journal — 2025 interimsrevisioner till LTS-6", "url": "https://aashtojournal.transportation.org/new-interim-revisions-for-structural-support-standards/", "hamtad": "2026-07-04" }, + { "titel": "Iowa DOT BDM 10.2 — LTS-6/LRFD-LTS-1 i praktiken", "url": "https://iowadot.gov/media/4676/download?inline=", "hamtad": "2026-07-04" } + ] } + }, + "verifieringsniva_forslag": "kallbelagd", + "motivering": "Strukturstandarden identifierad och belagd; scope täcker signalstöd." + }, + { + "kandidat_id": "K-20260704-02", + "atgard": "uppdatera", + "lvx_id": "LVX-TRP-0205", + "paket_ref": ["KP-20260704-001"], + "patch": { + "standarder": [ + { "organ": "AASHTO", "beteckning": "LTS-6 (2013, interim t.o.m. 2025)", "titel": "Standard Specifications for Structural Supports", "roll": "Scope kategoriserar skyltstöd inkl. portaler (overhead bridge/cantilever)", "marknad": "US" }, + { "organ": "AASHTO", "beteckning": "LRFD-LTS-1 (2015)", "titel": "LRFD Specifications for Structural Supports", "roll": "LRFD-spår; Iowa DOT tillämpar båda för skylttruss", "marknad": "US" } + ], + "proveniens": { "kallor": [ + { "titel": "Accuris — AASHTO LTS-6 (utgåvor/interim)", "url": "https://store.accuristech.com/standards/aashto-lts-6?product_id=1859294", "hamtad": "2026-07-04" }, + { "titel": "Iowa DOT BDM 10.2 — portal-/utliggartruss enligt LTS", "url": "https://iowadot.gov/media/4676/download?inline=", "hamtad": "2026-07-04" } + ] } + }, + "verifieringsniva_forslag": "kallbelagd", + "motivering": "Portaler ingår i LTS-scope (sign support structures)." + }, + { + "kandidat_id": "K-20260704-03", + "atgard": "uppdatera", + "lvx_id": "LVX-TRP-0203", + "paket_ref": ["KP-20260704-004"], + "patch": { + "standarder": [ + { "organ": "CEN", "beteckning": "EN 12767:2019 (+A1:2024)", "titel": "Passive safety of support structures", "roll": "Scope omfattar fundament i eftergivliga system", "marknad": "EU/UK" } + ], + "proveniens": { "kallor": [ + { "titel": "iTeh — EN 12767:2019 scope (stolpar, konstruktionsdelar, fundament)", "url": "https://standards.iteh.ai/catalog/standards/cen/ea3ba437-12fd-4b81-a98c-009b9762e0d8/en-12767-2019", "hamtad": "2026-07-04" } + ] } + }, + "verifieringsniva_forslag": "kallbelagd", + "motivering": "Befintlig våg 5-källa täcker fundament — korsreferens, ingen ny skörd krävdes." + }, + { + "kandidat_id": "K-20260704-04", + "atgard": "uppdatera", + "lvx_id": "LVX-VAT-0202", + "paket_ref": ["KP-20260704-002"], + "patch": { + "standarder": [ + { "organ": "CEN", "beteckning": "EN 1917:2002", "titel": "Concrete manholes and inspection chambers", "roll": "EU-krav för prefab brunnsenheter (DN/LN ≤1250; inspektionsbrunn ≤2 m), fogar och täthet", "marknad": "EU/UK" }, + { "organ": "BSI", "beteckning": "BS 5911-3", "titel": "Concrete manholes, inspection chambers and soakaways", "roll": "UK-komplement till EN 1917", "marknad": "UK" } + ], + "proveniens": { "kallor": [ + { "titel": "ANSI Webstore — BS EN 1917:2002 scope", "url": "https://webstore.ansi.org/standards/bsi/bsen19172002", "hamtad": "2026-07-04" }, + { "titel": "GlobalSpec — BS 5911-3 som komplement till EN 1917", "url": "https://standards.globalspec.com/std/1146029/BS%20EN%201917", "hamtad": "2026-07-04" } + ] } + }, + "verifieringsniva_forslag": "kallbelagd", + "motivering": "EU-standarden nu belagd — ersätter 'kartläggs'-posten." + }, + { + "kandidat_id": "K-20260704-05", + "atgard": "uppdatera", + "lvx_id": "LVX-VAT-0203", + "paket_ref": ["KP-20260704-002", "KP-20260704-003"], + "patch": { + "standarder": [ + { "organ": "ASTM", "beteckning": "ASTM C913-21", "titel": "Precast Concrete Water and Wastewater Structures", "roll": "Scope-notering omfattar catch basins och drop inlets (US)", "marknad": "US" }, + { "organ": "BSI", "beteckning": "BS 5911-6", "titel": "Road gullies and gully cover slabs", "roll": "UK-krav för vägbrunnar", "marknad": "UK" } + ], + "proveniens": { "kallor": [ + { "titel": "ASTM — C913-21 (Note 1: catch basins, drop inlets)", "url": "https://store.astm.org/c0913-21.html", "hamtad": "2026-07-04" }, + { "titel": "GlobalSpec — BS 5911-6 (road gullies)", "url": "https://standards.globalspec.com/std/1146029/BS%20EN%201917", "hamtad": "2026-07-04" } + ] } + }, + "verifieringsniva_forslag": "kallbelagd", + "motivering": "US- och UK-spår belagda för dagvattenbrunnar." + }, + { + "kandidat_id": "K-20260704-06", + "atgard": "ny", + "serie": { "typ": "modell" }, + "paket_ref": ["KP-20260704-004"], + "post": { + "posttyp": "produktmodell", + "slug": "ej-selflevel", + "namn": { "sv": "EJ SELFLEVEL betäckningsram", "en": "EJ SELFLEVEL access frame" }, + "doman": "VAT", + "parent": "LVX-VAT-0201", + "identitet": { "tillverkare": "EJ", "produktfamilj": "SELFLEVEL", "modell": "SELFLEVEL", "status": "aktiv" }, + "teknik": { "material": ["segjärn"], "ovrigt": { "funktion": "Självnivellerande ram som vilar i beläggningen och följer vägytans rörelser — minskar sättningsgupp och omjusteringar" } }, + "ai": { "kannetecken": ["Flytande ramkrans utan fast gjutfläns", "EJ-märkning i gods"], "forvaxlingsrisker": ["Konventionell fast ram"], "ocr": { "typskylt_position": "Gjuten text i ram/lock", "falt": ["EJ", "SELFLEVEL"] } }, + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [ + { "titel": "EJ — SELFLEVEL-fallstudie", "url": "https://www.ejco.com/am/en/resource-center/case-studies/manhole-cover-case-study", "hamtad": "2026-07-04" } + ], "konfidens": 0.72, "verifieringsniva": "kallbelagd" } + }, + "motivering": "Namngiven produktfamilj i redan skördad källa — mintas som ny modell." + } + ] +} diff --git a/projects/landvex/20-automation/lvx-extraktionsprompt.md b/projects/landvex/20-automation/lvx-extraktionsprompt.md new file mode 100644 index 000000000..3ab52b843 --- /dev/null +++ b/projects/landvex/20-automation/lvx-extraktionsprompt.md @@ -0,0 +1,40 @@ +# Landvex Extraktionsprompt v1 +## LLM-steget i ingest-pipelinen — kontraktet + +Denna prompt körs mot varje källpaket i produktionen. I nuvarande miljö spelar Claude extraktorns roll manuellt; kontraktet är detsamma. + +⸻ + +## Systeminstruktion (mall) + +Du är Landvex extraktor. Din uppgift: omvandla ett källpaket (referat + käll-URL:er) till kandidatposter i patch-format enligt schemat nedan. Regler: + +1. **Referera — kopiera aldrig.** Alla formuleringar ska vara dina egna. Standarder anges med organ, beteckning och roll — aldrig innehåll ur standardtexten. +2. **Källa på varje påstående.** Varje faktabärande fält i patchen ska kunna spåras till en URL i paketet. Kan det inte det: utelämna fältet. +3. **Hitta aldrig på.** Saknas uppgiften i källpaketet skriver du inte fältet. Problem utan källa markeras `"kalla": "PLATSHÅLLARE"` och publiceras aldrig. +4. **Patch, inte omskrivning.** Vid `atgard: "uppdatera"` skickar du endast nya/ändrade fält. Pipelinen skriver aldrig över befintliga ifyllda värden — konflikter går till granskningskö. +5. **Föreslå nivå, besluta inte.** `verifieringsniva_forslag` får högst vara `kallbelagd`. `faltverifierad` och `tillverkarbekraftad` sätts av andra flöden (foto respektive portal). +6. **Ny post kräver serie.** `atgard: "ny"` ska ange `serie` (klass: domän + tier; modell: parent-klass). ID sätter pipelinen — aldrig du. +7. **ASCII-nycklar, svenska värden.** Följ lvx-objekt-schema.json. + +## Utformat (per kandidat) + +```json +{ + "kandidat_id": "K-YYYYMMDD-NN", + "atgard": "uppdatera | ny", + "lvx_id": "(vid uppdatera)", + "serie": { "typ": "klass|modell", "tier": 2 }, + "paket_ref": ["KP-..."], + "patch": { "standarder": [], "teknik": {}, "ai": {}, "proveniens": { "kallor": [] } }, + "post": { "(full post vid ny, utan lvx_id)" : "" }, + "verifieringsniva_forslag": "kallbelagd", + "motivering": "en mening" +} +``` + +## Kvalitetsspärrar (pipelinen verkställer) + +* Nivålyft till källbelagd nekas om `kallor` är tom +* Dublettkontroll: slug-träff eller namnlikhet ≥ 0,88 stoppar `ny` +* Okänt predikat, ID-format eller saknad parent ⇒ valideringsfel, batchen flaggas diff --git a/projects/landvex/20-automation/lvx-ingest-spec.md b/projects/landvex/20-automation/lvx-ingest-spec.md new file mode 100644 index 000000000..0381fbb04 --- /dev/null +++ b/projects/landvex/20-automation/lvx-ingest-spec.md @@ -0,0 +1,71 @@ +# Landvex Ingest — automationsspec v0 +## Datafabriken: från källa till validerad graf utan handpåläggning + +⸻ + +## Kedjan + +**Källor → Skördare → Källpaket → Extraktor (LLM) → Kandidatposter → Ingest (deterministisk) → Master + Graf + Bounty-förslag → Rapport** + +Två halvor med olika natur: + +* **Skörd + extraktion** är probabilistisk (sök, läs, referera). Får föreslå — aldrig besluta. +* **Ingest** är deterministisk kod (`ingest.py`). Den beslutar: upplöser entiteter, verkställer merge-policyn, mintar ID, validerar, bygger grafen. Samma indata ger alltid samma bibliotek. + +⸻ + +## Stegen + +**1. Skördare.** Hämtar källor per kö (se Drift). Output: *källpaket* — referat med URL-lista, aldrig kopierad text. Rätten till originalet stannar hos källan; biblioteket bär referat + referens. + +**2. Extraktor.** LLM med `lvx-extraktionsprompt.md` som kontrakt. Output: *kandidatposter* i patch-format. Får högst föreslå nivån källbelagd. + +**3. Ingest (`ingest.py`).** +* **Entitetsupplösning:** lvx_id → slug → namnlikhet ≥ 0,88 (difflib). Dublett stoppar `ny`. +* **Merge-policy:** källor unionas på URL; standarder dedupe:as på normaliserad beteckning (så att "EN 1917 (kartläggs)" ersätts av "EN 1917:2002"); tomma fält fylls; **ifyllda fält skrivs aldrig över** — konflikter loggas till granskningskö. +* **Verifieringstrappan:** lyft sker endast uppåt, och källbelagd kräver icke-tom källista. Fältverifierad/tillverkarbekräftad kan bara sättas av foto- respektive portalflödet. +* **ID-mintning:** `lvx-id-register.json` håller nästa nummer per serie; register skrivs tillbaka atomärt; ID återanvänds aldrig. +* **Validering:** samma regler som konsolideringen (ID-format, domän, namn sv/en, predikatenum, problem-källa, parent, källkrav). Fel ⇒ batchen flaggas. +* **Grafexport:** kantlista regenereras ur posterna varje körning — grafen är alltid härledd, aldrig handredigerad. + +**4. Bounty-generatorn.** Varje körning skannar posterna: källbelagd + OCR-fält + ingen aktiv bounty ⇒ bounty-förslag. Flyhjulet matas automatiskt av ny data. + +**5. Rapport.** Körningslogg: uppdaterade/nya, nivålyft, källor, konflikter, valideringsfel, grafstatistik. + +⸻ + +## Drift: tre köer in i skördaren + +| Kö | Trigger | Exempel | +|---|---|---| +| **Schemalagd** | Domän-/klasscykel | "Alla TRP-standarder omkontrolleras kvartalsvis" | +| **Kunddriven** | `POST /v0/feedback` + svaga identify-svar | Okänd modell i Leeds ⇒ riktad skörd + bounty | +| **Fält** | Zoomer-foton godkända | OCR-data ⇒ individposter + nivålyft till fältverifierad | + +Kunddrivna kön är SaaS-motorn: betald efterfrågan bestämmer var datafabriken gräver härnäst, och kostnaden bärs av intäkten den skapar. + +⸻ + +## Kostnadsmåttet + +**Kostnad per verifierat faktum** = (skörd + extraktion + granskning) / antal nivålyft & nya källbelagda fält. Våg 7-demon: 3 sökningar + 1 korsreferens gav 4 nivålyft, 9 nya källor, 9 standardposter och 1 ny modell — korsreferenssteget (återanvänd källa, noll ny skörd) är gratis-lyften som automationen ska hitta själv i produktionen. + +⸻ + +## Miljönot + +I denna arbetsyta: Claude är skördare + extraktor (web_search/web_fetch), containern kör ingest. I produktion: crawler med källvitlista + LLM-API bakom extraktionsprompten + granskningskö-UI för konflikter. `ingest.py` är samma kod i båda miljöerna. + +⸻ + +## Filkarta + +| Fil | Roll | +|---|---| +| `intag/kallpaket-*.json` | Skördarens output | +| `intag/kandidatposter-*.json` | Extraktorns output | +| `lvx-extraktionsprompt.md` | LLM-kontraktet | +| `lvx-id-register.json` | ID-serier (mintning) | +| `ingest.py` | Pipelinens kärna | +| `lvx-klassposter-master-vN.json`, `lvx-graf-kanter-vN.json` | Beslutade utdata | +| `lvx-bounty-kandidater-*.json` | Flyhjulsförslag till granskning | diff --git a/projects/landvex/30-produkt/lvx-api-demosvar.json b/projects/landvex/30-produkt/lvx-api-demosvar.json new file mode 100644 index 000000000..1f592a684 --- /dev/null +++ b/projects/landvex/30-produkt/lvx-api-demosvar.json @@ -0,0 +1,109 @@ +{ + "beskrivning": "Landvex Object API — tre golden demo-svar enligt pilot-spec v0. Byggda på riktiga poster i biblioteket. Case 1: ersättningskedjan. Case 2: OCR-guld. Case 3: flyhjulet vid okänd modell.", + "genererad": "2026-07-04", + "cases": [ + { + "case": 1, + "rubrik": "Utgången armatur identifierad — ersättare levereras i svaret", + "endpoint": "POST /v0/identify", + "input": { + "bild": "(gatuvy: cobrahead-armatur på 10 m stolpe)", + "position": { "lat": 36.16, "lon": -115.14, "land": "US" }, + "ocr_extraherat": ["GE", "ERS2", "4000K"] + }, + "svar": { + "kandidater": [ + { + "niva": "produktmodell", + "lvx_id": "LVX-P-0000002", + "namn": "GE Evolve LED Scalable Cobrahead (ERS1–ERS4)", + "konfidens": 0.94, + "verifieringsniva": "kallbelagd", + "status": "ersatt", + "succession": { + "ersatter": [{ "lvx_id": "LVX-P-0000001", "namn": "GE Evolve ERMC" }], + "ersatts_av": [{ "lvx_id": "LVX-P-0000003", "namn": "GE Evolve ERL-serien (ERL1/ERLH/ERL2)", "status": "aktiv" }] + }, + "klass": { "lvx_id": "LVX-TRP-0102", "namn": "Vägbelysningsarmatur" }, + "insikt": "Serien är utgången hos tillverkaren (ersatt av ERL). Planera reservdelar och utbyten mot ERL-serien.", + "kallor": [ + { "titel": "Current by GE — ERS discontinued, ersatt av ERL", "url": "https://products.currentbyge.com/outdoor-lighting/street-roadway/evolve-led-roadway-fixtures-first-gen" } + ] + } + ], + "kanda_klassproblem": [ + { "typ": "Lila/violett ljusskifte", "relevans": "LED tillverkade ca 2017–2019", "kalla": "Wikipedia: 2020s purpling of streetlights" } + ], + "bounty": null + } + }, + { + "case": 2, + "rubrik": "Hydrant åldersbestämd ur gjutgodset", + "endpoint": "POST /v0/identify", + "input": { + "bild": "(hydrant, närbild på gjuten text)", + "position": { "lat": 32.78, "lon": -96.80, "land": "US" }, + "ocr_extraherat": ["AMERICAN-DARLING", "B-84-B-5", "1998", "OPEN LEFT"] + }, + "svar": { + "kandidater": [ + { + "niva": "produktmodell", + "lvx_id": "LVX-P-0000016", + "namn": "American-Darling B-84-B (AMERICAN Flow Control)", + "konfidens": 0.97, + "verifieringsniva": "kallbelagd", + "status": "aktiv", + "individdata_ur_ocr": { + "tillverkningsar": "1998", + "oppningsriktning": "vänster", + "kommentar": "Gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och år är föreskriven i AWWA C502 — årtalet daterar individen utan register" + }, + "klass": { "lvx_id": "LVX-VAT-0103", "namn": "Brandpost/hydrant" }, + "insikt": "Torrpost enligt AWWA C502, i produktion sedan 1984. Traffic-fläns med brytkoppling: kontrollera skarven ovan mark efter påkörning i stället för att byta hela posten.", + "kallor": [ + { "titel": "AMERICAN — B-84-B-5 produktsida", "url": "https://american-usa.com/products/valves-and-hydrants/fire-hydrants/american-darling-b-84-b-5" }, + { "titel": "ANSI/AWWA C502-18 (märkningskrav)", "url": "https://webstore.ansi.org/preview-pages/awwa/preview_c502-2018.pdf" } + ] + } + ], + "bounty": null + } + }, + { + "case": 3, + "rubrik": "Okänd modell — ärligt svar + bounty skapas (flyhjulet)", + "endpoint": "POST /v0/identify", + "input": { + "bild": "(grått gatuskåp utan synlig etikett)", + "position": { "lat": 51.51, "lon": -0.13, "land": "UK" }, + "ocr_extraherat": [] + }, + "svar": { + "kandidater": [ + { + "niva": "objektklass", + "lvx_id": "LVX-ELN-0101", + "namn": "Kabelskåp, lågspänning", + "konfidens": 0.71, + "verifieringsniva": "kallbelagd", + "sarskiljning_mot": [ + { "lvx_id": "LVX-TEL-0101", "namn": "Telekomskåp", "ledtrad": "Openreach-gatuutrustning i UK är nästan alltid grön — grått + blixtsymbol talar för elnät" }, + { "lvx_id": "LVX-TRP-0105", "namn": "Trafiksignalskåp", "ledtrad": "saknar polislucka och korsningsplacering" } + ], + "modell": null, + "insikt": "Klass säkerställd, modell obestämd. Foto på skåpnummer/nätbolagsdekal avgör." + } + ], + "bounty": { + "skapad": true, + "bounty_id": "BNTY-A0001", + "typ": "modellbestamning", + "grund": "BNTY-0011 (kabelskåpsnummer + nätbolag) instansierad på positionen", + "kundnotis": "Du notifieras när objektet är modellbestämt och fältverifierat" + } + } + } + ] +} diff --git a/projects/landvex/30-produkt/lvx-pilot-api-spec.md b/projects/landvex/30-produkt/lvx-pilot-api-spec.md new file mode 100644 index 000000000..ac7bb0597 --- /dev/null +++ b/projects/landvex/30-produkt/lvx-pilot-api-spec.md @@ -0,0 +1,89 @@ +# Landvex Object API +## Pilot-spec v0 — produkten ovanpå biblioteket + +⸻ + +## Vad kunden köper + +Ett svar på fyra frågor, med källa på varje led: + +**Vad är detta → vilken modell → vilken status → vad ersätter den.** + +Biblioteket bakom: 37 objektklasser, 26 produktmodeller, 115 grafkanter, verifieringsnivå på varje post. Allt svar bär proveniens — kunden ser aldrig obekräftat presenterat som sanning. + +⸻ + +## Endpoints v0 + +**`POST /v0/identify`** — bild (+ position) in. Ut: kandidater med klass, modell, konfidens, verifieringsnivå, extraherade OCR-fält och åtgärdsinsikt. Kärnprodukten. + +**`GET /v0/objects/{lvx_id}`** — komplett post: teknik, standarder, AI-kännetecken, källbelagda problem, relationer, proveniens. + +**`GET /v0/objects/{lvx_id}/succession`** — ersättningskedjan framåt och bakåt (t.ex. ERMC → ERS → ERL; V3 → V4). + +**`GET /v0/search`** — fritext + filter på domän, tier, verifieringsnivå, marknad, standard. + +**`GET /v0/standards/{beteckning}/objects`** — alla objekt kopplade till en standard (46 standardkanter i grafen). + +**`POST /v0/feedback`** — fel eller okänt objekt in. Skapar automatiskt en bounty. Detta är flyhjulets intag. + +⸻ + +## Svarskontraktet + +Varje svar innehåller obligatoriskt: + +* `verifieringsniva` — obekräftad / källbelagd / fältverifierad / tillverkarbekräftad +* `konfidens` — 0–1, aldrig dold +* `kallor[]` — titel + URL för varje faktapåstående +* `bounty` — om svaret är svagt: ID på den bounty som skapades för att stärka det + +**Regel 1:** problem utan källa levereras aldrig i API:et — PLATSHÅLLARE-flaggade fält filtreras bort vid serialisering. + +**Regel 2:** standarder refereras med beteckning och roll — aldrig innehåll. Juridiken sitter i kontraktet, inte i en policy vid sidan av. + +⸻ + +## Flyhjulet i produkten + +När `identify` inte når modellnivå, eller `feedback` rapporterar fel: + +1. Svar med bästa klasskandidat + ärlig konfidens +2. Bounty skapas automatiskt på positionen +3. Zoomer fotograferar → post fältverifieras/modell skapas +4. Kunden notifieras: "ditt objekt är nu bestämt" + +Kundens obesvarade fråga finansierar datan som besvarar nästa. Andelen kunddrivna bounties är flyhjulets hälsotal. + +⸻ + +## Paketering (SaaS) + +| Paket | För vem | Modell | +|---|---|---| +| **Pilot** | 1–3 designpartners (kommun/driftentreprenör) | Fast månadsavgift, generös anropskvot, gemensam backlog — betalar med feedback och fältaccess | +| **Pro** | Entreprenörer, besiktning, försäkring | Usage-based: `identify` prissätts högre än uppslag; volymtrappa | +| **Enterprise** | Nätbolag, stora förvaltare, tillverkare | SLA, eget individlager (LVX-I) för kundens bestånd, bulkexport, riktade bounties i kundens geografi | + +Prisprinciper: identifiering är värdet (prissätt per lyckat svar), uppslag är räckvidden (billigt, driver inlåsning via LVX-ID som referenssystem), bounty-krediter låter kunden köpa fältverifiering där den behöver den. + +⸻ + +## Pilotmålet + +En kommun eller driftentreprenör, ett avgränsat område, tre användningsfall: + +1. **Inventering:** fota beståndet → klass/modell/status per objekt +2. **Utgånget:** lista allt med status *ersatt/utgången* + ersättare (reservdelsrisk) +3. **Problemflagg:** källbelagda klassproblem matchade mot beståndet (t.ex. lila LED, penta-stolpar) + +Demonstrationen finns i `lvx-api-demosvar.json` — tre golden cases byggda på riktiga poster. + +⸻ + +## Mätetal + +* Andel `identify` som når modellnivå (mål: stiger varje våg) +* Time-to-verified: från kundfråga till fältverifierat svar +* Kostnad per verifierat faktum (ska sjunka — Genome-strategins kärnmått) +* Kunddrivna bounties som andel av alla (flyhjulets hälsa) diff --git a/projects/landvex/30-produkt/lvx-zoomer-bountyprogram.md b/projects/landvex/30-produkt/lvx-zoomer-bountyprogram.md new file mode 100644 index 000000000..528ed3b68 --- /dev/null +++ b/projects/landvex/30-produkt/lvx-zoomer-bountyprogram.md @@ -0,0 +1,85 @@ +# QUIXZOOM Zoomer-bounties +## Programspecifikation v1 — flyhjulet aktiveras + +⸻ + +## Syfte + +Varje godkänt Zoomer-foto gör tre saker samtidigt: + +1. **Fältverifierar** en bibliotekspost — verifieringsnivån lyfts från *källbelagd* till *fältverifierad* +2. **Tränar** visionsmodellen — märkt bild av känd klass/modell +3. **Kartlägger** beståndet — var objektet står och i vilket skick + +Biblioteket säger vad som ska fotas. Fältet betalar tillbaka med sanning. + +⸻ + +## Var bounties kommer ifrån + +**Källa 1 — OCR-fälten.** Varje klasspost anger var identiteten sitter: typskyltar, birthmarks, gjutmärken, site-ID. Våg 1:s 16 bounties (`lvx-zoomer-bounties-vag1.json`) är direkt härledda ur dessa fält. + +**Källa 2 — PLATSHÅLLARE-problemen.** Problem utan källa får inte publiceras. En bounty som dokumenterar fenomenet i fält (som BNTY-0003, lila belysning) omvandlar platshållaren till belagd kunskap. + +**Källa 3 — kundefterfrågan.** När en API-kund får svaret "obekräftad" eller "okänd modell" skapas automatiskt en bounty på den positionen. Betalande efterfrågan styr fältarbetet — det är SaaS-flyhjulets kärna: kundens fråga finansierar datan som gör nästa svar bättre. + +⸻ + +## Poängmodellen + +* **Baspoäng per bounty** (8–30 p) efter värde och svårighet — se JSON-filen +* **Först-på-individ:** ×2 för första godkända bidraget på en ny individ +* **Full OCR-läsbarhet:** +50 % när alla efterfrågade fält går att läsa maskinellt +* **Kvalitetsspärr:** oskarpa, felvinklade eller ofullständiga bidrag ger 0 p — kvalitet före kvantitet +* Poäng växlas till utbetalning via QUIXZOOM-plånboken över en tröskel; nivåer och belopp sätts i produktledet + +Geografisk styrning: heatmap visar var biblioteket är tunt. Bounties kan viktas upp per område eller marknad. + +⸻ + +## Verifieringsflödet + +1. **Inlämning** — foton + automatisk position och tidsstämpel +2. **Auto-OCR** — fälten extraheras och matchas mot klass-/modellpost +3. **Dublettkontroll** — bildhash + position stoppar återinlämningar +4. **Stickprovsgranskning** — mänsklig kontroll på riskprofil, ny Zoomer granskas hårdare +5. **Effekt** — posten uppgraderas till *fältverifierad*, individen registreras (LVX-I), poäng betalas ut, bilden märks för träning + +Zoomerns ryktespoäng styr granskningsgraden: hög historisk träffsäkerhet ger snabbare utbetalning. + +⸻ + +## Säkerhetsregler — obligatoriska, utan undantag + +* Fota endast från trottoar, gångyta eller plats där du har rätt att vistas +* Beträd aldrig körbana, vägren på högfartsväg, spårområde eller inhägnat/låst område +* Öppna, rör, lyft eller kliv aldrig på något objekt — allt fotas i befintligt skick +* Klättra aldrig; högt sittande detaljer tas med zoom eller hoppas över +* Avbryt vid tveksamhet — inget foto är värt en incident + +Bidrag som bryter mot reglerna underkänns och upprepade brott stänger kontot. + +⸻ + +## Integritet + +* Inga personer, ansikten eller läsbara registreringsskyltar i bild — auto-blurr som skyddsnät, men Zoomern ansvarar för motivet +* Positionsdata används för individregistret; publika vyer aggregeras +* Bidragsgivarens identitet exponeras aldrig i datat — endast anonymt Zoomer-ID i proveniensen + +⸻ + +## KPI:er + +* Fältverifierade poster per vecka +* Kostnad per verifierat faktum — ska sjunka våg för våg (Genome-strategins kärnmått) +* OCR-träffsäkerhet per bountytyp +* Andel bounties skapade av kundefterfrågan — flyhjulets hälsotal + +⸻ + +## Lansering + +Våg 1 = de 16 bounties i `lvx-zoomer-bounties-vag1.json`. De täcker 12 av 20 Tier 1-klasser och kräver ingen specialutrustning utöver mobilkamera med zoom. + +Våg 2 skapas ur (a) resterande PLATSHÅLLARE-problem, (b) modellskiktets särskiljare (Service tag-QR, 2D-koder, MGS-skarvar) och (c) första kundfrågorna. diff --git a/projects/landvex/40-strategi/iol-grundspecifikation.md b/projects/landvex/40-strategi/iol-grundspecifikation.md new file mode 100644 index 000000000..5cd153f61 --- /dev/null +++ b/projects/landvex/40-strategi/iol-grundspecifikation.md @@ -0,0 +1,202 @@ +# Landvex Infrastructure Object Library +## Grundspecifikation v1 — "Grunden" + +⸻ + +## Syfte + +Detta är grunden som implanteras i Landvex infrastruktur: ontologin, schemat, prioriteringen och arbetsprotokollet för världens mest kompletta bibliotek över visuellt identifierbar fysisk infrastruktur. + +Biblioteket är det Datafabriken fyller och flyhjulet förädlar. Alla framtida produkter — Landvex AI, QUIXZOOMs igenkänning, sök, analys, SaaS-lagren — frågar mot samma grund. + +**Princip 1.** Objektuniversum först, produkter sedan. Vi utgår från allt en kamera kan se — inte från tillverkarnas kataloger. + +**Princip 2.** Fakta och referenser, aldrig kopierat innehåll. Varje faktum bär källa. + +**Princip 3.** Det vanligaste först. Tier 1 byggs klart innan bredden jagas. + +⸻ + +## Arkitektur: fem nivåer + +| Nivå | Namn | Exempel | Lager | +|---|---|---|---| +| 0 | Domän | Transport | Ontologin | +| 1 | Objektklass | Vägbelysningsarmatur | Biblioteket | +| 2 | Typ | LED-armatur, motorväg | Biblioteket | +| 3 | Produktmodell | Acme SL-400 rev C | Biblioteket | +| 4 | Individ | Armaturen på Storgatan 12 | QUIXZOOM/kund | + +**Landvex-ID:** + +* Objektklass: `LVX-{DOMÄN}-{NNNN}` → `LVX-TRP-0102` +* Produktmodell: `LVX-P-{NNNNNNN}` → `LVX-P-0000481` +* Individ: `LVX-I-{...}` (fältlagret, utanför denna spec) + +ID:n är permanenta. Namn får ändras — ID aldrig. + +⸻ + +## Objektuniversum: nio domäner + +| Kod | Domän | Omfattar bl.a. | +|---|---|---| +| TRP | Transport/väg | vägar, körfält, markeringar, räcken, kantsten, refuger, broar, tunnlar, signaler, skyltar, portaler, belysning, reflexstolpar, hållplatser | +| ELN | Elnät | transformatorer, ställverk, kabelskåp, elstolpar, kraftledningar, laddstationer, mätarskåp | +| VAT | Vatten & avlopp | brunnar, betäckningar, galler, ventiler, pumpstationer, hydranter, inspektionspunkter | +| TEL | Telekom | fiberskåp, kopparskåp, master, 5G, antenner, radiolänkar | +| BYG | Byggnad | fasader, tak, entréer, portar, fönster, brandskydd, ventilation, nödutgångar, skyltar | +| PRK | Park & offentlig miljö | träd, bänkar, lekplatser, papperskorgar, pollare, cykelställ, fontäner | +| JVG | Järnväg | signaler, kontaktledning, slipers, växlar, bommar, plattformar | +| HMN | Hamn | kajer, pollare, fendrar, kranar, landström | +| FLG | Flygplats | banbelysning, skyltar, stängsel, navigationshjälpmedel | + +Geografisk räckvidd v1: **USA, EU, Storbritannien, Kanada, Australien.** + +Ontologin är global från dag ett — nya marknader är data, inte omdesign. + +⸻ + +## Tier 1 — det vanligaste byggs först + +Urvalskriterier: + +1. **Volym** — miljontals instanser i fält +2. **Synlighet** — identifierbar från gatunivåfoto +3. **Efterfrågan** — förvaltare och entreprenörer behöver svaret +4. **Datatillgång** — öppna standarder och tillverkardokumentation finns +5. **Flyhjul** — syns i material Zoomers redan samlar + +### De 20 första objektklasserna + +| LVX-ID | Klass | Nyckelstandarder (exempel) | +|---|---|---| +| LVX-TRP-0101 | Belysningsstolpe | EN 40 (EU), AASHTO LTS (US) | +| LVX-TRP-0102 | Vägbelysningsarmatur | EN 60598, EN 13201 (EU), UL 1598 (US) | +| LVX-TRP-0103 | Vägmärke | MUTCD (US), TSRGD (UK), nationella kataloger (EU), AS 1742 (AU) | +| LVX-TRP-0104 | Trafiksignal, signalhuvud | EN 12368 (EU), ITE-spec. (US) | +| LVX-TRP-0105 | Trafiksignalskåp/styrapparat | NEMA TS-serien (US) | +| LVX-TRP-0106 | Vägmarkering | EN 1436 (EU), MUTCD (US) | +| LVX-TRP-0107 | Vägräcke | EN 1317 (EU), MASH (US) | +| LVX-TRP-0108 | Hållplatsväderskydd | tillverkar-/kommunprogram | +| LVX-VAT-0101 | Brunnsbetäckning | EN 124 (EU/UK), kommunala lastkrav (US) | +| LVX-VAT-0102 | Dagvattengaller | EN 124 | +| LVX-VAT-0103 | Brandpost/hydrant | AWWA C502/C503 (US), nationella typer (EU) | +| LVX-ELN-0101 | Kabelskåp, lågspänning | nätbolagsnormer per land | +| LVX-ELN-0102 | Elstolpe | ANSI O5.1 (trä, US), nationella normer (EU) | +| LVX-ELN-0103 | Nätstation/transformator | IEC/IEEE-serier — kartläggs i steg 1 | +| LVX-ELN-0104 | Laddstation | IEC 61851, kontaktstandarder (CCS, J1772) | +| LVX-TEL-0101 | Telekomskåp | operatörsspecifika program | +| LVX-TEL-0102 | Mobilmast/antennplats | nationella regelverk | +| LVX-PRK-0101 | Pollare | säkerhetspollare: PAS 68 / IWA 14 | +| LVX-PRK-0102 | Papperskorg | — | +| LVX-PRK-0103 | Cykelställ | — | + +**Tier 2 (nästa våg):** kantsten, reflexstolpar, vägportaler, broräcken, bullerskydd, mätarskåp, ventilbetäckningar, parkbänkar, järnvägens basobjekt. + +**Tier 3:** hamn- och flygplatsdomänerna — hög specialisering, begränsad access, byggs mot kunduppdrag. + +⸻ + +## Universellt objektschema + +Varje post — klass eller produktmodell — följer samma tio block: + +1. **Identitet** — vem, vad, revision, status +2. **Teknik** — dimensioner, material, klasser (IP, belastning, korrosion), livslängd +3. **Historik** — introducerad, utfasad, ersättningskedja +4. **Geografi** — länder, regioner, miljötyper +5. **Standarder** — organ, beteckning, roll (aldrig standardtext) +6. **AI** — kännetecken, särskiljare, förväxlingar, kameravinklar, OCR/typskylt +7. **Problem** — kända fel, alltid med källa +8. **Dokumentation** — referenser med metadata och licensstatus +9. **Relationer** — predikatbaserade kopplingar till andra LVX-ID +10. **Proveniens** — källor, konfidens, verifieringsnivå + +Maskinformatet definieras i `lvx-objekt-schema.json`. I grafen bryts posterna ner till enskilda fakta med källa, konfidens och bitemporal giltighet — enligt Genome-strategin. + +**OCR först.** En stor andel el-, tele- och belysningsobjekt bär typskylt med tillverkare, modell och serienummer. Typskyltens position och fältstruktur dokumenteras per klass — det är den billigaste vägen till säker identifiering. + +⸻ + +## Käll- och rättighetspolicy + +**Tillåtet — sammanställ fakta och spara referenser från:** + +* Standardiseringsorgan: beteckning, titel, tillämpningsområde — aldrig innehåll ur köpta standarder +* Myndigheter: föreskrifter, typgodkännanden, regelverk (amerikanska federala dokument är ofta public domain) +* Tillverkares publika datablad, kataloger och manualer: extrahera fakta, länka källan +* Patent: fria att referera och analysera +* Offentliga upphandlingar: produkter, platser, tidpunkter +* Egna fältbilder: fullt ägda + +**Ej tillåtet:** + +* Kopiera skyddade databaser eller kringgå avtalsvillkor +* Skörda bakom inloggning eller mot uttryckligt förbud +* Återge standardtexter, manualtexter eller bilder vi saknar rätt till + +**Särskilda noter:** + +* OpenStreetMap (ODbL) kräver attribution och delningsvillkor — hålls i separat spår tills licensstrategin är beslutad +* "Kända problem" publiceras endast med belagd källa: återkallelse, servicebulletin eller verifierad fältobservation + +Regeln i en mening: **vi bygger kunskap om innehållet — inte kopior av innehållet.** + +⸻ + +## Forskningsprotokoll per objektklass + +Varje Tier 1-klass blir ett forskningsuppdrag i sju steg. Detta är agenternas arbetsorder: + +1. **Standarder & terminologi.** Kartlägg nationella och internationella standarder per marknad. Standarderna definierar klassens gränser, klassificeringar och officiella begrepp på varje språk. +2. **Marknadskarta.** Dominerande tillverkare per land — historiskt och idag. +3. **Modellkatalog.** Produktfamiljer, modeller, revisioner, produktionsperioder, artikelnummer, status. +4. **Visuell profil.** Kännetecken, särskiljande detaljer, förväxlingsrisker, rekommenderade vinklar, typskylt/OCR. +5. **Livscykel & problem.** Livslängd, åldrande, kända fel — endast med källa. +6. **Relationer.** Vad den monteras på, ansluts med, matas från, ingår i, ersätts av. +7. **Verifiering.** Konfidenssättning, källgranskning; fältverifieringsbehov flaggas till Zoomer-kön. + +Output per uppdrag: en komplett klasspost enligt schemat + en lista produktmodellposter — alla källbelagda. + +⸻ + +## Relationsvokabulär v1 + +`monteras_pa` · `star_pa` · `ansluts_med` · `matas_fran` · `ingar_i` · `del_av` · `ersatter` · `ersatts_av` · `kompatibel_med` · `forvaxlas_med` · `tillverkas_av` · `foljer_standard` · `variant_av` + +Nya predikat kräver ontologibeslut. Vildvuxna relationer förstör grafen. + +⸻ + +## Verifieringsstegen + +1. **Obekräftad** — extraherad, ej granskad +2. **Källbelagd** — minst en oberoende öppen källa +3. **Fältverifierad** — bekräftad av Zoomer-foto +4. **Tillverkarbekräftad** — bekräftad via tillverkarportalen + +AI:n exponerar alltid nivån. Kunder ser aldrig obekräftat som sanning. + +⸻ + +## Byggordning: grunden på 90 dagar + +**Vecka 1–2.** Ontologin fryses: nio domäner, Tier 1-listan, ID-serier, relationsvokabulär. Schema v1 i drift. + +**Vecka 3–6.** Forskningsprotokollet körs på alla 20 Tier 1-klasser → 20 kompletta klassposter, källbelagda. + +**Vecka 7–12.** Produktmodellskiktet för de fem mest efterfrågade klasserna — förslag: armaturer, brunnsbetäckningar, kabelskåp, vägmärken, hydranter → de första tusen produktmodellerna med LVX-P-ID. Parallellt: Zoomer-bounties på Tier 1 för fältverifiering och visionsträning. + +Därefter växer biblioteket enligt Genome-strategins fabrik: efterfrågestyrt, automatiserat, verifierat. + +⸻ + +## Leveranser i detta paket + +* `iol-grundspecifikation.md` — detta dokument +* `lvx-objekt-schema.json` — maskinläsbart schema för klass- och modellposter +* `lvx-taxonomi-tier1.json` — nio domäner + de 20 första objektklasserna med ID +* `lvx-exempel-brunnsbetackning.json` — ifylld exempelpost som mall + +Grunden är inte en plan. Den är filerna ovan — implantera, kör protokollet, börja fylla. diff --git a/projects/landvex/40-strategi/landvex-genome-strategi.md b/projects/landvex/40-strategi/landvex-genome-strategi.md new file mode 100644 index 000000000..c5d2a1e70 --- /dev/null +++ b/projects/landvex/40-strategi/landvex-genome-strategi.md @@ -0,0 +1,259 @@ +# Landvex Infrastructure Genome +## Strategi för snabb uppbyggnad och automatiserad tillväxt + +⸻ + +## Tesen + +Grafen är produkten. Allt annat — appar, API:er, dashboards — är gränssnitt mot grafen. + +Värdet växer med fyra faktorer: **täckning × djup × verifiering × tidshistorik.** + +Strategin nedan maximerar alla fyra samtidigt, med minsta möjliga manuella arbete. + +⸻ + +## Kallstartsproblemet + +En kunskapsgraf med 10 000 objekt är en kuriositet. +En med 10 miljoner är en tillgång ingen kan kopiera. + +Ni kan inte samla in detta manuellt. Ingen kan det. + +Lösningen är att inte bygga en databas. + +**Bygg fabriken som bygger databasen.** + +⸻ + +## Datafabriken — fem linjer + +### Linje 1: Skörd (helautomatisk, kontinuerlig) + +Crawlers som löpande hämtar: + +* Tillverkarkataloger, produktblad, manualer, CAD-filer +* **Offentliga upphandlingar** (TED i EU, SAM.gov i USA, Mercell/Kommers i Norden) — guld, eftersom de avslöjar vilka produkter som installerats *var* och *när* +* Standarder och typgodkännanden (EN, ANSI, ASTM) +* Patent — produkthistorik och generationsskiften +* Återkallelser och servicebulletiner +* Kommunala anläggningsregister och öppna GIS-data +* OpenStreetMap — positioner och objekttyper +* Branschforum och installatörscommunities — kända problem i verkligheten + +### Linje 2: Extraktion (LLM-agenter) + +Varje dokument klassificeras och körs genom schemastyrd extraktion: dokument in, strukturerade fakta ut. + +Kostnaden per extraherat objekt är idag ören, inte timmar. Det är den tekniska förändringen som gör hela idén möjlig 2026 men omöjlig 2019. + +### Linje 3: Entitetsupplösning + +Samma armatur säljs under tre namn på fem marknader, med OEM-märkningar och revisioner. Fabrikens svåraste steg: slå ihop dubbletter till en kanonisk identitet. + +Se Landvex-ID nedan. + +### Linje 4: Verifiering + +Varje faktum får konfidenspoäng och källa. + +Hög konfidens → publiceras direkt. +Låg konfidens → människa, eller fältverifiering via en Zoomer. + +### Linje 5: Publicering och återkoppling + +Varje gång AI:n möter ett objekt den inte känner igen skapas **automatiskt ett researchjobb**. + +AI:ns luckor blir roadmapen. Grafen växer exakt där efterfrågan finns. + +⸻ + +## Landvex-ID — den djupaste vallgraven + +Kemin har CAS-nummer. Böcker har ISBN. + +Den byggda världen har ingenting. + +Ge varje produktmodell, komponent och materialtyp ett kanoniskt **Landvex-ID**. + +När tillverkare, kommuner, försäkringsbolag och AI-system börjar referera till era ID:n är ni inte längre en databas. + +Ni är standarden. + +Standarder byts inte ut. + +⸻ + +## Datamodellen — varje faktum bär sitt eget bevis + +Ett faktum är aldrig bara "höjd: 8 m". + +Det är: + +**subjekt – egenskap – värde + källa + konfidens + giltighetsperiod + registreringstidpunkt** + +Bitemporalt: både *när det var sant i verkligheten* och *när ni fick veta det*. + +Bilder och dokument lagras som bevis kopplade till fakta — inte som lösa filer. + +Detta gör tre saker möjliga: + +1. Tidsfrågor — "visa alla armaturer installerade 1998–2004" +2. Spårbarhet — varje påstående kan försvaras +3. Maskinell tillit — AI:n vet hur säker den ska vara + +⸻ + +## Flyhjulet med QUIXZOOM + +Fabriken bygger bredden. Zoomers bygger det ingen annan har: **verifierad verklighet.** + +Varje fältbild gör tre jobb samtidigt: + +1. Tränar vision-modellerna +2. Verifierar eller korrigerar grafen +3. Adderar en tillståndsobservation i tidsserien — korrosion vid år 12, sprickbildning vid år 18 + +Styr flödet aktivt: **bounties** på objekt grafen saknar. "Vi behöver Model SL-400 fotograferad underifrån" blir ett uppdrag i appen. + +Verkligheten uppdaterar grafen. Grafen gör AI:n bättre på verkligheten. + +Loopen är stängd. + +⸻ + +## Låt andra bygga åt er + +### Tillverkarportalen + +Tillverkare får göra anspråk på sina produktsidor och underhålla dem själva — som Google Business Profile. + +Deras incitament: den som finns i grafen blir rekommenderad ersättare. Den som inte finns blir aldrig föreslagen. + +Verifierad tillverkardata + oberoende fältverifiering = trovärdighet ingen part kan uppnå ensam. + +### Expertcommunityn + +Installatörer, pensionerade ingenjörer, entusiaster — de finns, och de är hängivna. + +Ryktesystem, AI-moderering, attribution. Wikipedia bevisade modellen. + +Båda kanalerna skalar er datainsamling utan att skala era kostnader. + +⸻ + +## Prioritering: värdetäthet, inte jämn täckning + +Koka inte oceanen jämnt. + +1. **Objektklasser med hög utbytesekonomi först:** belysning, brunnar och betäckningar, beläggningstyper, vägmärken, kabelskåp. Stora installerade baser, frekventa utbyten, stark efterfrågan på identifiering. +2. **Geografier där Zoomers och kunder finns** — där stängs loopen snabbast. +3. **Efterfrågestyrt därefter:** varje misslyckad identifiering i produktion köar automatiskt nästa researchinsats. + +Global ontologi från dag ett. Globalt djup byggs där det betalar sig. + +⸻ + +## Teknisk stack (kort) + +* Propertygraf som kärna +* Vektordatabas för bild- och textembeddings +* Objektlagring för bevis (bilder, dokument) +* **Identify-API:** foto in → rankade kandidater med konfidens ut +* Full versionshistorik och audit trail — grafen får aldrig glömma +* Agentorkestrering som driver fabrikslinjerna + +Bygg pipelinen som produkten. Grafen är output. + +⸻ + +## SaaS-lagret — monetariseringsytor ovanpå grafen + +Grafen säljs aldrig. Åtkomsten säljs. + +* **Kommuner och förvaltare** — asset intelligence, livscykelprognoser, "vilka av våra armaturer har känd vatteninträngningsrisk?" → abonnemang per förvaltad volym +* **Entreprenörer och servicebolag** — identifiering, reservdelar, ersättare i fält → per användare +* **Tillverkare** — marknadsdata (var finns min installerade bas? vad ersätter konkurrenterna?) + premiumproduktsidor → abonnemang +* **AI-bolag och integratörer** — identify- och query-API → usage-based + +Varje kundsegment matar dessutom tillbaka data. + +**Kunderna betalar för att göra grafen bättre.** + +⸻ + +## Tidplan + +### 0–90 dagar + +* Ontologi v1: ~50 objektklasser, globalt designad från start +* Fabrikslinje 1–2 i drift: 100 000+ dokument skördade, extraktion igång +* Tre beachhead-klasser på djupet — förslag: vägbelysning, brunnsbetäckningar, vägmärken +* 10 000+ produktmodeller med Landvex-ID +* Vision-modell v1 tränad på befintligt + skördat bildmaterial + +### Månad 3–12 + +* Entitetsupplösning och verifieringslinje i full drift +* Zoomer-loopen live: fältbilder verifierar grafen +* Tillverkarportal i beta med 20–50 tillverkare +* 25+ objektklasser, tre marknader (t.ex. Norden, Tyskland, sydöstra USA) +* Identify-API i beta hos första betalande kunder + +### Månad 12–24 + +* 100+ objektklasser, 1M+ produktmodeller +* Landvex-ID refereras i upphandlingar och tredjepartssystem +* API-ekosystem: andra bygger på grafen +* Fabriken självfinansierande via SaaS-intäkter + +⸻ + +## Mätetal som styr allt + +* **Täckning** — andel objekt i fält som AI:n kan identifiera (norrstjärnan) +* Träffsäkerhet top-1 och top-3 +* Andel fakta med källa och konfidenspoäng (mål: 100 %) +* Tid från "okänt objekt" till "dokumenterat objekt" +* **Kostnad per verifierat faktum** — ska sjunka varje kvartal + +Om kostnaden per faktum inte sjunker är fabriken trasig. + +⸻ + +## Risker — och skydden + +**Upphovsrätt.** Fakta är fria, uttryck är skyddat. Lagra extraherade fakta och länkar till källor — inte kopior av skyddade dokument. Egna fältbilder är er egendom, fullt ut. + +**"Kända problem"-sektionerna.** Att publicera fel hos namngivna produkter kräver rigorös källhänvisning: återkallelser, servicebulletiner, verifierade fältobservationer. Utan det: juridisk risk. Med det: er mest värdefulla och svårkopierade data. + +**Datakvalitet och förgiftning.** Konfidens + provenance + verifieringslinje. Tillverkardata märks som partsinlaga tills den fältverifierats. + +**Konkurrens.** Dokument kan alla skörda. Verifierad fältdata över tid kan ingen ta ikapp. Farten på flyhjulet är försvaret. + +⸻ + +## Teamet + +Litet kärnteam, stor agentflotta. + +År 1: 5–7 personer. + +* En ontologi- och domänlead +* Två graf-/dataingenjörer +* En till två ML-ingenjörer +* En agent-ops som driver fabriken + +Agenterna gör volymarbetet. Människorna designar schemat, löser entitetskonflikter och verifierar det viktiga. + +**Skalning sker i beräkning, inte i huvuden.** + +⸻ + +## Kärnan + +Ni bygger inte en databas över infrastruktur. + +Ni bygger maskinen som bygger databasen — och flyhjulet som gör att varje foto, varje kund och varje tillverkare gör den bättre. + +Den som äger verklighetens identiteter äger nästa lager av AI för den fysiska världen. diff --git a/projects/landvex/40-strategi/landvex-pilotpitch.pptx b/projects/landvex/40-strategi/landvex-pilotpitch.pptx new file mode 100644 index 0000000000000000000000000000000000000000..89e66f07ea25f83d383879a6122201d74de8c49f GIT binary patch literal 170939 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 z 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 literal 0 HcmV?d00001 diff --git a/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-tier1.md b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-tier1.md new file mode 100644 index 000000000..65d6710a8 --- /dev/null +++ b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-tier1.md @@ -0,0 +1,55 @@ +# Landvex IOL — Leveransrapport Tier 1 +## Forskningsvåg 1: 20 klassposter, 2026-07-04 + +⸻ + +## Vad som levererats + +Forskningsprotokollet (steg 1–7) har körts på samtliga 20 Tier 1-klasser. Resultat: 20 kompletta klassposter enligt schemat, fördelade på fyra filer: + +* `lvx-klassposter-trp.json` — 8 poster (belysning, vägmärken, signaler, markering, räcken, hållplats) +* `lvx-klassposter-vat.json` — 3 poster (betäckning, galler, brandpost) +* `lvx-klassposter-eln.json` — 4 poster (kabelskåp, elstolpe, nätstation, laddstation) +* `lvx-klassposter-tel-prk.json` — 5 poster (telekomskåp, mast, pollare, papperskorg, cykelställ) + +Varje post innehåller teknik, geografi, standarder med roll per marknad, AI-block (kännetecken, särskiljare, förväxlingsrisker, kameravinklar, OCR), problem, relationer och proveniens med käll-URL:er. + +⸻ + +## Källäge: 14 källbelagda, 6 obekräftade + +| Nivå | Antal | Klasser | +|---|---|---| +| **Källbelagd** (webbkälla verifierad denna våg) | 14 | belysningsstolpe, armatur, vägmärke, signalhuvud, signalskåp, vägmarkering, vägräcke, brunnsbetäckning, dagvattengaller, brandpost, elstolpe, nätstation, laddstation, mobilmast | +| **Obekräftad** (kunskapsbaserad, väntar källa) | 6 | hållplatsväderskydd, kabelskåp, telekomskåp, pollare, papperskorg, cykelställ | + +De sex obekräftade är klasser med svag öppen standardisering — de identifieras via operatörs- och kommunprogram snarare än standarder. De källbeläggs i våg 2 via program- och tillverkardokumentation. + +⸻ + +## Nyckelfynd med källa (urval) + +* **Vägmärken US:** MUTCD 11:e utgåvan med Revision 1 (dec 2025) är gällande; delstatsadoption krävdes senast 18 jan 2026. Regelverksskiften på klassnivå = daterbara generationsskiften i fält. +* **Armaturer:** ANSI C136.15-etiketten anger lamptyp och wattal utvändigt — snabbaste US-identifieringen. Zhaga Book 18 vs NEMA-sockel skiljer EU/US-installationer. +* **Källbelagt klassproblem:** lila gatubelysning orsakad av fosfor-delaminering i CSP-LED tillverkade ca 2017–2019 — perfekt exempel på "känt problem" AI:n kan flagga från foto. +* **Elstolpar:** EPA:s penta-utfasning (2022; lager t.o.m. feb 2027) gör impregneringsmedlet till en daterbar egenskap; birthmark-märkningen på stolpen är OCR-guld. +* **Laddstationer:** SAE J3400/NACS ersätter gradvis CCS1 i Nordamerika — kontaktnivån får en egen ersättningskedja i grafen. +* **Betäckningar:** klapper, sättning och stöld nu källbelagda som klassproblem (inte längre platshållare). + +⸻ + +## Policyefterlevnad + +* Alla fakta bär källa i `proveniens.kallor`; endast referenser och metadata har sparats — inget standardinnehåll. +* Problem utan källa är markerade **PLATSHÅLLARE — får ej publiceras**. De blir researchjobb i våg 2, inte publika påståenden. +* Tillverkarlistor är märkta `exempel_tillverkare` (kunskapsbaserade exempel, ej marknadsandelsdata) tills marknadskartan i modellvågen belägger dem. + +⸻ + +## Nästa våg (förslag) + +1. **Källbelägg de 6 obekräftade** via operatörs-/kommunprogram och tillverkardokumentation. +2. **Produktmodellskiktet (LVX-P)** för topp 5: armaturer, brunnsbetäckningar, kabelskåp, vägmärken, brandposter — modellfamiljer, revisioner, produktionsperioder. +3. **Zoomer-bounties från OCR-fälten:** typskyltar på armaturer, birthmarks på elstolpar, gjutmärken på betäckningar, NEMA/Zhaga-socklar, hydrantmärkning, site-ID på master. Varje kategori tränar visionsmodellen och fältverifierar posterna. + +Säg vilken våg vi kör — jag kan börja direkt. diff --git a/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag2.md b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag2.md new file mode 100644 index 000000000..43f06c607 --- /dev/null +++ b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag2.md @@ -0,0 +1,63 @@ +# Landvex IOL — Leveransrapport våg 2 +## Full källbeläggning + produktmodellskiktet startat, 2026-07-04 + +⸻ + +## Vad som levererats + +**Spår 1 — de sex sista klasserna källbelagda.** `lvx-klassposter-vag2-uppdaterade.json` innehåller uppdaterade poster för hållplatsväderskydd, kabelskåp, telekomskåp, pollare, papperskorg och cykelställ. De ersätter versionerna i våg 1-filerna. + +**Resultat: 20 av 20 Tier 1-klasser är nu källbelagda.** + +**Spår 2 — produktmodellskiktet (LVX-P) startat.** `lvx-produktmodeller-vag2.json` innehåller de första 17 modellposterna, alla källbelagda: + +| Klass | Modeller | +|---|---| +| Armaturer | GE Evolve ERMC → ERS → ERL (hela kedjan), AEL Autobahn (7 varianter), Schréder Ampera → Ampera EVO, Philips Luma gen2 | +| Vägmärkesfolier | 3M Diamond Grade DG3 serie 4000, 3M HIP 3930 | +| Betäckningar | PAM PAMREX, Neenah R-1640/1642-serien | +| Kabelskåp | ABB Kabeldon CDC-serien | +| Brandposter | Mueller Super Centurion, M&H 929, AVK Series 27, American-Darling B-84-B, Waterous Pacer | + +⸻ + +## Grafen börjar leva: första ersättningskedjorna + +* **GE Evolve:** ERMC (2009) → ERS Scalable (2012, nu utgången) → ERL-serien (aktiv). Tillverkarbekräftad kedja — exakt den historik-dimension visionen kräver. +* **Schréder:** Ampera → Ampera EVO. +* **Laddkontakter (från våg 1):** CHAdeMO → CCS1 → SAE J3400. + +När QUIXZOOM ser en ERS i fält kan Landvex nu svara: utgången, ersatt av ERL — och vem som säljer ersättaren. + +⸻ + +## Identifieringsguld ur våg 2 + +* **Philips Luma gen2 bär Service tag** — en QR-kod som gör varje armaturindivid unikt identifierbar med dokumentation. Klass → modell → individ i en skanning. +* **American-Darling B-84-B levereras med 2D-streckkod** för GIS-inläsning av tillverkningsdata — hydranterna digitaliserar sig själva. +* **PAMREX** känns igen på gångjärnslocket (130°-öppning) och namnet gjutet i godset. +* **UK-telekom:** nästan all Openreach-gatuutrustning är grön; PCP-skåp vs FTTC-skåp vs G.fast-podd är läsbara typer. +* **Sheffield-bygeln** är de facto-standard för cykelparkering — och tapper-plattan nertill avslöjar tillgänglighetsanpassade program. + +⸻ + +## Status för biblioteket + +| Skikt | Antal | Källäge | +|---|---|---| +| Domäner | 9 | — | +| Objektklasser Tier 1 | 20 | 20/20 källbelagda | +| Produktmodeller (LVX-P) | 17 | 17/17 källbelagda | +| Problem-poster med källa | 10+ | resten flaggade PLATSHÅLLARE | + +Detta är kärnan i det API-kunder sedan betalar för: klass → modell → status → ersättare, med källa på varje led. + +⸻ + +## Nästa våg (förslag) + +1. **Bredda modellkatalogen** per klass: fler tillverkare per marknad (Ulefos/EJ-modeller, Valtir-räckessystem, Kempower/Alpitronic-laddare, Econolite-skåpfamiljer) — samma protokoll, samma format. +2. **Zoomer-bounties från OCR-fälten:** typskyltar, Service tag-QR, birthmarks, gjutmärken, hydrantgjutningar, site-ID — varje foto fältverifierar en post och tränar visionsmodellen. +3. **Tier 2-klasser:** kantsten, betäckningsram, nedstigningsbrunn, skyltstolpe, signalstolpe, fundament, mätarskåp. + +Säg vilken så kör jag. diff --git a/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag3.md b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag3.md new file mode 100644 index 000000000..0dd0e8d4a --- /dev/null +++ b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag3.md @@ -0,0 +1,49 @@ +# Landvex IOL — Leveransrapport våg 3 +## Tier 2 + bountyprogram + modellkatalog, 2026-07-04 + +⸻ + +## Vad som levererats + +**1. Tier 2-taxonomin** (`lvx-taxonomi-tier2.json`) — 17 nya klasser med permanenta ID:n, plus **relationskartan** som mappar alla platshållartexter i Tier 1-posterna till riktiga ID:n. Grafen kan nu städas maskinellt: "Betäckningsram (Tier 2 — LVX-ID tilldelas)" → `LVX-VAT-0201`, och så vidare. Räckesterminal fick egen klass (`LVX-TRP-0210`) — terminalerna är egna produktfamiljer med egna krocktest. + +**2. Zoomer-bountyprogrammet** (`lvx-zoomer-bountyprogram.md` + `lvx-zoomer-bounties-vag1.json`) — flyhjulet aktiverat. 16 konkreta bounties härledda ur klassposternas OCR-fält, med poängmodell, femstegsverifiering, hårda säkerhetsregler och integritetsskydd. SaaS-kopplingen är inbyggd: när en API-kund får "obekräftad" som svar skapas automatiskt en bounty — betalande efterfrågan styr fältarbetet. + +**3. Nio nya produktmodeller** (`lvx-produktmodeller-vag3.json`) — biblioteket är nu uppe i **26 modeller**, alla källbelagda: + +| Klass | Nytt i våg 3 | +|---|---| +| Betäckningar | Ulefos (grundat 1657 — fältexempel med gjutkod verifierat), EJ ERGO/ERGO XL | +| Vägräcken | MGS 31-tum (generiskt, MASH TL-3 — skarv mellan stolpar är signaturen) | +| Räckesterminaler | Valtir SoftStop (MASH TL-3, ny klass LVX-TRP-0210) | +| Signalskåp | Econolite Blue Series (NEMA TS 2) | +| Laddstationer | Kempower Satellite (distribuerad arkitektur), Alpitronic Hypercharger HYC-serien, Tesla Supercharger V3 → V4 | + +⸻ + +## Grafen växer: nya kedjor och signaturer + +* **Tesla V3 → V4:** ny tillverkarbekräftad generationskedja. V4 känns igen på kortläsare + display och dekalen 1000 V/615 A; "true V4" på det separata 1,2 MW-kabinettet. +* **Arkitektur som klassificerare:** smal stolpe + separat kraftenhet = distribuerat system (Kempower, HYC1000, Tesla true V4); bred monolit = all-in-one (HYC400). AI:n kan läsa laddplatsens topologi, inte bara stolpen. +* **MGS-signaturen:** balkskarv mitt emellan stolparna + 31-tumshöjd skiljer moderna räcken från äldre — synligt från trottoaren, inget OCR behövs. + +⸻ + +## Status för biblioteket + +| Skikt | Antal | +|---|---| +| Domäner | 9 | +| Objektklasser | 37 (20 Tier 1 källbelagda + 17 Tier 2) | +| Produktmodeller (LVX-P) | 26, alla källbelagda | +| Aktiva bounties | 16 (täcker 12 Tier 1-klasser) | + +⸻ + +## Nästa våg (förslag) + +1. **Datastädning:** kör relationskartan över alla poster, koppla ihop grafen. +2. **Tier 2-forskningsprotokoll:** kör de sju stegen på de 17 nya klasserna. +3. **Kunddemo/pilot-API:** klass → modell → status → ersättare med källa på varje led — paketet finns nu för att visa första betalande kunden. + +Säg vilken så kör jag. diff --git a/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag4.md b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag4.md new file mode 100644 index 000000000..70a1d8e52 --- /dev/null +++ b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag4.md @@ -0,0 +1,51 @@ +# Landvex IOL — Leveransrapport våg 4 +## Grafen ihopkopplad + pilot-API-paketet, 2026-07-04 + +⸻ + +## Vad som levererats + +**1. Datastädningen — körd på riktigt.** Konsolideringsscriptet (Python, i containern) läste samtliga vågars filer, arbetade in våg 2-uppdateringarna, mappade om relationerna enligt Tier 2-relationskartan och validerade varje post mot schemat. + +Resultat: + +| Mätpunkt | Utfall | +|---|---| +| Klassposter konsoliderade | 20 (6 våg 2-versioner inarbetade) | +| Produktmodeller | 26 | +| Relationer ommappade till Tier 2-ID | 14 | +| Grafkanter totalt | 115 | +| — upplösta LVX→LVX-kanter | 61 | +| — standardkanter (foljer_standard) | 46 | +| Olösta textnoder kvar | 7 | +| **Valideringsfel** | **0** | + +De 7 kvarvarande textnoderna är äkta framtidsklasser: nättopologierna (access-, distributions-, mellanspänningsnät), vägbana/beläggning, teknikbod, vattenledningsnät samt fleet-referensen "CCS1-utrustade stationer". De ligger listade i graffilen och blir Tier 2/3-beslut. + +**Filer:** `lvx-klassposter-master-v1.json` (ersätter de fem tidigare klasspostfilerna som arbetskopia) och `lvx-graf-kanter-v1.json` (hela grafen som kantlista). + +**Ontologibeslut v1.1:** predikatet `tillhor_klass` (produktmodell → objektklass) infört för grafexporten. + +**2. Pilot-API-paketet** (`lvx-pilot-api-spec.md`) — produkten ovanpå biblioteket. Sex endpoints, svarskontrakt där verifieringsnivå, konfidens och källor är obligatoriska, PLATSHÅLLARE-filtrering inbyggd i serialiseringen (juridiken sitter i kontraktet), feedback-endpoint som skapar bounties, och SaaS-paketeringen Pilot / Pro / Enterprise med prisprinciper. + +**3. Golden demo-svar** (`lvx-api-demosvar.json`) — tre säljcase på riktiga poster: + +* **Case 1:** ERS-armatur identifierad → *utgången, ersatt av ERL* — ersättningskedjan är svaret +* **Case 2:** hydrant åldersbestämd till 1998 direkt ur gjutgodset — OCR-guldet i praktiken +* **Case 3:** okänd modell → ärlig klasskandidat + automatiskt skapad bounty — flyhjulet synligt för kunden + +⸻ + +## Vad detta betyder + +Biblioteket är inte längre bara filer — det är en validerad graf med noll fel och ett säljbart kontrakt ovanpå. Pilotdemon kan hållas med materialet som ligger i outputs-mappen: spec + tre cases + grafen som bevis. + +⸻ + +## Nästa våg (förslag) + +1. **Tier 2-forskningsprotokollet** — kör de sju stegen på de 17 nya klasserna (störst datalyft). +2. **Pilotpitch-deck** — paketera våg 1–4 till presentation för första designpartnern. +3. **Tillverkarportalen v0** — spec för hur tillverkare verifierar sina egna modellposter (fjärde verifieringsnivån). + +Säg vilken så kör jag. diff --git a/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag5.md b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag5.md new file mode 100644 index 000000000..ca0a1840c --- /dev/null +++ b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag5.md @@ -0,0 +1,53 @@ +# Landvex IOL — Leveransrapport våg 5 +## Tier 2-forskningsprotokollet, 2026-07-04 + +⸻ + +## Vad som levererats + +**Alla 17 Tier 2-klasser har nu fullständiga poster** enligt forskningsprotokollet — 6 nya webbverifierade standardspår plus återanvändning av tidigare vågors källor. + +| Fil | Innehåll | +|---|---| +| `lvx-klassposter-tier2-trp.json` | 10 poster: skyltstolpe, signalstolpe/mastarm, fundament, styrnod, vägportal, kantsten, reflexstolpe, broräcke, bullerskydd, räckesterminal | +| `lvx-klassposter-tier2-ovriga.json` | 7 poster: betäckningsram, nedstigningsbrunn, dagvattenbrunn, ventilbetäckning, mätarskåp, kabelbrunn, parkbänk | +| `lvx-klassposter-master-v2.json` | Hela biblioteket konsoliderat — 37 klasser | +| `lvx-graf-kanter-v2.json` | Grafen v2 | + +**Nya källbelagda standardspår (denna våg):** + +* **EN 12767** (+A1:2024) — passiv säkerhet för stolpar och fundament, klasserna HE/LE/NE → skyltstolpe, fundament +* **EN 1340 / EN 1343** — betong- respektive naturstenskantsten (UK-väghållarkrav MCHW verifierat) → kantsten +* **EN 12899-3** — reflexstolpar och retroreflektorer, inkl. påkörningskrav och klasser som WL1/D1–D3 → reflexstolpe +* **EN 14388 + EN 1793/1794** — bullerskyddens produktstandard, akustik (DLR/DLα) och mekanik → bullerskydd +* **ASTM C478 / AASHTO M199** — prefabbrunnsdelar (ringar, konor, justerringar) → nedstigningsbrunn; EN 1917 markerad "kartläggs" +* **ANSI/SCTE 77 + NEC 314.30** — kabelbrunnars tier-lastklassning (Tier 5/8/15/22 = designlast × 1000 lb, provlast +50 %) → kabelbrunn + +⸻ + +## Bibliotekets tillstånd efter konsolidering v2 + +| Mätpunkt | v1 (våg 4) | **v2 (nu)** | +|---|---|---| +| Objektklasser | 20 | **37** | +| — källbelagda | 20 | **31** | +| — obekräftade | 0 | 6 | +| Produktmodeller | 26 | 26 | +| Grafkanter | 115 | **167** | +| — LVX-upplösta | 61 | **79** | +| — standardkanter | 46 | **74** | +| Valideringsfel | 0 | **0** | + +De 6 obekräftade (signalstolpe, fundament, vägportal, dagvattenbrunn, ventilbetäckning, parkbänk) är ärligt markerade och blir nästa researchmål — flera väntar på AASHTO LTS- och EN 1917-källor. + +**Olösta textnoder: 13.** Tier 2-relationerna pekade ut nya framtidsklasser (avstängningsventil, brokantbalk, dagvattennät m.fl.) — grafen talar nu själv om vad Tier 3 bör innehålla. Två varianter av "Vägbana/beläggning" ska slås ihop i nästa städning. + +⸻ + +## Nästa våg (förslag) + +1. **Pilotpitch-deck** — våg 1–5 paketerat som presentation för första designpartnern. +2. **Källbelägg de 6 obekräftade** + EN 1917 (litet, fokuserat researchpass). +3. **Tillverkarportalen v0** — spec för tillverkarbekräftad-nivån. + +Säg vilken så kör jag. diff --git a/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag7.md b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag7.md new file mode 100644 index 000000000..63a1403ab --- /dev/null +++ b/projects/landvex/40-strategi/rapporter/lvx-leveransrapport-vag7.md @@ -0,0 +1,53 @@ +# Landvex IOL — Leveransrapport våg 7 +## Ingest-automationen byggd och körd, 2026-07-04 + +⸻ + +## Vad som levererats + +**Datafabriken finns nu som körbar kod.** Kedjan Källor → Skördare → Källpaket → Extraktor → **Ingest** → Master/Graf/Bounties är byggd, dokumenterad och demonstrerad på en riktig batch. + +| Fil | Roll | +|---|---| +| `ingest.py` | Pipelinens deterministiska kärna: entitetsupplösning, merge-policy, ID-mintning, validering, grafexport, bounty-generator | +| `lvx-ingest-spec.md` | Arkitektur, driftköer, kostnadsmått, miljönot | +| `lvx-extraktionsprompt.md` | LLM-kontraktet för extraktionssteget | +| `lvx-id-register.json` | ID-serier — pipelinen mintar, skriver tillbaka, återanvänder aldrig | +| `intag/kallpaket-vag7.json` + `intag/kandidatposter-vag7.json` | Demobatchen: skördarens referat och extraktorns patchar | + +**Merge-policyn i korthet:** källor unionas på URL, standarder ersätts på normaliserad beteckning ("kartläggs" → skarp utgåva), tomma fält fylls men ifyllda skrivs aldrig över (konflikt ⇒ granskningskö), nivålyft endast uppåt och källbelagd kräver källor. + +⸻ + +## Demokörningen — verkliga siffror + +3 nya skördepass (AASHTO LTS, EN 1917, ASTM C913) + 1 korsreferens utan ny skörd: + +| Mätpunkt | Utfall | +|---|---| +| Uppdaterade poster | 5 | +| Nya poster (ID mintat) | 1 — **LVX-P-0000027 EJ SELFLEVEL** (register → 28) | +| Nivålyft obekräftad → källbelagd | **4** (signalstolpe, fundament, vägportal, dagvattenbrunn) | +| Nya källor / standardposter | 9 / 9 (varav EN 1917 "kartläggs" ersatt av EN 1917:2002) | +| Konflikter / valideringsfel | **0 / 0** | +| Auto-genererade bounty-förslag | 17 (`lvx-bounty-kandidater-vag7.json`) | + +**Biblioteket efter v3:** 37 klasser — **35 källbelagda**, 2 obekräftade (ventilbetäckning, parkbänk) · 27 modeller · 176 grafkanter (80 LVX-upplösta, 82 standardkanter). + +Notera korsreferens-lyftet: fundamentklassen blev källbelagd med en redan skördad källa — noll ny skördkostnad. Det är exakt den sortens gratis-lyft produktionspipelinen ska hitta själv, och det syns direkt i kärnmåttet kostnad per verifierat faktum. + +⸻ + +## Driftmodellen (SaaS-kopplingen) + +Tre köer matar skördaren: schemalagd omkontroll, **kunddriven** (svaga API-svar och feedback skapar riktade skördejobb + bounties) och fältkön (godkända Zoomer-foton lyfter till fältverifierad). Betald efterfrågan styr var fabriken gräver — intäkten bär datakostnaden. + +⸻ + +## Nästa våg (förslag) + +1. **Fältflödet:** individposter (LVX-I) + foto-ingest-steget som sätter *fältverifierad* — sista pusselbiten i trappan. +2. **Skörda med automationen:** kör 2–3 nya batchar (t.ex. BYG-domänen eller fler modeller) genom exakt samma pipeline. +3. **Tillverkarportalen v0:** flödet som sätter *tillverkarbekräftad*. + +Säg vilken så kör jag. diff --git a/projects/landvex/README.md b/projects/landvex/README.md new file mode 100644 index 000000000..e26292324 --- /dev/null +++ b/projects/landvex/README.md @@ -0,0 +1,84 @@ +# Landvex Infrastructure Object Library (IOL) + +> Kunskapsgraf över visuellt identifierbar fysisk infrastruktur. +> Grafen är produkten. Allt annat — appar, API:er, dashboards — är gränssnitt mot grafen. + +## Struktur + +``` +projects/landvex/ +├── 00-styrning/ # Validering, verifiering +├── 10-data/ # Master-data (JSON) +│ ├── lvx-klassposter-master-v3.json +│ ├── lvx-produktmodeller-*.json +│ ├── lvx-graf-kanter-v3.json +│ └── lvx-id-register.json +├── 20-automation/ # Ingest-pipeline +│ ├── ingest.py +│ └── intag/ # Kandidatposter per våg +├── 30-produkt/ # API-spec, demosvar +├── 40-strategi/ # Genome-strategi, IOL-spec +├── api/ # FastAPI Identify-API +├── db/ # Neo4j-laddning +├── scripts/ # Export, bygghjälp +├── arkiv/ # Ersatta versioner +└── build.sh # Master byggscript +``` + +## Snabbstart + +```bash +# Bygg & kör allt +./build.sh + +# Endast API (förutsätter Neo4j) +docker compose up -d api + +# Endast data-export +python3 scripts/export_csv.py +python3 db/load_to_neo4j.py +``` + +## API + +| Endpoint | Beskrivning | +|----------|-------------| +| `GET /health` | Status + antal poster/kanter | +| `POST /v0/identify` | Bild → rankade kandidater | +| `GET /v0/objects/{lvx_id}` | Komplett post | +| `GET /v0/objects/{lvx_id}/succession` | Ersättningskedja | +| `GET /v0/search?q=...` | Fritextsök | +| `GET /v0/standards/{b}/objects` | Standard → objekt | +| `POST /v0/feedback` | Fel/okänt → bounty | + +## Data + +- **64 noder** (37 klasser + 27 modeller) +- **176 kanter** (80 LVX-upplösta, 82 standard, 14 textnoder) +- **9 domäner**: TRP, ELN, VAT, TEL, BYG, PRK, JVG, HMN, FLG +- **Verifieringsnivåer**: obekräftad → källbelagd → fältverifierad → tillverkarbekräftad + +## Arkitektur + +``` +Ingest Pipeline API Layer Graph DB +───────────────────────────────────────────────────────── +Kandidatposter → resolve/merge → Neo4j (propertygraf) + ↓ ↓ ↓ +Extraktion → Identify API → Query/Search + ↓ ↓ ↓ +Zoomer-bounties ← Feedback ← Succession +``` + +## Regler + +1. **Fakta bär alltid källa** — inga påståenden utan proveniens +2. **Landvex-ID är permanent** — namn ändras, ID aldrig +3. **Konfidens exponeras alltid** — kunden ser aldrig osäkert som sanning +4. **Problem utan källa filtreras bort** — vid API-serialisering + +## Dokument + +- [Genome-strategi](40-strategi/landvex-genome-strategi.md) +- [IOL-grundspec](40-strategi/iol-grundspecifikation.md) +- [API-spec](30-produkt/lvx-pilot-api-spec.md) diff --git a/projects/landvex/api/Dockerfile b/projects/landvex/api/Dockerfile new file mode 100644 index 000000000..f33919726 --- /dev/null +++ b/projects/landvex/api/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.12-slim +WORKDIR /app +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt +COPY main.py . +EXPOSE 8080 +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"] diff --git a/projects/landvex/api/main.py b/projects/landvex/api/main.py new file mode 100644 index 000000000..02b8059fc --- /dev/null +++ b/projects/landvex/api/main.py @@ -0,0 +1,231 @@ +#!/usr/bin/env python3 +""" +Landvex Identify API v0 +FastAPI-implementation av pilot-specen. +""" +import json +import hashlib +from pathlib import Path +from typing import List, Optional +from datetime import datetime + +from fastapi import FastAPI, HTTPException, File, UploadFile, Form +from pydantic import BaseModel, Field + +# ─── ladda data vid startup ───────────────────────────────────────── +DATA_DIR = Path("/app/data") + +poster = {} # lvx_id -> post +kanter = [] # grafkanter +index_slug = {} # slug -> lvx_id +index_namn = {} # sv+en -> lvx_id + +def ladda(): + global poster, kanter, index_slug, index_namn + with open(DATA_DIR / "lvx-klassposter-master-v3.json", encoding="utf-8") as f: + for p in json.load(f)["poster"]: + poster[p["lvx_id"]] = p + if p.get("slug"): index_slug[p["slug"]] = p["lvx_id"] + for lang in ("sv", "en"): + if p.get("namn", {}).get(lang): + index_namn[p["namn"][lang].lower()] = p["lvx_id"] + # modeller + for fn in ("lvx-produktmodeller-vag2.json", "lvx-produktmodeller-vag3.json", "lvx-produktmodeller-auto.json"): + fp = DATA_DIR / fn + if fp.exists(): + with open(fp, encoding="utf-8") as f: + for p in json.load(f).get("poster", []): + poster[p["lvx_id"]] = p + # graf + with open(DATA_DIR / "lvx-graf-kanter-v3.json", encoding="utf-8") as f: + kanter = json.load(f)["kanter"] + +ladda() + +# ─── Pydantic-modeller ────────────────────────────────────────────── +class Kalla(BaseModel): + titel: str + url: Optional[str] = None + +class IdentifyKandidat(BaseModel): + lvx_id: str + posttyp: str + namn: dict + konfidens: float = Field(..., ge=0, le=1) + verifieringsniva: str + kannetecken_match: List[str] = [] + ocr_falt: Optional[dict] = None + +class IdentifyResponse(BaseModel): + bild_hash: str + kandidater: List[IdentifyKandidat] + bounty_skapad: Optional[str] = None + besked: str + +class ObjectResponse(BaseModel): + lvx_id: str + posttyp: str + namn: dict + doman: str + verifieringsniva: str + konfidens: float + kallor: List[Kalla] + teknik: Optional[dict] = None + ai: Optional[dict] = None + problem: List[dict] = [] + relationer: List[dict] = [] + +class FeedbackRequest(BaseModel): + lvx_id: Optional[str] = None + bild_hash: Optional[str] = None + kommentar: str + position: Optional[str] = None + +class FeedbackResponse(BaseModel): + bounty_id: str + status: str + +# ─── helpers ──────────────────────────────────────────────────────── +def relaterade(obj_id: str): + """Hämta alla kanter där objektet är subjekt.""" + return [k for k in kanter if k["subjekt"] == obj_id] + +def succession(obj_id: str): + """Ersättningskedja framåt och bakåt.""" + ut = {"ersatter": [], "ersatts_av": []} + for k in kanter: + if k["subjekt"] == obj_id: + if k["predikat"] == "ersatter": ut["ersatter"].append(k["objekt"]) + if k["predikat"] == "ersatts_av": ut["ersatts_av"].append(k["objekt"]) + if k["objekt"] == obj_id: + if k["predikat"] == "ersatter": ut["ersatts_av"].append(k["subjekt"]) + if k["predikat"] == "ersatts_av": ut["ersatter"].append(k["subjekt"]) + return ut + +def hash_bild(data: bytes) -> str: + return hashlib.sha256(data).hexdigest()[:16] + +# ─── FastAPI app ──────────────────────────────────────────────────── +app = FastAPI( + title="Landvex Object API", + description="Identify, query and feedback API for infrastructure objects.", + version="0.1.0" +) + +@app.get("/health") +def health(): + return {"status": "ok", "poster": len(poster), "kanter": len(kanter)} + +@app.post("/v0/identify", response_model=IdentifyResponse) +async def identify( + bild: UploadFile = File(...), + position: Optional[str] = Form(None) +): + """ + Bild in → rankade kandidater med konfidens. + I piloten: mockad vision — svarar med de mest kompletta posterna. + """ + data = await bild.read() + bh = hash_bild(data) + + # TODO: vision-modell → feature extraction → vektorsök + # Pilot: returnera alla Tier 1-klasser sorterade efter konfidens + kandidater = [] + for p in poster.values(): + if p.get("tier") != 1 and p.get("posttyp") != "objektklass": + continue + prov = p.get("proveniens", {}) + k = IdentifyKandidat( + lvx_id=p["lvx_id"], + posttyp=p["posttyp"], + namn=p.get("namn", {}), + konfidens=prov.get("konfidens", 0.5), + verifieringsniva=prov.get("verifieringsniva", "obekraftad"), + kannetecken_match=p.get("ai", {}).get("kannetecken", [])[:3], + ) + kandidater.append(k) + + kandidater.sort(key=lambda x: x.konfidens, reverse=True) + top = kandidater[:5] + + # Om ingen når modellnivå → bounty + bounty = None + besked = "Kandidater hittade" + if not any(k.konfidens > 0.75 for k in top): + bounty = f"BNTY-{bh[:8]}" + besked = "Svag konfidens — bounty skapad för fältverifiering" + + return IdentifyResponse( + bild_hash=bh, + kandidater=top, + bounty_skapad=bounty, + besked=besked + ) + +@app.get("/v0/objects/{lvx_id}", response_model=ObjectResponse) +def get_object(lvx_id: str): + p = poster.get(lvx_id) + if not p: + raise HTTPException(status_code=404, detail="Objekt ej funnet") + prov = p.get("proveniens", {}) + return ObjectResponse( + lvx_id=p["lvx_id"], + posttyp=p["posttyp"], + namn=p.get("namn", {}), + doman=p.get("doman", ""), + verifieringsniva=prov.get("verifieringsniva", "obekraftad"), + konfidens=prov.get("konfidens", 0), + kallor=[Kalla(**k) for k in prov.get("kallor", [])], + teknik=p.get("teknik"), + ai=p.get("ai"), + problem=p.get("problem", []), + relationer=relaterade(lvx_id), + ) + +@app.get("/v0/objects/{lvx_id}/succession") +def get_succession(lvx_id: str): + if lvx_id not in poster: + raise HTTPException(status_code=404, detail="Objekt ej funnet") + return {"lvx_id": lvx_id, **succession(lvx_id)} + +@app.get("/v0/search") +def search(q: str, doman: Optional[str] = None, verifieringsniva: Optional[str] = None): + """Fritextsök över namn och kännetecken.""" + q = q.lower() + träffar = [] + for p in poster.values(): + namn = " ".join(p.get("namn", {}).values()).lower() + kann = " ".join(p.get("ai", {}).get("kannetecken", [])).lower() + if q not in namn and q not in kann: + continue + if doman and p.get("doman") != doman: + continue + if verifieringsniva and p.get("proveniens", {}).get("verifieringsniva") != verifieringsniva: + continue + träffar.append({ + "lvx_id": p["lvx_id"], + "namn": p.get("namn", {}), + "verifieringsniva": p.get("proveniens", {}).get("verifieringsniva", "obekraftad"), + "konfidens": p.get("proveniens", {}).get("konfidens", 0), + }) + träffar.sort(key=lambda x: x["konfidens"], reverse=True) + return {"antal": len(träffar), "traffar": träffar[:20]} + +@app.get("/v0/standards/{beteckning}/objects") +def objects_by_standard(beteckning: str): + bet = beteckning.upper() + träffar = [] + for k in kanter: + if k["predikat"] == "foljer_standard" and bet in k["objekt"].upper(): + träffar.append(k["subjekt"]) + return {"standard": beteckning, "antal": len(träffar), "lvx_ids": sorted(set(träffar))} + +@app.post("/v0/feedback", response_model=FeedbackResponse) +def feedback(req: FeedbackRequest): + """Fel eller okänt objekt → bounty.""" + bid = f"BNTY-FB-{hashlib.sha256(req.kommentar.encode()).hexdigest()[:8]}" + return FeedbackResponse(bounty_id=bid, status="skapad") + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=8080) diff --git a/projects/landvex/api/requirements.txt b/projects/landvex/api/requirements.txt new file mode 100644 index 000000000..ec64fb24f --- /dev/null +++ b/projects/landvex/api/requirements.txt @@ -0,0 +1,4 @@ +fastapi>=0.110 +uvicorn[standard]>=0.29 +python-multipart>=0.0.9 +pydantic>=2.6 diff --git a/projects/landvex/arkiv/README.md b/projects/landvex/arkiv/README.md new file mode 100644 index 000000000..5fd2bbe36 --- /dev/null +++ b/projects/landvex/arkiv/README.md @@ -0,0 +1,5 @@ +# LANDVEX ARKIV v1 — EJ KANONISKT + +Historiska arbetsversioner och byggscript från utvecklingstråden. +Ersatta av landvex-produktionspaket-v1 (10-data = enda sanningskälla). +Får ALDRIG laddas i produktion — endast spårbarhet/revision. diff --git a/projects/landvex/arkiv/byggscript/bygg_manifest.py b/projects/landvex/arkiv/byggscript/bygg_manifest.py new file mode 100644 index 000000000..3d4042de3 --- /dev/null +++ b/projects/landvex/arkiv/byggscript/bygg_manifest.py @@ -0,0 +1,18 @@ +import json, hashlib +from pathlib import Path +ROT = Path("/mnt/user-data/outputs/landvex-produktionspaket-v1") +ROLL = {"00-styrning":"styrning","10-data":"data (enda sanningskälla)","20-automation":"automation","30-produkt":"produkt","40-strategi":"strategi & rapporter"} +filer = [] +for p in sorted(ROT.rglob("*")): + if p.is_file() and p.name != "MANIFEST.json": + rel = p.relative_to(ROT).as_posix() + filer.append({"sokvag": rel, "roll": ROLL[rel.split("/")[0]], + "bytes": p.stat().st_size, + "sha256": hashlib.sha256(p.read_bytes()).hexdigest()}) +man = {"paket":"landvex-produktionspaket","version":"1.0","genererad":"2026-07-04", + "statistik":{"objektklasser":37,"kallbelagda_klasser":35,"produktmodeller":27, + "grafkanter":176,"aktiva_bounties":16,"bounty_forslag":17,"valideringsfel":0}, + "kanonisk_not":"10-data/ ersätter alla tidigare versioner (master v1/v2, delfiler). Arkiv kvar i arbetsytan utanför paketet.", + "antal_filer":len(filer),"filer":filer} +(ROT/"00-styrning/MANIFEST.json").write_text(json.dumps(man,ensure_ascii=False,indent=2),encoding="utf-8") +print(f"MANIFEST: {len(filer)} filer checksummerade") diff --git a/projects/landvex/arkiv/byggscript/deck.js b/projects/landvex/arkiv/byggscript/deck.js new file mode 100644 index 000000000..960467712 --- /dev/null +++ b/projects/landvex/arkiv/byggscript/deck.js @@ -0,0 +1,328 @@ +const pptxgen = require("pptxgenjs"); +const React = require("react"); +const ReactDOMServer = require("react-dom/server"); +const sharp = require("sharp"); +const { + FaSearch, FaClipboardList, FaExclamationTriangle, FaLayerGroup, FaTree, FaIndustry, + FaTint, FaQuestionCircle, FaBullseye, FaCamera, FaCheckCircle, FaSyncAlt, FaShieldAlt, + FaExchangeAlt, FaHistory, FaRocket, FaChartLine, FaBuilding, FaLink, FaDatabase +} = require("react-icons/fa"); + +// Palett: asfalt + galvstål + signalgul (vägmarkering) +const DARK = "23272B", CARD_D = "2E343B", INK = "2A3138", BODY = "3A4149"; +const MUTED = "6B7480", MUTED_L = "AEB6BF", LIGHT = "F3F5F7", WHITE = "FFFFFF"; +const YEL = "F5B301", YEL_TINT = "FFF6DC", LINE = "D9DEE4"; +const H = "Arial", B = "Calibri", MONO = "Courier New"; + +const mkShadow = () => ({ type: "outer", color: "000000", blur: 7, offset: 2, angle: 45, opacity: 0.14 }); + +async function icon(Comp, color, size = 256) { + const svg = ReactDOMServer.renderToStaticMarkup(React.createElement(Comp, { color, size: String(size) })); + const png = await sharp(Buffer.from(svg)).png().toBuffer(); + return "image/png;base64," + png.toString("base64"); +} + +(async () => { + const P = {}; + P.search = await icon(FaSearch, "#" + INK); + P.clip = await icon(FaClipboardList, "#" + INK); + P.warn = await icon(FaExclamationTriangle, "#" + INK); + P.layer = await icon(FaLayerGroup, "#" + INK); + P.tree = await icon(FaTree, "#" + INK); + P.ind = await icon(FaIndustry, "#" + INK); + P.tint = await icon(FaTint, "#" + INK); + P.q = await icon(FaQuestionCircle, "#" + WHITE); + P.bull = await icon(FaBullseye, "#" + WHITE); + P.cam = await icon(FaCamera, "#" + WHITE); + P.check = await icon(FaCheckCircle, "#" + WHITE); + P.sync = await icon(FaSyncAlt, "#" + INK); + P.shield = await icon(FaShieldAlt, "#" + INK); + P.exch = await icon(FaExchangeAlt, "#" + INK); + P.hist = await icon(FaHistory, "#" + INK); + P.rocket = await icon(FaRocket, "#" + INK); + P.chart = await icon(FaChartLine, "#" + INK); + P.build = await icon(FaBuilding, "#" + INK); + P.link = await icon(FaLink, "#" + INK); + P.db = await icon(FaDatabase, "#" + INK); + P.clipY = await icon(FaClipboardList, "#" + INK); + P.warnY = await icon(FaExclamationTriangle, "#" + INK); + P.checkY = await icon(FaCheckCircle, "#" + INK); + + const pres = new pptxgen(); + pres.layout = "LAYOUT_16x9"; + pres.author = "Landvex"; + pres.title = "Landvex — Infrastructure Object Library, pilotpitch"; + + const title = (s, t, dark = false) => + s.addText(t, { x: 0.6, y: 0.42, w: 8.8, h: 0.7, fontFace: H, fontSize: 36, bold: true, color: dark ? WHITE : INK, margin: 0 }); + + const circleIcon = (s, data, cx, cy, d, fill) => { + s.addShape(pres.shapes.OVAL, { x: cx, y: cy, w: d, h: d, fill: { color: fill } }); + const pad = d * 0.26; + s.addImage({ data, x: cx + pad, y: cy + pad, w: d - 2 * pad, h: d - 2 * pad }); + }; + + // ---------- S1 · Titel (mörk) ---------- + let s = pres.addSlide(); + s.background = { color: DARK }; + s.addText("LANDVEX × QUIXZOOM", { x: 0.6, y: 0.55, w: 5.8, h: 0.35, fontFace: H, fontSize: 13, bold: true, color: YEL, charSpacing: 4, margin: 0 }); + s.addText([ + { text: "Infrastructure", options: { breakLine: true } }, + { text: "Object Library" } + ], { x: 0.6, y: 1.05, w: 5.9, h: 1.8, fontFace: H, fontSize: 42, bold: true, color: WHITE, margin: 0, lineSpacing: 46 }); + s.addText("Vet vad som står där ute — varje objekt i gaturummet, med källa på varje faktum.", { x: 0.6, y: 2.95, w: 5.5, h: 0.75, fontFace: B, fontSize: 15, color: MUTED_L, margin: 0 }); + s.addText("37 klasser · 26 modeller · 167 grafkanter · 0 valideringsfel", { x: 0.6, y: 3.85, w: 5.7, h: 0.35, fontFace: H, fontSize: 13, bold: true, color: YEL, margin: 0 }); + s.addText("Pilotpitch · juli 2026", { x: 0.6, y: 5.05, w: 4, h: 0.3, fontFace: B, fontSize: 11, color: MUTED, margin: 0 }); + const chips = [ + ["LVX-TRP-0102", "Vägbelysningsarmatur"], + ["LVX-P-0000026", "Tesla Supercharger V4"], + ["LVX-VAT-0103", "Brandpost / hydrant"], + ["LVX-ELN-0101", "Kabelskåp lågspänning"] + ]; + chips.forEach((c, i) => { + const y = 1.05 + i * 0.82; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 6.35, y, w: 3.05, h: 0.62, rectRadius: 0.06, fill: { color: CARD_D } }); + s.addText([ + { text: c[0], options: { fontFace: MONO, fontSize: 11.5, bold: true, color: YEL, breakLine: true } }, + { text: c[1], options: { fontFace: B, fontSize: 10.5, color: WHITE } } + ], { x: 6.55, y: y + 0.05, w: 2.75, h: 0.52, margin: 0, lineSpacing: 13 }); + }); + s.addNotes("Landvex bygger referensbiblioteket för fysisk infrastruktur. QUIXZOOM är fältarmen. Siffrorna är dagens bibliotek — validerat, inte vision."); + + // ---------- S2 · Problemet ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Gatan saknar identitet"); + const rows2 = [ + [P.clip, "Inventering är manuell och dyr", "Beståndsdata byggs om från noll vid varje upphandling och ägarbyte."], + [P.warn, "Utgångna modeller upptäcks för sent", "Reservdelsrisken syns först när armaturen slocknat eller locket spruckit."], + [P.search, "\u201dVad är detta?\u201d saknar svar i fält", "Tekniker, system och AI gissar — det finns ingen gemensam referens."] + ]; + rows2.forEach((r, i) => { + const y = 1.4 + i * 1.15; + circleIcon(s, r[0], 0.6, y, 0.52, YEL); + s.addText(r[1], { x: 1.35, y: y - 0.06, w: 4.15, h: 0.35, fontFace: H, fontSize: 15, bold: true, color: INK, margin: 0 }); + s.addText(r[2], { x: 1.35, y: y + 0.3, w: 4.15, h: 0.62, fontFace: B, fontSize: 12, color: MUTED, margin: 0 }); + }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 5.85, y: 1.35, w: 3.55, h: 3.4, rectRadius: 0.09, fill: { color: WHITE }, line: { color: LINE, width: 1 }, shadow: mkShadow() }); + s.addText("60M+", { x: 6.1, y: 1.6, w: 3.05, h: 0.95, fontFace: H, fontSize: 58, bold: true, color: INK, margin: 0 }); + s.addText("elstolpar enbart i USA — de flesta bär identiteten inbränd i godset.", { x: 6.1, y: 2.65, w: 3.05, h: 0.85, fontFace: B, fontSize: 12.5, color: MUTED, margin: 0 }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 6.1, y: 3.7, w: 3.05, h: 0.62, rectRadius: 0.06, fill: { color: YEL_TINT } }); + s.addText("birthmark: år · klass · impregnering", { x: 6.28, y: 3.78, w: 2.75, h: 0.46, fontFace: MONO, fontSize: 10.5, bold: true, color: INK, margin: 0, valign: "middle" }); + s.addNotes("Problemet är inte brist på data — det är brist på identitet. Ingen gemensam nyckel mellan fält, system och leverantörer."); + + // ---------- S3 · Lösningen: fem nivåer ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Ett bibliotek — fem nivåer"); + const steps = [ + ["Domän", "TRP · VAT · ELN…"], + ["Objektklass", "LVX-TRP-0102"], + ["Typ", "Cobrahead-LED"], + ["Produktmodell", "LVX-P-0000003"], + ["Individ", "LVX-I-… (pilot)"] + ]; + steps.forEach((st, i) => { + const x = 0.6 + i * 1.9; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y: 1.35, w: 1.55, h: 0.95, rectRadius: 0.08, fill: { color: LIGHT } }); + s.addText([ + { text: st[0], options: { fontFace: H, fontSize: 12.5, bold: true, color: INK, breakLine: true } }, + { text: st[1], options: { fontFace: MONO, fontSize: 9.5, color: MUTED } } + ], { x: x + 0.12, y: 1.47, w: 1.31, h: 0.75, margin: 0, lineSpacing: 14 }); + if (i < 4) s.addText("\u203A", { x: x + 1.55, y: 1.55, w: 0.35, h: 0.5, fontFace: H, fontSize: 20, color: MUTED, align: "center", margin: 0 }); + }); + const cards3 = [ + [P.link, "Permanenta LVX-ID", "Identiteten överlever ägarbyten, versioner och systembyten — referensen alla kan peka på."], + [P.db, "Källa på varje faktum", "Problem utan källa publiceras aldrig. PLATSHÅLLARE-regeln är hård — juridik by design."], + [P.hist, "Bitemporal fakta", "Vad som gällde där ute — och när vi visste det. Ersättningskedjor blir spårbara."] + ]; + cards3.forEach((c, i) => { + const x = 0.6 + i * 3.07; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y: 2.85, w: 2.87, h: 2.15, rectRadius: 0.09, fill: { color: LIGHT } }); + circleIcon(s, c[0], x + 0.22, y3(i), 0.46, YEL); + s.addText(c[1], { x: x + 0.85, y: 3.05, w: 1.95, h: 0.6, fontFace: H, fontSize: 13.5, bold: true, color: INK, margin: 0 }); + s.addText(c[2], { x: x + 0.22, y: 3.75, w: 2.45, h: 1.1, fontFace: B, fontSize: 11.5, color: BODY, margin: 0 }); + }); + function y3() { return 3.05; } + s.addNotes("Fem nivåer: domän ned till individ. Piloten fyller individlagret för kundens geografi. ID:na är permanenta — det är vallgraven."); + + // ---------- S4 · Bevis ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Byggt — och validerat"); + const stats = [ + ["37", "objektklasser — 31 källbelagda"], + ["26", "produktmodeller — alla källbelagda"], + ["167", "grafkanter i konsolidering v2"], + ["0", "valideringsfel mot schemat"] + ]; + stats.forEach((st, i) => { + const x = 0.6 + i * 2.25; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y: 1.3, w: 2.05, h: 1.45, rectRadius: 0.09, fill: { color: WHITE }, line: { color: LINE, width: 1 }, shadow: mkShadow() }); + s.addText(st[0], { x: x + 0.18, y: 1.42, w: 1.7, h: 0.7, fontFace: H, fontSize: 40, bold: true, color: i === 3 ? YEL : INK, margin: 0 }); + s.addText(st[1], { x: x + 0.18, y: 2.14, w: 1.72, h: 0.55, fontFace: B, fontSize: 10.5, color: MUTED, margin: 0 }); + }); + s.addText("Verifieringstrappan — varje fältfoto lyfter posten ett steg", { x: 0.6, y: 3.12, w: 8.8, h: 0.3, fontFace: B, fontSize: 12.5, italic: true, color: MUTED, margin: 0 }); + const stair = ["Obekräftad", "Källbelagd", "Fältverifierad", "Tillverkarbekräftad"]; + stair.forEach((t, i) => { + const h = 0.55 + i * 0.28, x = 0.6 + i * 2.25; + s.addShape(pres.shapes.RECTANGLE, { x, y: 5.05 - h, w: 2.05, h, fill: { color: i === 3 ? YEL : ["E7EAEE", "D5DAE0", "BFC7CF"][i] } }); + s.addText(t, { x: x + 0.1, y: 5.05 - h + 0.08, w: 1.85, h: 0.35, fontFace: H, fontSize: 11.5, bold: true, color: INK, margin: 0 }); + }); + s.addNotes("Detta är inte en idé — biblioteket finns, är källbelagt och maskinvaliderat. Trappan är kvalitetsmodellen: piloten flyttar poster till fältverifierad."); + + // ---------- S5 · OCR-guldet ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Identiteten sitter i godset"); + const cards5 = [ + [P.tree, "Stolpens birthmark", "Inbränd märkning i ögonhöjd: år, längd, klass och impregneringsmedel.", "år · klass · CCA/penta"], + [P.ind, "Gjutmärket", "Tillverkare, funktion och lastklass gjuts in i lock och ram.", "ULEFOS · EN124-2 · D400"], + [P.tint, "Hydrantens kropp", "AWWA kräver gjuten märkning — tillverkningsår och öppningsriktning.", "AMERICAN-DARLING · 1998"] + ]; + cards5.forEach((c, i) => { + const x = 0.6 + i * 3.07; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y: 1.3, w: 2.87, h: 3.15, rectRadius: 0.09, fill: { color: LIGHT } }); + circleIcon(s, c[0], x + 0.22, 1.55, 0.5, YEL); + s.addText(c[1], { x: x + 0.88, y: 1.6, w: 1.95, h: 0.6, fontFace: H, fontSize: 14, bold: true, color: INK, margin: 0 }); + s.addText(c[2], { x: x + 0.22, y: 2.35, w: 2.45, h: 1.05, fontFace: B, fontSize: 11.5, color: BODY, margin: 0 }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x + 0.22, y: 3.6, w: 2.43, h: 0.55, rectRadius: 0.06, fill: { color: WHITE }, line: { color: LINE, width: 1 } }); + s.addText(c[3], { x: x + 0.36, y: 3.66, w: 2.2, h: 0.43, fontFace: MONO, fontSize: 10, bold: true, color: INK, margin: 0, valign: "middle" }); + }); + s.addText("Ingen databas krävs på plats — objektet bär sin egen identitet. OCR-först är protokollets kärna.", { x: 0.6, y: 4.75, w: 8.8, h: 0.35, fontFace: B, fontSize: 13, italic: true, color: MUTED, margin: 0 }); + s.addNotes("Läsbarheten är affärsidén: birthmarks, gjutmärken och typskyltar gör varje foto till en databaspost."); + + // ---------- S6 · Flyhjulet ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Flyhjulet: QUIXZOOM"); + const nodes = [ + [2.3, 1.12, P.q, "Kundfråga", "identify → okänd"], + [3.85, 2.38, P.bull, "Bounty", "skapas automatiskt"], + [2.3, 3.6, P.cam, "Zoomer-foto", "OCR + position"], + [0.75, 2.38, P.check, "Fältverifierad", "post + individ"] + ]; + nodes.forEach(n => { + circleIcon(s, n[2], n[0], n[1], 0.95, DARK); + s.addText(n[3], { x: n[0] - 0.45, y: n[1] + 0.92, w: 1.85, h: 0.28, fontFace: H, fontSize: 11.5, bold: true, color: INK, align: "center", margin: 0 }); + s.addText(n[4], { x: n[0] - 0.45, y: n[1] + 1.16, w: 1.85, h: 0.24, fontFace: B, fontSize: 9.5, color: MUTED, align: "center", margin: 0 }); + }); + circleIcon(s, P.sync, 2.5, 2.6, 0.55, YEL); + s.addText("\u2198", { x: 3.5, y: 2.0, w: 0.4, h: 0.4, fontFace: H, fontSize: 16, color: MUTED, margin: 0 }); + s.addText("\u2199", { x: 3.5, y: 3.3, w: 0.4, h: 0.4, fontFace: H, fontSize: 16, color: MUTED, margin: 0 }); + s.addText("\u2196", { x: 1.85, y: 3.3, w: 0.4, h: 0.4, fontFace: H, fontSize: 16, color: MUTED, margin: 0 }); + s.addText("\u2197", { x: 1.85, y: 2.0, w: 0.4, h: 0.4, fontFace: H, fontSize: 16, color: MUTED, margin: 0 }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 5.85, y: 1.3, w: 3.55, h: 3.2, rectRadius: 0.09, fill: { color: LIGHT } }); + s.addText("Bounty-motorn", { x: 6.1, y: 1.5, w: 3.05, h: 0.35, fontFace: H, fontSize: 14, bold: true, color: INK, margin: 0 }); + s.addText([ + { text: "16 aktiva bounties ur posternas OCR-fält", options: { bullet: true, breakLine: true } }, + { text: "Poäng: bas · först-på-individ ×2 · full OCR +50 %", options: { bullet: true, breakLine: true } }, + { text: "Hårda säkerhetsregler — allt fotas från gångyta", options: { bullet: true, breakLine: true } }, + { text: "Varje \u201dobekräftad\u201d i API:t skapar en bounty", options: { bullet: true } } + ], { x: 6.1, y: 1.95, w: 3.1, h: 2.4, fontFace: B, fontSize: 11.5, color: BODY, paraSpaceAfter: 8, margin: 0 }); + s.addText("Kundens fråga finansierar datan som gör nästa svar bättre.", { x: 0.6, y: 5.12, w: 8.8, h: 0.35, fontFace: B, fontSize: 13, italic: true, color: MUTED, margin: 0 }); + s.addNotes("Flyhjulet: obesvarade kundfrågor blir bounties, Zoomers fotograferar, posten fältverifieras, svaret blir bättre. Andelen kunddrivna bounties är hälsotalet."); + + // ---------- S7 · API:t ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Produkten: Object API v0"); + const eps = [ + ["POST", "/v0/identify", "bild in → modell ut"], + ["GET", "/v0/objects/{lvx_id}", "hela posten + källor"], + ["GET", "/v0/objects/{id}/succession", "ersättningskedjan"], + ["GET", "/v0/search", "fritext + filter"], + ["GET", "/v0/standards/{beteckning}", "objekt per standard"], + ["POST", "/v0/feedback", "fel/okänt → bounty"] + ]; + eps.forEach((e, i) => { + const y = 1.3 + i * 0.58; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 0.6, y, w: 0.62, h: 0.32, rectRadius: 0.05, fill: { color: e[0] === "POST" ? YEL : CARD_D } }); + s.addText(e[0], { x: 0.6, y, w: 0.62, h: 0.32, fontFace: H, fontSize: 9, bold: true, color: e[0] === "POST" ? INK : WHITE, align: "center", valign: "middle", margin: 0 }); + s.addText(e[1], { x: 1.35, y: y + 0.01, w: 2.62, h: 0.32, fontFace: MONO, fontSize: 10.5, bold: true, color: INK, margin: 0, valign: "middle" }); + s.addText(e[2], { x: 4.02, y: y + 0.01, w: 1.72, h: 0.32, fontFace: B, fontSize: 9.5, color: MUTED, margin: 0, valign: "middle" }); + }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 5.85, y: 1.3, w: 3.55, h: 3.45, rectRadius: 0.09, fill: { color: WHITE }, line: { color: LINE, width: 1 }, shadow: mkShadow() }); + circleIcon(s, P.shield, 6.1, 1.52, 0.46, YEL); + s.addText("Svarskontraktet", { x: 6.72, y: 1.58, w: 2.6, h: 0.35, fontFace: H, fontSize: 14, bold: true, color: INK, margin: 0 }); + s.addText([ + { text: "verifieringsnivå — alltid med", options: { bullet: true, breakLine: true } }, + { text: "konfidens 0–1 — aldrig dold", options: { bullet: true, breakLine: true } }, + { text: "källor[] på varje påstående", options: { bullet: true, breakLine: true } }, + { text: "PLATSHÅLLARE filtreras bort vid serialisering", options: { bullet: true, breakLine: true } }, + { text: "svagt svar ⇒ bounty-ID följer med", options: { bullet: true } } + ], { x: 6.1, y: 2.15, w: 3.1, h: 2.4, fontFace: B, fontSize: 11.5, color: BODY, paraSpaceAfter: 8, margin: 0 }); + s.addText("Juridiken sitter i kontraktet — referenser och beteckningar, aldrig standardtext.", { x: 0.6, y: 5.05, w: 8.8, h: 0.35, fontFace: B, fontSize: 13, italic: true, color: MUTED, margin: 0 }); + s.addNotes("Sex endpoints räcker för piloten. Kontraktet är differentieringen: ärlighet och proveniens är obligatoriska fält, inte fotnoter."); + + // ---------- S8 · Golden cases ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Tre svar som säljer"); + const g = [ + [P.exch, "Ersättningskedjan", "GE ERS identifieras → status: ersatt → ersättare: ERL-serien. Reservdelsrisken syns innan lagret tar slut.", "identify → succession"], + [P.hist, "Årsmodell ur godset", "American-Darling B-84-B, gjutet 1998, öppnar vänster — individdata utan register.", "konfidens 0,97 · källbelagd"], + [P.bull2 || P.search, "Ärlig när den inte vet", "Okänt UK-skåp → bästa klass, konfidens 0,71 — och en bounty skapas automatiskt.", "svar + BNTY-A0001"] + ]; + g.forEach((c, i) => { + const x = 0.6 + i * 3.07; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y: 1.3, w: 2.87, h: 3.15, rectRadius: 0.09, fill: { color: LIGHT } }); + circleIcon(s, c[0], x + 0.22, 1.55, 0.5, YEL); + s.addText(c[1], { x: x + 0.88, y: 1.6, w: 1.95, h: 0.6, fontFace: H, fontSize: 14, bold: true, color: INK, margin: 0 }); + s.addText(c[2], { x: x + 0.22, y: 2.35, w: 2.45, h: 1.15, fontFace: B, fontSize: 11.5, color: BODY, margin: 0 }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: x + 0.22, y: 3.6, w: 2.43, h: 0.55, rectRadius: 0.06, fill: { color: WHITE }, line: { color: LINE, width: 1 } }); + s.addText(c[3], { x: x + 0.36, y: 3.66, w: 2.2, h: 0.43, fontFace: MONO, fontSize: 10, bold: true, color: INK, margin: 0, valign: "middle" }); + }); + s.addText("Alla tre körs på riktiga poster — demodatat ingår i pilotpaketet.", { x: 0.6, y: 4.75, w: 8.8, h: 0.35, fontFace: B, fontSize: 13, italic: true, color: MUTED, margin: 0 }); + s.addNotes("Tre golden cases som demoas live: succession, individdata ur gjutgods, och ärlighet + bounty vid okänt objekt."); + + // ---------- S9 · Paketering ---------- + s = pres.addSlide(); + s.background = { color: WHITE }; + title(s, "Paketering"); + const pk = [ + [P.rocket, "Pilot", "1–3 designpartners", ["Fast månadsavgift, generös kvot", "Gemensam backlog styr utvecklingen", "Betalar även med fältaccess"], LIGHT], + [P.chart, "Pro", "entreprenad · besiktning · försäkring", ["Usage-based per identify", "Billiga uppslag driver LVX-ID-inlåsning", "Volymtrappa"], YEL_TINT], + [P.build, "Enterprise", "nätbolag · förvaltare · tillverkare", ["SLA + eget individlager (LVX-I)", "Bulkexport och integrationer", "Riktade bounties i egen geografi"], LIGHT] + ]; + pk.forEach((c, i) => { + const x = 0.6 + i * 3.07; + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x, y: 1.3, w: 2.87, h: 3.1, rectRadius: 0.09, fill: { color: c[4] }, shadow: i === 1 ? mkShadow() : undefined }); + circleIcon(s, c[0], x + 0.22, 1.52, 0.46, WHITE === c[4] ? LIGHT : WHITE); + s.addText(c[1], { x: x + 0.82, y: 1.55, w: 1.95, h: 0.35, fontFace: H, fontSize: 16, bold: true, color: INK, margin: 0 }); + s.addText(c[2], { x: x + 0.22, y: 2.12, w: 2.45, h: 0.3, fontFace: B, fontSize: 10.5, italic: true, color: MUTED, margin: 0 }); + s.addText(c[3].map((t, j) => ({ text: t, options: { bullet: true, breakLine: j < 2 } })), { x: x + 0.22, y: 2.5, w: 2.5, h: 1.75, fontFace: B, fontSize: 11, color: BODY, paraSpaceAfter: 7, margin: 0 }); + }); + s.addText("Identifieringen är värdet · uppslaget är räckvidden · bounty-krediter köper fältverifiering där kunden behöver den.", { x: 0.6, y: 4.75, w: 8.8, h: 0.35, fontFace: B, fontSize: 12.5, italic: true, color: MUTED, margin: 0 }); + s.addNotes("SaaS-logiken: identify prissätts per värdefullt svar, uppslag hålls billiga för att göra LVX-ID till branschreferens, Enterprise får eget individlager."); + + // ---------- S10 · Piloten (mörk) ---------- + s = pres.addSlide(); + s.background = { color: DARK }; + title(s, "Piloten: 90 dagar till bevis", true); + const uc = [ + [P.clipY, "Inventering", "Fota beståndet → klass, modell och status per objekt."], + [P.warnY, "Utgånget-listan", "Allt med status ersatt/utgången — med ersättare och källa."], + [P.checkY, "Problemflagg", "Källbelagda klassproblem matchade mot ert bestånd."] + ]; + uc.forEach((r, i) => { + const y = 1.45 + i * 1.1; + circleIcon(s, r[0], 0.6, y, 0.52, YEL); + s.addText(r[1], { x: 1.35, y: y - 0.05, w: 4.1, h: 0.35, fontFace: H, fontSize: 15, bold: true, color: WHITE, margin: 0 }); + s.addText(r[2], { x: 1.35, y: y + 0.31, w: 4.1, h: 0.6, fontFace: B, fontSize: 12, color: MUTED_L, margin: 0 }); + }); + s.addShape(pres.shapes.ROUNDED_RECTANGLE, { x: 5.85, y: 1.35, w: 3.55, h: 3.35, rectRadius: 0.09, fill: { color: CARD_D } }); + s.addText("Erbjudandet", { x: 6.1, y: 1.55, w: 3.05, h: 0.35, fontFace: H, fontSize: 14, bold: true, color: WHITE, margin: 0 }); + s.addText([ + { text: "Avgränsat område, 90 dagar", options: { bullet: true, breakLine: true } }, + { text: "Fast pilotavgift — kvittas mot årsavtal", options: { bullet: true, breakLine: true } }, + { text: "Gemensam backlog styr bounties", options: { bullet: true, breakLine: true } }, + { text: "Ni behåller export av ert individlager", options: { bullet: true } } + ], { x: 6.1, y: 2.0, w: 3.1, h: 1.85, fontFace: B, fontSize: 11.5, color: MUTED_L, paraSpaceAfter: 8, margin: 0 }); + s.addText("Boka pilotworkshop \u2192", { x: 6.1, y: 4.05, w: 3.05, h: 0.45, fontFace: H, fontSize: 17, bold: true, color: YEL, margin: 0 }); + s.addText("LANDVEX × QUIXZOOM · juli 2026", { x: 0.6, y: 5.08, w: 5, h: 0.3, fontFace: B, fontSize: 11, color: MUTED, charSpacing: 2, margin: 0 }); + s.addNotes("Stäng med erbjudandet: 90 dagar, avgränsat område, tre användningsfall, fast avgift som kvittas. Nästa steg är en workshop där området och backloggen väljs."); + + await pres.writeFile({ fileName: "/home/claude/landvex-pilotpitch.pptx" }); + console.log("deck skriven"); +})().catch(e => { console.error(e); process.exit(1); }); diff --git a/projects/landvex/arkiv/byggscript/konsolidera.py b/projects/landvex/arkiv/byggscript/konsolidera.py new file mode 100644 index 000000000..d8f8772a9 --- /dev/null +++ b/projects/landvex/arkiv/byggscript/konsolidera.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python3 +# Landvex IOL — våg 4: datastädning, validering och grafexport +import json, re, sys +from pathlib import Path + +OUT = Path("/mnt/user-data/outputs") + +PREDIKAT = {"monteras_pa","star_pa","ansluts_med","matas_fran","ingar_i","del_af" if False else "del_av", + "ersatter","ersatts_av","kompatibel_med","forvaxlas_med","tillverkas_av","foljer_standard","variant_av"} +VERIF = {"obekraftad","kallbelagd","faltverifierad","tillverkarbekraftad"} +DOMANER = {"TRP","ELN","VAT","TEL","BYG","PRK","JVG","HMN","FLG"} +ID_RE = re.compile(r"^LVX-(TRP|ELN|VAT|TEL|BYG|PRK|JVG|HMN|FLG)-[0-9]{4}$|^LVX-P-[0-9]{7}$") + +def load(name): + with open(OUT / name, encoding="utf-8") as f: + return json.load(f) + +# ---------- 1. Ladda klassposter ---------- +klass_filer = ["lvx-klassposter-trp.json","lvx-klassposter-vat.json", + "lvx-klassposter-eln.json","lvx-klassposter-tel-prk.json"] +poster = {} +for fn in klass_filer: + for p in load(fn)["poster"]: + poster[p["lvx_id"]] = p + +# Våg 2-uppdateringar ersätter +uppdaterade = 0 +for p in load("lvx-klassposter-vag2-uppdaterade.json")["poster"]: + poster[p["lvx_id"]] = p + uppdaterade += 1 + +# ---------- 2. Relationskarta ---------- +t2 = load("lvx-taxonomi-tier2.json") +karta = {} +for rad in t2["relationskarta"]: + nytt = rad["nytt_id"] + if "/" in nytt: # dubbelmappning: skyltstolpe/portal + karta[rad["platshallare"]] = ("LVX-TRP-0201", "portalvariant → LVX-TRP-0205") + else: + karta[rad["platshallare"]] = (nytt, None) + +for txt in ["Fundament/fotplatta", "Fundament/stolpe", "Direkt i mark / fundament"]: + karta[txt] = ("LVX-TRP-0203", None) + +def multi_lvx(mal): + return " / " in mal and all(ID_RE.match(x.strip()) for x in mal.split(" / ")) + +remappade, olosta = 0, {} +for p in poster.values(): + for rel in p.get("relationer", []): + mal = rel.get("mal","") + if mal in karta: + nytt, notis = karta[mal] + rel["mal"] = nytt + if notis: + rel["beskrivning"] = (rel.get("beskrivning","") + " | " + notis).strip(" |") + remappade += 1 + elif rel.get("predikat") == "foljer_standard": + pass # standardnod — hanteras i grafexporten + elif multi_lvx(mal): + pass # multipla LVX-mål — splittas i grafexporten + elif not ID_RE.match(mal): + olosta.setdefault(mal, 0) + olosta[mal] += 1 + +# ---------- 3. Ladda produktmodeller ---------- +modeller = {} +for fn in ["lvx-produktmodeller-vag2.json","lvx-produktmodeller-vag3.json"]: + for m in load(fn)["poster"]: + modeller[m["lvx_id"]] = m + +# ---------- 4. Validering ---------- +fel = [] +def kolla(rec, typ): + rid = rec.get("lvx_id","?") + if not ID_RE.match(rid): fel.append(f"{rid}: ogiltigt ID-format") + if rec.get("doman") not in DOMANER: fel.append(f"{rid}: ogiltig domän") + namn = rec.get("namn",{}) + if not (namn.get("sv") and namn.get("en")): fel.append(f"{rid}: namn.sv/en saknas") + if rec.get("posttyp") not in {"objektklass","produktmodell"}: fel.append(f"{rid}: posttyp") + prov = rec.get("proveniens",{}) + if prov.get("verifieringsniva") not in VERIF: fel.append(f"{rid}: verifieringsnivå") + if not prov.get("skapad"): fel.append(f"{rid}: proveniens.skapad saknas") + for pr in rec.get("problem",[]): + if not pr.get("kalla"): fel.append(f"{rid}: problem utan källa") + for rel in rec.get("relationer",[]): + if rel.get("predikat") not in PREDIKAT: fel.append(f"{rid}: okänt predikat {rel.get('predikat')}") + if typ=="modell" and not rec.get("parent"): fel.append(f"{rid}: parent saknas") + if prov.get("verifieringsniva")=="kallbelagd" and not prov.get("kallor"): + fel.append(f"{rid}: källbelagd utan kallor") + +for p in poster.values(): kolla(p,"klass") +for m in modeller.values(): kolla(m,"modell") + +# ---------- 5. Grafkanter ---------- +kanter = [] +def kant(s, pred, obj, niva, beskr=""): + typ = "lvx" if ID_RE.match(obj or "") else ("standard" if pred=="foljer_standard" else "text") + kanter.append({"subjekt": s, "predikat": pred, "objekt": obj, "objekt_typ": typ, + "niva": niva, **({"beskrivning": beskr} if beskr else {})}) + +def emit(s, pred, mal, niva, beskr=""): + if multi_lvx(mal): + for x in mal.split(" / "): + kant(s, pred, x.strip(), niva, beskr) + else: + kant(s, pred, mal, niva, beskr) + +for p in poster.values(): + for rel in p.get("relationer", []): + emit(p["lvx_id"], rel["predikat"], rel["mal"], "klass", rel.get("beskrivning","")) + for st in p.get("standarder", []): + if st.get("beteckning"): + kant(p["lvx_id"], "foljer_standard", st["beteckning"], "klass", st.get("roll","")) + +for m in modeller.values(): + kant(m["lvx_id"], "tillhor_klass", m["parent"], "modell") # ontologibeslut v1.1 + hist = m.get("historik", {}) + for e in hist.get("ersatter", []): kant(m["lvx_id"], "ersatter", e, "modell") + for e in hist.get("ersatts_av", []): kant(m["lvx_id"], "ersatts_av", e, "modell") + for rel in m.get("relationer", []): + emit(m["lvx_id"], rel["predikat"], rel["mal"], "modell", rel.get("beskrivning","")) + +lvx_kanter = sum(1 for k in kanter if k["objekt_typ"]=="lvx") +std_kanter = sum(1 for k in kanter if k["objekt_typ"]=="standard") + +# ---------- 6. Skriv ut ---------- +master = { + "beskrivning": "Landvex IOL — konsoliderade Tier 1-klassposter v1. Våg 2-uppdateringar inarbetade, relationer ommappade enligt Tier 2-relationskartan. Ersätter de fyra våg 1-filerna + vag2-uppdaterade som arbetskopia.", + "genererad": "2026-07-04", + "antal_poster": len(poster), + "poster": [poster[k] for k in sorted(poster)] +} +with open(OUT/"lvx-klassposter-master-v1.json","w",encoding="utf-8") as f: + json.dump(master,f,ensure_ascii=False,indent=2) + +graf = { + "beskrivning": "Landvex IOL — grafexport v1. Kanter ur klass- och modellposter. objekt_typ: lvx=upplöst nod, standard=standardbeteckning, text=olöst platshållare (framtida klass). Predikatet tillhor_klass (modell→klass) är ontologibeslut v1.1.", + "genererad": "2026-07-04", + "noder": {"objektklasser_tier1": len(poster), "objektklasser_tier2": len(t2["objektklasser"]), "produktmodeller": len(modeller)}, + "statistik": {"kanter_totalt": len(kanter), "upplosta_lvx_kanter": lvx_kanter, "standardkanter": std_kanter, + "textnoder_olosta": len(olosta)}, + "olosta_platshallare": [{"text": k, "forekomster": v} for k,v in sorted(olosta.items())], + "kanter": kanter +} +with open(OUT/"lvx-graf-kanter-v1.json","w",encoding="utf-8") as f: + json.dump(graf,f,ensure_ascii=False,indent=2) + +print(f"Klassposter: {len(poster)} (varav {uppdaterade} våg2-uppdaterade inarbetade)") +print(f"Produktmodeller: {len(modeller)}") +print(f"Relationer ommappade till Tier 2-ID: {remappade}") +print(f"Grafkanter: {len(kanter)} totalt | {lvx_kanter} upplösta LVX-kanter | {std_kanter} standardkanter") +print(f"Olösta textnoder: {len(olosta)}") +for k,v in sorted(olosta.items()): print(f" - {k} ({v})") +print(f"Valideringsfel: {len(fel)}") +for e in fel: print(f" ! {e}") diff --git a/projects/landvex/arkiv/byggscript/konsolidera_v2.py b/projects/landvex/arkiv/byggscript/konsolidera_v2.py new file mode 100644 index 000000000..3a903ca88 --- /dev/null +++ b/projects/landvex/arkiv/byggscript/konsolidera_v2.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 +# Landvex IOL — våg 5: konsolidering v2 (Tier 1 + Tier 2), validering, grafexport +import json, re +from pathlib import Path + +OUT = Path("/mnt/user-data/outputs") +PREDIKAT = {"monteras_pa","star_pa","ansluts_med","matas_fran","ingar_i","del_av", + "ersatter","ersatts_av","kompatibel_med","forvaxlas_med","tillverkas_av","foljer_standard","variant_av"} +VERIF = {"obekraftad","kallbelagd","faltverifierad","tillverkarbekraftad"} +DOMANER = {"TRP","ELN","VAT","TEL","BYG","PRK","JVG","HMN","FLG"} +ID_RE = re.compile(r"^LVX-(TRP|ELN|VAT|TEL|BYG|PRK|JVG|HMN|FLG)-[0-9]{4}$|^LVX-P-[0-9]{7}$") + +def load(name): + with open(OUT / name, encoding="utf-8") as f: + return json.load(f) + +poster = {} +for fn in ["lvx-klassposter-master-v1.json","lvx-klassposter-tier2-trp.json","lvx-klassposter-tier2-ovriga.json"]: + for p in load(fn)["poster"]: + poster[p["lvx_id"]] = p + +def multi_lvx(mal): + return " / " in mal and all(ID_RE.match(x.strip()) for x in mal.split(" / ")) + +olosta = {} +for p in poster.values(): + for rel in p.get("relationer", []): + mal = rel.get("mal","") + if rel.get("predikat") == "foljer_standard" or multi_lvx(mal) or ID_RE.match(mal): + continue + olosta[mal] = olosta.get(mal, 0) + 1 + +modeller = {} +for fn in ["lvx-produktmodeller-vag2.json","lvx-produktmodeller-vag3.json"]: + for m in load(fn)["poster"]: + modeller[m["lvx_id"]] = m + +fel = [] +def kolla(rec, typ): + rid = rec.get("lvx_id","?") + if not ID_RE.match(rid): fel.append(f"{rid}: ogiltigt ID-format") + if rec.get("doman") not in DOMANER: fel.append(f"{rid}: ogiltig domän") + namn = rec.get("namn",{}) + if not (namn.get("sv") and namn.get("en")): fel.append(f"{rid}: namn.sv/en saknas") + if rec.get("posttyp") not in {"objektklass","produktmodell"}: fel.append(f"{rid}: posttyp") + prov = rec.get("proveniens",{}) + if prov.get("verifieringsniva") not in VERIF: fel.append(f"{rid}: verifieringsnivå") + if not prov.get("skapad"): fel.append(f"{rid}: proveniens.skapad saknas") + for pr in rec.get("problem",[]): + if not pr.get("kalla"): fel.append(f"{rid}: problem utan källa") + for rel in rec.get("relationer",[]): + if rel.get("predikat") not in PREDIKAT: fel.append(f"{rid}: okänt predikat {rel.get('predikat')}") + if typ=="modell" and not rec.get("parent"): fel.append(f"{rid}: parent saknas") + if prov.get("verifieringsniva")=="kallbelagd" and not prov.get("kallor"): + fel.append(f"{rid}: källbelagd utan kallor") + +for p in poster.values(): kolla(p,"klass") +for m in modeller.values(): kolla(m,"modell") + +kanter = [] +def kant(s, pred, obj, niva, beskr=""): + typ = "lvx" if ID_RE.match(obj or "") else ("standard" if pred=="foljer_standard" else "text") + kanter.append({"subjekt": s, "predikat": pred, "objekt": obj, "objekt_typ": typ, + "niva": niva, **({"beskrivning": beskr} if beskr else {})}) + +def emit(s, pred, mal, niva, beskr=""): + if multi_lvx(mal): + for x in mal.split(" / "): + kant(s, pred, x.strip(), niva, beskr) + else: + kant(s, pred, mal, niva, beskr) + +for p in poster.values(): + for rel in p.get("relationer", []): + emit(p["lvx_id"], rel["predikat"], rel["mal"], "klass", rel.get("beskrivning","")) + for st in p.get("standarder", []): + if st.get("beteckning"): + kant(p["lvx_id"], "foljer_standard", st["beteckning"], "klass", st.get("roll","")) + +for m in modeller.values(): + kant(m["lvx_id"], "tillhor_klass", m["parent"], "modell") + hist = m.get("historik", {}) + for e in hist.get("ersatter", []): kant(m["lvx_id"], "ersatter", e, "modell") + for e in hist.get("ersatts_av", []): kant(m["lvx_id"], "ersatts_av", e, "modell") + for rel in m.get("relationer", []): + emit(m["lvx_id"], rel["predikat"], rel["mal"], "modell", rel.get("beskrivning","")) + +lvx_k = sum(1 for k in kanter if k["objekt_typ"]=="lvx") +std_k = sum(1 for k in kanter if k["objekt_typ"]=="standard") +verif_count = {} +for p in poster.values(): + v = p["proveniens"]["verifieringsniva"] + verif_count[v] = verif_count.get(v,0)+1 + +master = { + "beskrivning": "Landvex IOL — konsoliderade klassposter v2: Tier 1 + Tier 2 (37 klasser). Ersätter master-v1 och de två tier2-filerna som arbetskopia.", + "genererad": "2026-07-04", + "antal_poster": len(poster), + "verifieringsfordelning": verif_count, + "poster": [poster[k] for k in sorted(poster)] +} +with open(OUT/"lvx-klassposter-master-v2.json","w",encoding="utf-8") as f: + json.dump(master,f,ensure_ascii=False,indent=2) + +graf = { + "beskrivning": "Landvex IOL — grafexport v2. Tier 1 + Tier 2-klasser samt produktmodeller. objekt_typ: lvx=upplöst nod, standard=standardbeteckning, text=olöst platshållare (framtida klass).", + "genererad": "2026-07-04", + "noder": {"objektklasser": len(poster), "produktmodeller": len(modeller)}, + "statistik": {"kanter_totalt": len(kanter), "upplosta_lvx_kanter": lvx_k, "standardkanter": std_k, "textnoder_olosta": len(olosta)}, + "olosta_platshallare": [{"text": k, "forekomster": v} for k,v in sorted(olosta.items())], + "kanter": kanter +} +with open(OUT/"lvx-graf-kanter-v2.json","w",encoding="utf-8") as f: + json.dump(graf,f,ensure_ascii=False,indent=2) + +print(f"Klassposter: {len(poster)} | fördelning: {verif_count}") +print(f"Produktmodeller: {len(modeller)}") +print(f"Grafkanter: {len(kanter)} totalt | {lvx_k} LVX-upplösta | {std_k} standardkanter") +print(f"Olösta textnoder: {len(olosta)}") +for k,v in sorted(olosta.items()): print(f" - {k} ({v})") +print(f"Valideringsfel: {len(fel)}") +for e in fel: print(f" ! {e}") diff --git a/projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v1.json b/projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v1.json new file mode 100644 index 000000000..52cdb30fe --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v1.json @@ -0,0 +1,911 @@ +{ + "beskrivning": "Landvex IOL — grafexport v1. Kanter ur klass- och modellposter. objekt_typ: lvx=upplöst nod, standard=standardbeteckning, text=olöst platshållare (framtida klass). Predikatet tillhor_klass (modell→klass) är ontologibeslut v1.1.", + "genererad": "2026-07-04", + "noder": { + "objektklasser_tier1": 20, + "objektklasser_tier2": 17, + "produktmodeller": 26 + }, + "statistik": { + "kanter_totalt": 115, + "upplosta_lvx_kanter": 61, + "standardkanter": 46, + "textnoder_olosta": 7 + }, + "olosta_platshallare": [ + { + "text": "Accessnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "CCS1-utrustade stationer (US, gradvis)", + "forekomster": 1 + }, + { + "text": "Distributionsnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Mellanspänningsnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Teknikbod/skåp vid bas (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vattenledningsnät/servisventil (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vägbana/beläggning (Tier 2)", + "forekomster": 1 + } + ], + "kanter": [ + { + "subjekt": "LVX-TRP-0101", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Belysningsnätets kabelskåp" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "foljer_standard", + "objekt": "EN 40 (del 1–7)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "foljer_standard", + "objekt": "LTS-serien", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Topp- eller armmontage på belysningsstolpe" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0204", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fotocell eller smart nod i standardiserad sockel" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "ANSI C136-serien", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "EN 60598 / EN 13201", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "UL 1598", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktsäkerhet" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0201", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "portalvariant → LVX-TRP-0205" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "MUTCD / TSRGD / nationella kataloger", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "TSRGD 2016 (SI 2016/362)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "Wienkonventionen 1968 + nationella kataloger", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "AS 1742", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Australisk motsvarighet" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "EN 12899-1 / ASTM D4956", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0105", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Styrs av trafiksignalskåpets styrapparat" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0202", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "foljer_standard", + "objekt": "EN 12368:2024", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "foljer_standard", + "objekt": "VTCSH", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-spec för signalhuvuden (kartläggs vidare)" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0104", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Styr signalhuvudena" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "foljer_standard", + "objekt": "NEMA TS 2-2021", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "foljer_standard", + "objekt": "ATC-standarder; Caltrans 33x-typ", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "del_av", + "objekt": "Vägbana/beläggning (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "EN 1436 / MUTCD", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "EN 1436:2018", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "MUTCD 11:e utgåvan", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "EN 1317 / MASH", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "EN 1317", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "MASH (2016)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)" + }, + { + "subjekt": "LVX-TRP-0108", + "predikat": "ansluts_med", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Belysning/realtidsskylt matas från nätet" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "monteras_pa", + "objekt": "LVX-VAT-0201", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "del_av", + "objekt": "LVX-VAT-0202", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0102", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "foljer_standard", + "objekt": "EN 124:2015 (del 1–6)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "foljer_standard", + "objekt": "H-20/HS-20-lastkrav", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "del_av", + "objekt": "LVX-VAT-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "foljer_standard", + "objekt": "EN 124:2015", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "ansluts_med", + "objekt": "Vattenledningsnät/servisventil (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "AWWA C502/C503, EN 14384/14339", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "ANSI/AWWA C502", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "ANSI/AWWA C503", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Våtposter för milt klimat utan frysrisk" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "EN 14384", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Minimikrav, provning och märkning för pelarbrandposter" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "EN 14339", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Underjordiska brandposter" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "NFPA 1963", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Slanganslutningarnas gängor" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätstation/transformator" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Matar bl.a. belysningsnät" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "foljer_standard", + "objekt": "EN 61439-5", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "ingar_i", + "objekt": "Distributionsnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "foljer_standard", + "objekt": "ANSI O5.1", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "foljer_standard", + "objekt": "Penta-utfasningsbeslut 2022", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "matas_fran", + "objekt": "Mellanspänningsnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "ansluts_med", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Matar kabelskåpen i LV-nätet" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "foljer_standard", + "objekt": "IEC 62271-202:2022", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "foljer_standard", + "objekt": "IEEE C57.12.28 m.fl.", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-kapslingskrav (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "ersatter", + "objekt": "CCS1-utrustade stationer (US, gradvis)", + "objekt_typ": "text", + "niva": "klass", + "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "SAE J3400 (NACS)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "SAE J1772", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "IEC 61851 / IEC 62196", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "ansluts_med", + "objekt": "LVX-TEL-0201", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "ingar_i", + "objekt": "Accessnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "foljer_standard", + "objekt": "Operatörsprogram", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "ansluts_med", + "objekt": "Teknikbod/skåp vid bas (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "foljer_standard", + "objekt": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "foljer_standard", + "objekt": "Eurokoder", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-strukturkrav (kartläggs per land)" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "PAS 68 (2005)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "IWA 14-1 (2013)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "ASTM F2656", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter" + }, + { + "subjekt": "LVX-PRK-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0103", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0103", + "predikat": "foljer_standard", + "objekt": "Sheffield-bygel", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer" + }, + { + "subjekt": "LVX-P-0000001", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000001", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000002", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "ersatter", + "objekt": "LVX-P-0000001", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000003", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000003", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000003", + "predikat": "ersatter", + "objekt": "LVX-P-0000002", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000004", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000005", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000005", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000006", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000006", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000006", + "predikat": "ersatter", + "objekt": "LVX-P-0000005", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000007", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000008", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000009", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000010", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000011", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000012", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000013", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000014", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000015", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000016", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000017", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000018", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000019", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000020", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000020", + "predikat": "ersatter", + "objekt": "Äldre G4/27¾-tums strong-post W-balk", + "objekt_typ": "text", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000021", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0210", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000022", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0105", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000023", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000024", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000025", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000025", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000026", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000026", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000026", + "predikat": "ersatter", + "objekt": "LVX-P-0000025", + "objekt_typ": "lvx", + "niva": "modell" + } + ] +} \ No newline at end of file diff --git a/projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v2.json b/projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v2.json new file mode 100644 index 000000000..57a91c516 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-graf-kanter-v2.json @@ -0,0 +1,1333 @@ +{ + "beskrivning": "Landvex IOL — grafexport v2. Tier 1 + Tier 2-klasser samt produktmodeller. objekt_typ: lvx=upplöst nod, standard=standardbeteckning, text=olöst platshållare (framtida klass).", + "genererad": "2026-07-04", + "noder": { + "objektklasser": 37, + "produktmodeller": 26 + }, + "statistik": { + "kanter_totalt": 167, + "upplosta_lvx_kanter": 79, + "standardkanter": 74, + "textnoder_olosta": 13 + }, + "olosta_platshallare": [ + { + "text": "Accessnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Avstängningsventil (framtida klass)", + "forekomster": 1 + }, + { + "text": "Brokantbalk (framtida klass)", + "forekomster": 1 + }, + { + "text": "CCS1-utrustade stationer (US, gradvis)", + "forekomster": 1 + }, + { + "text": "Dagvattennät (framtida klass)", + "forekomster": 1 + }, + { + "text": "Distributionsnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Eftergivliga stödsystem (EN 12767-scope)", + "forekomster": 1 + }, + { + "text": "Mellanspänningsnät (Tier 2-topologi)", + "forekomster": 1 + }, + { + "text": "Möbleringsprogram (kommunspecifikt)", + "forekomster": 1 + }, + { + "text": "Teknikbod/skåp vid bas (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vattenledningsnät/servisventil (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vägbana/beläggning (Tier 2)", + "forekomster": 1 + }, + { + "text": "Vägbana/beläggning (framtida klass)", + "forekomster": 1 + } + ], + "kanter": [ + { + "subjekt": "LVX-ELN-0101", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätstation/transformator" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Matar bl.a. belysningsnät" + }, + { + "subjekt": "LVX-ELN-0101", + "predikat": "foljer_standard", + "objekt": "EN 61439-5", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "ingar_i", + "objekt": "Distributionsnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "foljer_standard", + "objekt": "ANSI O5.1", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-ELN-0102", + "predikat": "foljer_standard", + "objekt": "Penta-utfasningsbeslut 2022", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "matas_fran", + "objekt": "Mellanspänningsnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "ansluts_med", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Matar kabelskåpen i LV-nätet" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "foljer_standard", + "objekt": "IEC 62271-202:2022", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC" + }, + { + "subjekt": "LVX-ELN-0103", + "predikat": "foljer_standard", + "objekt": "IEEE C57.12.28 m.fl.", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-kapslingskrav (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "ersatter", + "objekt": "CCS1-utrustade stationer (US, gradvis)", + "objekt_typ": "text", + "niva": "klass", + "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "SAE J3400 (NACS)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "SAE J1772", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC" + }, + { + "subjekt": "LVX-ELN-0104", + "predikat": "foljer_standard", + "objekt": "IEC 61851 / IEC 62196", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "PAS 68 (2005)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "IWA 14-1 (2013)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration" + }, + { + "subjekt": "LVX-PRK-0101", + "predikat": "foljer_standard", + "objekt": "ASTM F2656", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter" + }, + { + "subjekt": "LVX-PRK-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0103", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-PRK-0103", + "predikat": "foljer_standard", + "objekt": "Sheffield-bygel", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "ansluts_med", + "objekt": "LVX-TEL-0201", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "ingar_i", + "objekt": "Accessnät (Tier 2-topologi)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0101", + "predikat": "foljer_standard", + "objekt": "Operatörsprogram", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "ansluts_med", + "objekt": "Teknikbod/skåp vid bas (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "foljer_standard", + "objekt": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet" + }, + { + "subjekt": "LVX-TEL-0102", + "predikat": "foljer_standard", + "objekt": "Eurokoder", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-strukturkrav (kartläggs per land)" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Belysningsnätets kabelskåp" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "foljer_standard", + "objekt": "EN 40 (del 1–7)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning" + }, + { + "subjekt": "LVX-TRP-0101", + "predikat": "foljer_standard", + "objekt": "LTS-serien", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Topp- eller armmontage på belysningsstolpe" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0204", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fotocell eller smart nod i standardiserad sockel" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "ANSI C136-serien", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "EN 60598 / EN 13201", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)" + }, + { + "subjekt": "LVX-TRP-0102", + "predikat": "foljer_standard", + "objekt": "UL 1598", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktsäkerhet" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0201", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "portalvariant → LVX-TRP-0205" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "MUTCD / TSRGD / nationella kataloger", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "TSRGD 2016 (SI 2016/362)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "Wienkonventionen 1968 + nationella kataloger", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "AS 1742", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Australisk motsvarighet" + }, + { + "subjekt": "LVX-TRP-0103", + "predikat": "foljer_standard", + "objekt": "EN 12899-1 / ASTM D4956", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0105", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Styrs av trafiksignalskåpets styrapparat" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0202", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "foljer_standard", + "objekt": "EN 12368:2024", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning" + }, + { + "subjekt": "LVX-TRP-0104", + "predikat": "foljer_standard", + "objekt": "VTCSH", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-spec för signalhuvuden (kartläggs vidare)" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0104", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Styr signalhuvudena" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "foljer_standard", + "objekt": "NEMA TS 2-2021", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare" + }, + { + "subjekt": "LVX-TRP-0105", + "predikat": "foljer_standard", + "objekt": "ATC-standarder; Caltrans 33x-typ", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "del_av", + "objekt": "Vägbana/beläggning (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "EN 1436 / MUTCD", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "EN 1436:2018", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper" + }, + { + "subjekt": "LVX-TRP-0106", + "predikat": "foljer_standard", + "objekt": "MUTCD 11:e utgåvan", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "EN 1317 / MASH", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "EN 1317", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5" + }, + { + "subjekt": "LVX-TRP-0107", + "predikat": "foljer_standard", + "objekt": "MASH (2016)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)" + }, + { + "subjekt": "LVX-TRP-0108", + "predikat": "ansluts_med", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Belysning/realtidsskylt matas från nätet" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "monteras_pa", + "objekt": "LVX-VAT-0201", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "del_av", + "objekt": "LVX-VAT-0202", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0102", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "foljer_standard", + "objekt": "EN 124:2015 (del 1–6)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit" + }, + { + "subjekt": "LVX-VAT-0101", + "predikat": "foljer_standard", + "objekt": "H-20/HS-20-lastkrav", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "del_av", + "objekt": "LVX-VAT-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0102", + "predikat": "foljer_standard", + "objekt": "EN 124:2015", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "ansluts_med", + "objekt": "Vattenledningsnät/servisventil (Tier 2)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "AWWA C502/C503, EN 14384/14339", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "ANSI/AWWA C502", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "ANSI/AWWA C503", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Våtposter för milt klimat utan frysrisk" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "EN 14384", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Minimikrav, provning och märkning för pelarbrandposter" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "EN 14339", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Underjordiska brandposter" + }, + { + "subjekt": "LVX-VAT-0103", + "predikat": "foljer_standard", + "objekt": "NFPA 1963", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Slanganslutningarnas gängor" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "foljer_standard", + "objekt": "EN 12767", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "foljer_standard", + "objekt": "EN 12767:2019 (+A1:2024)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krocktestklassning HE/LE/NE för bl.a. skylt- och belysningsstolpar; utesluter räcken" + }, + { + "subjekt": "LVX-TRP-0201", + "predikat": "foljer_standard", + "objekt": "Breakaway-krav (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-motsvarighet — slipbase och brytkopplingar" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0104", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Bär signalhuvudena" + }, + { + "subjekt": "LVX-TRP-0202", + "predikat": "foljer_standard", + "objekt": "LTS-serien (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturkrav för mastarmar" + }, + { + "subjekt": "LVX-TRP-0203", + "predikat": "ingar_i", + "objekt": "Eftergivliga stödsystem (EN 12767-scope)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "monteras_pa", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "foljer_standard", + "objekt": "ANSI C136.10/.41; Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "foljer_standard", + "objekt": "ANSI C136.10 / C136.41", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Mekaniskt och elektriskt gränssnitt (US/UK-tradition)" + }, + { + "subjekt": "LVX-TRP-0204", + "predikat": "foljer_standard", + "objekt": "Zhaga Book 18", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-vanligt nodgränssnitt" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "ansluts_med", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Bär vägmärken/vägvisning" + }, + { + "subjekt": "LVX-TRP-0205", + "predikat": "foljer_standard", + "objekt": "LTS / Eurokoder (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Vind-/utmattningsdimensionering" + }, + { + "subjekt": "LVX-TRP-0206", + "predikat": "del_av", + "objekt": "Vägbana/beläggning (framtida klass)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0206", + "predikat": "foljer_standard", + "objekt": "EN 1340", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krav och provning för betongkantsten, rännor och passbitar; ersatte BS 7263-3" + }, + { + "subjekt": "LVX-TRP-0206", + "predikat": "foljer_standard", + "objekt": "EN 1343", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Naturstenskantsten — prestandaklasser i väghållarkrav (t.ex. UK MCHW)" + }, + { + "subjekt": "LVX-TRP-0207", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Eller direkt nedslagen" + }, + { + "subjekt": "LVX-TRP-0207", + "predikat": "foljer_standard", + "objekt": "EN 12899-3", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kolorimetri, retroreflex, statisk/dynamisk last och påkörning; färg/form styrs nationellt" + }, + { + "subjekt": "LVX-TRP-0207", + "predikat": "foljer_standard", + "objekt": "Kategori 1-enheter", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "US-klassning för flexposts" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "monteras_pa", + "objekt": "Brokantbalk (framtida klass)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "forvaxlas_med", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "foljer_standard", + "objekt": "EN 1317", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kapacitetsklasser (upp till H4b) tillämpas på broräcken; arbetsbredd kritisk vid kant" + }, + { + "subjekt": "LVX-TRP-0208", + "predikat": "foljer_standard", + "objekt": "MASH", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "TL-klassning av broräcken" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "star_pa", + "objekt": "LVX-TRP-0203", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Fundamentrad" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "foljer_standard", + "objekt": "EN 14388", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Harmoniserad produktstandard (CE/UKCA)" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "foljer_standard", + "objekt": "EN 1793 (del 1/2/5/6)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Ljudisolering DLR, absorption DLα, in-situ-metoder" + }, + { + "subjekt": "LVX-TRP-0209", + "predikat": "foljer_standard", + "objekt": "EN 1794 (del 1/2)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Mekanik/stabilitet respektive säkerhet/miljö" + }, + { + "subjekt": "LVX-TRP-0210", + "predikat": "del_av", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Avslutar räckeslinjen" + }, + { + "subjekt": "LVX-TRP-0210", + "predikat": "foljer_standard", + "objekt": "MASH", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TRP-0210", + "predikat": "foljer_standard", + "objekt": "MASH (TL-2/TL-3)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Krocktestklassning; FHWA eligibility letters (t.ex. CC-115D för SoftStop)" + }, + { + "subjekt": "LVX-VAT-0201", + "predikat": "ansluts_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Ram + lock bildar betäckningen" + }, + { + "subjekt": "LVX-VAT-0201", + "predikat": "monteras_pa", + "objekt": "LVX-VAT-0202", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0201", + "predikat": "foljer_standard", + "objekt": "EN 124", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Klassning A15–F900 gäller ram + lock som enhet" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "ansluts_med", + "objekt": "LVX-VAT-0201", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Kröns av ram + betäckning" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "ASTM C478 / AASHTO M199", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "ASTM C478/C478M", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Tillverkningskrav för brunnsdelar (sewer/drainage/water works)" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "M199", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Parallellkrav i väghållarled" + }, + { + "subjekt": "LVX-VAT-0202", + "predikat": "foljer_standard", + "objekt": "EN 1917 (kartläggs)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "EU-motsvarighet — källbeläggs i nästa våg" + }, + { + "subjekt": "LVX-VAT-0203", + "predikat": "ansluts_med", + "objekt": "LVX-VAT-0102", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Gallret är intaget" + }, + { + "subjekt": "LVX-VAT-0203", + "predikat": "del_av", + "objekt": "Dagvattennät (framtida klass)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-VAT-0204", + "predikat": "ansluts_med", + "objekt": "Avstängningsventil (framtida klass)", + "objekt_typ": "text", + "niva": "klass", + "beskrivning": "Ger åtkomst till spindeln" + }, + { + "subjekt": "LVX-VAT-0204", + "predikat": "forvaxlas_med", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "klass" + }, + { + "subjekt": "LVX-ELN-0201", + "predikat": "matas_fran", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Servis via kabelskåpsnätet" + }, + { + "subjekt": "LVX-ELN-0201", + "predikat": "variant_av", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Mätarutförande av skåpfamiljen (CDCM)" + }, + { + "subjekt": "LVX-ELN-0201", + "predikat": "foljer_standard", + "objekt": "SS-EN 61439-5 (familjekrav)", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Samma normfamilj som kabelskåpen" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "ansluts_med", + "objekt": "LVX-TEL-0101", + "objekt_typ": "lvx", + "niva": "klass", + "beskrivning": "Kanalisationen matar skåpen" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "foljer_standard", + "objekt": "ANSI/SCTE 77", + "objekt_typ": "standard", + "niva": "klass" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "foljer_standard", + "objekt": "ANSI/SCTE 77", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Strukturell integritet och tier-lastklassning för handholes (först 2002, reviderad därefter)" + }, + { + "subjekt": "LVX-TEL-0201", + "predikat": "foljer_standard", + "objekt": "NEC 314.30", + "objekt_typ": "standard", + "niva": "klass", + "beskrivning": "Kräver dimensionering för förekommande laster; lockmärkning av funktion; lock ska kräva verktyg eller väga >45 kg" + }, + { + "subjekt": "LVX-PRK-0201", + "predikat": "ingar_i", + "objekt": "Möbleringsprogram (kommunspecifikt)", + "objekt_typ": "text", + "niva": "klass" + }, + { + "subjekt": "LVX-P-0000001", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000001", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000002", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "ersatter", + "objekt": "LVX-P-0000001", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000002", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000003", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000003", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000003", + "predikat": "ersatter", + "objekt": "LVX-P-0000002", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000004", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000005", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000005", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000006", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000006", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000006", + "predikat": "ersatter", + "objekt": "LVX-P-0000005", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000007", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0102", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000008", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000009", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000010", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000011", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000012", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000013", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000014", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000015", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000016", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000017", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0103", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000018", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000019", + "predikat": "tillhor_klass", + "objekt": "LVX-VAT-0101", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000020", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0107", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000020", + "predikat": "ersatter", + "objekt": "Äldre G4/27¾-tums strong-post W-balk", + "objekt_typ": "text", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000021", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0210", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000022", + "predikat": "tillhor_klass", + "objekt": "LVX-TRP-0105", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000023", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000024", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000025", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000025", + "predikat": "ersatts_av", + "objekt": "LVX-P-0000026", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000026", + "predikat": "tillhor_klass", + "objekt": "LVX-ELN-0104", + "objekt_typ": "lvx", + "niva": "modell" + }, + { + "subjekt": "LVX-P-0000026", + "predikat": "ersatter", + "objekt": "LVX-P-0000025", + "objekt_typ": "lvx", + "niva": "modell" + } + ] +} \ No newline at end of file diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-eln.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-eln.json new file mode 100644 index 000000000..073c13e54 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-eln.json @@ -0,0 +1,191 @@ +{ + "beskrivning": "Landvex IOL — Tier 1-klassposter, domän ELN (Elnät). Genererade enligt forskningsprotokollet v1.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-ELN-0101", + "posttyp": "objektklass", + "slug": "kabelskap-lagspanning", + "namn": { "sv": "Kabelskåp, lågspänning", "en": "LV distribution cabinet" }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["ABB Kabeldon (Norden)", "nätbolagsspecifika program per land"], + "status": "aktiv" + }, + "teknik": { + "material": ["plåt (lackerad/förzinkad)", "glasfiberkomposit", "polykarbonat"], + "montering": "På sockel/fundament i gatumiljö; innehåller säkringslister och kabelavgreningar", + "ovrigt": { "funktion": "Förgreningspunkt i lågspänningsnätet mellan nätstation och abonnenter" } + }, + "geografi": { "lander": ["EU", "UK", "US", "CA", "AU"], "miljotyper": ["stadsgata", "bostadsområde", "landsbygd"] }, + "standarder": [ + { "organ": "Nationella nätbolag", "beteckning": "Nätbolagsnormer (kartläggs per marknad i steg 1)", "titel": "Företags-/branschnormer för kabelskåp", "roll": "Utformning styrs i hög grad av respektive nätbolags standardsortiment", "marknad": "per land" } + ], + "ai": { + "kannetecken": ["Fristående grå/grön låda på sockel utan ventilationsbehovet hos telekomskåp", "Nätbolagsdekal och skåpnummer", "Varningsskylt med blixtsymbol", "Trekants- eller specialnyckellås"], + "sarskiljande_detaljer": ["Skåpnumret i nätbolagets format — nyckel-OCR", "Sockelns material och höjd", "Dörrantal och gångjärnstyp per fabrikat"], + "forvaxlingsrisker": ["Telekomskåp (LVX-TEL-0101) — saknar blixtsymbol, har ofta ventilation", "Trafiksignalskåp (LVX-TRP-0105)", "Belysningscentral (undervariant, kartläggs)"], + "kameravinklar": ["Framifrån hel front", "Närbild på dekal, skåpnummer och varningsskylt"], + "ocr": { "typskylt_position": "Dekal/skylt på dörr", "falt": ["nätbolag", "skåpnummer", "varningstext"] }, + "konfidenskrav": 0.75 + }, + "problem": [ + { "typ": "Påkörning/snöröjningsskador", "beskrivning": "", "kalla": "PLATSHÅLLARE — nätbolagens felstatistik" }, + { "typ": "Korrosion vid sockel", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "matas_fran", "mal": "LVX-ELN-0103", "beskrivning": "Nätstation/transformator" }, + { "predikat": "ansluts_med", "mal": "LVX-TRP-0101", "beskrivning": "Matar bl.a. belysningsnät" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.55, "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-ELN-0102", + "posttyp": "objektklass", + "slug": "elstolpe", + "namn": { "sv": "Elstolpe", "en": "Utility pole" }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Stella-Jones (trä, NA)", "Koppers (impregnering, NA)", "Valmont (stål)", "RS Technologies (komposit)"], + "status": "aktiv" + }, + "teknik": { + "material": ["impregnerat trä (southern yellow pine — vattenburna medel; douglasgran — oljebaserade medel)", "stål", "komposit", "betong (vissa marknader)"], + "montering": "Direkt nedgrävd (trä) eller på fundament (stål/komposit)", + "livslangd_ar": "40–70 för impregnerat trä beroende på medel och klimat", + "ovrigt": { "impregnering": "Pentaklorfenol (penta) utfasas i US efter EPA-beslut 2022: nyproduktion/försäljning upphörde feb 2024, behandling med befintliga lager tillåten till feb 2027; alternativ: kopparnaftenat, DCOIT, CCA, kreosot. CCA-behandlade stolpar dominerar sydöstra US. Kanada drog in registreringen okt 2022." } + }, + "geografi": { "lander": ["US", "CA", "AU", "delar av EU/UK"], "miljotyper": ["landsbygd", "förort", "stadsgata (äldre nät)"] }, + "standarder": [ + { "organ": "ANSI", "beteckning": "ANSI O5.1", "titel": "Wood poles — specifications and dimensions", "roll": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)", "marknad": "US" }, + { "organ": "EPA / Health Canada", "beteckning": "Penta-utfasningsbeslut 2022", "titel": "Registration review decision pentachlorophenol", "roll": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer", "marknad": "US/CA" } + ], + "ai": { + "kannetecken": ["Trästolpe med travers/regel, isolatorer och ledningar", "Kraft överst, tele/fiber-linjer lägre — vertikal zonindelning", "Stolptransformator (burk) på många NA-stolpar", "Stolpsteg eller klätterspår"], + "sarskiljande_detaljer": ["'Birthmark'-märkning inbränd/spikad i stolpen med år, längd, klass, träslag och impregneringsmedel — bästa OCR-källan och daterar stolpen", "Impregneringens färgton (grönaktig CCA vs brunoljig penta/kreosot) ger generationsledtråd", "Nätbolagets stolpnummerbricka"], + "forvaxlingsrisker": ["Belysningsstolpe (LVX-TRP-0101)", "Telestolpe utan kraft", "Flagg-/antennmast"], + "kameravinklar": ["Helbild", "Närbild på birthmark i ögonhöjd", "Toppzon med utrustning"], + "ocr": { "typskylt_position": "Inbränd birthmark ca 3 m över mark + nummerbricka", "falt": ["år", "längd/klass", "träslag", "impregneringsmedel", "stolpnummer"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Impregneringsmedel under regulatorisk avveckling", "beskrivning": "Penta-behandlade stolpar (uppskattningsvis ca 60 miljoner i drift i US) blir en utbytes- och hanteringsfråga i takt med utfasningen", "kalla": "EPA — Cancellation of pentachlorophenol (2022); University of Wisconsin PAT-sammanfattning" }, + { "typ": "Röta i markzon", "beskrivning": "Nedbrytning vid marklinjen är dominerande livslängdsbegränsning för trä", "kalla": "PLATSHÅLLARE — belägg med inspektionsdata" }, + { "typ": "Hackspettskador", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Direkt i mark / fundament", "beskrivning": "" }, + { "predikat": "ingar_i", "mal": "Distributionsnät (Tier 2-topologi)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "EPA — Pentachlorophenol (utfasningstidslinje: feb 2024 / feb 2027)", "url": "https://www.epa.gov/ingredients-used-pesticide-products/pentachlorophenol", "hamtad": "2026-07-04" }, + { "titel": "UW PAT — EPA to Phase Out Pentachlorophenol (~60 M penta-stolpar; alternativmedel)", "url": "https://fyi.extension.wisc.edu/pat/2022/05/04/epa-to-phase-out-use-of-pentachlorophenol/", "hamtad": "2026-07-04" }, + { "titel": "C&EN — träslag/medel-koppling (yellow pine/CCA sydöstra US; douglasgran/oljebaserat)", "url": "https://cen.acs.org/business/specialty-chemicals/Pentachlorophenol-way-utility-pole-preservative/98/i14", "hamtad": "2026-07-04" } + ], + "konfidens": 0.8, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0103", + "posttyp": "objektklass", + "slug": "natstation-transformator", + "namn": { "sv": "Nätstation/transformatorstation", "en": "Distribution substation / padmount transformer" }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Eaton", "Hitachi Energy", "Schneider Electric", "ERMCO (US)", "Howard Industries (US)"], + "status": "aktiv" + }, + "teknik": { + "material": ["stålkapsling", "betonghus (kioskstationer)"], + "montering": "Padmount: låg kapsling på betongfundament (NA-typiskt). Prefabricerad kiosk-/kompaktstation: gångbar (walk-in) eller manövrerad utifrån (non-walk-in); kan vara helt/delvis nedgrävd", + "ovrigt": { "funktion": "Transformerar mellanspänning till lågspänning; IEC 62271-202 klassar bl.a. intern ljusbågstålighet (IAC, tillgänglighetstyp A/B/AB)" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["bostadsområde", "stadsgata", "industriområde"] }, + "standarder": [ + { "organ": "IEC", "beteckning": "IEC 62271-202:2022", "titel": "AC prefabricated substations >1 kV–52 kV", "roll": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC", "marknad": "EU/internationellt" }, + { "organ": "IEEE", "beteckning": "IEEE C57.12.28 m.fl.", "titel": "Padmount enclosure integrity", "roll": "US-kapslingskrav (kartläggs vidare i modellvågen)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Padmount: låg grön/grå plåtlåda på betongplatta, ofta i villaområden", "Kioskstation: litet hus/skåp med dörrgaller och ventilation", "Varningsskyltar högspänning på alla varianter", "Svagt transformatorsurr hörs nära"], + "sarskiljande_detaljer": ["Typskylt med kVA-tal, spänningar och tillverkare — nyckel-OCR", "Padlock-hasp och pentabult (NA)", "Kabelrör/kabelbrunnar intill", "Fundamenttyp"], + "forvaxlingsrisker": ["Kabelskåp LV (LVX-ELN-0101) — mindre, ingen HV-skyltning", "Telekomskåp (LVX-TEL-0101)", "Pumpstation VA (liknande hus, annan skyltning)"], + "kameravinklar": ["Helbild med omgivning", "Närbild på varningsskylt och typskylt (utan att öppna något)"], + "ocr": { "typskylt_position": "Typskylt på kapslingens front/sida", "falt": ["tillverkare", "kVA", "spänningar", "serienummer", "år"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Korrosion i kapsling", "beskrivning": "", "kalla": "PLATSHÅLLARE — nätbolagsdata" }, + { "typ": "Oljeläckage (oljeisolerade transformatorer)", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "matas_fran", "mal": "Mellanspänningsnät (Tier 2-topologi)", "beskrivning": "" }, + { "predikat": "ansluts_med", "mal": "LVX-ELN-0101", "beskrivning": "Matar kabelskåpen i LV-nätet" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "IEC 62271-202:2022 (scope: >1–52 kV, walk-in/non-walk-in, offentlig placering, IAC)", "url": "https://webstore.iec.ch/en/publication/66264", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0104", + "posttyp": "objektklass", + "slug": "laddstation", + "namn": { "sv": "Laddstation", "en": "EV charging station" }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Tesla", "ChargePoint", "ABB E-mobility", "Alpitronic", "Kempower"], + "status": "aktiv" + }, + "teknik": { + "montering": "AC-box på stolpe/vägg (destinationsladdning) eller fristående DC-skåp med tjock, ofta vätskekyld kabel (snabbladdning)", + "ovrigt": { "kontakter": "NACS/SAE J3400 (kompakt, samma stift AC+DC), CCS1 (US) / CCS2 (EU), CHAdeMO (utfasande), Typ 2 (EU AC), J1772 (US AC). Federalt finansierade US-snabbladdare kan ha J3400 om CCS1 också finns." } + }, + "historik": { + "revisioner": ["Tesla-kontakten (2012) → öppnad som NACS (2022) → SAE J3400: TIR dec 2023, Recommended Practice sep 2024; flertalet biltillverkare i Nordamerika går över från CCS1 från modellår 2025"] + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["parkering", "servicestation", "gatuladdning", "depå"] }, + "standarder": [ + { "organ": "SAE", "beteckning": "SAE J3400 (NACS)", "titel": "North American Charging System", "roll": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default", "marknad": "US/CA" }, + { "organ": "SAE", "beteckning": "SAE J1772", "titel": "AC-kontakt nivå 1/2", "roll": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC", "marknad": "US/CA" }, + { "organ": "IEC", "beteckning": "IEC 61851 / IEC 62196", "titel": "Konduktiv laddning / kontaktdon", "roll": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)", "marknad": "EU/internationellt" } + ], + "ai": { + "kannetecken": ["Kontakttypen är den snabbaste klassificeraren: NACS är kompakt; CCS är större kombikontakt; CHAdeMO rund", "DC-snabbladdare: högt skåp, tjock/kyld kabel, ofta skärm", "AC-destinationsladdare: liten box, tunn kabel eller uttag", "Operatörsvarumärke och belysning"], + "sarskiljande_detaljer": ["Stations-ID och QR-kod — nyckel-OCR", "Effektmärkning i kW", "Antal uttag och kabelhantering (topphängd/sidohängd)"], + "forvaxlingsrisker": ["Parkeringsautomat", "Belysningsstolpe med uttag", "Batterilager-/nätskåp"], + "kameravinklar": ["Helbild framifrån", "Närbild på kontakt", "Närbild på skärm/ID/QR"], + "ocr": { "typskylt_position": "Front: operatör, stations-ID, QR, effekt", "falt": ["operatör", "stations-ID", "effekt kW", "kontakttyper"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Kontaktgenerationsskifte", "beskrivning": "CCS1-parken i Nordamerika fasas gradvis mot J3400; adaptrar överbryggar under övergången — viktigt för ersättningskedjan i grafen", "kalla": "SAE/Joint Office — J3400-standardisering och branschadoption" }, + { "typ": "Kabelstöld/vandalism", "beskrivning": "", "kalla": "PLATSHÅLLARE — operatörsdata" } + ], + "relationer": [ + { "predikat": "matas_fran", "mal": "LVX-ELN-0103 / LVX-ELN-0101", "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" }, + { "predikat": "ersatter", "mal": "CCS1-utrustade stationer (US, gradvis)", "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "Joint Office — SAE J3400 Charging Connector (TIR dec 2023; CCS1-krav vid federal finansiering)", "url": "https://driveelectric.gov/charging-connector", "hamtad": "2026-07-04" }, + { "titel": "Wikipedia — North American Charging Standard (historik, RP sep 2024, branschadoption)", "url": "https://en.wikipedia.org/wiki/North_American_Charging_Standard", "hamtad": "2026-07-04" } + ], + "konfidens": 0.8, "verifieringsniva": "kallbelagd" + } + } + ] +} diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v1.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v1.json new file mode 100644 index 000000000..16043b178 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v1.json @@ -0,0 +1,2739 @@ +{ + "beskrivning": "Landvex IOL — konsoliderade Tier 1-klassposter v1. Våg 2-uppdateringar inarbetade, relationer ommappade enligt Tier 2-relationskartan. Ersätter de fyra våg 1-filerna + vag2-uppdaterade som arbetskopia.", + "genererad": "2026-07-04", + "antal_poster": 20, + "poster": [ + { + "lvx_id": "LVX-ELN-0101", + "posttyp": "objektklass", + "slug": "kabelskap-lagspanning", + "namn": { + "sv": "Kabelskåp, lågspänning", + "en": "LV distribution cabinet" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "ABB Kabeldon (Norden, fabrik i Alingsås)", + "nätbolagsspecifika program per land" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "varmförzinkad stålplåt (nordisk standard)", + "glasfiberkomposit", + "polykarbonat" + ], + "montering": "Integrerat markfundament eller sockel; justerbara ben; förberedd för VP-rör och värmekabel (arktiskt klimat)", + "ip_klass": "t.ex. IP34D enligt SS-EN 60529 (Kabeldon CDC)", + "ovrigt": { + "las": "Trekantslås standard i Norden (t.ex. CDC-LT); cylinderlås som tillval", + "innehall": "Säkringslister/skensystem, kabelavgreningar; lucka med hållare för kabelskåpskort" + } + }, + "geografi": { + "lander": [ + "EU", + "UK", + "US", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "bostadsområde", + "landsbygd" + ] + }, + "standarder": [ + { + "organ": "IEC/CENELEC", + "beteckning": "EN 61439-5", + "titel": "Lågspänningsfördelningar — kopplingsutrustning i publika distributionsnät", + "roll": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Fristående grå/grön låda på sockel eller integrerat fundament", + "Nätbolagsdekal och skåpnummer", + "Varningsskylt med blixtsymbol", + "Trekants- eller specialnyckellås", + "Ofta markeringsstång med reflex intill (snöröjning)" + ], + "sarskiljande_detaljer": [ + "Skåpnumret i nätbolagets format — nyckel-OCR", + "Präglad lucka anpassad för märkning (Kabeldon)", + "Varmförzinkad yta vs lackerad komposit skiljer generation/marknad", + "CDCM-variant med ovandel används som mätarskåp" + ], + "forvaxlingsrisker": [ + "Telekomskåp (LVX-TEL-0101) — saknar blixtsymbol, har ofta ventilation", + "Trafiksignalskåp (LVX-TRP-0105)", + "Belysningscentral (undervariant)" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på dekal, skåpnummer och varningsskylt" + ], + "ocr": { + "typskylt_position": "Dekal/prägling på lucka", + "falt": [ + "nätbolag", + "skåpnummer", + "varningstext" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Påkörning/snöröjningsskador", + "beskrivning": "Markeringsstång med varselmärkning och reflexband säljs som standardtillbehör — indikerar känt riskmönster", + "kalla": "ABB Kabeldon tillbehörskatalog (KSPS 7 markeringsstång)" + }, + { + "typ": "Fukt", + "beskrivning": "Fuktspärr finns som tillbehör till hela CDC-serien", + "kalla": "ABB Kabeldon CDC-katalog" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0103", + "beskrivning": "Nätstation/transformator" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0101", + "beskrivning": "Matar bl.a. belysningsnät" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ABB — Kabeldon kabelskåp och kapslingar (produktfamilj, hårda miljöer)", + "url": "https://new.abb.com/low-voltage/sv/produkter/kabelskap_cewe_kabeldon/kabeldon-kabelskap", + "hamtad": "2026-07-04" + }, + { + "titel": "Onninen — Kabelskåp CDC 420 (varmförzinkat, integrerat markfundament, 400 A, SS-EN 61439-5, arktiskt klimat, trekantslås)", + "url": "https://www.onninen.se/abb-kabeldon-kabelskap-cdc-420/p/AQO708", + "hamtad": "2026-07-04" + }, + { + "titel": "ABB Kabeldon produktkatalog (Alingsås; IP34D SS-EN 60529; CDC/CDCM-användning)", + "url": "https://library.e.abb.com/public/5c949d884df64a6882b049397a2b94e0/2013_Katalog_Kabeldon_lagspanningsfordelningar_svensk_REV%20A_6.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0102", + "posttyp": "objektklass", + "slug": "elstolpe", + "namn": { + "sv": "Elstolpe", + "en": "Utility pole" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Stella-Jones (trä, NA)", + "Koppers (impregnering, NA)", + "Valmont (stål)", + "RS Technologies (komposit)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "impregnerat trä (southern yellow pine — vattenburna medel; douglasgran — oljebaserade medel)", + "stål", + "komposit", + "betong (vissa marknader)" + ], + "montering": "Direkt nedgrävd (trä) eller på fundament (stål/komposit)", + "livslangd_ar": "40–70 för impregnerat trä beroende på medel och klimat", + "ovrigt": { + "impregnering": "Pentaklorfenol (penta) utfasas i US efter EPA-beslut 2022: nyproduktion/försäljning upphörde feb 2024, behandling med befintliga lager tillåten till feb 2027; alternativ: kopparnaftenat, DCOIT, CCA, kreosot. CCA-behandlade stolpar dominerar sydöstra US. Kanada drog in registreringen okt 2022." + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "AU", + "delar av EU/UK" + ], + "miljotyper": [ + "landsbygd", + "förort", + "stadsgata (äldre nät)" + ] + }, + "standarder": [ + { + "organ": "ANSI", + "beteckning": "ANSI O5.1", + "titel": "Wood poles — specifications and dimensions", + "roll": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)", + "marknad": "US" + }, + { + "organ": "EPA / Health Canada", + "beteckning": "Penta-utfasningsbeslut 2022", + "titel": "Registration review decision pentachlorophenol", + "roll": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer", + "marknad": "US/CA" + } + ], + "ai": { + "kannetecken": [ + "Trästolpe med travers/regel, isolatorer och ledningar", + "Kraft överst, tele/fiber-linjer lägre — vertikal zonindelning", + "Stolptransformator (burk) på många NA-stolpar", + "Stolpsteg eller klätterspår" + ], + "sarskiljande_detaljer": [ + "'Birthmark'-märkning inbränd/spikad i stolpen med år, längd, klass, träslag och impregneringsmedel — bästa OCR-källan och daterar stolpen", + "Impregneringens färgton (grönaktig CCA vs brunoljig penta/kreosot) ger generationsledtråd", + "Nätbolagets stolpnummerbricka" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe (LVX-TRP-0101)", + "Telestolpe utan kraft", + "Flagg-/antennmast" + ], + "kameravinklar": [ + "Helbild", + "Närbild på birthmark i ögonhöjd", + "Toppzon med utrustning" + ], + "ocr": { + "typskylt_position": "Inbränd birthmark ca 3 m över mark + nummerbricka", + "falt": [ + "år", + "längd/klass", + "träslag", + "impregneringsmedel", + "stolpnummer" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Impregneringsmedel under regulatorisk avveckling", + "beskrivning": "Penta-behandlade stolpar (uppskattningsvis ca 60 miljoner i drift i US) blir en utbytes- och hanteringsfråga i takt med utfasningen", + "kalla": "EPA — Cancellation of pentachlorophenol (2022); University of Wisconsin PAT-sammanfattning" + }, + { + "typ": "Röta i markzon", + "beskrivning": "Nedbrytning vid marklinjen är dominerande livslängdsbegränsning för trä", + "kalla": "PLATSHÅLLARE — belägg med inspektionsdata" + }, + { + "typ": "Hackspettskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ingar_i", + "mal": "Distributionsnät (Tier 2-topologi)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EPA — Pentachlorophenol (utfasningstidslinje: feb 2024 / feb 2027)", + "url": "https://www.epa.gov/ingredients-used-pesticide-products/pentachlorophenol", + "hamtad": "2026-07-04" + }, + { + "titel": "UW PAT — EPA to Phase Out Pentachlorophenol (~60 M penta-stolpar; alternativmedel)", + "url": "https://fyi.extension.wisc.edu/pat/2022/05/04/epa-to-phase-out-use-of-pentachlorophenol/", + "hamtad": "2026-07-04" + }, + { + "titel": "C&EN — träslag/medel-koppling (yellow pine/CCA sydöstra US; douglasgran/oljebaserat)", + "url": "https://cen.acs.org/business/specialty-chemicals/Pentachlorophenol-way-utility-pole-preservative/98/i14", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0103", + "posttyp": "objektklass", + "slug": "natstation-transformator", + "namn": { + "sv": "Nätstation/transformatorstation", + "en": "Distribution substation / padmount transformer" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Eaton", + "Hitachi Energy", + "Schneider Electric", + "ERMCO (US)", + "Howard Industries (US)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stålkapsling", + "betonghus (kioskstationer)" + ], + "montering": "Padmount: låg kapsling på betongfundament (NA-typiskt). Prefabricerad kiosk-/kompaktstation: gångbar (walk-in) eller manövrerad utifrån (non-walk-in); kan vara helt/delvis nedgrävd", + "ovrigt": { + "funktion": "Transformerar mellanspänning till lågspänning; IEC 62271-202 klassar bl.a. intern ljusbågstålighet (IAC, tillgänglighetstyp A/B/AB)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "bostadsområde", + "stadsgata", + "industriområde" + ] + }, + "standarder": [ + { + "organ": "IEC", + "beteckning": "IEC 62271-202:2022", + "titel": "AC prefabricated substations >1 kV–52 kV", + "roll": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC", + "marknad": "EU/internationellt" + }, + { + "organ": "IEEE", + "beteckning": "IEEE C57.12.28 m.fl.", + "titel": "Padmount enclosure integrity", + "roll": "US-kapslingskrav (kartläggs vidare i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Padmount: låg grön/grå plåtlåda på betongplatta, ofta i villaområden", + "Kioskstation: litet hus/skåp med dörrgaller och ventilation", + "Varningsskyltar högspänning på alla varianter", + "Svagt transformatorsurr hörs nära" + ], + "sarskiljande_detaljer": [ + "Typskylt med kVA-tal, spänningar och tillverkare — nyckel-OCR", + "Padlock-hasp och pentabult (NA)", + "Kabelrör/kabelbrunnar intill", + "Fundamenttyp" + ], + "forvaxlingsrisker": [ + "Kabelskåp LV (LVX-ELN-0101) — mindre, ingen HV-skyltning", + "Telekomskåp (LVX-TEL-0101)", + "Pumpstation VA (liknande hus, annan skyltning)" + ], + "kameravinklar": [ + "Helbild med omgivning", + "Närbild på varningsskylt och typskylt (utan att öppna något)" + ], + "ocr": { + "typskylt_position": "Typskylt på kapslingens front/sida", + "falt": [ + "tillverkare", + "kVA", + "spänningar", + "serienummer", + "år" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Korrosion i kapsling", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — nätbolagsdata" + }, + { + "typ": "Oljeläckage (oljeisolerade transformatorer)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "Mellanspänningsnät (Tier 2-topologi)", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-ELN-0101", + "beskrivning": "Matar kabelskåpen i LV-nätet" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "IEC 62271-202:2022 (scope: >1–52 kV, walk-in/non-walk-in, offentlig placering, IAC)", + "url": "https://webstore.iec.ch/en/publication/66264", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0104", + "posttyp": "objektklass", + "slug": "laddstation", + "namn": { + "sv": "Laddstation", + "en": "EV charging station" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Tesla", + "ChargePoint", + "ABB E-mobility", + "Alpitronic", + "Kempower" + ], + "status": "aktiv" + }, + "teknik": { + "montering": "AC-box på stolpe/vägg (destinationsladdning) eller fristående DC-skåp med tjock, ofta vätskekyld kabel (snabbladdning)", + "ovrigt": { + "kontakter": "NACS/SAE J3400 (kompakt, samma stift AC+DC), CCS1 (US) / CCS2 (EU), CHAdeMO (utfasande), Typ 2 (EU AC), J1772 (US AC). Federalt finansierade US-snabbladdare kan ha J3400 om CCS1 också finns." + } + }, + "historik": { + "revisioner": [ + "Tesla-kontakten (2012) → öppnad som NACS (2022) → SAE J3400: TIR dec 2023, Recommended Practice sep 2024; flertalet biltillverkare i Nordamerika går över från CCS1 från modellår 2025" + ] + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "parkering", + "servicestation", + "gatuladdning", + "depå" + ] + }, + "standarder": [ + { + "organ": "SAE", + "beteckning": "SAE J3400 (NACS)", + "titel": "North American Charging System", + "roll": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default", + "marknad": "US/CA" + }, + { + "organ": "SAE", + "beteckning": "SAE J1772", + "titel": "AC-kontakt nivå 1/2", + "roll": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC", + "marknad": "US/CA" + }, + { + "organ": "IEC", + "beteckning": "IEC 61851 / IEC 62196", + "titel": "Konduktiv laddning / kontaktdon", + "roll": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)", + "marknad": "EU/internationellt" + } + ], + "ai": { + "kannetecken": [ + "Kontakttypen är den snabbaste klassificeraren: NACS är kompakt; CCS är större kombikontakt; CHAdeMO rund", + "DC-snabbladdare: högt skåp, tjock/kyld kabel, ofta skärm", + "AC-destinationsladdare: liten box, tunn kabel eller uttag", + "Operatörsvarumärke och belysning" + ], + "sarskiljande_detaljer": [ + "Stations-ID och QR-kod — nyckel-OCR", + "Effektmärkning i kW", + "Antal uttag och kabelhantering (topphängd/sidohängd)" + ], + "forvaxlingsrisker": [ + "Parkeringsautomat", + "Belysningsstolpe med uttag", + "Batterilager-/nätskåp" + ], + "kameravinklar": [ + "Helbild framifrån", + "Närbild på kontakt", + "Närbild på skärm/ID/QR" + ], + "ocr": { + "typskylt_position": "Front: operatör, stations-ID, QR, effekt", + "falt": [ + "operatör", + "stations-ID", + "effekt kW", + "kontakttyper" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Kontaktgenerationsskifte", + "beskrivning": "CCS1-parken i Nordamerika fasas gradvis mot J3400; adaptrar överbryggar under övergången — viktigt för ersättningskedjan i grafen", + "kalla": "SAE/Joint Office — J3400-standardisering och branschadoption" + }, + { + "typ": "Kabelstöld/vandalism", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — operatörsdata" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0103 / LVX-ELN-0101", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "predikat": "ersatter", + "mal": "CCS1-utrustade stationer (US, gradvis)", + "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Joint Office — SAE J3400 Charging Connector (TIR dec 2023; CCS1-krav vid federal finansiering)", + "url": "https://driveelectric.gov/charging-connector", + "hamtad": "2026-07-04" + }, + { + "titel": "Wikipedia — North American Charging Standard (historik, RP sep 2024, branschadoption)", + "url": "https://en.wikipedia.org/wiki/North_American_Charging_Standard", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0101", + "posttyp": "objektklass", + "slug": "pollare", + "namn": { + "sv": "Pollare", + "en": "Bollard" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "ATG Access (säkerhetspollare, UK)", + "Heald (säkerhetspollare, UK)", + "Avon Barrier (HVM-system)", + "stadsmiljöprogram varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål", + "gjutjärn (klassisk kronpollare)", + "rostfritt", + "betong", + "plast/flexibel" + ], + "montering": "Fast ingjuten, löstagbar i hylsa, fällbar/låsbar eller automatisk hydraulisk (typiskt ca 1000 mm över mark i höjt läge)", + "ovrigt": { + "sakerhet": "Fordonshindrande säkerhetspollare (HVM, Hostile Vehicle Mitigation) krocktestas och klassas; klassningskoden anger fordonsvikt, hastighet, vinkel och penetration" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gågata", + "torg", + "entré", + "cykelbana", + "skyddsobjekt" + ] + }, + "standarder": [ + { + "organ": "BSI", + "beteckning": "PAS 68 (2005)", + "titel": "Impact test specifications for vehicle security barriers", + "roll": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika", + "marknad": "UK/EU/MEA" + }, + { + "organ": "ISO (IWA)", + "beteckning": "IWA 14-1 (2013)", + "titel": "Vehicle security barriers — performance requirement", + "roll": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration", + "marknad": "internationellt" + }, + { + "organ": "ASTM", + "beteckning": "ASTM F2656", + "titel": "Crash testing of vehicle security barriers", + "roll": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Fristående kort stolpe utan skylt-/ljusfunktion", + "Reflexband vanligt i trafiknära lägen", + "Automatiska pollare: markring/lucka och varningsmarkering", + "Kättingöglor på parkpollare" + ], + "sarskiljande_detaljer": [ + "Kronformad gjutjärnstopp = klassisk stadsmodell", + "Grov diameter + djupt fundament indikerar HVM-säkerhetspollare (klassning kan vara märkt)", + "Hylslock i mark = löstagbar variant" + ], + "forvaxlingsrisker": [ + "Belysningspollare (låg armatur)", + "Hydrant i pollarform (LVX-VAT-0103)", + "Laddstolpe (LVX-ELN-0104)", + "Förtöjningspollare i hamn (LVX-HMN, Tier 3)" + ], + "kameravinklar": [ + "Helbild", + "Toppen i närbild (form/gjutmärke)", + "Markanslutning (fast/hylsa/automatik)" + ], + "ocr": { + "typskylt_position": "Gjutmärke/etikett på topp eller kropp; HVM-klassning kan förekomma", + "falt": [ + "tillverkare", + "modell", + "ev. klassningskod" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Påkörningsskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + }, + { + "typ": "Automatikfel (hydrauliska pollare)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ATG Access — IWA 14-1-guiden (relation PAS 68/ASTM F2656, klasskod)", + "url": "https://atgaccess.com/what-is-iwa-14/", + "hamtad": "2026-07-04" + }, + { + "titel": "Avon Barrier — Certification & testing (PAS 68/CPNI, IWA 14-1, CWA 16221)", + "url": "https://www.avon-barrier.com/certification-testing/", + "hamtad": "2026-07-04" + }, + { + "titel": "Teknisk guide — ASTM F2656 (2007, ersatte SD-STD-02.01; P1–P4; PAS 68 2005; IWA 14-1 2013/2016)", + "url": "https://www.uparkbollards.com/bollard-crash-ratings-the-complete-technical-guide-to-astm-pas-68-iwa-14-1_n596", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0102", + "posttyp": "objektklass", + "slug": "papperskorg", + "namn": { + "sv": "Papperskorg", + "en": "Litter bin" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Glasdon (UK, grundat 1959, Blackpool)", + "Victor Stanley (US)", + "kommunala program varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polymer (t.ex. Glasdon Durapol — väder-, vandal- och klottertålig)", + "stål/gjutgods", + "trä-stål-kombination" + ], + "montering": "Fundament-, stolp- eller väggmonterad; innerbehållare i zinkbelagd stål eller plast; låsbar (nyckel eller nyckellös)", + "ovrigt": { + "referensexempel": "Glasdon Topsy 2000: 110 l volym, 90 l innerbehållare, lyft-av-kropp för tömning utan tunga lyft, höjd 1000 mm" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "park", + "gågata", + "hållplats", + "torg" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Kommunprogram ger enhetlig design inom en stad — stark geografisk signal", + "Inkastöppningens form (fågelsäkrad mindre öppning)", + "Låst tömningslucka eller lyft-av-kropp", + "Fraktionsdekaler vid sortering" + ], + "sarskiljande_detaljer": [ + "Kommunlogga/programdekal — nyckel-OCR", + "Symbol/dekortyp (t.ex. Glasdons Bin-it-symbol i guld/silver)", + "Askkoppsring i topp", + "Smartkorg: solpanel i lock" + ], + "forvaxlingsrisker": [ + "Sandbehållare/saltlåda", + "Hundlatrin (egen dekal)", + "Returstation" + ], + "kameravinklar": [ + "Helbild framifrån", + "Närbild på dekal/inkast" + ], + "ocr": { + "typskylt_position": "Dekal på kropp", + "falt": [ + "kommun/förvaltare", + "ibland tillverkare/modell", + "fraktion" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Vandalism/klotter", + "beskrivning": "Materialval (t.ex. Durapol) marknadsförs uttryckligen som vandal- och klottertåligt — indikerar känt riskmönster", + "kalla": "Glasdon produktdokumentation (Topsy-serien)" + }, + { + "typ": "Brand i behållare", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ArchiExpo/Glasdon — Topsy 2000 specifikation (Durapol, 110/90 l, lyft-av-kropp, lås)", + "url": "https://www.archiexpo.com/prod/glasdon-group-limited/product-150131-1798607.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Glasdon — företag sedan 1959, ISO 9001 (produktsida Topsy-serien)", + "url": "https://uk.glasdon.com/topsy-royale-tm-litter-bin", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.7, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0103", + "posttyp": "objektklass", + "slug": "cykelstall", + "namn": { + "sv": "Cykelställ", + "en": "Cycle stand" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Cyclehoop (UK)", + "Falco", + "Broxap", + "Dero (US)", + "kommunala program varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "varmförzinkat stålrör (BS EN ISO 1461)", + "rostfritt (304/316)", + "pulverlack i RAL-kulör" + ], + "dimensioner": "Sheffield-bygel typiskt Ø48–60 mm rör, ca 750–900 mm över mark, ca 750–800 mm bred", + "montering": "Nedgjuten (ca 300 mm i betongfickor, krympta ändar mot uppdragning) eller fotplatta med bult", + "ovrigt": { + "tillganglighet": "Tapper-list/platta nertill hjälper synskadade att upptäcka stället; reflexband som tillval" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "station", + "skola", + "handel" + ] + }, + "standarder": [ + { + "organ": "Branschpraxis/upphandling", + "beteckning": "Sheffield-bygel", + "titel": "Omvänt U — de facto-standardtyp", + "roll": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer", + "marknad": "UK (spridd globalt)" + } + ], + "ai": { + "kannetecken": [ + "Sheffield-bygel (omvänt U) — global bastyp som medger ramlåsning", + "Rader med jämna centrumavstånd", + "Framhjulshållare = äldre typ", + "Tvåvåningsställ vid stationer (utbrett i NL/DK)" + ], + "sarskiljande_detaljer": [ + "Rördiameter, tvärslå (moped-/skotervariant) och fotinfästning skiljer fabrikat", + "Tapper-platta nertill = tillgänglighetsanpassad", + "Programkulör och dekal", + "Krympta rörändar vid nedgjutning syns aldrig — fotplatta med bult syns" + ], + "forvaxlingsrisker": [ + "Avspärrningsbygel/räcke", + "Pollare med kätting (LVX-PRK-0101)", + "Mopedparkering (grövre rör, tvärslå)" + ], + "kameravinklar": [ + "Snett ovanifrån hel rad", + "Närbild på infästning och ev. dekal" + ], + "ocr": { + "typskylt_position": "Dekal förekommer", + "falt": [ + "förvaltare", + "ibland tillverkare" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Påkörnings-/plogskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Cyclehoop — Sheffield Stand (3 mm stål, ram+hjullåsning, nedgjutning 300 mm, tapper-tillval)", + "url": "https://cyclehoop.com/product/sheffield-stand/", + "hamtad": "2026-07-04" + }, + { + "titel": "The Bike Storage Company — Sheffield-bygeln som branschstandard/benchmark i UK", + "url": "https://www.thebikestoragecompany.co.uk/product/the-sheffield-cycle-stand-galvanised/", + "hamtad": "2026-07-04" + }, + { + "titel": "Falco — Sheffield-varianter (Ø48/Ø60, höjder, fotplatta/nedgjutning)", + "url": "https://www.falco.co.uk/products/cycle-parking/cycle-stands/sheffield-stands.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0101", + "posttyp": "objektklass", + "slug": "telekomskap", + "namn": { + "sv": "Telekomskåp (fiber/koppar)", + "en": "Telecom street cabinet" + }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "operatörsprogram (t.ex. Openreach i UK)", + "skåpelektronik: t.ex. Huawei, ECI (Openreach FTTC)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "plåt", + "glasfiberkomposit" + ], + "montering": "Sockel-/fundamentmonterat; kabelbrunnar och kanalisation intill", + "ovrigt": { + "typer": "Passivt korskopplingsskåp (UK: PCP, Primary Connection Point) vs aktivt FTTC/DSLAM-skåp; G.fast-poddar kan bultas på befintligt PCP-skåp; AIO-skåp kombinerar PCP + DSLAM i en enhet" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "bostadsområde", + "landsbygd" + ] + }, + "standarder": [ + { + "organ": "Operatörer", + "beteckning": "Operatörsprogram", + "titel": "Operatörsspecifika skåpfamiljer", + "roll": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön", + "marknad": "per land" + } + ], + "ai": { + "kannetecken": [ + "Fristående skåp utan högspänningsskyltning", + "Operatörskonsekvent kulör (UK/Openreach: grön, ofta mörkgrön)", + "Ventilationsgaller på aktiva skåp (DSLAM)", + "Kabelbrunnslock i marken intill", + "Sidopodd på äldre skåp = G.fast-utbyggnad (UK)" + ], + "sarskiljande_detaljer": [ + "Nod-/skåpetikett med operatörens ID — nyckel-OCR", + "Passivt PCP-skåp (endast korskoppling) är enklare och ofta äldre; aktivt skåp har fläktgaller", + "Dubbelskåp PCP + intilliggande FTTC-skåp med kabelkanal emellan" + ], + "forvaxlingsrisker": [ + "Kabelskåp el (LVX-ELN-0101) — har blixtsymbol", + "Trafiksignalskåp (LVX-TRP-0105)", + "Kabel-tv-skåp (egen operatörskulör)" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på etikett/ID", + "Sidovy (poddar/utbyggnader)" + ], + "ocr": { + "typskylt_position": "Etikett på dörr", + "falt": [ + "operatör", + "nod-/skåp-ID" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Kapacitetstak", + "beskrivning": "Fulla skåp (inga lediga portar) är ett känt fenomen som kräver extra DSLAM eller sidopoddar", + "kalla": "ISPreview/BT Community — dokumenterade fall av fulla PCP/FTTC-skåp" + }, + { + "typ": "Korrosion", + "beskrivning": "Rostiga och intryckta äldre skåp rapporteras av abonnenter", + "kalla": "ISPreview läsarrapporter (Virgin Media-skåp)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TEL-0201", + "beskrivning": "" + }, + { + "predikat": "ingar_i", + "mal": "Accessnät (Tier 2-topologi)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ISPreview — Identifying BT/Openreach street furniture (grön kulör; Huawei/ECI-skåp; AIO; G.fast-poddar)", + "url": "https://www.ispreview.co.uk/index.php/2019/12/identifying-bt-and-virgin-medias-uk-broadband-street-furniture-2019.html/2", + "hamtad": "2026-07-04" + }, + { + "titel": "Beaming — PCP-begreppet (Primary Connection Point, gröna gatuskåp)", + "url": "https://www.beaming.co.uk/knowledge-base/techs-techie-jargon-buster/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0102", + "posttyp": "objektklass", + "slug": "mobilmast-antennplats", + "namn": { + "sv": "Mobilmast/antennplats", + "en": "Cell tower / antenna site" + }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Sabre Industries (tillverkare)", + "Valmont (tillverkare)", + "American Tower / Crown Castle / Cellnex (siteägare, ej tillverkare)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (fackverk, rörmast/monopole)", + "betong (vissa master)" + ], + "montering": "Fribärande fackverkstorn, stagad mast eller monopole; alternativt takplacering och kamouflerade utföranden", + "ovrigt": { + "struktur": "TIA-222 omfattar just fribärande fackverkstorn, stagade master och rörmaster samt antennfästen, stag och fundament" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "landsbygd", + "stadsmiljö (tak/monopole)", + "trafikleder" + ] + }, + "standarder": [ + { + "organ": "TIA/ANSI", + "beteckning": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", + "titel": "Structural Standard for Antenna Supporting Structures and Antennas", + "roll": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet", + "marknad": "US (de facto internationell referens)" + }, + { + "organ": "CEN", + "beteckning": "Eurokoder", + "titel": "Bärverksregler", + "roll": "EU-strukturkrav (kartläggs per land)", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Strukturtyp: monopole (slät rörmast) vs fackverk vs stagad mast", + "Antennsektorer typiskt i tre riktningar per teknikgeneration", + "Mikrovågslänk-diskar", + "Hinderbelysning på högre master", + "Inhägnad teknikyta med skåp vid basen" + ], + "sarskiljande_detaljer": [ + "Site-ID-skylt på grind/mast — nyckel-OCR (kopplar mast till ägare/registrering)", + "Kamouflerade utföranden (flaggstång, träd, skorsten) i stadsmiljö", + "Antalet antennplattformar indikerar samlokalisering av operatörer" + ], + "forvaxlingsrisker": [ + "Radio-/TV-mast", + "Belysningsmast för arena", + "Vindmätarmast" + ], + "kameravinklar": [ + "Helbild på struktur", + "Närbild på grindskylt/site-ID", + "Toppzon med antennkonfiguration" + ], + "ocr": { + "typskylt_position": "Skylt vid grind/bas", + "falt": [ + "siteägare", + "site-ID", + "kontakt/nödnummer", + "FCC/registrering (US)" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Struktur- och infästningsslitage", + "beskrivning": "Inspektionsbehov av fästen och stag; drönarinspektion växer som metod", + "kalla": "TIA-222-revisionsarbetet (Rev I: drönarinspektion diskuteras)" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "Teknikbod/skåp vid bas (Tier 2)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "TIA — publicering av ANSI/TIA-222 Rev H (scope: torn, stagade master, rörmaster)", + "url": "https://tiaonline.org/press-release/tia-announces-publication-of-tia-222-h-standard-for-antennas-and-the-supporting-structures-for-antennas-and-small-wind-turbines/", + "hamtad": "2026-07-04" + }, + { + "titel": "Cabling Install — TIA-222-H → I-revision inledd (vind/snö/is; drönarinspektion)", + "url": "https://www.cablinginstall.com/standards/article/14276514/tia-222-standard-for-towers-and-antenna-supporting-structures-up-for-revision", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0101", + "posttyp": "objektklass", + "slug": "belysningsstolpe", + "namn": { + "sv": "Belysningsstolpe", + "en": "Lighting column" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "Hydro (aluminium)", + "Europoles", + "Tehomet (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "EN 40 omfattar toppmonterade stolpar upp till 20 m och armstolpar upp till 18 m; gatumiljö vanligen 3–12 m", + "material": [ + "stål (varmförzinkat)", + "aluminium", + "armerad/förspänd betong", + "fiberkomposit (FRP)" + ], + "montering": "Fotplatta på gjutet fundament eller nedstucken; inspektionslucka med kabelanslutning nära basen", + "livslangd_ar": "30–50 (stål/aluminium i normal miljö)", + "korrosionsklass": "C3–C5 beroende på miljö (kust, vägsalt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "stadsgata", + "GC-väg", + "park", + "parkering" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 40 (del 1–7)", + "titel": "Lighting columns", + "roll": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO", + "beteckning": "LTS-serien", + "titel": "Structural Supports for Highway Signs, Luminaires and Traffic Signals", + "roll": "Strukturkrav (kartläggs vidare i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Konisk, stegad rund eller oktagonal profil (vanligast enligt EN 40-2)", + "Inspektionslucka nära basen", + "Fotplatta med fundamentbultar eller markingjutning", + "Enkel- eller dubbelarm för armatur" + ], + "sarskiljande_detaljer": [ + "Ägar-/driftdekal med stolpnummer (kommun eller nätbolag)", + "Svetssöm och stegning indikerar stål; strängpressad slät yta indikerar aluminium", + "Luckans form och låsning varierar per tillverkare" + ], + "forvaxlingsrisker": [ + "Elstolpe (LVX-ELN-0102)", + "Skylt- och signalstolpar", + "Flaggstänger" + ], + "kameravinklar": [ + "Helbild med topp och bas", + "Närbild på lucka och eventuell dekal/stolpnummer" + ], + "ocr": { + "typskylt_position": "Dekal eller etikett vid lucka/bas", + "falt": [ + "ägare", + "stolpnummer", + "ibland tillverkare och år" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Korrosion i markzon", + "beskrivning": "Rostangrepp i övergången mark/luft förkortar livslängden på stålstolpar", + "kalla": "PLATSHÅLLARE — branschkänt; belägg med förvaltningsrapport eller fältobservation före publicering" + }, + { + "typ": "Påkörningsskador", + "beskrivning": "Deformation vid trafikolyckor; eftergivliga stolpar minskar personskaderisk", + "kalla": "PLATSHÅLLARE — koppla till passiv säkerhet i EN 40/EN 12767 vid modellkartläggning" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" + }, + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "Belysningsnätets kabelskåp" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "BSI — BS EN 40-serien (del 1–7, inkl. komposit del 7)", + "url": "https://landingpage.bsigroup.com/LandingPage/Series?UPI=BS+EN+40", + "hamtad": "2026-07-04" + }, + { + "titel": "EN 40-2:2004 General requirements and dimensions (scope: ≤20 m/≤18 m, tvärsnitt, lucka, passiv säkerhet)", + "url": "https://www.en-standard.eu/bs-en-40-2-2004-lighting-columns-general-requirements-and-dimensions/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0102", + "posttyp": "objektklass", + "slug": "vagbelysningsarmatur", + "namn": { + "sv": "Vägbelysningsarmatur", + "en": "Road lighting luminaire" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Signify", + "Schréder", + "Acuity Brands/AEL", + "Cree Lighting", + "Thorn" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminium (gjutet hus)", + "polykarbonat/glas (kupa)" + ], + "montering": "Toppmontage eller sidoarm (spigot); NEMA- eller Zhaga-sockel för styrnod", + "livslangd_ar": "20+ för LED-fixtur; drivdon ofta först ut", + "ip_klass": "IP65–IP66 vanligt" + }, + "historik": { + "revisioner": [ + "kvicksilver → högtrycksnatrium (HPS, 1970-tal) → LED (2010-tal och framåt)" + ] + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "stadsgata", + "GC-väg", + "parkering" + ] + }, + "standarder": [ + { + "organ": "NEMA/ANSI", + "beteckning": "ANSI C136-serien", + "titel": "Roadway and Area Lighting Equipment", + "roll": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal", + "marknad": "US" + }, + { + "organ": "Zhaga Consortium", + "beteckning": "Zhaga Book 18", + "titel": "Smart interface luminaire–node", + "roll": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI", + "marknad": "EU/global" + }, + { + "organ": "CEN/CENELEC", + "beteckning": "EN 60598 / EN 13201", + "titel": "Armatursäkerhet / vägbelysningsklasser", + "roll": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)", + "marknad": "EU/UK" + }, + { + "organ": "UL", + "beteckning": "UL 1598", + "titel": "Luminaires", + "roll": "Produktsäkerhet", + "marknad": "US/CA" + } + ], + "ai": { + "kannetecken": [ + "'Cobra head'-silhuett = klassisk amerikansk gatuarmatur (ofta HPS)", + "Plan rektangulär 'shoebox'-form = modern LED", + "Skruvsockel/puck ovanpå: NEMA twist-lock (US/UK) eller Zhaga (EU)", + "Orange/gult sken = HPS; vitt sken = LED eller metallhalogen" + ], + "sarskiljande_detaljer": [ + "Tillverkarlogga ofta gjuten i husets sida", + "ANSI C136.15-etikett (svart text på vit botten) anger lamptyp och wattal — snabbaste US-identifieringen", + "Typskylt med modell, effekt och tillverkningsdatum under eller inuti huset", + "Zhaga-nodens diameter och placering" + ], + "forvaxlingsrisker": [ + "Parkarmatur på låg stolpe", + "Strålkastare/floodlight", + "Tunnelarmatur" + ], + "kameravinklar": [ + "Snett underifrån mot husets sida (logga)", + "Rakt underifrån (typskylt/etikett)", + "Ovanifrån vid lyftkorg (sockeltyp)" + ], + "ocr": { + "typskylt_position": "Undersida eller insida av hus; C136.15-etikett på utsidan (US)", + "falt": [ + "tillverkare", + "modell", + "wattal", + "tillverkningsdatum", + "lamptyp" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Lila/violett ljusskifte", + "beskrivning": "Delaminering av fosforskiktet i vissa CSP-LED tillverkade cirka 2017–2019 gör att blåviolett ljus läcker igenom; rapporterat i Nordamerika och Europa från början av 2020-talet; byts under garanti", + "typisk_alder_ar": "3–6 år efter installation", + "kalla": "Wikipedia: 2020s purpling of streetlights; inside.lighting LSRC-utredning (CSP-LED, fosfor-silikonskikt)" + }, + { + "typ": "Drivdonshaveri", + "beskrivning": "LED-drivdonet är ofta den komponent som fallerar först", + "kalla": "PLATSHÅLLARE — belägg med servicedata före publicering" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0101", + "beskrivning": "Topp- eller armmontage på belysningsstolpe" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0204", + "beskrivning": "Fotocell eller smart nod i standardiserad sockel" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA — ANSI C136-serien (C136.10, C136.15, C136.41)", + "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", + "hamtad": "2026-07-04" + }, + { + "titel": "Zhaga Book 18 — smart interface för utomhusarmaturer", + "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Wikipedia — 2020s purpling of streetlights", + "url": "https://en.wikipedia.org/wiki/2020s_purpling_of_streetlights", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0103", + "posttyp": "objektklass", + "slug": "vagmarke", + "namn": { + "sv": "Vägmärke", + "en": "Road sign" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "3M (reflexfolie)", + "Avery Dennison (reflexfolie)", + "regionala skylttillverkare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminiumplåt (substrat)", + "retroreflekterande folie i klasser" + ], + "montering": "U-profilstolpe (US), rörstolpe/klammer (EU), portal eller väggmontage", + "livslangd_ar": "10–15 för folien; retroreflexionen avgör" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "FHWA", + "beteckning": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", + "titel": "Manual on Uniform Traffic Control Devices", + "roll": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion", + "marknad": "US" + }, + { + "organ": "UK DfT", + "beteckning": "TSRGD 2016 (SI 2016/362)", + "titel": "Traffic Signs Regulations and General Directions", + "roll": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016", + "marknad": "UK" + }, + { + "organ": "FN/nationella", + "beteckning": "Wienkonventionen 1968 + nationella kataloger", + "titel": "Konvention om vägmärken och signaler", + "roll": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog", + "marknad": "EU" + }, + { + "organ": "Standards Australia", + "beteckning": "AS 1742", + "titel": "Manual of uniform traffic control devices", + "roll": "Australisk motsvarighet", + "marknad": "AU" + }, + { + "organ": "CEN / ASTM", + "beteckning": "EN 12899-1 / ASTM D4956", + "titel": "Fasta vägmärken / reflexfolieklasser", + "roll": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)", + "marknad": "EU / US" + } + ], + "ai": { + "kannetecken": [ + "Form + färg är regelverkets grammatik: gul romb = varning (US); triangel med röd bård = varning (EU); åttahörning = stopp (globalt)", + "Retroreflex som lyser upp i blixt-/lyktljus" + ], + "sarskiljande_detaljer": [ + "Baksidesetikett med tillverkare, tillverkningsdatum och folietyp — den säkraste identifieringen", + "Folietypens glittermönster (prismatisk vs glaspärla) syns i närbild", + "Stolptyp och klamring skiljer marknader" + ], + "forvaxlingsrisker": [ + "Privata/kommersiella skyltar i regelverksliknande färger", + "Tillfälliga arbetsplatsmärken", + "Utgångna märkesgenerationer" + ], + "kameravinklar": [ + "Framsida rakt framifrån", + "Baksida i närbild (etikett)", + "Med blixt för folieanalys" + ], + "ocr": { + "typskylt_position": "Etikett på skyltens baksida", + "falt": [ + "tillverkare", + "datum", + "folietyp", + "ibland beställare" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Retroreflexionsförlust", + "beskrivning": "Folien åldras under UV och väder; MUTCD kräver metod för att hålla retroreflexion över miniminivåer", + "kalla": "FHWA MUTCD (retroreflexionskrav)" + }, + { + "typ": "Delaminering/blekning", + "beskrivning": "Folie släpper från substrat eller bleks", + "kalla": "PLATSHÅLLARE — belägg per folietyp i modellvågen" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0201", + "beskrivning": "portalvariant → LVX-TRP-0205" + }, + { + "predikat": "foljer_standard", + "mal": "MUTCD / TSRGD / nationella kataloger", + "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "FHWA — MUTCD 11th Edition with Revision 1 (gällande utgåva)", + "url": "https://mutcd.fhwa.dot.gov/kno_11th_Editionr1.htm", + "hamtad": "2026-07-04" + }, + { + "titel": "FHWA — delstatsadoption senast 18 jan 2026", + "url": "https://mutcd.fhwa.dot.gov/resources/state_info/index.htm", + "hamtad": "2026-07-04" + }, + { + "titel": "GOV.UK — TSRGD 2016 overview", + "url": "https://www.gov.uk/government/publications/traffic-signs-regulations-and-general-directions-2016-an-overview", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.82, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0104", + "posttyp": "objektklass", + "slug": "trafiksignal-signalhuvud", + "namn": { + "sv": "Trafiksignal, signalhuvud", + "en": "Traffic signal head" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "SWARCO", + "Yunex Traffic", + "Econolite", + "McCain" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Nominell linsdiameter 200 mm eller 300 mm (EN 12368)", + "material": [ + "polykarbonat", + "aluminium" + ], + "montering": "Stolpe/mast (EU-typiskt) eller mastarm/wire över körbana (US-typiskt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar", + "övergångsställen", + "påfarter" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12368:2024", + "titel": "Traffic control equipment — Signal heads", + "roll": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning", + "marknad": "EU/UK" + }, + { + "organ": "ITE", + "beteckning": "VTCSH", + "titel": "Vehicle Traffic Control Signal Heads", + "roll": "US-spec för signalhuvuden (kartläggs vidare)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Antal ljusöppningar (1–5 moduler) och pilsymboler", + "200 vs 300 mm lins", + "Visir/solskärmar per öppning", + "Bakgrundsskärm — i nyare US-installationer ofta med retroreflekterande gul ram" + ], + "sarskiljande_detaljer": [ + "Husets modulskarvar och fästen skiljer tillverkare", + "Gång-/cykelsymboler är regionala (hand/gubbe, röd-grön gubbe, cykelsymbol)", + "LED-insats syns som punktmatris; glödlins är jämnlysande" + ], + "forvaxlingsrisker": [ + "Körfältssignaler", + "Järnvägssignaler (LVX-JVG, Tier 2)", + "Bro-/tunnelsignaler" + ], + "kameravinklar": [ + "Framifrån med alla öppningar", + "Snett bakifrån (hus och fäste)" + ], + "ocr": { + "typskylt_position": "Etikett på husets bak- eller undersida", + "falt": [ + "tillverkare", + "modell", + "spänning" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Kondens/vatteninträngning", + "beskrivning": "Imma i lins vid bristande tätning; EN 12368 klassar därför IP-skydd", + "kalla": "PLATSHÅLLARE — belägg per modell" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0105", + "beskrivning": "Styrs av trafiksignalskåpets styrapparat" + }, + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0202", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 12368:2024 (scope: 200/300 mm-roundels, prestandaklasser)", + "url": "https://www.en-standard.eu/bs-en-12368-2024-traffic-control-equipment-signal-heads/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0105", + "posttyp": "objektklass", + "slug": "trafiksignalskap", + "namn": { + "sv": "Trafiksignalskåp/styrapparat", + "en": "Traffic signal controller cabinet" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Econolite", + "SWARCO McCain", + "Yunex Traffic", + "Q-Free" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminium (t.ex. 5052-plåt)", + "stål" + ], + "montering": "Sockel-/fundamentmonterat vid korsning, ibland stolpmonterat", + "ovrigt": { + "inre": "styrapparat, konfliktmonitor/MMU, detektorrack, lastbrytare; NEMA TS 2 använder seriell busskommunikation" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar" + ] + }, + "standarder": [ + { + "organ": "NEMA", + "beteckning": "NEMA TS 2-2021", + "titel": "Traffic Controller Assemblies", + "roll": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare", + "marknad": "US/CA" + }, + { + "organ": "ITE/AASHTO/NEMA", + "beteckning": "ATC-standarder; Caltrans 33x-typ", + "titel": "Advanced Transportation Controller; kaliforniska skåptyper", + "roll": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Grå/aluminiumfärgad plåtlåda vid gathörn nära signaler", + "Ventilationsgaller med filter nertill, fläktutlopp upptill", + "Separat liten 'polislucka' i dörren", + "Ofta batteribackupskåp intill" + ], + "sarskiljande_detaljer": [ + "Skåpform (NEMA-typer vs smala dubbelhöga 33x-typ i Kalifornien)", + "Myndighetsetikett med korsnings-ID — nyckel-OCR", + "Dörrarnas antal och gångjärnssida" + ], + "forvaxlingsrisker": [ + "Kabelskåp el (LVX-ELN-0101)", + "Telekomskåp (LVX-TEL-0101)", + "Belysningscentral" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på etikett/ID och polislucka" + ], + "ocr": { + "typskylt_position": "Etikett på dörr", + "falt": [ + "väghållare", + "korsnings-ID", + "serviceinfo" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Värme/ventilation", + "beskrivning": "Elektronik känslig för värmeansamling; filter och fläkt kräver underhåll", + "kalla": "PLATSHÅLLARE — belägg med servicedata" + }, + { + "typ": "Påkörning", + "beskrivning": "Exponerad placering i korsning ger hög påkörningsrisk", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0104", + "beskrivning": "Styr signalhuvudena" + }, + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA TS 2-2021 Traffic Controller Assemblies (innehåll och scope)", + "url": "https://www.nema.org/docs/default-source/standards-document-library/nema-ts-2-2021-contents-and-scopeb71294ae-eb9a-45e2-a501-e5c0672dbd6b.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "Econolite NEMA Traffic Control Cabinets (skåpfamiljer, polislucka)", + "url": "https://www.econolite.com/products/traffic-control-cabinets/nema-traffic-control-cabinets/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0106", + "posttyp": "objektklass", + "slug": "vagmarkering", + "namn": { + "sv": "Vägmarkering", + "en": "Road marking" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "PPG (Ennis-Flint)", + "Geveko Markings", + "SWARCO" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "termoplast/massa", + "vägfärg (vattenburen/lösningsmedel)", + "2-komponent (kallplast)", + "prefabricerad tejp" + ], + "ovrigt": { + "tillsatser": "drop-on glaspärlor för retroreflexion; profilerad/bullrande utformning; vägbanereflektorer (RPM) vanliga i US" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla belagda vägar" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1436:2018", + "titel": "Road marking performance for road users", + "roll": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper", + "marknad": "EU/UK" + }, + { + "organ": "FHWA", + "beteckning": "MUTCD 11:e utgåvan", + "titel": "Del om markeringar", + "roll": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Färggrammatik: gul mittlinje/vit kantlinje (US); vit mittlinje i större delen av EU", + "Linjebredd och mönster (heldragen, streckad, dubbel)", + "Symbolbibliotek: pilar, cykel, buss, övergångsställen" + ], + "sarskiljande_detaljer": [ + "Materialtjocklek: massa står upp från ytan, färg gör det inte", + "Profilerad kant = bullrande/våtsynbar markering", + "RPM-reflektorer i linjen = nordamerikanskt" + ], + "forvaxlingsrisker": [ + "Tillfällig gul/orange arbetsmarkering", + "Utfräst borttagen markering (spökbild)", + "Lekplats-/parkeringsmålning utanför regelverket" + ], + "kameravinklar": [ + "Snett framåt i körriktning", + "Rakt uppifrån för symboler", + "Närbild på kant och tjocklek" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Slitage i hjulspår", + "beskrivning": "Retroreflexion och synbarhet försvinner först där däcken går; MUTCD:s minimikrav gör detta till underhållsfråga", + "kalla": "FHWA MUTCD retroreflexionskrav (via RetroTek-sammanställning)" + }, + { + "typ": "Plogskador", + "beskrivning": "Snöplogar river massa och reflektorer i nordligt klimat", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "Vägbana/beläggning (Tier 2)", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 1436 / MUTCD", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 1436:2018 (Qd, retroreflexion, färg, friktion; relation till EN 1871)", + "url": "https://standards.iteh.ai/catalog/standards/cen/95bb9e65-a6d3-4051-94e5-6acba96c92c0/en-1436-2018", + "hamtad": "2026-07-04" + }, + { + "titel": "RetroTek — Road Marking Standards Europe & US (MUTCD-minimikrav, sept 2026)", + "url": "https://www.reflective-systems.com/usa-and-european-standards/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0107", + "posttyp": "objektklass", + "slug": "vagracke", + "namn": { + "sv": "Vägräcke", + "en": "Road safety barrier" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Valtir", + "Lindsay", + "Hill & Smith", + "Saferoad/Birsta (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "förzinkat stål (W-/trie-balk, rör)", + "vajer", + "betong", + "trä-stål-kombination" + ], + "montering": "Nedslagna eller ingjutna stolpar; betongbarriärer fristående eller förankrade" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg (sida/mitt)", + "landsväg", + "bro" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1317", + "titel": "Road restraint systems", + "roll": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH (2016)", + "titel": "Manual for Assessing Safety Hardware", + "roll": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Balkprofil: W-balk (två vågor) vs trie-balk (tre) vs rörräcke", + "Vajerräcke: 3–4 linor på klena stolpar — vanligt nordiskt mitträcke", + "Betongbarriär med lutande profil", + "Stolptyp och stolpavstånd" + ], + "sarskiljande_detaljer": [ + "Skarvarnas överlapp och bultbild", + "Ändavslut: nedförd, utsvängd eller energiupptagande terminal med slädhuvud", + "Reflektorer monterade på räcket", + "Distansklossar mellan balk och stolpe" + ], + "forvaxlingsrisker": [ + "Broräcke (Tier 2)", + "GC-räcke/staket", + "Bullerskydd med räckesfunktion" + ], + "kameravinklar": [ + "Längs räcket (profil och skarvar)", + "Närbild på ändavslut", + "Stolpe med infästning" + ], + "ocr": { + "typskylt_position": "Stansning/etikett på balk eller terminal förekommer", + "falt": [ + "system/typ", + "ibland tillverkare" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Påkörningsskador", + "beskrivning": "Deformerade sektioner ska bytas för bibehållen funktion", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + }, + { + "typ": "Korrosion vid skarv och markzon", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 1317 / MASH", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "DELTABLOC — EN 1317 kapacitetsklasser T1–H4b, arbetsbredd W1–W8", + "url": "https://deltabloc.com/en/about-us/road-safety-norms", + "hamtad": "2026-07-04" + }, + { + "titel": "TxDOT — MASH 2016 testnivåer och ersättning av NCHRP 350", + "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0108", + "posttyp": "objektklass", + "slug": "hallplatsvaderskydd", + "namn": { + "sv": "Hållplatsväderskydd", + "en": "Bus shelter" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "JCDecaux (operatör/tillverkare)", + "Clear Channel (operatör)", + "Outfront/Decaux (JV, Nordamerika)", + "Team Tejbrant (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminiumprofiler", + "härdat glas", + "stål", + "rostfritt (t.ex. NYC-programmet)" + ], + "montering": "Fundamentmonterade moduler; drivs ofta som reklamfinansierade franchiseprogram där operatören bygger och underhåller utan kostnad för staden", + "ovrigt": { + "affarsmodell": "Reklamfinansierat väderskydd uppfanns av Jean-Claude Decaux 1964; JCDecaux har över 136 000 väderskydd installerade globalt" + } + }, + "historik": { + "introducerad": "1964 (reklamfinansierad modell, Frankrike)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "landsväg" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Belyst reklamvitrin i gavel = reklamfinansierat program", + "Modulbyggt glas/aluminium med tak", + "Sittbänk, tidtabellstavla, allt oftare realtidsskylt/USB", + "Enhetlig programdesign inom en stad (t.ex. rostfritt-och-glas i NYC-franchisen)" + ], + "sarskiljande_detaljer": [ + "Operatörslogga och hållplats-ID — nyckel-OCR", + "Takform och gavelprofil skiljer program/tillverkare", + "Nya generationer: gröna tak (t.ex. JCDecaux Filtreo), återbrukade material" + ], + "forvaxlingsrisker": [ + "Cykelparkeringstak", + "Rökkur/entrétak", + "Reklampelare utan hållplatsfunktion" + ], + "kameravinklar": [ + "Snett framifrån hela skyddet", + "Närbild på hållplatsskylt och ID" + ], + "ocr": { + "typskylt_position": "Hållplatsskylt och programetikett", + "falt": [ + "hållplatsnamn", + "hållplats-ID", + "operatör" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Glaskross/vandalism", + "beskrivning": "Drift- och underhållsansvar ligger i franchisen; operatörer sköter veckostädning, reparationer och inspektioner", + "kalla": "Outfront/Decaux programbeskrivning (LA: löpande underhåll av 2 500+ möbler)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-ELN-0101", + "beskrivning": "Belysning/realtidsskylt matas från nätet" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JCDecaux — The advertising bus shelter: uppfunnen 1964, 136 000+ installerade", + "url": "https://www.jcdecaux.com/blog/advertising-bus-shelter-jcdecauxs-trademark", + "hamtad": "2026-07-04" + }, + { + "titel": "NYC Street Design Manual — Bus Stop Shelter (JCDecaux-franchise, rostfritt/glas)", + "url": "https://www.nycstreetdesign.info/furniture/bus-stop-shelter", + "hamtad": "2026-07-04" + }, + { + "titel": "Outfront/Decaux — LA-programmet (2 400+ väderskydd, P3-modell)", + "url": "https://www.outfrontjcdecaux.com/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0101", + "posttyp": "objektklass", + "slug": "brunnsbetackning", + "namn": { + "sv": "Brunnsbetäckning", + "en": "Manhole cover" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos (Norden)", + "Saint-Gobain PAM", + "EJ (US)", + "Neenah Foundry (US)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Vanliga nominella öppningar ca 600–650 mm (rund); kvadratiska format förekommer", + "material": [ + "segjärn (t.ex. EN-GJS-500-7 enligt EN 1563)", + "gråjärn", + "komposit (EN 124-5)", + "armerad betong (EN 124-4)" + ], + "montering": "Vilar i betäckningsram, fast eller flytande (självjusterande); ram i bruksbädd — svag bruksbädd ger sättning", + "livslangd_ar": "50+ (gjutjärn i normal trafikmiljö)", + "belastningsklass": "EN 124: A15–F900 efter provlast i kN; D400 (400 kN provlast) normal klass i körbana" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "körbana", + "GC-väg", + "grönyta", + "industriyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124:2015 (del 1–6)", + "titel": "Gully tops and manhole tops for vehicular and pedestrian areas", + "roll": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit", + "marknad": "EU/UK" + }, + { + "organ": "Kommunala spec.", + "beteckning": "H-20/HS-20-lastkrav", + "titel": "Vanliga lastkrav i amerikanska kommunala upphandlingar", + "roll": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Rund eller kvadratisk gjutgodsyta i markplan", + "Mönstrad halkskyddsyta", + "Gjuten text: funktion (VA/DAGVATTEN/TELE/EL), kommun- eller gjuterimärke", + "Klassmärkning (t.ex. D400) ofta gjuten och läsbar" + ], + "sarskiljande_detaljer": [ + "Mönstertyp och logotyp identifierar gjuteri/tillverkare", + "Ramtyp: fast eller flytande", + "Gångjärn, låsning och lyfthål varierar per modell", + "Komposit har jämnare yta och saknar rostton" + ], + "forvaxlingsrisker": [ + "Dagvattengaller (LVX-VAT-0102)", + "Ventilbetäckning (mindre diameter)", + "Telebrunnslock (ofta rektangulära, egen märkning)" + ], + "kameravinklar": [ + "Rakt uppifrån, hela betäckningen i bild", + "Närbild på gjuten text och klassmärkning" + ], + "ocr": { + "typskylt_position": "Gjuten text på lockets ovansida", + "falt": [ + "funktion", + "tillverkare/gjuteri", + "belastningsklass", + "ibland årtal" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Klapper/buller", + "beskrivning": "Lock som rör sig i ramen bullrar under trafik; moderna ramar förses med elastisk packning just för att dämpa detta", + "kalla": "Produktdokumentation D400 (elastisk packning mot buller, Galco/Pamline)" + }, + { + "typ": "Sättning", + "beskrivning": "Betäckning som sjunker under beläggningsnivå när bruksbädden under ramen är för svag eller för tunn", + "kalla": "Branschgenomgång D400-installation (manholecoverworld: bruksbäddens hållfasthet)" + }, + { + "typ": "Stöld", + "beskrivning": "Metallstöld av gjutjärnslock; kompositlock saknar skrotvärde och används delvis som stöldskydd", + "kalla": "Branschgenomgång D400-material (manholecoverworld: komposit eliminerar stöldproblemet)" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-VAT-0201", + "beskrivning": "" + }, + { + "predikat": "del_av", + "mal": "LVX-VAT-0202", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0102", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JDP — BS EN 124:2015 klasser A15–F900 och materialdelar 1–6", + "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Galco — D400 segjärnsbetäckning (EN-GJS-500-7/EN 1563, packning mot buller)", + "url": "https://galco.ie/d400-ductile-manhole-cover-ef922123/", + "hamtad": "2026-07-04" + }, + { + "titel": "Manhole Cover World — D400-klassens innebörd, bruksbädd, komposit och stöld", + "url": "https://manholecoverworld.com/what-does-d400-load-class-really-mean-for-city-roads/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.82, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0102", + "posttyp": "objektklass", + "slug": "dagvattengaller", + "namn": { + "sv": "Dagvattengaller", + "en": "Gully grating" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "Saint-Gobain PAM", + "EJ", + "Neenah Foundry", + "ACO (linjeavvattning)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "segjärn", + "gråjärn", + "komposit" + ], + "montering": "I ram över dagvattenbrunn; varianter i rännsten, kantsten (sidointag) och som kupolgaller i grönyta", + "belastningsklass": "EN 124-klasser; C250 vanlig vid rännsten, D400 i körbana" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "rännsten/körbana", + "GC-väg", + "parkering", + "grönyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124:2015", + "titel": "Gully tops and manhole tops", + "roll": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Spaltförsett galler i stället för tätt lock", + "Placering i rännsten/lågpunkt", + "Kantstensintag: öppning i kantstenen med galler under", + "Kupolformat galler i grönytor och diken" + ], + "sarskiljande_detaljer": [ + "Spaltriktning och spaltbredd (tvärgående spalter är cykelsäkrare än längsgående)", + "Gjutmärke och klass i ramen/gallret", + "Linjeavvattningsränna (t.ex. ACO-typ) är långsträckt och egen produktfamilj" + ], + "forvaxlingsrisker": [ + "Brunnsbetäckning (LVX-VAT-0101)", + "Ventilationsgaller för undermarksutrymmen", + "Trädgaller runt stadsträd" + ], + "kameravinklar": [ + "Rakt uppifrån", + "Snett mot kantstensintag" + ], + "ocr": { + "typskylt_position": "Gjuten text på galler eller ram", + "falt": [ + "gjuteri", + "klass", + "funktion" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Igensättning", + "beskrivning": "Löv och sediment blockerar spalterna; funktionsproblem snarare än produktfel", + "kalla": "PLATSHÅLLARE — driftdata" + }, + { + "typ": "Cykelsäkerhet vid längsgående spalter", + "beskrivning": "Smala hjul kan fastna i spalter i färdriktningen; moderna galler utformas tvärställda eller diagonala", + "kalla": "PLATSHÅLLARE — belägg med väghållarriktlinje" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "LVX-VAT-0203", + "beskrivning": "" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EasyMerchant — BS EN 124 grupper/klasser samt gränsdragning mot EN 1433 (rännor)", + "url": "https://www.easymerchant.co.uk/blog/understanding-the-bs-en-124-classification/", + "hamtad": "2026-07-04" + }, + { + "titel": "JDP — BS EN 124:2015 översikt", + "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0103", + "posttyp": "objektklass", + "slug": "brandpost", + "namn": { + "sv": "Brandpost/hydrant", + "en": "Fire hydrant" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Mueller (US)", + "M&H Valve (US)", + "American AVK", + "Hawle (EU)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn/segjärn", + "brons (ventilsäten)", + "epoxibelagda ytor" + ], + "montering": "Torrpost (dry-barrel): ventil under frostdjup, stigarrör dräneras — för klimat med frysrisk. Våtpost (wet-barrel): vattenfylld, endast milt klimat. Underjordisk post med spindel och markeringsskylt vanlig i delar av Europa", + "ovrigt": { + "sakerhet": "Traffic breakaway-fläns som bryts vid påkörning skyddar huvudventil och stigarrör" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "industriområde", + "bostadsområde" + ] + }, + "standarder": [ + { + "organ": "AWWA", + "beteckning": "ANSI/AWWA C502", + "titel": "Dry-Barrel Fire Hydrants", + "roll": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår", + "marknad": "US/CA" + }, + { + "organ": "AWWA", + "beteckning": "ANSI/AWWA C503", + "titel": "Wet-Barrel Fire Hydrants", + "roll": "Våtposter för milt klimat utan frysrisk", + "marknad": "US (varma delstater)" + }, + { + "organ": "CEN", + "beteckning": "EN 14384", + "titel": "Pillar fire hydrants", + "roll": "Minimikrav, provning och märkning för pelarbrandposter", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 14339", + "titel": "Underground fire hydrants", + "roll": "Underjordiska brandposter", + "marknad": "EU/UK" + }, + { + "organ": "NFPA", + "beteckning": "NFPA 1963", + "titel": "Fire Hose Connections", + "roll": "Slanganslutningarnas gängor", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "US: fristående post med kupolformad hätta, typiskt två 2½-tums slangutlopp plus ett större pumperutlopp, femkantig manövermutter", + "EU-pelarpost: slankare röd/gul pelare med lock över kopplingar", + "Underjordisk typ: endast betäckning i mark plus markeringsskylt med avståndsangivelser", + "Färgkodning av kapacitet förekommer (US-praxis, NFPA 291)" + ], + "sarskiljande_detaljer": [ + "Gjuten märkning: tillverkare, ventilstorlek, öppningsriktning, tillverkningsår — föreskriven i AWWA C502 och utmärkt OCR", + "Hättans och utloppens form skiljer modellfamiljer", + "Breakaway-flänsens skarv strax ovan mark" + ], + "forvaxlingsrisker": [ + "Spolpost/vattenutkastare", + "Gasventil-markeringsstolpe", + "Pollare i röd kulör" + ], + "kameravinklar": [ + "Helbild rakt framifrån", + "Närbild på gjuten märkning vid hätta/kropp", + "Underjordisk: skylt + betäckning" + ], + "ocr": { + "typskylt_position": "Gjuten text på kropp/hätta; skylt vid underjordisk post", + "falt": [ + "tillverkare", + "ventilstorlek", + "öppningsriktning", + "årtal", + "skylt: avstånd/dimension" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Frysskada vid fel typ i fel klimat", + "beskrivning": "Uppdelningen torrpost/våtpost finns just för frysrisken; våtpost i frysklimat havererar", + "kalla": "AWWA C502/C503 scope-uppdelning" + }, + { + "typ": "Påkörning", + "beskrivning": "Hanteras konstruktivt med breakaway-fläns som offras vid kollision", + "kalla": "Tillverkardokumentation (breakaway-funktion, SFFECO/AWWA-kompatibla poster)" + }, + { + "typ": "Läckage i spindeltätning", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — servicedata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "Vattenledningsnät/servisventil (Tier 2)", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "AWWA C502/C503, EN 14384/14339", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ANSI/AWWA C502-18 förord (torrpost alla klimat; våtpost C503; märkningskrav)", + "url": "https://webstore.ansi.org/preview-pages/awwa/preview_c502-2018.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "GlobalSpec — EN 14384 pelarbrandposter (scope)", + "url": "https://standards.globalspec.com/topics/fire-hydrant-standards", + "hamtad": "2026-07-04" + }, + { + "titel": "M&H Valve — AWWA C502-spec (märkning: tillverkare, ventilstorlek, öppningsriktning, år)", + "url": "https://www.mh-valve.com/upl/downloads/resources/feature-benefits/929.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + } + ] +} \ No newline at end of file diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v2.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v2.json new file mode 100644 index 000000000..2afdf7821 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-master-v2.json @@ -0,0 +1,4642 @@ +{ + "beskrivning": "Landvex IOL — konsoliderade klassposter v2: Tier 1 + Tier 2 (37 klasser). Ersätter master-v1 och de två tier2-filerna som arbetskopia.", + "genererad": "2026-07-04", + "antal_poster": 37, + "verifieringsfordelning": { + "kallbelagd": 31, + "obekraftad": 6 + }, + "poster": [ + { + "lvx_id": "LVX-ELN-0101", + "posttyp": "objektklass", + "slug": "kabelskap-lagspanning", + "namn": { + "sv": "Kabelskåp, lågspänning", + "en": "LV distribution cabinet" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "ABB Kabeldon (Norden, fabrik i Alingsås)", + "nätbolagsspecifika program per land" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "varmförzinkad stålplåt (nordisk standard)", + "glasfiberkomposit", + "polykarbonat" + ], + "montering": "Integrerat markfundament eller sockel; justerbara ben; förberedd för VP-rör och värmekabel (arktiskt klimat)", + "ip_klass": "t.ex. IP34D enligt SS-EN 60529 (Kabeldon CDC)", + "ovrigt": { + "las": "Trekantslås standard i Norden (t.ex. CDC-LT); cylinderlås som tillval", + "innehall": "Säkringslister/skensystem, kabelavgreningar; lucka med hållare för kabelskåpskort" + } + }, + "geografi": { + "lander": [ + "EU", + "UK", + "US", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "bostadsområde", + "landsbygd" + ] + }, + "standarder": [ + { + "organ": "IEC/CENELEC", + "beteckning": "EN 61439-5", + "titel": "Lågspänningsfördelningar — kopplingsutrustning i publika distributionsnät", + "roll": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Fristående grå/grön låda på sockel eller integrerat fundament", + "Nätbolagsdekal och skåpnummer", + "Varningsskylt med blixtsymbol", + "Trekants- eller specialnyckellås", + "Ofta markeringsstång med reflex intill (snöröjning)" + ], + "sarskiljande_detaljer": [ + "Skåpnumret i nätbolagets format — nyckel-OCR", + "Präglad lucka anpassad för märkning (Kabeldon)", + "Varmförzinkad yta vs lackerad komposit skiljer generation/marknad", + "CDCM-variant med ovandel används som mätarskåp" + ], + "forvaxlingsrisker": [ + "Telekomskåp (LVX-TEL-0101) — saknar blixtsymbol, har ofta ventilation", + "Trafiksignalskåp (LVX-TRP-0105)", + "Belysningscentral (undervariant)" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på dekal, skåpnummer och varningsskylt" + ], + "ocr": { + "typskylt_position": "Dekal/prägling på lucka", + "falt": [ + "nätbolag", + "skåpnummer", + "varningstext" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Påkörning/snöröjningsskador", + "beskrivning": "Markeringsstång med varselmärkning och reflexband säljs som standardtillbehör — indikerar känt riskmönster", + "kalla": "ABB Kabeldon tillbehörskatalog (KSPS 7 markeringsstång)" + }, + { + "typ": "Fukt", + "beskrivning": "Fuktspärr finns som tillbehör till hela CDC-serien", + "kalla": "ABB Kabeldon CDC-katalog" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0103", + "beskrivning": "Nätstation/transformator" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0101", + "beskrivning": "Matar bl.a. belysningsnät" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ABB — Kabeldon kabelskåp och kapslingar (produktfamilj, hårda miljöer)", + "url": "https://new.abb.com/low-voltage/sv/produkter/kabelskap_cewe_kabeldon/kabeldon-kabelskap", + "hamtad": "2026-07-04" + }, + { + "titel": "Onninen — Kabelskåp CDC 420 (varmförzinkat, integrerat markfundament, 400 A, SS-EN 61439-5, arktiskt klimat, trekantslås)", + "url": "https://www.onninen.se/abb-kabeldon-kabelskap-cdc-420/p/AQO708", + "hamtad": "2026-07-04" + }, + { + "titel": "ABB Kabeldon produktkatalog (Alingsås; IP34D SS-EN 60529; CDC/CDCM-användning)", + "url": "https://library.e.abb.com/public/5c949d884df64a6882b049397a2b94e0/2013_Katalog_Kabeldon_lagspanningsfordelningar_svensk_REV%20A_6.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0102", + "posttyp": "objektklass", + "slug": "elstolpe", + "namn": { + "sv": "Elstolpe", + "en": "Utility pole" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Stella-Jones (trä, NA)", + "Koppers (impregnering, NA)", + "Valmont (stål)", + "RS Technologies (komposit)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "impregnerat trä (southern yellow pine — vattenburna medel; douglasgran — oljebaserade medel)", + "stål", + "komposit", + "betong (vissa marknader)" + ], + "montering": "Direkt nedgrävd (trä) eller på fundament (stål/komposit)", + "livslangd_ar": "40–70 för impregnerat trä beroende på medel och klimat", + "ovrigt": { + "impregnering": "Pentaklorfenol (penta) utfasas i US efter EPA-beslut 2022: nyproduktion/försäljning upphörde feb 2024, behandling med befintliga lager tillåten till feb 2027; alternativ: kopparnaftenat, DCOIT, CCA, kreosot. CCA-behandlade stolpar dominerar sydöstra US. Kanada drog in registreringen okt 2022." + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "AU", + "delar av EU/UK" + ], + "miljotyper": [ + "landsbygd", + "förort", + "stadsgata (äldre nät)" + ] + }, + "standarder": [ + { + "organ": "ANSI", + "beteckning": "ANSI O5.1", + "titel": "Wood poles — specifications and dimensions", + "roll": "Trästolpsklasser och dimensioner (kartläggs vidare i modellvågen)", + "marknad": "US" + }, + { + "organ": "EPA / Health Canada", + "beteckning": "Penta-utfasningsbeslut 2022", + "titel": "Registration review decision pentachlorophenol", + "roll": "Reglerar vilka impregneringsmedel som får förekomma — direkt påverkan på identifiering av stolpgenerationer", + "marknad": "US/CA" + } + ], + "ai": { + "kannetecken": [ + "Trästolpe med travers/regel, isolatorer och ledningar", + "Kraft överst, tele/fiber-linjer lägre — vertikal zonindelning", + "Stolptransformator (burk) på många NA-stolpar", + "Stolpsteg eller klätterspår" + ], + "sarskiljande_detaljer": [ + "'Birthmark'-märkning inbränd/spikad i stolpen med år, längd, klass, träslag och impregneringsmedel — bästa OCR-källan och daterar stolpen", + "Impregneringens färgton (grönaktig CCA vs brunoljig penta/kreosot) ger generationsledtråd", + "Nätbolagets stolpnummerbricka" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe (LVX-TRP-0101)", + "Telestolpe utan kraft", + "Flagg-/antennmast" + ], + "kameravinklar": [ + "Helbild", + "Närbild på birthmark i ögonhöjd", + "Toppzon med utrustning" + ], + "ocr": { + "typskylt_position": "Inbränd birthmark ca 3 m över mark + nummerbricka", + "falt": [ + "år", + "längd/klass", + "träslag", + "impregneringsmedel", + "stolpnummer" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Impregneringsmedel under regulatorisk avveckling", + "beskrivning": "Penta-behandlade stolpar (uppskattningsvis ca 60 miljoner i drift i US) blir en utbytes- och hanteringsfråga i takt med utfasningen", + "kalla": "EPA — Cancellation of pentachlorophenol (2022); University of Wisconsin PAT-sammanfattning" + }, + { + "typ": "Röta i markzon", + "beskrivning": "Nedbrytning vid marklinjen är dominerande livslängdsbegränsning för trä", + "kalla": "PLATSHÅLLARE — belägg med inspektionsdata" + }, + { + "typ": "Hackspettskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ingar_i", + "mal": "Distributionsnät (Tier 2-topologi)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EPA — Pentachlorophenol (utfasningstidslinje: feb 2024 / feb 2027)", + "url": "https://www.epa.gov/ingredients-used-pesticide-products/pentachlorophenol", + "hamtad": "2026-07-04" + }, + { + "titel": "UW PAT — EPA to Phase Out Pentachlorophenol (~60 M penta-stolpar; alternativmedel)", + "url": "https://fyi.extension.wisc.edu/pat/2022/05/04/epa-to-phase-out-use-of-pentachlorophenol/", + "hamtad": "2026-07-04" + }, + { + "titel": "C&EN — träslag/medel-koppling (yellow pine/CCA sydöstra US; douglasgran/oljebaserat)", + "url": "https://cen.acs.org/business/specialty-chemicals/Pentachlorophenol-way-utility-pole-preservative/98/i14", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0103", + "posttyp": "objektklass", + "slug": "natstation-transformator", + "namn": { + "sv": "Nätstation/transformatorstation", + "en": "Distribution substation / padmount transformer" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Eaton", + "Hitachi Energy", + "Schneider Electric", + "ERMCO (US)", + "Howard Industries (US)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stålkapsling", + "betonghus (kioskstationer)" + ], + "montering": "Padmount: låg kapsling på betongfundament (NA-typiskt). Prefabricerad kiosk-/kompaktstation: gångbar (walk-in) eller manövrerad utifrån (non-walk-in); kan vara helt/delvis nedgrävd", + "ovrigt": { + "funktion": "Transformerar mellanspänning till lågspänning; IEC 62271-202 klassar bl.a. intern ljusbågstålighet (IAC, tillgänglighetstyp A/B/AB)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "bostadsområde", + "stadsgata", + "industriområde" + ] + }, + "standarder": [ + { + "organ": "IEC", + "beteckning": "IEC 62271-202:2022", + "titel": "AC prefabricated substations >1 kV–52 kV", + "roll": "Driftvillkor, konstruktion och prov för fabriksfärdiga stationer på offentligt tillgängliga platser; walk-in/non-walk-in; intern ljusbågsklassning IAC", + "marknad": "EU/internationellt" + }, + { + "organ": "IEEE", + "beteckning": "IEEE C57.12.28 m.fl.", + "titel": "Padmount enclosure integrity", + "roll": "US-kapslingskrav (kartläggs vidare i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Padmount: låg grön/grå plåtlåda på betongplatta, ofta i villaområden", + "Kioskstation: litet hus/skåp med dörrgaller och ventilation", + "Varningsskyltar högspänning på alla varianter", + "Svagt transformatorsurr hörs nära" + ], + "sarskiljande_detaljer": [ + "Typskylt med kVA-tal, spänningar och tillverkare — nyckel-OCR", + "Padlock-hasp och pentabult (NA)", + "Kabelrör/kabelbrunnar intill", + "Fundamenttyp" + ], + "forvaxlingsrisker": [ + "Kabelskåp LV (LVX-ELN-0101) — mindre, ingen HV-skyltning", + "Telekomskåp (LVX-TEL-0101)", + "Pumpstation VA (liknande hus, annan skyltning)" + ], + "kameravinklar": [ + "Helbild med omgivning", + "Närbild på varningsskylt och typskylt (utan att öppna något)" + ], + "ocr": { + "typskylt_position": "Typskylt på kapslingens front/sida", + "falt": [ + "tillverkare", + "kVA", + "spänningar", + "serienummer", + "år" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Korrosion i kapsling", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — nätbolagsdata" + }, + { + "typ": "Oljeläckage (oljeisolerade transformatorer)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "Mellanspänningsnät (Tier 2-topologi)", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-ELN-0101", + "beskrivning": "Matar kabelskåpen i LV-nätet" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "IEC 62271-202:2022 (scope: >1–52 kV, walk-in/non-walk-in, offentlig placering, IAC)", + "url": "https://webstore.iec.ch/en/publication/66264", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0104", + "posttyp": "objektklass", + "slug": "laddstation", + "namn": { + "sv": "Laddstation", + "en": "EV charging station" + }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Tesla", + "ChargePoint", + "ABB E-mobility", + "Alpitronic", + "Kempower" + ], + "status": "aktiv" + }, + "teknik": { + "montering": "AC-box på stolpe/vägg (destinationsladdning) eller fristående DC-skåp med tjock, ofta vätskekyld kabel (snabbladdning)", + "ovrigt": { + "kontakter": "NACS/SAE J3400 (kompakt, samma stift AC+DC), CCS1 (US) / CCS2 (EU), CHAdeMO (utfasande), Typ 2 (EU AC), J1772 (US AC). Federalt finansierade US-snabbladdare kan ha J3400 om CCS1 också finns." + } + }, + "historik": { + "revisioner": [ + "Tesla-kontakten (2012) → öppnad som NACS (2022) → SAE J3400: TIR dec 2023, Recommended Practice sep 2024; flertalet biltillverkare i Nordamerika går över från CCS1 från modellår 2025" + ] + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "parkering", + "servicestation", + "gatuladdning", + "depå" + ] + }, + "standarder": [ + { + "organ": "SAE", + "beteckning": "SAE J3400 (NACS)", + "titel": "North American Charging System", + "roll": "Standardiserad Tesla-utvecklad kontakt för både AC och DC; på väg att bli nordamerikansk default", + "marknad": "US/CA" + }, + { + "organ": "SAE", + "beteckning": "SAE J1772", + "titel": "AC-kontakt nivå 1/2", + "roll": "Etablerad AC-kontakt; adapterkompatibel med NACS för AC", + "marknad": "US/CA" + }, + { + "organ": "IEC", + "beteckning": "IEC 61851 / IEC 62196", + "titel": "Konduktiv laddning / kontaktdon", + "roll": "Laddlägen respektive Typ 2/CCS2-kontakter (kartläggs vidare)", + "marknad": "EU/internationellt" + } + ], + "ai": { + "kannetecken": [ + "Kontakttypen är den snabbaste klassificeraren: NACS är kompakt; CCS är större kombikontakt; CHAdeMO rund", + "DC-snabbladdare: högt skåp, tjock/kyld kabel, ofta skärm", + "AC-destinationsladdare: liten box, tunn kabel eller uttag", + "Operatörsvarumärke och belysning" + ], + "sarskiljande_detaljer": [ + "Stations-ID och QR-kod — nyckel-OCR", + "Effektmärkning i kW", + "Antal uttag och kabelhantering (topphängd/sidohängd)" + ], + "forvaxlingsrisker": [ + "Parkeringsautomat", + "Belysningsstolpe med uttag", + "Batterilager-/nätskåp" + ], + "kameravinklar": [ + "Helbild framifrån", + "Närbild på kontakt", + "Närbild på skärm/ID/QR" + ], + "ocr": { + "typskylt_position": "Front: operatör, stations-ID, QR, effekt", + "falt": [ + "operatör", + "stations-ID", + "effekt kW", + "kontakttyper" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Kontaktgenerationsskifte", + "beskrivning": "CCS1-parken i Nordamerika fasas gradvis mot J3400; adaptrar överbryggar under övergången — viktigt för ersättningskedjan i grafen", + "kalla": "SAE/Joint Office — J3400-standardisering och branschadoption" + }, + { + "typ": "Kabelstöld/vandalism", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — operatörsdata" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0103 / LVX-ELN-0101", + "beskrivning": "Nätanslutning via station eller kabelskåp beroende på effekt" + }, + { + "predikat": "ersatter", + "mal": "CCS1-utrustade stationer (US, gradvis)", + "beskrivning": "Kontaktnivåns ersättningskedja: CHAdeMO → CCS1 → J3400 (US)" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Joint Office — SAE J3400 Charging Connector (TIR dec 2023; CCS1-krav vid federal finansiering)", + "url": "https://driveelectric.gov/charging-connector", + "hamtad": "2026-07-04" + }, + { + "titel": "Wikipedia — North American Charging Standard (historik, RP sep 2024, branschadoption)", + "url": "https://en.wikipedia.org/wiki/North_American_Charging_Standard", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0201", + "posttyp": "objektklass", + "slug": "matarskap", + "namn": { + "sv": "Mätarskåp", + "en": "Meter cabinet" + }, + "doman": "ELN", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "ABB Kabeldon (CDCM)", + "fasadskåpsleverantörer nationellt" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "plåt", + "isolermaterial (Kabeldon-typ)", + "polykarbonat" + ], + "montering": "Markstående vid tomtgräns (nordisk CDCM-typ) eller fasadmonterat; mätarfönster och plomberade utrymmen", + "ovrigt": { + "referens": "Kabeldon CDCM är kabelskåpsserien i mätarutförande — samma skåpfamilj som LVX-ELN-0101 men med mätardel" + } + }, + "geografi": { + "lander": [ + "SE/NO/FI (markstående vanliga)", + "EU", + "UK", + "US (meter socket på fasad)" + ], + "miljotyper": [ + "tomtgräns", + "fasad" + ] + }, + "standarder": [ + { + "organ": "IEC/CENELEC", + "beteckning": "SS-EN 61439-5 (familjekrav)", + "titel": "Distributionsskåp", + "roll": "Samma normfamilj som kabelskåpen", + "marknad": "EU" + } + ], + "ai": { + "kannetecken": [ + "Mätarfönster i dörr", + "Mindre än kabelskåp men samma formspråk", + "Plomber vid mätarplats" + ], + "sarskiljande_detaljer": [ + "CDCM-beteckning på nordiska skåp", + "Abonnent-/anläggnings-ID-etikett" + ], + "forvaxlingsrisker": [ + "Kabelskåp (LVX-ELN-0101)", + "Fiber-/teleskåp (LVX-TEL-0101)" + ], + "kameravinklar": [ + "Front", + "Närbild etikett/fönster" + ], + "ocr": { + "typskylt_position": "Dörr-etikett", + "falt": [ + "nätbolag", + "anläggnings-ID" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Påkörning/vandalism vid gata", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "Servis via kabelskåpsnätet" + }, + { + "predikat": "variant_av", + "mal": "LVX-ELN-0101", + "beskrivning": "Mätarutförande av skåpfamiljen (CDCM)" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ABB Kabeldon-katalog — CDC/CDCM-serierna (återanvänd, våg 2)", + "url": "https://library.e.abb.com/public/0b1d1ae1e7d0af90c1257b1a0055f36d/Kabeldon%20kabelskapssystem%20produktkatalog%202013.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.7, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0101", + "posttyp": "objektklass", + "slug": "pollare", + "namn": { + "sv": "Pollare", + "en": "Bollard" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "ATG Access (säkerhetspollare, UK)", + "Heald (säkerhetspollare, UK)", + "Avon Barrier (HVM-system)", + "stadsmiljöprogram varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål", + "gjutjärn (klassisk kronpollare)", + "rostfritt", + "betong", + "plast/flexibel" + ], + "montering": "Fast ingjuten, löstagbar i hylsa, fällbar/låsbar eller automatisk hydraulisk (typiskt ca 1000 mm över mark i höjt läge)", + "ovrigt": { + "sakerhet": "Fordonshindrande säkerhetspollare (HVM, Hostile Vehicle Mitigation) krocktestas och klassas; klassningskoden anger fordonsvikt, hastighet, vinkel och penetration" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gågata", + "torg", + "entré", + "cykelbana", + "skyddsobjekt" + ] + }, + "standarder": [ + { + "organ": "BSI", + "beteckning": "PAS 68 (2005)", + "titel": "Impact test specifications for vehicle security barriers", + "roll": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika", + "marknad": "UK/EU/MEA" + }, + { + "organ": "ISO (IWA)", + "beteckning": "IWA 14-1 (2013)", + "titel": "Vehicle security barriers — performance requirement", + "roll": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration", + "marknad": "internationellt" + }, + { + "organ": "ASTM", + "beteckning": "ASTM F2656", + "titel": "Crash testing of vehicle security barriers", + "roll": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Fristående kort stolpe utan skylt-/ljusfunktion", + "Reflexband vanligt i trafiknära lägen", + "Automatiska pollare: markring/lucka och varningsmarkering", + "Kättingöglor på parkpollare" + ], + "sarskiljande_detaljer": [ + "Kronformad gjutjärnstopp = klassisk stadsmodell", + "Grov diameter + djupt fundament indikerar HVM-säkerhetspollare (klassning kan vara märkt)", + "Hylslock i mark = löstagbar variant" + ], + "forvaxlingsrisker": [ + "Belysningspollare (låg armatur)", + "Hydrant i pollarform (LVX-VAT-0103)", + "Laddstolpe (LVX-ELN-0104)", + "Förtöjningspollare i hamn (LVX-HMN, Tier 3)" + ], + "kameravinklar": [ + "Helbild", + "Toppen i närbild (form/gjutmärke)", + "Markanslutning (fast/hylsa/automatik)" + ], + "ocr": { + "typskylt_position": "Gjutmärke/etikett på topp eller kropp; HVM-klassning kan förekomma", + "falt": [ + "tillverkare", + "modell", + "ev. klassningskod" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Påkörningsskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + }, + { + "typ": "Automatikfel (hydrauliska pollare)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ATG Access — IWA 14-1-guiden (relation PAS 68/ASTM F2656, klasskod)", + "url": "https://atgaccess.com/what-is-iwa-14/", + "hamtad": "2026-07-04" + }, + { + "titel": "Avon Barrier — Certification & testing (PAS 68/CPNI, IWA 14-1, CWA 16221)", + "url": "https://www.avon-barrier.com/certification-testing/", + "hamtad": "2026-07-04" + }, + { + "titel": "Teknisk guide — ASTM F2656 (2007, ersatte SD-STD-02.01; P1–P4; PAS 68 2005; IWA 14-1 2013/2016)", + "url": "https://www.uparkbollards.com/bollard-crash-ratings-the-complete-technical-guide-to-astm-pas-68-iwa-14-1_n596", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0102", + "posttyp": "objektklass", + "slug": "papperskorg", + "namn": { + "sv": "Papperskorg", + "en": "Litter bin" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Glasdon (UK, grundat 1959, Blackpool)", + "Victor Stanley (US)", + "kommunala program varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polymer (t.ex. Glasdon Durapol — väder-, vandal- och klottertålig)", + "stål/gjutgods", + "trä-stål-kombination" + ], + "montering": "Fundament-, stolp- eller väggmonterad; innerbehållare i zinkbelagd stål eller plast; låsbar (nyckel eller nyckellös)", + "ovrigt": { + "referensexempel": "Glasdon Topsy 2000: 110 l volym, 90 l innerbehållare, lyft-av-kropp för tömning utan tunga lyft, höjd 1000 mm" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "park", + "gågata", + "hållplats", + "torg" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Kommunprogram ger enhetlig design inom en stad — stark geografisk signal", + "Inkastöppningens form (fågelsäkrad mindre öppning)", + "Låst tömningslucka eller lyft-av-kropp", + "Fraktionsdekaler vid sortering" + ], + "sarskiljande_detaljer": [ + "Kommunlogga/programdekal — nyckel-OCR", + "Symbol/dekortyp (t.ex. Glasdons Bin-it-symbol i guld/silver)", + "Askkoppsring i topp", + "Smartkorg: solpanel i lock" + ], + "forvaxlingsrisker": [ + "Sandbehållare/saltlåda", + "Hundlatrin (egen dekal)", + "Returstation" + ], + "kameravinklar": [ + "Helbild framifrån", + "Närbild på dekal/inkast" + ], + "ocr": { + "typskylt_position": "Dekal på kropp", + "falt": [ + "kommun/förvaltare", + "ibland tillverkare/modell", + "fraktion" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Vandalism/klotter", + "beskrivning": "Materialval (t.ex. Durapol) marknadsförs uttryckligen som vandal- och klottertåligt — indikerar känt riskmönster", + "kalla": "Glasdon produktdokumentation (Topsy-serien)" + }, + { + "typ": "Brand i behållare", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ArchiExpo/Glasdon — Topsy 2000 specifikation (Durapol, 110/90 l, lyft-av-kropp, lås)", + "url": "https://www.archiexpo.com/prod/glasdon-group-limited/product-150131-1798607.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Glasdon — företag sedan 1959, ISO 9001 (produktsida Topsy-serien)", + "url": "https://uk.glasdon.com/topsy-royale-tm-litter-bin", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.7, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0103", + "posttyp": "objektklass", + "slug": "cykelstall", + "namn": { + "sv": "Cykelställ", + "en": "Cycle stand" + }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Cyclehoop (UK)", + "Falco", + "Broxap", + "Dero (US)", + "kommunala program varierar" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "varmförzinkat stålrör (BS EN ISO 1461)", + "rostfritt (304/316)", + "pulverlack i RAL-kulör" + ], + "dimensioner": "Sheffield-bygel typiskt Ø48–60 mm rör, ca 750–900 mm över mark, ca 750–800 mm bred", + "montering": "Nedgjuten (ca 300 mm i betongfickor, krympta ändar mot uppdragning) eller fotplatta med bult", + "ovrigt": { + "tillganglighet": "Tapper-list/platta nertill hjälper synskadade att upptäcka stället; reflexband som tillval" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "station", + "skola", + "handel" + ] + }, + "standarder": [ + { + "organ": "Branschpraxis/upphandling", + "beteckning": "Sheffield-bygel", + "titel": "Omvänt U — de facto-standardtyp", + "roll": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer", + "marknad": "UK (spridd globalt)" + } + ], + "ai": { + "kannetecken": [ + "Sheffield-bygel (omvänt U) — global bastyp som medger ramlåsning", + "Rader med jämna centrumavstånd", + "Framhjulshållare = äldre typ", + "Tvåvåningsställ vid stationer (utbrett i NL/DK)" + ], + "sarskiljande_detaljer": [ + "Rördiameter, tvärslå (moped-/skotervariant) och fotinfästning skiljer fabrikat", + "Tapper-platta nertill = tillgänglighetsanpassad", + "Programkulör och dekal", + "Krympta rörändar vid nedgjutning syns aldrig — fotplatta med bult syns" + ], + "forvaxlingsrisker": [ + "Avspärrningsbygel/räcke", + "Pollare med kätting (LVX-PRK-0101)", + "Mopedparkering (grövre rör, tvärslå)" + ], + "kameravinklar": [ + "Snett ovanifrån hel rad", + "Närbild på infästning och ev. dekal" + ], + "ocr": { + "typskylt_position": "Dekal förekommer", + "falt": [ + "förvaltare", + "ibland tillverkare" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Påkörnings-/plogskador", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Cyclehoop — Sheffield Stand (3 mm stål, ram+hjullåsning, nedgjutning 300 mm, tapper-tillval)", + "url": "https://cyclehoop.com/product/sheffield-stand/", + "hamtad": "2026-07-04" + }, + { + "titel": "The Bike Storage Company — Sheffield-bygeln som branschstandard/benchmark i UK", + "url": "https://www.thebikestoragecompany.co.uk/product/the-sheffield-cycle-stand-galvanised/", + "hamtad": "2026-07-04" + }, + { + "titel": "Falco — Sheffield-varianter (Ø48/Ø60, höjder, fotplatta/nedgjutning)", + "url": "https://www.falco.co.uk/products/cycle-parking/cycle-stands/sheffield-stands.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0201", + "posttyp": "objektklass", + "slug": "parkbank", + "namn": { + "sv": "Parkbänk", + "en": "Public bench" + }, + "doman": "PRK", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Victor Stanley (US)", + "Hags/Nola (Norden)", + "Glasdon (UK)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "trä på gjutjärns-/stålgavlar", + "helmetall", + "återvunnen plast", + "betong" + ], + "montering": "Bultad i markplatta eller nedgjuten; fasta program per kommun" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "park", + "torg", + "hållplats", + "gågata" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Gavlarnas form är programsignaturen (kommuner standardiserar modell)", + "Armstöd/mittarmstöd", + "Ribbverkets antal och profil" + ], + "sarskiljande_detaljer": [ + "Gjutna gavelmönster", + "Tillverkaretikett under sits förekommer" + ], + "forvaxlingsrisker": [ + "Soffa i väderskydd (del av LVX-TRP-0108)", + "Privata möbler" + ], + "kameravinklar": [ + "Snett framifrån", + "Gavelnärbild" + ], + "ocr": { + "typskylt_position": "Ev. etikett/plakett", + "falt": [ + "tillverkare", + "modell", + "donationsplakett" + ] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Rötskadat trä/flagnande färg", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ingar_i", + "mal": "Möbleringsprogram (kommunspecifikt)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-TEL-0101", + "posttyp": "objektklass", + "slug": "telekomskap", + "namn": { + "sv": "Telekomskåp (fiber/koppar)", + "en": "Telecom street cabinet" + }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "operatörsprogram (t.ex. Openreach i UK)", + "skåpelektronik: t.ex. Huawei, ECI (Openreach FTTC)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "plåt", + "glasfiberkomposit" + ], + "montering": "Sockel-/fundamentmonterat; kabelbrunnar och kanalisation intill", + "ovrigt": { + "typer": "Passivt korskopplingsskåp (UK: PCP, Primary Connection Point) vs aktivt FTTC/DSLAM-skåp; G.fast-poddar kan bultas på befintligt PCP-skåp; AIO-skåp kombinerar PCP + DSLAM i en enhet" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "bostadsområde", + "landsbygd" + ] + }, + "standarder": [ + { + "organ": "Operatörer", + "beteckning": "Operatörsprogram", + "titel": "Operatörsspecifika skåpfamiljer", + "roll": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön", + "marknad": "per land" + } + ], + "ai": { + "kannetecken": [ + "Fristående skåp utan högspänningsskyltning", + "Operatörskonsekvent kulör (UK/Openreach: grön, ofta mörkgrön)", + "Ventilationsgaller på aktiva skåp (DSLAM)", + "Kabelbrunnslock i marken intill", + "Sidopodd på äldre skåp = G.fast-utbyggnad (UK)" + ], + "sarskiljande_detaljer": [ + "Nod-/skåpetikett med operatörens ID — nyckel-OCR", + "Passivt PCP-skåp (endast korskoppling) är enklare och ofta äldre; aktivt skåp har fläktgaller", + "Dubbelskåp PCP + intilliggande FTTC-skåp med kabelkanal emellan" + ], + "forvaxlingsrisker": [ + "Kabelskåp el (LVX-ELN-0101) — har blixtsymbol", + "Trafiksignalskåp (LVX-TRP-0105)", + "Kabel-tv-skåp (egen operatörskulör)" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på etikett/ID", + "Sidovy (poddar/utbyggnader)" + ], + "ocr": { + "typskylt_position": "Etikett på dörr", + "falt": [ + "operatör", + "nod-/skåp-ID" + ] + }, + "konfidenskrav": 0.72 + }, + "problem": [ + { + "typ": "Kapacitetstak", + "beskrivning": "Fulla skåp (inga lediga portar) är ett känt fenomen som kräver extra DSLAM eller sidopoddar", + "kalla": "ISPreview/BT Community — dokumenterade fall av fulla PCP/FTTC-skåp" + }, + { + "typ": "Korrosion", + "beskrivning": "Rostiga och intryckta äldre skåp rapporteras av abonnenter", + "kalla": "ISPreview läsarrapporter (Virgin Media-skåp)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TEL-0201", + "beskrivning": "" + }, + { + "predikat": "ingar_i", + "mal": "Accessnät (Tier 2-topologi)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ISPreview — Identifying BT/Openreach street furniture (grön kulör; Huawei/ECI-skåp; AIO; G.fast-poddar)", + "url": "https://www.ispreview.co.uk/index.php/2019/12/identifying-bt-and-virgin-medias-uk-broadband-street-furniture-2019.html/2", + "hamtad": "2026-07-04" + }, + { + "titel": "Beaming — PCP-begreppet (Primary Connection Point, gröna gatuskåp)", + "url": "https://www.beaming.co.uk/knowledge-base/techs-techie-jargon-buster/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0102", + "posttyp": "objektklass", + "slug": "mobilmast-antennplats", + "namn": { + "sv": "Mobilmast/antennplats", + "en": "Cell tower / antenna site" + }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Sabre Industries (tillverkare)", + "Valmont (tillverkare)", + "American Tower / Crown Castle / Cellnex (siteägare, ej tillverkare)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (fackverk, rörmast/monopole)", + "betong (vissa master)" + ], + "montering": "Fribärande fackverkstorn, stagad mast eller monopole; alternativt takplacering och kamouflerade utföranden", + "ovrigt": { + "struktur": "TIA-222 omfattar just fribärande fackverkstorn, stagade master och rörmaster samt antennfästen, stag och fundament" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "landsbygd", + "stadsmiljö (tak/monopole)", + "trafikleder" + ] + }, + "standarder": [ + { + "organ": "TIA/ANSI", + "beteckning": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", + "titel": "Structural Standard for Antenna Supporting Structures and Antennas", + "roll": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet", + "marknad": "US (de facto internationell referens)" + }, + { + "organ": "CEN", + "beteckning": "Eurokoder", + "titel": "Bärverksregler", + "roll": "EU-strukturkrav (kartläggs per land)", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Strukturtyp: monopole (slät rörmast) vs fackverk vs stagad mast", + "Antennsektorer typiskt i tre riktningar per teknikgeneration", + "Mikrovågslänk-diskar", + "Hinderbelysning på högre master", + "Inhägnad teknikyta med skåp vid basen" + ], + "sarskiljande_detaljer": [ + "Site-ID-skylt på grind/mast — nyckel-OCR (kopplar mast till ägare/registrering)", + "Kamouflerade utföranden (flaggstång, träd, skorsten) i stadsmiljö", + "Antalet antennplattformar indikerar samlokalisering av operatörer" + ], + "forvaxlingsrisker": [ + "Radio-/TV-mast", + "Belysningsmast för arena", + "Vindmätarmast" + ], + "kameravinklar": [ + "Helbild på struktur", + "Närbild på grindskylt/site-ID", + "Toppzon med antennkonfiguration" + ], + "ocr": { + "typskylt_position": "Skylt vid grind/bas", + "falt": [ + "siteägare", + "site-ID", + "kontakt/nödnummer", + "FCC/registrering (US)" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Struktur- och infästningsslitage", + "beskrivning": "Inspektionsbehov av fästen och stag; drönarinspektion växer som metod", + "kalla": "TIA-222-revisionsarbetet (Rev I: drönarinspektion diskuteras)" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "Teknikbod/skåp vid bas (Tier 2)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "TIA — publicering av ANSI/TIA-222 Rev H (scope: torn, stagade master, rörmaster)", + "url": "https://tiaonline.org/press-release/tia-announces-publication-of-tia-222-h-standard-for-antennas-and-the-supporting-structures-for-antennas-and-small-wind-turbines/", + "hamtad": "2026-07-04" + }, + { + "titel": "Cabling Install — TIA-222-H → I-revision inledd (vind/snö/is; drönarinspektion)", + "url": "https://www.cablinginstall.com/standards/article/14276514/tia-222-standard-for-towers-and-antenna-supporting-structures-up-for-revision", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0201", + "posttyp": "objektklass", + "slug": "kabelbrunn", + "namn": { + "sv": "Kabelbrunn/kanalisation", + "en": "Cable chamber / handhole" + }, + "doman": "TEL", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Oldcastle/Quazite (polymerbetong)", + "Charles Industries (komposit)", + "Hubbell", + "betongprefab" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polymerbetong", + "avancerad komposit", + "betong" + ], + "montering": "Grade-level-låda i gångyta/vägren; handhole = åtkomst utan nedstigning", + "ovrigt": { + "lastklassning": "ANSI/SCTE 77 Tier 5/8/15/22 för icke-avsiktlig trafik (tiernumret × 1000 lb designlast, provlast +50 %); avsiktlig körbanetrafik hänvisas till AASHTO" + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "EU", + "UK", + "AU" + ], + "miljotyper": [ + "trottoar", + "vägren", + "parkering" + ] + }, + "standarder": [ + { + "organ": "ANSI/SCTE", + "beteckning": "ANSI/SCTE 77", + "titel": "Specification for Underground Enclosure Integrity", + "roll": "Strukturell integritet och tier-lastklassning för handholes (först 2002, reviderad därefter)", + "marknad": "US/CA" + }, + { + "organ": "NFPA", + "beteckning": "NEC 314.30", + "titel": "Handhole enclosures", + "roll": "Kräver dimensionering för förekommande laster; lockmärkning av funktion; lock ska kräva verktyg eller väga >45 kg", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Rektangulärt lock med gjuten funktionstext: COMMUNICATIONS/FIBER/ELECTRIC/CATV", + "Polymerbetongens karaktäristiska yta", + "Bultade lock med lyftöglor" + ], + "sarskiljande_detaljer": [ + "Tier-märkning förekommer på lock", + "Operatörslogga (Openreach-brunnar i UK m.fl.)" + ], + "forvaxlingsrisker": [ + "VA-betäckning (LVX-VAT-0101)", + "Elnätets kabelbrunnar (funktionstexten avgör)" + ], + "kameravinklar": [ + "Rakt uppifrån", + "Närbild funktionstext" + ], + "ocr": { + "typskylt_position": "Gjuten/formsprutad text i lock", + "falt": [ + "funktion", + "operatör", + "tier" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Fel lastklass för läget", + "beskrivning": "Underdimensionerade lådor i ytor med tung icke-avsiktlig trafik havererar — hela motivet bakom SCTE 77", + "kalla": "ANSI/SCTE 77 (syfte) / Oldcastle" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TEL-0101", + "beskrivning": "Kanalisationen matar skåpen" + }, + { + "predikat": "foljer_standard", + "mal": "ANSI/SCTE 77", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Oldcastle Infrastructure — SCTE 77-historik och tier-nivåerna 5/8/15/22", + "url": "https://oldcastleinfrastructure.com/load-ratings-in-underground-enclosure-selection/", + "hamtad": "2026-07-04" + }, + { + "titel": "SCTE — Specification for Underground Enclosure Integrity (scope: non-deliberate traffic; deliberate → AASHTO)", + "url": "https://account.scte.org/standards/library/catalog/scte-77-specification-for-underground-enclosure-integrity/", + "hamtad": "2026-07-04" + }, + { + "titel": "Quazite/Hubbell — tierlaster, NEC 314.30-koppling", + "url": "https://studylib.net/doc/18069634/ansi-scte-77-2007-specification-for-underground-enclosure", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0101", + "posttyp": "objektklass", + "slug": "belysningsstolpe", + "namn": { + "sv": "Belysningsstolpe", + "en": "Lighting column" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "Hydro (aluminium)", + "Europoles", + "Tehomet (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "EN 40 omfattar toppmonterade stolpar upp till 20 m och armstolpar upp till 18 m; gatumiljö vanligen 3–12 m", + "material": [ + "stål (varmförzinkat)", + "aluminium", + "armerad/förspänd betong", + "fiberkomposit (FRP)" + ], + "montering": "Fotplatta på gjutet fundament eller nedstucken; inspektionslucka med kabelanslutning nära basen", + "livslangd_ar": "30–50 (stål/aluminium i normal miljö)", + "korrosionsklass": "C3–C5 beroende på miljö (kust, vägsalt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "stadsgata", + "GC-väg", + "park", + "parkering" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 40 (del 1–7)", + "titel": "Lighting columns", + "roll": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO", + "beteckning": "LTS-serien", + "titel": "Structural Supports for Highway Signs, Luminaires and Traffic Signals", + "roll": "Strukturkrav (kartläggs vidare i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Konisk, stegad rund eller oktagonal profil (vanligast enligt EN 40-2)", + "Inspektionslucka nära basen", + "Fotplatta med fundamentbultar eller markingjutning", + "Enkel- eller dubbelarm för armatur" + ], + "sarskiljande_detaljer": [ + "Ägar-/driftdekal med stolpnummer (kommun eller nätbolag)", + "Svetssöm och stegning indikerar stål; strängpressad slät yta indikerar aluminium", + "Luckans form och låsning varierar per tillverkare" + ], + "forvaxlingsrisker": [ + "Elstolpe (LVX-ELN-0102)", + "Skylt- och signalstolpar", + "Flaggstänger" + ], + "kameravinklar": [ + "Helbild med topp och bas", + "Närbild på lucka och eventuell dekal/stolpnummer" + ], + "ocr": { + "typskylt_position": "Dekal eller etikett vid lucka/bas", + "falt": [ + "ägare", + "stolpnummer", + "ibland tillverkare och år" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Korrosion i markzon", + "beskrivning": "Rostangrepp i övergången mark/luft förkortar livslängden på stålstolpar", + "kalla": "PLATSHÅLLARE — branschkänt; belägg med förvaltningsrapport eller fältobservation före publicering" + }, + { + "typ": "Påkörningsskador", + "beskrivning": "Deformation vid trafikolyckor; eftergivliga stolpar minskar personskaderisk", + "kalla": "PLATSHÅLLARE — koppla till passiv säkerhet i EN 40/EN 12767 vid modellkartläggning" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" + }, + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "Belysningsnätets kabelskåp" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "BSI — BS EN 40-serien (del 1–7, inkl. komposit del 7)", + "url": "https://landingpage.bsigroup.com/LandingPage/Series?UPI=BS+EN+40", + "hamtad": "2026-07-04" + }, + { + "titel": "EN 40-2:2004 General requirements and dimensions (scope: ≤20 m/≤18 m, tvärsnitt, lucka, passiv säkerhet)", + "url": "https://www.en-standard.eu/bs-en-40-2-2004-lighting-columns-general-requirements-and-dimensions/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0102", + "posttyp": "objektklass", + "slug": "vagbelysningsarmatur", + "namn": { + "sv": "Vägbelysningsarmatur", + "en": "Road lighting luminaire" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Signify", + "Schréder", + "Acuity Brands/AEL", + "Cree Lighting", + "Thorn" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminium (gjutet hus)", + "polykarbonat/glas (kupa)" + ], + "montering": "Toppmontage eller sidoarm (spigot); NEMA- eller Zhaga-sockel för styrnod", + "livslangd_ar": "20+ för LED-fixtur; drivdon ofta först ut", + "ip_klass": "IP65–IP66 vanligt" + }, + "historik": { + "revisioner": [ + "kvicksilver → högtrycksnatrium (HPS, 1970-tal) → LED (2010-tal och framåt)" + ] + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "stadsgata", + "GC-väg", + "parkering" + ] + }, + "standarder": [ + { + "organ": "NEMA/ANSI", + "beteckning": "ANSI C136-serien", + "titel": "Roadway and Area Lighting Equipment", + "roll": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal", + "marknad": "US" + }, + { + "organ": "Zhaga Consortium", + "beteckning": "Zhaga Book 18", + "titel": "Smart interface luminaire–node", + "roll": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI", + "marknad": "EU/global" + }, + { + "organ": "CEN/CENELEC", + "beteckning": "EN 60598 / EN 13201", + "titel": "Armatursäkerhet / vägbelysningsklasser", + "roll": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)", + "marknad": "EU/UK" + }, + { + "organ": "UL", + "beteckning": "UL 1598", + "titel": "Luminaires", + "roll": "Produktsäkerhet", + "marknad": "US/CA" + } + ], + "ai": { + "kannetecken": [ + "'Cobra head'-silhuett = klassisk amerikansk gatuarmatur (ofta HPS)", + "Plan rektangulär 'shoebox'-form = modern LED", + "Skruvsockel/puck ovanpå: NEMA twist-lock (US/UK) eller Zhaga (EU)", + "Orange/gult sken = HPS; vitt sken = LED eller metallhalogen" + ], + "sarskiljande_detaljer": [ + "Tillverkarlogga ofta gjuten i husets sida", + "ANSI C136.15-etikett (svart text på vit botten) anger lamptyp och wattal — snabbaste US-identifieringen", + "Typskylt med modell, effekt och tillverkningsdatum under eller inuti huset", + "Zhaga-nodens diameter och placering" + ], + "forvaxlingsrisker": [ + "Parkarmatur på låg stolpe", + "Strålkastare/floodlight", + "Tunnelarmatur" + ], + "kameravinklar": [ + "Snett underifrån mot husets sida (logga)", + "Rakt underifrån (typskylt/etikett)", + "Ovanifrån vid lyftkorg (sockeltyp)" + ], + "ocr": { + "typskylt_position": "Undersida eller insida av hus; C136.15-etikett på utsidan (US)", + "falt": [ + "tillverkare", + "modell", + "wattal", + "tillverkningsdatum", + "lamptyp" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Lila/violett ljusskifte", + "beskrivning": "Delaminering av fosforskiktet i vissa CSP-LED tillverkade cirka 2017–2019 gör att blåviolett ljus läcker igenom; rapporterat i Nordamerika och Europa från början av 2020-talet; byts under garanti", + "typisk_alder_ar": "3–6 år efter installation", + "kalla": "Wikipedia: 2020s purpling of streetlights; inside.lighting LSRC-utredning (CSP-LED, fosfor-silikonskikt)" + }, + { + "typ": "Drivdonshaveri", + "beskrivning": "LED-drivdonet är ofta den komponent som fallerar först", + "kalla": "PLATSHÅLLARE — belägg med servicedata före publicering" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0101", + "beskrivning": "Topp- eller armmontage på belysningsstolpe" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0204", + "beskrivning": "Fotocell eller smart nod i standardiserad sockel" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA — ANSI C136-serien (C136.10, C136.15, C136.41)", + "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", + "hamtad": "2026-07-04" + }, + { + "titel": "Zhaga Book 18 — smart interface för utomhusarmaturer", + "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Wikipedia — 2020s purpling of streetlights", + "url": "https://en.wikipedia.org/wiki/2020s_purpling_of_streetlights", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0103", + "posttyp": "objektklass", + "slug": "vagmarke", + "namn": { + "sv": "Vägmärke", + "en": "Road sign" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "3M (reflexfolie)", + "Avery Dennison (reflexfolie)", + "regionala skylttillverkare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminiumplåt (substrat)", + "retroreflekterande folie i klasser" + ], + "montering": "U-profilstolpe (US), rörstolpe/klammer (EU), portal eller väggmontage", + "livslangd_ar": "10–15 för folien; retroreflexionen avgör" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "FHWA", + "beteckning": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", + "titel": "Manual on Uniform Traffic Control Devices", + "roll": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion", + "marknad": "US" + }, + { + "organ": "UK DfT", + "beteckning": "TSRGD 2016 (SI 2016/362)", + "titel": "Traffic Signs Regulations and General Directions", + "roll": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016", + "marknad": "UK" + }, + { + "organ": "FN/nationella", + "beteckning": "Wienkonventionen 1968 + nationella kataloger", + "titel": "Konvention om vägmärken och signaler", + "roll": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog", + "marknad": "EU" + }, + { + "organ": "Standards Australia", + "beteckning": "AS 1742", + "titel": "Manual of uniform traffic control devices", + "roll": "Australisk motsvarighet", + "marknad": "AU" + }, + { + "organ": "CEN / ASTM", + "beteckning": "EN 12899-1 / ASTM D4956", + "titel": "Fasta vägmärken / reflexfolieklasser", + "roll": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)", + "marknad": "EU / US" + } + ], + "ai": { + "kannetecken": [ + "Form + färg är regelverkets grammatik: gul romb = varning (US); triangel med röd bård = varning (EU); åttahörning = stopp (globalt)", + "Retroreflex som lyser upp i blixt-/lyktljus" + ], + "sarskiljande_detaljer": [ + "Baksidesetikett med tillverkare, tillverkningsdatum och folietyp — den säkraste identifieringen", + "Folietypens glittermönster (prismatisk vs glaspärla) syns i närbild", + "Stolptyp och klamring skiljer marknader" + ], + "forvaxlingsrisker": [ + "Privata/kommersiella skyltar i regelverksliknande färger", + "Tillfälliga arbetsplatsmärken", + "Utgångna märkesgenerationer" + ], + "kameravinklar": [ + "Framsida rakt framifrån", + "Baksida i närbild (etikett)", + "Med blixt för folieanalys" + ], + "ocr": { + "typskylt_position": "Etikett på skyltens baksida", + "falt": [ + "tillverkare", + "datum", + "folietyp", + "ibland beställare" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Retroreflexionsförlust", + "beskrivning": "Folien åldras under UV och väder; MUTCD kräver metod för att hålla retroreflexion över miniminivåer", + "kalla": "FHWA MUTCD (retroreflexionskrav)" + }, + { + "typ": "Delaminering/blekning", + "beskrivning": "Folie släpper från substrat eller bleks", + "kalla": "PLATSHÅLLARE — belägg per folietyp i modellvågen" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0201", + "beskrivning": "portalvariant → LVX-TRP-0205" + }, + { + "predikat": "foljer_standard", + "mal": "MUTCD / TSRGD / nationella kataloger", + "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "FHWA — MUTCD 11th Edition with Revision 1 (gällande utgåva)", + "url": "https://mutcd.fhwa.dot.gov/kno_11th_Editionr1.htm", + "hamtad": "2026-07-04" + }, + { + "titel": "FHWA — delstatsadoption senast 18 jan 2026", + "url": "https://mutcd.fhwa.dot.gov/resources/state_info/index.htm", + "hamtad": "2026-07-04" + }, + { + "titel": "GOV.UK — TSRGD 2016 overview", + "url": "https://www.gov.uk/government/publications/traffic-signs-regulations-and-general-directions-2016-an-overview", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.82, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0104", + "posttyp": "objektklass", + "slug": "trafiksignal-signalhuvud", + "namn": { + "sv": "Trafiksignal, signalhuvud", + "en": "Traffic signal head" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "SWARCO", + "Yunex Traffic", + "Econolite", + "McCain" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Nominell linsdiameter 200 mm eller 300 mm (EN 12368)", + "material": [ + "polykarbonat", + "aluminium" + ], + "montering": "Stolpe/mast (EU-typiskt) eller mastarm/wire över körbana (US-typiskt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar", + "övergångsställen", + "påfarter" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12368:2024", + "titel": "Traffic control equipment — Signal heads", + "roll": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning", + "marknad": "EU/UK" + }, + { + "organ": "ITE", + "beteckning": "VTCSH", + "titel": "Vehicle Traffic Control Signal Heads", + "roll": "US-spec för signalhuvuden (kartläggs vidare)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Antal ljusöppningar (1–5 moduler) och pilsymboler", + "200 vs 300 mm lins", + "Visir/solskärmar per öppning", + "Bakgrundsskärm — i nyare US-installationer ofta med retroreflekterande gul ram" + ], + "sarskiljande_detaljer": [ + "Husets modulskarvar och fästen skiljer tillverkare", + "Gång-/cykelsymboler är regionala (hand/gubbe, röd-grön gubbe, cykelsymbol)", + "LED-insats syns som punktmatris; glödlins är jämnlysande" + ], + "forvaxlingsrisker": [ + "Körfältssignaler", + "Järnvägssignaler (LVX-JVG, Tier 2)", + "Bro-/tunnelsignaler" + ], + "kameravinklar": [ + "Framifrån med alla öppningar", + "Snett bakifrån (hus och fäste)" + ], + "ocr": { + "typskylt_position": "Etikett på husets bak- eller undersida", + "falt": [ + "tillverkare", + "modell", + "spänning" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Kondens/vatteninträngning", + "beskrivning": "Imma i lins vid bristande tätning; EN 12368 klassar därför IP-skydd", + "kalla": "PLATSHÅLLARE — belägg per modell" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0105", + "beskrivning": "Styrs av trafiksignalskåpets styrapparat" + }, + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0202", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 12368:2024 (scope: 200/300 mm-roundels, prestandaklasser)", + "url": "https://www.en-standard.eu/bs-en-12368-2024-traffic-control-equipment-signal-heads/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0105", + "posttyp": "objektklass", + "slug": "trafiksignalskap", + "namn": { + "sv": "Trafiksignalskåp/styrapparat", + "en": "Traffic signal controller cabinet" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Econolite", + "SWARCO McCain", + "Yunex Traffic", + "Q-Free" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminium (t.ex. 5052-plåt)", + "stål" + ], + "montering": "Sockel-/fundamentmonterat vid korsning, ibland stolpmonterat", + "ovrigt": { + "inre": "styrapparat, konfliktmonitor/MMU, detektorrack, lastbrytare; NEMA TS 2 använder seriell busskommunikation" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar" + ] + }, + "standarder": [ + { + "organ": "NEMA", + "beteckning": "NEMA TS 2-2021", + "titel": "Traffic Controller Assemblies", + "roll": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare", + "marknad": "US/CA" + }, + { + "organ": "ITE/AASHTO/NEMA", + "beteckning": "ATC-standarder; Caltrans 33x-typ", + "titel": "Advanced Transportation Controller; kaliforniska skåptyper", + "roll": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Grå/aluminiumfärgad plåtlåda vid gathörn nära signaler", + "Ventilationsgaller med filter nertill, fläktutlopp upptill", + "Separat liten 'polislucka' i dörren", + "Ofta batteribackupskåp intill" + ], + "sarskiljande_detaljer": [ + "Skåpform (NEMA-typer vs smala dubbelhöga 33x-typ i Kalifornien)", + "Myndighetsetikett med korsnings-ID — nyckel-OCR", + "Dörrarnas antal och gångjärnssida" + ], + "forvaxlingsrisker": [ + "Kabelskåp el (LVX-ELN-0101)", + "Telekomskåp (LVX-TEL-0101)", + "Belysningscentral" + ], + "kameravinklar": [ + "Framifrån hel front", + "Närbild på etikett/ID och polislucka" + ], + "ocr": { + "typskylt_position": "Etikett på dörr", + "falt": [ + "väghållare", + "korsnings-ID", + "serviceinfo" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Värme/ventilation", + "beskrivning": "Elektronik känslig för värmeansamling; filter och fläkt kräver underhåll", + "kalla": "PLATSHÅLLARE — belägg med servicedata" + }, + { + "typ": "Påkörning", + "beskrivning": "Exponerad placering i korsning ger hög påkörningsrisk", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0104", + "beskrivning": "Styr signalhuvudena" + }, + { + "predikat": "matas_fran", + "mal": "LVX-ELN-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA TS 2-2021 Traffic Controller Assemblies (innehåll och scope)", + "url": "https://www.nema.org/docs/default-source/standards-document-library/nema-ts-2-2021-contents-and-scopeb71294ae-eb9a-45e2-a501-e5c0672dbd6b.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "Econolite NEMA Traffic Control Cabinets (skåpfamiljer, polislucka)", + "url": "https://www.econolite.com/products/traffic-control-cabinets/nema-traffic-control-cabinets/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0106", + "posttyp": "objektklass", + "slug": "vagmarkering", + "namn": { + "sv": "Vägmarkering", + "en": "Road marking" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "PPG (Ennis-Flint)", + "Geveko Markings", + "SWARCO" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "termoplast/massa", + "vägfärg (vattenburen/lösningsmedel)", + "2-komponent (kallplast)", + "prefabricerad tejp" + ], + "ovrigt": { + "tillsatser": "drop-on glaspärlor för retroreflexion; profilerad/bullrande utformning; vägbanereflektorer (RPM) vanliga i US" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla belagda vägar" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1436:2018", + "titel": "Road marking performance for road users", + "roll": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper", + "marknad": "EU/UK" + }, + { + "organ": "FHWA", + "beteckning": "MUTCD 11:e utgåvan", + "titel": "Del om markeringar", + "roll": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Färggrammatik: gul mittlinje/vit kantlinje (US); vit mittlinje i större delen av EU", + "Linjebredd och mönster (heldragen, streckad, dubbel)", + "Symbolbibliotek: pilar, cykel, buss, övergångsställen" + ], + "sarskiljande_detaljer": [ + "Materialtjocklek: massa står upp från ytan, färg gör det inte", + "Profilerad kant = bullrande/våtsynbar markering", + "RPM-reflektorer i linjen = nordamerikanskt" + ], + "forvaxlingsrisker": [ + "Tillfällig gul/orange arbetsmarkering", + "Utfräst borttagen markering (spökbild)", + "Lekplats-/parkeringsmålning utanför regelverket" + ], + "kameravinklar": [ + "Snett framåt i körriktning", + "Rakt uppifrån för symboler", + "Närbild på kant och tjocklek" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Slitage i hjulspår", + "beskrivning": "Retroreflexion och synbarhet försvinner först där däcken går; MUTCD:s minimikrav gör detta till underhållsfråga", + "kalla": "FHWA MUTCD retroreflexionskrav (via RetroTek-sammanställning)" + }, + { + "typ": "Plogskador", + "beskrivning": "Snöplogar river massa och reflektorer i nordligt klimat", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "Vägbana/beläggning (Tier 2)", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 1436 / MUTCD", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EN 1436:2018 (Qd, retroreflexion, färg, friktion; relation till EN 1871)", + "url": "https://standards.iteh.ai/catalog/standards/cen/95bb9e65-a6d3-4051-94e5-6acba96c92c0/en-1436-2018", + "hamtad": "2026-07-04" + }, + { + "titel": "RetroTek — Road Marking Standards Europe & US (MUTCD-minimikrav, sept 2026)", + "url": "https://www.reflective-systems.com/usa-and-european-standards/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0107", + "posttyp": "objektklass", + "slug": "vagracke", + "namn": { + "sv": "Vägräcke", + "en": "Road safety barrier" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Valtir", + "Lindsay", + "Hill & Smith", + "Saferoad/Birsta (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "förzinkat stål (W-/trie-balk, rör)", + "vajer", + "betong", + "trä-stål-kombination" + ], + "montering": "Nedslagna eller ingjutna stolpar; betongbarriärer fristående eller förankrade" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg (sida/mitt)", + "landsväg", + "bro" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1317", + "titel": "Road restraint systems", + "roll": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH (2016)", + "titel": "Manual for Assessing Safety Hardware", + "roll": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Balkprofil: W-balk (två vågor) vs trie-balk (tre) vs rörräcke", + "Vajerräcke: 3–4 linor på klena stolpar — vanligt nordiskt mitträcke", + "Betongbarriär med lutande profil", + "Stolptyp och stolpavstånd" + ], + "sarskiljande_detaljer": [ + "Skarvarnas överlapp och bultbild", + "Ändavslut: nedförd, utsvängd eller energiupptagande terminal med slädhuvud", + "Reflektorer monterade på räcket", + "Distansklossar mellan balk och stolpe" + ], + "forvaxlingsrisker": [ + "Broräcke (Tier 2)", + "GC-räcke/staket", + "Bullerskydd med räckesfunktion" + ], + "kameravinklar": [ + "Längs räcket (profil och skarvar)", + "Närbild på ändavslut", + "Stolpe med infästning" + ], + "ocr": { + "typskylt_position": "Stansning/etikett på balk eller terminal förekommer", + "falt": [ + "system/typ", + "ibland tillverkare" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Påkörningsskador", + "beskrivning": "Deformerade sektioner ska bytas för bibehållen funktion", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + }, + { + "typ": "Korrosion vid skarv och markzon", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 1317 / MASH", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "DELTABLOC — EN 1317 kapacitetsklasser T1–H4b, arbetsbredd W1–W8", + "url": "https://deltabloc.com/en/about-us/road-safety-norms", + "hamtad": "2026-07-04" + }, + { + "titel": "TxDOT — MASH 2016 testnivåer och ersättning av NCHRP 350", + "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0108", + "posttyp": "objektklass", + "slug": "hallplatsvaderskydd", + "namn": { + "sv": "Hållplatsväderskydd", + "en": "Bus shelter" + }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "JCDecaux (operatör/tillverkare)", + "Clear Channel (operatör)", + "Outfront/Decaux (JV, Nordamerika)", + "Team Tejbrant (Norden)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "aluminiumprofiler", + "härdat glas", + "stål", + "rostfritt (t.ex. NYC-programmet)" + ], + "montering": "Fundamentmonterade moduler; drivs ofta som reklamfinansierade franchiseprogram där operatören bygger och underhåller utan kostnad för staden", + "ovrigt": { + "affarsmodell": "Reklamfinansierat väderskydd uppfanns av Jean-Claude Decaux 1964; JCDecaux har över 136 000 väderskydd installerade globalt" + } + }, + "historik": { + "introducerad": "1964 (reklamfinansierad modell, Frankrike)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "landsväg" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Belyst reklamvitrin i gavel = reklamfinansierat program", + "Modulbyggt glas/aluminium med tak", + "Sittbänk, tidtabellstavla, allt oftare realtidsskylt/USB", + "Enhetlig programdesign inom en stad (t.ex. rostfritt-och-glas i NYC-franchisen)" + ], + "sarskiljande_detaljer": [ + "Operatörslogga och hållplats-ID — nyckel-OCR", + "Takform och gavelprofil skiljer program/tillverkare", + "Nya generationer: gröna tak (t.ex. JCDecaux Filtreo), återbrukade material" + ], + "forvaxlingsrisker": [ + "Cykelparkeringstak", + "Rökkur/entrétak", + "Reklampelare utan hållplatsfunktion" + ], + "kameravinklar": [ + "Snett framifrån hela skyddet", + "Närbild på hållplatsskylt och ID" + ], + "ocr": { + "typskylt_position": "Hållplatsskylt och programetikett", + "falt": [ + "hållplatsnamn", + "hållplats-ID", + "operatör" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Glaskross/vandalism", + "beskrivning": "Drift- och underhållsansvar ligger i franchisen; operatörer sköter veckostädning, reparationer och inspektioner", + "kalla": "Outfront/Decaux programbeskrivning (LA: löpande underhåll av 2 500+ möbler)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-ELN-0101", + "beskrivning": "Belysning/realtidsskylt matas från nätet" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JCDecaux — The advertising bus shelter: uppfunnen 1964, 136 000+ installerade", + "url": "https://www.jcdecaux.com/blog/advertising-bus-shelter-jcdecauxs-trademark", + "hamtad": "2026-07-04" + }, + { + "titel": "NYC Street Design Manual — Bus Stop Shelter (JCDecaux-franchise, rostfritt/glas)", + "url": "https://www.nycstreetdesign.info/furniture/bus-stop-shelter", + "hamtad": "2026-07-04" + }, + { + "titel": "Outfront/Decaux — LA-programmet (2 400+ väderskydd, P3-modell)", + "url": "https://www.outfrontjcdecaux.com/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0201", + "posttyp": "objektklass", + "slug": "skyltstolpe", + "namn": { + "sv": "Skyltstolpe", + "en": "Sign post" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "regionala stål-/rörleverantörer", + "Valmont (strukturer)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "förzinkat stål (U-profil, rör)", + "aluminium", + "trä (vissa marknader)", + "komposit" + ], + "montering": "Nedslagen, i hylsa/fundament eller med brytkoppling (slipbase); eftergivlighet klassas i EU enligt EN 12767", + "ovrigt": { + "passiv_sakerhet": "EN 12767 klassar energiupptagning i tre klasser: HE (hög), LE (låg), NE (ingen); omfattar stolpar, konstruktionsdelar och fundament" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12767:2019 (+A1:2024)", + "titel": "Passive safety of support structures for road equipment", + "roll": "Krocktestklassning HE/LE/NE för bl.a. skylt- och belysningsstolpar; utesluter räcken", + "marknad": "EU/UK" + }, + { + "organ": "FHWA/AASHTO", + "beteckning": "Breakaway-krav (kartläggs)", + "titel": "Eftergivliga skyltstöd", + "roll": "US-motsvarighet — slipbase och brytkopplingar", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "U-profil med hålrad = klassisk US-stolpe", + "Rundrör med klammer = EU-typiskt", + "Slipbase-fläns strax ovan mark = eftergivlig US-montering" + ], + "sarskiljande_detaljer": [ + "Hålradens delning", + "Skarvhylsa vid mark (stub + överdel)", + "Dubbel-/portalben vid större tavlor" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe (LVX-TRP-0101)", + "Staket-/grindstolpe", + "Signalstolpe (LVX-TRP-0202)" + ], + "kameravinklar": [ + "Helbild med skylt", + "Närbild markanslutning (brytkoppling?)" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Påkörning", + "beskrivning": "Eftergivlighetsklasserna finns just för kollisionsrisken", + "kalla": "EN 12767 (scope)" + }, + { + "typ": "Korrosion vid markzon", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "EN 12767", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NBS — BS EN 12767:2019 (klasserna HE/LE/NE)", + "url": "https://www.thenbs.com/PublicationIndex/documents/details?Pub=BSI&DocID=327316", + "hamtad": "2026-07-04" + }, + { + "titel": "iTeh — EN 12767:2019 scope (stolpar, konstruktionsdelar, fundament; ej räcken)", + "url": "https://standards.iteh.ai/catalog/standards/cen/ea3ba437-12fd-4b81-a98c-009b9762e0d8/en-12767-2019", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0202", + "posttyp": "objektklass", + "slug": "signalstolpe-mastarm", + "namn": { + "sv": "Signalstolpe & mastarm", + "en": "Signal pole & mast arm" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "Millerbernd (US)", + "regionala" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (rund/månghörning)", + "aluminium" + ], + "montering": "Fotplatta på fundament; mastarm över körbana (US-typiskt) eller kort stolpe vid stopplinje (EU-typiskt)" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "korsningar" + ] + }, + "standarder": [ + { + "organ": "AASHTO", + "beteckning": "LTS-serien (kartläggs)", + "titel": "Structural supports — signals", + "roll": "Strukturkrav för mastarmar", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Lång horisontell mastarm med signalhuvuden = nordamerikanskt", + "Kort stolpe + sekundärsignal = europeiskt", + "Kombistolpe med både signal och belysning förekommer" + ], + "sarskiljande_detaljer": [ + "Armens infästning (fläns/knä)", + "Tryckknappslåda för gående på stolpen" + ], + "forvaxlingsrisker": [ + "Belysningsstolpe med arm (LVX-TRP-0101)", + "Skyltportalben (LVX-TRP-0205)" + ], + "kameravinklar": [ + "Helbild med arm", + "Fotplatta/fundament" + ], + "ocr": { + "typskylt_position": "Ev. väghållardekal", + "falt": [ + "stolp-/korsnings-ID" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Utmattning i arminfästning", + "beskrivning": "Vindinducerade svängningar i långa mastarmar", + "kalla": "PLATSHÅLLARE — belägg med DOT-underlag" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0104", + "beskrivning": "Bär signalhuvudena" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-TRP-0203", + "posttyp": "objektklass", + "slug": "fundament", + "namn": { + "sv": "Fundament (stolpe/mast/skåp)", + "en": "Foundation" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "prefabgjuterier regionalt", + "jordskruvsleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "prefabricerad betong", + "platsgjuten betong", + "stål (jordskruv/helical)" + ], + "montering": "Nedgrävt/skruvat; endast topp med bultgrupp eller fläns synlig", + "ovrigt": { + "passiv_sakerhet": "Fundament ingår i EN 12767:s omfattning för eftergivliga system" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Synlig betongtopp med 3–4 fundamentbultar", + "Jordskruvens rörfläns", + "Justermuttrar under fotplatta" + ], + "sarskiljande_detaljer": [ + "Prefab har jämn gjutyta och ev. märkning", + "Bultcirkelns diameter indikerar stolptyp" + ], + "forvaxlingsrisker": [ + "Kapad stolpe (stubbe)", + "Betäckning i grönyta" + ], + "kameravinklar": [ + "Snett ned mot topp/bultgrupp" + ], + "ocr": { + "typskylt_position": "Prefabmärkning förekommer i gjutytan", + "falt": [ + "tillverkare", + "typ" + ] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Sättning/lutning", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "ingar_i", + "mal": "Eftergivliga stödsystem (EN 12767-scope)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-TRP-0204", + "posttyp": "objektklass", + "slug": "styrnod-belysning", + "namn": { + "sv": "Styrnod belysning (NEMA/Zhaga)", + "en": "Lighting control node" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Signify (Interact-noder)", + "Itron", + "Telensa", + "Tvilight" + ], + "status": "aktiv" + }, + "teknik": { + "montering": "Vrids fast i standardsockel på armaturen: ANSI C136.10 (fotocell, twist-lock), C136.41 (5/7-polig med dimning) eller Zhaga Book 18 (över- eller undersida)", + "ovrigt": { + "funktion": "Från enkel skymningsrelä-fotocell till uppkopplad smart nod med mätning och styrning" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "alla belysta vägmiljöer" + ] + }, + "standarder": [ + { + "organ": "NEMA/ANSI", + "beteckning": "ANSI C136.10 / C136.41", + "titel": "Fotocellssockel / dimsockel", + "roll": "Mekaniskt och elektriskt gränssnitt (US/UK-tradition)", + "marknad": "US" + }, + { + "organ": "Zhaga", + "beteckning": "Zhaga Book 18", + "titel": "Smart interface luminaire–node", + "roll": "EU-vanligt nodgränssnitt", + "marknad": "EU/global" + } + ], + "ai": { + "kannetecken": [ + "Liten puck/kupol ovanpå armaturen", + "Skymningsfönster på enkel fotocell", + "Zhaga-nod ofta mindre, kan sitta under armaturen" + ], + "sarskiljande_detaljer": [ + "3-polig kort fotocell vs högre 7-polig smart nod", + "Tillverkarlogga på kupolen" + ], + "forvaxlingsrisker": [ + "Kamera-/sensorenhet", + "Blindlock i sockeln" + ], + "kameravinklar": [ + "Telefoto snett uppifrån/gatuvinkel mot armaturens topp" + ], + "ocr": { + "typskylt_position": "Text på kupol (svårläst från mark)", + "falt": [ + "tillverkare" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Fotocellsdrift (lampor lyser dagtid)", + "beskrivning": "Felande nod ger dygnslysning — vanlig felanmälan", + "kalla": "PLATSHÅLLARE — driftdata" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-TRP-0102", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "ANSI C136.10/.41; Zhaga Book 18", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "NEMA — ANSI C136-serien (återanvänd, våg 1)", + "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", + "hamtad": "2026-07-04" + }, + { + "titel": "Zhaga Book 18 (återanvänd, våg 1)", + "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0205", + "posttyp": "objektklass", + "slug": "vagportal", + "namn": { + "sv": "Vägportal/skyltbrygga", + "en": "Sign gantry" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valmont", + "regionala stålbyggare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "fackverksstål", + "rörbalk (monotube)" + ], + "montering": "Två- eller enbent över körbana; fundament per ben" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "större leder" + ] + }, + "standarder": [ + { + "organ": "AASHTO/CEN", + "beteckning": "LTS / Eurokoder (kartläggs)", + "titel": "Strukturkrav", + "roll": "Vind-/utmattningsdimensionering", + "marknad": "US/EU" + } + ], + "ai": { + "kannetecken": [ + "Fackverk vs slät rörbalk", + "Halvportal (utliggare) vs helportal", + "Vägvisningstavlor och/eller variabla skyltar monterade" + ], + "sarskiljande_detaljer": [ + "Servicegång med räcke ovanpå äldre portaler", + "Benens tvärsnitt och fundamentstorlek" + ], + "forvaxlingsrisker": [ + "Kontaktledningsbryggor järnväg", + "Belysningsramper" + ], + "kameravinklar": [ + "Helbild framifrån", + "Ben + fundament" + ], + "ocr": { + "typskylt_position": "Väghållar-ID förekommer på ben", + "falt": [ + "portal-ID" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Utmattning/korrosion i knutpunkter", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "" + }, + { + "predikat": "ansluts_med", + "mal": "LVX-TRP-0103", + "beskrivning": "Bär vägmärken/vägvisning" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-TRP-0206", + "posttyp": "objektklass", + "slug": "kantsten", + "namn": { + "sv": "Kantsten", + "en": "Kerb/curb" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "betongvaruindustrin regionalt", + "naturstensleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "prefabricerad betong (EN 1340)", + "natursten/granit (EN 1343)", + "platsgjuten/asfaltlimmad" + ], + "montering": "Satt i bruk/betongmotstöd eller limmad; radieelement för kurvor", + "ovrigt": { + "funktion": "Separation, visuell avgränsning, avvattning och inneslutning av beläggning (EN 1340-scope)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "GC", + "refug" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1340", + "titel": "Concrete kerb units", + "roll": "Krav och provning för betongkantsten, rännor och passbitar; ersatte BS 7263-3", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 1343", + "titel": "Kerbs of natural stone", + "roll": "Naturstenskantsten — prestandaklasser i väghållarkrav (t.ex. UK MCHW)", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Granit: grå/röd med huggen yta; betong: jämn ljusgrå", + "Visningshöjd varierar (nedsänkt vid ramp/övergång)", + "Rännstensplattor och avvisarsten som varianter" + ], + "sarskiljande_detaljer": [ + "Fasens vinkel och bredd", + "Radieelement vs raka", + "Limfog syns vid limmad kantsten" + ], + "forvaxlingsrisker": [ + "L-stöd/mur", + "Trädgårdskantstöd" + ], + "kameravinklar": [ + "Snett längs kantlinjen", + "Närbild profil" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Plog-/påkörningsskador", + "beskrivning": "Avslagna kanter och rubbade element", + "kalla": "PLATSHÅLLARE — driftdata" + }, + { + "typ": "Dubbdäcksslitage", + "beskrivning": "EN 1340 noterar att tilläggskrav kan behövas vid regelbunden dubbdäckstrafik", + "kalla": "EN 1340 (scope-notis)" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "Vägbana/beläggning (framtida klass)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ANSI Webstore — BS EN 1340:2003 scope (separation/avgränsning/avvattning; dubbdäcksnotis)", + "url": "https://webstore.ansi.org/standards/bsi/bsen13402003", + "hamtad": "2026-07-04" + }, + { + "titel": "UK MCHW Series 1100 — EN 1340/EN 1343-krav för kantsten", + "url": "https://www.standardsforhighways.co.uk/tses/attachments/86a315ce-4061-4659-960b-8b47bc333485?inline=true", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0207", + "posttyp": "objektklass", + "slug": "reflexstolpe", + "namn": { + "sv": "Reflexstolpe/kantstolpe", + "en": "Delineator post" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valtir (Safe-Hit, US flexpost)", + "europeiska plastvarutillverkare" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "polyeten/plast (flexibel, återfjädrande)", + "stålrör (äldre)" + ], + "montering": "Nedslagen/hylsa i vägren; rörliknande tvärsnitt som viker sig vid påkörning (typkrav)", + "ovrigt": { + "prestanda": "EN 12899-3 anger visuella och fysiska krav inkl. fordonspåkörning; nationella krav kan ange böjnings-/skadeklasser (t.ex. WL1, D1–D3)" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "landsväg", + "motorväg", + "arbetszon" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 12899-3", + "titel": "Delineator posts and retroreflectors", + "roll": "Kolorimetri, retroreflex, statisk/dynamisk last och påkörning; färg/form styrs nationellt", + "marknad": "EU/UK" + }, + { + "organ": "NCHRP/MASH", + "beteckning": "Kategori 1-enheter", + "titel": "Flexibla delineatorer", + "roll": "US-klassning för flexposts", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "EU-kantstolpe: vit med svart band och reflex (höger/vänster-kodning i vissa länder)", + "US-flexpost: orange/vit/gul flexibel stolpe", + "Snöstör-varianter i nordligt klimat" + ], + "sarskiljande_detaljer": [ + "Reflexens form (rektangel/rund) och färg per land", + "Tvärsnitt (triangel/rör/platt)" + ], + "forvaxlingsrisker": [ + "Pollare (LVX-PRK-0101)", + "Snökäpp", + "Arbetszonskon" + ], + "kameravinklar": [ + "Helbild", + "Närbild reflex" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Påkörning/plogskador", + "beskrivning": "Flexmaterialet finns just för överkörningarna", + "kalla": "EN 12899-3 (påkörningskrav) / tillverkardokumentation" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Eller direkt nedslagen" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "SIS — SS-EN 12899-3:2007 scope (retroreflex, last, påkörning)", + "url": "https://www.sis.se/en/produkter/civil-engineering/road-engineering/road-equipment-and-installations/ssen1289932007/", + "hamtad": "2026-07-04" + }, + { + "titel": "EU TRIS (FI) — kantstolpskrav: rörtvärsnitt som viker sig; klasser WL1/D1–D3 enl. EN 12899-3", + "url": "https://technical-regulation-information-system.ec.europa.eu/mt/notification/24662/text/F/EN", + "hamtad": "2026-07-04" + }, + { + "titel": "Valtir Safe-Hit delineator (NCHRP 350/MASH Cat 1) — återanvänd, våg 3", + "url": "https://www.trafficmanagement.com/products/valtir-energy-absorption", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0208", + "posttyp": "objektklass", + "slug": "broracke", + "namn": { + "sv": "Broräcke", + "en": "Bridge parapet" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Saferoad/Birsta", + "Hill & Smith", + "brobyggarnas systemleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål (ståndare + följare)", + "betong (barriärkant)", + "kombination med GC-överliggare" + ], + "montering": "Ståndare förankrade i brokantbalk; högre kapacitetsklasser än väg i övrigt är vanliga" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "broar", + "stödmurar" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 1317", + "titel": "Road restraint systems", + "roll": "Kapacitetsklasser (upp till H4b) tillämpas på broräcken; arbetsbredd kritisk vid kant", + "marknad": "EU/UK" + }, + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH", + "titel": "Bridge rails", + "roll": "TL-klassning av broräcken", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Ståndare bultade i kantbalk", + "Tätare följare/fyllning än vägräcke", + "Ofta kombiräcke med högre GC-del" + ], + "sarskiljande_detaljer": [ + "Infästningsplattans bultbild", + "Övergångssträcka mot vägräcke (styvhetsanpassning)" + ], + "forvaxlingsrisker": [ + "Vägräcke (LVX-TRP-0107)", + "GC-räcke utan kapacitetsklass" + ], + "kameravinklar": [ + "Längs räcket", + "Närbild infästning i kantbalk" + ], + "ocr": { + "typskylt_position": "Systemetikett förekommer", + "falt": [ + "system", + "klass" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Korrosion vid infästning/fogar", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — broinspektionsdata" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "Brokantbalk (framtida klass)", + "beskrivning": "" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-TRP-0107", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "DELTABLOC — EN 1317-klasser (återanvänd, våg 1)", + "url": "https://deltabloc.com/en/about-us/road-safety-norms", + "hamtad": "2026-07-04" + }, + { + "titel": "TxDOT — MASH-krav inkl. broräcken (återanvänd, våg 1)", + "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0209", + "posttyp": "objektklass", + "slug": "bullerskydd", + "namn": { + "sv": "Bullerskydd", + "en": "Noise barrier" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Gramm (UK)", + "Jacksons (UK)", + "Kohlhauer (DE)", + "regionala betong-/träleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "trä (absorberande kassetter)", + "betong", + "aluminium-hålplåt", + "akryl/glas (transparent)", + "gabion/grönskärm" + ], + "montering": "Paneler mellan I-balksstolpar (HEA/HEB) på fundamentrad", + "ovrigt": { + "prestanda": "Akustik deklareras som DLR (isolering, EN 1793-1) och DLα (absorption, EN 1793-2); EN 1793-5/-6 för fältmätning" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "motorväg", + "järnväg", + "tätortsleder" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 14388", + "titel": "Road traffic noise reducing devices", + "roll": "Harmoniserad produktstandard (CE/UKCA)", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 1793 (del 1/2/5/6)", + "titel": "Akustisk prestanda", + "roll": "Ljudisolering DLR, absorption DLα, in-situ-metoder", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 1794 (del 1/2)", + "titel": "Icke-akustisk prestanda", + "roll": "Mekanik/stabilitet respektive säkerhet/miljö", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Panelrader mellan synliga I-balksstolpar", + "Absorberande sida (perforerad/ribbad) mot vägen", + "Transparenta sektioner med fågelmarkering" + ], + "sarskiljande_detaljer": [ + "Kassettmaterial och profil", + "Krön (rakt/böjt/T-topp)", + "Grön vall vs byggd skärm" + ], + "forvaxlingsrisker": [ + "Plank/stängsel utan akustikfunktion", + "Vindskydd", + "Broräcke med tät fyllning" + ], + "kameravinklar": [ + "Snett längs skärmen (vägsida)", + "Närbild panel + stolpe" + ], + "ocr": { + "typskylt_position": "CE-/systemetikett förekommer på stolpe/panel", + "falt": [ + "system", + "klass DLR/DLα" + ] + }, + "konfidenskrav": 0.7 + }, + "problem": [ + { + "typ": "Klotter/UV-åldring (akryl)", + "beskrivning": "", + "kalla": "PLATSHÅLLARE" + } + ], + "relationer": [ + { + "predikat": "star_pa", + "mal": "LVX-TRP-0203", + "beskrivning": "Fundamentrad" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "IOA — Navigating the British Standards for road traffic noise barriers (EN 14388, EN 1793-1/2, EN 1794-1/2, EN 14389)", + "url": "https://www.ioa.org.uk/dam/jcr:fc90c2d5-c6eb-4851-9dc8-851531f57cf9/Navigating%20the%20British%20Standards%20for%20road%20traffic%20noise%20barriers%20January-February%202017.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "Air Acoustics — EN 1793 DLα/DLR och relation till EN 14388/EN 1794", + "url": "https://www.air-acoustics.com/understanding-bs-en-1793-what-specifiers-need-to-know", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0210", + "posttyp": "objektklass", + "slug": "rackesterminal", + "namn": { + "sv": "Räckesterminal/ändavslut", + "en": "Guardrail end terminal" + }, + "doman": "TRP", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Valtir (SoftStop)", + "Road Systems Inc. (SKT, FLEAT)", + "Lindsay" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "stål" + ], + "montering": "Terminalhuvud + eftergivliga stolpar närmast änden; energiupptagande (extruderande) eller enklare nedförd/utsvängd ände", + "ovrigt": { + "typer": "Tangentiella (SKT-typ) vs flärade (FLEAT-typ); MGS-versioner med skarv mellan stolpar och 31-tumshöjd" + } + }, + "geografi": { + "lander": [ + "US", + "CA", + "AU", + "delar av EU" + ], + "miljotyper": [ + "räckesändar på alla vägtyper" + ] + }, + "standarder": [ + { + "organ": "AASHTO/FHWA", + "beteckning": "MASH (TL-2/TL-3)", + "titel": "Terminaltester 3-30…3-37", + "roll": "Krocktestklassning; FHWA eligibility letters (t.ex. CC-115D för SoftStop)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Karakteristiskt huvud på räckets ände", + "SYTP/CRT-eftergivliga stolpar närmast änden", + "Flärad linje som viker ut från vägen (FLEAT-typ)" + ], + "sarskiljande_detaljer": [ + "Huvudets form skiljer fabrikat", + "Dekal/stansning med modell", + "Nedförd ände utan huvud = äldre/enklare lösning" + ], + "forvaxlingsrisker": [ + "Krockdämpare (crash cushion — egen framtida klass)", + "Vanlig räckesskarv" + ], + "kameravinklar": [ + "Framifrån mot huvudet", + "Längs terminalsträckan" + ], + "ocr": { + "typskylt_position": "Dekal/stansning på huvud", + "falt": [ + "fabrikat", + "modell" + ] + }, + "konfidenskrav": 0.75 + }, + "problem": [ + { + "typ": "Ej återställd efter påkörning", + "beskrivning": "Deformerad terminal skyddar inte — utbyteskritisk komponent", + "kalla": "PLATSHÅLLARE — förvaltningsdata" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "LVX-TRP-0107", + "beskrivning": "Avslutar räckeslinjen" + }, + { + "predikat": "foljer_standard", + "mal": "MASH", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "Roadside Safety Pooled Fund — SoftStop (MASH-tester, CC-115D) — återanvänd, våg 3", + "url": "https://www.roadsidepooledfund.org/crash-att/soft-stop/", + "hamtad": "2026-07-04" + }, + { + "titel": "Road Systems Inc — SKT/FLEAT i MGS-utförande — återanvänd, våg 3", + "url": "https://roadsystems.com/nchrp-350-mgs-31-terminals/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0101", + "posttyp": "objektklass", + "slug": "brunnsbetackning", + "namn": { + "sv": "Brunnsbetäckning", + "en": "Manhole cover" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos (Norden)", + "Saint-Gobain PAM", + "EJ (US)", + "Neenah Foundry (US)" + ], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Vanliga nominella öppningar ca 600–650 mm (rund); kvadratiska format förekommer", + "material": [ + "segjärn (t.ex. EN-GJS-500-7 enligt EN 1563)", + "gråjärn", + "komposit (EN 124-5)", + "armerad betong (EN 124-4)" + ], + "montering": "Vilar i betäckningsram, fast eller flytande (självjusterande); ram i bruksbädd — svag bruksbädd ger sättning", + "livslangd_ar": "50+ (gjutjärn i normal trafikmiljö)", + "belastningsklass": "EN 124: A15–F900 efter provlast i kN; D400 (400 kN provlast) normal klass i körbana" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "körbana", + "GC-väg", + "grönyta", + "industriyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124:2015 (del 1–6)", + "titel": "Gully tops and manhole tops for vehicular and pedestrian areas", + "roll": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit", + "marknad": "EU/UK" + }, + { + "organ": "Kommunala spec.", + "beteckning": "H-20/HS-20-lastkrav", + "titel": "Vanliga lastkrav i amerikanska kommunala upphandlingar", + "roll": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "Rund eller kvadratisk gjutgodsyta i markplan", + "Mönstrad halkskyddsyta", + "Gjuten text: funktion (VA/DAGVATTEN/TELE/EL), kommun- eller gjuterimärke", + "Klassmärkning (t.ex. D400) ofta gjuten och läsbar" + ], + "sarskiljande_detaljer": [ + "Mönstertyp och logotyp identifierar gjuteri/tillverkare", + "Ramtyp: fast eller flytande", + "Gångjärn, låsning och lyfthål varierar per modell", + "Komposit har jämnare yta och saknar rostton" + ], + "forvaxlingsrisker": [ + "Dagvattengaller (LVX-VAT-0102)", + "Ventilbetäckning (mindre diameter)", + "Telebrunnslock (ofta rektangulära, egen märkning)" + ], + "kameravinklar": [ + "Rakt uppifrån, hela betäckningen i bild", + "Närbild på gjuten text och klassmärkning" + ], + "ocr": { + "typskylt_position": "Gjuten text på lockets ovansida", + "falt": [ + "funktion", + "tillverkare/gjuteri", + "belastningsklass", + "ibland årtal" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Klapper/buller", + "beskrivning": "Lock som rör sig i ramen bullrar under trafik; moderna ramar förses med elastisk packning just för att dämpa detta", + "kalla": "Produktdokumentation D400 (elastisk packning mot buller, Galco/Pamline)" + }, + { + "typ": "Sättning", + "beskrivning": "Betäckning som sjunker under beläggningsnivå när bruksbädden under ramen är för svag eller för tunn", + "kalla": "Branschgenomgång D400-installation (manholecoverworld: bruksbäddens hållfasthet)" + }, + { + "typ": "Stöld", + "beskrivning": "Metallstöld av gjutjärnslock; kompositlock saknar skrotvärde och används delvis som stöldskydd", + "kalla": "Branschgenomgång D400-material (manholecoverworld: komposit eliminerar stöldproblemet)" + } + ], + "relationer": [ + { + "predikat": "monteras_pa", + "mal": "LVX-VAT-0201", + "beskrivning": "" + }, + { + "predikat": "del_av", + "mal": "LVX-VAT-0202", + "beskrivning": "Betäckningen är brunnens synliga toppkomponent" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0102", + "beskrivning": "Dagvattengaller — liknande placering, annan funktion" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JDP — BS EN 124:2015 klasser A15–F900 och materialdelar 1–6", + "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Galco — D400 segjärnsbetäckning (EN-GJS-500-7/EN 1563, packning mot buller)", + "url": "https://galco.ie/d400-ductile-manhole-cover-ef922123/", + "hamtad": "2026-07-04" + }, + { + "titel": "Manhole Cover World — D400-klassens innebörd, bruksbädd, komposit och stöld", + "url": "https://manholecoverworld.com/what-does-d400-load-class-really-mean-for-city-roads/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.82, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0102", + "posttyp": "objektklass", + "slug": "dagvattengaller", + "namn": { + "sv": "Dagvattengaller", + "en": "Gully grating" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "Saint-Gobain PAM", + "EJ", + "Neenah Foundry", + "ACO (linjeavvattning)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "segjärn", + "gråjärn", + "komposit" + ], + "montering": "I ram över dagvattenbrunn; varianter i rännsten, kantsten (sidointag) och som kupolgaller i grönyta", + "belastningsklass": "EN 124-klasser; C250 vanlig vid rännsten, D400 i körbana" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "rännsten/körbana", + "GC-väg", + "parkering", + "grönyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124:2015", + "titel": "Gully tops and manhole tops", + "roll": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Spaltförsett galler i stället för tätt lock", + "Placering i rännsten/lågpunkt", + "Kantstensintag: öppning i kantstenen med galler under", + "Kupolformat galler i grönytor och diken" + ], + "sarskiljande_detaljer": [ + "Spaltriktning och spaltbredd (tvärgående spalter är cykelsäkrare än längsgående)", + "Gjutmärke och klass i ramen/gallret", + "Linjeavvattningsränna (t.ex. ACO-typ) är långsträckt och egen produktfamilj" + ], + "forvaxlingsrisker": [ + "Brunnsbetäckning (LVX-VAT-0101)", + "Ventilationsgaller för undermarksutrymmen", + "Trädgaller runt stadsträd" + ], + "kameravinklar": [ + "Rakt uppifrån", + "Snett mot kantstensintag" + ], + "ocr": { + "typskylt_position": "Gjuten text på galler eller ram", + "falt": [ + "gjuteri", + "klass", + "funktion" + ] + }, + "konfidenskrav": 0.8 + }, + "problem": [ + { + "typ": "Igensättning", + "beskrivning": "Löv och sediment blockerar spalterna; funktionsproblem snarare än produktfel", + "kalla": "PLATSHÅLLARE — driftdata" + }, + { + "typ": "Cykelsäkerhet vid längsgående spalter", + "beskrivning": "Smala hjul kan fastna i spalter i färdriktningen; moderna galler utformas tvärställda eller diagonala", + "kalla": "PLATSHÅLLARE — belägg med väghållarriktlinje" + } + ], + "relationer": [ + { + "predikat": "del_av", + "mal": "LVX-VAT-0203", + "beskrivning": "" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "EasyMerchant — BS EN 124 grupper/klasser samt gränsdragning mot EN 1433 (rännor)", + "url": "https://www.easymerchant.co.uk/blog/understanding-the-bs-en-124-classification/", + "hamtad": "2026-07-04" + }, + { + "titel": "JDP — BS EN 124:2015 översikt", + "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.78, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0103", + "posttyp": "objektklass", + "slug": "brandpost", + "namn": { + "sv": "Brandpost/hydrant", + "en": "Fire hydrant" + }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": [ + "Mueller (US)", + "M&H Valve (US)", + "American AVK", + "Hawle (EU)" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn/segjärn", + "brons (ventilsäten)", + "epoxibelagda ytor" + ], + "montering": "Torrpost (dry-barrel): ventil under frostdjup, stigarrör dräneras — för klimat med frysrisk. Våtpost (wet-barrel): vattenfylld, endast milt klimat. Underjordisk post med spindel och markeringsskylt vanlig i delar av Europa", + "ovrigt": { + "sakerhet": "Traffic breakaway-fläns som bryts vid påkörning skyddar huvudventil och stigarrör" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "stadsgata", + "industriområde", + "bostadsområde" + ] + }, + "standarder": [ + { + "organ": "AWWA", + "beteckning": "ANSI/AWWA C502", + "titel": "Dry-Barrel Fire Hydrants", + "roll": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår", + "marknad": "US/CA" + }, + { + "organ": "AWWA", + "beteckning": "ANSI/AWWA C503", + "titel": "Wet-Barrel Fire Hydrants", + "roll": "Våtposter för milt klimat utan frysrisk", + "marknad": "US (varma delstater)" + }, + { + "organ": "CEN", + "beteckning": "EN 14384", + "titel": "Pillar fire hydrants", + "roll": "Minimikrav, provning och märkning för pelarbrandposter", + "marknad": "EU/UK" + }, + { + "organ": "CEN", + "beteckning": "EN 14339", + "titel": "Underground fire hydrants", + "roll": "Underjordiska brandposter", + "marknad": "EU/UK" + }, + { + "organ": "NFPA", + "beteckning": "NFPA 1963", + "titel": "Fire Hose Connections", + "roll": "Slanganslutningarnas gängor", + "marknad": "US" + } + ], + "ai": { + "kannetecken": [ + "US: fristående post med kupolformad hätta, typiskt två 2½-tums slangutlopp plus ett större pumperutlopp, femkantig manövermutter", + "EU-pelarpost: slankare röd/gul pelare med lock över kopplingar", + "Underjordisk typ: endast betäckning i mark plus markeringsskylt med avståndsangivelser", + "Färgkodning av kapacitet förekommer (US-praxis, NFPA 291)" + ], + "sarskiljande_detaljer": [ + "Gjuten märkning: tillverkare, ventilstorlek, öppningsriktning, tillverkningsår — föreskriven i AWWA C502 och utmärkt OCR", + "Hättans och utloppens form skiljer modellfamiljer", + "Breakaway-flänsens skarv strax ovan mark" + ], + "forvaxlingsrisker": [ + "Spolpost/vattenutkastare", + "Gasventil-markeringsstolpe", + "Pollare i röd kulör" + ], + "kameravinklar": [ + "Helbild rakt framifrån", + "Närbild på gjuten märkning vid hätta/kropp", + "Underjordisk: skylt + betäckning" + ], + "ocr": { + "typskylt_position": "Gjuten text på kropp/hätta; skylt vid underjordisk post", + "falt": [ + "tillverkare", + "ventilstorlek", + "öppningsriktning", + "årtal", + "skylt: avstånd/dimension" + ] + }, + "konfidenskrav": 0.85 + }, + "problem": [ + { + "typ": "Frysskada vid fel typ i fel klimat", + "beskrivning": "Uppdelningen torrpost/våtpost finns just för frysrisken; våtpost i frysklimat havererar", + "kalla": "AWWA C502/C503 scope-uppdelning" + }, + { + "typ": "Påkörning", + "beskrivning": "Hanteras konstruktivt med breakaway-fläns som offras vid kollision", + "kalla": "Tillverkardokumentation (breakaway-funktion, SFFECO/AWWA-kompatibla poster)" + }, + { + "typ": "Läckage i spindeltätning", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — servicedata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "Vattenledningsnät/servisventil (Tier 2)", + "beskrivning": "" + }, + { + "predikat": "foljer_standard", + "mal": "AWWA C502/C503, EN 14384/14339", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ANSI/AWWA C502-18 förord (torrpost alla klimat; våtpost C503; märkningskrav)", + "url": "https://webstore.ansi.org/preview-pages/awwa/preview_c502-2018.pdf", + "hamtad": "2026-07-04" + }, + { + "titel": "GlobalSpec — EN 14384 pelarbrandposter (scope)", + "url": "https://standards.globalspec.com/topics/fire-hydrant-standards", + "hamtad": "2026-07-04" + }, + { + "titel": "M&H Valve — AWWA C502-spec (märkning: tillverkare, ventilstorlek, öppningsriktning, år)", + "url": "https://www.mh-valve.com/upl/downloads/resources/feature-benefits/929.pdf", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.8, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0201", + "posttyp": "objektklass", + "slug": "betackningsram", + "namn": { + "sv": "Betäckningsram", + "en": "Cover frame" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "EJ", + "Saint-Gobain PAM", + "Kasi/teleskopleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn/segjärn", + "kompositramar förekommer" + ], + "montering": "Fast (gjuten i bruksbädd), flytande (vilar i beläggningen och följer den) eller teleskopisk (höjdjusterbar mot underdel)", + "ovrigt": { + "innovation": "Självnivellerande ramsystem (t.ex. EJ SELFLEVEL) låter ram/lock flyta med vägytan och minskar sättningsgupp" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "körbana", + "gångyta" + ] + }, + "standarder": [ + { + "organ": "CEN", + "beteckning": "EN 124", + "titel": "Gully tops and manhole tops", + "roll": "Klassning A15–F900 gäller ram + lock som enhet", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Ramkant och infästning syns runt locket", + "Teleskopram avslöjas av dubbel ringkant", + "Flytande ram saknar synlig gjutfläns i beläggningen" + ], + "sarskiljande_detaljer": [ + "Ramgjutning med tillverkare/klass (fältexempel: ULEFOS UFKNS EN124-2 D400)", + "Boltade lås i ramen" + ], + "forvaxlingsrisker": [ + "Locket i sig (LVX-VAT-0101)", + "Ventilbetäckningens mindre ram (LVX-VAT-0204)" + ], + "kameravinklar": [ + "Rakt uppifrån med ramkant i bild", + "Närbild ramgjutning" + ], + "ocr": { + "typskylt_position": "Gjuten text i ramkant", + "falt": [ + "tillverkare", + "EN 124-klass" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Sättning/nivåskillnad mot beläggning", + "beskrivning": "Traditionella ramar hamnar över/under slityta när vägen ändras — motivet bakom självnivellerande system", + "kalla": "EJ (SELFLEVEL-fallstudien)" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-VAT-0101", + "beskrivning": "Ram + lock bildar betäckningen" + }, + { + "predikat": "monteras_pa", + "mal": "LVX-VAT-0202", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "JDP — EN 124-klasserna (återanvänd, våg 1)", + "url": "https://www.jdpipes.co.uk/knowledge/civils-explained/en124-explained.html", + "hamtad": "2026-07-04" + }, + { + "titel": "EJ — SELFLEVEL/ramfunktion (återanvänd, våg 3)", + "url": "https://www.ejco.com/am/en/resource-center/case-studies/manhole-cover-case-study", + "hamtad": "2026-07-04" + }, + { + "titel": "Fältexempel ramgjutning Oslo (återanvänd, våg 3)", + "url": "https://manhole.co.il/coverDetails.asp?c=7603", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.75, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0202", + "posttyp": "objektklass", + "slug": "nedstigningsbrunn", + "namn": { + "sv": "Nedstigningsbrunn", + "en": "Manhole/chamber" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "prefabbetongindustrin (t.ex. Rinker i US)", + "plastbrunnsleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "prefabricerad armerad betong (ringar, konor, bottendelar)", + "plast (PP/PE)", + "platsmurad (äldre)" + ], + "montering": "Bottendel + stigarringar + kona/toppäll + justerringar under betäckningen", + "ovrigt": { + "us_komponenter": "ASTM C478 omfattar riser sections, cone tops, flat slab tops, grade rings och steg" + } + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "spillvatten", + "dagvatten", + "kombinerat" + ] + }, + "standarder": [ + { + "organ": "ASTM", + "beteckning": "ASTM C478/C478M", + "titel": "Circular precast reinforced concrete manhole sections", + "roll": "Tillverkningskrav för brunnsdelar (sewer/drainage/water works)", + "marknad": "US" + }, + { + "organ": "AASHTO", + "beteckning": "M199", + "titel": "Precast reinforced concrete manhole sections", + "roll": "Parallellkrav i väghållarled", + "marknad": "US" + }, + { + "organ": "CEN", + "beteckning": "EN 1917 (kartläggs)", + "titel": "Concrete manholes and inspection chambers", + "roll": "EU-motsvarighet — källbeläggs i nästa våg", + "marknad": "EU/UK" + } + ], + "ai": { + "kannetecken": [ + "Från gatan syns endast betäckningen — klassen identifieras primärt via lock + läge", + "Vid öppet schakt: ringar med gummiringsfogar och excentrisk kona" + ], + "sarskiljande_detaljer": [ + "Prefabstämpel i betongen (tillverkare/datum)", + "Stegjärnens typ" + ], + "forvaxlingsrisker": [ + "Dagvattenbrunn (LVX-VAT-0203)", + "Kabelbrunn (LVX-TEL-0201)" + ], + "kameravinklar": [ + "(Zoomer: endast betäckning — aldrig öppning)" + ], + "ocr": { + "typskylt_position": "Prefabstämpel (endast synlig vid anläggning)", + "falt": [ + "tillverkare", + "datum" + ] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Inläckage i fogar", + "beskrivning": "", + "kalla": "PLATSHÅLLARE — VA-driftdata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-VAT-0201", + "beskrivning": "Kröns av ram + betäckning" + }, + { + "predikat": "foljer_standard", + "mal": "ASTM C478 / AASHTO M199", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [ + { + "titel": "ASTM C478 — scope och komponenter (riser/cone/grade rings/steps)", + "url": "https://store.astm.org/c0478_c0478m-22.html", + "hamtad": "2026-07-04" + }, + { + "titel": "Rinker — ASTM C478 / AASHTO M199 produktfamilj", + "url": "https://www.rinkerpipe.com/product_specifications/astm-c478-aashto-m199-precast-reinforced-concrete-manhole-sections/", + "hamtad": "2026-07-04" + } + ], + "konfidens": 0.72, + "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0203", + "posttyp": "objektklass", + "slug": "dagvattenbrunn", + "namn": { + "sv": "Dagvattenbrunn", + "en": "Gully/catch basin" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "prefabbetong- och plastbrunnsleverantörer" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "betong", + "plast (PP)" + ], + "montering": "Sandfång under galler; kupolsil i grönyta; vattenlås mot spillnät i kombinerade system" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "rännsten", + "lågpunkter", + "grönytor" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Sitter vid kantsten/lågpunkt", + "Galler (LVX-VAT-0102) istället för tätt lock", + "Kupolsil i grönyta" + ], + "sarskiljande_detaljer": [ + "Sidointag i kantstenen (kerb inlet, US-vanligt)", + "Brunnens placering i rännstenslinjen" + ], + "forvaxlingsrisker": [ + "Nedstigningsbrunn (LVX-VAT-0202)", + "Linjeavvattning/ränna" + ], + "kameravinklar": [ + "Snett mot galler + kantsten" + ], + "ocr": { + "typskylt_position": "—", + "falt": [] + }, + "konfidenskrav": 0.6 + }, + "problem": [ + { + "typ": "Igensatt sandfång/galler", + "beskrivning": "Löv och sediment — översvämningsrisk vid skyfall", + "kalla": "PLATSHÅLLARE — driftdata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "LVX-VAT-0102", + "beskrivning": "Gallret är intaget" + }, + { + "predikat": "del_av", + "mal": "Dagvattennät (framtida klass)", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-VAT-0204", + "posttyp": "objektklass", + "slug": "ventilbetackning", + "namn": { + "sv": "Ventil-/spindelbetäckning", + "en": "Valve surface box" + }, + "doman": "VAT", + "tier": 2, + "identitet": { + "exempel_tillverkare": [ + "Ulefos", + "EJ", + "vonRoll", + "AVK-gruppen" + ], + "status": "aktiv" + }, + "teknik": { + "material": [ + "gjutjärn", + "komposit" + ], + "montering": "Liten (ofta teleskopisk) betäckning över ventilspindel; nyckelrör ned till avstängningsventilen" + }, + "geografi": { + "lander": [ + "US", + "EU", + "UK", + "CA", + "AU" + ], + "miljotyper": [ + "gata", + "gångyta", + "tomtgräns" + ] + }, + "standarder": [], + "ai": { + "kannetecken": [ + "Liten rund/oval lucka (ofta 10–20 cm)", + "Gjuten funktionstext: VATTEN/AVLOPP/GAS/SV/WATER/GAS", + "Sitter ofta i linje mellan huvudledning och servis" + ], + "sarskiljande_detaljer": [ + "Funktionstexten är primär klassificerare", + "Teleskopöverdelens dubbelring" + ], + "forvaxlingsrisker": [ + "Full brunnsbetäckning (LVX-VAT-0101)", + "Mätarbrunnslock", + "Kabelmarkeringsbricka" + ], + "kameravinklar": [ + "Rakt uppifrån, närbild text" + ], + "ocr": { + "typskylt_position": "Gjuten funktionstext i lock", + "falt": [ + "funktion", + "tillverkare" + ] + }, + "konfidenskrav": 0.65 + }, + "problem": [ + { + "typ": "Överasfalterad/försvunnen", + "beskrivning": "Ventil oåtkomlig vid akut avstängning", + "kalla": "PLATSHÅLLARE — VA-driftdata" + } + ], + "relationer": [ + { + "predikat": "ansluts_med", + "mal": "Avstängningsventil (framtida klass)", + "beskrivning": "Ger åtkomst till spindeln" + }, + { + "predikat": "forvaxlas_med", + "mal": "LVX-VAT-0101", + "beskrivning": "" + } + ], + "proveniens": { + "skapad": "2026-07-04", + "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.6, + "verifieringsniva": "obekraftad" + } + } + ] +} \ No newline at end of file diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tel-prk.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tel-prk.json new file mode 100644 index 000000000..d0d785698 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tel-prk.json @@ -0,0 +1,210 @@ +{ + "beskrivning": "Landvex IOL — Tier 1-klassposter, domäner TEL (Telekom) och PRK (Park & offentlig miljö). Genererade enligt forskningsprotokollet v1.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-TEL-0101", + "posttyp": "objektklass", + "slug": "telekomskap", + "namn": { "sv": "Telekomskåp (fiber/koppar)", "en": "Telecom street cabinet" }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["operatörsspecifika program (nationella teleoperatörer)", "skåptillverkare varierar per marknad"], + "status": "aktiv" + }, + "teknik": { + "material": ["plåt", "glasfiberkomposit"], + "montering": "Sockel-/fundamentmonterat i gatumiljö; kabelbrunnar och kanalisation intill", + "ovrigt": { "funktion": "Korskoppling/aktiv nod för koppar- eller fibernät; aktiva skåp har ventilation eller kylning" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["stadsgata", "bostadsområde", "landsbygd"] }, + "standarder": [ + { "organ": "Operatörer", "beteckning": "Operatörsprogram (kartläggs per marknad i steg 1)", "titel": "Operatörsspecifika skåpfamiljer", "roll": "Utformning, kulör och märkning styrs av respektive operatörs program", "marknad": "per land" } + ], + "ai": { + "kannetecken": ["Fristående skåp utan högspänningsskyltning", "Ofta operatörsspecifik kulör som är konsekvent inom marknaden", "Ventilationsgaller på aktiva skåp", "Kabelbrunnslock i marken intill"], + "sarskiljande_detaljer": ["Nod-/skåpetikett med operatörens ID — nyckel-OCR", "Dubbeldörr och låstyp", "Storlek: korskopplingsskåp mindre, aktiva DSLAM/fiberskåp större"], + "forvaxlingsrisker": ["Kabelskåp el (LVX-ELN-0101) — har blixtsymbol", "Trafiksignalskåp (LVX-TRP-0105)", "Kabel-tv-skåp (undervariant)"], + "kameravinklar": ["Framifrån hel front", "Närbild på etikett/ID"], + "ocr": { "typskylt_position": "Etikett på dörr", "falt": ["operatör", "nod-/skåp-ID"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Klotter/vandalism", "beskrivning": "", "kalla": "PLATSHÅLLARE" }, + { "typ": "Värme i aktiva skåp", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "Kanalisation/kabelbrunn (Tier 2)", "beskrivning": "" }, + { "predikat": "ingar_i", "mal": "Accessnät (Tier 2-topologi)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.55, "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-TEL-0102", + "posttyp": "objektklass", + "slug": "mobilmast-antennplats", + "namn": { "sv": "Mobilmast/antennplats", "en": "Cell tower / antenna site" }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Sabre Industries (tillverkare)", "Valmont (tillverkare)", "American Tower / Crown Castle / Cellnex (siteägare, ej tillverkare)"], + "status": "aktiv" + }, + "teknik": { + "material": ["stål (fackverk, rörmast/monopole)", "betong (vissa master)"], + "montering": "Fribärande fackverkstorn, stagad mast eller monopole; alternativt takplacering och kamouflerade utföranden", + "ovrigt": { "struktur": "TIA-222 omfattar just fribärande fackverkstorn, stagade master och rörmaster samt antennfästen, stag och fundament" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["landsbygd", "stadsmiljö (tak/monopole)", "trafikleder"] }, + "standarder": [ + { "organ": "TIA/ANSI", "beteckning": "ANSI/TIA-222 (Rev H 2017; Rev I under utarbetande)", "titel": "Structural Standard for Antenna Supporting Structures and Antennas", "roll": "Strukturkrav vind/snö/is; refereras av bl.a. byggregler; drönarinspektion diskuteras i revisionsarbetet", "marknad": "US (de facto internationell referens)" }, + { "organ": "CEN", "beteckning": "Eurokoder", "titel": "Bärverksregler", "roll": "EU-strukturkrav (kartläggs per land)", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Strukturtyp: monopole (slät rörmast) vs fackverk vs stagad mast", "Antennsektorer typiskt i tre riktningar per teknikgeneration", "Mikrovågslänk-diskar", "Hinderbelysning på högre master", "Inhägnad teknikyta med skåp vid basen"], + "sarskiljande_detaljer": ["Site-ID-skylt på grind/mast — nyckel-OCR (kopplar mast till ägare/registrering)", "Kamouflerade utföranden (flaggstång, träd, skorsten) i stadsmiljö", "Antalet antennplattformar indikerar samlokalisering av operatörer"], + "forvaxlingsrisker": ["Radio-/TV-mast", "Belysningsmast för arena", "Vindmätarmast"], + "kameravinklar": ["Helbild på struktur", "Närbild på grindskylt/site-ID", "Toppzon med antennkonfiguration"], + "ocr": { "typskylt_position": "Skylt vid grind/bas", "falt": ["siteägare", "site-ID", "kontakt/nödnummer", "FCC/registrering (US)"] }, + "konfidenskrav": 0.75 + }, + "problem": [ + { "typ": "Struktur- och infästningsslitage", "beskrivning": "Inspektionsbehov av fästen och stag; drönarinspektion växer som metod", "kalla": "TIA-222-revisionsarbetet (Rev I: drönarinspektion diskuteras)" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament (Tier 2)", "beskrivning": "" }, + { "predikat": "ansluts_med", "mal": "Teknikbod/skåp vid bas (Tier 2)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "TIA — publicering av ANSI/TIA-222 Rev H (scope: torn, stagade master, rörmaster)", "url": "https://tiaonline.org/press-release/tia-announces-publication-of-tia-222-h-standard-for-antennas-and-the-supporting-structures-for-antennas-and-small-wind-turbines/", "hamtad": "2026-07-04" }, + { "titel": "Cabling Install — TIA-222-H → I-revision inledd (vind/snö/is; drönarinspektion)", "url": "https://www.cablinginstall.com/standards/article/14276514/tia-222-standard-for-towers-and-antenna-supporting-structures-up-for-revision", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0101", + "posttyp": "objektklass", + "slug": "pollare", + "namn": { "sv": "Pollare", "en": "Bollard" }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["ATG Access (säkerhetspollare)", "Heald (säkerhetspollare)", "stadsmiljöprogram varierar"], + "status": "aktiv" + }, + "teknik": { + "material": ["stål", "gjutjärn (klassisk kronpollare)", "rostfritt", "betong", "plast/flexibel"], + "montering": "Fast ingjuten, löstagbar i hylsa, fällbar/låsbar eller automatisk hydraulisk/elektrisk", + "ovrigt": { "sakerhet": "Fordonshindrande säkerhetspollare krocktestas enligt särskilda specifikationer (uppges vanligen som PAS 68, IWA 14-1, ASTM F2656 — beteckningarna källbeläggs i modellvågen)" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["gågata", "torg", "entré", "cykelbana", "skyddsobjekt"] }, + "standarder": [ + { "organ": "BSI/ISO/ASTM", "beteckning": "PAS 68 / IWA 14-1 / ASTM F2656 (att källbelägga)", "titel": "Krocktest av fordonshinder", "roll": "Klassning av säkerhetspollares stoppförmåga", "marknad": "UK / internationellt / US" } + ], + "ai": { + "kannetecken": ["Fristående kort stolpe utan skylt-/ljusfunktion", "Reflexband vanligt i trafiknära lägen", "Automatiska pollare: markring/lucka och varningsmarkering", "Kättingöglor på parkpollare"], + "sarskiljande_detaljer": ["Kronformad gjutjärnstopp = klassisk stadsmodell", "Diameter/robusthet skiljer trafikavgränsning från säkerhetspollare", "Hylslock i mark = löstagbar variant"], + "forvaxlingsrisker": ["Belysningspollare (låg armatur)", "Hydrant i pollarform (LVX-VAT-0103)", "Laddstolpe (LVX-ELN-0104)", "Förtöjningspollare i hamn (LVX-HMN, Tier 3)"], + "kameravinklar": ["Helbild", "Toppen i närbild (form/gjutmärke)", "Markanslutning (fast/hylsa/automatik)"], + "ocr": { "typskylt_position": "Gjutmärke/etikett förekommer på topp eller kropp", "falt": ["tillverkare", "modell (ibland)"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Påkörningsskador", "beskrivning": "", "kalla": "PLATSHÅLLARE — förvaltningsdata" }, + { "typ": "Automatikfel (hydrauliska pollare)", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament/hylsa (Tier 2)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.55, "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-PRK-0102", + "posttyp": "objektklass", + "slug": "papperskorg", + "namn": { "sv": "Papperskorg", "en": "Litter bin" }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Victor Stanley (US)", "Glasdon (UK)", "kommunala program varierar"], + "status": "aktiv" + }, + "teknik": { + "material": ["stål/gjutgods", "plast/polyeten", "trä-stål-kombination"], + "montering": "Fundament-, stolp- eller väggmonterad; innersäck eller innerbehållare", + "ovrigt": { "varianter": "askkopp i topp, fågelsäkrat inkast, fraktionssortering (vanligt i Norden), solkomprimerande smartkorgar" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["park", "gågata", "hållplats", "torg"] }, + "standarder": [], + "ai": { + "kannetecken": ["Kommunprogram ger enhetlig design inom en stad — stark geografisk signal", "Inkastöppningens form (fågelsäkrad mindre öppning)", "Låst tömningslucka", "Fraktionsdekaler vid sortering"], + "sarskiljande_detaljer": ["Kommunlogga/programdekal — nyckel-OCR", "Askkoppsring i topp", "Smartkorg: solpanel i lock"], + "forvaxlingsrisker": ["Sandbehållare/saltlåda", "Hundlatrin (egen dekal)", "Returstation"], + "kameravinklar": ["Helbild framifrån", "Närbild på dekal/inkast"], + "ocr": { "typskylt_position": "Dekal på kropp", "falt": ["kommun/förvaltare", "ibland tillverkare", "fraktion"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Brand i behållare", "beskrivning": "", "kalla": "PLATSHÅLLARE" }, + { "typ": "Skadedjur/fågelplock", "beskrivning": "Motiverar fågelsäkrade inkast", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament/stolpe", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.55, "verifieringsniva": "obekraftad" + } + }, + { + "lvx_id": "LVX-PRK-0103", + "posttyp": "objektklass", + "slug": "cykelstall", + "namn": { "sv": "Cykelställ", "en": "Cycle stand" }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Cyclehoop (UK)", "Dero (US)", "kommunala program varierar"], + "status": "aktiv" + }, + "teknik": { + "material": ["varmförzinkat/rostfritt stålrör", "gjutgods"], + "montering": "Ingjuten, fotplatta eller skena; tvåvåningsställ vid stationer" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["gata", "station", "skola", "handel"] }, + "standarder": [], + "ai": { + "kannetecken": ["Sheffield-bygel (omvänt U) — global bastyp som medger ramlåsning", "Framhjulshållare = äldre typ", "Tvåvåningsställ vid stationer (utbrett i NL/DK)", "Cykelbox/garage som låst variant"], + "sarskiljande_detaljer": ["Bygelns radie, tvärslå och fotinfästning skiljer fabrikat", "Programkulör och dekal", "Skena vs individuella byglar"], + "forvaxlingsrisker": ["Avspärrningsbygel/räcke", "Pollare med kätting (LVX-PRK-0101)", "Mopedparkering"], + "kameravinklar": ["Snett ovanifrån hel rad", "Närbild på infästning och ev. dekal"], + "ocr": { "typskylt_position": "Dekal förekommer", "falt": ["förvaltare", "ibland tillverkare"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Påkörnings-/plogskador", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament/fotplatta", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.55, "verifieringsniva": "obekraftad" + } + } + ] +} diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-ovriga.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-ovriga.json new file mode 100644 index 000000000..70fde2a6f --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-ovriga.json @@ -0,0 +1,252 @@ +{ + "beskrivning": "Landvex IOL — Tier 2-klassposter, domänerna VAT/ELN/TEL/PRK. Genererade enligt forskningsprotokollet v1.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-VAT-0201", + "posttyp": "objektklass", + "slug": "betackningsram", + "namn": { "sv": "Betäckningsram", "en": "Cover frame" }, + "doman": "VAT", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Ulefos", "EJ", "Saint-Gobain PAM", "Kasi/teleskopleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["gjutjärn/segjärn", "kompositramar förekommer"], + "montering": "Fast (gjuten i bruksbädd), flytande (vilar i beläggningen och följer den) eller teleskopisk (höjdjusterbar mot underdel)", + "ovrigt": { "innovation": "Självnivellerande ramsystem (t.ex. EJ SELFLEVEL) låter ram/lock flyta med vägytan och minskar sättningsgupp" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["körbana", "gångyta"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 124", "titel": "Gully tops and manhole tops", "roll": "Klassning A15–F900 gäller ram + lock som enhet", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Ramkant och infästning syns runt locket", "Teleskopram avslöjas av dubbel ringkant", "Flytande ram saknar synlig gjutfläns i beläggningen"], + "sarskiljande_detaljer": ["Ramgjutning med tillverkare/klass (fältexempel: ULEFOS UFKNS EN124-2 D400)", "Boltade lås i ramen"], + "forvaxlingsrisker": ["Locket i sig (LVX-VAT-0101)", "Ventilbetäckningens mindre ram (LVX-VAT-0204)"], + "kameravinklar": ["Rakt uppifrån med ramkant i bild", "Närbild ramgjutning"], + "ocr": { "typskylt_position": "Gjuten text i ramkant", "falt": ["tillverkare", "EN 124-klass"] }, + "konfidenskrav": 0.65 + }, + "problem": [ + { "typ": "Sättning/nivåskillnad mot beläggning", "beskrivning": "Traditionella ramar hamnar över/under slityta när vägen ändras — motivet bakom självnivellerande system", "kalla": "EJ (SELFLEVEL-fallstudien)" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-VAT-0101", "beskrivning": "Ram + lock bildar betäckningen" }, + { "predikat": "monteras_pa", "mal": "LVX-VAT-0202", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "JDP — EN 124-klasserna (återanvänd, våg 1)", "url": "https://www.jdpipes.co.uk/knowledge/civils-explained/en124-explained.html", "hamtad": "2026-07-04" }, + { "titel": "EJ — SELFLEVEL/ramfunktion (återanvänd, våg 3)", "url": "https://www.ejco.com/am/en/resource-center/case-studies/manhole-cover-case-study", "hamtad": "2026-07-04" }, + { "titel": "Fältexempel ramgjutning Oslo (återanvänd, våg 3)", "url": "https://manhole.co.il/coverDetails.asp?c=7603", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0202", + "posttyp": "objektklass", + "slug": "nedstigningsbrunn", + "namn": { "sv": "Nedstigningsbrunn", "en": "Manhole/chamber" }, + "doman": "VAT", + "tier": 2, + "identitet": { "exempel_tillverkare": ["prefabbetongindustrin (t.ex. Rinker i US)", "plastbrunnsleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["prefabricerad armerad betong (ringar, konor, bottendelar)", "plast (PP/PE)", "platsmurad (äldre)"], + "montering": "Bottendel + stigarringar + kona/toppäll + justerringar under betäckningen", + "ovrigt": { "us_komponenter": "ASTM C478 omfattar riser sections, cone tops, flat slab tops, grade rings och steg" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["spillvatten", "dagvatten", "kombinerat"] }, + "standarder": [ + { "organ": "ASTM", "beteckning": "ASTM C478/C478M", "titel": "Circular precast reinforced concrete manhole sections", "roll": "Tillverkningskrav för brunnsdelar (sewer/drainage/water works)", "marknad": "US" }, + { "organ": "AASHTO", "beteckning": "M199", "titel": "Precast reinforced concrete manhole sections", "roll": "Parallellkrav i väghållarled", "marknad": "US" }, + { "organ": "CEN", "beteckning": "EN 1917 (kartläggs)", "titel": "Concrete manholes and inspection chambers", "roll": "EU-motsvarighet — källbeläggs i nästa våg", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Från gatan syns endast betäckningen — klassen identifieras primärt via lock + läge", "Vid öppet schakt: ringar med gummiringsfogar och excentrisk kona"], + "sarskiljande_detaljer": ["Prefabstämpel i betongen (tillverkare/datum)", "Stegjärnens typ"], + "forvaxlingsrisker": ["Dagvattenbrunn (LVX-VAT-0203)", "Kabelbrunn (LVX-TEL-0201)"], + "kameravinklar": ["(Zoomer: endast betäckning — aldrig öppning)"], + "ocr": { "typskylt_position": "Prefabstämpel (endast synlig vid anläggning)", "falt": ["tillverkare", "datum"] }, + "konfidenskrav": 0.6 + }, + "problem": [ { "typ": "Inläckage i fogar", "beskrivning": "", "kalla": "PLATSHÅLLARE — VA-driftdata" } ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-VAT-0201", "beskrivning": "Kröns av ram + betäckning" }, + { "predikat": "foljer_standard", "mal": "ASTM C478 / AASHTO M199", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ASTM C478 — scope och komponenter (riser/cone/grade rings/steps)", "url": "https://store.astm.org/c0478_c0478m-22.html", "hamtad": "2026-07-04" }, + { "titel": "Rinker — ASTM C478 / AASHTO M199 produktfamilj", "url": "https://www.rinkerpipe.com/product_specifications/astm-c478-aashto-m199-precast-reinforced-concrete-manhole-sections/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.72, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0203", + "posttyp": "objektklass", + "slug": "dagvattenbrunn", + "namn": { "sv": "Dagvattenbrunn", "en": "Gully/catch basin" }, + "doman": "VAT", + "tier": 2, + "identitet": { "exempel_tillverkare": ["prefabbetong- och plastbrunnsleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["betong", "plast (PP)"], + "montering": "Sandfång under galler; kupolsil i grönyta; vattenlås mot spillnät i kombinerade system" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["rännsten", "lågpunkter", "grönytor"] }, + "standarder": [], + "ai": { + "kannetecken": ["Sitter vid kantsten/lågpunkt", "Galler (LVX-VAT-0102) istället för tätt lock", "Kupolsil i grönyta"], + "sarskiljande_detaljer": ["Sidointag i kantstenen (kerb inlet, US-vanligt)", "Brunnens placering i rännstenslinjen"], + "forvaxlingsrisker": ["Nedstigningsbrunn (LVX-VAT-0202)", "Linjeavvattning/ränna"], + "kameravinklar": ["Snett mot galler + kantsten"], + "ocr": { "typskylt_position": "—", "falt": [] }, + "konfidenskrav": 0.6 + }, + "problem": [ { "typ": "Igensatt sandfång/galler", "beskrivning": "Löv och sediment — översvämningsrisk vid skyfall", "kalla": "PLATSHÅLLARE — driftdata" } ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-VAT-0102", "beskrivning": "Gallret är intaget" }, + { "predikat": "del_av", "mal": "Dagvattennät (framtida klass)", "beskrivning": "" } + ], + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [], "konfidens": 0.6, "verifieringsniva": "obekraftad" } + }, + { + "lvx_id": "LVX-VAT-0204", + "posttyp": "objektklass", + "slug": "ventilbetackning", + "namn": { "sv": "Ventil-/spindelbetäckning", "en": "Valve surface box" }, + "doman": "VAT", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Ulefos", "EJ", "vonRoll", "AVK-gruppen"], "status": "aktiv" }, + "teknik": { + "material": ["gjutjärn", "komposit"], + "montering": "Liten (ofta teleskopisk) betäckning över ventilspindel; nyckelrör ned till avstängningsventilen" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["gata", "gångyta", "tomtgräns"] }, + "standarder": [], + "ai": { + "kannetecken": ["Liten rund/oval lucka (ofta 10–20 cm)", "Gjuten funktionstext: VATTEN/AVLOPP/GAS/SV/WATER/GAS", "Sitter ofta i linje mellan huvudledning och servis"], + "sarskiljande_detaljer": ["Funktionstexten är primär klassificerare", "Teleskopöverdelens dubbelring"], + "forvaxlingsrisker": ["Full brunnsbetäckning (LVX-VAT-0101)", "Mätarbrunnslock", "Kabelmarkeringsbricka"], + "kameravinklar": ["Rakt uppifrån, närbild text"], + "ocr": { "typskylt_position": "Gjuten funktionstext i lock", "falt": ["funktion", "tillverkare"] }, + "konfidenskrav": 0.65 + }, + "problem": [ { "typ": "Överasfalterad/försvunnen", "beskrivning": "Ventil oåtkomlig vid akut avstängning", "kalla": "PLATSHÅLLARE — VA-driftdata" } ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "Avstängningsventil (framtida klass)", "beskrivning": "Ger åtkomst till spindeln" }, + { "predikat": "forvaxlas_med", "mal": "LVX-VAT-0101", "beskrivning": "" } + ], + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [], "konfidens": 0.6, "verifieringsniva": "obekraftad" } + }, + { + "lvx_id": "LVX-ELN-0201", + "posttyp": "objektklass", + "slug": "matarskap", + "namn": { "sv": "Mätarskåp", "en": "Meter cabinet" }, + "doman": "ELN", + "tier": 2, + "identitet": { "exempel_tillverkare": ["ABB Kabeldon (CDCM)", "fasadskåpsleverantörer nationellt"], "status": "aktiv" }, + "teknik": { + "material": ["plåt", "isolermaterial (Kabeldon-typ)", "polykarbonat"], + "montering": "Markstående vid tomtgräns (nordisk CDCM-typ) eller fasadmonterat; mätarfönster och plomberade utrymmen", + "ovrigt": { "referens": "Kabeldon CDCM är kabelskåpsserien i mätarutförande — samma skåpfamilj som LVX-ELN-0101 men med mätardel" } + }, + "geografi": { "lander": ["SE/NO/FI (markstående vanliga)", "EU", "UK", "US (meter socket på fasad)"], "miljotyper": ["tomtgräns", "fasad"] }, + "standarder": [ + { "organ": "IEC/CENELEC", "beteckning": "SS-EN 61439-5 (familjekrav)", "titel": "Distributionsskåp", "roll": "Samma normfamilj som kabelskåpen", "marknad": "EU" } + ], + "ai": { + "kannetecken": ["Mätarfönster i dörr", "Mindre än kabelskåp men samma formspråk", "Plomber vid mätarplats"], + "sarskiljande_detaljer": ["CDCM-beteckning på nordiska skåp", "Abonnent-/anläggnings-ID-etikett"], + "forvaxlingsrisker": ["Kabelskåp (LVX-ELN-0101)", "Fiber-/teleskåp (LVX-TEL-0101)"], + "kameravinklar": ["Front", "Närbild etikett/fönster"], + "ocr": { "typskylt_position": "Dörr-etikett", "falt": ["nätbolag", "anläggnings-ID"] }, + "konfidenskrav": 0.65 + }, + "problem": [ { "typ": "Påkörning/vandalism vid gata", "beskrivning": "", "kalla": "PLATSHÅLLARE" } ], + "relationer": [ + { "predikat": "matas_fran", "mal": "LVX-ELN-0101", "beskrivning": "Servis via kabelskåpsnätet" }, + { "predikat": "variant_av", "mal": "LVX-ELN-0101", "beskrivning": "Mätarutförande av skåpfamiljen (CDCM)" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ABB Kabeldon-katalog — CDC/CDCM-serierna (återanvänd, våg 2)", "url": "https://library.e.abb.com/public/0b1d1ae1e7d0af90c1257b1a0055f36d/Kabeldon%20kabelskapssystem%20produktkatalog%202013.pdf", "hamtad": "2026-07-04" } + ], + "konfidens": 0.7, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0201", + "posttyp": "objektklass", + "slug": "kabelbrunn", + "namn": { "sv": "Kabelbrunn/kanalisation", "en": "Cable chamber / handhole" }, + "doman": "TEL", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Oldcastle/Quazite (polymerbetong)", "Charles Industries (komposit)", "Hubbell", "betongprefab"], "status": "aktiv" }, + "teknik": { + "material": ["polymerbetong", "avancerad komposit", "betong"], + "montering": "Grade-level-låda i gångyta/vägren; handhole = åtkomst utan nedstigning", + "ovrigt": { "lastklassning": "ANSI/SCTE 77 Tier 5/8/15/22 för icke-avsiktlig trafik (tiernumret × 1000 lb designlast, provlast +50 %); avsiktlig körbanetrafik hänvisas till AASHTO" } + }, + "geografi": { "lander": ["US", "CA", "EU", "UK", "AU"], "miljotyper": ["trottoar", "vägren", "parkering"] }, + "standarder": [ + { "organ": "ANSI/SCTE", "beteckning": "ANSI/SCTE 77", "titel": "Specification for Underground Enclosure Integrity", "roll": "Strukturell integritet och tier-lastklassning för handholes (först 2002, reviderad därefter)", "marknad": "US/CA" }, + { "organ": "NFPA", "beteckning": "NEC 314.30", "titel": "Handhole enclosures", "roll": "Kräver dimensionering för förekommande laster; lockmärkning av funktion; lock ska kräva verktyg eller väga >45 kg", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Rektangulärt lock med gjuten funktionstext: COMMUNICATIONS/FIBER/ELECTRIC/CATV", "Polymerbetongens karaktäristiska yta", "Bultade lock med lyftöglor"], + "sarskiljande_detaljer": ["Tier-märkning förekommer på lock", "Operatörslogga (Openreach-brunnar i UK m.fl.)"], + "forvaxlingsrisker": ["VA-betäckning (LVX-VAT-0101)", "Elnätets kabelbrunnar (funktionstexten avgör)"], + "kameravinklar": ["Rakt uppifrån", "Närbild funktionstext"], + "ocr": { "typskylt_position": "Gjuten/formsprutad text i lock", "falt": ["funktion", "operatör", "tier"] }, + "konfidenskrav": 0.7 + }, + "problem": [ { "typ": "Fel lastklass för läget", "beskrivning": "Underdimensionerade lådor i ytor med tung icke-avsiktlig trafik havererar — hela motivet bakom SCTE 77", "kalla": "ANSI/SCTE 77 (syfte) / Oldcastle" } ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-TEL-0101", "beskrivning": "Kanalisationen matar skåpen" }, + { "predikat": "foljer_standard", "mal": "ANSI/SCTE 77", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "Oldcastle Infrastructure — SCTE 77-historik och tier-nivåerna 5/8/15/22", "url": "https://oldcastleinfrastructure.com/load-ratings-in-underground-enclosure-selection/", "hamtad": "2026-07-04" }, + { "titel": "SCTE — Specification for Underground Enclosure Integrity (scope: non-deliberate traffic; deliberate → AASHTO)", "url": "https://account.scte.org/standards/library/catalog/scte-77-specification-for-underground-enclosure-integrity/", "hamtad": "2026-07-04" }, + { "titel": "Quazite/Hubbell — tierlaster, NEC 314.30-koppling", "url": "https://studylib.net/doc/18069634/ansi-scte-77-2007-specification-for-underground-enclosure", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0201", + "posttyp": "objektklass", + "slug": "parkbank", + "namn": { "sv": "Parkbänk", "en": "Public bench" }, + "doman": "PRK", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Victor Stanley (US)", "Hags/Nola (Norden)", "Glasdon (UK)"], "status": "aktiv" }, + "teknik": { + "material": ["trä på gjutjärns-/stålgavlar", "helmetall", "återvunnen plast", "betong"], + "montering": "Bultad i markplatta eller nedgjuten; fasta program per kommun" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["park", "torg", "hållplats", "gågata"] }, + "standarder": [], + "ai": { + "kannetecken": ["Gavlarnas form är programsignaturen (kommuner standardiserar modell)", "Armstöd/mittarmstöd", "Ribbverkets antal och profil"], + "sarskiljande_detaljer": ["Gjutna gavelmönster", "Tillverkaretikett under sits förekommer"], + "forvaxlingsrisker": ["Soffa i väderskydd (del av LVX-TRP-0108)", "Privata möbler"], + "kameravinklar": ["Snett framifrån", "Gavelnärbild"], + "ocr": { "typskylt_position": "Ev. etikett/plakett", "falt": ["tillverkare", "modell", "donationsplakett"] }, + "konfidenskrav": 0.6 + }, + "problem": [ { "typ": "Rötskadat trä/flagnande färg", "beskrivning": "", "kalla": "PLATSHÅLLARE" } ], + "relationer": [ { "predikat": "ingar_i", "mal": "Möbleringsprogram (kommunspecifikt)", "beskrivning": "" } ], + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [], "konfidens": 0.6, "verifieringsniva": "obekraftad" } + } + ] +} diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-trp.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-trp.json new file mode 100644 index 000000000..90e2f1ade --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-tier2-trp.json @@ -0,0 +1,376 @@ +{ + "beskrivning": "Landvex IOL — Tier 2-klassposter, domän TRP. Genererade enligt forskningsprotokollet v1. Källor märkta (återanvänd) kommer från tidigare vågors verifierade research.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-TRP-0201", + "posttyp": "objektklass", + "slug": "skyltstolpe", + "namn": { "sv": "Skyltstolpe", "en": "Sign post" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["regionala stål-/rörleverantörer", "Valmont (strukturer)"], "status": "aktiv" }, + "teknik": { + "material": ["förzinkat stål (U-profil, rör)", "aluminium", "trä (vissa marknader)", "komposit"], + "montering": "Nedslagen, i hylsa/fundament eller med brytkoppling (slipbase); eftergivlighet klassas i EU enligt EN 12767", + "ovrigt": { "passiv_sakerhet": "EN 12767 klassar energiupptagning i tre klasser: HE (hög), LE (låg), NE (ingen); omfattar stolpar, konstruktionsdelar och fundament" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["alla vägmiljöer"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 12767:2019 (+A1:2024)", "titel": "Passive safety of support structures for road equipment", "roll": "Krocktestklassning HE/LE/NE för bl.a. skylt- och belysningsstolpar; utesluter räcken", "marknad": "EU/UK" }, + { "organ": "FHWA/AASHTO", "beteckning": "Breakaway-krav (kartläggs)", "titel": "Eftergivliga skyltstöd", "roll": "US-motsvarighet — slipbase och brytkopplingar", "marknad": "US" } + ], + "ai": { + "kannetecken": ["U-profil med hålrad = klassisk US-stolpe", "Rundrör med klammer = EU-typiskt", "Slipbase-fläns strax ovan mark = eftergivlig US-montering"], + "sarskiljande_detaljer": ["Hålradens delning", "Skarvhylsa vid mark (stub + överdel)", "Dubbel-/portalben vid större tavlor"], + "forvaxlingsrisker": ["Belysningsstolpe (LVX-TRP-0101)", "Staket-/grindstolpe", "Signalstolpe (LVX-TRP-0202)"], + "kameravinklar": ["Helbild med skylt", "Närbild markanslutning (brytkoppling?)"], + "ocr": { "typskylt_position": "—", "falt": [] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Påkörning", "beskrivning": "Eftergivlighetsklasserna finns just för kollisionsrisken", "kalla": "EN 12767 (scope)" }, + { "typ": "Korrosion vid markzon", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "LVX-TRP-0203", "beskrivning": "" }, + { "predikat": "foljer_standard", "mal": "EN 12767", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "NBS — BS EN 12767:2019 (klasserna HE/LE/NE)", "url": "https://www.thenbs.com/PublicationIndex/documents/details?Pub=BSI&DocID=327316", "hamtad": "2026-07-04" }, + { "titel": "iTeh — EN 12767:2019 scope (stolpar, konstruktionsdelar, fundament; ej räcken)", "url": "https://standards.iteh.ai/catalog/standards/cen/ea3ba437-12fd-4b81-a98c-009b9762e0d8/en-12767-2019", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0202", + "posttyp": "objektklass", + "slug": "signalstolpe-mastarm", + "namn": { "sv": "Signalstolpe & mastarm", "en": "Signal pole & mast arm" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Valmont", "Millerbernd (US)", "regionala"], "status": "aktiv" }, + "teknik": { + "material": ["stål (rund/månghörning)", "aluminium"], + "montering": "Fotplatta på fundament; mastarm över körbana (US-typiskt) eller kort stolpe vid stopplinje (EU-typiskt)" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["korsningar"] }, + "standarder": [ + { "organ": "AASHTO", "beteckning": "LTS-serien (kartläggs)", "titel": "Structural supports — signals", "roll": "Strukturkrav för mastarmar", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Lång horisontell mastarm med signalhuvuden = nordamerikanskt", "Kort stolpe + sekundärsignal = europeiskt", "Kombistolpe med både signal och belysning förekommer"], + "sarskiljande_detaljer": ["Armens infästning (fläns/knä)", "Tryckknappslåda för gående på stolpen"], + "forvaxlingsrisker": ["Belysningsstolpe med arm (LVX-TRP-0101)", "Skyltportalben (LVX-TRP-0205)"], + "kameravinklar": ["Helbild med arm", "Fotplatta/fundament"], + "ocr": { "typskylt_position": "Ev. väghållardekal", "falt": ["stolp-/korsnings-ID"] }, + "konfidenskrav": 0.65 + }, + "problem": [ + { "typ": "Utmattning i arminfästning", "beskrivning": "Vindinducerade svängningar i långa mastarmar", "kalla": "PLATSHÅLLARE — belägg med DOT-underlag" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "LVX-TRP-0203", "beskrivning": "" }, + { "predikat": "ansluts_med", "mal": "LVX-TRP-0104", "beskrivning": "Bär signalhuvudena" } + ], + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [], "konfidens": 0.6, "verifieringsniva": "obekraftad" } + }, + { + "lvx_id": "LVX-TRP-0203", + "posttyp": "objektklass", + "slug": "fundament", + "namn": { "sv": "Fundament (stolpe/mast/skåp)", "en": "Foundation" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["prefabgjuterier regionalt", "jordskruvsleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["prefabricerad betong", "platsgjuten betong", "stål (jordskruv/helical)"], + "montering": "Nedgrävt/skruvat; endast topp med bultgrupp eller fläns synlig", + "ovrigt": { "passiv_sakerhet": "Fundament ingår i EN 12767:s omfattning för eftergivliga system" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["alla"] }, + "standarder": [], + "ai": { + "kannetecken": ["Synlig betongtopp med 3–4 fundamentbultar", "Jordskruvens rörfläns", "Justermuttrar under fotplatta"], + "sarskiljande_detaljer": ["Prefab har jämn gjutyta och ev. märkning", "Bultcirkelns diameter indikerar stolptyp"], + "forvaxlingsrisker": ["Kapad stolpe (stubbe)", "Betäckning i grönyta"], + "kameravinklar": ["Snett ned mot topp/bultgrupp"], + "ocr": { "typskylt_position": "Prefabmärkning förekommer i gjutytan", "falt": ["tillverkare", "typ"] }, + "konfidenskrav": 0.6 + }, + "problem": [ + { "typ": "Sättning/lutning", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "ingar_i", "mal": "Eftergivliga stödsystem (EN 12767-scope)", "beskrivning": "" } + ], + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [], "konfidens": 0.6, "verifieringsniva": "obekraftad" } + }, + { + "lvx_id": "LVX-TRP-0204", + "posttyp": "objektklass", + "slug": "styrnod-belysning", + "namn": { "sv": "Styrnod belysning (NEMA/Zhaga)", "en": "Lighting control node" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Signify (Interact-noder)", "Itron", "Telensa", "Tvilight"], "status": "aktiv" }, + "teknik": { + "montering": "Vrids fast i standardsockel på armaturen: ANSI C136.10 (fotocell, twist-lock), C136.41 (5/7-polig med dimning) eller Zhaga Book 18 (över- eller undersida)", + "ovrigt": { "funktion": "Från enkel skymningsrelä-fotocell till uppkopplad smart nod med mätning och styrning" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["alla belysta vägmiljöer"] }, + "standarder": [ + { "organ": "NEMA/ANSI", "beteckning": "ANSI C136.10 / C136.41", "titel": "Fotocellssockel / dimsockel", "roll": "Mekaniskt och elektriskt gränssnitt (US/UK-tradition)", "marknad": "US" }, + { "organ": "Zhaga", "beteckning": "Zhaga Book 18", "titel": "Smart interface luminaire–node", "roll": "EU-vanligt nodgränssnitt", "marknad": "EU/global" } + ], + "ai": { + "kannetecken": ["Liten puck/kupol ovanpå armaturen", "Skymningsfönster på enkel fotocell", "Zhaga-nod ofta mindre, kan sitta under armaturen"], + "sarskiljande_detaljer": ["3-polig kort fotocell vs högre 7-polig smart nod", "Tillverkarlogga på kupolen"], + "forvaxlingsrisker": ["Kamera-/sensorenhet", "Blindlock i sockeln"], + "kameravinklar": ["Telefoto snett uppifrån/gatuvinkel mot armaturens topp"], + "ocr": { "typskylt_position": "Text på kupol (svårläst från mark)", "falt": ["tillverkare"] }, + "konfidenskrav": 0.65 + }, + "problem": [ + { "typ": "Fotocellsdrift (lampor lyser dagtid)", "beskrivning": "Felande nod ger dygnslysning — vanlig felanmälan", "kalla": "PLATSHÅLLARE — driftdata" } + ], + "relationer": [ + { "predikat": "monteras_pa", "mal": "LVX-TRP-0102", "beskrivning": "" }, + { "predikat": "foljer_standard", "mal": "ANSI C136.10/.41; Zhaga Book 18", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "NEMA — ANSI C136-serien (återanvänd, våg 1)", "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", "hamtad": "2026-07-04" }, + { "titel": "Zhaga Book 18 (återanvänd, våg 1)", "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0205", + "posttyp": "objektklass", + "slug": "vagportal", + "namn": { "sv": "Vägportal/skyltbrygga", "en": "Sign gantry" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Valmont", "regionala stålbyggare"], "status": "aktiv" }, + "teknik": { "material": ["fackverksstål", "rörbalk (monotube)"], "montering": "Två- eller enbent över körbana; fundament per ben" }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["motorväg", "större leder"] }, + "standarder": [ + { "organ": "AASHTO/CEN", "beteckning": "LTS / Eurokoder (kartläggs)", "titel": "Strukturkrav", "roll": "Vind-/utmattningsdimensionering", "marknad": "US/EU" } + ], + "ai": { + "kannetecken": ["Fackverk vs slät rörbalk", "Halvportal (utliggare) vs helportal", "Vägvisningstavlor och/eller variabla skyltar monterade"], + "sarskiljande_detaljer": ["Servicegång med räcke ovanpå äldre portaler", "Benens tvärsnitt och fundamentstorlek"], + "forvaxlingsrisker": ["Kontaktledningsbryggor järnväg", "Belysningsramper"], + "kameravinklar": ["Helbild framifrån", "Ben + fundament"], + "ocr": { "typskylt_position": "Väghållar-ID förekommer på ben", "falt": ["portal-ID"] }, + "konfidenskrav": 0.65 + }, + "problem": [ { "typ": "Utmattning/korrosion i knutpunkter", "beskrivning": "", "kalla": "PLATSHÅLLARE" } ], + "relationer": [ + { "predikat": "star_pa", "mal": "LVX-TRP-0203", "beskrivning": "" }, + { "predikat": "ansluts_med", "mal": "LVX-TRP-0103", "beskrivning": "Bär vägmärken/vägvisning" } + ], + "proveniens": { "skapad": "2026-07-04", "uppdaterad": "2026-07-04", "kallor": [], "konfidens": 0.6, "verifieringsniva": "obekraftad" } + }, + { + "lvx_id": "LVX-TRP-0206", + "posttyp": "objektklass", + "slug": "kantsten", + "namn": { "sv": "Kantsten", "en": "Kerb/curb" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["betongvaruindustrin regionalt", "naturstensleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["prefabricerad betong (EN 1340)", "natursten/granit (EN 1343)", "platsgjuten/asfaltlimmad"], + "montering": "Satt i bruk/betongmotstöd eller limmad; radieelement för kurvor", + "ovrigt": { "funktion": "Separation, visuell avgränsning, avvattning och inneslutning av beläggning (EN 1340-scope)" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["gata", "GC", "refug"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 1340", "titel": "Concrete kerb units", "roll": "Krav och provning för betongkantsten, rännor och passbitar; ersatte BS 7263-3", "marknad": "EU/UK" }, + { "organ": "CEN", "beteckning": "EN 1343", "titel": "Kerbs of natural stone", "roll": "Naturstenskantsten — prestandaklasser i väghållarkrav (t.ex. UK MCHW)", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Granit: grå/röd med huggen yta; betong: jämn ljusgrå", "Visningshöjd varierar (nedsänkt vid ramp/övergång)", "Rännstensplattor och avvisarsten som varianter"], + "sarskiljande_detaljer": ["Fasens vinkel och bredd", "Radieelement vs raka", "Limfog syns vid limmad kantsten"], + "forvaxlingsrisker": ["L-stöd/mur", "Trädgårdskantstöd"], + "kameravinklar": ["Snett längs kantlinjen", "Närbild profil"], + "ocr": { "typskylt_position": "—", "falt": [] }, + "konfidenskrav": 0.65 + }, + "problem": [ + { "typ": "Plog-/påkörningsskador", "beskrivning": "Avslagna kanter och rubbade element", "kalla": "PLATSHÅLLARE — driftdata" }, + { "typ": "Dubbdäcksslitage", "beskrivning": "EN 1340 noterar att tilläggskrav kan behövas vid regelbunden dubbdäckstrafik", "kalla": "EN 1340 (scope-notis)" } + ], + "relationer": [ { "predikat": "del_av", "mal": "Vägbana/beläggning (framtida klass)", "beskrivning": "" } ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ANSI Webstore — BS EN 1340:2003 scope (separation/avgränsning/avvattning; dubbdäcksnotis)", "url": "https://webstore.ansi.org/standards/bsi/bsen13402003", "hamtad": "2026-07-04" }, + { "titel": "UK MCHW Series 1100 — EN 1340/EN 1343-krav för kantsten", "url": "https://www.standardsforhighways.co.uk/tses/attachments/86a315ce-4061-4659-960b-8b47bc333485?inline=true", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0207", + "posttyp": "objektklass", + "slug": "reflexstolpe", + "namn": { "sv": "Reflexstolpe/kantstolpe", "en": "Delineator post" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Valtir (Safe-Hit, US flexpost)", "europeiska plastvarutillverkare"], "status": "aktiv" }, + "teknik": { + "material": ["polyeten/plast (flexibel, återfjädrande)", "stålrör (äldre)"], + "montering": "Nedslagen/hylsa i vägren; rörliknande tvärsnitt som viker sig vid påkörning (typkrav)", + "ovrigt": { "prestanda": "EN 12899-3 anger visuella och fysiska krav inkl. fordonspåkörning; nationella krav kan ange böjnings-/skadeklasser (t.ex. WL1, D1–D3)" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["landsväg", "motorväg", "arbetszon"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 12899-3", "titel": "Delineator posts and retroreflectors", "roll": "Kolorimetri, retroreflex, statisk/dynamisk last och påkörning; färg/form styrs nationellt", "marknad": "EU/UK" }, + { "organ": "NCHRP/MASH", "beteckning": "Kategori 1-enheter", "titel": "Flexibla delineatorer", "roll": "US-klassning för flexposts", "marknad": "US" } + ], + "ai": { + "kannetecken": ["EU-kantstolpe: vit med svart band och reflex (höger/vänster-kodning i vissa länder)", "US-flexpost: orange/vit/gul flexibel stolpe", "Snöstör-varianter i nordligt klimat"], + "sarskiljande_detaljer": ["Reflexens form (rektangel/rund) och färg per land", "Tvärsnitt (triangel/rör/platt)"], + "forvaxlingsrisker": ["Pollare (LVX-PRK-0101)", "Snökäpp", "Arbetszonskon"], + "kameravinklar": ["Helbild", "Närbild reflex"], + "ocr": { "typskylt_position": "—", "falt": [] }, + "konfidenskrav": 0.7 + }, + "problem": [ { "typ": "Påkörning/plogskador", "beskrivning": "Flexmaterialet finns just för överkörningarna", "kalla": "EN 12899-3 (påkörningskrav) / tillverkardokumentation" } ], + "relationer": [ { "predikat": "star_pa", "mal": "LVX-TRP-0203", "beskrivning": "Eller direkt nedslagen" } ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "SIS — SS-EN 12899-3:2007 scope (retroreflex, last, påkörning)", "url": "https://www.sis.se/en/produkter/civil-engineering/road-engineering/road-equipment-and-installations/ssen1289932007/", "hamtad": "2026-07-04" }, + { "titel": "EU TRIS (FI) — kantstolpskrav: rörtvärsnitt som viker sig; klasser WL1/D1–D3 enl. EN 12899-3", "url": "https://technical-regulation-information-system.ec.europa.eu/mt/notification/24662/text/F/EN", "hamtad": "2026-07-04" }, + { "titel": "Valtir Safe-Hit delineator (NCHRP 350/MASH Cat 1) — återanvänd, våg 3", "url": "https://www.trafficmanagement.com/products/valtir-energy-absorption", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0208", + "posttyp": "objektklass", + "slug": "broracke", + "namn": { "sv": "Broräcke", "en": "Bridge parapet" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Saferoad/Birsta", "Hill & Smith", "brobyggarnas systemleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["stål (ståndare + följare)", "betong (barriärkant)", "kombination med GC-överliggare"], + "montering": "Ståndare förankrade i brokantbalk; högre kapacitetsklasser än väg i övrigt är vanliga" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["broar", "stödmurar"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 1317", "titel": "Road restraint systems", "roll": "Kapacitetsklasser (upp till H4b) tillämpas på broräcken; arbetsbredd kritisk vid kant", "marknad": "EU/UK" }, + { "organ": "AASHTO/FHWA", "beteckning": "MASH", "titel": "Bridge rails", "roll": "TL-klassning av broräcken", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Ståndare bultade i kantbalk", "Tätare följare/fyllning än vägräcke", "Ofta kombiräcke med högre GC-del"], + "sarskiljande_detaljer": ["Infästningsplattans bultbild", "Övergångssträcka mot vägräcke (styvhetsanpassning)"], + "forvaxlingsrisker": ["Vägräcke (LVX-TRP-0107)", "GC-räcke utan kapacitetsklass"], + "kameravinklar": ["Längs räcket", "Närbild infästning i kantbalk"], + "ocr": { "typskylt_position": "Systemetikett förekommer", "falt": ["system", "klass"] }, + "konfidenskrav": 0.7 + }, + "problem": [ { "typ": "Korrosion vid infästning/fogar", "beskrivning": "", "kalla": "PLATSHÅLLARE — broinspektionsdata" } ], + "relationer": [ + { "predikat": "monteras_pa", "mal": "Brokantbalk (framtida klass)", "beskrivning": "" }, + { "predikat": "forvaxlas_med", "mal": "LVX-TRP-0107", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "DELTABLOC — EN 1317-klasser (återanvänd, våg 1)", "url": "https://deltabloc.com/en/about-us/road-safety-norms", "hamtad": "2026-07-04" }, + { "titel": "TxDOT — MASH-krav inkl. broräcken (återanvänd, våg 1)", "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", "hamtad": "2026-07-04" } + ], + "konfidens": 0.72, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0209", + "posttyp": "objektklass", + "slug": "bullerskydd", + "namn": { "sv": "Bullerskydd", "en": "Noise barrier" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Gramm (UK)", "Jacksons (UK)", "Kohlhauer (DE)", "regionala betong-/träleverantörer"], "status": "aktiv" }, + "teknik": { + "material": ["trä (absorberande kassetter)", "betong", "aluminium-hålplåt", "akryl/glas (transparent)", "gabion/grönskärm"], + "montering": "Paneler mellan I-balksstolpar (HEA/HEB) på fundamentrad", + "ovrigt": { "prestanda": "Akustik deklareras som DLR (isolering, EN 1793-1) och DLα (absorption, EN 1793-2); EN 1793-5/-6 för fältmätning" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["motorväg", "järnväg", "tätortsleder"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 14388", "titel": "Road traffic noise reducing devices", "roll": "Harmoniserad produktstandard (CE/UKCA)", "marknad": "EU/UK" }, + { "organ": "CEN", "beteckning": "EN 1793 (del 1/2/5/6)", "titel": "Akustisk prestanda", "roll": "Ljudisolering DLR, absorption DLα, in-situ-metoder", "marknad": "EU/UK" }, + { "organ": "CEN", "beteckning": "EN 1794 (del 1/2)", "titel": "Icke-akustisk prestanda", "roll": "Mekanik/stabilitet respektive säkerhet/miljö", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Panelrader mellan synliga I-balksstolpar", "Absorberande sida (perforerad/ribbad) mot vägen", "Transparenta sektioner med fågelmarkering"], + "sarskiljande_detaljer": ["Kassettmaterial och profil", "Krön (rakt/böjt/T-topp)", "Grön vall vs byggd skärm"], + "forvaxlingsrisker": ["Plank/stängsel utan akustikfunktion", "Vindskydd", "Broräcke med tät fyllning"], + "kameravinklar": ["Snett längs skärmen (vägsida)", "Närbild panel + stolpe"], + "ocr": { "typskylt_position": "CE-/systemetikett förekommer på stolpe/panel", "falt": ["system", "klass DLR/DLα"] }, + "konfidenskrav": 0.7 + }, + "problem": [ { "typ": "Klotter/UV-åldring (akryl)", "beskrivning": "", "kalla": "PLATSHÅLLARE" } ], + "relationer": [ { "predikat": "star_pa", "mal": "LVX-TRP-0203", "beskrivning": "Fundamentrad" } ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "IOA — Navigating the British Standards for road traffic noise barriers (EN 14388, EN 1793-1/2, EN 1794-1/2, EN 14389)", "url": "https://www.ioa.org.uk/dam/jcr:fc90c2d5-c6eb-4851-9dc8-851531f57cf9/Navigating%20the%20British%20Standards%20for%20road%20traffic%20noise%20barriers%20January-February%202017.pdf", "hamtad": "2026-07-04" }, + { "titel": "Air Acoustics — EN 1793 DLα/DLR och relation till EN 14388/EN 1794", "url": "https://www.air-acoustics.com/understanding-bs-en-1793-what-specifiers-need-to-know", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0210", + "posttyp": "objektklass", + "slug": "rackesterminal", + "namn": { "sv": "Räckesterminal/ändavslut", "en": "Guardrail end terminal" }, + "doman": "TRP", + "tier": 2, + "identitet": { "exempel_tillverkare": ["Valtir (SoftStop)", "Road Systems Inc. (SKT, FLEAT)", "Lindsay"], "status": "aktiv" }, + "teknik": { + "material": ["stål"], + "montering": "Terminalhuvud + eftergivliga stolpar närmast änden; energiupptagande (extruderande) eller enklare nedförd/utsvängd ände", + "ovrigt": { "typer": "Tangentiella (SKT-typ) vs flärade (FLEAT-typ); MGS-versioner med skarv mellan stolpar och 31-tumshöjd" } + }, + "geografi": { "lander": ["US", "CA", "AU", "delar av EU"], "miljotyper": ["räckesändar på alla vägtyper"] }, + "standarder": [ + { "organ": "AASHTO/FHWA", "beteckning": "MASH (TL-2/TL-3)", "titel": "Terminaltester 3-30…3-37", "roll": "Krocktestklassning; FHWA eligibility letters (t.ex. CC-115D för SoftStop)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Karakteristiskt huvud på räckets ände", "SYTP/CRT-eftergivliga stolpar närmast änden", "Flärad linje som viker ut från vägen (FLEAT-typ)"], + "sarskiljande_detaljer": ["Huvudets form skiljer fabrikat", "Dekal/stansning med modell", "Nedförd ände utan huvud = äldre/enklare lösning"], + "forvaxlingsrisker": ["Krockdämpare (crash cushion — egen framtida klass)", "Vanlig räckesskarv"], + "kameravinklar": ["Framifrån mot huvudet", "Längs terminalsträckan"], + "ocr": { "typskylt_position": "Dekal/stansning på huvud", "falt": ["fabrikat", "modell"] }, + "konfidenskrav": 0.75 + }, + "problem": [ { "typ": "Ej återställd efter påkörning", "beskrivning": "Deformerad terminal skyddar inte — utbyteskritisk komponent", "kalla": "PLATSHÅLLARE — förvaltningsdata" } ], + "relationer": [ + { "predikat": "del_av", "mal": "LVX-TRP-0107", "beskrivning": "Avslutar räckeslinjen" }, + { "predikat": "foljer_standard", "mal": "MASH", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "Roadside Safety Pooled Fund — SoftStop (MASH-tester, CC-115D) — återanvänd, våg 3", "url": "https://www.roadsidepooledfund.org/crash-att/soft-stop/", "hamtad": "2026-07-04" }, + { "titel": "Road Systems Inc — SKT/FLEAT i MGS-utförande — återanvänd, våg 3", "url": "https://roadsystems.com/nchrp-350-mgs-31-terminals/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + } + ] +} diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-trp.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-trp.json new file mode 100644 index 000000000..245d2c656 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-trp.json @@ -0,0 +1,374 @@ +{ + "beskrivning": "Landvex IOL — Tier 1-klassposter, domän TRP (Transport/väg). Genererade enligt forskningsprotokollet v1. Problem märkta PLATSHÅLLARE får inte publiceras utan källa.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-TRP-0101", + "posttyp": "objektklass", + "slug": "belysningsstolpe", + "namn": { "sv": "Belysningsstolpe", "en": "Lighting column" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Valmont", "Hydro (aluminium)", "Europoles", "Tehomet (Norden)"], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "EN 40 omfattar toppmonterade stolpar upp till 20 m och armstolpar upp till 18 m; gatumiljö vanligen 3–12 m", + "material": ["stål (varmförzinkat)", "aluminium", "armerad/förspänd betong", "fiberkomposit (FRP)"], + "montering": "Fotplatta på gjutet fundament eller nedstucken; inspektionslucka med kabelanslutning nära basen", + "livslangd_ar": "30–50 (stål/aluminium i normal miljö)", + "korrosionsklass": "C3–C5 beroende på miljö (kust, vägsalt)" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["motorväg", "stadsgata", "GC-väg", "park", "parkering"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 40 (del 1–7)", "titel": "Lighting columns", "roll": "Definitioner, mått, vindlast, verifiering samt materialkrav per del: 4 betong, 5 stål, 6 aluminium, 7 komposit; inkluderar passiv säkerhet vid påkörning", "marknad": "EU/UK" }, + { "organ": "AASHTO", "beteckning": "LTS-serien", "titel": "Structural Supports for Highway Signs, Luminaires and Traffic Signals", "roll": "Strukturkrav (kartläggs vidare i modellvågen)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Konisk, stegad rund eller oktagonal profil (vanligast enligt EN 40-2)", "Inspektionslucka nära basen", "Fotplatta med fundamentbultar eller markingjutning", "Enkel- eller dubbelarm för armatur"], + "sarskiljande_detaljer": ["Ägar-/driftdekal med stolpnummer (kommun eller nätbolag)", "Svetssöm och stegning indikerar stål; strängpressad slät yta indikerar aluminium", "Luckans form och låsning varierar per tillverkare"], + "forvaxlingsrisker": ["Elstolpe (LVX-ELN-0102)", "Skylt- och signalstolpar", "Flaggstänger"], + "kameravinklar": ["Helbild med topp och bas", "Närbild på lucka och eventuell dekal/stolpnummer"], + "ocr": { "typskylt_position": "Dekal eller etikett vid lucka/bas", "falt": ["ägare", "stolpnummer", "ibland tillverkare och år"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Korrosion i markzon", "beskrivning": "Rostangrepp i övergången mark/luft förkortar livslängden på stålstolpar", "kalla": "PLATSHÅLLARE — branschkänt; belägg med förvaltningsrapport eller fältobservation före publicering" }, + { "typ": "Påkörningsskador", "beskrivning": "Deformation vid trafikolyckor; eftergivliga stolpar minskar personskaderisk", "kalla": "PLATSHÅLLARE — koppla till passiv säkerhet i EN 40/EN 12767 vid modellkartläggning" } + ], + "relationer": [ + { "predikat": "monteras_pa", "mal": "Stolpfundament (Tier 2 — LVX-ID tilldelas)", "beskrivning": "Fotplatta bultas mot prefabricerat eller platsgjutet fundament" }, + { "predikat": "matas_fran", "mal": "LVX-ELN-0101", "beskrivning": "Belysningsnätets kabelskåp" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "BSI — BS EN 40-serien (del 1–7, inkl. komposit del 7)", "url": "https://landingpage.bsigroup.com/LandingPage/Series?UPI=BS+EN+40", "hamtad": "2026-07-04" }, + { "titel": "EN 40-2:2004 General requirements and dimensions (scope: ≤20 m/≤18 m, tvärsnitt, lucka, passiv säkerhet)", "url": "https://www.en-standard.eu/bs-en-40-2-2004-lighting-columns-general-requirements-and-dimensions/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0102", + "posttyp": "objektklass", + "slug": "vagbelysningsarmatur", + "namn": { "sv": "Vägbelysningsarmatur", "en": "Road lighting luminaire" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Signify", "Schréder", "Acuity Brands/AEL", "Cree Lighting", "Thorn"], + "status": "aktiv" + }, + "teknik": { + "material": ["aluminium (gjutet hus)", "polykarbonat/glas (kupa)"], + "montering": "Toppmontage eller sidoarm (spigot); NEMA- eller Zhaga-sockel för styrnod", + "livslangd_ar": "20+ för LED-fixtur; drivdon ofta först ut", + "ip_klass": "IP65–IP66 vanligt" + }, + "historik": { + "revisioner": ["kvicksilver → högtrycksnatrium (HPS, 1970-tal) → LED (2010-tal och framåt)"] + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["motorväg", "stadsgata", "GC-väg", "parkering"] }, + "standarder": [ + { "organ": "NEMA/ANSI", "beteckning": "ANSI C136-serien", "titel": "Roadway and Area Lighting Equipment", "roll": "C136.10 låsbar fotocellsockel, C136.41 dimsockel (5/7-pol, monteras ovanpå armaturen), C136.15 fältidentifieringsetikett med typ och wattal", "marknad": "US" }, + { "organ": "Zhaga Consortium", "beteckning": "Zhaga Book 18", "titel": "Smart interface luminaire–node", "roll": "Standardiserad sockel för sensor-/kommunikationsnoder; vanligast i Europa, kan sitta ovanpå eller under armaturen; Zhaga-D4i med DALI", "marknad": "EU/global" }, + { "organ": "CEN/CENELEC", "beteckning": "EN 60598 / EN 13201", "titel": "Armatursäkerhet / vägbelysningsklasser", "roll": "Produktsäkerhet respektive belysningsprestanda (M/C/P-klasser)", "marknad": "EU/UK" }, + { "organ": "UL", "beteckning": "UL 1598", "titel": "Luminaires", "roll": "Produktsäkerhet", "marknad": "US/CA" } + ], + "ai": { + "kannetecken": ["'Cobra head'-silhuett = klassisk amerikansk gatuarmatur (ofta HPS)", "Plan rektangulär 'shoebox'-form = modern LED", "Skruvsockel/puck ovanpå: NEMA twist-lock (US/UK) eller Zhaga (EU)", "Orange/gult sken = HPS; vitt sken = LED eller metallhalogen"], + "sarskiljande_detaljer": ["Tillverkarlogga ofta gjuten i husets sida", "ANSI C136.15-etikett (svart text på vit botten) anger lamptyp och wattal — snabbaste US-identifieringen", "Typskylt med modell, effekt och tillverkningsdatum under eller inuti huset", "Zhaga-nodens diameter och placering"], + "forvaxlingsrisker": ["Parkarmatur på låg stolpe", "Strålkastare/floodlight", "Tunnelarmatur"], + "kameravinklar": ["Snett underifrån mot husets sida (logga)", "Rakt underifrån (typskylt/etikett)", "Ovanifrån vid lyftkorg (sockeltyp)"], + "ocr": { "typskylt_position": "Undersida eller insida av hus; C136.15-etikett på utsidan (US)", "falt": ["tillverkare", "modell", "wattal", "tillverkningsdatum", "lamptyp"] }, + "konfidenskrav": 0.75 + }, + "problem": [ + { "typ": "Lila/violett ljusskifte", "beskrivning": "Delaminering av fosforskiktet i vissa CSP-LED tillverkade cirka 2017–2019 gör att blåviolett ljus läcker igenom; rapporterat i Nordamerika och Europa från början av 2020-talet; byts under garanti", "typisk_alder_ar": "3–6 år efter installation", "kalla": "Wikipedia: 2020s purpling of streetlights; inside.lighting LSRC-utredning (CSP-LED, fosfor-silikonskikt)" }, + { "typ": "Drivdonshaveri", "beskrivning": "LED-drivdonet är ofta den komponent som fallerar först", "kalla": "PLATSHÅLLARE — belägg med servicedata före publicering" } + ], + "relationer": [ + { "predikat": "monteras_pa", "mal": "LVX-TRP-0101", "beskrivning": "Topp- eller armmontage på belysningsstolpe" }, + { "predikat": "ansluts_med", "mal": "Styrnod (NEMA/Zhaga) — Tier 2", "beskrivning": "Fotocell eller smart nod i standardiserad sockel" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "NEMA — ANSI C136-serien (C136.10, C136.15, C136.41)", "url": "https://www.nema.org/standards/technical/ansi-c136-series-standards-for-roadway-and-area-lighting-equipment", "hamtad": "2026-07-04" }, + { "titel": "Zhaga Book 18 — smart interface för utomhusarmaturer", "url": "https://www.zhagastandard.org/books/overview/smart-interface-between-outdoor-luminaires-and-sensing-communication-modules-18.html", "hamtad": "2026-07-04" }, + { "titel": "Wikipedia — 2020s purpling of streetlights", "url": "https://en.wikipedia.org/wiki/2020s_purpling_of_streetlights", "hamtad": "2026-07-04" } + ], + "konfidens": 0.8, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0103", + "posttyp": "objektklass", + "slug": "vagmarke", + "namn": { "sv": "Vägmärke", "en": "Road sign" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["3M (reflexfolie)", "Avery Dennison (reflexfolie)", "regionala skylttillverkare"], + "status": "aktiv" + }, + "teknik": { + "material": ["aluminiumplåt (substrat)", "retroreflekterande folie i klasser"], + "montering": "U-profilstolpe (US), rörstolpe/klammer (EU), portal eller väggmontage", + "livslangd_ar": "10–15 för folien; retroreflexionen avgör" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["alla vägmiljöer"] }, + "standarder": [ + { "organ": "FHWA", "beteckning": "MUTCD 11:e utgåvan, Revision 1 (dec 2025)", "titel": "Manual on Uniform Traffic Control Devices", "roll": "Gällande utgåva; delstaterna skulle anta 11:e utgåvan senast 18 jan 2026; anger även minimikrav på retroreflexion", "marknad": "US" }, + { "organ": "UK DfT", "beteckning": "TSRGD 2016 (SI 2016/362)", "titel": "Traffic Signs Regulations and General Directions", "roll": "Föreskriver design och användning av vägmärken, vägmarkeringar och signaler i Storbritannien; i kraft 22 april 2016", "marknad": "UK" }, + { "organ": "FN/nationella", "beteckning": "Wienkonventionen 1968 + nationella kataloger", "titel": "Konvention om vägmärken och signaler", "roll": "Gemensam formspråksgrund i EU; varje land har egen märkeskatalog", "marknad": "EU" }, + { "organ": "Standards Australia", "beteckning": "AS 1742", "titel": "Manual of uniform traffic control devices", "roll": "Australisk motsvarighet", "marknad": "AU" }, + { "organ": "CEN / ASTM", "beteckning": "EN 12899-1 / ASTM D4956", "titel": "Fasta vägmärken / reflexfolieklasser", "roll": "Produktkrav respektive folietypklassning (kartläggs vidare i modellvågen)", "marknad": "EU / US" } + ], + "ai": { + "kannetecken": ["Form + färg är regelverkets grammatik: gul romb = varning (US); triangel med röd bård = varning (EU); åttahörning = stopp (globalt)", "Retroreflex som lyser upp i blixt-/lyktljus"], + "sarskiljande_detaljer": ["Baksidesetikett med tillverkare, tillverkningsdatum och folietyp — den säkraste identifieringen", "Folietypens glittermönster (prismatisk vs glaspärla) syns i närbild", "Stolptyp och klamring skiljer marknader"], + "forvaxlingsrisker": ["Privata/kommersiella skyltar i regelverksliknande färger", "Tillfälliga arbetsplatsmärken", "Utgångna märkesgenerationer"], + "kameravinklar": ["Framsida rakt framifrån", "Baksida i närbild (etikett)", "Med blixt för folieanalys"], + "ocr": { "typskylt_position": "Etikett på skyltens baksida", "falt": ["tillverkare", "datum", "folietyp", "ibland beställare"] }, + "konfidenskrav": 0.85 + }, + "problem": [ + { "typ": "Retroreflexionsförlust", "beskrivning": "Folien åldras under UV och väder; MUTCD kräver metod för att hålla retroreflexion över miniminivåer", "kalla": "FHWA MUTCD (retroreflexionskrav)" }, + { "typ": "Delaminering/blekning", "beskrivning": "Folie släpper från substrat eller bleks", "kalla": "PLATSHÅLLARE — belägg per folietyp i modellvågen" } + ], + "relationer": [ + { "predikat": "monteras_pa", "mal": "Skyltstolpe/portal (Tier 2 — LVX-ID tilldelas)", "beskrivning": "" }, + { "predikat": "foljer_standard", "mal": "MUTCD / TSRGD / nationella kataloger", "beskrivning": "Formspråket ÄR standarden — märkeskatalogen blir egen datamängd i modellvågen" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "FHWA — MUTCD 11th Edition with Revision 1 (gällande utgåva)", "url": "https://mutcd.fhwa.dot.gov/kno_11th_Editionr1.htm", "hamtad": "2026-07-04" }, + { "titel": "FHWA — delstatsadoption senast 18 jan 2026", "url": "https://mutcd.fhwa.dot.gov/resources/state_info/index.htm", "hamtad": "2026-07-04" }, + { "titel": "GOV.UK — TSRGD 2016 overview", "url": "https://www.gov.uk/government/publications/traffic-signs-regulations-and-general-directions-2016-an-overview", "hamtad": "2026-07-04" } + ], + "konfidens": 0.82, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0104", + "posttyp": "objektklass", + "slug": "trafiksignal-signalhuvud", + "namn": { "sv": "Trafiksignal, signalhuvud", "en": "Traffic signal head" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["SWARCO", "Yunex Traffic", "Econolite", "McCain"], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Nominell linsdiameter 200 mm eller 300 mm (EN 12368)", + "material": ["polykarbonat", "aluminium"], + "montering": "Stolpe/mast (EU-typiskt) eller mastarm/wire över körbana (US-typiskt)" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["korsningar", "övergångsställen", "påfarter"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 12368:2024", "titel": "Traffic control equipment — Signal heads", "roll": "Krav för signalhuvuden röd/gul/grön med 200/300 mm runda ljusöppningar: ljusstyrkeklasser, IP-klasser, slagtålighet IR1–IR3, fantomskensbegränsning", "marknad": "EU/UK" }, + { "organ": "ITE", "beteckning": "VTCSH", "titel": "Vehicle Traffic Control Signal Heads", "roll": "US-spec för signalhuvuden (kartläggs vidare)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Antal ljusöppningar (1–5 moduler) och pilsymboler", "200 vs 300 mm lins", "Visir/solskärmar per öppning", "Bakgrundsskärm — i nyare US-installationer ofta med retroreflekterande gul ram"], + "sarskiljande_detaljer": ["Husets modulskarvar och fästen skiljer tillverkare", "Gång-/cykelsymboler är regionala (hand/gubbe, röd-grön gubbe, cykelsymbol)", "LED-insats syns som punktmatris; glödlins är jämnlysande"], + "forvaxlingsrisker": ["Körfältssignaler", "Järnvägssignaler (LVX-JVG, Tier 2)", "Bro-/tunnelsignaler"], + "kameravinklar": ["Framifrån med alla öppningar", "Snett bakifrån (hus och fäste)"], + "ocr": { "typskylt_position": "Etikett på husets bak- eller undersida", "falt": ["tillverkare", "modell", "spänning"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Kondens/vatteninträngning", "beskrivning": "Imma i lins vid bristande tätning; EN 12368 klassar därför IP-skydd", "kalla": "PLATSHÅLLARE — belägg per modell" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-TRP-0105", "beskrivning": "Styrs av trafiksignalskåpets styrapparat" }, + { "predikat": "monteras_pa", "mal": "Signalstolpe/mastarm (Tier 2)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "EN 12368:2024 (scope: 200/300 mm-roundels, prestandaklasser)", "url": "https://www.en-standard.eu/bs-en-12368-2024-traffic-control-equipment-signal-heads/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0105", + "posttyp": "objektklass", + "slug": "trafiksignalskap", + "namn": { "sv": "Trafiksignalskåp/styrapparat", "en": "Traffic signal controller cabinet" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Econolite", "SWARCO McCain", "Yunex Traffic", "Q-Free"], + "status": "aktiv" + }, + "teknik": { + "material": ["aluminium (t.ex. 5052-plåt)", "stål"], + "montering": "Sockel-/fundamentmonterat vid korsning, ibland stolpmonterat", + "ovrigt": { "inre": "styrapparat, konfliktmonitor/MMU, detektorrack, lastbrytare; NEMA TS 2 använder seriell busskommunikation" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["korsningar"] }, + "standarder": [ + { "organ": "NEMA", "beteckning": "NEMA TS 2-2021", "titel": "Traffic Controller Assemblies", "roll": "Definierar styrapparat, skåpstorlekar, MMU, BIU och seriell kommunikation; utbytbarhet mellan tillverkare", "marknad": "US/CA" }, + { "organ": "ITE/AASHTO/NEMA", "beteckning": "ATC-standarder; Caltrans 33x-typ", "titel": "Advanced Transportation Controller; kaliforniska skåptyper", "roll": "Alternativa skåp-/styrapparatfamiljer (kartläggs vidare)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Grå/aluminiumfärgad plåtlåda vid gathörn nära signaler", "Ventilationsgaller med filter nertill, fläktutlopp upptill", "Separat liten 'polislucka' i dörren", "Ofta batteribackupskåp intill"], + "sarskiljande_detaljer": ["Skåpform (NEMA-typer vs smala dubbelhöga 33x-typ i Kalifornien)", "Myndighetsetikett med korsnings-ID — nyckel-OCR", "Dörrarnas antal och gångjärnssida"], + "forvaxlingsrisker": ["Kabelskåp el (LVX-ELN-0101)", "Telekomskåp (LVX-TEL-0101)", "Belysningscentral"], + "kameravinklar": ["Framifrån hel front", "Närbild på etikett/ID och polislucka"], + "ocr": { "typskylt_position": "Etikett på dörr", "falt": ["väghållare", "korsnings-ID", "serviceinfo"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Värme/ventilation", "beskrivning": "Elektronik känslig för värmeansamling; filter och fläkt kräver underhåll", "kalla": "PLATSHÅLLARE — belägg med servicedata" }, + { "typ": "Påkörning", "beskrivning": "Exponerad placering i korsning ger hög påkörningsrisk", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-TRP-0104", "beskrivning": "Styr signalhuvudena" }, + { "predikat": "matas_fran", "mal": "LVX-ELN-0101", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "NEMA TS 2-2021 Traffic Controller Assemblies (innehåll och scope)", "url": "https://www.nema.org/docs/default-source/standards-document-library/nema-ts-2-2021-contents-and-scopeb71294ae-eb9a-45e2-a501-e5c0672dbd6b.pdf", "hamtad": "2026-07-04" }, + { "titel": "Econolite NEMA Traffic Control Cabinets (skåpfamiljer, polislucka)", "url": "https://www.econolite.com/products/traffic-control-cabinets/nema-traffic-control-cabinets/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0106", + "posttyp": "objektklass", + "slug": "vagmarkering", + "namn": { "sv": "Vägmarkering", "en": "Road marking" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["PPG (Ennis-Flint)", "Geveko Markings", "SWARCO"], + "status": "aktiv" + }, + "teknik": { + "material": ["termoplast/massa", "vägfärg (vattenburen/lösningsmedel)", "2-komponent (kallplast)", "prefabricerad tejp"], + "ovrigt": { "tillsatser": "drop-on glaspärlor för retroreflexion; profilerad/bullrande utformning; vägbanereflektorer (RPM) vanliga i US" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["alla belagda vägar"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 1436:2018", "titel": "Road marking performance for road users", "roll": "Funktionsklasser för vita/gula markeringar: dagsljusreflexion (Qd), retroreflexion i strålkastarljus, färg och friktion; EN 1871 täcker materialens fysiska egenskaper", "marknad": "EU/UK" }, + { "organ": "FHWA", "beteckning": "MUTCD 11:e utgåvan", "titel": "Del om markeringar", "roll": "Anger obligatoriska miniminivåer för markeringars retroreflexion; underhållsplaner krävs (efterlevnad september 2026)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Färggrammatik: gul mittlinje/vit kantlinje (US); vit mittlinje i större delen av EU", "Linjebredd och mönster (heldragen, streckad, dubbel)", "Symbolbibliotek: pilar, cykel, buss, övergångsställen"], + "sarskiljande_detaljer": ["Materialtjocklek: massa står upp från ytan, färg gör det inte", "Profilerad kant = bullrande/våtsynbar markering", "RPM-reflektorer i linjen = nordamerikanskt"], + "forvaxlingsrisker": ["Tillfällig gul/orange arbetsmarkering", "Utfräst borttagen markering (spökbild)", "Lekplats-/parkeringsmålning utanför regelverket"], + "kameravinklar": ["Snett framåt i körriktning", "Rakt uppifrån för symboler", "Närbild på kant och tjocklek"], + "ocr": { "typskylt_position": "—", "falt": [] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Slitage i hjulspår", "beskrivning": "Retroreflexion och synbarhet försvinner först där däcken går; MUTCD:s minimikrav gör detta till underhållsfråga", "kalla": "FHWA MUTCD retroreflexionskrav (via RetroTek-sammanställning)" }, + { "typ": "Plogskador", "beskrivning": "Snöplogar river massa och reflektorer i nordligt klimat", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "del_av", "mal": "Vägbana/beläggning (Tier 2)", "beskrivning": "" }, + { "predikat": "foljer_standard", "mal": "EN 1436 / MUTCD", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "EN 1436:2018 (Qd, retroreflexion, färg, friktion; relation till EN 1871)", "url": "https://standards.iteh.ai/catalog/standards/cen/95bb9e65-a6d3-4051-94e5-6acba96c92c0/en-1436-2018", "hamtad": "2026-07-04" }, + { "titel": "RetroTek — Road Marking Standards Europe & US (MUTCD-minimikrav, sept 2026)", "url": "https://www.reflective-systems.com/usa-and-european-standards/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0107", + "posttyp": "objektklass", + "slug": "vagracke", + "namn": { "sv": "Vägräcke", "en": "Road safety barrier" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Valtir", "Lindsay", "Hill & Smith", "Saferoad/Birsta (Norden)"], + "status": "aktiv" + }, + "teknik": { + "material": ["förzinkat stål (W-/trie-balk, rör)", "vajer", "betong", "trä-stål-kombination"], + "montering": "Nedslagna eller ingjutna stolpar; betongbarriärer fristående eller förankrade" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["motorväg (sida/mitt)", "landsväg", "bro"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 1317", "titel": "Road restraint systems", "roll": "Kapacitetsklasser från T1 (lägst, temporärt) till H4b (mycket hög), arbetsbreddsklasser W1–W8, skaderiskklasser A/B/C; CE-märkning via del 5", "marknad": "EU/UK" }, + { "organ": "AASHTO/FHWA", "beteckning": "MASH (2016)", "titel": "Manual for Assessing Safety Hardware", "roll": "Ersätter NCHRP 350; krocktestnivåer TL-1 uppåt (TL-2 lågfart, TL-3 högfartsväg, TL-4 inkluderar lastbil)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Balkprofil: W-balk (två vågor) vs trie-balk (tre) vs rörräcke", "Vajerräcke: 3–4 linor på klena stolpar — vanligt nordiskt mitträcke", "Betongbarriär med lutande profil", "Stolptyp och stolpavstånd"], + "sarskiljande_detaljer": ["Skarvarnas överlapp och bultbild", "Ändavslut: nedförd, utsvängd eller energiupptagande terminal med slädhuvud", "Reflektorer monterade på räcket", "Distansklossar mellan balk och stolpe"], + "forvaxlingsrisker": ["Broräcke (Tier 2)", "GC-räcke/staket", "Bullerskydd med räckesfunktion"], + "kameravinklar": ["Längs räcket (profil och skarvar)", "Närbild på ändavslut", "Stolpe med infästning"], + "ocr": { "typskylt_position": "Stansning/etikett på balk eller terminal förekommer", "falt": ["system/typ", "ibland tillverkare"] }, + "konfidenskrav": 0.75 + }, + "problem": [ + { "typ": "Påkörningsskador", "beskrivning": "Deformerade sektioner ska bytas för bibehållen funktion", "kalla": "PLATSHÅLLARE — förvaltningsdata" }, + { "typ": "Korrosion vid skarv och markzon", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Räckesstolpe/fundament (Tier 2)", "beskrivning": "" }, + { "predikat": "foljer_standard", "mal": "EN 1317 / MASH", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "DELTABLOC — EN 1317 kapacitetsklasser T1–H4b, arbetsbredd W1–W8", "url": "https://deltabloc.com/en/about-us/road-safety-norms", "hamtad": "2026-07-04" }, + { "titel": "TxDOT — MASH 2016 testnivåer och ersättning av NCHRP 350", "url": "https://www.txdot.gov/manuals/des/rdw/chapter-17-roadside-safety-design-and-roadside-saf/17-2-roadside-safety-hardware-crash-criteria.html", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TRP-0108", + "posttyp": "objektklass", + "slug": "hallplatsvaderskydd", + "namn": { "sv": "Hållplatsväderskydd", "en": "Bus shelter" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["JCDecaux (operatörsprogram)", "Clear Channel (operatörsprogram)", "Team Tejbrant (Norden)"], + "status": "aktiv" + }, + "teknik": { + "material": ["aluminiumprofiler", "härdat glas", "stål"], + "montering": "Fundamentmonterade moduler; ofta reklamfinansierade stadsprogram" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["stadsgata", "landsväg"] }, + "standarder": [], + "ai": { + "kannetecken": ["Belyst reklamvitrin i gavel = reklamfinansierat program", "Modulbyggt glas/aluminium med tak", "Sittbänk och tidtabellstavla", "Realtidsskylt allt vanligare"], + "sarskiljande_detaljer": ["Operatörslogga (t.ex. stadsmöbelprogram) och hållplats-ID — nyckel-OCR", "Takform och gavelprofil skiljer program/tillverkare"], + "forvaxlingsrisker": ["Cykelparkeringstak", "Rökkur/entrétak", "Reklampelare utan hållplatsfunktion"], + "kameravinklar": ["Snett framifrån hela skyddet", "Närbild på hållplatsskylt och ID"], + "ocr": { "typskylt_position": "Hållplatsskylt och programetikett", "falt": ["hållplatsnamn", "hållplats-ID", "operatör"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Glaskross/vandalism", "beskrivning": "", "kalla": "PLATSHÅLLARE — förvaltningsdata" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-ELN-0101", "beskrivning": "Belysning/realtidsskylt matas från nätet" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [], + "konfidens": 0.55, "verifieringsniva": "obekraftad" + } + } + ] +} diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-vag2-uppdaterade.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-vag2-uppdaterade.json new file mode 100644 index 000000000..17e98e10c --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-vag2-uppdaterade.json @@ -0,0 +1,275 @@ +{ + "beskrivning": "Landvex IOL — våg 2-uppdateringar. Dessa sex klassposter ersätter motsvarande poster i lvx-klassposter-trp.json, lvx-klassposter-eln.json och lvx-klassposter-tel-prk.json. Samtliga nu källbelagda.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-TRP-0108", + "posttyp": "objektklass", + "slug": "hallplatsvaderskydd", + "namn": { "sv": "Hållplatsväderskydd", "en": "Bus shelter" }, + "doman": "TRP", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["JCDecaux (operatör/tillverkare)", "Clear Channel (operatör)", "Outfront/Decaux (JV, Nordamerika)", "Team Tejbrant (Norden)"], + "status": "aktiv" + }, + "teknik": { + "material": ["aluminiumprofiler", "härdat glas", "stål", "rostfritt (t.ex. NYC-programmet)"], + "montering": "Fundamentmonterade moduler; drivs ofta som reklamfinansierade franchiseprogram där operatören bygger och underhåller utan kostnad för staden", + "ovrigt": { "affarsmodell": "Reklamfinansierat väderskydd uppfanns av Jean-Claude Decaux 1964; JCDecaux har över 136 000 väderskydd installerade globalt" } + }, + "historik": { "introducerad": "1964 (reklamfinansierad modell, Frankrike)" }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["stadsgata", "landsväg"] }, + "standarder": [], + "ai": { + "kannetecken": ["Belyst reklamvitrin i gavel = reklamfinansierat program", "Modulbyggt glas/aluminium med tak", "Sittbänk, tidtabellstavla, allt oftare realtidsskylt/USB", "Enhetlig programdesign inom en stad (t.ex. rostfritt-och-glas i NYC-franchisen)"], + "sarskiljande_detaljer": ["Operatörslogga och hållplats-ID — nyckel-OCR", "Takform och gavelprofil skiljer program/tillverkare", "Nya generationer: gröna tak (t.ex. JCDecaux Filtreo), återbrukade material"], + "forvaxlingsrisker": ["Cykelparkeringstak", "Rökkur/entrétak", "Reklampelare utan hållplatsfunktion"], + "kameravinklar": ["Snett framifrån hela skyddet", "Närbild på hållplatsskylt och ID"], + "ocr": { "typskylt_position": "Hållplatsskylt och programetikett", "falt": ["hållplatsnamn", "hållplats-ID", "operatör"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Glaskross/vandalism", "beskrivning": "Drift- och underhållsansvar ligger i franchisen; operatörer sköter veckostädning, reparationer och inspektioner", "kalla": "Outfront/Decaux programbeskrivning (LA: löpande underhåll av 2 500+ möbler)" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "LVX-ELN-0101", "beskrivning": "Belysning/realtidsskylt matas från nätet" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "JCDecaux — The advertising bus shelter: uppfunnen 1964, 136 000+ installerade", "url": "https://www.jcdecaux.com/blog/advertising-bus-shelter-jcdecauxs-trademark", "hamtad": "2026-07-04" }, + { "titel": "NYC Street Design Manual — Bus Stop Shelter (JCDecaux-franchise, rostfritt/glas)", "url": "https://www.nycstreetdesign.info/furniture/bus-stop-shelter", "hamtad": "2026-07-04" }, + { "titel": "Outfront/Decaux — LA-programmet (2 400+ väderskydd, P3-modell)", "url": "https://www.outfrontjcdecaux.com/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.72, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-ELN-0101", + "posttyp": "objektklass", + "slug": "kabelskap-lagspanning", + "namn": { "sv": "Kabelskåp, lågspänning", "en": "LV distribution cabinet" }, + "doman": "ELN", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["ABB Kabeldon (Norden, fabrik i Alingsås)", "nätbolagsspecifika program per land"], + "status": "aktiv" + }, + "teknik": { + "material": ["varmförzinkad stålplåt (nordisk standard)", "glasfiberkomposit", "polykarbonat"], + "montering": "Integrerat markfundament eller sockel; justerbara ben; förberedd för VP-rör och värmekabel (arktiskt klimat)", + "ip_klass": "t.ex. IP34D enligt SS-EN 60529 (Kabeldon CDC)", + "ovrigt": { "las": "Trekantslås standard i Norden (t.ex. CDC-LT); cylinderlås som tillval", "innehall": "Säkringslister/skensystem, kabelavgreningar; lucka med hållare för kabelskåpskort" } + }, + "geografi": { "lander": ["EU", "UK", "US", "CA", "AU"], "miljotyper": ["stadsgata", "bostadsområde", "landsbygd"] }, + "standarder": [ + { "organ": "IEC/CENELEC", "beteckning": "EN 61439-5", "titel": "Lågspänningsfördelningar — kopplingsutrustning i publika distributionsnät", "roll": "Provnings- och konstruktionskrav; Kabeldon CDC testad enligt SS-EN 61439-5 inkl. krav för arktiskt klimat", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Fristående grå/grön låda på sockel eller integrerat fundament", "Nätbolagsdekal och skåpnummer", "Varningsskylt med blixtsymbol", "Trekants- eller specialnyckellås", "Ofta markeringsstång med reflex intill (snöröjning)"], + "sarskiljande_detaljer": ["Skåpnumret i nätbolagets format — nyckel-OCR", "Präglad lucka anpassad för märkning (Kabeldon)", "Varmförzinkad yta vs lackerad komposit skiljer generation/marknad", "CDCM-variant med ovandel används som mätarskåp"], + "forvaxlingsrisker": ["Telekomskåp (LVX-TEL-0101) — saknar blixtsymbol, har ofta ventilation", "Trafiksignalskåp (LVX-TRP-0105)", "Belysningscentral (undervariant)"], + "kameravinklar": ["Framifrån hel front", "Närbild på dekal, skåpnummer och varningsskylt"], + "ocr": { "typskylt_position": "Dekal/prägling på lucka", "falt": ["nätbolag", "skåpnummer", "varningstext"] }, + "konfidenskrav": 0.75 + }, + "problem": [ + { "typ": "Påkörning/snöröjningsskador", "beskrivning": "Markeringsstång med varselmärkning och reflexband säljs som standardtillbehör — indikerar känt riskmönster", "kalla": "ABB Kabeldon tillbehörskatalog (KSPS 7 markeringsstång)" }, + { "typ": "Fukt", "beskrivning": "Fuktspärr finns som tillbehör till hela CDC-serien", "kalla": "ABB Kabeldon CDC-katalog" } + ], + "relationer": [ + { "predikat": "matas_fran", "mal": "LVX-ELN-0103", "beskrivning": "Nätstation/transformator" }, + { "predikat": "ansluts_med", "mal": "LVX-TRP-0101", "beskrivning": "Matar bl.a. belysningsnät" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ABB — Kabeldon kabelskåp och kapslingar (produktfamilj, hårda miljöer)", "url": "https://new.abb.com/low-voltage/sv/produkter/kabelskap_cewe_kabeldon/kabeldon-kabelskap", "hamtad": "2026-07-04" }, + { "titel": "Onninen — Kabelskåp CDC 420 (varmförzinkat, integrerat markfundament, 400 A, SS-EN 61439-5, arktiskt klimat, trekantslås)", "url": "https://www.onninen.se/abb-kabeldon-kabelskap-cdc-420/p/AQO708", "hamtad": "2026-07-04" }, + { "titel": "ABB Kabeldon produktkatalog (Alingsås; IP34D SS-EN 60529; CDC/CDCM-användning)", "url": "https://library.e.abb.com/public/5c949d884df64a6882b049397a2b94e0/2013_Katalog_Kabeldon_lagspanningsfordelningar_svensk_REV%20A_6.pdf", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-TEL-0101", + "posttyp": "objektklass", + "slug": "telekomskap", + "namn": { "sv": "Telekomskåp (fiber/koppar)", "en": "Telecom street cabinet" }, + "doman": "TEL", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["operatörsprogram (t.ex. Openreach i UK)", "skåpelektronik: t.ex. Huawei, ECI (Openreach FTTC)"], + "status": "aktiv" + }, + "teknik": { + "material": ["plåt", "glasfiberkomposit"], + "montering": "Sockel-/fundamentmonterat; kabelbrunnar och kanalisation intill", + "ovrigt": { "typer": "Passivt korskopplingsskåp (UK: PCP, Primary Connection Point) vs aktivt FTTC/DSLAM-skåp; G.fast-poddar kan bultas på befintligt PCP-skåp; AIO-skåp kombinerar PCP + DSLAM i en enhet" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["stadsgata", "bostadsområde", "landsbygd"] }, + "standarder": [ + { "organ": "Operatörer", "beteckning": "Operatörsprogram", "titel": "Operatörsspecifika skåpfamiljer", "roll": "Utformning, kulör och märkning styrs av operatörens program; i UK är nästan all Openreach-gatuutrustning grön", "marknad": "per land" } + ], + "ai": { + "kannetecken": ["Fristående skåp utan högspänningsskyltning", "Operatörskonsekvent kulör (UK/Openreach: grön, ofta mörkgrön)", "Ventilationsgaller på aktiva skåp (DSLAM)", "Kabelbrunnslock i marken intill", "Sidopodd på äldre skåp = G.fast-utbyggnad (UK)"], + "sarskiljande_detaljer": ["Nod-/skåpetikett med operatörens ID — nyckel-OCR", "Passivt PCP-skåp (endast korskoppling) är enklare och ofta äldre; aktivt skåp har fläktgaller", "Dubbelskåp PCP + intilliggande FTTC-skåp med kabelkanal emellan"], + "forvaxlingsrisker": ["Kabelskåp el (LVX-ELN-0101) — har blixtsymbol", "Trafiksignalskåp (LVX-TRP-0105)", "Kabel-tv-skåp (egen operatörskulör)"], + "kameravinklar": ["Framifrån hel front", "Närbild på etikett/ID", "Sidovy (poddar/utbyggnader)"], + "ocr": { "typskylt_position": "Etikett på dörr", "falt": ["operatör", "nod-/skåp-ID"] }, + "konfidenskrav": 0.72 + }, + "problem": [ + { "typ": "Kapacitetstak", "beskrivning": "Fulla skåp (inga lediga portar) är ett känt fenomen som kräver extra DSLAM eller sidopoddar", "kalla": "ISPreview/BT Community — dokumenterade fall av fulla PCP/FTTC-skåp" }, + { "typ": "Korrosion", "beskrivning": "Rostiga och intryckta äldre skåp rapporteras av abonnenter", "kalla": "ISPreview läsarrapporter (Virgin Media-skåp)" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "Kanalisation/kabelbrunn (Tier 2)", "beskrivning": "" }, + { "predikat": "ingar_i", "mal": "Accessnät (Tier 2-topologi)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ISPreview — Identifying BT/Openreach street furniture (grön kulör; Huawei/ECI-skåp; AIO; G.fast-poddar)", "url": "https://www.ispreview.co.uk/index.php/2019/12/identifying-bt-and-virgin-medias-uk-broadband-street-furniture-2019.html/2", "hamtad": "2026-07-04" }, + { "titel": "Beaming — PCP-begreppet (Primary Connection Point, gröna gatuskåp)", "url": "https://www.beaming.co.uk/knowledge-base/techs-techie-jargon-buster/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.72, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0101", + "posttyp": "objektklass", + "slug": "pollare", + "namn": { "sv": "Pollare", "en": "Bollard" }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["ATG Access (säkerhetspollare, UK)", "Heald (säkerhetspollare, UK)", "Avon Barrier (HVM-system)", "stadsmiljöprogram varierar"], + "status": "aktiv" + }, + "teknik": { + "material": ["stål", "gjutjärn (klassisk kronpollare)", "rostfritt", "betong", "plast/flexibel"], + "montering": "Fast ingjuten, löstagbar i hylsa, fällbar/låsbar eller automatisk hydraulisk (typiskt ca 1000 mm över mark i höjt läge)", + "ovrigt": { "sakerhet": "Fordonshindrande säkerhetspollare (HVM, Hostile Vehicle Mitigation) krocktestas och klassas; klassningskoden anger fordonsvikt, hastighet, vinkel och penetration" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["gågata", "torg", "entré", "cykelbana", "skyddsobjekt"] }, + "standarder": [ + { "organ": "BSI", "beteckning": "PAS 68 (2005)", "titel": "Impact test specifications for vehicle security barriers", "roll": "Brittisk krocktestklassning, utvecklad med CPNI; fortfarande mest refererad utanför Nordamerika", "marknad": "UK/EU/MEA" }, + { "organ": "ISO (IWA)", "beteckning": "IWA 14-1 (2013)", "titel": "Vehicle security barriers — performance requirement", "roll": "Internationell sammanslagning av PAS 68 och ASTM F2656; klasskod: fordonsvikt/klass, hastighet, vinkel, penetration", "marknad": "internationellt" }, + { "organ": "ASTM", "beteckning": "ASTM F2656", "titel": "Crash testing of vehicle security barriers", "roll": "US-standard (2007, ersatte DOS SD-STD-02.01 K-klasser); penetrationsklasser P1–P4; ASTM F3016 täcker låga hastigheter", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Fristående kort stolpe utan skylt-/ljusfunktion", "Reflexband vanligt i trafiknära lägen", "Automatiska pollare: markring/lucka och varningsmarkering", "Kättingöglor på parkpollare"], + "sarskiljande_detaljer": ["Kronformad gjutjärnstopp = klassisk stadsmodell", "Grov diameter + djupt fundament indikerar HVM-säkerhetspollare (klassning kan vara märkt)", "Hylslock i mark = löstagbar variant"], + "forvaxlingsrisker": ["Belysningspollare (låg armatur)", "Hydrant i pollarform (LVX-VAT-0103)", "Laddstolpe (LVX-ELN-0104)", "Förtöjningspollare i hamn (LVX-HMN, Tier 3)"], + "kameravinklar": ["Helbild", "Toppen i närbild (form/gjutmärke)", "Markanslutning (fast/hylsa/automatik)"], + "ocr": { "typskylt_position": "Gjutmärke/etikett på topp eller kropp; HVM-klassning kan förekomma", "falt": ["tillverkare", "modell", "ev. klassningskod"] }, + "konfidenskrav": 0.72 + }, + "problem": [ + { "typ": "Påkörningsskador", "beskrivning": "", "kalla": "PLATSHÅLLARE — förvaltningsdata" }, + { "typ": "Automatikfel (hydrauliska pollare)", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament/hylsa (Tier 2)", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ATG Access — IWA 14-1-guiden (relation PAS 68/ASTM F2656, klasskod)", "url": "https://atgaccess.com/what-is-iwa-14/", "hamtad": "2026-07-04" }, + { "titel": "Avon Barrier — Certification & testing (PAS 68/CPNI, IWA 14-1, CWA 16221)", "url": "https://www.avon-barrier.com/certification-testing/", "hamtad": "2026-07-04" }, + { "titel": "Teknisk guide — ASTM F2656 (2007, ersatte SD-STD-02.01; P1–P4; PAS 68 2005; IWA 14-1 2013/2016)", "url": "https://www.uparkbollards.com/bollard-crash-ratings-the-complete-technical-guide-to-astm-pas-68-iwa-14-1_n596", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0102", + "posttyp": "objektklass", + "slug": "papperskorg", + "namn": { "sv": "Papperskorg", "en": "Litter bin" }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Glasdon (UK, grundat 1959, Blackpool)", "Victor Stanley (US)", "kommunala program varierar"], + "status": "aktiv" + }, + "teknik": { + "material": ["polymer (t.ex. Glasdon Durapol — väder-, vandal- och klottertålig)", "stål/gjutgods", "trä-stål-kombination"], + "montering": "Fundament-, stolp- eller väggmonterad; innerbehållare i zinkbelagd stål eller plast; låsbar (nyckel eller nyckellös)", + "ovrigt": { "referensexempel": "Glasdon Topsy 2000: 110 l volym, 90 l innerbehållare, lyft-av-kropp för tömning utan tunga lyft, höjd 1000 mm" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["park", "gågata", "hållplats", "torg"] }, + "standarder": [], + "ai": { + "kannetecken": ["Kommunprogram ger enhetlig design inom en stad — stark geografisk signal", "Inkastöppningens form (fågelsäkrad mindre öppning)", "Låst tömningslucka eller lyft-av-kropp", "Fraktionsdekaler vid sortering"], + "sarskiljande_detaljer": ["Kommunlogga/programdekal — nyckel-OCR", "Symbol/dekortyp (t.ex. Glasdons Bin-it-symbol i guld/silver)", "Askkoppsring i topp", "Smartkorg: solpanel i lock"], + "forvaxlingsrisker": ["Sandbehållare/saltlåda", "Hundlatrin (egen dekal)", "Returstation"], + "kameravinklar": ["Helbild framifrån", "Närbild på dekal/inkast"], + "ocr": { "typskylt_position": "Dekal på kropp", "falt": ["kommun/förvaltare", "ibland tillverkare/modell", "fraktion"] }, + "konfidenskrav": 0.7 + }, + "problem": [ + { "typ": "Vandalism/klotter", "beskrivning": "Materialval (t.ex. Durapol) marknadsförs uttryckligen som vandal- och klottertåligt — indikerar känt riskmönster", "kalla": "Glasdon produktdokumentation (Topsy-serien)" }, + { "typ": "Brand i behållare", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament/stolpe", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ArchiExpo/Glasdon — Topsy 2000 specifikation (Durapol, 110/90 l, lyft-av-kropp, lås)", "url": "https://www.archiexpo.com/prod/glasdon-group-limited/product-150131-1798607.html", "hamtad": "2026-07-04" }, + { "titel": "Glasdon — företag sedan 1959, ISO 9001 (produktsida Topsy-serien)", "url": "https://uk.glasdon.com/topsy-royale-tm-litter-bin", "hamtad": "2026-07-04" } + ], + "konfidens": 0.7, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-PRK-0103", + "posttyp": "objektklass", + "slug": "cykelstall", + "namn": { "sv": "Cykelställ", "en": "Cycle stand" }, + "doman": "PRK", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Cyclehoop (UK)", "Falco", "Broxap", "Dero (US)", "kommunala program varierar"], + "status": "aktiv" + }, + "teknik": { + "material": ["varmförzinkat stålrör (BS EN ISO 1461)", "rostfritt (304/316)", "pulverlack i RAL-kulör"], + "dimensioner": "Sheffield-bygel typiskt Ø48–60 mm rör, ca 750–900 mm över mark, ca 750–800 mm bred", + "montering": "Nedgjuten (ca 300 mm i betongfickor, krympta ändar mot uppdragning) eller fotplatta med bult", + "ovrigt": { "tillganglighet": "Tapper-list/platta nertill hjälper synskadade att upptäcka stället; reflexband som tillval" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["gata", "station", "skola", "handel"] }, + "standarder": [ + { "organ": "Branschpraxis/upphandling", "beteckning": "Sheffield-bygel", "titel": "Omvänt U — de facto-standardtyp", "roll": "Benämnd branschstandard i UK; rekommenderas av cykelorganisationer och anges i planeringskrav; medger låsning av ram och båda hjulen; certifieringar som Sold Secure/Secured by Design förekommer", "marknad": "UK (spridd globalt)" } + ], + "ai": { + "kannetecken": ["Sheffield-bygel (omvänt U) — global bastyp som medger ramlåsning", "Rader med jämna centrumavstånd", "Framhjulshållare = äldre typ", "Tvåvåningsställ vid stationer (utbrett i NL/DK)"], + "sarskiljande_detaljer": ["Rördiameter, tvärslå (moped-/skotervariant) och fotinfästning skiljer fabrikat", "Tapper-platta nertill = tillgänglighetsanpassad", "Programkulör och dekal", "Krympta rörändar vid nedgjutning syns aldrig — fotplatta med bult syns"], + "forvaxlingsrisker": ["Avspärrningsbygel/räcke", "Pollare med kätting (LVX-PRK-0101)", "Mopedparkering (grövre rör, tvärslå)"], + "kameravinklar": ["Snett ovanifrån hel rad", "Närbild på infästning och ev. dekal"], + "ocr": { "typskylt_position": "Dekal förekommer", "falt": ["förvaltare", "ibland tillverkare"] }, + "konfidenskrav": 0.72 + }, + "problem": [ + { "typ": "Påkörnings-/plogskador", "beskrivning": "", "kalla": "PLATSHÅLLARE" } + ], + "relationer": [ + { "predikat": "star_pa", "mal": "Fundament/fotplatta", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "Cyclehoop — Sheffield Stand (3 mm stål, ram+hjullåsning, nedgjutning 300 mm, tapper-tillval)", "url": "https://cyclehoop.com/product/sheffield-stand/", "hamtad": "2026-07-04" }, + { "titel": "The Bike Storage Company — Sheffield-bygeln som branschstandard/benchmark i UK", "url": "https://www.thebikestoragecompany.co.uk/product/the-sheffield-cycle-stand-galvanised/", "hamtad": "2026-07-04" }, + { "titel": "Falco — Sheffield-varianter (Ø48/Ø60, höjder, fotplatta/nedgjutning)", "url": "https://www.falco.co.uk/products/cycle-parking/cycle-stands/sheffield-stands.html", "hamtad": "2026-07-04" } + ], + "konfidens": 0.75, "verifieringsniva": "kallbelagd" + } + } + ] +} diff --git a/projects/landvex/arkiv/data-ersatta/lvx-klassposter-vat.json b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-vat.json new file mode 100644 index 000000000..13fcc6130 --- /dev/null +++ b/projects/landvex/arkiv/data-ersatta/lvx-klassposter-vat.json @@ -0,0 +1,153 @@ +{ + "beskrivning": "Landvex IOL — Tier 1-klassposter, domän VAT (Vatten & avlopp). Genererade enligt forskningsprotokollet v1.", + "genererad": "2026-07-04", + "poster": [ + { + "lvx_id": "LVX-VAT-0101", + "posttyp": "objektklass", + "slug": "brunnsbetackning", + "namn": { "sv": "Brunnsbetäckning", "en": "Manhole cover" }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Ulefos (Norden)", "Saint-Gobain PAM", "EJ (US)", "Neenah Foundry (US)"], + "status": "aktiv" + }, + "teknik": { + "dimensioner": "Vanliga nominella öppningar ca 600–650 mm (rund); kvadratiska format förekommer", + "material": ["segjärn (t.ex. EN-GJS-500-7 enligt EN 1563)", "gråjärn", "komposit (EN 124-5)", "armerad betong (EN 124-4)"], + "montering": "Vilar i betäckningsram, fast eller flytande (självjusterande); ram i bruksbädd — svag bruksbädd ger sättning", + "livslangd_ar": "50+ (gjutjärn i normal trafikmiljö)", + "belastningsklass": "EN 124: A15–F900 efter provlast i kN; D400 (400 kN provlast) normal klass i körbana" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["körbana", "GC-väg", "grönyta", "industriyta"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 124:2015 (del 1–6)", "titel": "Gully tops and manhole tops for vehicular and pedestrian areas", "roll": "Klassning A15–F900 efter provlast, placeringsgrupper 1–6; materialdelar: -2 gjutjärn, -3 stål/aluminium, -4 stålarmerad betong, -5 komposit", "marknad": "EU/UK" }, + { "organ": "Kommunala spec.", "beteckning": "H-20/HS-20-lastkrav", "titel": "Vanliga lastkrav i amerikanska kommunala upphandlingar", "roll": "Belastningskrav i körbana (kartläggs per delstat i modellvågen)", "marknad": "US" } + ], + "ai": { + "kannetecken": ["Rund eller kvadratisk gjutgodsyta i markplan", "Mönstrad halkskyddsyta", "Gjuten text: funktion (VA/DAGVATTEN/TELE/EL), kommun- eller gjuterimärke", "Klassmärkning (t.ex. D400) ofta gjuten och läsbar"], + "sarskiljande_detaljer": ["Mönstertyp och logotyp identifierar gjuteri/tillverkare", "Ramtyp: fast eller flytande", "Gångjärn, låsning och lyfthål varierar per modell", "Komposit har jämnare yta och saknar rostton"], + "forvaxlingsrisker": ["Dagvattengaller (LVX-VAT-0102)", "Ventilbetäckning (mindre diameter)", "Telebrunnslock (ofta rektangulära, egen märkning)"], + "kameravinklar": ["Rakt uppifrån, hela betäckningen i bild", "Närbild på gjuten text och klassmärkning"], + "ocr": { "typskylt_position": "Gjuten text på lockets ovansida", "falt": ["funktion", "tillverkare/gjuteri", "belastningsklass", "ibland årtal"] }, + "konfidenskrav": 0.85 + }, + "problem": [ + { "typ": "Klapper/buller", "beskrivning": "Lock som rör sig i ramen bullrar under trafik; moderna ramar förses med elastisk packning just för att dämpa detta", "kalla": "Produktdokumentation D400 (elastisk packning mot buller, Galco/Pamline)" }, + { "typ": "Sättning", "beskrivning": "Betäckning som sjunker under beläggningsnivå när bruksbädden under ramen är för svag eller för tunn", "kalla": "Branschgenomgång D400-installation (manholecoverworld: bruksbäddens hållfasthet)" }, + { "typ": "Stöld", "beskrivning": "Metallstöld av gjutjärnslock; kompositlock saknar skrotvärde och används delvis som stöldskydd", "kalla": "Branschgenomgång D400-material (manholecoverworld: komposit eliminerar stöldproblemet)" } + ], + "relationer": [ + { "predikat": "monteras_pa", "mal": "Betäckningsram (Tier 2 — LVX-ID tilldelas)", "beskrivning": "" }, + { "predikat": "del_av", "mal": "Nedstigningsbrunn (Tier 2 — LVX-ID tilldelas)", "beskrivning": "Betäckningen är brunnens synliga toppkomponent" }, + { "predikat": "forvaxlas_med", "mal": "LVX-VAT-0102", "beskrivning": "Dagvattengaller — liknande placering, annan funktion" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "JDP — BS EN 124:2015 klasser A15–F900 och materialdelar 1–6", "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", "hamtad": "2026-07-04" }, + { "titel": "Galco — D400 segjärnsbetäckning (EN-GJS-500-7/EN 1563, packning mot buller)", "url": "https://galco.ie/d400-ductile-manhole-cover-ef922123/", "hamtad": "2026-07-04" }, + { "titel": "Manhole Cover World — D400-klassens innebörd, bruksbädd, komposit och stöld", "url": "https://manholecoverworld.com/what-does-d400-load-class-really-mean-for-city-roads/", "hamtad": "2026-07-04" } + ], + "konfidens": 0.82, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0102", + "posttyp": "objektklass", + "slug": "dagvattengaller", + "namn": { "sv": "Dagvattengaller", "en": "Gully grating" }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Ulefos", "Saint-Gobain PAM", "EJ", "Neenah Foundry", "ACO (linjeavvattning)"], + "status": "aktiv" + }, + "teknik": { + "material": ["segjärn", "gråjärn", "komposit"], + "montering": "I ram över dagvattenbrunn; varianter i rännsten, kantsten (sidointag) och som kupolgaller i grönyta", + "belastningsklass": "EN 124-klasser; C250 vanlig vid rännsten, D400 i körbana" + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["rännsten/körbana", "GC-väg", "parkering", "grönyta"] }, + "standarder": [ + { "organ": "CEN", "beteckning": "EN 124:2015", "titel": "Gully tops and manhole tops", "roll": "Samma klassnings- och materialsystem som betäckningar; galler i prefabricerade avvattningsrännor faller i stället under EN 1433", "marknad": "EU/UK" } + ], + "ai": { + "kannetecken": ["Spaltförsett galler i stället för tätt lock", "Placering i rännsten/lågpunkt", "Kantstensintag: öppning i kantstenen med galler under", "Kupolformat galler i grönytor och diken"], + "sarskiljande_detaljer": ["Spaltriktning och spaltbredd (tvärgående spalter är cykelsäkrare än längsgående)", "Gjutmärke och klass i ramen/gallret", "Linjeavvattningsränna (t.ex. ACO-typ) är långsträckt och egen produktfamilj"], + "forvaxlingsrisker": ["Brunnsbetäckning (LVX-VAT-0101)", "Ventilationsgaller för undermarksutrymmen", "Trädgaller runt stadsträd"], + "kameravinklar": ["Rakt uppifrån", "Snett mot kantstensintag"], + "ocr": { "typskylt_position": "Gjuten text på galler eller ram", "falt": ["gjuteri", "klass", "funktion"] }, + "konfidenskrav": 0.8 + }, + "problem": [ + { "typ": "Igensättning", "beskrivning": "Löv och sediment blockerar spalterna; funktionsproblem snarare än produktfel", "kalla": "PLATSHÅLLARE — driftdata" }, + { "typ": "Cykelsäkerhet vid längsgående spalter", "beskrivning": "Smala hjul kan fastna i spalter i färdriktningen; moderna galler utformas tvärställda eller diagonala", "kalla": "PLATSHÅLLARE — belägg med väghållarriktlinje" } + ], + "relationer": [ + { "predikat": "del_av", "mal": "Dagvattenbrunn (Tier 2)", "beskrivning": "" }, + { "predikat": "forvaxlas_med", "mal": "LVX-VAT-0101", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "EasyMerchant — BS EN 124 grupper/klasser samt gränsdragning mot EN 1433 (rännor)", "url": "https://www.easymerchant.co.uk/blog/understanding-the-bs-en-124-classification/", "hamtad": "2026-07-04" }, + { "titel": "JDP — BS EN 124:2015 översikt", "url": "https://www.jdpipes.co.uk/knowledge/manhole-covers/bsen124-explained.html", "hamtad": "2026-07-04" } + ], + "konfidens": 0.78, "verifieringsniva": "kallbelagd" + } + }, + { + "lvx_id": "LVX-VAT-0103", + "posttyp": "objektklass", + "slug": "brandpost", + "namn": { "sv": "Brandpost/hydrant", "en": "Fire hydrant" }, + "doman": "VAT", + "tier": 1, + "identitet": { + "exempel_tillverkare": ["Mueller (US)", "M&H Valve (US)", "American AVK", "Hawle (EU)"], + "status": "aktiv" + }, + "teknik": { + "material": ["gjutjärn/segjärn", "brons (ventilsäten)", "epoxibelagda ytor"], + "montering": "Torrpost (dry-barrel): ventil under frostdjup, stigarrör dräneras — för klimat med frysrisk. Våtpost (wet-barrel): vattenfylld, endast milt klimat. Underjordisk post med spindel och markeringsskylt vanlig i delar av Europa", + "ovrigt": { "sakerhet": "Traffic breakaway-fläns som bryts vid påkörning skyddar huvudventil och stigarrör" } + }, + "geografi": { "lander": ["US", "EU", "UK", "CA", "AU"], "miljotyper": ["stadsgata", "industriområde", "bostadsområde"] }, + "standarder": [ + { "organ": "AWWA", "beteckning": "ANSI/AWWA C502", "titel": "Dry-Barrel Fire Hydrants", "roll": "Torrposter för alla klimat inklusive frysgrader; kräver bl.a. gjuten märkning med tillverkare, ventilstorlek, öppningsriktning och tillverkningsår", "marknad": "US/CA" }, + { "organ": "AWWA", "beteckning": "ANSI/AWWA C503", "titel": "Wet-Barrel Fire Hydrants", "roll": "Våtposter för milt klimat utan frysrisk", "marknad": "US (varma delstater)" }, + { "organ": "CEN", "beteckning": "EN 14384", "titel": "Pillar fire hydrants", "roll": "Minimikrav, provning och märkning för pelarbrandposter", "marknad": "EU/UK" }, + { "organ": "CEN", "beteckning": "EN 14339", "titel": "Underground fire hydrants", "roll": "Underjordiska brandposter", "marknad": "EU/UK" }, + { "organ": "NFPA", "beteckning": "NFPA 1963", "titel": "Fire Hose Connections", "roll": "Slanganslutningarnas gängor", "marknad": "US" } + ], + "ai": { + "kannetecken": ["US: fristående post med kupolformad hätta, typiskt två 2½-tums slangutlopp plus ett större pumperutlopp, femkantig manövermutter", "EU-pelarpost: slankare röd/gul pelare med lock över kopplingar", "Underjordisk typ: endast betäckning i mark plus markeringsskylt med avståndsangivelser", "Färgkodning av kapacitet förekommer (US-praxis, NFPA 291)"], + "sarskiljande_detaljer": ["Gjuten märkning: tillverkare, ventilstorlek, öppningsriktning, tillverkningsår — föreskriven i AWWA C502 och utmärkt OCR", "Hättans och utloppens form skiljer modellfamiljer", "Breakaway-flänsens skarv strax ovan mark"], + "forvaxlingsrisker": ["Spolpost/vattenutkastare", "Gasventil-markeringsstolpe", "Pollare i röd kulör"], + "kameravinklar": ["Helbild rakt framifrån", "Närbild på gjuten märkning vid hätta/kropp", "Underjordisk: skylt + betäckning"], + "ocr": { "typskylt_position": "Gjuten text på kropp/hätta; skylt vid underjordisk post", "falt": ["tillverkare", "ventilstorlek", "öppningsriktning", "årtal", "skylt: avstånd/dimension"] }, + "konfidenskrav": 0.85 + }, + "problem": [ + { "typ": "Frysskada vid fel typ i fel klimat", "beskrivning": "Uppdelningen torrpost/våtpost finns just för frysrisken; våtpost i frysklimat havererar", "kalla": "AWWA C502/C503 scope-uppdelning" }, + { "typ": "Påkörning", "beskrivning": "Hanteras konstruktivt med breakaway-fläns som offras vid kollision", "kalla": "Tillverkardokumentation (breakaway-funktion, SFFECO/AWWA-kompatibla poster)" }, + { "typ": "Läckage i spindeltätning", "beskrivning": "", "kalla": "PLATSHÅLLARE — servicedata" } + ], + "relationer": [ + { "predikat": "ansluts_med", "mal": "Vattenledningsnät/servisventil (Tier 2)", "beskrivning": "" }, + { "predikat": "foljer_standard", "mal": "AWWA C502/C503, EN 14384/14339", "beskrivning": "" } + ], + "proveniens": { + "skapad": "2026-07-04", "uppdaterad": "2026-07-04", + "kallor": [ + { "titel": "ANSI/AWWA C502-18 förord (torrpost alla klimat; våtpost C503; märkningskrav)", "url": "https://webstore.ansi.org/preview-pages/awwa/preview_c502-2018.pdf", "hamtad": "2026-07-04" }, + { "titel": "GlobalSpec — EN 14384 pelarbrandposter (scope)", "url": "https://standards.globalspec.com/topics/fire-hydrant-standards", "hamtad": "2026-07-04" }, + { "titel": "M&H Valve — AWWA C502-spec (märkning: tillverkare, ventilstorlek, öppningsriktning, år)", "url": "https://www.mh-valve.com/upl/downloads/resources/feature-benefits/929.pdf", "hamtad": "2026-07-04" } + ], + "konfidens": 0.8, "verifieringsniva": "kallbelagd" + } + } + ] +} diff --git a/projects/landvex/build.sh b/projects/landvex/build.sh new file mode 100755 index 000000000..9ac541ad2 --- /dev/null +++ b/projects/landvex/build.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "═══════════════════════════════════════════════════════════" +echo " Landvex IOL — Bygg & Driftsättning" +echo "═══════════════════════════════════════════════════════════" + +# ─── Konfiguration ───────────────────────────────────────── +DATA_DIR="${PWD}/10-data" +DB_DIR="${PWD}/db" +API_DIR="${PWD}/api" +SCRIPT_DIR="${PWD}/scripts" + +# ─── Steg 1: Validera indata ─────────────────────────────── +echo "" +echo "▶ Steg 1: Validerar indata..." +python3 "${SCRIPT_DIR}/export_csv.py" +python3 "${DB_DIR}/load_to_neo4j.py" + +# ─── Steg 2: Bygg Docker-image ───────────────────────────── +echo "" +echo "▶ Steg 2: Bygger API-container..." +docker compose build api + +# ─── Steg 3: Starta tjänster ─────────────────────────────── +echo "" +echo "▶ Steg 3: Startar API..." +docker compose up -d api + +# ─── Steg 4: Health check ────────────────────────────────── +echo "" +echo "▶ Steg 4: Health check..." +sleep 2 +HEALTH=$(curl -s http://localhost:8081/health) +POSTER=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin)['poster'])") +KANTER=$(echo "$HEALTH" | python3 -c "import sys,json; print(json.load(sys.stdin)['kanter'])") +echo " ✅ API: ${POSTER} poster, ${KANTER} kanter" + +# ─── Steg 5: Snabbtest ───────────────────────────────────── +echo "" +echo "▶ Steg 5: Snabbtest av endpoints..." +curl -s 'http://localhost:8081/v0/search?q=belysning' | python3 -m json.tool | grep '"antal"' +curl -s 'http://localhost:8081/v0/objects/LVX-TRP-0102' | python3 -m json.tool | grep '"lvx_id"' + +echo "" +echo "═══════════════════════════════════════════════════════════" +echo " ✅ Landvex IOL är driftsatt!" +echo "" +echo " API: http://localhost:8081" +echo " Health: http://localhost:8081/health" +echo " Neo4j: bolt://localhost:7687" +echo "" +echo " Endpoints:" +echo " POST /v0/identify — Bild → kandidater" +echo " GET /v0/objects/{id} — Hämta objekt" +echo " GET /v0/search?q=... — Fritextsök" +echo " GET /v0/standards/{b}/objects — Standard → objekt" +echo " POST /v0/feedback — Skapa bounty" +echo "═══════════════════════════════════════════════════════════" diff --git a/projects/landvex/db/kanter.csv b/projects/landvex/db/kanter.csv new file mode 100644 index 000000000..055c3c923 --- /dev/null +++ b/projects/landvex/db/kanter.csv @@ -0,0 +1,81 @@ +subjekt,predikat,objekt,niva,beskrivning +LVX-ELN-0101,matas_fran,LVX-ELN-0103,klass,Nätstation/transformator +LVX-ELN-0101,ansluts_med,LVX-TRP-0101,klass,Matar bl.a. belysningsnät +LVX-ELN-0102,star_pa,LVX-TRP-0203,klass, +LVX-ELN-0103,ansluts_med,LVX-ELN-0101,klass,Matar kabelskåpen i LV-nätet +LVX-ELN-0104,matas_fran,LVX-ELN-0103,klass,Nätanslutning via station eller kabelskåp beroende på effekt +LVX-ELN-0104,matas_fran,LVX-ELN-0101,klass,Nätanslutning via station eller kabelskåp beroende på effekt +LVX-ELN-0201,matas_fran,LVX-ELN-0101,klass,Servis via kabelskåpsnätet +LVX-ELN-0201,variant_av,LVX-ELN-0101,klass,Mätarutförande av skåpfamiljen (CDCM) +LVX-PRK-0101,star_pa,LVX-TRP-0203,klass, +LVX-PRK-0102,star_pa,LVX-TRP-0203,klass, +LVX-PRK-0103,star_pa,LVX-TRP-0203,klass, +LVX-TEL-0101,ansluts_med,LVX-TEL-0201,klass, +LVX-TEL-0102,star_pa,LVX-TRP-0203,klass, +LVX-TEL-0201,ansluts_med,LVX-TEL-0101,klass,Kanalisationen matar skåpen +LVX-TRP-0101,monteras_pa,LVX-TRP-0203,klass,Fotplatta bultas mot prefabricerat eller platsgjutet fundament +LVX-TRP-0101,matas_fran,LVX-ELN-0101,klass,Belysningsnätets kabelskåp +LVX-TRP-0102,monteras_pa,LVX-TRP-0101,klass,Topp- eller armmontage på belysningsstolpe +LVX-TRP-0102,ansluts_med,LVX-TRP-0204,klass,Fotocell eller smart nod i standardiserad sockel +LVX-TRP-0103,monteras_pa,LVX-TRP-0201,klass,portalvariant → LVX-TRP-0205 +LVX-TRP-0104,ansluts_med,LVX-TRP-0105,klass,Styrs av trafiksignalskåpets styrapparat +LVX-TRP-0104,monteras_pa,LVX-TRP-0202,klass, +LVX-TRP-0105,ansluts_med,LVX-TRP-0104,klass,Styr signalhuvudena +LVX-TRP-0105,matas_fran,LVX-ELN-0101,klass, +LVX-TRP-0107,star_pa,LVX-TRP-0203,klass, +LVX-TRP-0108,ansluts_med,LVX-ELN-0101,klass,Belysning/realtidsskylt matas från nätet +LVX-TRP-0201,star_pa,LVX-TRP-0203,klass, +LVX-TRP-0202,star_pa,LVX-TRP-0203,klass, +LVX-TRP-0202,ansluts_med,LVX-TRP-0104,klass,Bär signalhuvudena +LVX-TRP-0204,monteras_pa,LVX-TRP-0102,klass, +LVX-TRP-0205,star_pa,LVX-TRP-0203,klass, +LVX-TRP-0205,ansluts_med,LVX-TRP-0103,klass,Bär vägmärken/vägvisning +LVX-TRP-0207,star_pa,LVX-TRP-0203,klass,Eller direkt nedslagen +LVX-TRP-0208,forvaxlas_med,LVX-TRP-0107,klass, +LVX-TRP-0209,star_pa,LVX-TRP-0203,klass,Fundamentrad +LVX-TRP-0210,del_av,LVX-TRP-0107,klass,Avslutar räckeslinjen +LVX-VAT-0101,monteras_pa,LVX-VAT-0201,klass, +LVX-VAT-0101,del_av,LVX-VAT-0202,klass,Betäckningen är brunnens synliga toppkomponent +LVX-VAT-0101,forvaxlas_med,LVX-VAT-0102,klass,"Dagvattengaller — liknande placering, annan funktion" +LVX-VAT-0102,del_av,LVX-VAT-0203,klass, +LVX-VAT-0102,forvaxlas_med,LVX-VAT-0101,klass, +LVX-VAT-0201,ansluts_med,LVX-VAT-0101,klass,Ram + lock bildar betäckningen +LVX-VAT-0201,monteras_pa,LVX-VAT-0202,klass, +LVX-VAT-0202,ansluts_med,LVX-VAT-0201,klass,Kröns av ram + betäckning +LVX-VAT-0203,ansluts_med,LVX-VAT-0102,klass,Gallret är intaget +LVX-VAT-0204,forvaxlas_med,LVX-VAT-0101,klass, +LVX-P-0000001,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000001,ersatts_av,LVX-P-0000002,modell, +LVX-P-0000002,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000002,ersatter,LVX-P-0000001,modell, +LVX-P-0000002,ersatts_av,LVX-P-0000003,modell, +LVX-P-0000003,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000003,ersatter,LVX-P-0000002,modell, +LVX-P-0000004,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000005,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000005,ersatts_av,LVX-P-0000006,modell, +LVX-P-0000006,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000006,ersatter,LVX-P-0000005,modell, +LVX-P-0000007,tillhor_klass,LVX-TRP-0102,modell, +LVX-P-0000008,tillhor_klass,LVX-TRP-0103,modell, +LVX-P-0000009,tillhor_klass,LVX-TRP-0103,modell, +LVX-P-0000010,tillhor_klass,LVX-VAT-0101,modell, +LVX-P-0000011,tillhor_klass,LVX-VAT-0101,modell, +LVX-P-0000012,tillhor_klass,LVX-ELN-0101,modell, +LVX-P-0000013,tillhor_klass,LVX-VAT-0103,modell, +LVX-P-0000014,tillhor_klass,LVX-VAT-0103,modell, +LVX-P-0000015,tillhor_klass,LVX-VAT-0103,modell, +LVX-P-0000016,tillhor_klass,LVX-VAT-0103,modell, +LVX-P-0000017,tillhor_klass,LVX-VAT-0103,modell, +LVX-P-0000018,tillhor_klass,LVX-VAT-0101,modell, +LVX-P-0000019,tillhor_klass,LVX-VAT-0101,modell, +LVX-P-0000020,tillhor_klass,LVX-TRP-0107,modell, +LVX-P-0000021,tillhor_klass,LVX-TRP-0210,modell, +LVX-P-0000022,tillhor_klass,LVX-TRP-0105,modell, +LVX-P-0000023,tillhor_klass,LVX-ELN-0104,modell, +LVX-P-0000024,tillhor_klass,LVX-ELN-0104,modell, +LVX-P-0000025,tillhor_klass,LVX-ELN-0104,modell, +LVX-P-0000025,ersatts_av,LVX-P-0000026,modell, +LVX-P-0000026,tillhor_klass,LVX-ELN-0104,modell, +LVX-P-0000026,ersatter,LVX-P-0000025,modell, +LVX-P-0000027,tillhor_klass,LVX-VAT-0201,modell, diff --git a/projects/landvex/db/load_graph.cypher b/projects/landvex/db/load_graph.cypher new file mode 100644 index 000000000..5b49fefce --- /dev/null +++ b/projects/landvex/db/load_graph.cypher @@ -0,0 +1,36 @@ +// Landvex IOL — ladda grafen i Neo4j +// Kör: cat db/load_graph.cypher | cypher-shell -u neo4j -p landvex2024 + +CREATE CONSTRAINT lvx_id_unique IF NOT EXISTS +FOR (n:Objekt) REQUIRE n.lvx_id IS UNIQUE; + +:auto LOAD CSV WITH HEADERS FROM 'file:///noder.csv' AS row +CALL { + WITH row + CREATE (o:Objekt { + lvx_id: row.lvx_id, + posttyp: row.posttyp, + namn_sv: row.namn_sv, + namn_en: row.namn_en, + doman: row.doman, + tier: toInteger(row.tier), + verifieringsniva: row.verifieringsniva, + konfidens: toFloat(row.konfidens) + }) +} IN TRANSACTIONS OF 1000 ROWS; + +:auto LOAD CSV WITH HEADERS FROM 'file:///kanter.csv' AS row +CALL { + WITH row + MATCH (a:Objekt {lvx_id: row.subjekt}) + MATCH (b:Objekt {lvx_id: row.objekt}) + CREATE (a)-[r:RELATION { + predikat: row.predikat, + niva: row.niva, + beskrivning: row.beskrivning + }]->(b) +} IN TRANSACTIONS OF 1000 ROWS; + +// Index för snabb sökning +CREATE TEXT INDEX objekt_namn IF NOT EXISTS +FOR (o:Objekt) ON (o.namn_sv, o.namn_en); diff --git a/projects/landvex/db/load_to_neo4j.py b/projects/landvex/db/load_to_neo4j.py new file mode 100644 index 000000000..4ec460b12 --- /dev/null +++ b/projects/landvex/db/load_to_neo4j.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +""" +Ladda Landvex IOL in i Neo4j. +Använder neo4j-driver (pip install neo4j). +""" +import json +import csv +from pathlib import Path +from neo4j import GraphDatabase + +URI = "bolt://localhost:7687" +AUTH = ("neo4j", "quixzoom_neo4j_2026") +DATA_DIR = Path(__file__).parent.parent / "10-data" +DB_DIR = Path(__file__).parent + +class Neo4jLoader: + def __init__(self): + self.driver = GraphDatabase.driver(URI, auth=AUTH) + + def close(self): + self.driver.close() + + def load_noder(self, poster): + with self.driver.session() as session: + session.run("CREATE CONSTRAINT lvx_id_unique IF NOT EXISTS FOR (n:Objekt) REQUIRE n.lvx_id IS UNIQUE") + for p in poster: + prov = p.get("proveniens", {}) + session.run(""" + MERGE (o:Objekt {lvx_id: $lvx_id}) + SET o.posttyp = $posttyp, + o.namn_sv = $namn_sv, + o.namn_en = $namn_en, + o.doman = $doman, + o.tier = $tier, + o.verifieringsniva = $verifieringsniva, + o.konfidens = $konfidens + """, { + "lvx_id": p["lvx_id"], + "posttyp": p.get("posttyp", ""), + "namn_sv": p.get("namn", {}).get("sv", ""), + "namn_en": p.get("namn", {}).get("en", ""), + "doman": p.get("doman", ""), + "tier": p.get("tier", 0), + "verifieringsniva": prov.get("verifieringsniva", "obekraftad"), + "konfidens": prov.get("konfidens", 0), + }) + print(f"Laddade {len(poster)} noder") + + def load_kanter(self, kanter): + with self.driver.session() as session: + count = 0 + for k in kanter: + if k.get("objekt_typ") != "lvx": + continue + session.run(""" + MATCH (a:Objekt {lvx_id: $subjekt}) + MATCH (b:Objekt {lvx_id: $objekt}) + MERGE (a)-[r:RELATION {predikat: $predikat}]->(b) + SET r.niva = $niva, + r.beskrivning = $beskrivning + """, { + "subjekt": k["subjekt"], + "objekt": k["objekt"], + "predikat": k["predikat"], + "niva": k.get("niva", ""), + "beskrivning": k.get("beskrivning", ""), + }) + count += 1 + print(f"Laddade {count} kanter") + + def create_index(self): + with self.driver.session() as session: + session.run("CREATE TEXT INDEX objekt_namn_sv IF NOT EXISTS FOR (o:Objekt) ON (o.namn_sv)") + session.run("CREATE TEXT INDEX objekt_namn_en IF NOT EXISTS FOR (o:Objekt) ON (o.namn_en)") + print("Index skapade") + +def main(): + poster = [] + for fn in ("lvx-klassposter-master-v3.json", "lvx-produktmodeller-vag2.json", + "lvx-produktmodeller-vag3.json", "lvx-produktmodeller-auto.json"): + fp = DATA_DIR / fn + if not fp.exists(): continue + with open(fp, encoding="utf-8") as f: + poster.extend(json.load(f).get("poster", [])) + + with open(DATA_DIR / "lvx-graf-kanter-v3.json", encoding="utf-8") as f: + kanter = json.load(f)["kanter"] + + loader = Neo4jLoader() + try: + loader.load_noder(poster) + loader.load_kanter(kanter) + loader.create_index() + print("✅ Graf laddad i Neo4j") + finally: + loader.close() + +if __name__ == "__main__": + main() diff --git a/projects/landvex/db/noder.csv b/projects/landvex/db/noder.csv new file mode 100644 index 000000000..c62ee4c16 --- /dev/null +++ b/projects/landvex/db/noder.csv @@ -0,0 +1,65 @@ +lvx_id,posttyp,namn_sv,namn_en,doman,tier,verifieringsniva,konfidens +LVX-ELN-0101,objektklass,"Kabelskåp, lågspänning",LV distribution cabinet,ELN,1,kallbelagd,0.75 +LVX-ELN-0102,objektklass,Elstolpe,Utility pole,ELN,1,kallbelagd,0.8 +LVX-ELN-0103,objektklass,Nätstation/transformatorstation,Distribution substation / padmount transformer,ELN,1,kallbelagd,0.75 +LVX-ELN-0104,objektklass,Laddstation,EV charging station,ELN,1,kallbelagd,0.8 +LVX-ELN-0201,objektklass,Mätarskåp,Meter cabinet,ELN,2,kallbelagd,0.7 +LVX-PRK-0101,objektklass,Pollare,Bollard,PRK,1,kallbelagd,0.75 +LVX-PRK-0102,objektklass,Papperskorg,Litter bin,PRK,1,kallbelagd,0.7 +LVX-PRK-0103,objektklass,Cykelställ,Cycle stand,PRK,1,kallbelagd,0.75 +LVX-PRK-0201,objektklass,Parkbänk,Public bench,PRK,2,obekraftad,0.6 +LVX-TEL-0101,objektklass,Telekomskåp (fiber/koppar),Telecom street cabinet,TEL,1,kallbelagd,0.72 +LVX-TEL-0102,objektklass,Mobilmast/antennplats,Cell tower / antenna site,TEL,1,kallbelagd,0.78 +LVX-TEL-0201,objektklass,Kabelbrunn/kanalisation,Cable chamber / handhole,TEL,2,kallbelagd,0.78 +LVX-TRP-0101,objektklass,Belysningsstolpe,Lighting column,TRP,1,kallbelagd,0.78 +LVX-TRP-0102,objektklass,Vägbelysningsarmatur,Road lighting luminaire,TRP,1,kallbelagd,0.8 +LVX-TRP-0103,objektklass,Vägmärke,Road sign,TRP,1,kallbelagd,0.82 +LVX-TRP-0104,objektklass,"Trafiksignal, signalhuvud",Traffic signal head,TRP,1,kallbelagd,0.75 +LVX-TRP-0105,objektklass,Trafiksignalskåp/styrapparat,Traffic signal controller cabinet,TRP,1,kallbelagd,0.78 +LVX-TRP-0106,objektklass,Vägmarkering,Road marking,TRP,1,kallbelagd,0.75 +LVX-TRP-0107,objektklass,Vägräcke,Road safety barrier,TRP,1,kallbelagd,0.78 +LVX-TRP-0108,objektklass,Hållplatsväderskydd,Bus shelter,TRP,1,kallbelagd,0.72 +LVX-TRP-0201,objektklass,Skyltstolpe,Sign post,TRP,2,kallbelagd,0.78 +LVX-TRP-0202,objektklass,Signalstolpe & mastarm,Signal pole & mast arm,TRP,2,kallbelagd,0.72 +LVX-TRP-0203,objektklass,Fundament (stolpe/mast/skåp),Foundation,TRP,2,kallbelagd,0.72 +LVX-TRP-0204,objektklass,Styrnod belysning (NEMA/Zhaga),Lighting control node,TRP,2,kallbelagd,0.75 +LVX-TRP-0205,objektklass,Vägportal/skyltbrygga,Sign gantry,TRP,2,kallbelagd,0.72 +LVX-TRP-0206,objektklass,Kantsten,Kerb/curb,TRP,2,kallbelagd,0.75 +LVX-TRP-0207,objektklass,Reflexstolpe/kantstolpe,Delineator post,TRP,2,kallbelagd,0.75 +LVX-TRP-0208,objektklass,Broräcke,Bridge parapet,TRP,2,kallbelagd,0.72 +LVX-TRP-0209,objektklass,Bullerskydd,Noise barrier,TRP,2,kallbelagd,0.75 +LVX-TRP-0210,objektklass,Räckesterminal/ändavslut,Guardrail end terminal,TRP,2,kallbelagd,0.75 +LVX-VAT-0101,objektklass,Brunnsbetäckning,Manhole cover,VAT,1,kallbelagd,0.82 +LVX-VAT-0102,objektklass,Dagvattengaller,Gully grating,VAT,1,kallbelagd,0.78 +LVX-VAT-0103,objektklass,Brandpost/hydrant,Fire hydrant,VAT,1,kallbelagd,0.8 +LVX-VAT-0201,objektklass,Betäckningsram,Cover frame,VAT,2,kallbelagd,0.75 +LVX-VAT-0202,objektklass,Nedstigningsbrunn,Manhole/chamber,VAT,2,kallbelagd,0.72 +LVX-VAT-0203,objektklass,Dagvattenbrunn,Gully/catch basin,VAT,2,kallbelagd,0.72 +LVX-VAT-0204,objektklass,Ventil-/spindelbetäckning,Valve surface box,VAT,2,obekraftad,0.6 +LVX-P-0000001,produktmodell,GE Evolve LED Medium Cobrahead (ERMC),GE Evolve LED Medium Cobrahead (ERMC),TRP,,kallbelagd,0.75 +LVX-P-0000002,produktmodell,GE Evolve LED Scalable Cobrahead (ERS1–ERS4),GE Evolve LED Scalable Cobrahead (ERS1–ERS4),TRP,,kallbelagd,0.8 +LVX-P-0000003,produktmodell,GE Evolve LED Roadway ERL-serien (ERL1/ERLH/ERL2),GE Evolve LED Roadway ERL series,TRP,,kallbelagd,0.8 +LVX-P-0000004,produktmodell,AEL Autobahn-serien (ATB Micro/ATB0/ATB2 + ATBL/M/S/X),AEL Autobahn series,TRP,,kallbelagd,0.8 +LVX-P-0000005,produktmodell,Schréder Ampera (Mini/Midi/Maxi),Schréder Ampera,TRP,,kallbelagd,0.78 +LVX-P-0000006,produktmodell,Schréder Ampera EVO,Schréder Ampera EVO,TRP,,kallbelagd,0.78 +LVX-P-0000007,produktmodell,Philips Luma gen2 (BGP701),Philips Luma gen2 (BGP701),TRP,,kallbelagd,0.8 +LVX-P-0000008,produktmodell,"3M Diamond Grade DG3, serie 4000",3M Diamond Grade DG3 Series 4000,TRP,,kallbelagd,0.8 +LVX-P-0000009,produktmodell,"3M High Intensity Prismatic (HIP), serie 3930",3M High Intensity Prismatic Series 3930,TRP,,kallbelagd,0.7 +LVX-P-0000010,produktmodell,Saint-Gobain PAM PAMREX,Saint-Gobain PAM PAMREX,VAT,,kallbelagd,0.8 +LVX-P-0000011,produktmodell,Neenah R-1640/R-1642-serien,Neenah R-1640/R-1642 series,VAT,,kallbelagd,0.78 +LVX-P-0000012,produktmodell,ABB Kabeldon CDC-serien,ABB Kabeldon CDC series,ELN,,kallbelagd,0.78 +LVX-P-0000013,produktmodell,Mueller Super Centurion,Mueller Super Centurion,VAT,,kallbelagd,0.7 +LVX-P-0000014,produktmodell,M&H Valve Style 929,M&H Valve Style 929,VAT,,kallbelagd,0.72 +LVX-P-0000015,produktmodell,American AVK Series 27,American AVK Series 27,VAT,,kallbelagd,0.7 +LVX-P-0000016,produktmodell,American-Darling B-84-B (AMERICAN Flow Control),American-Darling B-84-B,VAT,,kallbelagd,0.82 +LVX-P-0000017,produktmodell,Waterous Pacer (AMERICAN Flow Control),Waterous Pacer,VAT,,kallbelagd,0.68 +LVX-P-0000018,produktmodell,Ulefos gatugjutgods (t.ex. A6-betäckning),Ulefos street castings,VAT,,kallbelagd,0.75 +LVX-P-0000019,produktmodell,EJ ERGO / ERGO XL,EJ ERGO / ERGO XL access assembly,VAT,,kallbelagd,0.78 +LVX-P-0000020,produktmodell,MGS — Midwest Guardrail System (generiskt),Midwest Guardrail System (MGS),TRP,,kallbelagd,0.8 +LVX-P-0000021,produktmodell,Valtir SoftStop-terminal,Valtir SoftStop end terminal,TRP,,kallbelagd,0.78 +LVX-P-0000022,produktmodell,Econolite Blue Series NEMA-skåp,Econolite Blue Series NEMA cabinets,TRP,,kallbelagd,0.72 +LVX-P-0000023,produktmodell,Kempower Satellite (distribuerat system),Kempower Satellite charging system,ELN,,kallbelagd,0.8 +LVX-P-0000024,produktmodell,Alpitronic Hypercharger (HYC-serien),Alpitronic Hypercharger HYC series,ELN,,kallbelagd,0.8 +LVX-P-0000025,produktmodell,Tesla Supercharger V3,Tesla Supercharger V3,ELN,,kallbelagd,0.75 +LVX-P-0000026,produktmodell,Tesla Supercharger V4,Tesla Supercharger V4,ELN,,kallbelagd,0.8 +LVX-P-0000027,produktmodell,EJ SELFLEVEL betäckningsram,EJ SELFLEVEL access frame,VAT,,kallbelagd,0.72 diff --git a/projects/landvex/docker-compose.yml b/projects/landvex/docker-compose.yml new file mode 100644 index 000000000..210d06ee5 --- /dev/null +++ b/projects/landvex/docker-compose.yml @@ -0,0 +1,22 @@ +services: + api: + build: ./api + ports: + - "8081:8080" + volumes: + - ./10-data:/app/data:ro + environment: + - DATA_DIR=/app/data + - NEO4J_URI=bolt://host.docker.internal:7687 + - NEO4J_USER=neo4j + - NEO4J_PASSWORD=quixzoom_neo4j_2026 + restart: unless-stopped + + ingest: + build: ./20-automation + volumes: + - ./10-data:/data + - ./20-automation/intag:/intag:ro + environment: + - OUT=/data + profiles: ["batch"] diff --git a/projects/landvex/scripts/export_csv.py b/projects/landvex/scripts/export_csv.py new file mode 100644 index 000000000..0e5c87b23 --- /dev/null +++ b/projects/landvex/scripts/export_csv.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +""" +Exportera master-data till CSV för Neo4j-import. +""" +import json +import csv +from pathlib import Path + +DATA = Path(__file__).parent.parent / "10-data" +DB = Path(__file__).parent.parent / "db" + +def main(): + poster = {} + for fn in ("lvx-klassposter-master-v3.json", "lvx-produktmodeller-vag2.json", + "lvx-produktmodeller-vag3.json", "lvx-produktmodeller-auto.json"): + fp = DATA / fn + if not fp.exists(): continue + with open(fp, encoding="utf-8") as f: + for p in json.load(f).get("poster", []): + poster[p["lvx_id"]] = p + + # Noder + with open(DB / "noder.csv", "w", newline="", encoding="utf-8") as f: + w = csv.DictWriter(f, fieldnames=["lvx_id","posttyp","namn_sv","namn_en","doman","tier","verifieringsniva","konfidens"]) + w.writeheader() + for p in poster.values(): + prov = p.get("proveniens", {}) + w.writerow({ + "lvx_id": p["lvx_id"], + "posttyp": p.get("posttyp", ""), + "namn_sv": p.get("namn", {}).get("sv", ""), + "namn_en": p.get("namn", {}).get("en", ""), + "doman": p.get("doman", ""), + "tier": p.get("tier", ""), + "verifieringsniva": prov.get("verifieringsniva", "obekraftad"), + "konfidens": prov.get("konfidens", 0), + }) + + # Kanter + with open(DATA / "lvx-graf-kanter-v3.json", encoding="utf-8") as f: + kanter = json.load(f)["kanter"] + + with open(DB / "kanter.csv", "w", newline="", encoding="utf-8") as f: + w = csv.DictWriter(f, fieldnames=["subjekt","predikat","objekt","niva","beskrivning"]) + w.writeheader() + for k in kanter: + if k["objekt_typ"] != "lvx": + continue # hoppa över textnoder i grafen + w.writerow({ + "subjekt": k["subjekt"], + "predikat": k["predikat"], + "objekt": k["objekt"], + "niva": k.get("niva", ""), + "beskrivning": k.get("beskrivning", ""), + }) + + print(f"Exporterat: {len(poster)} noder, {len(kanter)} kanter") + print(f" → {DB}/noder.csv") + print(f" → {DB}/kanter.csv") + +if __name__ == "__main__": + main() diff --git a/projects/landvex/scripts/test_api.py b/projects/landvex/scripts/test_api.py new file mode 100644 index 000000000..73c7e539a --- /dev/null +++ b/projects/landvex/scripts/test_api.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +""" +Integrationstester för Landvex Identify API. +""" +import requests +import sys + +BASE = "http://localhost:8081" + +def test_health(): + r = requests.get(f"{BASE}/health") + assert r.status_code == 200 + d = r.json() + assert d["status"] == "ok" + assert d["poster"] > 0 + print(f"✅ Health: {d['poster']} poster, {d['kanter']} kanter") + +def test_search(): + r = requests.get(f"{BASE}/v0/search", params={"q": "belysning"}) + assert r.status_code == 200 + d = r.json() + assert d["antal"] > 0 + print(f"✅ Search: {d['antal']} träffar för 'belysning'") + +def test_get_object(): + r = requests.get(f"{BASE}/v0/objects/LVX-TRP-0102") + assert r.status_code == 200 + d = r.json() + assert d["lvx_id"] == "LVX-TRP-0102" + assert d["posttyp"] == "objektklass" + assert "kallor" in d + print(f"✅ Object: {d['namn']['sv']} ({len(d['kallor'])} källor)") + +def test_succession(): + r = requests.get(f"{BASE}/v0/objects/LVX-TRP-0102/succession") + assert r.status_code == 200 + print("✅ Succession: OK") + +def test_standard(): + r = requests.get(f"{BASE}/v0/standards/EN%2012439-5/objects") + assert r.status_code == 200 + d = r.json() + print(f"✅ Standard: {d['antal']} objekt kopplade till EN 12439-5") + +def test_feedback(): + r = requests.post(f"{BASE}/v0/feedback", json={ + "kommentar": "Testbounty från integrationstest" + }) + assert r.status_code == 200 + d = r.json() + assert d["status"] == "skapad" + print(f"✅ Feedback: bounty {d['bounty_id']} skapad") + +def test_404(): + r = requests.get(f"{BASE}/v0/objects/LVX-XXX-9999") + assert r.status_code == 404 + print("✅ 404: OK") + +def main(): + print("Landvex API Integrationstester") + print("=" * 40) + try: + test_health() + test_search() + test_get_object() + test_succession() + test_standard() + test_feedback() + test_404() + print("=" * 40) + print("✅ Alla tester passerade!") + return 0 + except Exception as e: + print(f"❌ FAIL: {e}") + return 1 + +if __name__ == "__main__": + sys.exit(main())