# Спецификация: `GET /api/v1/programs/active` (единица 6) ## Назначение Активная версия программы атлета (requirements Ф-8.5; телефон перечитывает программу после 409 или по запросу пользователя). ## Запрос / ответ - Запрос: без параметров (атлет — из middleware). - `200`: ```json { "program_id": 3, "version_id": "uuid", "version": 5, "based_on_version": 4, "author": "rules", "status": "active", "body": { "...схема LLM-планирования разд. 2, как в БД..." }, "rationale": "«...»", "created_at": "..." } ``` - `404` — активной версии нет (программа не создана или все версии archived). - `401` — middleware. ## Логика 1. `ProgramRepository.Select` (программа атлета). 2. `ProgramVersionRepository.Select` (`p_program_id`, `p_status = "active"`). 3. `ProgramVersionRepository.Get` (строка с `body`). 4. Активной версии нет → `404 {"error": "no_active_program"}`. ## Тесты | # | Проверка | Ожидание | |---|---|---| | 1 | Есть активная версия | 200, `status = "active"`, `body` не пуст | | 2 | Программы нет | 404 | | 3 | Все версии archived | 404 | | 4 | Программа другого атлета не видна (🛡) | 404 |