Skip to content

DEV: детализация блока «Требует внимания» - #333

Merged
TThanos3000 merged 1 commit into
devfrom
feature/dev-program-attention-drilldown-ui
Sep 5, 2026
Merged

DEV: детализация блока «Требует внимания»#333
TThanos3000 merged 1 commit into
devfrom
feature/dev-program-attention-drilldown-ui

Conversation

@TThanos3000

Copy link
Copy Markdown
Contributor

Основа и контракт

  • База: dev, 964e30193b8a55f242e487c507ad80e4f8c8861d (PR DEV: add expert evaluation analytics drilldown #332).
  • Ветка: feature/dev-program-attention-drilldown-ui.
  • Head: 2ac7b8d5e82a53ec584e16596d9e5b280024c88e.
  • Контракт: backend PR #725, проверенный feature head 5b030625499efe94cfd67db9694c713eecf2539f.
  • Backend merged: bc1fffb16071935cfce449e6c59202251cb860c6; GitHub Deploy Dev для этого SHA завершился успешно.
  • Один Angular feature commit; 21 файл, +1587 / −10.

Что реализовано

В существующую analytics-модалку добавлены два корневых представления:

  1. Участники без команды: имя/аватар, фактический city (включая legacy), дата регистрации в программе и RouterLink «Открыть профиль» → /office/profile/:userId.
  2. Работы ожидают оценивания: одна сданная работа на строку, руководитель, дата сдачи, backend reasonLabel, прогресс и RouterLink «Открыть проект» → /office/projects/:projectId.

Все три строки «Требует внимания» — единообразные кнопки. Нули остаются видимыми, но отключены; при всех нулях сохранено существующее спокойное состояние. Tooltip — отдельный соседний контрол, не открывающий модалку.

Сохранён pipeline domain → adapter → repository → use case → локальный facade → UI. Прямого HttpClient в компонентах нет. Общая ApiPagination переиспользована с локальным уточнением nullable next/previous; CamelcaseInterceptor не менялся, добавлен regression преобразования новых snake_case полей/null.

Серверный поиск, страницы и состояния

  • Поиск по Enter/«Найти», не на каждый символ; limit=25, offset, «Назад»/«Далее», текущий диапазон.
  • Новый поиск и очистка возвращают первую страницу.
  • Каждое открытие загружает свежие данные; предварительной загрузки вместе с overview и подгрузки всех страниц нет.
  • Количество берётся из detail response, не ограничивается старым count сводки.
  • Раздельные loading, success, empty, search-empty, 401/403/404/network; контролируемые сообщения без HTTP body.
  • Retry сохраняет программу/view/search/limit/offset, ошибки списка не скрывают основную аналитику.

Семантика работ

  • В distributed показывается «Завершили: X из Y» из assignmentsCompleted/assignmentsTotal; при total=0 — «Нет назначений».
  • В open null-счётчики остаются null, прогресс — «—».
  • Причины: no_assignments, no_completed_evaluations, partially_evaluated, awaiting_first_evaluation.
  • Unknown leader/date отображаются явно. Нет расчётов SLA, процентов, средних баллов или знаменателя из maxEvaluationsPerProject.
  • Несданные работы не включаются и не подмешиваются из assignments endpoint.

Отмена запросов и SPA

Закрытие, другое root-open, поиск, переход страницы, смена программы и destroy отменяют active request через takeUntil/takeUntilDestroyed. Старый ответ не перезаписывает новые данные.

ProgramAnalyticsInfoService и его реактивный parent paramMap из #332 не изменялись. Integration regression использует настоящий сервис и observable params: 12 → 13 до resolver обнуляет public programId, закрывает модалку, отписывает Subject и очищает результаты; до и после Program(13) новый attention request не возникает без нового действия пользователя.

Доступность и responsive

Один существующий overlay, один dialog и один CDK trap для всех шести views. Сохранены attachment-only initial focus, Escape через overlay keydownEvents, единый close flow, возврат на конкретный connected trigger и bottom-up cleanup. При RouterLink-навигации trigger очищается перед закрытием.

На desktop — таблицы, mobile/tablet — stacked cards в той же структуре с переносом длинных значений. Поиск и пагинация используют wrap; ширина/вертикальный скролл ограничены существующим dialog. Фактическая визуальная проверка в браузере ограничена, см. ниже.

Проверки

  • Targeted: 177/177, 16 файлов; дополнительно после уточнения generic-типов тестовой параметризации повторены 15/15 тестов data pipeline.
  • Полный npm run test:ci: 1243/1243, 348 файлов.
  • npm run lint:ts: успешно, 0 ошибок / 6 предупреждений. Файлы этих предупреждений сопоставлены с exact base и не менялись; массовый autofix не включён в diff.
  • npm run build:prod: успешно, включая production Angular/TypeScript compilation.
  • Сборка выводит предупреждения compiler/Sass/CommonJS/budget. В частности текущий SCSS drilldown 4.69 kB при warning-budget 2 kB (ниже error-budget 15 kB). Эти предупреждения не объявляются полностью «старыми» без baseline-build.
  • Scoped Prettier изменённых файлов: успешно; SCSS исключён существующим .prettierignore и проверен Stylelint.
  • Scoped Stylelint: успешно.
  • git diff --check, git diff --cached --check, diff против origin/dev: успешно.
  • Дополнительный tsc -p tsconfig.vitest.json --noEmit не является зелёным общим gate: остаются 11 диагностик в test fixtures (profile/project/tooltip, существующая overview fixture и старый HttpRequest в interceptor test). В новых attention/drilldown файлах диагностик нет. Этот запуск не подменяет успешные Vitest и production compiler.

Ручной smoke — не отмечен как пройденный

Backend Deploy Dev для #725 успешен. Read-only GET обоих новых endpoint без авторизации вернул ожидаемый 401.

Полный manager API smoke, реальные строки/search/pagination, переходы профиля/проекта и визуальная desktop/mobile/keyboard проверка не выполнены: управляемый браузер блокирует локальное preview (net::ERR_BLOCKED_BY_CLIENT). Component tests с реальным CDK Overlay проверяют lifecycle/focus/cancellation, но не заменяют браузерную визуальную/E2E проверку. Перед Ready требуется этот smoke в доступной manager-сессии DEV.

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

  • docs/modules/program.md
  • projects/core/src/lib/interceptors/camelcase.interceptor.spec.ts
  • projects/social_platform/src/app/api/program/facades/detail/program-analytics-attention.service.spec.ts
  • projects/social_platform/src/app/api/program/facades/detail/program-analytics-drilldown.service.spec.ts
  • projects/social_platform/src/app/api/program/facades/detail/program-analytics-drilldown.service.ts
  • projects/social_platform/src/app/api/program/use-cases/get-program-manager-attention.use-case.spec.ts
  • projects/social_platform/src/app/api/program/use-cases/get-program-manager-participants-without-team.use-case.ts
  • projects/social_platform/src/app/api/program/use-cases/get-program-manager-projects-awaiting-evaluation.use-case.ts
  • projects/social_platform/src/app/domain/program/ports/program.repository.port.ts
  • projects/social_platform/src/app/domain/program/program-analytics-attention.fixture.ts
  • projects/social_platform/src/app/domain/program/program-analytics-attention.model.ts
  • projects/social_platform/src/app/infrastructure/adapters/program/program-http.adapter.ts
  • projects/social_platform/src/app/infrastructure/repository/program/program.repository.ts
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/analytics.component.html
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/analytics.component.spec.ts
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/drilldown/analytics-attention-route.spec.ts
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/drilldown/analytics-attention.component.spec.ts
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/drilldown/analytics-drilldown.component.html
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/drilldown/analytics-drilldown.component.scss
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/drilldown/analytics-drilldown.component.spec.ts
  • projects/social_platform/src/app/ui/pages/program/detail/analytics/drilldown/analytics-drilldown.component.ts

Ограничения и scope

Не добавлены вуз/роль/кейс, contact/team actions, напоминания, несданные работы, новые графики или выгрузки. Документация frontend-модуля и JSDoc обновлены.

Backend, React, shared app-modal, dependencies, workflows, Docker не менялись. API контракт не расширялся. Merge и deploy не выполнялись. PR оставить Draft.

@TThanos3000
TThanos3000 marked this pull request as ready for review September 5, 2026 22:59
@TThanos3000
TThanos3000 merged commit ed06dff into dev Sep 5, 2026
@TThanos3000
TThanos3000 deleted the feature/dev-program-attention-drilldown-ui branch September 5, 2026 22:59
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