Skip to content

PROD: изображение программы в уведомлениях - #745

Merged
TThanos3000 merged 1 commit into
masterfrom
fix/prod-program-notification-image
Sep 19, 2026
Merged

TThanos3000 merged 1 commit into
masterfrom
fix/prod-program-notification-image

Conversation

@TThanos3000

Copy link
Copy Markdown
Collaborator

Программные уведомления показывали аватар опубликовавшего пользователя, хотя визуальным источником является программа. Теперь при создании событий сохраняется PartnerProgram.image_address в отдельном nullable-поле Notification.image_url; настоящий actor остаётся пользователем.

Проверяемая версия

  • PROD base (master): 83f2ac82d6a9ff8353f79e8feddcd796b60a4245.
  • Head: 5ac540854f41828bed773a3481c1055569dc2fce.
  • Ветка: fix/prod-program-notification-imagemaster.

Контракт и поведение

create_notification, create_notifications и _notification_defaults принимают необязательный image_url: str | None = None. Serializer возвращает image_url вместе с прежним actor. Изображение заполняют только три программных события; пустой image_address нормализуется в null.

Тип Заголовок Сообщение
program_news_published Новая публикация В программе «…» появилась новость.
program_material_published Новый материал В программе «…» добавлен материал «…».
course_access_opened Открыт доступ к курсу В программе «…» открыт доступ к курсу «…».

Получатели, исключение автора, category, event_key, action_url, visibility и read/unread сохранены. Повтор события не создаёт дубли и не переписывает изображение существующей записи.

Schema migration: notifications.0003_notification_image_url — только ADD COLUMN image_url varchar(200) NULL. Data migration/backfill отсутствуют: старые уведомления сохраняют прежние тексты и получают image_url=null. Angular для них использует иконку типа.

Проверки

  • Targeted notifications и API: 45/45, PostgreSQL.
  • Полный PostgreSQL suite: 1560 тестов: 1557 passed, 3 skipped, python manage.py test --verbosity 1 --keepdb --noinput, exit 0.
  • Три условно пропущенных feature-off теста отдельно запущены с NEXTGEN_SURFACE_ENABLED=False: 3/3, python manage.py test procollab.tests.test_nextgen_surface.NextgenSurfaceDisabledTests --verbosity 2 --keepdb --noinput, exit 0. Skip в полном suite обусловлен существующим взаимоисключающим режимом feature-on; новые skips не добавлялись.
  • python manage.py check — PASS.
  • python manage.py makemigrations --check --dry-run — PASS, новых незаписанных изменений нет.
  • python -m black --check notifications — PASS.
  • python -m flake8 . — PASS.
  • git diff --check — PASS.

Тесты проверяют три типа, тексты, изображение, actor, точный набор получателей, прежние ключи и маршруты, retry, null/пустое изображение, обычные уведомления, API list/read и прежнее число SQL-запросов.

Проверки выполнены локально на Python 3.11 и изолированной тестовой PostgreSQL БД. Серверные DEV/PROD БД не использовались. Для будущего выпуска backend нужна миграция до использования нового поля; Angular-часть подготовлена отдельным Draft PR.

React-код и доменные правила не изменены. DEV-ветки и окружение не изменены. Dependencies и workflows не изменены. Merge/deploy не выполнялись.

@TThanos3000
TThanos3000 marked this pull request as ready for review September 19, 2026 21:32
@TThanos3000
TThanos3000 merged commit 0727c4d into master Sep 19, 2026
5 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