Skip to content

feat: real assignments for the expert cabinet - #820

Merged
TThanos3000 merged 1 commit into
devfrom
feat/dev-expert-cabinet-20261024
Oct 24, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
feat/dev-expert-cabinet-20261024

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Что изменено

Кабинет эксперта может получить собственные реальные назначения через GET /evaluation/programs/?include=projects: оставшиеся и завершенные проекты, программу, кейс и доступность оценки.

Зачем

Новый кабинет должен показывать существующие назначения и реальные состояния вместо выдуманных черновиков оценок. Дизайн: https://www.figma.com/design/tvog0fpEgWgEtr7KUTjbyE?node-id=959-4431.

Реализация

Read-only projection использует общую SQL-проверку завершенности назначения, включая нулевые баллы, логические и текстовые критерии. Поиск и фильтр программы работают на сервере; страницы по 20, ближайший срок первым, программы без срока последними. Счетчики вкладок не зависят от фильтров. В выдаче только опубликованные проекты с действующей связью программы.

API

Без include=projects прежний ответ не меняется. Расширение добавляет projects с count/limit/offset/pending/completed/unavailable/results. Параметры status, q, program_id, limit, offset валидируются. Строка содержит assignment_id/project_id/program_id/name/case_name/is_completed/can_rate/blocked_reason. Нет новых endpoints записи, моделей и миграций.

UI

Angular использует этот read contract отдельным PR. Форма оценки не менялась. Локальный браузер проверяет реальные запросы к изолированному Django/PostgreSQL с синтетическими назначениями.

Permissions

Только текущий пользователь, его назначения и текущее членство эксперта в программах. Выдача дополнительно ограничена программами возвращаемой сводки. Глобальная административная роль не дает чужую нагрузку. Draft/unlinked проекты и чужие программы не раскрываются. Cache-Control: no-store сохранен. Правила сдачи, оценки, приглашений и доступа не менялись.

Проверки

  • Checked by source: legacy contract, assignment scope, canonical case mapping, rating rules, existing consumers.
  • Checked by tests: manage.py test project_rates.tests partner_programs.tests.test_assignment_analytics_api — 139 passed, локальный PostgreSQL 18.
  • flake8 по четырем затронутым Python-файлам — passed.
  • makemigrations --check --dry-run — No changes detected.
  • git diff --check — passed.
  • Full source CI: PostgreSQL 1365 tests + 39 locking/migration checks; legacy CI 1365 tests — passed.
  • Deploy Dev succeeded on 44df38af746690d2733c86c8d67b29bc39fbfc84; runtime image/source identity verified.

Acceptance criteria

  • AC1: собственные назначения, current membership, anonymous/foreign-program negatives — API tests.
  • AC2: общий completion, zero/bool/text/no-numeric и изоляция программ — API tests.
  • AC3: срок, отсутствие критериев, сдача, своя команда, legacy limit — tests и source trace; submit не менялся.
  • AC4: поиск, фильтр, сортировка, paging >20 и независимые счетчики — API tests.
  • Existing invitation and assignment analytics regression — включена в 139 тестов.

Не проверено

Реальная DEV-сессия конкретного эксперта до выкладки. Штатные CI и DEV deployment checks завершены успешно.

Риски / migration

Сначала выложить backend, затем Angular. Read projection добавляет запросы к существующему summary; детализация ограничена текущей страницей. Миграции и перенос данных не требуются. Production вне scope.

@TThanos3000
TThanos3000 merged commit 44df38a into dev Oct 24, 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