Исправляющая ветка после revert PR #35. Требует сначала слить PR #36 (откат), затем этот PR.
Исправлено:
- timeseries теперь ограничен исходными from/to даже внутри недельного/месячного бакета;
- добавлен фильтр «Без категории» с NULL-сопоставлением;
- добавлены integration assertions для partial period и uncategorized;
- обновлены версии/changelog.
Версии: frontend 0.11.0, backend 0.10.1, shared 0.5.0.
Фильтр «Без категории» по-прежнему не работает из UI для timeseries. AnalyticsPage строит base через ...(categoryId ? ...), поэтому выбранное значение 0 отбрасывается. Кроме того, в backend/src/routes/analytics.ts для /timeseries осталось categoryId: categoryId ? Number(categoryId) : undefined; categoryId=0 также превращается в undefined. Summary/by-category используют исправленную проверку, а timeseries — нет. Нужно передавать 0 во всех трёх вызовах и обработать его в route.
Повторная проверка старого замечания о тестах неполная: добавлена только assertion для getSummary(categoryId=0). Нет проверок фильтра NULL в getByCategory и getTimeseries, а также нет проверки, что onlyConfirmed=true исключает некатегоризированную неподтверждённую операцию во всех трёх аналитических endpoint/service-функциях. Добавьте минимальные assertions для каждого результата.
Изменён frontend/src/pages/AnalyticsPage.tsx, но версия frontend и changelog оставлены на 0.11.0. По правилам версионирования это пользовательское изменение требует patch bump (0.11.1) и корректировки заголовка changelog.
Найдены блокирующие замечания:
1. Фильтр «Без категории» по-прежнему не работает из UI для timeseries. `AnalyticsPage` строит `base` через `...(categoryId ? ...)`, поэтому выбранное значение `0` отбрасывается. Кроме того, в `backend/src/routes/analytics.ts` для `/timeseries` осталось `categoryId: categoryId ? Number(categoryId) : undefined`; `categoryId=0` также превращается в `undefined`. Summary/by-category используют исправленную проверку, а timeseries — нет. Нужно передавать 0 во всех трёх вызовах и обработать его в route.
2. Повторная проверка старого замечания о тестах неполная: добавлена только assertion для `getSummary(categoryId=0)`. Нет проверок фильтра NULL в `getByCategory` и `getTimeseries`, а также нет проверки, что `onlyConfirmed=true` исключает некатегоризированную неподтверждённую операцию во всех трёх аналитических endpoint/service-функциях. Добавьте минимальные assertions для каждого результата.
3. Изменён `frontend/src/pages/AnalyticsPage.tsx`, но версия frontend и changelog оставлены на 0.11.0. По правилам версионирования это пользовательское изменение требует patch bump (0.11.1) и корректировки заголовка changelog.
categoryId=0 теперь сохраняется в frontend, summary/by-category и timeseries route;
добавлены проверки NULL-фильтра и onlyConfirmed для summary, by-category и timeseries;
partial period покрыт тестом;
версии frontend/backend/shared и changelog обновлены.
Сборки shared, backend и frontend проходят. Блокирующих замечаний нет.
Повторный независимый review завершён. Предыдущие замечания исправлены:
- `categoryId=0` теперь сохраняется в frontend, summary/by-category и timeseries route;
- добавлены проверки NULL-фильтра и `onlyConfirmed` для summary, by-category и timeseries;
- partial period покрыт тестом;
- версии frontend/backend/shared и changelog обновлены.
Сборки shared, backend и frontend проходят. Блокирующих замечаний нет.
admin
merged commit ce162855f9 into main2026-08-24 18:59:51 +00:00
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.
Исправляющая ветка после revert PR #35. Требует сначала слить PR #36 (откат), затем этот PR.
Исправлено:
Версии: frontend 0.11.0, backend 0.10.1, shared 0.5.0.
Найдены блокирующие замечания:
Фильтр «Без категории» по-прежнему не работает из UI для timeseries.
AnalyticsPageстроитbaseчерез...(categoryId ? ...), поэтому выбранное значение0отбрасывается. Кроме того, вbackend/src/routes/analytics.tsдля/timeseriesосталосьcategoryId: categoryId ? Number(categoryId) : undefined;categoryId=0также превращается вundefined. Summary/by-category используют исправленную проверку, а timeseries — нет. Нужно передавать 0 во всех трёх вызовах и обработать его в route.Повторная проверка старого замечания о тестах неполная: добавлена только assertion для
getSummary(categoryId=0). Нет проверок фильтра NULL вgetByCategoryиgetTimeseries, а также нет проверки, чтоonlyConfirmed=trueисключает некатегоризированную неподтверждённую операцию во всех трёх аналитических endpoint/service-функциях. Добавьте минимальные assertions для каждого результата.Изменён
frontend/src/pages/AnalyticsPage.tsx, но версия frontend и changelog оставлены на 0.11.0. По правилам версионирования это пользовательское изменение требует patch bump (0.11.1) и корректировки заголовка changelog.Повторный независимый review завершён. Предыдущие замечания исправлены:
categoryId=0теперь сохраняется в frontend, summary/by-category и timeseries route;onlyConfirmedдля summary, by-category и timeseries;Сборки shared, backend и frontend проходят. Блокирующих замечаний нет.