[Spec] Investment views: предупреждение и «Повторить» после исчерпания автоповторов (для frontend#55) #79

Closed
opened 2026-11-03 07:25:56 +03:00 by codex-bot · 1 comment
Owner

Контекст и результат

Specs frontend-user-feedback, frontend-data-resilience и frontend-ui-resilience запрещают на экранах чтения любые предупреждения о неудачном чтении и любые действия повтора. Это блокирует AC 2, 3 и 5 в WealthLedger/frontend#55: сохранённые суммы остаются, но пользователь не отличает неудачное перечитывание клиента от штатного snapshot и не может восстановить затронутый запрос.

Решение владельца: тихое поведение остаётся по умолчанию. Предупреждение и действие «Повторить» появляются только после исчерпания конечной серии автоматических повторов (сценарий «Повторы исчерпаны»), на экранах: Account, Accounts, Income, Operations, Events, секции деталей инструмента (stock/bond). Поиск, диапазон графика, карты и настройки подключения остаются тихими.

Scope / связанные Issues

  • WealthLedger/frontend#55 (AC 2, 3, 5), audit 2026-10-11: FE-001, FE-002.
  • Targets: openspec/specs/frontend-platform/frontend-user-feedback, frontend-data-resilience, frontend-ui-resilience.
  • Вне scope: код frontend, поиск, график, карты, ручной T-Bank import, глобальный error store, решение по фильтрам Events (frontend#63).

Acceptance Criteria

  • Исчерпание автоповторов при сохранённом результате: результат остаётся, показывается неблокирующее предупреждение о неудачном обновлении и действие «Повторить», выполняющее тот же GET (не sync-команду); успех снимает предупреждение. Определено для перечисленных экранов.
  • Исчерпание автоповторов без результата: локальная недоступность содержит то же действие «Повторить».
  • Тихое поведение сохранено: пока идут автоповторы, до исчерпания предела, на поиске, графике, картах и настройках подключения; подтверждённая потеря доступа или входа сохраняет прежние действия и скрывает личные данные; Portfolio.isStale не меняется.
  • Противоречащие формулировки в трёх specs согласованы; npm run validate и git diff --check проходят.
## Контекст и результат Specs `frontend-user-feedback`, `frontend-data-resilience` и `frontend-ui-resilience` запрещают на экранах чтения любые предупреждения о неудачном чтении и любые действия повтора. Это блокирует AC 2, 3 и 5 в WealthLedger/frontend#55: сохранённые суммы остаются, но пользователь не отличает неудачное перечитывание клиента от штатного snapshot и не может восстановить затронутый запрос. Решение владельца: тихое поведение остаётся по умолчанию. Предупреждение и действие «Повторить» появляются только после исчерпания конечной серии автоматических повторов (сценарий «Повторы исчерпаны»), на экранах: Account, Accounts, Income, Operations, Events, секции деталей инструмента (stock/bond). Поиск, диапазон графика, карты и настройки подключения остаются тихими. ## Scope / связанные Issues - WealthLedger/frontend#55 (AC 2, 3, 5), audit 2026-10-11: FE-001, FE-002. - Targets: `openspec/specs/frontend-platform/frontend-user-feedback`, `frontend-data-resilience`, `frontend-ui-resilience`. - Вне scope: код frontend, поиск, график, карты, ручной T-Bank import, глобальный error store, решение по фильтрам Events (frontend#63). ## Acceptance Criteria - [x] Исчерпание автоповторов при сохранённом результате: результат остаётся, показывается неблокирующее предупреждение о неудачном обновлении и действие «Повторить», выполняющее тот же GET (не sync-команду); успех снимает предупреждение. Определено для перечисленных экранов. - [x] Исчерпание автоповторов без результата: локальная недоступность содержит то же действие «Повторить». - [x] Тихое поведение сохранено: пока идут автоповторы, до исчерпания предела, на поиске, графике, картах и настройках подключения; подтверждённая потеря доступа или входа сохраняет прежние действия и скрывает личные данные; `Portfolio.isStale` не меняется. - [x] Противоречащие формулировки в трёх specs согласованы; `npm run validate` и `git diff --check` проходят.
codex-bot added the audit/2026-10-11 label 2026-11-03 07:25:56 +03:00
Author
Owner

Done in PR #80 (squash, develop 0469756). CI green before merge. 9 files, +61/−21.

  • frontend-data-resilience, frontend-user-feedback, frontend-ui-resilience: narrow exception to the ban — warning + "Повторить" (same GET, no sync command) only after the finite automatic retry series is exhausted, on Account, Accounts, Income, Operations, Events and instrument detail sections; scenarios added ("Повторы исчерпаны при сохранённом результате", "…без результата", "Поиск, график и карты остаются тихими", "Автоматические повторы исчерпаны на экране инвестиций").
  • Aligned "без ручного повтора" in brokerage-accounts, brokerage-account-ledger, brokerage-account-income-analytics, brokerage-account-upcoming-events, frontend-loading-presentation, portfolio-view ("до исчерпания автоматических повторов").
  • Unchanged: failed hourly attempt scenario (no retry of source fetching), Portfolio.isStale, confirmed access loss, search/chart/cards/connection settings.

Verification: npm run validate 28 passed / 0 failed, lychee 0 errors, git diff --check OK.
Limit: the ручн*/повтор* sweep was regex-based; other scenarios may need owner review.

Done in PR #80 (squash, develop `0469756`). CI green before merge. 9 files, +61/−21. - `frontend-data-resilience`, `frontend-user-feedback`, `frontend-ui-resilience`: narrow exception to the ban — warning + "Повторить" (same GET, no sync command) only after the finite automatic retry series is exhausted, on Account, Accounts, Income, Operations, Events and instrument detail sections; scenarios added ("Повторы исчерпаны при сохранённом результате", "…без результата", "Поиск, график и карты остаются тихими", "Автоматические повторы исчерпаны на экране инвестиций"). - Aligned "без ручного повтора" in `brokerage-accounts`, `brokerage-account-ledger`, `brokerage-account-income-analytics`, `brokerage-account-upcoming-events`, `frontend-loading-presentation`, `portfolio-view` ("до исчерпания автоматических повторов"). - Unchanged: failed hourly attempt scenario (no retry of source fetching), `Portfolio.isStale`, confirmed access loss, search/chart/cards/connection settings. Verification: `npm run validate` 28 passed / 0 failed, lychee 0 errors, `git diff --check` OK. Limit: the `ручн*/повтор*` sweep was regex-based; other scenarios may need owner review.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WealthLedger/specs#79