Files
tilbudgivern/status.md
2026-08-15 00:34:28 +02:00

32 KiB
Raw Blame History

Status: tilbud på udskiftning af betontag, Røsevangen 44

Dato: 10. august 2026 Tilbudsgiver-projekt: 392 Kundereference: Ordrestyring kundenr. 3352 Status: review_pending — kladden er ikke sendt til Ordrestyring

Platformens nordstjerne og tømrer-mode

Tilbudsgivers vigtigste opgave er, at en tømrer på mobil hos kunden hurtigt kan registrere kunde, besigtigelse og omfang, få et fagligt brugbart tilbudsudkast, kontrollere økonomien og gøre tilbuddet klar til kunden uden efterfølgende dobbeltindtastning på kontoret.

Den faste metode er dokumenteret i Månedlig tømrergennemgang af hele Tilbudsgiver.

Tømrer-mode tracking Aktuel status
Seneste tekniske P0/P1-kontrol 10. august 2026
Seneste tidsmålte mobilkontrol (del-flow) 10. august 2026 — kendt projekt genoptaget på 390 × 844 px
Tid til kunde valgt/oprettet 0,16 sek. til kendt kunde/projekt valgt
Tid til smart tilbudsudkast 5,06 sek. til gemt smart udkast indlæst
Tid til kontrolleret pris 5,07 sek. til 177.781,60 kr. synlig og kontrollerbar
Tid til kundeklar PDF 6,19 sek. til ny PDF genereret
Foreløbigt mål Højst 10 minutter til et kontrollerbart tilbudsudkast for kendt kunde og almindelig opgave
Næste samlede månedskontrol 10. september 2026
Samlet platformsvurdering KERNEFLOW BESTÅET / HELHED IKKE BESTÅET — kendt projekt til PDF er tidsmålt og grønt på mobil; nyt projekt, fysisk besigtigelse og alle øvrige platformssider mangler stadig samme fulde kontrol

Ved hver fremtidig kontrol opdateres tiderne, enhed/skærmstørrelse, antal dobbeltindtastninger, største flaskehals og resultatet BESTÅET eller IKKE BESTÅET. Hvis et P2/P3-punkt viser sig at blokere feltflowet, flyttes det straks til P0 eller P1.

Fast regel for smartpakker

Tømreren skal hos kunden kunne indtaste mål og vælge én komplet smartpakke, eksempelvis “Komplet tagskift — betontag”. Pakken leverer materialer, opgaver, timer, byggepladsydelser, forbehold og projektgrundlag. AI må kun skrive tilbudsopstillingen fra disse faktalåste data; tømreren kontrollerer, godkender og afsender.

Er en smartpakke generelt utilstrækkelig inden for sit anvendelsesområde, udvides og testes den. Er konstruktionen eller arbejdsmetoden reelt anderledes, oprettes en ny pakke. Alle materialelinjer skal kobles til rigtige materialer i materialedatabasen via materiale-id eller varenummer; fritekst og placeholders må ikke godkendes.

Resultat

Der er oprettet en realistisk, men foreløbig tilbudskladde for komplet udskiftning af eksisterende betontagsten på Røsevangen 44, 3520 Farum.

Kundevendt pris efter den fælles, gemte økonomimodel:

Post Beløb ekskl. moms
Materialer og øvrige ydelser 44.981,80 kr.
Stillads og kollektiv faldsikring 14.000,00 kr.
Arbejde, 76 timer á 580 kr. 44.080,00 kr.
Direkte subtotal 103.061,80 kr.
Overhead, 15 % 15.459,27 kr.
Dækningsbidrag, 20 % 23.704,21 kr.
Pris ekskl. moms 142.225,28 kr.
Moms, 25 % 35.556,32 kr.
Tilbudspris inkl. moms 177.781,60 kr.

Prisen svarer til ca. 2.566 kr./m² tagflade inkl. moms. Den er egnet som internt budget og kundekladde, men bør ikke afgives som bindende fast pris før fysisk opmåling og fotodokumentation.

PDF-kladden er regenereret i Tilbud_Roesevangen_44_betontag_2026-08-10.pdf. Den er verificeret som en rå, læsbar A4-PDF på 9 sider med korrekte kunde-/projektfelter, materialenheder, tagbeklædningsareal, fælles økonomioversigt og uden de tidligere ikke-valgte asbest-/sternarbejder. Den er fortsat kun til internt review, indtil den fysiske besigtigelse er gennemført.

Besigtigelsesgrundlag og observationer

  • Offentlige ejendomsdata beskriver adressen som et række-/kæde-/dobbelthus fra 1971 med betontagsten. Registreret bebygget areal for hovedbygningen er ca. 60 m². Kilder: DinGeo og Boligsiden.
  • Foreløbig geometri er sat til sadeltag, 6,0 × 10,0 m og 30° hældning. Tilbudsgiver beregner 69,28 m² tagflade, 10 m rygning og 1,73 m fra stern til kip.
  • Der er regnet med to tømrere og 76 timer i alt, svarende til ca. 38 timer pr. mand.
  • Omfanget indeholder nedtagning og sortering, container/bortskaffelse, kontrol og mindre opretning, nyt diffusionsåbent undertag, kontra- og taglægter, nye betontagsten, fastgørelser, ventileret rygning, tagfod, skelovergang, mindre inddækninger, stillads, kranlevering og oprydning.
  • Rækkehuset kræver særlig kontrol af skelovergang til nabotag samt aftale om adgang og eventuel berøring af naboens tag.
  • Kran og stillads er forudsat placeret fra vej/indkørsel. Behov for vejmyndighedstilladelse, trafikafmærkning eller alternativ adgang er ikke medregnet.
  • Tagrender, nedløb, skorsten, ovenlys, kviste og øvrige gennembrydninger er ikke registreret. De skal optælles på stedet.
  • Skjult råd, svamp, spærskader, større opretning og konstruktive ændringer er ikke medregnet.
  • Miljøfarlige stoffer kan ikke afgøres ud fra alder eller BBR. Eventuel miljøscreening og sanering skal håndteres som særskilt afklaring; betontagsten må ikke automatisk behandles som asbestaffald.
  • Farve, producent, model, overflade og garantisystem for de nye betontagsten skal godkendes af kunden før bestilling.

Brug af historiske Ordrestyring-data

  • Kunden findes som dublet: kundenr. 3352 har den korrekte adresse i Farum, mens kundenr. 3364 har samme vej/husnummer registreret i Køge. Projektet er koblet til 3352.
  • Kundesøgningen markerer nu kundenr. 3352 og 3364 som mulige dubletter og kræver et aktivt valg af kundenummer/postadresse.
  • Ingen af kundekortene har egne kompatible betontagssager. Historik bruges derfor ikke automatisk som pris- eller timegrundlag for projekt 392.
  • Sag 2442, “betontegl til b&c 30”, har 374,5 registrerede timer og 144 materialelinjer. Sagen er langt større/anderledes og kan ikke skaleres direkte til dette tag.
  • Historikfilteret fravælger nu 80 ikke-kompatible kandidater, herunder testsimulationer, 4000-adresser, B7/tegl/tagpap og ikke-tagarbejde. Der returneres 0 automatiske matches frem for at give falsk høj confidence.
  • Ordrestyrings materialebeløb normaliseres fra øre til kroner ved integrationsgrænsen og returneres med currency: DKK, minorUnit: 100, råt minor-beløb og normaliseret beløb.

Forbehold før et bindende tilbud

  1. Kontrolmål bredde, længde, hældning, udhæng, rygning, tagfod og samlet tagflade.
  2. Tag fotos af begge tagflader, tagfod, rygning, skelovergang, inddækninger, loftsrum og adgangsvej.
  3. Kontroller undertagets type og stand fra loft eller prøveåbning.
  4. Kontroller spær, lægter, stern/vindskeder og synlige tegn på fugt, råd eller skævheder.
  5. Optæl gennembrydninger, hætter, ovenlys, skorstene, tagrender og nedløb.
  6. Afklar om tagrender/nedløb, stern og vindskeder skal udskiftes eller genbruges.
  7. Afklar skel-/naboløsning skriftligt, før arbejdet planlægges.
  8. Indhent aktuelle leverandørpriser på den valgte betontagsten og systemspecifikt tilbehør.
  9. Indhent fast pris på stillads, container, affaldsmodtagelse og kranlevering.
  10. Afklar miljøscreening ud fra de faktiske eksisterende materialer.

Mulige forbedringer i Tilbudsgiver

P0 — skal løses før tilbud sendes

Løsningsstatus 10. august 2026: De fem P0-punkter er løst i kode og verificeret i drift efter genstart af PM2-processen. Projekt 392 er genberegnet som beregning 101, og PDF-kladden er regenereret gennem det aktive API-endpoint.

P0 Status Implementeret kontrol
Fælles økonomimodel Løst Backend gemmer én versioneret model med 15 % overhead, 20 % dækningsbidrag og 25 % moms. Final Review, tilbudstekst, PDF og Ordrestyring bruger samme beregningsobjekt.
Labor efter reload Løst Labor-API'et returnerer ét objekt; frontend normaliserer kontrakten og gendanner opgaver/timer i packageData. Browser-reload er dækket af Playwright.
Rå PDF-data Løst Puppeteer-data konverteres til Buffer, og responsen valideres for %PDF- før den sendes som application/pdf.
Transparent PDF-regnestykke Løst PDF'en viser materialer, udlejning/øvrige ydelser, arbejdsløn, direkte subtotal, overhead, dækningsbidrag, pris ekskl. moms, moms og total.
Faktalåst PDF Løst Arbejdsomfang dannes kun fra projektbeskrivelsen, valgte opgaver/materialer/udlejning og eksplicitte forbehold.

Testresultat: Backend: 33 suites / 159 tests bestået. Frontend: 4 suites / 9 tests bestået. Playwright: labor-reload 1/1 bestået. Frontend production build: bestået. Live-kontrol: labor returnerer ét objekt med 76 timer; PDF-endpointet returnerer application/pdf med %PDF-; gemt total og PDF-total er begge 177.781,60 kr.; stillads vises særskilt; faktalås bestået.

  1. Én fælles økonomimodel. Backend-beregningen viser 177.781,61 kr. inkl. moms, mens Final Review og PDF viser 141.174,70 kr. Forskellen på 36.606,91 kr. skyldes, at backend bruger 15 % overhead plus 20 % dækningsbidrag, mens Final Review bruger 20 % på materialer og 2 % på timer uden overhead. Beregning, review, tilbudstekst, PDF og Ordrestyring-payload skal bruge samme gemte beregning.
  2. Arbejdsløn forsvinder ved genindlæsning. Labor-API'et returnerer ét objekt, men ProjectFlow tester laborData.labor.length > 0 som om værdien var et array. Final Review viste derfor 0 timer efter genindlæsning, selv om databasen indeholdt 76 timer. Labor skal normaliseres til én kontrakt og dækkes af en reload-E2E-test.
  3. PDF-download returnerer ikke rå PDF-data. Puppeteer returnerer en Uint8Array, som Express serialiserer til et JSON-objekt med byteindekser. Browseren gemmer derfor oprindeligt ugyldig JSON med .pdf-endelse. Konverter til Buffer.from(pdfBuffer) før res.send, og test %PDF--signatur samt Content-Type: application/pdf.
  4. PDF'ens regnestykke er ikke transparent. Den viser materialer 44.981,80 kr. og arbejde 44.080,00 kr., men subtotal 103.061,80 kr. uden at vise stillads på 14.000,00 kr. Den viser heller ikke avancen på 9.877,96 kr.; de viste subtotal- og momslinjer kan derfor ikke summeres til totalen.
  5. PDF tilfører ikke-valgte arbejder. Skabelonen skriver bl.a. ansøgning om asbest-anvisningsplads samt udskiftning af stern/vindskeder, selv om det ikke er valgt. PDF-generering skal være faktalåst til projektets poster og forbehold.

P1 — høj prioritet

Løsningsstatus 10. august 2026: P1-punkterne 613 og P1-SP1 er løst, testet og verificeret i drift. Projekt 392 er genberegnet med roof_covering_area = 69,28 m² som eksplicit prisgrundlag, og den aktive anbefaling er betontag_renovering.

P1 Status Implementeret kontrol
PDF-felter, opgavenavn og enheder Løst PDF viser Røsevangen 44, kundenr. 3352, særskilt opgavenavn/beskrivelse og de oprindelige enheder m², lbm og sum.
Særskilt betontagspakke Løst Ny pakke med betontagsten/Dobbelt-S, undertag, afstandslister, producentafhængige taglægter, bindere, ventileret rygning og tagfod.
Filtreret historik Løst Test/simulering, forkert postnummer/vejadresse, ikke-tagarbejde og inkompatible tag-/pakketyper fravælges med årsager i excludedMatches.
Ordrestyring-prisenheder Løst Øre normaliseres til kroner ved grænsen; API-kontrakten indeholder amount, currency, minorUnit og minorAmount.
Tagareal som prisgrundlag Løst Beregning, breakdown, Final Review og PDF bruger og mærker 69,28 m² som “Tagbeklædningsareal (prisgrundlag)”.
Kunde-dubletter Løst Ens normaliseret navn + vej/husnummer markeres; afvigende postnr./by kræver radiovalg og eksplicit bekræftelse.
P1-SP1 Smartpakke-integritet Løst og verificeret 419 aktive katalogposter er klassificeret og verificeret: 5 komplette tagpakker og 414 service-/udlejningsposter. Alle 38 aktive faglige materialelinjer har materiale-id og varenummer. 40 uverificerede legacy-delpakker er bevaret, men reversibelt arkiveret som blocked; auditten viser 0 aktive integritetsbrud.

Smartpakke-verifikation: API'et afviser en komplet pakke med fritekstmateriale med HTTP 400. Alle fem tagpakker beregner 49 databasekoblede materialer og 51,9683,14 timer ved 69,28 m²; betontag giver 9 materialer og 76,21 timer. integrity-report viser 419 aktive/verificerede katalogposter, 38 af 38 aktive faglige linjer med materiale-id og varenummer samt 0 violations. Backend: 36 suites / 176 tests bestået. Frontend: 7 suites / 16 tests bestået. Production build og månedligt mobilflow 1/1 bestået; slutmålingen var 6,18 sekunder fra kendt projekt til PDF på 390 × 844 px.

  1. Korrekte kunde- og projektfelter i PDF. PDF'en viser “Kunde adresse” i stedet for Røsevangen 44 og bruger projekt-id 392 som kundenummer. Final Review skal sende kundeadresse og kundenr. 3352 til PDF-servicen.
  2. Bevar opgavenavn og beskrivelse. PDF'en bruger opgavebeskrivelsen som opgavenavn, fx “Ca. 69,3 m² tagflade”, i stedet for “Montering af nye betontagsten og fastgørelse”.
  3. Bevar materialenheder. PDF'en viser alle materialer som “stk/enhed”, selv når appen har m², lbm eller sum.
  4. Betonsten er ikke vingetegl. Smart-pakken “Tegltag Renovering” opretter “Tegl vingetagsten”. Tilføj en særskilt pakke til betontagsten med relevante stentyper, lægteafstand, bindere, rygning og tagfod.
  5. Historik skal filtrere testdata. Anbefalingen med høj confidence valgte projektet “TEST Komplet tagrenovering” og viste gamle simulationer med 4000 Roskilde. Testkunder, simulationer, forkert adresse og inkompatibel tagtype skal udelukkes eller markeres tydeligt.
  6. Pris-enheder fra Ordrestyring. Konverter øre til kroner ved integrationsgrænsen og returnér altid currency, minorUnit og normaliseret beløb. Det aktuelle materialetotalfelt kan ellers læses som 29.171.529 kr. i stedet for 291.715,29 kr.
  7. Tagareal som prisgrundlag. Backend gemmer total_area = 60 som grundareal og beregner 2.963 kr./m², selv om arbejdet udføres på 69,28 m² tagflade. Pris pr. m² skal mærkes og beregnes på roof_covering_area for tagarbejde.
  8. Kunde-dubletter. Tilføj dubletadvarsel på navn + vej/husnummer og kræv aktivt valg, når postnr./by er forskellige.

P2 — arbejdsgang og kvalitet

  1. Ny mobil besigtigelse uden eksisterende sag. “Mobil Ordre” kan kun starte fra en eksisterende Ordrestyring-sag. En tømrer hos en ny kunde bør kunne oprette en lokal besigtigelse fra kunde/adresse og senere koble den til en sag.
  2. Tag-specifik feltcheckliste. Tilføj obligatoriske felter for tagflader, skel/nabo, rygning, tagfod, gennembrydninger, tagrender/nedløb, adgang, stilladszone, kran, loftsadgang, undertag, træskader, miljøscreening og fotos.
  3. Foreløbig kontra opmålt status. Mål og priser bør have kilde (BBR, visuelt skøn, fysisk opmålt, leverandørtilbud) og sikkerhedsniveau. Fast-pris-knappen bør blokeres, hvis kritiske mål stadig er foreløbige.
  4. Komplet pakkekontrol. Tømreren skal kunne vælge én komplet pakke til opgaven. En standard tagpakke skal advare om manglende stillads, affald, transport/kran, tagfod, fastgørelse, rygning, inddækninger og slutkontrol. En generel mangel udvider grundpakken; en fagligt anden løsning får en ny pakke.
  5. Prislistens friskhed. Final Review viser, at Stark-prislisten senest er importeret 26. november 2025. Kræv genbekræftelse eller leverandørtilbud, før en fast pris kan markeres klar.
  6. Kortere kundepdf. Den aktuelle PDF bruger ni sider og gentager materiale- og standardtekst pr. opgave. Et normalt tagtilbud bør kunne præsenteres på 24 sider med samlet omfang, tydelige fravalg, hovedposter og én økonomioversigt.
  7. Automatisk PDF-kvalitetskontrol. Test at kundenavn, adresse, kundenummer, tagareal, timer, alle prisdele, avance, moms og total findes og summerer korrekt, og at PDF'en ikke indeholder ydelser, der mangler i input.

Mobil UX-bølge, 11. august 2026: Besigtigelsesvisningen starter nu med et aktivt valg mellem “Nyt tilbud” og en eksisterende Ordrestyring-sag; første historiske sag vælges ikke længere automatisk. Når en sag er valgt på mobil, skjules den lange sagliste, og tømreren får en fokuseret arbejdsflade med “Skift sag”, store ja/nej-knapper, én fast handlingsbjælke og sekundær historik samlet i et sammenklappeligt panel. Billeder er fremhævet som næste felttrin, og knappen “Nyt tilbud” fører direkte til projektflowet for ny kunde eller ny opgave.

Den målrettede kontrol fjernede samtidig dobbeltindtastning af tagareal: et påkrævet checklistespørgsmål i m² og feltets beregningsareal behandles nu som samme værdi og gemmes fortsat i begge nødvendige datadele. Frontend-testen dækker denne deduplikering. Production build og målrettede tests bestod; Playwright-kontrol på 390 × 844 px viste 0 px vandret overflow, 23 synlige primære kontroller og 0 kontroller under 44 × 44 px. Der blev ikke skrevet til en kundesag under browserkontrollen. P2-punkterne om fuld ny mobilbesigtigelse og offline/ustabil forbindelse er fortsat åbne, indtil et rigtigt feltforsøg er gennemført.

Codex CLI-migrering, 13. august 2026: Alle indholdsgenererende Platform API-kald er fjernet fra den aktive backendkode. Tilbudskladde, ældre tilbudsruter, tilbudsrevision, timeestimat, OCR-klassificering, dokument-parsing, generel projekttekst og SmartPakke-validering bruger nu den lokalt autentificerede codex exec-runner i read-only sandbox. OpenAI-administration og forbrugsvisning er bevaret som read-only API-funktioner. Tilbudskladden har fortsat faktalås og deterministisk fallback, mens Codex-fejl ikke falder tilbage til et betalt Platform-kald.

Verifikation: 18 målrettede Jest-tests og hele backendpakken med 38 suites / 187 tests bestod. En rigtig CLI-smoketest blev kørt med syntetiske tømrerdata for otte tekst- og JSON-flows. Første kørsel afdækkede, at Codex kræver et strengt output-schema; schemaet blev rettet, og OCR-klassificering, timeestimat og dokument-parsing bestod derefter med provider: codex-cli. Kildesøgning viser ingen resterende chat.completions.create eller responses.create i aktiv backendkode uden for tests og genererede coverage-filer. PM2-processen tilbudgivern-unified er genstartet, og /api/health/quick svarer grønt på port 4032.

Den metodiske gennemgang af samtlige pakker er beskrevet i Plan for gennemgang af alle smartpakker. Første bølge er komplette tagskiftspakker med betontag som reference; derefter tegl, B7, ståltag og tagpap.

P3 — løbende optimering og produktudvikling

P3 forbedrer hastighed, intelligens og kundeoplevelse, når det korrekte kerneflow fungerer. Statuslegende: ⬜ Planlagt, 🟡 I gang, ✅ Løst og verificeret, ⛔ Blokeret. Ejer og måldato skal udfyldes, når et punkt flyttes til 🟡 I gang.

Fase P3-A — mål først

Formål: Etablér en baseline, så forbedringer måles på tømrerens faktiske tid og arbejde frem for antal nye funktioner.

ID Initiativ Status Ejer Måldato Beståelseskriterium
21 Mål tiden til tilbud Løst og verificeret Platform 10. august 2026 Tidspunkter for projektstart, smart udkast, Final Review, PDF og klar til afsendelse kan rapporteres uden at gemme følsomt fritekstindhold.
22 Kontekstbaseret feedback 🟡 I gang Platform + osTicket 13. august 2026 Tømreren kan sende kommentar og kontekst; billeder er først bestået, når osTicket accepterer en praktisk billedstørrelse uden importfejl.
35 Ydelsesbudget Løst og verificeret Platform 10. august 2026 Der findes mål og automatiske kontroller for mobil indlæsningstid, API-svartid og gemmetid.
40 Månedligt produktscorekort Løst og verificeret Platform 10. august 2026 Rapporten viser tid til tilbud, færdiggørelsesgrad, manuelle rettelser, genåbninger, PDF-fejl og tømrerfeedback måned for måned.

P3-A hurtig bølge, 10. august 2026: Flowet registrerer nu projektstart, kunde klar, geometri klar, smart udkast, Final Review, PDF og klar til afsendelse. Målingerne bruger kun tekniske id'er, tider, viewport og en allowlistet kilde; kundeoplysninger og fritekst gemmes ikke. Feedback-dialogen vedhæfter automatisk side, projekt-id, trin, URL uden query-parametre og skærmstørrelse. Ydelsesbudgetterne er 3.000 ms for mobil indlæsning, 1.000 ms for API-svar og 1.500 ms for gemmeoperationer.

Feedbackkontrol, 13. august 2026: Formularen kan vælge eller fotografere op til tre JPG-, PNG- eller WebP-billeder á højst 5 MB, vise valgte filer og fjerne dem før afsendelse. Backend validerer filtype, størrelse og data og sender dem i osTickets dokumenterede attachments-format. Jest, production build og Playwright bestod. Efter rotation af den eksternt lagrede API-nøgle og tilpasning til installationens krævede topic_id oprettede den rigtige browserformular osTicket 243637; osTicket svarede 201 Created. osTicket tilføjede imidlertid systemfejlen File size is too large for testfilen på kun 28.724 bytes. Ticketafsendelse er derfor løst, mens billeddelen forbliver i gang, indtil osTickets vedhæftningsgrænse hæves og en ny live-test bekræfter billedet i ticketen.

Codex-arbejdsliste, 13. august 2026: Valideret feedback gemmes nu i support_work_items med status pending, før osTicket-kaldet udføres. Efter kaldet registreres sent og ticketnummer eller failed og en kort leveringsfejl. Det nøglebeskyttede endpoint /api/support/worklist leverer JSON eller sikkerhedsmarkeret Markdown til Codex; billeddata duplikeres ikke lokalt. Se Codex-arbejdsliste fra support.

Produktscorekortet er tilgængeligt på /api/product-telemetry/scorecard?days=30 og viser flowtider, PDF-/afsendelsesgrad, feedback, mobil indlæsning, API-/gemmeydelse, genåbninger, manuelle rettelser og PDF-fejl som samlet periode og månedsserie. Teknisk dokumentation og live-bevis findes i P3-A hurtig bølge, august 2026.

Verifikation: Backend 35 suites / 170 tests bestået; frontend 8 suites / 17 tests bestået; production build bestået; Playwright feedback-flow 1/1 bestået. Live-API'en gemte og rapporterede et kontrolleret mobilflow med alle seks milepæle samt en mobil indlæsning på 850 ms. En test afdækkede undervejs en dubletmåling ved en milepæl på præcis 0 ms; deduplikeringen blev rettet og regressionstestet.

Fase P3-B — hurtigere feltarbejde

Formål: Fjern dobbeltindtastning og gør kundebesøget robust på almindelig mobil og ustabil forbindelse.

ID Initiativ Status Ejer Måldato Beståelseskriterium
23 Tale til besigtigelsesnoter Planlagt Ikke tildelt Ikke fastsat Diktering bliver til et redigerbart struktureret udkast, og intet anvendes uden tømrerens godkendelse.
25 Offline og dårlig forbindelse Planlagt Ikke tildelt Ikke fastsat Kunde, mål og noter bevares offline og synkroniseres uden dubletter eller datatab.
33 Personlige standardvalg Planlagt Ikke tildelt Ikke fastsat Godkendte præferencer for timepris, leverandør, standardopgaver og forbehold kan genbruges og ændres pr. projekt.
34 Mobil tilgængelighed Løst og verificeret Platform 10. august 2026 Hovedflowet fungerer med én hånd, store trykflader, tydelig kontrast og uden hover-afhængige handlinger.
37 Genbrug af besigtigelse Planlagt Ikke tildelt Ikke fastsat Mål, fotos og noter kan genbruges i en tilbudsrevision uden manuel kopiering.

Fase P3-C — smartere forslag med faglig kontrol

Formål: Systemet skal spare tid med relevante forslag uden at opfinde fakta, arbejde eller priser.

ID Initiativ Status Ejer Måldato Beståelseskriterium
24 Fotobaseret kladdehjælp Planlagt Ikke tildelt Ikke fastsat Fotos giver tydeligt markerede forslag til synlige forhold; forslag kan afvises og behandles aldrig som fysisk opmålte fakta.
26 Læring fra godkendte tilbud Planlagt Ikke tildelt Ikke fastsat Kun afsluttede, fagligt godkendte projekter indgår; test, simulation og afviste forslag er udelukket.
32 Leverandør- og prisautomatik Planlagt Ikke tildelt Ikke fastsat Alle priser viser kilde og alder, og gamle priser kræver genbekræftelse før fast tilbud.
38 Kvalitetsscore før afsendelse Planlagt Ikke tildelt Ikke fastsat Manglende mål, gamle priser, ukendte materialer og uløste forbehold vises som konkrete handlinger med forklaring.

Fase P3-D — kundeklar tilbudsoplevelse

Formål: Gør det hurtigt at præsentere, revidere, godkende og følge op på tilbuddet.

ID Initiativ Status Ejer Måldato Beståelseskriterium
27 Hurtige tilbudsvarianter Planlagt Ikke tildelt Ikke fastsat Basis, anbefalet og premium kan dannes fra samme besigtigelse med synlige forskelle og uden projektduplikering.
28 Versionshistorik og forskelle Planlagt Ikke tildelt Ikke fastsat Ændringer i materialer, timer, forbehold og total kan sammenlignes mellem alle kundevendte versioner.
29 Digital kundegodkendelse Planlagt Ikke tildelt Ikke fastsat Kunden accepterer en entydig tilbudsversion med tidspunkt og accepterede forbehold.
30 Automatisk opfølgning Planlagt Ikke tildelt Ikke fastsat Påmindelser kan konfigureres, stoppes ved svar og sendes aldrig uden synligt samtykke/opsætning.
36 Kundevenligt tilbudslink Planlagt Ikke tildelt Ikke fastsat Kunden kan læse tilbud, valgmuligheder, billeder, pris og forbehold på mobil uden at downloade PDF.

Fase P3-E — fra tilbud til udførelse

Formål: Genbrug godkendte data sikkert videre i driften og bevar et revisionsspor.

ID Initiativ Status Ejer Måldato Beståelseskriterium
31 Fra accepteret tilbud til planlægning Planlagt Ikke tildelt Ikke fastsat Et accepteret tilbud kan oprette arbejdssag, materialebehov og foreløbig bemanding uden genindtastning og med aktiv godkendelse.
39 Revisionsspor Planlagt Ikke tildelt Ikke fastsat Systemet registrerer hvem der ændrede kunde, priser, timer, avance, forbehold og status samt hvornår.

P3-gennemførelsesplan

  1. Etablér P3-A-målinger, feedback og ydelsesbudgetter, så feltforsøget kan registreres automatisk.
  2. Kør det tidsmålte mobile genoptagelsesflow og registrér baseline i en månedsrapport.
  3. Færdiggør P3-40 med manuelle rettelser, genåbninger, PDF-fejl og månedlig udvikling.
  4. Kør næste mobile feltforsøg fra helt ny kunde og fysisk besigtigelse; prioritér derefter P3-B efter de observerede flaskehalse.
  5. Implementér P3-C med faktalås, sporbar kilde og aktiv tømrerbekræftelse som faste krav.
  6. Implementér P3-D, når hovedflow og målinger er stabile.
  7. Implementér P3-E efter kundegodkendelse og versionsstyring er på plads.
  8. Tag højst ét større initiativ i gang pr. fase ad gangen, løs og verificér det, og opdatér denne tabel ved hver ændring.
  9. Ved hver månedskontrol revurderes prioritet, ejer, måldato, status og beståelseskriterium.

GitHub-fejlrettelser, 13. august 2026

Issue Resultat Verifikation
#9 — Manglende smartpakker/Excel-fil Løst Smartpakker viser nu de seneste Excel-uploads efter genindlæsning samt importstatus. Den importerede fil er synlig med 414 aktive pakker.
#10 — For meget indhold i feltet Løst Smartpakkekort er komprimeret på 390 × 844 px: kategori, navn, tid/pris og én tydelig “Se detaljer”-knap vises; gentaget pris, metadata og skrivebordshandlinger er skjult på mobil.
#11 — Materiale- og udlejningslinjer viser 0,00 kr. Løst Projekt 392 viser i Final Review 11 prissatte materialelinjer, 44.981,80 kr. i materialer og 14.000,00 kr. i udlejning. Persistente projektlinjer tilsidesætter nu forældede sessionslinjer.

Teknisk regression: backend 38 suites / 195 tests, frontend 8 suites / 19 tests, production build og live Playwright-kontrol bestod. PM2-servicen blev genstartet, og /api/health svarede grønt.

Opfølgende forbedringsplan for #9, #10 og #11 — 15. august 2026

Målet var at gøre de tre rettelser robuste nok til tømrerens reelle feltflow, ikke kun lukke de oprindelige symptomer. Arbejdet blev udført i denne rækkefølge:

  1. Gør databasen til autoritet for materialepriser og fjern forældede priser fra browserens sessionskopi.
  2. Blokér afsendelse ved 0-priser, manglende materiale-id eller totaler, der ikke svarer til antal × enhedspris.
  3. Gem materiale-id, priskilde og prisdato på projektets materialelinje og vis dem i Final Review.
  4. Gør Excel-import sporbar med SHA-256, bruger, upload-/importtid, dubletkontrol, kvalitetsresultat og mulighed for at genoptage eller gendanne en konkret filversion.
  5. Vis kun komplette, verificerede og fuldt databasekoblede SmartPakker som feltklare; gør anbefalede og senest brugte pakker til højst tre hurtigvalg på mobil.
  6. Verificér på 390 × 844 px, genindlæs projektet, kontroller databasen, kør regressionstest og production build.
Forbedring Resultat Beståelsesbevis
#11 prisintegritet Løst og verificeret Final Review stopper materialer/udlejning med 0-pris, ukoblede materialer og afvigende linjetotaler. Browser-sessionen kan ikke længere være prisautoritet.
Prisens revisionsspor Løst og verificeret Migrationen 20260815_project_material_price_provenance.sql er anvendt. Projektmaterialer kan gemme material_id, price_source og price_source_updated_at.
#9 Excel-sporbarhed Løst og verificeret Uploadhistorikken viser filhash, bruger, tid, importstatus og kvalitetsmål. Identisk allerede importeret filindhold afvises, mens samme kendte version kan genkøres kontrolleret.
Excel-kvalitetsport Løst og verificeret i kode Importen tæller koblede og ukoblede materialer. Pakker uden rigtige databasekoblinger eller positiv pris kan ikke verificeres som feltklare.
#10 mobilt SmartPakke-valg Løst og verificeret Mobilvisningen viser anbefalet/senest brugt SmartPakke som store, fokuserede hurtigvalg; øvrige pakker er stadig søgbare i dropdown.
Driftstest Bestået En verificeret B7-pakke gav 8 rigtige materialer og 5 opgaver. 8/8 linjer blev gemt med materiale-id, positiv pris, priskilde og prisdato. Efter fuld reload viste Final Review samme total på 156.084,21 kr. uden pris-, koblings- eller sumblokeringer.

Excel-gennemgangen afdækkede samtidig et vigtigt datakvalitetsfund: den seneste store import indeholder 519 materialelinjer, hvoraf 517 ikke er koblet til materialedatabasen, og 40 pakker kræver review. De er bevaret til oprydning, men bliver ikke præsenteret som feltklare SmartPakker. Dette følger den faste regel: en utilstrækkelig pakke skal udvides eller erstattes, og ingen pakke må godkendes til feltbrug med fritekstmaterialer.

Endelig verifikation: Backend 39 suites / 197 tests, frontend 8 suites / 21 tests, production build og live Playwright på 390 × 844 px bestod. Den første live-gemning afdækkede et ISO-/MySQL-datetimeproblem; det blev rettet og dækket af en regressionstest. Det særskilte testprojekt 394 og alle dets kaskaderede testdata blev derefter slettet permanent; kontrol viste 0 resterende projekt-, materiale-, labor- og geometrirækker.

Anbefalet næste handling

Platform: Gennemfør næste tømrer-mode-feltforsøg fra helt ny kunde gennem fysisk besigtigelse på mobil via den nye “Nyt tilbud”-indgang. August-rapportens kendte-projekt-baseline og den første mobile UX-bølge er oprettet; næste kontrol skal især måle resterende manuel indtastning, offline-risiko og den åbne P2-checkliste.

Projekt 392: Behold projektet i review. Gennemfør fysisk besigtigelse, kontrolmål og fotodokumentation, og indhent aktuelle leverandør-/stilladspriser. Opdatér derefter de faktiske poster, regenerér PDF'en og udfør en sidste manuel kontrol, før tilbuddet markeres “Klar til Ordrestyring”.