Repository navigation
feat: управление критериями оценки программы - #786
Merged
Merged
Conversation
9 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.
Что изменено
Организатор может управлять общим набором критериев программы через GET/PUT
/programs/{id}/management/criteria/. После первой сохранённой оценки весь набор фиксируется, включая формулировки и шкалы. Ноль и «Нет» считаются сохранёнными оценками.Зачем
Переносим настройку оценивания из Django admin в панель организатора. Согласованный дизайн: https://www.figma.com/design/tvog0fpEgWgEtr7KUTjbyE?node-id=267-3220
Реализация
Атомарная замена набора под блокировкой программы; те же блокировки при записи экспертных оценок. Sticky freeze, защита Criteria model/admin, совместимость неизменённых legacy float/неограниченных шкал. «Комментарий» создаётся только при создании программы. Проверка целых конечных баллов и диапазона.
API
Новый manager endpoint возвращает updated_at, revision, locked, supported_types, criteria. PUT требует expected_updated_at и expected_revision; 409 criteria_locked/stale_criteria сохраняют текущую конфигурацию.
Существующий GET
/rate-project/{program_id}дополнен criteria_revision. POST принимает старый массив либо{expected_revision,scores}. Для программ, настроенных через новую панель, устаревший/отсутствующий revision возвращает 409 criteria_changed. Для остальных программ прежние массивы совместимы. Пути, success shape, распределения, лимиты и экспертные permissions сохранены.UI
Angular PR PROCOLLAB-github/procollab#437 поставляется отдельно, после API: пятый settings tab «Оценивание», центрированный редактор и общий preview/expert form. Здесь UI не меняется.
Permissions
Manager endpoint ограничен организатором конкретной программы/staff по общей политике панели. Экспертное оценивание остаётся за экспертами программы с существующей проверкой назначения. Admin/model блокируют изменение зафиксированных критериев.
Проверки
makemigrations --check --dry-run: no changes; migration применяется локально.Acceptance criteria
Не проверено
Авторизованные сценарии на удалённом dev не проверялись: подключённый браузерный инструмент не смог инициализироваться. Организатор/эксперт проверены локально с реальными API/БД. Удалённый анонимный smoke: 18 checks PASS, без page/static errors.
Риски / migration
Миграция 0021 добавляет sticky lock/version и фиксирует программы с существующими оценками. Исторические даты первой оценки неизвестны и не выводятся в UI. Сначала API с миграцией, затем Angular. Production rollout не входит в задачу.
DEV rollout
Миграция 0021 выполнена владельцем БД, app read/UPDATE проверены. Deploy Dev PASS: source 7596455, web/Celery используют один проверенный образ; pending migrations отсутствуют, admin smoke и Celery ping PASS. Angular #437 также внедрён.