Эпик 10 ревью: a11y aria-labelledby TakeoverDialog + BarcodeScanner timer cleanup #11

Merged
ant merged 1 commits from chore/review-E10-design-fixes into marketplace2 2026-05-20 17:06:18 +00:00
Owner

Эпик 10 ревью «Дизайн-система» — фиксы HIGH+MEDIUM

HIGH fix

  • TakeoverDialog: добавлены role="dialog" / aria-modal="true" / aria-labelledby / aria-describedby на <q-card>. Screen reader'ы теперь озвучивают заголовок takeover-диалога (AC Story 10.2 «aria-label / aria-describedby на custom-компонентах»).

MEDIUM fix

  • BarcodeScanner: onBeforeUnmount cleanup pending-таймера. Иначе при закрытии TakeoverDialog'а раньше 1.5 s scanning-таймера scanned/error эмитится на размонтированный компонент → memory leak + lost-event race.

Story coverage

  • Story 10.1 дизайн-токены — marketplace-tokens.scss проверен (spacing / touch-targets 44/48 POS / per-role layout / dark mode реализованы). Без правок.
  • Story 10.2 13 custom-компонентов — все 13 на месте (12 в widgets/Marketplace/ + KUMapWithList в widgets/KUMapWithList/).
  • Story 10.3 performance baseline — NFR-P1/P2/P3 manual measurements в MVP; код-аудит без blockers.

Known limitations (Phase 2)

  • Storybook stories — AC Story 10.2 требует, папка stories/ пустая.
  • Unit-тесты widgets/Marketplace/* отсутствуют (AC Story 10.2 требует Jest + Vue Test Utils).
  • BarcodeScanner mock-режим (camera-API / USB не реализованы) — UX-DR26 Phase 2.
  • Полный WCAG 2.1 AA audit + axe-core CI — Phase 2.
  • Lighthouse / bundle-size CI gate — Phase 2.

🤖 Generated with Claude Code

# Эпик 10 ревью «Дизайн-система» — фиксы HIGH+MEDIUM ## HIGH fix - **TakeoverDialog**: добавлены `role="dialog"` / `aria-modal="true"` / `aria-labelledby` / `aria-describedby` на `<q-card>`. Screen reader'ы теперь озвучивают заголовок takeover-диалога (AC Story 10.2 «aria-label / aria-describedby на custom-компонентах»). ## MEDIUM fix - **BarcodeScanner**: `onBeforeUnmount` cleanup pending-таймера. Иначе при закрытии TakeoverDialog'а раньше 1.5 s scanning-таймера `scanned`/`error` эмитится на размонтированный компонент → memory leak + lost-event race. ## Story coverage - **Story 10.1** дизайн-токены — `marketplace-tokens.scss` проверен (spacing / touch-targets 44/48 POS / per-role layout / dark mode реализованы). Без правок. - **Story 10.2** 13 custom-компонентов — все 13 на месте (12 в `widgets/Marketplace/` + `KUMapWithList` в `widgets/KUMapWithList/`). - **Story 10.3** performance baseline — NFR-P1/P2/P3 manual measurements в MVP; код-аудит без blockers. ## Known limitations (Phase 2) - Storybook stories — AC Story 10.2 требует, папка `stories/` пустая. - Unit-тесты `widgets/Marketplace/*` отсутствуют (AC Story 10.2 требует Jest + Vue Test Utils). - BarcodeScanner mock-режим (camera-API / USB не реализованы) — UX-DR26 Phase 2. - Полный WCAG 2.1 AA audit + axe-core CI — Phase 2. - Lighthouse / bundle-size CI gate — Phase 2. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ant added 1 commit 2026-05-20 16:00:11 +00:00
HIGH:
- TakeoverDialog: добавлены role/aria-modal/aria-labelledby/aria-describedby
  на q-card (Story 10.2 NFR-A1). Раньше screen reader'ы не озвучивали
  заголовок takeover-диалога — несоответствие AC «aria-label/
  aria-describedby на custom-компонентах где Quasar базовых
  недостаточно».

MEDIUM:
- BarcodeScanner: timer cleanup при unmount через onBeforeUnmount.
  Иначе при закрытии TakeoverDialog раньше 1.5 s scanning-таймера
  scanned/error эмитится на размонтированный компонент → memory leak
  + lost-event race.

Story coverage:
- Story 10.1 «дизайн-токены»: marketplace-tokens.scss проверен —
  spacing/touch-targets (44/48 POS-режим)/per-role layout/dark mode
  реализованы корректно. Без правок.
- Story 10.2 «13 custom-компонентов»: все 13 на месте
  (12 в widgets/Marketplace/ + KUMapWithList в widgets/KUMapWithList/).
  A11y базовая обеспечена через QDialog/QInput штатные aria;
  TakeoverDialog получил недостающие atribute'ы.
- Story 10.3 «performance baseline»: NFR-P1/P2/P3 — manual measurements
  в MVP (без CI gate), нет автоматизации; код-аудит не выявил blockers.

Known limitations (Phase 2):
- Storybook stories — AC Story 10.2 требует, но папка stories/ пустая.
- Unit-тесты widgets/Marketplace/* отсутствуют (AC Story 10.2 требует
  Jest + Vue Test Utils).
- BarcodeScanner — mock-режим (camera-API / USB не реализованы; AC
  UX-DR26 Phase 2). Также используется в Эпике 7 OnSiteDecisionDialog.
- Полный WCAG 2.1 AA audit + axe-core CI — Phase 2 (NFR-A1 MVP
  покрыт базово).
- Lighthouse / bundle-size CI gate — Phase 2.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ant merged commit 864b8cbb9d into marketplace2 2026-05-20 17:06:18 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: C9S/mono#11