spec: unify income payment cards and drop period comparisons (WealthLedger/main#33) (#37)
spec: unify income payment cards and drop period comparisons (WealthLedger/main#33)
This commit was merged in pull request #37.
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# 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 до принятия реализации; внутреннюю стратегию исправления
|
||||
определяют владельцы реализации.
|
||||
Reference in New Issue
Block a user