docs: presentasjon av kunnskapsbase-prosessen (norsk, selvstendig HTML) [skip-docs]
15 slides som forklarer prosessen fra bestilling til kjoereklar kunnskapsbase, med veglysportefoeljen som gjennomgaaende eksempel. Bygget paa docs/kunnskapsbase-for-en-kjoring.md og shared/examples/veglys-fv-soer/. Selvstendig: inline SVG-illustrasjoner, ingen eksterne avhengigheter, ingen filnavn eller kommandoer i teksten - den forklarer prosessen, ikke repoet. To slides gaar ut over kildedokumentet, etter operatoerforespoersel: - «Hva er gjort foer?» - skillet mellom gjennomfoerte tiltak (hoerer i anleggsbeskrivelsen og kostnadsgrunnlaget) og tidligere vurderinger (hoerer i erfaringslaget). Foelger av designet: et allerede gjennomfoert tiltak som ikke staar i basen blir foreslaatt paa nytt, og besparelsen dobbelttelles usynlig. - Typiske tiltakstyper per prosjekttype. Veg- og tunnel-kolonnen speiler tiltakene som faktisk er bygget som eksempelbaser (LED-utskifting + adaptiv styring; trinnstyring av innkjoeringssone + portalskjerming). BRO-KOLONNEN ER IKKE FAGVERIFISERT - ingen bro-base finnes; den er en illustrasjon av formen, og det staar i bildeteksten. Spoersmaalslista utvidet fra 11 til 13 tilsvarende. Filnavnet er bevisst forskjellig fra docs/presentasjon-portfolio-optimiser.html, som eies av en annen sesjon og er uroert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DA6HAF8HFQxGYC2h6ypRQe
This commit is contained in:
parent
156312c32e
commit
270ec87345
1 changed files with 642 additions and 0 deletions
642
docs/presentasjon-kunnskapsbase-veglys.html
Normal file
642
docs/presentasjon-kunnskapsbase-veglys.html
Normal file
|
|
@ -0,0 +1,642 @@
|
|||
<!doctype html>
|
||||
<html lang="no">
|
||||
<meta charset="utf-8">
|
||||
<title>Kunnskapsbasen for én kjøring</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<style>
|
||||
:root { color-scheme: light; }
|
||||
* { box-sizing: border-box; }
|
||||
body { margin:0; background:#fff; color:#000;
|
||||
font:17px/1.6 -apple-system, "Segoe UI", system-ui, sans-serif; }
|
||||
.slide { display:none; min-height:100vh; padding:6vh 6vw 14vh; max-width:54rem; margin:0 auto; }
|
||||
.slide.on { display:block; }
|
||||
h1 { font-size:2.1rem; margin:0 0 .5em; line-height:1.2; }
|
||||
h2 { font-size:1.55rem; margin:0 0 .9em; line-height:1.3; }
|
||||
.kicker { color:#666; text-transform:uppercase; letter-spacing:.1em;
|
||||
font-size:.72rem; margin:0 0 1.6em; }
|
||||
p { margin:0 0 1em; }
|
||||
ol, ul { padding-left:1.4em; margin:0 0 1em; }
|
||||
li { margin:.5em 0; }
|
||||
.lead { font-size:1.15rem; color:#444; }
|
||||
.ok { font-weight:700; }
|
||||
.no { font-weight:700; }
|
||||
.note { border-left:3px solid #ccc; padding:.3em 0 .3em 1.1em;
|
||||
color:#444; margin:1.6em 0; font-size:.95rem; }
|
||||
figure { margin:1.8em 0; }
|
||||
figure svg { width:100%; height:auto; display:block; }
|
||||
figcaption { font-size:.82rem; color:#666; margin-top:.6em; text-align:center; }
|
||||
nav { position:fixed; bottom:0; left:0; right:0; padding:.7em 6vw;
|
||||
background:#fff; border-top:1px solid #ddd;
|
||||
display:flex; gap:1em; align-items:center; font-size:.85rem; }
|
||||
button { font:inherit; padding:.3em .9em; cursor:pointer; border:1px solid #bbb;
|
||||
background:#fff; color:#000; border-radius:4px; }
|
||||
#pos { color:#666; margin-left:auto; }
|
||||
/* SVG defaults */
|
||||
.d { fill:none; stroke:#000; stroke-width:2; }
|
||||
.dt { fill:#000; font:13px -apple-system,"Segoe UI",system-ui,sans-serif; }
|
||||
.dt-s { fill:#444; font:11px -apple-system,"Segoe UI",system-ui,sans-serif; }
|
||||
.dim { stroke:#bbb; }
|
||||
.dimt { fill:#999; font:12px -apple-system,"Segoe UI",system-ui,sans-serif; }
|
||||
.fill { fill:#000; }
|
||||
.hatch { fill:#eee; stroke:#000; stroke-width:2; }
|
||||
</style>
|
||||
|
||||
<section class="slide on">
|
||||
<p class="kicker">Kunnskapsbasen</p>
|
||||
<h1>Kunnskapsbasen for én kjøring</h1>
|
||||
<p class="lead">Hva må være på plass før systemet kan lete etter besparelser i et konkret
|
||||
prosjekt — og hvordan setter man det sammen?</p>
|
||||
<p>Gjennomgangen følger ett eksempel hele veien: en fylkeskommunal veglysportefølje som
|
||||
vurderer å bytte ut 2 500 gamle lyspunkter med LED.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 150" role="img" aria-label="Fire trinn: bestilling, kunnskapsbase, kjøring, dom">
|
||||
<rect class="d" x="8" y="45" width="150" height="60" rx="4"/>
|
||||
<text class="dt" x="83" y="72" text-anchor="middle">Bestilling</text>
|
||||
<text class="dt-s" x="83" y="90" text-anchor="middle">hva skal vurderes</text>
|
||||
|
||||
<rect class="d" x="192" y="45" width="150" height="60" rx="4"/>
|
||||
<text class="dt" x="267" y="72" text-anchor="middle">Kunnskapsbase</text>
|
||||
<text class="dt-s" x="267" y="90" text-anchor="middle">konteksten</text>
|
||||
|
||||
<rect class="d" x="376" y="45" width="150" height="60" rx="4"/>
|
||||
<text class="dt" x="451" y="72" text-anchor="middle">Kjøring</text>
|
||||
<text class="dt-s" x="451" y="90" text-anchor="middle">forslag + kontroll</text>
|
||||
|
||||
<rect class="d" x="560" y="45" width="150" height="60" rx="4"/>
|
||||
<text class="dt" x="635" y="72" text-anchor="middle">Dom</text>
|
||||
<text class="dt-s" x="635" y="90" text-anchor="middle">fagperson</text>
|
||||
|
||||
<path class="d" d="M158 75 h26"/><path class="fill" d="M192 75 l-10 -5 v10 z"/>
|
||||
<path class="d" d="M342 75 h26"/><path class="fill" d="M376 75 l-10 -5 v10 z"/>
|
||||
<path class="d" d="M526 75 h26"/><path class="fill" d="M560 75 l-10 -5 v10 z"/>
|
||||
|
||||
<path class="d dim" d="M635 105 v25 H267 v-25"/>
|
||||
<path class="fill" d="M267 105 l-5 10 h10 z" opacity=".45"/>
|
||||
<text class="dimt" x="451" y="145" text-anchor="middle">dommen gjør basen klokere til neste gang</text>
|
||||
</svg>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Premisset</p>
|
||||
<h2>Systemet navigerer. Det søker ikke.</h2>
|
||||
<p>Kunnskapsbasen er ikke en søkbar dokumentbunke. Den er en liten, kuratert samling som leses
|
||||
ved å følge lenker: systemet starter i innholdsfortegnelsen, følger lenkene derfra, og leser hver
|
||||
fil det når — helt, eller ikke i det hele tatt.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 250" role="img" aria-label="Innholdsfortegnelsen lenker til dokumenter; en fil uten lenke nås ikke, og en lenke ut av basen følges ikke">
|
||||
<rect class="d dim" x="8" y="8" width="500" height="234" rx="6" stroke-dasharray="6 5"/>
|
||||
<text class="dimt" x="20" y="28">kunnskapsbasen</text>
|
||||
|
||||
<rect class="d" x="40" y="95" width="130" height="56" rx="4"/>
|
||||
<text class="dt" x="105" y="118" text-anchor="middle">Innholds-</text>
|
||||
<text class="dt" x="105" y="136" text-anchor="middle">fortegnelse</text>
|
||||
|
||||
<rect class="d" x="290" y="46" width="150" height="42" rx="4"/>
|
||||
<text class="dt" x="365" y="72" text-anchor="middle">Anleggsbeskrivelse</text>
|
||||
<rect class="d" x="290" y="102" width="150" height="42" rx="4"/>
|
||||
<text class="dt" x="365" y="128" text-anchor="middle">Tiltaksnotat</text>
|
||||
<rect class="d" x="290" y="158" width="150" height="42" rx="4"/>
|
||||
<text class="dt" x="365" y="184" text-anchor="middle">Metodenotat</text>
|
||||
|
||||
<path class="d" d="M170 118 C 220 118, 230 67, 280 67"/><path class="fill" d="M290 67 l-11 -5 v10 z"/>
|
||||
<path class="d" d="M170 123 h110"/><path class="fill" d="M290 123 l-11 -5 v10 z"/>
|
||||
<path class="d" d="M170 128 C 220 128, 230 179, 280 179"/><path class="fill" d="M290 179 l-11 -5 v10 z"/>
|
||||
|
||||
<rect class="hatch" x="60" y="185" width="150" height="42" rx="4" stroke-dasharray="5 4"/>
|
||||
<text class="dimt" x="135" y="205" text-anchor="middle">notat uten lenke</text>
|
||||
<text class="dimt" x="135" y="220" text-anchor="middle">— finnes ikke</text>
|
||||
|
||||
<rect class="d dim" x="558" y="102" width="150" height="42" rx="4" stroke-dasharray="5 4"/>
|
||||
<text class="dimt" x="633" y="128" text-anchor="middle">nabobase</text>
|
||||
<path class="d dim" d="M440 123 h100" stroke-dasharray="6 5"/>
|
||||
<path class="d" d="M482 108 l26 30 M508 108 l-26 30" stroke-width="2.5"/>
|
||||
<text class="dimt" x="495" y="164" text-anchor="middle">følges aldri</text>
|
||||
</svg>
|
||||
<figcaption>Alt som lenkes leses i sin helhet. Det som ikke lenkes, eksisterer ikke.</figcaption>
|
||||
</figure>
|
||||
|
||||
<ul>
|
||||
<li><strong>Et dokument uten lenke fra innholdsfortegnelsen finnes ikke.</strong> Det hjelper
|
||||
ikke at det ligger i riktig mappe.</li>
|
||||
<li><strong>En lenke ut av basen følges aldri.</strong> Den hoppes stille over, uten
|
||||
feilmelding. Derfor kopieres fagstoff fysisk inn, det lenkes ikke til.</li>
|
||||
<li><strong>Mengde er ikke kvalitet.</strong> Ti sider støy koster like mye oppmerksomhet som
|
||||
ti sider substans.</li>
|
||||
</ul>
|
||||
<p>Én ting holdes alltid utenfor den løpende lesingen: tidligere ekspertdommer. De hentes for
|
||||
seg, koblet til det konkrete tiltaket de handler om, og legges foran når systemet skal forme sin
|
||||
hypotese.</p>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Kategoriene</p>
|
||||
<h2>Fire lag, som skiller seg på hva de følger</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 250" role="img" aria-label="Tre lag ligger inne i basen, kjøringslaget ligger ved siden av">
|
||||
<rect class="d dim" x="8" y="8" width="450" height="234" rx="6" stroke-dasharray="6 5"/>
|
||||
<text class="dimt" x="20" y="28">inne i kunnskapsbasen — varig</text>
|
||||
|
||||
<rect class="d" x="36" y="44" width="394" height="56" rx="4"/>
|
||||
<text class="dt" x="52" y="70">Prosjektlaget</text>
|
||||
<text class="dt-s" x="52" y="88">følger anlegget · prosjekteier og drift</text>
|
||||
|
||||
<rect class="d" x="36" y="110" width="394" height="56" rx="4"/>
|
||||
<text class="dt" x="52" y="136">Faglaget</text>
|
||||
<text class="dt-s" x="52" y="154">følger fagområdet · fagmiljøet</text>
|
||||
|
||||
<rect class="d" x="36" y="176" width="394" height="56" rx="4"/>
|
||||
<text class="dt" x="52" y="202">Erfaringslaget</text>
|
||||
<text class="dt-s" x="52" y="220">følger organisasjonen over tid · fagekspertene</text>
|
||||
|
||||
<rect class="d" x="500" y="110" width="208" height="56" rx="4" stroke-dasharray="7 4"/>
|
||||
<text class="dt" x="516" y="136">Kjøringslaget</text>
|
||||
<text class="dt-s" x="516" y="154">følger denne ene bestillingen</text>
|
||||
<text class="dimt" x="604" y="188" text-anchor="middle">ved siden av — lagres aldri</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p><strong>Prosjektlaget</strong> følger anlegget: hva det består av, hvilke tall det har, hvilke
|
||||
rammer som gjelder. <strong>Faglaget</strong> følger fagområdet, og er i praksis det samme på
|
||||
tvers av prosjekter i samme fag. <strong>Erfaringslaget</strong> er de tidligere dommene, og det
|
||||
er dette laget som gjør systemet klokere fra kjøring til kjøring.</p>
|
||||
<div class="note">Det er én kunnskapsbase per prosjekt. Kjøringslaget ligger utenfor — det er en
|
||||
instruks for én kjøring, ikke kunnskap. En portefølje er flere baser.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Avgjørelsene</p>
|
||||
<h2>Tretten spørsmål til fagpersonen</h2>
|
||||
<p>Hvert spørsmål avgjør én konkret del av basen. De fire første avgjør om kjøringen i det hele
|
||||
tatt kan starte.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 90" role="img" aria-label="De fire første spørsmålene er blokkerende, de sju neste former innholdet">
|
||||
<rect class="d" x="8" y="20" width="262" height="46" rx="4" stroke-width="3"/>
|
||||
<text class="dt" x="139" y="40" text-anchor="middle" font-weight="700">Spørsmål 1–4</text>
|
||||
<text class="dt-s" x="139" y="58" text-anchor="middle">uten svar: ingen kjøring</text>
|
||||
|
||||
<rect class="d dim" x="298" y="20" width="414" height="46" rx="4"/>
|
||||
<text class="dt" x="505" y="40" text-anchor="middle">Spørsmål 5–13</text>
|
||||
<text class="dt-s" x="505" y="58" text-anchor="middle">former kvaliteten på det som kommer ut</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<ol>
|
||||
<li>Hvilket prosjekt eller anlegg gjelder det, og hva skal det hete?</li>
|
||||
<li>Hvilke kostnadslinjer kan tiltakene komme til å treffe — og har vi faktiske tall for dem?</li>
|
||||
<li>Hvilket tiltak er «det ene» vi regner på?</li>
|
||||
<li>Hvilke harde rammer gjelder — hva kan ikke fravikes?</li>
|
||||
<li><strong>Hva er allerede gjennomført på anlegget?</strong></li>
|
||||
<li><strong>Hvilke tiltakstyper er typiske for denne prosjekttypen?</strong></li>
|
||||
<li>Hvilke tilnærminger ønsker vi vurdert?</li>
|
||||
<li>Hvordan skal effekten måles i etterkant?</li>
|
||||
<li>Hva finnes av litteratur om avviket mellom modellert og faktisk effekt?</li>
|
||||
<li>Finnes det tidligere erfaring vi kan starte med?</li>
|
||||
<li>Skal kjøringen avgrenses til én kostnadsakse?</li>
|
||||
<li>Skal noen datakilder leses maskinelt, eller er alt håndkuratert?</li>
|
||||
<li>Hvem avgir dommen etterpå?</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Historikken</p>
|
||||
<h2>«Hva er gjort før?» er to ulike spørsmål</h2>
|
||||
<p>Begge må besvares, og de havner på hvert sitt sted i basen. Blandes de, blir svaret feil på
|
||||
en måte som er vanskelig å oppdage.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 215" role="img" aria-label="Gjennomførte tiltak hører i anleggsbeskrivelsen; tidligere vurderinger hører i erfaringslaget">
|
||||
<rect class="d" x="8" y="24" width="340" height="150" rx="4"/>
|
||||
<text class="dt" x="178" y="50" text-anchor="middle" font-weight="700">Gjennomførte tiltak</text>
|
||||
<text class="dt-s" x="178" y="72" text-anchor="middle">hva som faktisk er bygget om</text>
|
||||
<text class="dt-s" x="178" y="90" text-anchor="middle">når, og på hvor mye av anlegget</text>
|
||||
<path class="d dim" d="M40 106 h276"/>
|
||||
<text class="dt-s" x="178" y="130" text-anchor="middle">hører i anleggsbeskrivelsen</text>
|
||||
<text class="dt-s" x="178" y="150" text-anchor="middle">og i kostnadsgrunnlaget</text>
|
||||
|
||||
<rect class="d" x="372" y="24" width="340" height="150" rx="4"/>
|
||||
<text class="dt" x="542" y="50" text-anchor="middle" font-weight="700">Tidligere vurderinger</text>
|
||||
<text class="dt-s" x="542" y="72" text-anchor="middle">hva fagfolk mente om et forslag</text>
|
||||
<text class="dt-s" x="542" y="90" text-anchor="middle">og hvor mye som ble realisert</text>
|
||||
<path class="d dim" d="M404 106 h276"/>
|
||||
<text class="dt-s" x="542" y="130" text-anchor="middle">hører i erfaringslaget</text>
|
||||
<text class="dt-s" x="542" y="150" text-anchor="middle">som tidligere dommer</text>
|
||||
|
||||
<text class="dimt" x="360" y="200" text-anchor="middle">to ulike spørsmål — to ulike steder i basen</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p><strong>Gjennomførte tiltak må inn, ellers foreslås de på nytt.</strong> Systemet vet ingenting
|
||||
om anlegget utover det basen sier. Er 3 000 av 9 500 lyspunkter allerede byttet til LED, og det
|
||||
ikke står noe sted, vil et forslag om «å bytte til LED» framstå som friskt — og besparelsen det
|
||||
lover er allerede tatt ut. Det er dobbelttelling, og den er usynlig i resultatet.</p>
|
||||
<p><strong>Kostnadsgrunnlaget må vise dagens situasjon</strong>, ikke situasjonen før forrige
|
||||
tiltak. Ellers avstemmes nye forslag mot et forbruk anlegget ikke lenger har.</p>
|
||||
<div class="note"><strong>Tommelfingerregel:</strong> alt som endrer hva anlegget <em>er</em>,
|
||||
hører i anleggsbeskrivelsen. Alt som endrer hva vi <em>tror om</em> et tiltak, hører i
|
||||
erfaringslaget.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Tiltakstypene</p>
|
||||
<h2>Hva kan man typisk optimalisere — per prosjekttype?</h2>
|
||||
<p>Fagpersonen trenger ikke finne opp kandidatene fra bunnen. For hver prosjekttype finnes det et
|
||||
ganske stabilt sett av tiltakstyper, og jobben er å avgjøre hvilke som er aktuelle for
|
||||
<em>dette</em> anlegget.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 260" role="img" aria-label="Typiske tiltakstyper for veg, tunnel og bro">
|
||||
<rect class="d" x="8" y="14" width="230" height="230" rx="4"/>
|
||||
<text class="dt" x="123" y="44" text-anchor="middle" font-weight="700">VEG</text>
|
||||
<path class="d dim" d="M28 56 h190"/>
|
||||
<text class="dt-s" x="28" y="82">Belysning: LED, dimming,</text>
|
||||
<text class="dt-s" x="28" y="99">nattreduksjon</text>
|
||||
<text class="dt-s" x="28" y="126">Dekke: levetid, dekketype,</text>
|
||||
<text class="dt-s" x="28" y="143">reasfalteringsintervall</text>
|
||||
<text class="dt-s" x="28" y="170">Vinterdrift: saltstrategi,</text>
|
||||
<text class="dt-s" x="28" y="187">rodeinndeling</text>
|
||||
<text class="dt-s" x="28" y="214">Utstyr: tilstandsbasert</text>
|
||||
<text class="dt-s" x="28" y="231">framfor intervallbasert</text>
|
||||
|
||||
<rect class="d" x="246" y="14" width="230" height="230" rx="4"/>
|
||||
<text class="dt" x="361" y="44" text-anchor="middle" font-weight="700">TUNNEL</text>
|
||||
<path class="d dim" d="M266 56 h190"/>
|
||||
<text class="dt-s" x="266" y="82">Belysning: trinnstyring av</text>
|
||||
<text class="dt-s" x="266" y="99">innkjøringssone, LED</text>
|
||||
<text class="dt-s" x="266" y="126">Portalskjerming: passiv</text>
|
||||
<text class="dt-s" x="266" y="143">reduksjon av lyskrav</text>
|
||||
<text class="dt-s" x="266" y="170">Ventilasjon: behovsstyring</text>
|
||||
<text class="dt-s" x="266" y="187">på målt luftkvalitet</text>
|
||||
<text class="dt-s" x="266" y="214">Stengninger: samordning</text>
|
||||
<text class="dt-s" x="266" y="231">av vedlikehold</text>
|
||||
|
||||
<rect class="d dim" x="484" y="14" width="228" height="230" rx="4" stroke-dasharray="7 4"/>
|
||||
<text class="dt" x="598" y="44" text-anchor="middle" font-weight="700">BRO</text>
|
||||
<path class="d dim" d="M504 56 h188"/>
|
||||
<text class="dt-s" x="504" y="82">Inspeksjonsregime:</text>
|
||||
<text class="dt-s" x="504" y="99">tilstandsbasert</text>
|
||||
<text class="dt-s" x="504" y="126">Korrosjonsvern: syklus</text>
|
||||
<text class="dt-s" x="504" y="143">og systemvalg</text>
|
||||
<text class="dt-s" x="504" y="170">Fuger og lager:</text>
|
||||
<text class="dt-s" x="504" y="187">utskiftingsstrategi</text>
|
||||
<text class="dt-s" x="504" y="214">Levetidsforlengelse</text>
|
||||
<text class="dt-s" x="504" y="231">framfor utskifting</text>
|
||||
</svg>
|
||||
<figcaption>Veg og tunnel er bygget og kjørt som eksempelbaser. Bro-kolonnen er en illustrasjon
|
||||
av formen — den er ikke fagverifisert, og må erstattes av fagmiljøets egen liste.</figcaption>
|
||||
</figure>
|
||||
|
||||
<p><strong>Det som avgjør om en tiltakstype i det hele tatt kan vurderes, er om den lar seg
|
||||
uttrykke som en kostnadslinje</strong> — en mengde ganger en enhetspris. Et tiltak som ikke kan
|
||||
det, kan systemet foreslå, men ikke kontrollere. Da er svaret verdt akkurat like mye som et
|
||||
vanlig godt råd.</p>
|
||||
<div class="note">Derfor er spørsmål 2 — «har vi faktiske tall for kostnadslinjene?» — det som i
|
||||
praksis avgjør hvilke tiltakstyper som er i spill for et gitt anlegg.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Innholdet</p>
|
||||
<h2>Seks typer tekst, og to sett med tall</h2>
|
||||
<p><strong>Innholdsfortegnelsen</strong> er inngangen. Teksten i den er det aller første systemet
|
||||
leser, ordrett, og lenkene bestemmer hva som ellers blir lest. Uten den kan kjøringen ikke starte.</p>
|
||||
<p><strong>Anleggsbeskrivelsen</strong> forteller hva anlegget er, hvilke tall det består av, og
|
||||
hvilket gulv ingen besparelse kan gå under.</p>
|
||||
<p><strong>Tiltaksnotatene</strong> beskriver kandidatene med parametere: modellert besparelse,
|
||||
hva som er usikkert, hva som er utledet. Det er disse forslagene systemet forbedrer, i stedet for
|
||||
å finne opp sine egne fra bunnen.</p>
|
||||
<p><strong>Metodenotatet</strong> forklarer hvordan effekten skal måles, og hvilke metoder som er
|
||||
stengt for akkurat dette anlegget.</p>
|
||||
<p><strong>Kildenotatet</strong> er verifisert litteratur med årstall og opphav, der eget
|
||||
materiale er tydelig skilt fra lånt.</p>
|
||||
<p><strong>Tidligere dommer</strong> er erfaringslaget: en beslutning, en begrunnelse, og hvor
|
||||
stor andel av den modellerte besparelsen som faktisk pleier å bli realisert.</p>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Innholdet</p>
|
||||
<h2>De to tallfilene</h2>
|
||||
<p>Ved siden av teksten ligger to sett med tall, og de har helt ulike jobber.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 190" role="img" aria-label="Den regnede kandidaten er forslaget, kostnadsgrunnlaget er fasiten det avstemmes mot">
|
||||
<rect class="d" x="8" y="30" width="300" height="110" rx="4"/>
|
||||
<text class="dt" x="158" y="58" text-anchor="middle" font-weight="700">Den regnede kandidaten</text>
|
||||
<text class="dt-s" x="158" y="80" text-anchor="middle">hvilke kostnadslinjer tiltaket virker på</text>
|
||||
<text class="dt-s" x="158" y="98" text-anchor="middle">hvor mye det skal spare</text>
|
||||
<text class="dt-s" x="158" y="116" text-anchor="middle">hvor stort usikkerhetsbåndet er</text>
|
||||
<text class="dt-s" x="158" y="158" text-anchor="middle" font-weight="700">mangler den: kjøringen nektes</text>
|
||||
|
||||
<rect class="d" x="412" y="30" width="300" height="110" rx="4"/>
|
||||
<text class="dt" x="562" y="58" text-anchor="middle" font-weight="700">Kostnadsgrunnlaget</text>
|
||||
<text class="dt-s" x="562" y="80" text-anchor="middle">prosjektets faktiske kostnadslinjer</text>
|
||||
<text class="dt-s" x="562" y="98" text-anchor="middle">mengde og enhetspris per linje</text>
|
||||
<text class="dt-s" x="562" y="116" text-anchor="middle">fasiten forslaget avstemmes mot</text>
|
||||
<text class="dt-s" x="562" y="158" text-anchor="middle" font-weight="700">mangler det: kjøringen går likevel</text>
|
||||
|
||||
<path class="d" d="M308 85 h94"/><path class="fill" d="M412 85 l-11 -5 v10 z"/>
|
||||
<text class="dt-s" x="360" y="76" text-anchor="middle">avstemmes</text>
|
||||
<text class="dt-s" x="360" y="106" text-anchor="middle">mot</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<div class="note">Prosjektnavnet må være identisk på kommandolinjen og i begge tallsettene.
|
||||
Er det ikke det, nektes kjøringen — bevisst, fordi et forslag som blandes mellom to prosjekter er
|
||||
verre enn ingen kjøring.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Den skarpeste mangelen</p>
|
||||
<h2>Uten kostnadsgrunnlag dømmer kontrollen bare mot forslagets egne tall</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 250" role="img" aria-label="Med kostnadsgrunnlag avvises et oppdiktet forslag i steg 0; uten det passerer det hele veien">
|
||||
<text class="dt" x="8" y="22" font-weight="700">MED kostnadsgrunnlag</text>
|
||||
<rect class="d" x="8" y="34" width="120" height="46" rx="4"/>
|
||||
<text class="dt" x="68" y="54" text-anchor="middle">Forslag</text>
|
||||
<text class="dt-s" x="68" y="70" text-anchor="middle">oppdiktet linje</text>
|
||||
<path class="d" d="M128 57 h34"/><path class="fill" d="M172 57 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="172" y="34" width="150" height="46" rx="4" stroke-width="3"/>
|
||||
<text class="dt" x="247" y="54" text-anchor="middle" font-weight="700">Steg 0</text>
|
||||
<text class="dt-s" x="247" y="70" text-anchor="middle">avstemming mot ekte tall</text>
|
||||
<path class="d" d="M322 57 h34"/><path class="fill" d="M366 57 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="366" y="34" width="130" height="46" rx="4"/>
|
||||
<text class="dt" x="431" y="61" text-anchor="middle" font-weight="700">AVVIST</text>
|
||||
<text class="dt-s" x="516" y="61">stanser før noe annet regnes</text>
|
||||
|
||||
<path class="d dim" d="M8 108 h704" stroke-dasharray="4 4"/>
|
||||
|
||||
<text class="dt" x="8" y="140" font-weight="700">UTEN kostnadsgrunnlag</text>
|
||||
<rect class="d" x="8" y="152" width="120" height="46" rx="4"/>
|
||||
<text class="dt" x="68" y="172" text-anchor="middle">Forslag</text>
|
||||
<text class="dt-s" x="68" y="188" text-anchor="middle">oppdiktet linje</text>
|
||||
<path class="d" d="M128 175 h34"/><path class="fill" d="M172 175 l-11 -5 v10 z"/>
|
||||
<rect class="d dim" x="172" y="152" width="150" height="46" rx="4" stroke-dasharray="6 5"/>
|
||||
<text class="dimt" x="247" y="172" text-anchor="middle">Steg 0</text>
|
||||
<text class="dimt" x="247" y="188" text-anchor="middle">hoppes over</text>
|
||||
<path class="d" d="M322 175 h34"/><path class="fill" d="M366 175 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="366" y="152" width="130" height="46" rx="4"/>
|
||||
<text class="dt" x="431" y="172" text-anchor="middle">Øvrige kontroller</text>
|
||||
<text class="dt-s" x="431" y="188" text-anchor="middle">forslagets egne tall</text>
|
||||
<path class="d" d="M496 175 h34"/><path class="fill" d="M540 175 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="540" y="152" width="172" height="46" rx="4" stroke-width="3"/>
|
||||
<text class="dt" x="626" y="179" text-anchor="middle" font-weight="700">GODKJENT</text>
|
||||
<text class="dimt" x="626" y="222" text-anchor="middle">og kjøringen ser helt normal ut</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p>Med kostnadsgrunnlaget på plass avvises to ting: en kostnadskode prosjektet ikke har, og en
|
||||
ekte kode der mengden eller prisen ligger mer enn fem prosent unna det virkelige tallet.</p>
|
||||
<p>Uten det steget resonnerer hele kontrollen bare om tall forslaget selv oppga. Et forslag som
|
||||
er internt konsistent, men bygget på oppdiktede kostnadslinjer, passerer da hele veien.</p>
|
||||
<div class="note"><strong>Anbefaling:</strong> skaff tallene. Kan de ikke skaffes, skriv inn i
|
||||
bestillingen at kjøringen er uforankret — så ingen leser et godkjent-resultat som mer enn det er.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Eksempelet</p>
|
||||
<h2>Hvorfor veglys er et godt eksempel</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 175" role="img" aria-label="I et kontorbygg kan avviket måles; i veglys uten måler er det strukturelt usynlig">
|
||||
<text class="dt" x="8" y="22" font-weight="700">Kontorbygg</text>
|
||||
<rect class="d" x="8" y="34" width="140" height="42" rx="4"/>
|
||||
<text class="dt" x="78" y="60" text-anchor="middle">Forhåndsberegnet</text>
|
||||
<path class="d" d="M148 55 h30"/><path class="fill" d="M188 55 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="188" y="34" width="140" height="42" rx="4"/>
|
||||
<text class="dt" x="258" y="60" text-anchor="middle">Målt i etterkant</text>
|
||||
<path class="d" d="M328 55 h30"/><path class="fill" d="M368 55 l-11 -5 v10 z"/>
|
||||
<text class="dt" x="380" y="60">avviket kan ses — hvis noen ser etter</text>
|
||||
|
||||
<text class="dt" x="8" y="122" font-weight="700">Veglys uten måler</text>
|
||||
<rect class="d" x="8" y="134" width="140" height="42" rx="4"/>
|
||||
<text class="dt" x="78" y="160" text-anchor="middle">Forhåndsberegnet</text>
|
||||
<path class="d dim" d="M148 155 h30" stroke-dasharray="5 4"/>
|
||||
<rect class="d dim" x="188" y="134" width="140" height="42" rx="4" stroke-dasharray="6 5"/>
|
||||
<text class="dimt" x="258" y="160" text-anchor="middle">ingen måling</text>
|
||||
<path class="d" d="M245 140 l26 30 M271 140 l-26 30" stroke-width="2.5"/>
|
||||
<text class="dt" x="380" y="160">avviket er strukturelt usynlig</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p>I et kontorbygg er avviket mellom modellert og realisert besparelse målbart, men sjelden målt.
|
||||
I norsk veglys er det strengere: mange anlegg mangler måling helt, eller avregnes på estimerte
|
||||
verdier. Uten måledata finnes det ingen etterprøving å sammenligne forhåndsberegningen med.</p>
|
||||
<p>Realiseringsgraden er altså ikke ukjent fordi ingen har regnet på den — den er strukturelt
|
||||
usynlig. Det gjør domenet til et godt utgangspunkt for læringssløyfa: den eneste kilden til
|
||||
korreksjon er akkumulert ekspertvurdering, og det er nøyaktig det erfaringslaget bærer.</p>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Eksempelet</p>
|
||||
<h2>Spørsmålene, besvart for veglysporteføljen</h2>
|
||||
<p><strong>Anlegget:</strong> en fylkeskommunal veglysportefølje på 9 500 lyspunkter langs
|
||||
fylkesveg.</p>
|
||||
<p><strong>Kostnadslinjen:</strong> én eneste — porteføljens årlige energikostnad. Den er regnet
|
||||
som 9 500 punkter à 114 watt, i 4 050 brenntimer i året, altså 4 386 150 kilowattimer, til én
|
||||
krone per kilowattime.</p>
|
||||
<p><strong>Investeringskostnaden er bevisst utelatt</strong>, fordi ingen kilde i materialet gir
|
||||
en pris per lyspunkt. En utledet verdi hører ikke hjemme i et kostnadsgrunnlag.</p>
|
||||
<p><strong>Tiltaket som regnes på:</strong> LED-utskifting av de 2 500 eldste punktene, fra 114
|
||||
til 70 watt. Det gir en modellert besparelse på 445 500 kroner i året.</p>
|
||||
<p><strong>Rammene:</strong> lystekniske minstekrav som ikke kan fravikes, og at nattslukking
|
||||
ikke kan forutsettes.</p>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Eksempelet</p>
|
||||
<h2>De to tallsettene er skrevet fra samme regnestykke</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 200" role="img" aria-label="Ett regnestykke skriver begge tallsettene, så toleransen er lukket ved konstruksjon">
|
||||
<rect class="d" x="150" y="14" width="420" height="52" rx="4" stroke-width="3"/>
|
||||
<text class="dt" x="360" y="36" text-anchor="middle" font-weight="700">Ett regnestykke</text>
|
||||
<text class="dt-s" x="360" y="55" text-anchor="middle">9 500 punkter · 114 W · 4 050 timer = 4 386 150 kWh à 1 krone</text>
|
||||
|
||||
<path class="d" d="M280 66 C 280 96, 190 96, 190 118"/><path class="fill" d="M190 128 l-5 -11 h10 z"/>
|
||||
<path class="d" d="M440 66 C 440 96, 530 96, 530 118"/><path class="fill" d="M530 128 l-5 -11 h10 z"/>
|
||||
|
||||
<rect class="d" x="60" y="128" width="260" height="56" rx="4"/>
|
||||
<text class="dt" x="190" y="152" text-anchor="middle">Kostnadsgrunnlaget</text>
|
||||
<text class="dt-s" x="190" y="171" text-anchor="middle">mengde og enhetspris</text>
|
||||
|
||||
<rect class="d" x="400" y="128" width="260" height="56" rx="4"/>
|
||||
<text class="dt" x="530" y="152" text-anchor="middle">Den regnede kandidaten</text>
|
||||
<text class="dt-s" x="530" y="171" text-anchor="middle">samme linje · besparelse 445 500</text>
|
||||
</svg>
|
||||
<figcaption>Ikke avstemt i etterkant — skrevet ut fra ett og samme regnestykke.</figcaption>
|
||||
</figure>
|
||||
|
||||
<p>Femprosent-toleransen er altså lukket ved konstruksjon. Det er den disiplinen som gjør at et
|
||||
avvik senere faktisk betyr noe — hadde tallene vært skrevet inn hver for seg, ville et lite avvik
|
||||
bare vært slurv, ikke et signal.</p>
|
||||
<div class="note">Ett valg er verdt å merke seg: besparelsen måles mot <em>hele</em> porteføljens
|
||||
energikostnad, ikke mot forbruket til de 2 500 punktene alene. Målt mot bare de berørte punktene
|
||||
ville det riktige forslaget blitt avvist som urealistisk stort.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Eksempelet</p>
|
||||
<h2>Erfaringen: godkjent, med korreksjon</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 175" role="img" aria-label="Modellert 445 500 kroner korrigeres til 81 prosent, altså 360 855 kroner">
|
||||
<text class="dt" x="8" y="40">Modellert</text>
|
||||
<rect class="d" x="130" y="22" width="520" height="34"/>
|
||||
<text class="dt" x="390" y="45" text-anchor="middle" font-weight="700">445 500 kr/år</text>
|
||||
|
||||
<text class="dt" x="8" y="110">Forventet faktisk</text>
|
||||
<rect class="hatch" x="130" y="92" width="421" height="34"/>
|
||||
<text class="dt" x="340" y="115" text-anchor="middle" font-weight="700">360 855 kr/år</text>
|
||||
<rect class="d dim" x="551" y="92" width="99" height="34" stroke-dasharray="5 4"/>
|
||||
<text class="dimt" x="600" y="114" text-anchor="middle">avvik</text>
|
||||
|
||||
<path class="d dim" d="M130 140 h421"/>
|
||||
<text class="dt-s" x="340" y="160" text-anchor="middle">81 % av modellert</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p>Regnestykket er teknisk riktig ut fra parameterne, men brenntimene er et nasjonalt
|
||||
tabellanslag — ikke en målt kurve for dette anlegget. Og siden anlegget mangler måler, kan
|
||||
avviket aldri oppdages i drift.</p>
|
||||
<div class="note"><strong>Ærlig om grunnlaget:</strong> de 81 prosentene er lånt fra amerikansk
|
||||
programlitteratur, ikke fra norsk måling — og det står uttrykkelig i dommen. Det finnes ingen
|
||||
norsk etterprøving for veglys. I drift erstattes en slik startdom av ekte menneskelige
|
||||
vurderinger.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Kjøreklar</p>
|
||||
<h2>Sjekken før man kjører</h2>
|
||||
<p>Det finnes ingen egen «valider basen»-knapp. Det nærmeste er en tørrkjøring: systemet går hele
|
||||
veien fram til det første kallet mot språkmodellen, og stopper der.</p>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 130" role="img" aria-label="Tørrkjøringen stopper rett før det første betalte kallet">
|
||||
<rect class="d" x="8" y="34" width="130" height="46" rx="4"/>
|
||||
<text class="dt" x="73" y="61" text-anchor="middle">Base åpnes</text>
|
||||
<path class="d" d="M138 57 h24"/><path class="fill" d="M170 57 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="170" y="34" width="150" height="46" rx="4"/>
|
||||
<text class="dt" x="245" y="54" text-anchor="middle">Alt kontrolleres</text>
|
||||
<text class="dt-s" x="245" y="70" text-anchor="middle">navn, tak, tilgang</text>
|
||||
<path class="d" d="M320 57 h24"/><path class="fill" d="M352 57 l-11 -5 v10 z"/>
|
||||
|
||||
<path class="d" d="M392 14 v100" stroke-width="3" stroke-dasharray="8 6"/>
|
||||
<text class="dt" x="392" y="128" text-anchor="middle" font-weight="700">stopp</text>
|
||||
|
||||
<rect class="d dim" x="430" y="34" width="150" height="46" rx="4" stroke-dasharray="6 5"/>
|
||||
<text class="dimt" x="505" y="61" text-anchor="middle">Første modellkall</text>
|
||||
<rect class="d dim" x="592" y="34" width="120" height="46" rx="4" stroke-dasharray="6 5"/>
|
||||
<text class="dimt" x="652" y="61" text-anchor="middle">Resten</text>
|
||||
<text class="dt-s" x="571" y="18" text-anchor="middle">skjer ikke — koster ingenting</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p><span class="ok">Det beviser at</span> basen åpner, at den regnede kandidaten finnes og bærer
|
||||
riktig prosjektnavn, at bestillingen er gyldig, at modellene er oppløst, at takene er satt, og at
|
||||
ingen ekstern tjeneste vil bli kontaktet.</p>
|
||||
<p><span class="no">Det beviser ikke at</span> lenkene når alle dokumentene — en brutt lenke
|
||||
hoppes stille over — og heller ikke at innholdet er godt.</p>
|
||||
<p>Tørrkjøringen er billig nok til å kjøres hver gang basen endres.</p>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Sløyfa</p>
|
||||
<h2>Etter kjøringen blir basen én versjon klokere</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 240" role="img" aria-label="Kjøring gir artefakt, fagperson gir dom i innboks, neste kjøring leser den, godkjente dommer løftes inn i basen">
|
||||
<rect class="d" x="30" y="30" width="150" height="50" rx="4"/>
|
||||
<text class="dt" x="105" y="60" text-anchor="middle">Kjøring</text>
|
||||
<path class="d" d="M180 55 h64"/><path class="fill" d="M254 55 l-11 -5 v10 z"/>
|
||||
|
||||
<rect class="d" x="254" y="30" width="180" height="50" rx="4"/>
|
||||
<text class="dt" x="344" y="52" text-anchor="middle">Artefakt</text>
|
||||
<text class="dt-s" x="344" y="70" text-anchor="middle">forslag, tall, kontrollens dom</text>
|
||||
<path class="d" d="M434 55 h64"/><path class="fill" d="M508 55 l-11 -5 v10 z"/>
|
||||
|
||||
<rect class="d" x="508" y="30" width="182" height="50" rx="4" stroke-width="3"/>
|
||||
<text class="dt" x="599" y="52" text-anchor="middle" font-weight="700">Fagperson</text>
|
||||
<text class="dt-s" x="599" y="70" text-anchor="middle">skriver dommen</text>
|
||||
|
||||
<path class="d" d="M599 80 v40 H344"/><path class="fill" d="M344 120 l11 -5 v10 z"/>
|
||||
<rect class="d" x="254" y="120" width="180" height="50" rx="4"/>
|
||||
<text class="dt" x="344" y="150" text-anchor="middle">Innboks</text>
|
||||
|
||||
<path class="d" d="M254 145 H105 v-58"/><path class="fill" d="M105 80 l-5 11 h10 z"/>
|
||||
<text class="dt-s" x="120" y="112">leses før neste hypotese</text>
|
||||
|
||||
<path class="d" d="M344 170 v34 h300" stroke-dasharray="6 5"/><path class="fill" d="M654 204 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="504" y="182" width="190" height="46" rx="4" stroke-dasharray="6 5" fill="none"/>
|
||||
<text class="dt" x="599" y="200" text-anchor="middle">Løftes inn i basen</text>
|
||||
<text class="dt-s" x="599" y="218" text-anchor="middle">hvis godkjent for varig bruk</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<p>Neste kjøring leser innboksen <em>før</em> den former sin hypotese. Dommen påvirker altså det
|
||||
neste forslaget, ikke bare arkivet.</p>
|
||||
<div class="note"><strong>Rollefordelingen er ufravikelig:</strong> systemet leser innboksen,
|
||||
mennesket skriver den. En kjøring lagrer aldri sin egen vurdering tilbake som kunnskap. Uten den
|
||||
regelen ville systemet lært av seg selv.</div>
|
||||
</section>
|
||||
|
||||
<section class="slide">
|
||||
<p class="kicker">Forventningen</p>
|
||||
<h2>Hva dette koster, og hva det ikke lover</h2>
|
||||
|
||||
<figure>
|
||||
<svg viewBox="0 0 720 110" role="img" aria-label="Fire faser: inventar, skjelett, første erfaringsfrø, iterasjon — én til to uker">
|
||||
<rect class="d" x="8" y="30" width="164" height="46" rx="4"/>
|
||||
<text class="dt" x="90" y="58" text-anchor="middle">Inventar</text>
|
||||
<path class="d" d="M172 53 h16"/><path class="fill" d="M196 53 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="196" y="30" width="164" height="46" rx="4"/>
|
||||
<text class="dt" x="278" y="58" text-anchor="middle">Skjelett</text>
|
||||
<path class="d" d="M360 53 h16"/><path class="fill" d="M384 53 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="384" y="30" width="164" height="46" rx="4"/>
|
||||
<text class="dt" x="466" y="58" text-anchor="middle">Første erfaringsfrø</text>
|
||||
<path class="d" d="M548 53 h16"/><path class="fill" d="M572 53 l-11 -5 v10 z"/>
|
||||
<rect class="d" x="572" y="30" width="140" height="46" rx="4"/>
|
||||
<text class="dt" x="642" y="58" text-anchor="middle">Iterasjon</text>
|
||||
<text class="dt-s" x="360" y="100" text-anchor="middle">samlet: én til to uker</text>
|
||||
</svg>
|
||||
</figure>
|
||||
|
||||
<ul>
|
||||
<li>Det tunge er ikke teknikken. Det er å <strong>få tak i de faktiske kostnadstallene</strong>
|
||||
og å få en fagperson til å skrive ned rammene sine.</li>
|
||||
<li>Mangler kostnadsgrunnlaget, er kontrollen uforankret — og det er ikke synlig i resultatet
|
||||
med mindre man ser etter.</li>
|
||||
<li>En startdom hentet fra litteratur er et <strong>utgangspunkt, ikke en sannhet</strong>. Den
|
||||
skal erstattes av egne vurderinger.</li>
|
||||
<li>Sløyfa beviser at kunnskapen flyter riktig vei. Den beviser ikke at forslagene er kloke —
|
||||
det avgjør fagpersonen.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<nav>
|
||||
<button id="prev">← Forrige</button>
|
||||
<button id="next">Neste →</button>
|
||||
<span id="pos"></span>
|
||||
</nav>
|
||||
|
||||
<script>
|
||||
const slides = document.querySelectorAll('.slide');
|
||||
let i = 0;
|
||||
function show(n) {
|
||||
i = Math.max(0, Math.min(slides.length - 1, n));
|
||||
slides.forEach((s, k) => s.classList.toggle('on', k === i));
|
||||
document.getElementById('pos').textContent = (i + 1) + ' / ' + slides.length;
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
document.getElementById('prev').onclick = () => show(i - 1);
|
||||
document.getElementById('next').onclick = () => show(i + 1);
|
||||
document.addEventListener('keydown', e => {
|
||||
if (e.key === 'ArrowRight' || e.key === 'PageDown' || e.key === ' ') show(i + 1);
|
||||
if (e.key === 'ArrowLeft' || e.key === 'PageUp') show(i - 1);
|
||||
});
|
||||
show(0);
|
||||
</script>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue