VEU.WathBody/1-docs/4-modules/m08-admin-web/api_specs/04-programs.md

1.8 KiB
Raw Permalink Blame History

Спецификация 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 — статус не позволяет.