DEV: read-only аналитика программы для ролевого Angular-виджета - #742
Draft
TThanos3000 wants to merge 1 commit into
Draft
TThanos3000 wants to merge 1 commit into
TThanos3000 wants to merge 1 commit into
Conversation
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.
На странице программы Angular заглушке аналитики не хватало безопасного источника данных для участника и эксперта. Добавлен компактный read-only
GET /programs/{id}/analytics-widget/: сервер выбирает роль текущей программы и возвращает только разрешённые показатели.Draft только в DEV. Merge и deploy не выполнялись.
SHA и зависимости
dev):ed5244bd4a098bd0f1cee0f5e380dd67bdd61a963d84c7f4090985e4f42a13654e8fb05856f65cb399c8813a66f89560a946eab7d1de73ab2925d0f5feature/dev-program-role-analytics-widget.is_user_expert, затем Angular. Миграций нет.Что изменено
participant_projectчерез Project.leader / Collaborator и PartnerProgramProject текущей программы. Лидер и член одной команды видят одинаковые проект, case и этап. Права редактирования/сдачи не расширяются.current_applicationостаётся прежним leader-only контрактом. Нет поддержки нескольких команд, dropdown или выбора первого проекта. Противоречивые связи возвращают 409 без изменения данных.name="case"на текущей связи. Этап использует общую серверную аналитику; нет закрытых баллов или личностей экспертов._get_participant_metrics/_get_solution_metrics: distinct участники; связи проектов/решений; отсутствие проекта учитывает лидера, Collaborator и черновики.annotated_assignment_queryset: персональные назначения и незавершённые, включая not_ready. Допустимый 0 является заполненной оценкой. Open не получает фиктивные назначения; реальный срок —datetime_evaluation_ends.В open сохранено фактическое правило существующей основной аналитики: наличие ProjectScore по критерию программы означает evaluated; новая формула завершения не вводилась.
Проверки
feed.tests.test_feed_api.FeedAPITests.test_feed_returns_project_news_as_news_content(projectвместоnews). Отдельно этот тест на исходном DEV SHA прошёл; причина полного сбоя не установлена. Teardown встретил незакрытые соединения; временная БД после завершения процесса удалена.Контракт, источники, команды и ограничения проверок.
Скриншоты и сравнение геометрии до/после.
Актуализация проверок 14.09.2026
Backend-код в UI follow-up не менялся; head остаётся
3d84c7f4090985e4f42a13654e8fb05856f65cb3. Нового искусственного коммита нет.Backend PostgreSQL CI run 34849441959 повторно проверен: completed / success, headSha точно совпадает с этим PR. Lint и Tests также success. Это отдельный результат CI; он не устанавливает причину описанного выше локального PostgreSQL failure, не отменяет ошибку удаления SQLite БД и ограничение запуска mypy.
Парный Angular Draft PR #348, head
239e3a5eafe653291daf95930ecac9824314f365: восстановлены новости организатора без member, исправлена композиция при прежних 157 × 140,984375 CSS px. Targeted 349 PASS; full Angular head 1560 и base 1489 тестов прошли, но оба full процесса exit 1 с воспроизведённой ngx-autosize teardown ошибкой. Скриншоты, base/head stack traces и полная локальная проверка.Локальные тестовые настройки и fixtures не включены в backend PR. React-контракты, current_application и бизнес-права не изменены. Merge/deploy не выполнялись.
Диагностика PUT /projects/NaN/ — 14.09.2026
Angular base
99c8813a66f89560a946eab7d1de73ab2925d0f5, проверенный код head239e3a5eafe653291daf95930ecac9824314f365, итоговый head с документациейc97eb8b61c4982b23dbae743104d5b1de71dedef; backend в обоих прогонах3d84c7f4090985e4f42a13654e8fb05856f65cb3.Семь прогонов на локальных Angular + Django и отдельной PostgreSQL БД, одинаковые Node/dependencies и восстановленные синтетические данные, 10-секундные окна наблюдения, 23 повторных чтения API. На head проверены вход из виджета и существующий путь; на точном base — существующий путь.
Причина: root ProjectFormAutosaveService читает params["projectId"] из root ActivatedRoute (params={}), хотя ID 31 есть на leaf-маршруте; Number(undefined) становится NaN. Начальный patchValue пустого файлового поля запускает cleanup-autosave. При удалении файла запускается тот же ошибочный PUT. Он возникает до ProgramWidgetChanged и повторяется на base без нового виджета. После destroy в контрольных окнах новых PUT не было.
Обычное непустое название и case текущей связи 73 сохраняются явной кнопкой на base/head. Удаление презентации не сохраняется: файл удалён, URL проекта остаётся прежним; после повторного открытия UI показывает «Файл успешно загружен». Явный save тоже не очищает URL: stripNullish исключает пустую строку из payload, PUT /projects/31/ возвращает 200 и UI показывает «данные успешно сохранены». Подтверждено API-readback и содержимым запросов на обеих версиях.
Отдельная задача P1, препятствие для дальнейшего релиза редактора. В проверенных сценариях это существующий дефект, не регрессия #348; редактор в рамках виджета не ремонтировался. Описание задачи, полная диагностика, initiator/stack, маршруты, payload и скриншоты, машиночитаемые evidence.
Production-код не менялся; повторные full suite/lint:ts/production build не требовались и не запускались. Две diagnostic development-сборки PASS; проверка логов, scoped Prettier документов и git diff --check PASS. Прежний full suite с ngx-autosize teardown не объявляется успешным. Внешний CDN заменён только локальным тестовым storage; живые DEV/PROD/CDN не проверялись. Backend production-файлы и SHA неизменны. Оба PR остаются Draft → dev, без merge/deploy.