# `src.break_insert` Открытие перерыва (Ф-14): `auto` — сервер по пропускам, `manual` — телефон. | Параметр | Тип | Обяз. | Описание | |---|---|---|---| | `p_athlete_id` | int | да | атлет (🛡) | | `p_id` | uuid | да | uuid записи — телефон/сервер | | `p_kind` | text | нет | `illness`/`vacation`/`workload`/`injury`/`other`; NULL — атлет ещё не ответил | | `p_source` | text | да | `auto` / `manual` | | `p_started_on` | date | да | первый пропущенный день | | `p_planned_return` | date | нет | предполагаемый возврат (ответ атлета, Ф-14.2) | | `p_note` | text | да | причина-текст ('' — нет) | **Возвращает** `uuid` — id перерыва. **Логика/особенности:** 🛡 идемпотентность по PK uuid (повтор → существующий id); `source='auto'` создаёт только сервер — от sync принимается только `manual` (проверка на стороне API; БД фиксирует оба значения); delete нет — журнал. ## Пример вызова ```sql SELECT src.break_insert(1, 'eeee…', NULL, 'manual', '2026-10-20', '2026-10-27', 'TEST-отпуск'); ``` ## Тесты | № | Тип | Условие | Ожидаемый результат | |---|---|---|---| | 1 | основной сценарий | manual без ответа (kind NULL) | uuid = `p_id`; kind NULL | | 2 | граничный случай | повтор `p_id` | тот же uuid; строка одна | | 3 | исключение | `p_source = 'other'` | исключение CHECK | | 4 | исключение | `p_kind = 'spacetravel'` | исключение CHECK |