# Профили интеграции

Документ фиксирует baseline профили интеграции для модулей `melioration`.

## 1. Профиль A: дождевальная машина

- `adapter_profile_id`: `melioration-machine-controller-v1`
- `module_id`: `melioration-irrigation-machine`
- `source_type`: `machine_controller`
- `transport`: `http ingest`
- `endpoint`: `POST /api/v1/melioration-irrigation-machine/commands/ingest`
- `required_fields`: `[field_id, machine_id, started_at, ended_at, volume_mm|volume_m3]`
- `idempotency`: `id` (или windowed-dedup по ключу события)

## 2. Профиль B: капельный/внутрипочвенный контроллер

- `adapter_profile_id`: `melioration-drip-controller-v1`
- `module_id`: `melioration-irrigation-drip`
- `source_type`: `drip_controller`
- `transport`: `http ingest`
- `endpoint`: `POST /api/v1/melioration-irrigation-drip/commands/ingest`
- `required_fields`: `[field_id, controller_id, started_at, ended_at, volume_mm|volume_m3]`
- `idempotency`: `id` (или windowed-dedup по ключу события)

## 3. Профиль C: станция влажности почвы

- `adapter_profile_id`: `melioration-soil-station-v1`
- `module_id`: `melioration-soil-moisture`
- `source_type`: `soil_station`
- `transport`: `http ingest`
- `endpoint`: `POST /api/v1/melioration-soil-moisture/commands/ingest`
- `required_fields`: `[field_id, depth_cm, moisture_percent, measured_at]`
- `quality_rules`: `depth_cm > 0`, `moisture_percent 0..100`

## 4. Профиль D: weather primary/fallback

- `station_adapter_profile_id`: `melioration-weather-station-v1`
- `service_adapter_profile_id`: `melioration-weather-service-v1`
- `module_id`: `melioration-weather`
- `source_type`: `station + external_weather_service`
- `endpoints`:
  - `POST /api/v1/melioration-weather/commands/ingest`
  - `POST /api/v1/melioration-weather/commands/telemetry`
- `policy`: D-008 (`station primary`, `service fallback`, `anomaly_control`)

## 5. Наблюдаемость и политика качества

- все профили публикуются в `scheme` модулей через `adapter_profile_id`/`ingest_sources`;
- все ingest-каналы защищены windowed-dedup (`90s`) по ключевым полям события;
- weather fallback активируется через `telemetry healthy=false`, в выдаче фиксируется `source_mode=service_fallback`.
