Skip to content

fix: split history profit stats by entry state#16

Merged
mrkotbest merged 11 commits into
masterfrom
fix/stats-profit-split
May 21, 2026
Merged

fix: split history profit stats by entry state#16
mrkotbest merged 11 commits into
masterfrom
fix/stats-profit-split

Conversation

@mrkotbest
Copy link
Copy Markdown
Owner

Summary

  • HistoryStats теперь разделяет прибыль по state: вместо одного ProfitUah/ProfitEur — три значения Done / Draft / Total для UAH и EUR. Раньше GetStats суммировал прибыль по всем записям истории игнорируя поле state, и пользователь видел завышенную «расчётную прибыль» с учётом неотмеченных черновиков.
  • Команда /stats (и переключение периодов через callback hs|...) показывает три строки: 🟢 отмеченные, ⏳ черновики, Σ всего. Все три локали обновлены.
  • Инвариант Total = Done + Draft гарантирован конструкцией: оба сайта new HistoryStats(...) в SqliteConversionHistoryStore.GetStats строят Total из суммы остальных bucket'ов.
  • profit_eur IS NULL коалесцируется в 0m — поведение строже прежнего и однозначнее.

Test plan

  • dotnet build (0 warn / 0 err)
  • dotnet test — 381 тест зелёных (378 было + 3 новых: GetStats_AllDone_DraftBucketIsZero, GetStats_ToggleMovesProfitBetweenBuckets, GetStats_EmptyResult_AllProfitFieldsZero)
  • Обновлены: GetStats_AllDrafts_StillAggregates, GetStats_AggregatesAllRows_RegardlessOfState → переименован в GetStats_SplitsProfitByState
  • Ручной прогон через Telegram-бот: /stats со смешанной историей (done + draft) показывает корректные три строки во всех локалях; toggle переносит прибыль между bucket'ами

@mrkotbest mrkotbest merged commit ea6961c into master May 21, 2026
1 check passed
@mrkotbest mrkotbest deleted the fix/stats-profit-split branch May 21, 2026 23:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant