# Архитектура

## 1. Целевая модульная декомпозиция (MVP)

Состав swine-модулей на MVP:

1. `industry.swine.climate`
   - key entity: `barn_climate_profile`
   - ответственность: климат-профиль секции/корпуса, уставки и возрастные режимы
   - API namespace: `/api/v1/swine-climate/*`
2. `industry.swine.feeding`
   - key entity: `feeding_plan_snapshot`
   - ответственность: планы кормления по группам, фактическое потребление и отклонения
   - API namespace: `/api/v1/swine-feeding/*`
3. `industry.swine.water`
   - key entity: `water_consumption_snapshot`
   - ответственность: нормативы/факты водопотребления, давление линии, диагностика расхода
   - API namespace: `/api/v1/swine-water/*`
4. `industry.swine.production`
   - key entity: `production_batch_kpi`
   - ответственность: KPI продуктивности по технологическим группам/партиям
   - API namespace: `/api/v1/swine-production/*`
5. `industry.swine.biosecurity`
   - key entity: `biosecurity_event`
   - ответственность: события биобезопасности, карантинные статусы, контроль нарушений
   - API namespace: `/api/v1/swine-biosecurity/*`

## 2. Правила ownership и обогащения

- Каждый модуль владеет только своей `key_entity` (правило D-002).
- Допустимо read-only обогащение:
  - `swine-production` использует агрегаты из `swine-feeding` и `swine-water`;
  - `swine-biosecurity` может добавлять риск-флаги для `swine-production`;
  - `swine-climate` обогащает тревожный контур данными среды.
- Кросс-модульные вычисления публикуются как агрегаты, без передачи ownership сущности.

## 3. Интеграция с ядром платформы

- Контракты API: `/api/v1/<resource>/scheme|list` + command/ingest endpoint-ы.
- Envelope: `item/list` + `meta.request_id` + `meta.timestamp`.
- Изоляция данных/прав: `tenant_id`, `industry_code=swine`, `site_id`.
- Общие платформенные контуры: `status`, `modules`, `auth`, `industryalarms`, `industryprofiles`.
- Версионирование отраслевых модулей: `MAJOR.MINOR.PATCH` и единая `MAJOR`-линия в пределах отрасли.
