Архитектура#
1. Модульная декомпозиция (D-005)#
industry.melioration.fieldkey entity:
field_water_balance
industry.melioration.irrigation_machinekey entity:
machine_irrigation_event
industry.melioration.irrigation_dripkey entity:
drip_irrigation_event
industry.melioration.soil_moisturekey entity:
soil_moisture_snapshot
industry.melioration.weatherkey entity:
weather_observation
Принцип D-002 соблюдается: один модуль — одна ключевая сущность, с допустимым обогащением через агрегаты.
2. Ключевые сущности#
field— поле/участок.field_zone— зона поля.irrigation_campaign— период полива.water_source— источник воды (machine,drip_subsurface,rain).field_water_balance— агрегированный водный баланс по полю/зоне.soil_moisture_snapshot— факт влажности почвы.weather_observation— факт метеопараметров.
Детализированная модель атрибутов и инвариантов вынесена в data-model.md.
3. Поток данных и обогащение#
irrigation_machineпубликует события полива (объем/время/зона).irrigation_dripпубликует события капельного/внутрипочвенного полива.weatherпубликует осадки и погодные параметры:локальная станция как primary (D-008);
внешний сервис как fallback и для anomaly-check.
soil_moistureпубликует снимки влажности по глубинам/зонам.fieldагрегирует данные по источникам и строитfield_water_balance:сколько воды получено;
когда получено;
из какого источника получено.
4. Контур источников воды#
Нормализованный источник для водного баланса:
machine— широкозахватные дождевальные машины;drip_subsurface— капельное/внутрипочвенное орошение;rain— атмосферные осадки.
Для каждого источника хранить:
source_idsource_typeevent_timevolume_mm(primary)volume_m3(derived fromvolume_mmи площади поля/зоны)confidenceorigin(sensor,controller,external_weather_api)
Правило D-008 для rain:
primary_reading— значение локальной станции;fallback_reading— значение внешнего сервиса (используется при gap/timeout локального источника);anomaly_flag— признак значимого расхождения источников.
5. Интеграция с ядром#
API-подход: общий контракт
/api/v1/<resource>/list|scheme.Модули подключаются через общий module manager.
Права и сессии через общую auth/permission модель.
Тревоги: D-004 (
status+ отраслевой alarm-bus).
6. Минимальные API-группы для MVP#
/api/v1/melioration-field/*/api/v1/melioration-alerts/*/api/v1/melioration-irrigation-machine/*/api/v1/melioration-irrigation-drip/*/api/v1/melioration-soil-moisture/*/api/v1/melioration-weather/*/api/v1/melioration-control-mode/*
Для каждой группы обязателен list/scheme контракт.
Для интеграционных контуров MVP дополнительно поддерживаются:
POST /api/v1/melioration-irrigation-machine/commands/ingestPOST /api/v1/melioration-irrigation-drip/commands/ingestPOST /api/v1/melioration-soil-moisture/commands/ingestPOST /api/v1/melioration-weather/commands/ingestPOST /api/v1/melioration-weather/commands/telemetry(health/fallback policy D-008)
/api/v1/melioration-alerts/list рассчитывает и возвращает тревоги:
water_deficit(дефицит влаги),overwatering(переувлажнение), по агрегатуfield_water_balance+ последнемуsoil_moisture_snapshot.
6.1. Режим управления поливом (D-009)#
A(advisory-only): система выдает рекомендации, запуск полива выполняет оператор.B(semi-auto, default MVP): система формирует действия, оператор подтверждает запуск.C(full-auto): система запускает сценарии автоматически по правилам.
Правила переключения:
режим хранится в конфигурации площадки/хозяйства и может быть переопределен для поля;
каждое переключение требует аудита (
who/when/from/to/reason);для режима
Cобязательны валидные правила, актуальная телеметрия и корректное состояние источников.
Правило отказобезопасности:
при потере критичных данных (
weather,soil,irrigation telemetry) система выполняет деградациюC -> B(илиAпо policy) и формирует событие в alarm/status контуры.endpoint
POST /api/v1/melioration-weather/commands/telemetryподдерживаетfallback_modeи возвращаетauto_degraded=true, если деградация была применена автоматически.
7. KPI и операционные метрики#
фактический водный баланс по полю/зоне (сутки/неделя/цикл);
доля воды по источникам (
machine,drip_subsurface,rain);расхождение «план полива vs факт»;
отклонения влажности почвы от целевого диапазона;
прогноз дефицита влаги с учетом прогноза погоды.
тревоги дефицита/переувлажнения с severity/priority для alarm-контура.
8. Риски и меры#
Риск: конфликты единиц измерения из разных источников.
Мера: dual-модель D-007 (
mmprimary +m3derived) и единая формула пересчета через площадь.
Риск: рассинхрон времени между контроллерами и weather API.
Мера: обязательный
event_time_utcи окно дедупликации.
Риск: двойной учет осадков и искусственного полива.
Мера: source-tagging и reconciliation правила в
fieldмодуле.
Риск: расхождение осадков между локальной станцией и внешним сервисом.
Мера: D-008 policy (station primary, service fallback, anomaly control).