WealthLedger/frontend#63: показывать calculatedAt и исходное окно сохранённого прогноза Events; URL-фильтр остаётся. RTL/MSW проверяет окно до/после неудачного GET и Retry без ручного импорта.
WealthLedger/frontend#59: скрытый CURRENCY/cash mirror не входит в знаменатель долей позиций; regression для all-account. Backend totals/structure остаются authoritative.
WealthLedger/frontend#155 / WealthLedger/backend#73: nginx общий admission budget на точные POST login/register (2r/s, burst 5, 429 до upstream), без доверия неизвестной цепочке client-IP. Регистрация остаётся открытой. Один клиент может исчерпать общий бюджет.
## Изменения
- WealthLedger/frontend#63: показывать `calculatedAt` и исходное окно сохранённого прогноза Events; URL-фильтр остаётся. RTL/MSW проверяет окно до/после неудачного GET и Retry без ручного импорта.
- WealthLedger/frontend#59: скрытый `CURRENCY`/cash mirror не входит в знаменатель долей позиций; regression для all-account. Backend totals/structure остаются authoritative.
- WealthLedger/frontend#155 / WealthLedger/backend#73: nginx общий admission budget на точные POST login/register (`2r/s`, burst 5, 429 до upstream), без доверия неизвестной цепочке client-IP. Регистрация остаётся открытой. Один клиент может исчерпать общий бюджет.
## Проверки
`npm run verify`: PASS (580 tests + typecheck/lint/OpenAPI/build/Storybook); `nginx -t`: PASS; изолированный burst 6 forwarded → 6 rejected 429 → after 4s forwarded; `git diff --check`: PASS.
Spec prerequisite: WealthLedger/specs#82. Для backend#73 внешнюю proxy chain и эксплуатационное поведение ещё нужно проверить; этот PR не заявляет production proof. Closes WealthLedger/frontend#59, WealthLedger/frontend#63, WealthLedger/frontend#155.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Изменения
calculatedAtи исходное окно сохранённого прогноза Events; URL-фильтр остаётся. RTL/MSW проверяет окно до/после неудачного GET и Retry без ручного импорта.CURRENCY/cash mirror не входит в знаменатель долей позиций; regression для all-account. Backend totals/structure остаются authoritative.2r/s, burst 5, 429 до upstream), без доверия неизвестной цепочке client-IP. Регистрация остаётся открытой. Один клиент может исчерпать общий бюджет.Проверки
npm run verify: PASS (580 tests + typecheck/lint/OpenAPI/build/Storybook);nginx -t: PASS; изолированный burst 6 forwarded → 6 rejected 429 → after 4s forwarded;git diff --check: PASS.Spec prerequisite: WealthLedger/specs#82. Для backend#73 внешнюю proxy chain и эксплуатационное поведение ещё нужно проверить; этот PR не заявляет production proof. Closes WealthLedger/frontend#59, WealthLedger/frontend#63, WealthLedger/frontend#155.