Доходы больше не требуют от клиента угадывать смысл зависимости по позиции в массиве. Контракт GET и screen sync согласован для календарных дат, включая полный последний день диапазона.
Income metadata содержит роли selected, previous, year, в том числе для недоступного сравнения. Прежний порядок массива сохранён для совместимости.
OpenAPI разделяет income/events (date) и остальные экраны с датами операций (date-time); для income/events обязателен accountId.
Income использует включительные даты Europe/Moscow, events — UTC. Backend переводит их в полуоткрытые интервалы; events поддерживает односторонние диапазоны.
Согласованы planner, repository и преобразование дат на границе T-Bank. Миграции сохранённых данных не нужны.
Проверено: npm run verify — 37 suites / 200 tests; configured HTTP/OpenAPI через node test/sqlite.cjs openapi-contract.e2e-spec.ts tbank-screen-sync.e2e-spec.ts upcoming-events.e2e-spec.ts tbank-income-local.e2e-spec.ts — 53 tests. Независимое semantic review и проверка staged diff пройдены.
Доходы больше не требуют от клиента угадывать смысл зависимости по позиции в массиве. Контракт GET и screen sync согласован для календарных дат, включая полный последний день диапазона.
- Income metadata содержит роли `selected`, `previous`, `year`, в том числе для недоступного сравнения. Прежний порядок массива сохранён для совместимости.
- OpenAPI разделяет income/events (`date`) и остальные экраны с датами операций (`date-time`); для income/events обязателен `accountId`.
- Income использует включительные даты Europe/Moscow, events — UTC. Backend переводит их в полуоткрытые интервалы; events поддерживает односторонние диапазоны.
- Согласованы planner, repository и преобразование дат на границе T-Bank. Миграции сохранённых данных не нужны.
Проверено: `npm run verify` — 37 suites / 200 tests; configured HTTP/OpenAPI через `node test/sqlite.cjs openapi-contract.e2e-spec.ts tbank-screen-sync.e2e-spec.ts upcoming-events.e2e-spec.ts tbank-income-local.e2e-spec.ts` — 53 tests. Независимое semantic review и проверка staged diff пройдены.
Порядок выкладки: backend, затем frontend.
Связанный frontend PR: https://git.personal.ksv741.ru/WealthLedger/frontend/pulls/39.
Identify income dependencies by role and document screen-specific dates.
Convert inclusive calendar days into half-open source ranges while
preserving operation timestamps and existing stored coverage.
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.
Доходы больше не требуют от клиента угадывать смысл зависимости по позиции в массиве. Контракт GET и screen sync согласован для календарных дат, включая полный последний день диапазона.
selected,previous,year, в том числе для недоступного сравнения. Прежний порядок массива сохранён для совместимости.date) и остальные экраны с датами операций (date-time); для income/events обязателенaccountId.Проверено:
npm run verify— 37 suites / 200 tests; configured HTTP/OpenAPI черезnode test/sqlite.cjs openapi-contract.e2e-spec.ts tbank-screen-sync.e2e-spec.ts upcoming-events.e2e-spec.ts tbank-income-local.e2e-spec.ts— 53 tests. Независимое semantic review и проверка staged diff пройдены.Порядок выкладки: backend, затем frontend.
Связанный frontend PR: WealthLedger/frontend#39.