# Задачи

Формат статусов: `[ ]` не начато, `[~]` в работе, `[x]` готово.

## 0. Инициализация пакета

- [x] Зафиксировать D-005 и создать пакет `melioration`.
- [x] Утвердить решения D-007..D-009 (`decisions.md`).
- [x] D-007 принят: `mm` primary, `m3` derived.
- [x] D-008 принят: локальная метеостанция `primary`, внешний сервис `fallback` + anomaly control.
- [x] D-009 принят: MVP режим `B` по умолчанию + переключение в `A/C`.

## 1. Модель данных

- [x] Спроектировать сущности `field`, `field_zone`, `water_source`.
- [x] Спроектировать `field_water_balance` (агрегированная модель).
- [x] Спроектировать `machine_irrigation_event`.
- [x] Спроектировать `drip_irrigation_event`.
- [x] Спроектировать `soil_moisture_snapshot`.
- [x] Спроектировать `weather_observation`.
- [x] Спроектировать `control_mode` и `control_mode_audit` для режимов `A/B/C`.

## 2. Backend API

- [x] Реализовать `melioration-field/scheme|list`.
- [x] Реализовать `melioration-irrigation-machine/scheme|list`.
- [x] Реализовать `melioration-irrigation-drip/scheme|list`.
- [x] Реализовать `melioration-soil-moisture/scheme|list`.
- [x] Реализовать `melioration-weather/scheme|list`.
- [x] Реализовать агрегирующий endpoint водного баланса поля/зоны.
- [x] Реализовать API переключения режима полива (`A|B|C`) с аудитом.
- [x] Реализовать API деградации режима (`/melioration-control-mode/degrade`) по D-009.

## 3. Интеграции

- [x] Подключить интеграцию широкозахватных дождевальных машин (adapter profile `melioration-machine-controller-v1`, ingest runtime и scheme metadata).
- [x] Подключить интеграцию капельного/внутрипочвенного орошения (adapter profile `melioration-drip-controller-v1`, ingest runtime и scheme metadata).
- [x] Подключить локальную метеостанцию (adapter profile `melioration-weather-station-v1`, health-policy и fallback переключение).
- [x] Подключить внешние погодные сервисы (adapter profile `melioration-weather-service-v1`, D-008 fallback и anomaly control).
- [x] Реализовать reconciliation данных осадков и полива с D-008 policy (`station primary`, `service fallback`).

## 4. Алгоритмы

- [x] Реализовать расчет водного баланса по источникам и времени.
- [x] Реализовать нормализацию единиц (`mm`/`m3` + площадь).
- [x] Реализовать дедупликацию событий из нескольких каналов (добавлен windowed-dedup в ingest для machine/drip/soil/weather + тест покрытия).
- [x] Реализовать алерты дефицита/переувлажнения по данным soil + weather + irrigation.
- [x] Реализовать policy деградации режима (`C -> B/A`) при потере критичных данных.

## 5. Frontend

- [x] Добавить manifests melioration-модулей в реестр.
- [x] Добавить карточку `Field Water Balance`.
- [x] Добавить карточки `Irrigation Machine`, `Drip/Subsurface`, `Soil Moisture`, `Weather`.
- [x] Добавить представление источников воды и долей по периоду.
- [x] Добавить UI-переключатель режима полива `A/B/C` (с индикацией ограничений режима `C`).

## 6. Тестирование

- [x] Backend unit tests по melioration plugin-модулям.
- [x] Contract tests по melioration API.
- [x] E2E сценарий: полив машиной + дождь + капельный, корректный баланс в модуле поля (`frontend-vue/src/modules/melioration-field/e2e/water-balance.spec.js`).
- [x] E2E сценарий: пропуск данных метеостанции и fallback на внешний weather service (D-008) (`frontend-vue/src/modules/melioration-weather/e2e/weather-fallback.spec.js`).
- [x] E2E сценарий: переключение режимов `A/B/C` и автоматическая деградация из `C` при сбое телеметрии.
