From f8864e26c3bb7c938d15b7e01d2be8b65b4dd390 Mon Sep 17 00:00:00 2001 From: masterdraco Date: Tue, 29 Sep 2026 21:30:32 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20fjern=20for=C3=A6ldet=20testplan=20for?= =?UTF-8?q?=20markarbejde=20(v1.28)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/TESTPLAN-markarbejde.md | 255 ----------------------------------- 1 file changed, 255 deletions(-) delete mode 100644 docs/TESTPLAN-markarbejde.md diff --git a/docs/TESTPLAN-markarbejde.md b/docs/TESTPLAN-markarbejde.md deleted file mode 100644 index 894b12f..0000000 --- a/docs/TESTPLAN-markarbejde.md +++ /dev/null @@ -1,255 +0,0 @@ -# Testplan — Markarbejde (fanen Marker), version 1.28.0.0 (+ guider v1.31/v1.32) - -Stor test-session. Kør testene i rækkefølge: de første bygger opsætningen, de senere bygger på den. -Hver test har **Gør**, **Forvent** og **Log** (linjer i `log.txt`, der beviser at det virkede). Loglinjer -begynder altid med `ADSmartPickup: F`. - -Kryds af undervejs. Skriv resultatet (OK / FEJL + hvad der skete) ud for hver test, så retter vi i -samme rækkefølge. - ---- - -## 0. Forberedelse - -- [ ] **0.1 Version.** Log: `Available mod: … (Version: 1.28.0.0) FS25_ADSmartPickup`. -- [ ] **0.2 Fanen Marker åbner.** ESC → Smart Pickup → fanen **Marker**. Forvent: "Marker indlæses …" - i få sekunder, derefter én række pr. ejet mark (også korn-, roe- og bare marker, ikke kun græs). - Afgrøde-kolonnen viser afgrøden eller "bar jord". -- [ ] **0.3 F-markører.** Marker uden `F`-markør står med `!` foran marknummeret og "! mangler - markør F…". Lav markører til de marker, der skal testes. -- [ ] **0.4 Markflåden.** Nederst: alle maskiner med slåmaskine, vender, river, læssevogn, høster, - aflæsningsvogn, kultivator, plov, såmaskine, tromle, strigle/sprøjte, gødnings-/kalkspreder, - stubhakker — med rolle og bredde. Tjek: - - [ ] Høstere viser "N afgrøder". - - [ ] Såmaskiner viser "frø ok" eller "!! tom for frø". - - [ ] Strigle viser "strigle (småt ukrudt)", ukrudtssprøjte viser "sprøjte". - - [ ] En **tom** sprøjte/spreder vises ikke (den har ingen rolle før den har fyld på). - - [ ] Maskiner i et Smart Pickup-flow kan godt ses, men sendes aldrig ud. -- [ ] **0.5 Bredder.** BiG M 450 viser **40,8 m** (Courseplays egen bredde), læssevognene 40,8 m. - -## 1. Etape 1 genbekræftet (græs → ensilage) - -Rest fra 25/9: slåning og opsamlingsstart virkede; afslutningen blev aldrig set. - -- [ ] **1.1 Afslutning af opsamling.** Mark 22 (eller en anden lille græsmark) på Manuel + Ensilage, - BiG M + én Boss Alpin med flueben → **Start nu**. - - Forvent: slåmaskine → F22 → Courseplay slår → hjem. Læssevogn → F22 → Courseplay samler op med - **slåmaskinens kursus** → AutoDrive tømmer ved fuld → tilbage → færdig → rest til lager → parkering. - Marken står **Færdig**, og der kommer en grøn besked "F22 er færdig". - - Log: `mower … sendt til F22`, `Courseplay startet (mower)`, `mowing -> collecting`, - `læssevogn … aflæsser i `, `Courseplay startet (collector, mower-kursus kopieret)`, - `collector … færdig`, `collecting -> done`. -- [ ] **1.2 Gæringssilo.** Ensilage-læs går til nærmeste **gæringssilo** (FermentingSilo/GrassSilageSilo), - ikke en Farma-silo. Log: `aflæsser i ` eller `ingen gæringssilo kan tage græsset (…)`. -- [ ] **1.3 Sidde i maskinen.** Sæt dig i slåmaskinen mens Courseplay kører, og stig ud igen. - Forvent: den slippes IKKE (ingen `frigivet`-linje). Kør selv > 3 km/t uden CP → `frigivet — spilleren kører det`. -- [ ] **1.4 Sovende køretøj.** Parkerede maskiner kører af sted med det samme ved udsendelse, uden at - du skal sætte dig ind. - -## 2. Hø og river - -- [ ] **2.1 Hø uden river.** Plan = **Hø**, Riv = Nej. Slå → **Vendes** (venderen i sin egen bredde) → - Samles op (læssevogn på slåkurset, ≥ 40,8 m) → hø-silo (kun almindelig silo, aldrig gæringssilo). - Log: `mowing -> tedding`, `Courseplay startet (tedder)`, `tedding -> collecting`. -- [ ] **2.2 Smal læssevogn uden river.** En læssevogn under 40,8 m → status "læssevogn for smal: - … — sæt Riv til eller brug en bredere". -- [ ] **2.3 Riv (midterrive).** Riv = Ja. Log: `river lægger skåret 0.x m fra sin kursuslinje`, - derefter `Courseplay startet (collector, rake-kursus kopieret)`. Læssevognen rammer skårene. -- [ ] **2.4 Sideriver.** Med en river der lægger skåret til siden: log viser fx `3.2 m`, og - `skår ligger 3.2 m til … -> læssevognens forskydning …`. **Tjek at vognen kører OVER skåret.** - Kører den ved siden af (forkert side), så skriv det ned — så vender jeg fortegnet. -- [ ] **2.5 Riv til ensilage.** Plan = Ensilage + Riv = Ja: Slå → Rives → Samles op. - -## 3. Høst (korn, raps, majs …) - -- [ ] **3.1 Høst.** En moden kornmark, Manuel, høster med passende skærebord + én aflæsningsvogn - (traktor + tipvogn/overlæssevogn) med flueben → **Start nu**. - - Forvent: høster → F-markør → Courseplay høster. Aflæsningsvognen sendes ud når høsteren - arbejder, følger den (Courseplays combine-unloader) og kører fulde læs til siloen. - - Log: `harvester … sendt`, `Courseplay startet (harvester)`, `unloader … sendt`, - `aflæsningsvogn … følger høsteren -> `. -- [ ] **3.2 Afslutning.** Høsten færdig → `harvesting -> `, - `aflæsningsvogn … stoppes — høsten er færdig`, evt. `kører rest-læs … til lager`, parkering. -- [ ] **3.3 Forkert skærebord.** Høster der ikke kan tage afgrøden → status "ingen høster i - markflåden kan tage opgaven (afgrøde/frø/ukrudt)". Ingen udsendelse. -- [ ] **3.4 Flere aflæsningsvogne.** "Aflæsningsvogne under høst" = 2 → to vogne sendes (én ad gangen). -- [ ] **3.6 Halm samles op.** Halm efter høst = *Samles op til silo*. Mejetærskeren lægger skår - (Courseplay-indstilling halmskår = til), derefter `harvesting -> strawCollecting`, en læssevogn kører - **høsterens kursus** (`harvester-kursus kopieret`) og kører halmen til en silo der tager STRAW. -- [ ] **3.7 Halm til baller.** Halm = *Presses til baller*: `-> baling` (ballepresser på høsterens - kursus) → `-> baleCollecting` (ballesamler/Universal Autoload, `Courseplay startet (ballesamler)`), - fulde læs til ballelager (`ballesamler … kører fulde læs til …`). -- [ ] **3.8 Halm hakkes.** Halm = *Hakkes*: mejetærskeren lægger IKKE skår (Courseplay halmskår = fra). -- [ ] **3.5 Regn.** Når det regner: høst/slå/vend/riv sendes ikke ud, status "venter på tørvejr". - Kørende maskiner fortsætter. - -## 4. Roer - -- [ ] **4.1 Roehøst.** Roemark (sukkerroer), roeoptager (Ropa) + aflæsningsvogn → som 3.1, men med - roer. Log viser `harvester 'Ropa …'`. Roerne går til nærmeste silo/lager der tager SUGARBEET - (brug **Tving lager** hvis de skal et bestemt sted hen, fx roeknuseren). - -## 5. Efter høst: klargøring og såning - -Sæt på en kornmark før høst: Efter høst → Stubbehakning Nej, Jordbehandling **Auto**, **Så bagefter** Ja, -Afgrøde "Samme som høstet", Tromle Ja. Kalk Ja. - -- [ ] **5.1 Kæde.** Efter høsten fortsætter marken selv: (kalk hvis jorden trænger) → pløj eller - kultivér → så → tromle → **Færdig**. Log: `harvesting -> cultivating`, `cultivating -> sowing` … -- [ ] **5.2 Auto-jordbehandling.** Står "Jorden trænger til: pløjning" under marken → plov sendes. - Ellers kultivator. -- [ ] **5.3 Såning.** Såmaskinen sættes til afgrøden (`setSeedIndex`), og den rigtige afgrøde spirer. -- [ ] **5.4 Ude af såperioden.** Afgrøde der ikke kan sås nu → status " kan ikke sås i denne - periode", ingen udsendelse. -- [ ] **5.5 Tom for frø / påfyldning.** Såmaskine med lidt frø. Moden leder efter en læssestation med frø - på lager og en AutoDrive-markør ved triggeren (fx en silo/big-bag-station med SEEDS). - - Findes den: log `… fyldes op med SEEDS ved af AutoDrive når den er tom`. Når den er tom - midt på marken, kører AutoDrive derhen, fylder op, kører tilbage, og Courseplay fortsætter. - - Findes den ikke: log `ingen påfyldning af SEEDS med AutoDrive-markør fundet …`. Når den er tom: - rød besked `'…' er tom for SEEDS — fyld op, så fortsætter marken`, og marken går IKKE videre. -- [ ] **5.6 Bar mark alene.** Vælg en bar mark (stub/pløjet) → **Start nu** → kun klargøring/såning. - -## 6. Pleje mens afgrøden vokser - -- [ ] **6.1 Behov vises.** En voksende mark viser "Jorden trænger til: gødning, ukrudt …" og status - "— trænger til Gødes". Manuel: intet sker før **Start nu**. -- [ ] **6.2 Gødning.** Start nu (eller Auto) → gødningsspreder/-sprøjte med fyld sendes → `pleje: - fertilizing` → `fertilizing -> idle`. Højst 2 gange pr. vækstcyklus. -- [ ] **6.3 Ukrudt.** Høstafgrøde med tæt ukrudt → strigle (småt ukrudt) eller ukrudtssprøjte - (stort ukrudt, > 4). Græs ukrudtsbehandles ikke. -- [ ] **6.4 Kalk.** Jord der trænger til kalk → kalkspreder. -- [ ] **6.5 Påfyldning.** Sprøjte/spreder der løber tør → AutoDrive fylder op og kører tilbage. -- [ ] **6.6 Tom sprøjte/spreder (v1.29.2).** Tom sættes i gang → log `er tom — fyldes med X ved og - kører så til F` → AutoDrive (LOAD) fylder op og kører til marken → Courseplay starter med fyld. - Ingen påfyldning med AD-markør → sendes IKKE ud; marken viser "er tom for X … fyld den op". - Sikkerhedsnet: Courseplay startes aldrig med tom tank ("er stadig tom … ved marken"). -- [ ] **6.7 Forkert vare (v1.28.8).** Spreder med kalk sendes til gødskning kun hvis ingen tom/gødet spreder - findes → log `tømt for N l LIME (skal bruges til fertilizer)` → fyldes med gødning. - -## 7. Multi-maskine (Courseplay multi-tool) - -- [ ] **7.1 To slåmaskiner.** "Maskiner pr. trin" = 2 på en græsmark med to BiG M med flueben. - Forvent: begge sendes samtidig, den ene laver kurset (`bane -1`), den anden kopierer det (`bane 1`) - og de kører i konvoj. Log: `… sendt … bane -1`, `… bane 1`, `Courseplay startet (mower, bane -1)`, - `Courseplay startet (mower, multi-kursus kopieret, bane 1)`. -- [ ] **7.2 For få maskiner.** 3 pr. trin men kun 2 ledige → status "multi-tool: slåmaskine — kun 2 af 3 ledige". -- [ ] **7.3 Læssevogne på multi-kursus.** Efter 7.1 sendes 2 læssevogne, én pr. bane. - -## 9. Vælg og glem (afgrøde på marken) - -- [ ] **9.1 Kornmark → hvede.** En mark med byg der vokser: vælg *Afgrøde på marken* = Hvede. Linjen siger - "Byg får lov at vokse færdig og høstes; derefter klargøres og tilsås med Hvede". Kørsel skjules (auto). - Når byggen er moden: høst → (halm) → klargøring → såning af **hvede** (ikke byg). Log: - `mål-afgrøde: WHEAT`, `starter (harvest: harvesting)`, `sowing`. -- [ ] **9.2 Bar mark.** Bar mark med mål = Hvede: starter selv klargøring + såning, når det er hvede-såtid. - Uden for såtid: status "venter på såtid for Hvede". -- [ ] **9.3 Græs → græs.** Græsmark med mål = Græs: slås og samles op hver gang, ingen pløjning/såning. -- [ ] **9.4 Græs → hvede.** Græsmark med mål = Hvede: slås og samles op én gang, derefter klargøring - (jordbehandling-valget vises) og såning af hvede. -- [ ] **9.5 Hele året.** Lad en mark med mål køre en hel sæson uden at røre den: vækst → pleje → høst → - klargøring → såning → ... uden at hænge og uden dobbelt-såning. -- [ ] **9.6 Alle ledige maskiner.** Markflåde: *Brug alle ledige maskiner* = Ja (standard): maskiner uden - flueben sendes også ud. = Nej: kun maskiner med flueben. Maskiner du selv kører, maskiner i flows og - maskiner AutoDrive/Courseplay allerede kører, bruges aldrig. -- [ ] **9.7 Fjern målet.** Vælg *Ingen — planlæg selv*: marken går tilbage til Manuel. - -## 8. Robusthed - -- [ ] **8.1 Genindlæsning midt i et trin.** Gem og genstart under fx opsamling → marken fortsætter på - samme trin, sæt sendes ud igen, slåkurset hentes fra slåmaskinen. -- [ ] **8.2 Stop mark.** **Stop mark** midt i høst → alle maskiner på marken stopper; høst står **Klar** - igen, pleje/klargøring står **Venter**. -- [ ] **8.3 Ingen vej.** Mark hvis F-markør ikke er forbundet → status "… nåede ikke F…" / "intet lager: - … AutoDrive finder ingen rute …" og nyt forsøg efter 5 min. -- [ ] **8.4 Beskeder.** Grøn besked når en mark/pleje er færdig; rød besked ved fejl (hver kun én gang i træk). -- [ ] **8.5 Ydelse.** Ingen mærkbar lag med fanen åben og mange marker (én mark scannes pr. sekund). - -## 10. Guiden "Opsæt mark" (v1.31) - -- [ ] **10.1 Oversigt.** Klik F22 i tabellen. Forvent: resumé-linjer (Afgrøde, …, Lager) med "[Ret]", hele - status, markør. Ingen lang detaljeliste og ingen markflåde nederst. Knapper: Start nu, Opsæt mark, Markflåde. -- [ ] **10.2 Guiden fra bunden.** Opsæt mark → "Trin 1 af N — Afgrøde". Klik Næste gennem alle trin uden at - scrolle. Tællingen passer med de viste trin (græs: ingen Klargøring; bar mark: ingen Pleje/Lager). -- [ ] **10.3 Valg gemmes.** Vælg fx Hø + Riv, 2 ad gangen, Lager: Vælg selv + en silo → Oversigt viser valgene - → **Kør automatisk**. Forvent: tabellens Plan "Hø + riv (x2)", Kørsel "Auto". Log: `F22 guide gemt: mode=auto …`. -- [ ] **10.4 Annullér.** Åbn guiden, skift afgrøde, Annullér → intet ændret. Samme med ESC (menuen lukkes). -- [ ] **10.5 Ret én linje.** Klik "Lager: …" i oversigten → "Ret: Lager"; skift → **Gem** → tilbage i - oversigten med ændringen; Kørsel (Auto/Manuel) uændret. Tilbage i et Ret-trin fortryder. -- [ ] **10.6 Ret fra Oversigt-trinnet.** I guidens sidste trin: klik en linje → ret → **OK** → tilbage på Oversigt. -- [ ] **10.7 Mål-afgrøde skifter trin.** Kornmark: vælg Græs som afgrøde → trinnet "Afgrødens valg" viser - Ensilage/Hø; tællingen ændres. På Oversigt kun **Kør automatisk** (ingen "Gem uden at starte"). -- [ ] **10.8 Faste maskiner.** Maskiner → Faste = Ja → sæt flueben ved 2 maskiner → gem. Åbn en anden mark: - de 2 vises ikke; linje "2 maskiner er faste på andre marker (F22)". Log: `guide gemt … faste=…`. -- [ ] **10.9 Marksilo.** Mark med silo inden for 150 m: Lager-trinnet spørger "Brug marksiloen?". Ja → resumé "Marksilo". -- [ ] **10.10 Uden valgt mark.** Ingen mark valgt → Opsæt mark → trin "Mark" med listen; klik en mark → Afgrøde. - Næste uden valgt mark giver "Vælg en mark først". -- [ ] **10.11 Markflåde.** Knappen Markflåde viser flåden (flueben, "fast på F22"); klik et flueben gemmes; - **Til marker** går tilbage. -- [ ] **10.12 Klik routes.** Alle Ja/Nej, valg og flueben i guiden reagerer (ingen "GUI-fejl" i statuslinjen/log). - -## 11. Guiden "Opsæt flow" (v1.32) - -- [ ] **11.1 Flows-fanen.** Tavlen øverst; valgt flow (">") har resumé-linjer med "[Ret]" og Status. Ingen - lang detaljeliste og ingen faste felter (Run, Wait-pulje …). Knapper: Start flow, Opsæt flow, Nyt flow, Slet flow. -- [ ] **11.2 Nyt flow.** Nyt flow → "Trin 1 af 8 — Navn" → *Skift navn …* → skriv navn → Næste gennem Retning - (Ud fra bygning), Fra (en fabrik), Varer (sæt en vare på Lager → trinnet Lager dukker op, tællingen bliver 9), - Regler, Vent ved, Traktorer (flueben) → Oversigt → **Start flow**. Forvent: flowet findes, kører, log - `run '…': …` med kind/products/storeBuildingIds. -- [ ] **11.3 Annullér nyt flow.** Nyt flow → Annullér (eller ESC) → intet nyt flow i tavlen. -- [ ] **11.4 Ret én linje.** Klik "Traktorer: …" → "Ret: Traktorer" → sæt flueben → **Gem** → tilbage; traktoren er i flowet. -- [ ] **11.5 Omdøb.** Klik "Navn: …" → tekstfeltet åbner → nyt navn står i tavlen. -- [ ] **11.6 Andre flows skjult.** Traktor i et andet flow vises ikke i trinnet Traktorer; linje "N traktorer kører i andre flows". -- [ ] **11.7 Forsyning.** Opsæt et forsyningsflow: Til = stald, Varer = Vælg selv → varerne stalden tager vises; Regler viser Ture og "Kør hjem fra Wait under". -- [ ] **11.8 Nyt flow fra Oversigt-fanen** hopper til Flows med guiden åben. -- [ ] **11.9 Klik routes.** Alle valg (også pr. vare-politik) reagerer; ingen "GUI-fejl". - ---- - -## 12. Genbrug af Courseplay-kurser (v1.34) - -Log-linjer at kigge efter (`ADSmartPickup: F …`): `nyt kursus beregnes til '' ()`, -`kursus genbrugt ('', m) — ingen ny beregning`, `kursus kopieret fra '' til ''`, -`markens form er ændret — N gemt(e) kursus(er) glemt`. Registret står i `ADSmartPickup_fields.xml` under ``. - -- [ ] **12.1 Første gang = ny beregning.** Stor mark (Dakota 16x) → kultivator sendes ud → log `nyt kursus beregnes … (intet kursus gemt)` - → CP starter; `` står i filen efter gem. -- [ ] **12.2 Genbrug.** Samme maskine til samme mark igen (næste pleje/klargøring, eller efter "Stop" og start) → log - `kursus genbrugt` → CP kører UDEN beregnings-hak og kører hele marken fra start (ikke kun sidste stykke). - ⚠ Usikkert: accepterer CP 8.1 at jobbet startes på det eksisterende kursus uden `onClickGenerateFieldWorkCourse`? - (validate kræver kun `hasCpCourse`). Tegn på fejl: `Courseplay: …no course…`, eller maskinen kører ingenting. -- [ ] **12.3 Efter genstart.** Gem, genindlæs, vent de 2 min → samme maskine til samme mark → `kursus genbrugt` - (CP har selv gemt kurset i CpAssignedCourses.xml; antal punkter matcher registret). -- [ ] **12.4 Kopi fra anden maskine.** En anden maskine med samme CP-bredde til samme mark → `kursus kopieret fra 'A'` - → den kører kurset (ikke A's rest). ⚠ Usikkert: kopieret kursus + lane/vin som i dag med `cpCopyCourse`. -- [ ] **12.5 Ny bredde.** Skift CP-bredden i HUD'en (eller en anden maskine med anden bredde) → `nyt kursus beregnes … (ny bredde)`. -- [ ] **12.6 Spilleren laver selv kursus i CP's HUD** på maskinen → næste udsendelse genbruger det IKKE - (antal punkter passer ikke) → kopi fra en anden maskine eller `… (kurset på maskinen er ændret)`. -- [ ] **12.7 Ændret mark.** Lav marken om (kort-redigering/mark-tilkøb der ændrer omridset) → efter scanning, eller når - marken gemmes i "Opsæt mark", log `markens form er ændret — N … glemt` → næste start beregner nyt og gemmer det. -- [ ] **12.8 Multi-tool.** 2 sæt på samme mark: lederen genbruger kun et kursus lavet til 2 sæt/samme bane; følgeren kopierer - stadig lederens kursus (log `…, multi-kursus kopieret, bane N`), og begge kører hver sin bane. -- [ ] **12.9 Vinmark.** Sprøjte (skip 1) og harve (skip 0) på samme vinmark må ikke genbruge hinandens kursus (vin-indstillinger - indgår i nøglen); høsteren (offset 0) heller ikke. - ---- - -## Kendte usikkerheder (første gang i spillet) - -| Område | Hvad der er gættet | Tegn på fejl | -|---|---|---| -| Vækstfase | `getFieldDataAtWorldPosition` anden returværdi = vækststadie | Høstet stub vises som voksende, eller moden mark som bar | -| Høsterens afgrøder | `spec_cutter.fruitTypes`/`fruitTypeIndices` | Høster vises med "0 afgrøder" | -| Combine-unloader | stationsvalg ud fra silovalget | `ingen aflæsningsstation Courseplay kan bruge` | -| Multi-tool | `multiTools` + `laneOffset` + `Course:setPosition` | Begge maskiner kører samme bane | -| Sideriver | fortegn på forskydningen | Læssevognen kører ved siden af skåret | -| Påfyldning | AutoDrive LOAD til den læssestation moden fandt (AutoDrives eget automatiske mål er slået fra i AutoDrive) | Sættet står ved påfyldningen og læsser ikke, eller kører ikke tilbage | -| Ukrudt | `weedSystem`-værdi ≥ 2 = tæt | Ukrudtsbehandling uden ukrudt, eller aldrig | -| Nysået som "bar" | nysået afgrøde læses som voksende | Marken står "Færdig" efter såning (ingen dobbelt-såning, men ingen næste høst-start før den er moden) | -| Halm-valg i guiden | `fruitType.hasWindrow/windrowName` = afgrøder med halm | Halm-valget mangler ved hvede eller vises ved majs | -| Ballesamler | Courseplays BALE_FINDER + AutoDrive til ballelager | Ballesamleren starter ikke, eller kører ikke fulde læs væk | -| Kursus-genbrug (v1.34) | CP-job startes på maskinens eksisterende kursus uden ny beregning | `Courseplay: no course`, eller maskinen starter midt/sidst i kurset | - -- [ ] **Høsterens rest (v1.32.2).** Modet høster en mark med aflæsningsvogne → ved høstens slutning stoppes - vognene; høsteren med korn i tanken → log `'Mejetærsker' kører rest-læs (N l) til lager` → AutoDrive - tømmer den ved lageret → parkering. Kunne AD ikke tømme den: besked "har stadig korn i tanken … tøm den". - ⚠ Usikkert: kan AutoDrive aflæsse en mejetærskers tank (røret) ved en silo?