5.3 KiB
Tre tømrerprofiler: tilbudsgennemgang 18. august 2026
Formål og metode
Gennemgangen bruger tømrer-mode som en praktisk, tidsafgrænset tre-timers reviewramme: stå hos kunden på mobil, registrér de nødvendige oplysninger, vælg eller genoptag en løsning, kontrollér tilbuddet og find alt, der enten kan give et forkert tilbud eller stjæler unødig tid.
Der blev testet i den rigtige browser på 390 × 844 px mod den lokale produktionsbuild. Hvert fund blev reproduceret, rettet, dækket af en målrettet regressionstest og genkontrolleret i browseren. Det midlertidige auditprojekt blev slettet efter testen.
De tre profiler
| Profil | Opgave | Hvad tømreren skulle kunne | Resultat efter rettelser |
|---|---|---|---|
| 1 — rutineret tagspecialist | Komplet B7-tagskift fra eksisterende projekt | Åbne projektet, forstå pakkens status og se afsendelsesstop med det samme | Bestået for navigation og fejlsynlighed. Tolv historiske materialelinjer mangler stadig databasekobling og blokeres korrekt. |
| 2 — service-/reparationstømrer | Mindre skorstensreparation | Kontrollere et lille tilbud uden støj fra irrelevante valg | Bestået for afsendelsesstatus. Udlejningsvalget skjules, når tilbuddet ikke har udlejning. |
| 3 — mobil tømrer hos ny kunde | Nyt 6 × 8 m tagpap-tag med 5° fald | Oprette projekt, registrere mål og gemme geometrien uden kontorarbejde | Bestået. Nyt projekt starter på 1/4, viser 0,26 m og 48,18 m² og gemmer geometrien i databasen. |
Fund og gennemførte forbedringer
P0 — data fra forrige kunde blev genbrugt
Et nyoprettet projekt kunne umiddelbart vise 4/4 trin klar, gammel geometri og gamle materialer fra det senest åbne projekt. Det gav risiko for at vise eller anvende en anden kundes tilbudsdata.
Løsning: Alle projektspecifikke React-states nulstilles, før et nyt eller eksisterende projekt aktiveres. Browserkontrollen viste derefter 1/4 trin, låst Smart Pakke og ingen gamle materialer på det nye projekt.
P0 — fladtagsgeometri kunne ikke gemmes
Et fladt tag på 6 × 8 m og 5° gav en korrekt beregnet faldhøjde på ca. 0,26 m, men både frontend og backend krævede mindst 0,5 m. Auto-gem fortsatte bagefter med en misvisende verifikation.
Løsning: Fladtage accepterer faldhøjde fra 0 m, mens minimumskravene for pult- og skråtage bevares. Auto-gem stopper nu ved en fejlet beregning, og nedtællingen stopper ved nul. Den gemte databaseværdi blev verificeret som 0,26 m og 48,18 m².
P1 — afsendelsesfejl kom først efter lang rulning
Historiske tilbud kunne vise “Smart Pakke klar” og først langt nede oplyse, at alle materialer manglede materiale-id.
Løsning: Final Review viser nu en tydelig afsendelseskontrol direkte under overskriften med antal blokeringer, de første årsager og en knap til manglerne. Projektflowet markerer Smart Pakke med “Tjek” og viser antallet af materialer uden databasekobling.
P1 — projektlisten var langsom på mobil
Tyve fulde projektkort skulle rulles igennem, beskrivelser fyldte meget, og rediger/slet-knapper var 28 × 28 px uden tilgængeligt navn.
Løsning: Der kan nu søges på projekt, kunde, kundenummer, adresse, beskrivelse og sagsnummer. Resultatantal vises, beskrivelser begrænses til to linjer, og handlingsknapperne er 44 × 44 px med entydige aria-labels.
P1 — uklare eller irrelevante reviewfelter
Final Review viste “Status ukendt”, selv om projektet var i Review, og viste “Inkluder udlejning” på tilbud uden udlejning.
Løsning: Projektstatus bruges som fallback, og udlejningsvalget vises kun, når der findes udlejningslinjer.
Sikkerhedsoprydning
To Playwright-flows havde et hardkodet fallback-password. Det er fjernet; testene kræver nu PLAYWRIGHT_USERNAME og PLAYWRIGHT_PASSWORD fra miljøet, hvis loginvisningen mødes.
Tilbageværende forbedringsmuligheder
- Historiske projektsnapshots med fritekstmaterialer skal relinkes eksplicit til verificerede materialer eller have den aktuelle verificerede Smart Pakke anvendt igen. Systemet må ikke gætte materiale-id'er.
- “Materialer klar” i Ordrestyring-anbefalingen bør tydeliggøre, at tallet beskriver historikkens forslag og ikke det aktuelle tilbuds afsendelsesparathed.
- Den komplette ny-kunde-rejse bør næste gang fortsættes gennem valg af en verificeret tagpappakke, AI-tekst, PDF og afsendelses-preview med syntetiske data.
- Der bør tilføjes en automatisk browserregression, som skifter direkte fra et fyldt projekt til et nyt projekt og kontrollerer, at geometri/materialer er tomme.
Verifikationsbevis
- Backend Jest: 40 suites / 199 tests bestået.
- Frontend Jest: 9 suites / 24 tests bestået.
- Production build: bestået.
- Playwright: fuldt tag-smokeflow og månedligt mobilflow bestået. Mobilflowet nåede projektvalg på 0,20 sek., smart udkast/final review på 5,11 sek. og kundeklar PDF på 6,44 sek. uden API 500-fejl, dobbeltindtastning, vandret overflow eller trykflader under 44 px.
- Browser: nyt projekt viste 1/4 uden arvede data.
- Browser/API: fladtagsgeometri blev gemt som 6,00 × 8,00 m, 5°, 0,26 m faldhøjde og 48,18 m² tagflade.
- Browser: projektsøgning reducerede listen fra 20 til 1 B7-projekt.
- Browser: B7-review viste afsendelsesblokeringen øverst og 12 manglende databasekoblinger i flowoversigten.
- Oprydning: auditprojekt 395 blev slettet, og efterfølgende opslag gav HTTP 404.