Prod: add Angular program notifications - #741
Merged
Merged
Conversation
TThanos3000
marked this pull request as ready for review
September 11, 2026 19:28
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.
Что сделано
Добавлены production in-app уведомления для текущего Angular-интерфейса:
program_news_publishedпри создании новости программы через legacycreate_program_news(...);program_material_publishedпри создании материала через inlinePartnerProgramAdminили отдельныйPartnerProgramMaterialAdmin;course_access_openedпри создании опубликованного курса или переходеdraft/completed -> publishedчерезCourseAdmin.Контракт событий
Получатели всех трёх событий определяются только по legacy membership
PartnerProgramUserProfileтекущей программы. ID пользователей выбираются однимSELECT DISTINCT, после чего существующийcreate_notifications(...)выполняет один bulk insert. Автор события исключается существующим bulk-сервисом; посторонние пользователи уведомлений не получают.Action URL:
/office/program/<program_id>;/office/program/<program_id>;/office/courses/<course_id>.Стабильные ключи:
program-news:<news_id>:published;program-material:<material_id>:published;course-access:<course_id>:<datetime_updated>.Повтор одного события идемпотентен благодаря существующему ограничению
(recipient, event_key). Повторный реальный переход курса вpublishedполучает новый ключ. Запись source-объекта и уведомлений находится в одной транзакции; rollback не оставляет уведомлений.Карантин старых next-gen строк
При
NEXTGEN_SURFACE_ENABLED=Falseединый visible-queryset оставляет в Angular API только legacy project invite, vacancy response и новые program types. СтарыеTEAM_INVITE_*,APPLICATION_*,SUBMISSION_*,EXPERT_ASSIGNMENT_*,EVALUATION_*,NEWS_COMMENT_CREATED:При
NEXTGEN_SURFACE_ENABLED=Trueпрежний полный React-dev contract сохранён.Migration
Добавлена
notifications.0002_add_program_notification_types: только изменение Django field state/choices.sqlmigrateдля PostgreSQL показываетno-op; data/destructive операций нет.Проверки
Exact base:
b47be5ba4ec23033ee1fa2582e0a127c79f6552dExact head:
e1d445d83c591df35ab60e60034d5dea4cadc509Локальный PostgreSQL:
Дополнительно:
python manage.py check— OK;python manage.py check --tag models— OK;python manage.py makemigrations --check --dry-run— No changes detected;git diff --check— OK.Email/mailing, Angular, React, Docker, dependencies и deploy не изменялись.
CI
Проверки на exact head
e1d445d83c591df35ab60e60034d5dea4cadc509:Tests— PASS (22m32s);Backend PostgreSQL CI— PASS (12m06s);Lint— PASS (9s);sync-проверки — PASS.Все обязательные Linux CI checks зелёные.