1.8 KiB
1.8 KiB
Спецификация 04: программы (AdminProgramsController)
Источники: Ф-9.3, Ф-10.3, m03 (ProgramStore), 🛡4 module_reqs.
1. Эндпоинты (Bearer)
| Метод | Путь | Ответ |
|---|---|---|
| GET | /api/admin/programs?athleteId |
{"items":[{versionId, version, status, author, basedOnVersion, rationale, createdAt}]} (без body) |
| GET | /api/admin/programs/{versionId}?athleteId |
версия с body (json как есть) |
| POST | /api/admin/programs/{versionId}/activate?athleteId |
200 {"version":N,"status":"active"} |
| POST | /api/admin/programs/{versionId}/apply?athleteId |
200 {"versionId":"…","version":N,"status":"active"} |
2. Семантика
- Активация: только
draft(иначе 400);ProgramStore.Activate— прежняя active → archived (гарантия БД). Повторная активация archived — 400 (m03). - Применение предложения правил (Ф-9.3): только rules-draft;
ProgramStore.CreateDraft(athleteId, body=rules-draft.body, author=admin, rationale=оригинал + " (применено из консоли)")→ активация новой версии. 🛡4: оригинальный rules-draft не меняется (остаётся draft — владелец может его архивировать активацией другой версии; дедуп-замок m05 снимается тем, что новая active версия уже существует). Не-rules версия на apply → 400. - 🛡3: других записей нет (редактирование body — вне v1).
3. Ошибки
401; 404 — версия/атлет не найдены; 400 — статус не позволяет.