Repository navigation
feat(programs): solution storage and creation API (BE01) - #819
Merged
Merged
Conversation
Merged
11 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что изменено
Программа может хранить заявку как ProgramSolution с вложенными участниками, приглашениями, ответами и снимком сдачи. Добавлены контекст, идемпотентное создание и приватное чтение/список по C00 1.0.0. Обычный Project для нового решения не создается.
Зачем
ТЗ и согласованный D00 v3: программы КЧ/хакатонов получают свою сущность заявки и настраиваемые поля. Scope этого PR — BE01, основа для последующих этапов.
Реализация
Аддитивная миграция 0030; unique/check constraints; капитан и его member создаются атомарно под блокировкой программы. Повтор возвращает существующий ID без переименования, включая запрос после дедлайна. Набор C00 и отчет проверки:
docs/product/program-solutions-be01.md.API
GET
/programs/{id}/solution-context/, GET/POST/programs/{id}/solutions/, GET/programs/{id}/solutions/{solution_id}/. Snake_case, strict input, C00 error envelope. Точный current_application различает solution/project/program-link ID; неоднозначность дает 409. До BE02–BE06 изменяющих команд состава, приглашений и сдачи нет, их permissions=false.UI
В этом репозитории UI не меняется. FE01 использует те же копии OpenAPI/моков; реальная локальная связка Angular/Django/PostgreSQL проверена совместно.
Permissions
Создание по регистрации/исключению менеджера и дедлайну. Чтение своей команды либо организатора/администратора; экспертные назначения и публикация отложены до BE07/BE08. Чужой program/solution ID дает 404. Старое создание/привязка Project закрыты только в явно включенном solution режиме.
Проверки
Acceptance criteria
Не проверено
Расширенный локальный запуск Windows прервался в native PDF rendering сертификата; он не считается пройденным. Полные наборы на Linux PostgreSQL и SQLite прошли. Production, BE10 migration и QA01 полного приглашения/сдачи не выполнялись и не входят в BE01.
Риски / migration
Режим по умолчанию legacy_project. Сначала backend с миграциями, затем FE01. Включение для реальных участников — только REL01 после BE02–BE09, FE02–FE08 и QA01. Старые программы и данные автоматически не переносятся. Merge и deployment выполняет пользователь.
Парный frontend PR: PROCOLLAB-github/procollab#501 .