fix(flows): run starter selv om én valgt bygning mangler markør; advarsel nævner bygningen (v1.14.2.0)

This commit is contained in:
2026-09-24 01:39:12 +02:00
parent 8ec0853fae
commit 1dd2e8971d
3 changed files with 31 additions and 5 deletions
+22 -4
View File
@@ -573,11 +573,26 @@ local function getCargoTarget(adEnv, run, vehicle)
return ADOutbound.planCargoTarget(adEnv, run, vehicle, fillType, liters) or false return ADOutbound.planCargoTarget(adEnv, run, vehicle, fillType, liters) or false
end end
-- Én gang pr. (run, bygningsliste): valgte bygninger uden markør springes over.
local warnedMissing = {}
local function warnMissingMarkers(run, missing)
local text = table.concat(missing, ", ")
if warnedMissing[run.id] == text then
return
end
warnedMissing[run.id] = text
Logging.warning(ADRunsController.LOG_PREFIX .. "run '%s': %s har ingen AD-markør ved triggeren (inden for 40 m) og springes over", tostring(run.name), text)
end
local function validateOutboundVehicle(adEnv, run, vehicle, result) local function validateOutboundVehicle(adEnv, run, vehicle, result)
local resolved = ADRunsController.resolveMarkers(adEnv, run) local resolved = ADRunsController.resolveMarkers(adEnv, run)
if resolved.missing[1] ~= nil then if resolved.missing[1] ~= nil then
result.reason, result.missingBuilding = "noMarker", resolved.missing[1] -- afvis kun når INGEN valgt bygning (eller rå markør) har en markør; ellers kør med de andre
return result if #(run.sourceWayPointIds or {}) == 0 then
result.reason, result.missingBuilding = "noMarker", resolved.missing[1]
return result
end
warnMissingMarkers(run, resolved.missing)
end end
if #getRunSources(adEnv, run, ADSmartPickup.getFarmId(vehicle)) == 0 then if #getRunSources(adEnv, run, ADSmartPickup.getFarmId(vehicle)) == 0 then
result.reason = "noSource" result.reason = "noSource"
@@ -645,8 +660,11 @@ function ADRunsController.validateVehicle(adEnv, run, vehicle)
end end
local resolvedIn = ADRunsController.resolveMarkers(adEnv, run) local resolvedIn = ADRunsController.resolveMarkers(adEnv, run)
if resolvedIn.missing[1] ~= nil then if resolvedIn.missing[1] ~= nil then
result.reason, result.missingBuilding = "noMarker", resolvedIn.missing[1] if #ADRunsController.getRunTargets(run) == 0 then
return result result.reason, result.missingBuilding = "noMarker", resolvedIn.missing[1]
return result
end
warnMissingMarkers(run, resolvedIn.missing)
end end
local hasTarget = false local hasTarget = false
for _, wayPointId in ipairs(ADRunsController.getRunTargets(run)) do for _, wayPointId in ipairs(ADRunsController.getRunTargets(run)) do
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml version="1.0" encoding="utf-8" standalone="no"?>
<modDesc descVersion="107"> <modDesc descVersion="107">
<author>masterdraco</author> <author>masterdraco</author>
<version>1.14.1.0</version> <version>1.14.2.0</version>
<title> <title>
<en>AD Smart Pickup</en> <en>AD Smart Pickup</en>
</title> </title>
+8
View File
@@ -664,6 +664,14 @@ ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"shed"}, sourceWayP
local cfValidation = ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, flowOut.id), cfVehicle) local cfValidation = ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, flowOut.id), cfVehicle)
check("CF4 noMarker", cfValidation.reason, "noMarker") check("CF4 noMarker", cfValidation.reason, "noMarker")
check("CF4 hvilken bygning", cfValidation.missingBuilding, "Palleskur") check("CF4 hvilken bygning", cfValidation.missingBuilding, "Palleskur")
-- CF4b: ÉN bygning uden markør blandt flere med markør -> start alligevel, advar om den ene
ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"barn1", "shed"}, sourceWayPointIds = {}})
logLines = {}
local cfValidation2 = ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, flowOut.id), cfVehicle)
check("CF4b ikke afvist pga. markør", cfValidation2.reason ~= "noMarker", true)
local warned = false
for _, line in ipairs(logLines) do if line:find("Palleskur", 1, true) and line:find("springes over", 1, true) then warned = true end end
check("CF4b advarsel nævner bygningen", warned, true)
-- CF5: flow-række til tavlen -- CF5: flow-række til tavlen
ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"barn1"}, products = {{fillType = "SUGAR", policy = "sell"}, {fillType = "FORAGE", policy = "store"}}, collectRound = true}) ADRunsController.updateRun(flowOut.id, {sourceBuildingIds = {"barn1"}, products = {{fillType = "SUGAR", policy = "sell"}, {fillType = "FORAGE", policy = "store"}}, collectRound = true})
ADRunsController.assignVehicle(flowOut.id, cfVehicle) ADRunsController.assignVehicle(flowOut.id, cfVehicle)