Skip to content

PROD: аналитика программы и исправления редактора проекта - #352

Merged
TThanos3000 merged 6 commits into
masterfrom
release/prod-program-analytics-project-editor
Sep 19, 2026
Merged

TThanos3000 merged 6 commits into
masterfrom
release/prod-program-analytics-project-editor

Conversation

@TThanos3000

Copy link
Copy Markdown
Contributor

Добавляет ролевой виджет аналитики программы и переносит проверенные исправления редактора проекта: корректный Project.id для autosave, сохранение удаления презентации, возврат стандартной обложки и её zero-state. Организатор без member-роли сохраняет доступ к новостям программы.

Точные версии и источники

  • PROD base master: 72b50306cbd7c7fc33e2efad66052c43759b33db.
  • Release HEAD: 02a196f625951e49b37c111e2819cc3255256df2.
  • Ветка: release/prod-program-analytics-project-editor.
DEV PR Выборочно перенесённый merge commit
#348 — виджет и manager news 8f59c8ed7bbad1ceb1deba669c65b66a92040231
#349 — autosave и file cleanup c0bbdd7a97f2575864e3d4d8c7d88e927b61bd47
#350 — reset cover 2324f52345fe608991e888a514aefc491e578bcb
#351 — cover zero-state c66d05db59b6dbae160c0f3fc8853a9fa6644377

Cherry-picks выполнены в указанном порядке, без конфликтов. Слияние dev → master целиком не выполнялось. Сохранены PROD hotfix и существующие currentProjectApplication / маршруты project-analytics; DEV-only evidence/screenshots не включены в итоговый diff.

Поведение

  • Роль определяется backend в контексте программы; приоритет организатор → эксперт → участник. Ошибка API не подменяется нулевыми метриками.
  • Новости организатора доступны без member-роли; экспертная роль сама по себе доступ к ним не расширяет.
  • Autosave получает инициализированный Project.id; начальное пустое поле и невалидные ID не создают PUT /projects/NaN/, /0/ или /null/. Повреждённые записи offline queue отфильтровываются.
  • Удалённая presentation сохраняется пустой. DELETE 404 идемпотентен, остальные ошибки не очищают control ложно; явное сохранение и порядок перед сдачей сохраняются.
  • Сброс обложки использует project-specific POST reset-cover и canonical isDefaultCover, без DELETE системного файла. Форма остаётся required.
  • Стандартная обложка: «Стандартная обложка» / «Загрузить файл»; пользовательская: «Заменить файл». Лишней верхней reset-иконки нет, геометрия блока сохранена.

Полный тестовый статус и baseline defect

Все сравнения выполнены на Node 20.20.2 / npm 10.8.2, после отдельного npm ci в каждом checkout, с одинаковым неизменённым lockfile и без shared node_modules. Полные прогоны используют обычный npm run test:ci, без CLI overrides.

Состояние Run 1 Run 2
Exact чистый PROD master 72b50306… pre-existing NG0401, exit 1 pre-existing NG0401, exit 1
Тот же master + только согласованный test-only patch 1575/1575, exit 0 1575/1575, exit 0
Итоговая release-ветка 1729/1729, exit 0 1729/1729, exit 0

Test-only patch состоит ровно из lifecycle cleanup двух specs (profile-mid-side, news-form) и test.pool = "forks" в vitest.config.ts. ngx-autosize откладывает поиск textarea на 100 мс и не отменяет его при destroy; тесты завершают эту работу в живой fixture, проверяют снятие resize-listeners и отсутствие таймеров. Один новый regression test объясняет 1575 вместо прежних 1574 на baseline.

pool: "forks" исправляет baseline test harness: стандартный vmThreads в проверенном setup воспроизводил NG0401 до выполнения тестов. Это не suppression и не обход CI: все тесты настроенного suite реально выполнены, NG0401 и unhandled errors в четырёх итоговых прогонах отсутствуют. Исключения/пропуски не добавлялись, exit code не переопределялся; production runtime ради тестов не менялся. Диагностическое требование чистого master закрыто доказательством pre-existing defect.

Дополнительно:

  • Targeted analytics widget / manager news / autosave / presentation cleanup / reset cover / zero-state / lifecycle: 228/228, 19 файлов, exit 0.
  • npm run format:check: GREEN.
  • npm run lint:ts: GREEN, 0 errors, 6 прежних warnings.
  • npm run build:prod: GREEN.
  • git diff --check: GREEN.
  • Штатный pre-commit hook выполнен без обхода.

После исходного port HEAD 5747c7ce6aa1d9b47f375aa67cba7b310a6c671b изменились только два spec и vitest.config.ts. Package.json, dependencies/lockfile, workflows, React, shared app-modal/app-soon-card и current_application/currentProjectApplication не изменены.

Порядок выпуска и ограничения

Требуется сначала backend-пакет DEV #742/#743 (analytics-widget, is_user_expert, reset-cover, is_default_cover), адаптированный к PROD. Migrations: none.

В репозитории нет отдельного Angular PR workflow: штатный deploy.yml выполняет npm ci → format → lint → test:ci → build:prod → rsync при merge master. Этот gate не обходится и workflow не меняется. До merge обязательны COMPLETE PROD snapshot и успешная runtime-проверка нового backend.

Отдельный production test account/project не предоставлен: authenticated mutating PROD acceptance не выполняется.

TThanos3000 and others added 6 commits September 18, 2026 17:00
…e-analytics-widget

DEV: ролевой виджет аналитики на странице программы
…eanup-autosave

DEV: fix project file cleanup autosave
…ault-cover-reset-ui

DEV: возврат стандартной обложки проекта
…ero-state

DEV: корректное пустое состояние обложки проекта
@TThanos3000
TThanos3000 marked this pull request as ready for review September 19, 2026 09:57
@TThanos3000
TThanos3000 merged commit 5e918b2 into master Sep 19, 2026
@TThanos3000
TThanos3000 deleted the release/prod-program-analytics-project-editor branch September 19, 2026 09:57
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