Сценарии E2E#
Scenario M-001: machine + drip + rain => field water balance#
Цель: проверить, что события полива машиной, капельным контуром и осадки собираются в корректный агрегат field_water_balance.
Шаги:
Установить модули
melioration-irrigation-machine,melioration-irrigation-drip,melioration-weather,melioration-field.Отправить ingest:
POST /api/v1/melioration-irrigation-machine/commands/ingest;POST /api/v1/melioration-irrigation-drip/commands/ingest;POST /api/v1/melioration-weather/commands/ingest.
Открыть карточку
Field Water Balance.Проверить в строке поля:
заполнены
machine_mm,drip_mm,rain_mm;volume_mm = machine_mm + drip_mm + rain_mm.
Покрытие:
frontend e2e:
frontend-vue/src/modules/melioration-field/e2e/water-balance.spec.js.backend integration:
backend-go/internal/api/plugins/melioration/plugin_test.go(агрегация и reconciliation).
Scenario M-002: station gap => service fallback (D-008)#
Цель: проверить, что при telemetry healthy=false модуль weather использует внешний сервис как primary для расчета осадков.
Шаги:
Установить модуль
melioration-weather.Отправить
POST /api/v1/melioration-weather/commands/telemetryсhealthy=false.Отправить
POST /api/v1/melioration-weather/commands/ingestсо значениямиstation_precip_mmиservice_precip_mm.Открыть карточку
Weather.Проверить:
source_mode=service_fallback;used_precip_mm == service_precip_mm.
Покрытие:
frontend e2e:
frontend-vue/src/modules/melioration-weather/e2e/weather-fallback.spec.js.backend integration:
backend-go/internal/api/plugins/melioration/plugin_test.go(TestWeatherTelemetryFallback).
Scenario M-003: A/B/C switch + auto-degrade from C#
Цель: проверить, что при потере критичной телеметрии режим C автоматически деградирует в B (или заданный fallback), и повторный переход в C блокируется до восстановления телеметрии.
Шаги:
Последовательно установить режимы
A,B,Cдляscope_type=field,scope_id=field-001через:POST /api/v1/melioration-control-mode/commands/set.
Отправить событие потери телеметрии:
POST /api/v1/melioration-weather/commands/telemetryтело:
{ "healthy": false, "fallback_mode": "B" }.
Проверить ответ telemetry:
auto_degraded=true;mode.mode="B";присутствует
auditсобытиеtelemetry_unhealthy_auto_degrade.
Повторно попытаться включить
Cприhealthy=false:POST /api/v1/melioration-control-mode/commands/setсmode=C.
Проверить отказ:
409 policy_violationс причинойtelemetry_unhealthy.
Покрытие:
backend e2e/integration:
backend-go/internal/api/plugins/melioration/plugin_test.go(TestControlModeE2ESwitchAndAutoDegradeOnTelemetryFailure).