3.6 KiB
3.6 KiB
title: sched admin-client openapi — F&F раунд 2026-08-18
type: concept
tags: [sched, ff, openapi, admin-api, python, codegen, f&f-round]
related: openapi-generator-3-1-spec-gotchas, sched-fnf-r8-verification-stand
updated: 2026-08-18
sched admin-client openapi — F&F раунд
Живая проверка claim'а sched openapi-spec: «клиент на любом ЯП одной командой». Вердикт: claim подтверждён с оговорками — генерация одной командой работает, но 3.1-спека до «любого ЯП без правок» не дотягивает (8 операций требуют raw-обхода).
Что делал / ожидал / получил
| Что | Python-клиент из опубликованной спеки @sched/admin-api/openapi.json 0.1.2 (verdaccio subpath-export, идентична репо), openapi-generator 7.24.0 (-g python, JDK 25) |
| Ожидал | типизированная десериализация всех ответов, зелёный сьют, зелёный smoke |
| Получил | сьют 24/24 (3 прогона), smoke 19/19, все 15 путей/21 операция живые — НО клиент в сыром виде падает на 8 операциях (pydantic ValidationError) из-за пробелов спеки; обход — raw_ops.py (сгенерированный пакет не тронут) |
Deliverables
- Код:
sched/examples/admin-client-python/— коммитe89e868(запушен):openapi.json(пин 0.1.2),generate.ps1(одна команда),sched_admin_client/(сгенерированный, checked-in),tests/(TDD 24/24),smoke.py(19/19),raw_ops.py(обход),README.md(F&F-таблица по всем путям). - Репорт:
sched/.agents/inbox/2026-08-18T19-15-43Z-admin-fnf-openapi-client-report.md(F&F-формат: что→ожидал→получил→дока+гладкое). - Таска:
[sched-admin-client-openapi]🟢 закрыта 2026-08-18.
Находки (в репорт, спеку НЕ чинил — импл sched, TDD)
- F-1
/health: спекаsecurity: [], daemon с ключом 401-ит даже health (письменный стенд :8080 непригоден для безключевых клиентов). - F-2 (главный) mutation-ответы
{}вместо{task/run/schedule:…}→ генераторы врут; объявить схемы ответов. - F-3
const: true→ строковый enum('true')ломает boolean. - F-4 oneOf+discriminator
Schedule→actual_instance=None, контент только через raw JSON. - F-5 top-level
dedupKeyв POST /schedules молча игнорится (ключ — внутриschedule). - Механика генераторных граблей — openapi-generator-3-1-spec-gotchas.
Как повторить
cd sched/examples/admin-client-python
$env:JAVA_HOME = "C:\Program Files\Eclipse Adoptium\jdk-25.0.2.10-hotspot"
.\generate.ps1
pip install -r requirements.txt pytest
SCHED_ADMIN_URL=http://127.0.0.1:8127/api python -m pytest tests/ -v
python smoke.py --url http://127.0.0.1:8127/api
Стенд раунда: published @sched/daemon 0.3.4, --admin-port 8127, NO AUTH,
scratch sqlite (/tmp/sched-acpy-stand/acpy.db). Письменный :8080 — под ключом
(SCHED_ADMIN_KEY=dev-key), :8123 — стейл-билд (health 0.1.8, нет POST /tasks).