Files
specs/openspec/changes/archive/2026-10-14-unify-income-payment-cards/qa-analysis.md
T
ksv741 6efb989ed9
Conventional commits / commits (pull_request) Successful in 13s
Specs security / security (pull_request) Successful in 8s
Specs verify / verify (pull_request) Successful in 12s
spec: archive three completed changes (main#33, frontend#63, screener)
2026-10-14 21:40:26 +03:00

11 KiB
Raw Blame History

QA Analysis

Verification Scope

In Scope

Удаление сравнения дохода по brokerage-account-income-analytics и семантика выплаты на экранах дохода, журнала, истории инструмента, будущих событий и графиков акций/облигаций по четырём delta capabilities. Проверяется поведение пользователя и публичного API как системы.

Out of Scope

Пересмотр правил расчёта купонов/дивидендов брокером, налоговая оценка, удаление buckets, новые типы событий, компонентные и внутренние тесты реализации, несуществующий QA репозиторий.

Coverage Matrix

Requirement / Scenario из Delta Specs Наблюдаемая системная проверка
brokerage-account-income-analytics — removed Period comparisons preserve calendar and currency meaning; Analytics summary remains readable per currency / Динамика отсутствует для периода любой длительности На коротком/многолетнем периоде нет comparison UI или состояний; 200 ответ обоих income-analytics маршрутов не содержит comparison fields/roles, и чтение не инициирует дополнительные диапазоны ради сравнения.
User explicitly applies an analytics period represented in the URL / Черновик периода не применён, Применение периода, Восстановление применённого периода из URL, Сброс периода, Недопустимый черновик периода Итоги и карточки меняются только после применения; URL/back/reset, неверные даты и доступность ввода сохраняют поведение без блоков сравнений.
Realized analytics never presents an incomplete result as complete / Все страницы операций успешно получены, Одна из страниц операций недоступна, В периоде нет купонов и дивидендов Выбранный период с полной историей показывает итог; отсутствие или ошибка покрытия не выглядит нулём; подтверждённый пустой период отличим.
Income payments remain traceable to exact Ledger Entries / Каждая выплата показана отдельной карточкой, Отрицательная корректировка и повторяющиеся IDs сохраняются, Валюта видна в сумме каждой выплаты Порядок и количество карточек равны серверным entries; повторы и минус в исходной валюте сохранены; нет внешних групп.
Income page excludes upcoming forecasts / Данные будущих событий недоступны Недоступный прогноз не скрывает полный полученный доход и не возвращает прогнозный блок.
brokerage-account-ledger — Full ledger presents compact rows / Отображение купона, Отображение дивиденда, Подпись типа не дублируется; Account overview includes recent ledger events / Отображение последних событий Полный журнал, превью и история инструмента используют одну карточку выплаченного купона/дивиденда, сохраняют signed Money, детали и fallback; другие операции сохраняют ряд.
brokerage-account-upcoming-events — Account page presents an upcoming events list / Просмотр ближайших событий, Прогнозный дивиденд с неизвестной суммой; Account overview includes upcoming events / Отображение ближайших событий Та же карточка для прогноза в списке и превью, «прогноз», дата реестра и отсутствие суммы не превращаются в исполнение/ноль; offer/maturity не становятся выплатой.
instrument-income-schedules / Будущий купон с известными условиями, Прошедший дивиденд без подтверждённой операции, Неизвестные условия графика На страницах бумаг та же карточка, но пометка графика, отдельные сумма на бумагу и оценка; прошлое событие не названо полученным, null не превращён в ноль.

Cross-system Verification

Сравнить оба 200 ответа income-analytics с system-analysis/contracts/income-analytics-response.schema.json и опубликованным OpenAPI; проверить отсутствие comparison ranges в запросах при чтении и планировании income, не запрещая независимый запрос прошлого периода пользователем. Проверить неполный/ошибочный selected, недоступный счёт, новое подключение и поздний ответ старого без утечки дохода. Порядок и повторение ID проверить на ответе нескольких операций; нулевая сумма и отсутствующая сумма должны иметь разные значения. Фоновые HTTP ошибки прогноза и календаря не должны менять исполненную выплату. Отдельных callback и новых timeout контрактов нет.

Risk-based Priorities

  1. Точность финансового смысла и граница доступа: исправления с отрицательным знаком, мультивалютность, «прошлый график» против факта, нет ложного нуля.
  2. Breaking ответ и избыточная загрузка: оба маршрута, отсутствие comparison fields/dependencies, синхронизация только выбранного периода.
  3. Регрессии соседних экранов: предложенные выплаты, maturity/offer, trades, текущий месяц на обзоре, back/forward и сохранённый snapshot.

Test Data and Environment Needs

Тестовый доступный и недоступный счёт, режим all, завершённый и неполный периоды; coupon/dividend одной и нескольких валют, отрицательная корректировка, повтор operation ID, подтверждённо пустой период. Прогноз с известной/нулевой/ неизвестной суммой, dividend с датой реестра; расписание с per-security Money, отдельной оценкой и отсутствующими датами. Управляемая доступность источника и возможность наблюдать только показанные запросы/ресурсные metadata.

Manual / Exploratory Scope

Пройти страницу дохода с клавиатуры и узкого viewport, проверить доступные подписи, перенос длинных сумм и отсутствие горизонтальной прокрутки; перейти между income, журналом, личной историей инструмента, будущими событиями и календарём выпуска. Сравнить смысл подписи в трёх режимах при одинаковой дате и тикере. Отдельно проверить empty/loading/error/recovery и preview.

Automation Candidates

Black-box API: сравнение фактического schema обоих маршрутов с target, успешный/ошибочный/пустой selected и отсутствие запросов к comparison ranges. Сквозные journeys: переход от аккаунта через income/ledger к событию прогноза и календарю инструмента с проверкой подписей и денег. Repository automation: deferred until QA repo exists; текущее подтверждение возможно вручную и через existing system-level HTTP/browser runners без требования нового repo.

Observability Verification

По metadata ответа различить complete, pending, failed selected; запрос исторического периода не должен сопровождаться comparison-only dependencies. На отказе проверить корреляцию HTTP request ID и безопасного ответа, не ожидая новых событий журналирования или передачи личных данных в лог.

Regression Impact

Полный журнал, недавние операции, страница акции/облигации и их фильтры, превью/полный прогноз, summary текущего месяца, мультивалютность и независимые loading/error states. Затронутые публичные потребители income-analytics требуют обновления контракта как пары backend/frontend.

Gaps / Blockers

Блокирующих semantic gaps после утверждения Specs/System Analysis нет. Если опубликованный backend OpenAPI не удовлетворяет target либо картинка «получено» появляется на графике, маршрутизировать несовпадение в System Analysis/Delta Specs до принятия реализации; внутреннюю стратегию исправления определяют владельцы реализации.