Skip to content

feat: управление кейсами и общими полями проекта - #785

Merged
TThanos3000 merged 2 commits into
devfrom
feat/dev-program-cases-fields
Oct 17, 2026
Merged

TThanos3000 merged 2 commits into
devfrom
feat/dev-program-cases-fields

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

Организатор может сохранять кейсы и общие дополнительные поля проекта из панели управления. Обязательные поля проверяются перед сдачей решения; пустой черновик можно создать и сохранить.

Зачем

Перенести настройку формы программы из Django admin в UI по согласованным макетам.

Реализация / API

Новый manager-only GET/PUT /programs/{id}/management/project-form/: кейсы с количеством проектов, поля с количеством ответов, единое атомарное сохранение, timestamp + revision против устаревших изменений. Контракт описан в docs/program-management-project-form.md.

Использованные кейсы/варианты, типы и удаление полей с ответами защищены. Существующие имена и специальные checkbox/radio сохраняются. Новые обязательные поля действуют перед сдачей ещё не сданных проектов; уже сданные сохраняют статус и ответы. Пустое значение при draft PUT очищает ответ, пропуск ключа сохраняет partial-update семантику. Missing required fields при submit дополнительно возвращают стабильный code для обновления клиентом формы без потери ввода.

UI

В frontend#436: Настройки → Кейсы и поля, редактор по центру и локальный предпросмотр. API выпускается первым.

Permissions

Управление только менеджеру конкретной программы или staff/superuser. Ответы команды по-прежнему редактирует только лидер; дедлайны, team policy и freeze после сдачи сохранены.

Проверки / acceptance

  • PostgreSQL 18 / ICU: 60 targeted API tests, включая одновременное сохранение (200 + 409), rollback, scope, пустой draft, обязательные поля и freeze.
  • Black / flake8 / git diff --check для изменённых Python-файлов.
  • Локальный браузер с реальным API: атомарное сохранение и reload, used case, конфликт версий, preview; внешнее файловое хранилище заменено тестовым transport.
  • Полный backend CI на PostgreSQL 15: 1075 тестов; checks модели/миграций и отдельные locking tests прошли.

Не проверено / migration

Live organizer на dev до деплоя не проверен. Файл хранится как URL в value_text: исправлено повторное открытие проекта со старым сериализатором, добавлен GET-regression test. Миграция схемы не требуется. Production не входит в scope.

Dev deployment

Deploy Dev passed, runtime eeb8445; admin/Celery smoke and new GET/PUT authentication guards checked.

@TThanos3000
TThanos3000 merged commit eeb8445 into dev Oct 17, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants