Skip to content

DEV: expose program link submission metadata - #729

Merged
TThanos3000 merged 1 commit into
devfrom
feature/dev-program-link-fields-metadata
Sep 6, 2026
Merged

TThanos3000 merged 1 commit into
devfrom
feature/dev-program-link-fields-metadata

Conversation

@TThanos3000

Copy link
Copy Markdown
Collaborator

Цель и основа

Минимальное backend DEV расширение canonical metadata для Angular PR PROCOLLAB-github/procollab#336.

  • Base: f932586fc59818b445c473ec2a33990605f16524 — актуальный origin/dev после явного fetch ветки dev.
  • Head: 3b0724668185f5d81d44ba327b045f5fec5ad6ab.
  • Ветка: feature/dev-program-link-fields-metadata.
  • Один commit, 4 файла, +181 / −1. Runtime-изменение — 6 добавленных строк в одном service.

Контракт

GET /programs/partner-program-projects/{programLinkId}/fields/ дополнительно возвращает:

Поле Семантика
is_competitive: boolean link.partner_program.is_competitive
submission_open: boolean link.partner_program.is_project_submission_open()
submission_deadline: datetime | null link.partner_program.get_project_submission_deadline(), JSON ISO 8601 либо null
can_submit: boolean is_competitive and not link.submitted and submission_open

Все значения относятся строго к запрошенному PartnerProgramProject. Не используется первая связь проекта. Открытое окно не означает возможность повторной сдачи или сдачи неконкурсной связи. Metadata — snapshot состояния, а не новое разрешение: access rules и серверная validation submit не меняются.

Definitions/values fields, PUT payload и его ответ сохранены. Программа уже загружается через существующий select_related, дополнительных SQL нет: лидер по-прежнему получает GET за 3 запроса при 1 и 20 fields.

Регрессии

  • Конкурсная программа с открытым и закрытым окном.
  • Уже сданная связь: окно открыто, can_submit=false.
  • Неконкурсная программа: окно открыто, can_submit=false.
  • Отдельный дедлайн и fallback на дату окончания регистрации; null из существующего helper передаётся как null (без изменения схемы).
  • Один проект, связи A/B с разными сроками, submitted и competitive: metadata берётся только из requested link.
  • HTTP query budget 3/3 при 1/20 fields.
  • Обычный PATCH проекта без partner_program_id сохраняет обе связи A/B и связанные профили участников без изменений. Тест зелёный на существующем поведении; production-код PATCH не менялся.

Изменённые файлы

  • partner_programs/services/project_fields.py
  • partner_programs/tests/test_program_link_fields_api.py
  • projects/tests/test_project_programs.py
  • docs/program-case-field.md

Проверки

  • Targeted: 43/43, включая canonical GET/PUT, case fields и project binding regression.
  • Полный локальный backend suite: 811 тестов, 4 PostgreSQL-only skips; один сбой в неизменённом feed.tests.test_feed_api.FeedAPITests.test_feed_returns_project_news_as_news_content (project вместо news первым элементом). Изолированный повтор этого теста прошёл. Feed-код/тесты не менялись. Полный PostgreSQL suite — зелёный, результат ниже.
  • PostgreSQL CI: успешно на этом head, ручной workflow_dispatch до создания PR. Подтверждены vendor postgresql, select_for_update, Django checks, отсутствие новых миграций и миграции на пустую БД; 39 locking/response tests и полный suite 811/811, без пропусков.
  • Black и flake8 изменённых Python-файлов: успешно.
  • Обычный Linux CI: полный Lint успешно; 811 тестов — OK (skipped=4), ожидаемые PostgreSQL-only skips на SQLite.
  • manage.py check, check --tag models: успешно.
  • makemigrations --check --dry-run: No changes detected.
  • git diff --check, git diff --cached --check: успешно.

Локальная среда: Windows / Python 3.12.14. Для импорта WeasyPrint использована уже существующая внешняя тестовая заглушка, поскольку Pango не установлен; она не входит в PR. Linux CI использует реальные зависимости. Локальный полный flake8 5.0.4 сообщил ошибки только в неизменённых файлах; scoped lint и полный Linux CI Lint прошли, unrelated форматирование не исправлялось.

Границы

Angular/React, scoring/analytics/team/invite, зависимости, workflows, Docker и deploy не менялись. Access rules, GET/PUT fields, модели и схема не менялись; миграций нет.

Draft PR → dev. Merge и deploy не выполнялись. После создания PR работа остановлена.

@TThanos3000
TThanos3000 marked this pull request as ready for review September 6, 2026 21:30
@TThanos3000
TThanos3000 merged commit 77c8d41 into dev Sep 6, 2026
4 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.

1 participant