Skip to content

Analytics: детализация кейсов и полные XLSX-выгрузки в Angular - #387

Merged
TThanos3000 merged 2 commits into
devfrom
feature/dev-analytics-case-drilldown-angular
Sep 28, 2026
Merged

TThanos3000 merged 2 commits into
devfrom
feature/dev-analytics-case-drilldown-angular

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Что изменено

Клик по кейсу в Analytics открывает существующий AnalyticsDrilldown со списком проектов, лидером/командой, сдачей и презентацией. Добавлены общий и scoped XLSX, поиск, pagination и состояния desktop/mobile.

Зачем

Менеджер может перейти от агрегатов к проектам и выгрузить полный кейс независимо от поиска. Поддерживаются нулевой configured case и «Без выбранного кейса» без definition/options.

Утверждённая specification, review / AC01–AC19 / screenshots / dev checklist.
Связанный backend: PROCOLLAB-github/api#760 — внедрить первым.

Реализация

Существующие AnalyticsDrilldown, Button/Input/Loader и table/mobile pattern расширены без нового route или modal system.
Domain DTO, repository/adapter, два use-case и локальный facade следуют текущей архитектуре. Перед разрешением и каждым запросом XLSX проверяется новый DTO и exact scope; legacy HTTP 200 не включает export.
Смена case/program, закрытие и destroy отменяют list/file; повторный export блокируется. Search не влияет на полный bucket выгрузки.
Vitest inline-ит Angular и Angular consumers: устранено смешение Node/Vite Angular instances в Windows TestBed. Runtime dependencies не менялись.
Ветка проверена поверх dev 69f84902; история других веток не переносится.

API

Используется compatible extension существующих projects/export-projects endpoints: view=case_analytics, case_scope=all|selected|without_case, exact case_name только для selected.
List: search/limit/offset. Export: только scope, без search/pagination. Источник презентации — Project.presentation_address.
Legacy exports и другие drilldowns сохраняются. Case name не используется как identity without_case.

UI

Approved Figma section 30:1518, семь состояний 31:1523 / 1643 / 1744 / 1798 / 1864 / 1925 / 1981.
Mont и production Analytics visual continuity сохранены. Четыре колонки, без «Кейс» и evaluation metrics внутри modal. Impeccable использован только для hierarchy/grouping/density/refinement.
Исправлены ширина case modal, размер export button и mobile search grouping; Figma/DS не менялись.

Permissions

Прежний manager UI gate сохранён, staff/superuser UI access не расширен. Server-side permission matrix проверена backend PR; Angular различает 401/403/404 и блокирует export при ошибке контракта/доступа.

Проверки

  • npm run test:ci -- --maxWorkers=4: 1934 tests / 400 files PASS, Node 24.18.0, текущая dev base.
  • npm run build:pr: PASS; существующие Sass deprecation warnings.
  • npm run lint:ts: PASS, 0 errors / 6 существующих warnings вне feature.
  • Prettier изменённых файлов PASS; 1583 Git-файла PASS с repository config после CRLF → LF normalization в памяти.
  • Browser QA реальных компонентов с локальными fixtures: 1440×1000, 390/320/768 px; семь состояний, zero/noncompetitive, search/page 2, all/selected/without downloads, legacy blocking, keyboard/focus, no JS errors.
  • HTTP integration через реальный camelcase interceptor и adapter; отрицательный legacy 200 scenario.
  • Source/diff review, cancellation/duplicate export tests, git diff --check.
  • Связанный backend: 187 local regression tests, повторные 13 feature tests, полный PostgreSQL 15 CI 933 tests PASS; все backend CI jobs зелёные.
  • Обычный npm run format:check в Windows checkout: FAIL из-за CRLF и локального debug cache; Git-файлы проверены отдельно, постороннее форматирование не включено.

Acceptance criteria

  • AC01–AC06: case entry, scope/count/data/classification и without_case без config.
  • AC07–AC09: full-scope XLSX и legacy compatibility.
  • AC10–AC13: search/page, permissions, multi-program isolation, noncompetitive semantics.
  • AC14–AC17: states, cancellation, mobile/focus, strict contract и отсутствие silent fallback.
  • AC18–AC19: workbook/literal values и bounded read-only queries.

Для каждого AC отдельные source/test/browser evidence приведены в review. PASS не означает live dev acceptance.

Не проверено

Live dev/production и deployed SHA, full-stack browser с настоящим auth/API, production build/image, Excel GUI, production-scale XLSX time/memory, полный screen-reader/zoom/contrast audit. Browser QA использовал mock repository/API fixtures.
Angular pull_request CI отсутствует; существующие push workflows включают deploy и вручную не запускались. Node 20 отдельно не проверялся. Три существующих Vitest exclusions сохранены.

Риски / migration

Migration не нужна. Порядок: backend #760 → проверка нового API на dev → этот Angular PR → dev acceptance по checklist в review.
List/export contract должны выпускаться одной backend-версией; старый backend может игнорировать query params, поэтому frontend проверяет DTO перед выгрузкой.
Merge и production deploy выполняет пользователь.

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