# Базовая модель данных

## 1. `house`

Назначение: объект птичника внутри `tenant/site`.

Таблица: `poultry_house`.

Ключевые поля:

- `id` (PK)
- `tenant_id`, `site_id`
- `code`, `name`
- `capacity_birds`
- `ventilation_profile`
- `status` (`active|maintenance|archived`)
- `timezone`
- `created_at`, `updated_at`

DTO: `HouseDTO` (`backend-go/internal/domain/poultry/model_core.go`).

## 2. `batch`

Назначение: производственный цикл (бройлер/несушка) в конкретном птичнике.

Таблица: `poultry_batch`.

Ключевые поля:

- `id` (PK)
- `tenant_id`, `site_id`, `house_id`
- `batch_code`
- `subtype` (`poultry.broiler|poultry.layer`)
- `start_date`, `planned_close_date`
- `bird_count_start`
- `current_age_days`
- `status` (`planned|active|closed|canceled`)
- `created_at`, `updated_at`

DTO: `BatchDTO`.

## 3. `age_phase`

Назначение: возрастная фаза партии с нормативами климата.

Таблица: `poultry_age_phase`.

Ключевые поля:

- `id` (PK)
- `subtype`
- `phase_code`, `name`
- `age_day_from`, `age_day_to`
- `target_temp_c`
- `target_humidity_min`, `target_humidity_max`
- `target_light_hours`
- `updated_at`

DTO: `AgePhaseDTO`.

## 4. `climate_profile`

Назначение: применяемый набор уставок микроклимата для `house + age_phase`.

Таблица: `poultry_climate_profile`.

Ключевые поля:

- `id` (PK)
- `tenant_id`, `site_id`, `house_id`
- `subtype`, `age_phase_id`
- `temp_setpoint_c`, `temp_min_c`, `temp_max_c`
- `humidity_setpoint_percent`, `humidity_min_percent`, `humidity_max_percent`
- `co2_max_ppm`, `nh3_max_ppm`
- `min_ventilation_percent`
- `heating_enabled`
- `version_id`, `state`, `change_note`, `rollback_of`
- `updated_at`

DTO: `ClimateProfileDTO`.

## 5. Связи

- `batch.house_id -> house.id`
- `climate_profile.house_id -> house.id`
- `climate_profile.age_phase_id -> age_phase.id`
- `batch.current_age_days` используется для выбора активной `age_phase`.
