From 4f99b801696b19f5db81306c963fc462c2f93df1 Mon Sep 17 00:00:00 2001 From: Aleksandr Mineev Date: Sat, 18 Jul 2026 00:08:53 +0300 Subject: [PATCH] Replace account_bindings with per-app default account; build analytics charts Notification parsing: - Drop the account_bindings table/DAO/repo/entity/controller/screen; account resolution now goes senderToAccount rule -> source_apps.defaultAccountId (trusted) -> global default (untrusted -> Inbox), via v1->v2 migration. - Add defaultAccountId to source_apps; per-app settings consolidated into source_app_detail_screen (/settings/parsing/apps/:pkg). - Inbox auto-learns an app default on first Confirm/CreateRule; account picker on the card instead of a disabled button; parse_error_labels extracted. Analytics: - Replace placeholder screen with fl_chart cards (chart_card, chart_theme, month_stepper, month_math domain helper); slim down habit_analysis_screen. Android: add launcher icon (adaptive foreground + colors.xml) and app_name. Tests: migration_v2, analytics (screen/month_math), AI retry, inbox visibility; update resolver/gate/inbox suites for the new resolution path. Co-Authored-By: Claude Opus 4.8 --- .claude/settings.local.json | 3 +- CLAUDE.md | 17 +- android/app/build.gradle.kts | 29 +- android/app/src/main/AndroidManifest.xml | 3 + .../drawable-hdpi/ic_launcher_foreground.png | Bin 0 -> 46769 bytes .../drawable-mdpi/ic_launcher_foreground.png | Bin 0 -> 23631 bytes .../drawable-xhdpi/ic_launcher_foreground.png | Bin 0 -> 80725 bytes .../ic_launcher_foreground.png | Bin 0 -> 153341 bytes .../ic_launcher_foreground.png | Bin 0 -> 256131 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 9 + android/app/src/main/res/values/colors.xml | 4 + docs/account_determination_plan.md | 5 + docs/notification_parsing.md | 5 + docs/notification_parsing_status.md | 4 + lib/l10n/app_en.arb | 25 +- lib/l10n/app_localizations.dart | 92 ++++-- lib/l10n/app_localizations_en.dart | 50 ++- lib/l10n/app_localizations_ru.dart | 45 ++- lib/l10n/app_ru.arb | 25 +- lib/src/app/router/app_router.dart | 17 +- lib/src/app/router/app_routes.dart | 4 +- lib/src/core/database/app_database.dart | 98 +++++- .../features/analytics/domain/month_math.dart | 37 +++ .../screens/analytics_screen.dart | 86 ++--- .../screens/habit_analysis_screen.dart | 106 +------ .../presentation/widgets/chart_card.dart | 107 +++++++ .../presentation/widgets/chart_theme.dart | 87 ++++++ .../presentation/widgets/month_stepper.dart | 79 +++++ .../screens/categories_list_screen.dart | 48 +-- .../account_bindings_controller.dart | 55 ---- .../application/inbox_controller.dart | 46 +-- .../notification_parsing_providers.dart | 7 - .../application/parsing_pipeline.dart | 37 +-- .../application/parsing_worker.dart | 79 ++++- .../application/source_apps_controller.dart | 3 + .../data/drift/daos/account_bindings_dao.dart | 120 ------- .../data/drift/daos/raw_messages_dao.dart | 13 +- .../data/drift/daos/source_apps_dao.dart | 5 + .../drift/tables/account_bindings_table.dart | 42 --- .../data/drift/tables/parse_rules_table.dart | 2 +- .../data/drift/tables/source_apps_table.dart | 10 + .../data/mappers/account_binding_mapper.dart | 18 -- .../data/mappers/source_app_mapper.dart | 1 + .../data/parser/account_resolver.dart | 178 ++++------- .../data/parser/decision_gate.dart | 5 +- .../account_bindings_repository_impl.dart | 100 ------ .../source_apps_repository_impl.dart | 4 + .../domain/entities/account_binding.dart | 31 -- .../domain/entities/parse_draft.dart | 4 +- .../domain/entities/source_app.dart | 5 + .../account_bindings_repository.dart | 49 --- .../repositories/source_apps_repository.dart | 3 + .../screens/app_bindings_screen.dart | 159 ---------- .../presentation/screens/inbox_screen.dart | 5 +- .../screens/parsing_log_screen.dart | 15 +- .../screens/rule_editor_screen.dart | 25 +- .../screens/source_app_detail_screen.dart | 294 ++++++++++++++++++ .../screens/source_apps_screen.dart | 80 ++--- .../presentation/widgets/inbox_card.dart | 117 ++++++- .../widgets/parse_error_labels.dart | 20 ++ .../presentation/screens/profile_screen.dart | 31 +- pubspec.lock | 24 ++ pubspec.yaml | 9 +- test/core/database/migration_v2_test.dart | 181 +++++++++++ .../analytics/analytics_screen_test.dart | 103 ++++++ .../analytics/habit_analysis_screen_test.dart | 16 +- test/features/analytics/month_math_test.dart | 35 +++ test/features/home/habit_chips_test.dart | 2 +- test/features/home/tx_row_habit_test.dart | 2 +- .../application/inbox_controller_test.dart | 158 ++++++---- .../parsing_worker_ai_retry_test.dart | 282 +++++++++++++++++ .../parsing_worker_allowlist_test.dart | 68 +++- .../transfer_pairing_pipeline_test.dart | 11 +- .../raw_messages_inbox_visibility_test.dart | 72 +++++ .../parser/account_resolver_test.dart | 182 +++-------- .../parser/decision_gate_test.dart | 10 +- .../presentation/inbox_card_test.dart | 105 ++++++- 77 files changed, 2427 insertions(+), 1381 deletions(-) create mode 100644 android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 lib/src/features/analytics/domain/month_math.dart create mode 100644 lib/src/features/analytics/presentation/widgets/chart_card.dart create mode 100644 lib/src/features/analytics/presentation/widgets/chart_theme.dart create mode 100644 lib/src/features/analytics/presentation/widgets/month_stepper.dart delete mode 100644 lib/src/features/notification_parsing/application/account_bindings_controller.dart delete mode 100644 lib/src/features/notification_parsing/data/drift/daos/account_bindings_dao.dart delete mode 100644 lib/src/features/notification_parsing/data/drift/tables/account_bindings_table.dart delete mode 100644 lib/src/features/notification_parsing/data/mappers/account_binding_mapper.dart delete mode 100644 lib/src/features/notification_parsing/data/repositories/account_bindings_repository_impl.dart delete mode 100644 lib/src/features/notification_parsing/domain/entities/account_binding.dart delete mode 100644 lib/src/features/notification_parsing/domain/repositories/account_bindings_repository.dart delete mode 100644 lib/src/features/notification_parsing/presentation/screens/app_bindings_screen.dart create mode 100644 lib/src/features/notification_parsing/presentation/screens/source_app_detail_screen.dart create mode 100644 lib/src/features/notification_parsing/presentation/widgets/parse_error_labels.dart create mode 100644 test/core/database/migration_v2_test.dart create mode 100644 test/features/analytics/analytics_screen_test.dart create mode 100644 test/features/analytics/month_math_test.dart create mode 100644 test/features/notification_parsing/application/parsing_worker_ai_retry_test.dart create mode 100644 test/features/notification_parsing/data/raw_messages_inbox_visibility_test.dart diff --git a/.claude/settings.local.json b/.claude/settings.local.json index c7231b8..32291a0 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -30,7 +30,8 @@ "Bash(command -v convert)", "Read(//c/Users/user/AppData/Local/Pub/Cache/**)", "Bash(flutter pub *)", - "Bash(git add *)" + "Bash(git add *)", + "WebFetch(domain:pub.dev)" ] } } diff --git a/CLAUDE.md b/CLAUDE.md index 822e544..2eec4f4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -60,7 +60,7 @@ lib/ theme/app_colors.dart # Palette extension (paper/ink/line/accent/positive/negative) theme/theme_mode_controller.dart # @Riverpod(keepAlive) ThemeMode — in-memory for now core/ - database/app_database.dart # @DriftDatabase, schemaVersion=11 + database/app_database.dart # @DriftDatabase, schemaVersion=2 (+onUpgrade v1→v2) database/tables/ # users / app_preferences / settings / accounts / categories / transactions database/daos/ # *_dao.dart with .watch*() methods database/converters/enum_converters.dart # TypeConverter + re-exports all enums (UI imports enums from here) @@ -115,13 +115,24 @@ checked by the gate; +`packageName` — rules are per-app: pipeline loads only r message's source app via `getEnabledForApp` (NULL = legacy global rows still match anywhere); every create path must pass `packageName`), `rule_candidates` (NOT app-scoped — key is `userId+kind+rawValue`), -`account_bindings` (+`isDefault` per-app default binding), `source_apps` (allowlist of monitored apps; +`selfMerchant` — "merchant is the app itself", -e.g. Ozon: suppresses AI category prefill and the rule suggestion in Inbox), +e.g. Ozon: suppresses AI category prefill and the rule suggestion in Inbox; ++`defaultAccountId` — the app's default account, FK not enforced → tolerate dangling ids), `transfer_pairing_blocklist`. Their enums live in `notification_parsing/domain/enums.dart`; converters in `.../data/drift/converters.dart` (both imported by `app_database.dart`). +**Account resolution** (`data/parser/account_resolver.dart`, pure sync fn `resolveAccount`): +`senderToAccount` rule (pattern in body → account, trusted) → `source_apps.defaultAccountId` +(trusted) → global default account (**NOT trusted** → Inbox with prefill) → none. The app +default auto-learns: first Confirm/CreateRule in Inbox for an app without a default stores the +chosen account (`InboxController._maybeSetAppDefault`, returns `true` → card shows a SnackBar; +`learnAppDefault: false` skips). The old `account_bindings` table (card/phone → account) was +dropped in the v1→v2 migration: per-app default (or single) binding became `defaultAccountId`, +card/phone bindings became `senderToAccount` contains-rules. Per-app settings live on one +screen: `source_app_detail_screen.dart` (`/settings/parsing/apps/:pkg` — enabled, selfMerchant, +default account picker, senderToAccount rules of that app). + **Auto-apply gate** (`data/parser/decision_gate.dart`): no numeric confidence threshold — a checklist of named `AutoApplyCheck`s (rule matched, amount literally found in body, currency known, draft type == rule `txType` (null = skip), account resolved+trusted, diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index df8fa7c..f801af6 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,9 +1,19 @@ +import java.util.Properties + plugins { id("com.android.application") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } +// Release signing: android/key.properties (gitignored) points to a permanent +// keystore outside the repo, so every release build has the same signature and +// installs update in place without wiping app data. +val keystoreProperties = Properties().apply { + val file = rootProject.file("key.properties") + if (file.exists()) file.inputStream().use { load(it) } +} + android { namespace = "com.sanders.budget.new_budget" compileSdk = flutter.compileSdkVersion @@ -25,11 +35,24 @@ android { versionName = flutter.versionName } + signingConfigs { + create("release") { + storeFile = file(keystoreProperties.getProperty("storeFile")) + storePassword = keystoreProperties.getProperty("storePassword") + keyAlias = keystoreProperties.getProperty("keyAlias") + keyPassword = keystoreProperties.getProperty("keyPassword") + } + } + buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig = signingConfigs.getByName("debug") + signingConfig = signingConfigs.getByName("release") + } + debug { + // Install debug builds under a separate applicationId so they don't + // overwrite an installed release build (and vice versa). + applicationIdSuffix = ".debug" + versionNameSuffix = "-debug" } } } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fc61e41..746e915 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,4 +1,7 @@ + + ufK#EIf{ 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≀^03OP5eUce$^(xfQdWlB?!BAO*DIv@gt~%Z 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc32ab60f4cbd94772646054b2457be3b9a3f88 GIT binary patch literal 23631 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

>PiPa~c({cVY~=Gccnq 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 mL4+LzoObfNBkVW1hLGS3gb+e* z61YGfBq3Bgfg~7XgAEAxDmQgm{Ya%Ey-Yi7P-g`fNKg;Kw@7v!l zGqc)%{nwflj=qk*j=o;7SNflQ14my+U;lr89Tl*nucNOQ@O4zcj=qk*UclE;0XzCS z`g#FhM+NNY>*(tRd>s|Aqpzc{7w~mdz>dC-zFxrB|0e`&U|_)hlUD-(Gyov~oBh(W z{#F1`e!=gu{ncu<;Mr%NeZjA@a^=bw{2IT^s{nxJtoJJXUOZfB&!d0e;1=|JMjuZ*MPD`}!a+0MCBu#mS1Z*LSuGoYONfF!#JyzG^Vn)UANZ z8XzC;P>R1#0B9ynDIg#-m!#3m9fJ9%k?h=?Io1eJBz7&hxg`Wl0Ev`6hLk-Y zDIi3%0uCxAI5P@r9T@+D8INQA0*R8S$DnkD~z+(01*;_*c`T!-uFbIZ30VqyM=J_TTyXPZzM?`rwDtqO*U_ zORxE@#aQlMq!E@8z*;~$o&e?pK+mBDRqbMNiv|;AWeEvc8?rjIzvlpUiP)9mwWXO^ zJKtyyCemQ06^Q(I(M~U+6D0d5TG0bpLFPKFWXT<8Zoys4towqHtl%L~Vg3O?j%HyZ zG|?(?)xd?v)z5p~aSa48@{+svp#ccFy+3j{%1=j{K<#aia*G|56$vL$MgU3(P$Hlb zfDt6fh|J%R0a3!=$*i!DUDV1wmibAE84OlIMhxt5$mjN2_BtpQhK%O2YRPFP_m9j! zWKp%py1OSHFbX~f#Up5}ozZ$$V_;;v+*hG6GYI*@^%vI{0!$#m;rCzp=4Ud{_mx|< zXMXTEU*6T5%dy+S z&I_>7k~QHhjQ!N#4F4T}-$^a;PreUgp${h|cke8u{!n{zd!(~1Z4b_?oo|Dz4gfx* zSSe~B5|Iw8QwS9}T@rcM8`y6(RnR6tw)`nq@DF}?GdJMa3| zSD*QZ|NU3B$;rw8(7Jq~UcWX0yWr)o#AWAP+{JUuI2cCtn!m*l0MC8AG=`&`xdm+v)kXpH7z|TO4Fv%3rjGOxBQHgFtQP z=O2n!wBqGt)(cA~%)WLIU3V>1!RVs(i~KV=BOxO1p3T`-`|Psrkwo`L?>UVh?ms-8 z8z*WXH)n>d>r1lcMfUu8$r~wu9&?>e1vn$$V;vyUVJ(?6a?Uj%cfla7*1S=R0BZ$N zt|8om94GfCUWD^JjH;vr2{QyJD^S%0D;0&yGKEX?oGymNCk~(Y-ka~a;=h0VYn#6J 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


IF)(5kAb~QEEd35N=Bm^>V6t2TPgBa-@ zpqC$eR&I;UvpUc*uai3FcA#TcE46jDAX{HchMYsPSI%}SrE>a-BD=YsW~WA!r_Xdo zHuu01uO)9samZrPuTm(|Q2zi1dWNaLXAphI`l#<{4+;~LN*V-?T{mH;8d7^h0<$`5 z==D9L2t!>O9@#;eXMT+G<#*|RdQ?tWilZfpX!I~5j@Zb>VJs^N&2}4wB#xt}N-7<- zw_=gYqTHvt^V**qrUFY#!d!_-HJhWpm$^vdid82eC!h+3QW)AKQ_l~xF6z3zCN0T} zo*qwsvS6i9@{dF?$F!$)1|_0EAV$yxnuHnAJEC2{>=;o}81+av`zt44Kgmb2AWNG6lgR*NYz zUzhB6>#^fV8HnRJ#=swyN`(u#9CFh+o}QS-^kj~w#-=baI?iK*V;Jfk;NihhlmqLP zr)mtPin`SWg;v$~XS zldSqDWNn%p>S>Wi(jSXVq!p8zrebRtG z3g8DUk!sh8jEmxP7eu$HIw=N3!1TRrjca;yY?ytfj?sSuUC8;#|Dy&=I1!?vJt(ba z1(vN75qpe)(x5)^{8q0ZO9VCVLpDuj1DBD}6RL>HugjbW;j{>hDJ+T7egUbwKS5Ok-4fStY_CT{Ya<=mepsjj=x2{~ z)1B{GgoUj&G&@<3%EGzSGdzLALlbl|UqD}>L{omno`?8&0Ung{MLK@)I8GisF0Z36 zUA&D?it5#*5(%WzNlGS@0?H?Az;6*#R-+y&6_iRPDwoPsDpy2XgEYTirm)Irj!hj4 zmCxvz%<_CgN&sj{rKvNM!rZ!QTGZK$Y|Oz zIfiaq_|TyDWUqsWs#AHUWP&6CJ^t(=7TKy&3^_R}kTrxoL3=;~ABEhR>=8f1DUa+F3VeY*Rh19a2bb7^k6PC}lYb23!zgtUCJibB_;obS_cu}H&}3QYz+ zO$Qa4E|;k+C=6l{fwIWAnn;D+33Di)^1e@bDhQy50**FG=yUX75n%ZY&Q zg(W3GyuK=tpqfOIvR;CkJdc`FDXL4QDJc*KgjBbnnv%X65)dRpdSLTO+S)y?ON@{{ zc*m7={`yt4@uyGIYfrsRiQ*LTckZCdKR!a!Eej*!wQbXxk|nyvnza=rcE(f3l$EyY z5G&^m2{xYcQ2buT(2Q7u7~g9V#&+S@OG{;d#DZ zsym6E-;S`$A!=QRv(+iguc;C}dpMyh;p$?g!c*l6#!3~QELAY&2V4k3=@%lX_mwc< zau}c-GFRks2P;X7N}64AWiwO^Z%T@R3Syq19{MK+g=bs`RgTLwNe7LoB-f=9s7@u= z6-c4DwAGAoqAcK2Xe%jrEiQN7kVQCF=3_4w@xV*n+&@*3*IQ6~uQ;ob&zPmE*!O<) zD)gNg;$!=Ik(d}@_ujvS`?vSAPo8lPBm-8&x5NlBh!n{)w@l^;Q6s}wj*S#z+t3F^ zgB7#3s$E1}H@KO4w#&X49UUT*QqL7)<7~xe38K14Ep;2y_|vf7A|Ng5 z^y0Pqwb^X+8GrA4-y_dQ)Ik#&no_~W!Yjv%&zMHW1ju(ZOwBRIULWY!IWt{=Z1d7C z2{jIxV;UgMBPUbox{mpIER;qcY}YrU_PhOR5D)XcIJ(q$KT^N?XGuK}RLQIFxB&}R zEFfVcF#YP&RD}|5yS$4Ye5r>H^_Ng#ho0^p#LkB&=$6!cELm7f1N8xdNl>OUftCv! zD7&~GzFSMjAM8Q#&;+Gj2kA_jnvzL`>5$4U!%4a16)W(B@xG@T%oQg5WPi78ZvM%q zE}(PQ&XJJbm+$3_8|tvSrAhWx!ay`cLs^`QaD`%sgyTp*co^E7!_;mxBox+90M6jJj!Srl_++Vp%so_}Fb-Xn2o6HbT?XSdLqi?b;1-$hPM4Ki~V z)9rtA3%>c+_t4~c0jb?DQu(R>Mfu&I)L@W}AF+|ZF)+eb1QF%Q^1#hK0ZXlxkctGM zkz+YC2nlR!kW3Ji-7+W|)}TWyBmQAu)<}HFaGzCLvv4qtY;nOt!BO8O}vjZbZGeWMRpk3Iim6 z{m(2!nc~3buUd%pH?L(1OQ>|e&Z(r2QW$d53+a}1op@&32yfmuDFJ}q-V(m^pL_U> zGwN}}ySuo#21qt|ObJg$9pPFaR;AZz>P#Q5cn!vB(u8G9Z>;RwYAnRWDQy^UJ1*r}81>m@qpL zC!S4-Nanyzgx1lQ^k623jp?ExxZCEKk;d5wW>e8qL5^rNvwVeX)gW3%Vc}6#7r;pH zY;-X@6h*MSSu+%iP$p^!?-Vr)F9H~%ik4BXfQp_Faz;&TrK5qQQI-8uo0E1w(<2I_ z#~eCv0O5EK)peCoyrhYSHw|H=RHi-S6B4lyT>Nd%9-(c}=MX9@jRWI3c;wL1nrcdA zLd?6WnVhg6T&kglGwJ|3jrxDRTS9sQ7^z#DA}Zw&j*SV1D<;bcdTUP(ue>@){ljHF z^bnHtvwUtfHmq)-Y({;btV+B{z^TLyuwPZHe zEU&>>Ux7vH*1TZ_J1GbL$-_*0UjR2$b9GA+k55eTw&8Kv`XmQv{2+IO+RdY35k!MNUafhA!6#Sv1 z?6u9u2S0u_|Ldpkkq*C^m+wb#^{2VmJYQ~rp)!`1`b@#%FdmaLoXXjT33=Z=G1kq2 z&PqZ{B@?W6VMZ0NtK(Tqq-)d`WU8#;N+42Awoy}wAPCu{n%GkGS&q3ia=L`evIdLl zIE~!|=9xUDZd8auEGDThfrf0~5y7$=*>aQ}L!b>{9hf>uepk+LWd_v#QbBl%jNF zhTOD^!ca~ajp53hFQbcYsljV6Zlj&AZAUp@lF!cg6w{{XhVh4I2C24T9~RANpiZhr zS6!A;%{5X&!jnVrT$h4EfQ^qHqiw^Ja#BkB(z)1h=Ph)`+LcHoCW-t}P%uU0PvPYL zlk~zvd-2*I4%3wH)5h12A-kMtSv$e?OT?8TkjheOPA3MYda0*4fv3K^o4OB;iBW3u zI*MWMQh(<#&6ztJ=d4{#%U8|^cfUn6a0toT1f?3PgocO;Wf#X!Oi|B39%B;~%9W2I z(a=KGbs03b*3tODI1*uj!pFah%7?!reOt*ijCAA;Ey0ARF}_K894c8I-$-EiL6%I))7(a{8Mtt#R~ ze~EYP%FAfI_9M68#=p3YsXU1M{--&Ae7E#$bSZ#Wm*KX>^Kk2D&*JqrEv0+E_&mmY z^Zc`)9>IIoxA4?d1-;L{!9B;vFf}+WFMyC`h?~jUvA7ZvXHpJUu3pAMA<#LmlUc01 zpv+jj8eVdY6G=kPK$)M}d=du_Pp}fEs30Nw)d7#lU?B(qvM&xG^ZElET=@x_Y+EXC zPr$a}3oZ0lw6stW4opoIP51=HrimM~QC&2d4_R!W5nC*BJdA2R*w3M8(1Cn-riwr| zLm^i0?>a^?C67fYvIFgSG&=6nqtEuxi*F3z z`YYzrS-0JQFi}T^;ePmq9Jz@Qt1mi}&OCo5`g;aw?~a2wu=g1C9qWNsI=~mtT|UH- zJ$-bHlo_tM9#?+qBiQh{h{Z3lt1?qquVyxz!o8tv-YP z{M#Go`=5CN69XlB_zxpu@le1M^8R|-$ja3_u~(hM!e#Sm$%+M7cKRa9WHV}tjJP7n zG^HClk*aT`$;v1;-uF1Yxno4$8_B(dK;zUNs3^1Q9=R0V>y)1d{_Sc?T=p@VdiN)h zPt>R>D_Rr_4KrGbzs1|5=Ss9)`o}|QJt2_MN)RI=n0sVE;5ce+9tB$`8HfusT~rxR zIw8Gjqb4@RUTbT3T|KDwscbaA6NI)ER6;zuj^U^(J8CY5M4rg%GV0|oyzl~zj*hC; z$hzn!ri9`1YAZb{%Ye23u%MrvfEnv8**=(U5vu=$RtIloD{+(&hByYhE)DKyYFYVO zKM?r+o*ZsJ2G2ZnwPCzkA-V4 z;FkFdkg2KRN~wsk-eY{|jW@CFsZBgRG$ilA)KtK~e4raW?$dnzC+|W{wt*{?qsaFi z<*=BOo%z=GMzpk@&lg^LE_QF-%g;Ub0!oFF+<^lvA{9Hir)!6$7p=mEyRPBl;pdQl z^;cZ~?hSBjnuG`fPk!YPl>no?J$!PnzeG~4MN7%XRZcKKZ zp>}_c7;TzaW9DR7suXGDS3KCI3P<-h&lrChEMCq2pD zP$X~p_&7j}3a0TjnGxm7QGKU=9z{M)8cFE1R2pjsO72AoNN;)@!EV3(cKXIQz9ITx zDsBaiv^?@Oher}^6HW|Lv;d3BwKFbJ$`#Zfrix0{A~?}zrfenA7IWcPq>A+sEgr9< zzwxm*JCCpvNDGF7r`D4nNF!8Jb}A4HI&7+K(;ymf%hOcz^S?&+%?IUh~g5oz-SH6(X_t!ZOk63vkvI>*a8G zdr;W+DAiy29RQx>GuC#{ z>reHo{XIzt%c1P&7+9d^STEi4^&g?7tDRP_IUTFcTS2w$tw=YulAFoOSTx!uPt3LAu9N)Q(UcB!I*tO~R zV$L*W`uBssc{5e+{62EaE{pDsUM||lNa1xh6Eb~dJzq665z15-P;#C~J`iP6@g9|p zcriFnwd+yvRbMNiEd)qOv=Ewki-K^j4S8bn^&ZO2{%NERiW zDQD5M614OrG_sC(x7vP|*qKX087tiCg!G$DZ%NPQfuq@N=l_|#WEvEdn9D7{L0UNAtf=J zAN&J4=g;NyHoQxIc2Cb3p7`0r-2L`$ncwSHx{{}4GQ9l!cVX$p>v+kz7vjZV-^VZf z364$=AwHY7%_P2QMl6j!8#K`xni7zUN)^i61@i+rc)Nt3z zRk-b&|BuB&``O=o5@W}XabkJ|b$8#%;a}d5{QPsZy@#U>gmgWur?8M^dXNPLb*Ivj zMLDW7EO9%gThWiEkx!A~2HPH-qp>&7)Z!W?6qrptht{T z_=hiI?QM6cTT|>O_|sak$)-=PkJQyQM<`8X9M02w|Lk^DyFNYrlV8c>{_Xefg)o-f z^5paA7Dh1oRAik}m8BJzUV&9tUQMT6pp10XW)jk|-8hH*KB(vDVJta!87*0} z3|D{hCK^22hiy;2MsGZ^8AILuGP3!(0zLQ3hw<_wPtgU}T#nq-H1!?nLDF?7+fa)? z`_HdZ+k$pbSk$x75R=-(M6+RmP%MC)aiU~B=B!vrpZ?kXbkD~>ik{uODOsLI&5!?r z{4YEKKhsF2>7*z|Y@Y|^Cah*MI|jjblo^fZY1i62NjfGBkeifC#u(VI#*aF*qnzHi~JPt_lFfO4KT_aVU0$EO6*Vm8ac4^m4X@Ev5Y+FQI49!Qi|^!VX!; zN#zkK3qSSO722+Ds{Y+q$l*Yy1B#ct*0ElcxD^JkTSxOkv z`uAN+1BVXMwimZjxlpE`{M+{_mW)jBTAe`ZFAdb!^f_m4R>8bM|T~g%^RPm?VDbs zpj4sKWR5od;$cZDmW^4@rQ84Ret?F%4^#E;^+GtZ!<=fpa?CXX^} zo;0V=HgY+-jpA>iOqBN2Ig~2&jz5UscYO?oLKyEXvvCDtbxF+jBc@y?oOiyjXBLK| zv{SBbR>*=dG$5j(wvc1h!KUz&*DQ=c3voR>W1JsqCZVBHnUqlNJ=$QOjH*jTd>hEL zo2b6Ro(l=5tNDVF!dW&e6RKsPG>6KgLjYyj=YD{6c}ju+OD=vFUwYez!R0BY^0;zY zk{e!ZkR38~ zm#^YGw|$U30%~6WEeBVA3c1!L%x1u%cKTBNe&s<;t|paBZ%bu&!rGgbBjXqAa%LPr zE&VNwwS^*vNDR^!01CKN<{2QFx!-y+jg17HiyT4mi`;QJO5d$ZueGzWqMeu_s@>`| zrAe)4ZB0*x4P^^u$Y)Y*D=sS|Mwcj4nL_%_hn2L-bLo9w_#U<}sPyhV> zF9N=r4RijbXNjSH_ExCwyc79=Xqudbl1$i$eHBg3FgJ(=tIwpfuelDppLmoKTt?=N zja0by3oyhE)wWbyXQ&&}%3i>DRm7aG%zrozmYLi}r*9O2A~9+zSuaTgP@BOU@uoFV z^h{DLRgAToEYFv19R~B)*9%A#69U;!Yr?dCkg;yvI`-nDS7Hm!Lf`q4w9B?MBjcqY zAkAV~IQoiygQ*dftC0A)S@jlRsLMc*IgKr zhLs|pcIE=S_~h&IZkCG$7FLJs?_(~$0w?HGwE<+85RHcvj|H$>90s~=%4ALaSX8H$R^Wd z5X$<%a=j6jIV??M{YUTOU4M8?o_A{JQ%GF@IT`vxqrfDsK39g`y82Kfs|>s$<3(WP zDLO*Q@obUvG2&TA^g6@*h*Zy3kfxu}nHtEL$B6j~+YYx)?8qC>F;0`_Vn|1TK$Rth z7|5}1-8uzwK*N?&aH-k6;&px?bTf#p_ESigvUfpL2_&CP!O&rpJXm<%>^z7S%7z?j z_YTY8(3`!2IUIu;$VjEBP8QT6+fdeAH&w1VOv!yO+CK8KcfE_k;wTXMa)_O3bcC_x zP0=wDB6x*B+crIiZBK5Z^RBy!PFu4|I`~rPqph<=WmDwPVD}#IG|x)mv@@!Rie&_D zmfYG_3Xi^yt(&Lh20dq4lB(-Urf(gU^=y>gBrVmQ@($wi4h-#|WwV8@xgF|t!o0LF zMS)Lv=GQ-`p_9G%@K?TM0R&F~3-leJs{9Bl znHF{Ln6x{$DmEN#AsOoDA@cHo2EVk2p%G>wx~}o&u?fF1?7)K2GlUn06cNRhnT}nE z|GNkM!3RqrZfwO;sSV06tm;tcX%E6~RIkrX9okHM9`uEiBa3eS=;` zyT9?bAg+W_zH3%J9J33UeJS$pkjxAMM{GuI?+1kdD!5(4O9~-msULJLyUaqqdVy-H zlQ{1X-ibXnf1kB*9wd zmzhE`la>@RajGRThIV`xocelI0CIFpnkA;UHFbSXJAXdccGh6v#1#Mj;eOn4do5E< z15l~3#}%wRKg*||*Mt{;eV7-W*@W4P(#(Dd0jJqrd=dF4c3|XqiC@_~E^DPV8$_Ga zkDZsPdqdcfS)oFKgq)!~*ej7Qk*d|yR;$;CJ`Wz=j~{&PM?875A4@Mj&$cVbG+fEL zR77NfP`cbGQ`S(3xqJkQDJFY++4D=FzJrWKE$TNNb?+o~$}uB(AiFf7!SSr{ zUHN9p{|OcSj}3fpxEDCZ`-8}+Ibz~q#3FGNxuROkO0Hv(Obxn`5*jv+H}YTISRk^0 z#B?GzN%nEFHJEQ8Ovlb~)_JHL?g$}o61*^u;2OKSO(VnR%8IXOc`XL=jzgp-bF^Qf z8(}c^efr&;P@5zfS7|7hX-99tB9Mb&4r0 zPKim8%4=Qv_q*1E9TW}6v(bmuRFbnUTZe(e-L&c6U(gfxZA4{kfYx7kF-oN}C0*qM zm`!`|b2;)F8lwniGi_4_D9Ae~m1+9;ah$WJjvhWfi8r@R(~|i~Ty)-uO#K|Og-;B^ z@pH85!Uj~=c@zpClDc{1b}mQd*mf$M=%@er=_Cqehg#|bEb1gGPXNhUNAtSbW(gFb zQTn`GBm?317zq6t`NfhbQYkk%iMzjcFAWcjqh(e*ec3!Hvhrn_YWYA7c+7wPZ35U5*5w*HwC2+AUHHu_clJGl`pJEq4hz!pMsV7W3e-qJ zl}yD6RHgz>);9}kFOyhgVu+Y{#2m$iQJs}oe$UqQkKgl=_fh|mBiQoP%lyZ`&``r;5Z|! z$A#yd;7Ya$PWx$c;z!*qF&nA|$kcFUbO^llSuRYJ=$>CsqIV!<&k3>aJda1-oW|H& z0Vf(9)GbPK{UQ%;CQzSkc4R}04Tzf?9e9F9O%9G9Iw5UffBnNpd9Z&RuIKU{U-}Gc zYEzO7>}W?|Tf4A9h=p}jAS0h-Z3jNWKuvJ*i_`3g$fcuP`{*0odGIwTHo1qXR4ey4 zUw|VWS8-3vC74Py$;UY~UiCUdRL%)x#{)Y$>d5EQVI7rYew~J&XF?bo8v`erac4!u zaq(u%;}gbi*vz(r_2G1^p^sg0HfoxFS3H9K;upVAWM2^=wArK+QB-s-r5ez38j3G` zBm(7Y7@DPT^VleFHG~huL?jlWaf~OSMrw3)GWC^&m>fCX5{Qkaf~e&YQd{vbmh?VM zi~Ao#)AW9F!?Hv;1MS8?84~41U>ZA$I#eRr;trBEnCqb205sDE)0w^PE32m(Azs` zbo)*Olapkou>|r4`gGa(4xWA;)Zg#mp~uGQ!2SZ(o?D{Xtvx6ScaCII)dPNra>=Ew zyNY;zOP+?OMJX9z{e>Pi)mI=a@4e84KNM1NxP<;Uic~ulZNh0)Ow6zdDD((f`D}*1tZBtmhfuj2 z6IDubh`V^{L~pNdx`_QuOO;7%j6OA%dePFmk(=rFxWm_3a&;u+YC_3hQ_m zRlapFGlCsFcu;Ki`Zv_ageG#vO-eX6El?nI63GimdhSVuaU9u%u`7&ri5SgYa+wF-d>g}CwlbAV%JEij zlTMORS4Uh^$EeN*eEMn!4?INt_729L17+TQu#D@ z)@K8J;AW4PEGk0C%ciCrGZgBO#+$bK;`V>e3KQNdqI-_ z@VGB+9Nv6shrBn-PMe4G*PqLUksj%Ln5u76L(UzOEV*i@lM_zFe4>h+?jq7c_KPTu z_Aysv%E^7lPs)fCIKahUdW1oFOdoxlr@A*|vU>|7m=XyyXDdTk-uD16>w5?znFajT z+&{&xjt_9ot%aG>?!DeBtkQHQ1`>26<2y=H+?OR*Hi}iG5s%-Eyk&^27R>l z%sQf}Y(7Xe(I~E2b`N|2A^h4Y{doL-=&2kPa`RIbw@=#_NtIwdqT}M>c7^13HeQ&n8G<>@CgM`&*di31$A&wkp8l7@5 zFz%B{GDR;h;kZ;&72>Sb4y{}3QBAfeqk@xRG-X0+Y6Zkdu!%9odgx6kY8XQ!;8&5b%-Ez5|##tIZi6B2ksm69W%@f*5_}Sn6 z9y?yyLZA8ezsi1_9F|_nQF*M7xLlO?b#!D5eJ6+H?XK-;r>6N!z(`ZW{EI-Beu_9K zV&d2~n%Mg!#&KA^lUB~8kE@#=TNAyI40>wuh*DQrdbe0urGi4%VG#R zn^+u{%Tz3u1Y<(ac{2SgD?=fh=Gq64qHg12{o#;6KL!78-*EoyV1xien69{sf znMa?(vNUwzT8i{-zd~GY=-F*z7{I}0? zIvJueHOdqOl9eI+4NS*dn9#V6lAkX-y_zq$xDJ#`vM>cb_ShddfA|ozwny%Q_05Fl z4zQODV-p!ok4;WZ7Sd8)w#>)!}^T|F&z9_CMqp3dR#S0xQUE;Fmm5two zW!XTZdR~&y+y-uL1186a2m3;l3yws?M)!t1dAx|(7o<4bM5v6G_{N)3xaXb{i;7H& zXkABDG%`02+0Tu`&yBMy=2BPH@?*bv0xv)GG)iii#hnY2{8-JbhIQg@!E55 zYFQ5RlI3NTkNyRtdIjA2b?hV;1IZ?CSbQlO7O!Kv=ASWo;CUW+>3=bO;CU9r%7(%b zUcc`jvGT|d`K6^_!v5Cl*%tk9zH7p&Ru{ z>4YKxlr-7bG4e-;jcvO8Jx2{^P{(WPELYjOxhT<@$A3l_9{LZ|mHSC?LqJ~B0?fMf zlhl6B%|IfnGJ$ZMxV#@!*-c^Ph-j*kQyc>4-=^9sAIs0IrafCrsFW-8^dqm}+7Di? z`(T1RRz#&dKxG=l(#6fx*wKRC6GQZ0pZj;*^_iPVSX)C*4AaC?hp4CfB(}Z0Lv{*8 z$#u;QvxMlK3OOH#fA}*(VOld=73@1@bN`>Th0#2GK$TLDAMVlgUQQr$pA%x^EZyp8GzHZrdo>{M3~1#x-w$jFz?h4lgYI5{*QTu#Nn> za2z_k^DzDH2M>^6@#T*7uFG1ets_aphkI!7$S(Oh;SrOr4yj`fC{x3l=&Q5jOh`^W zlUJvkAto^qxLPNO8$$|4Ks+h*>e1~se?plKf}92-w}D8>H;LS8@i!!D70)Cn7z2e9 zg2y9Ma;k47s%;_~?j;%-R4D%Ffsm$qLYlQWMb})Lq~k{mG&%-4wC@<*_r2fH`|rA* z($y(asWRw^-@QPuKKHiB>KvlfIh1W*L5n|lH{~z?OFH`a*J(c_IDx7J;n%* z+Tqr+=$6Te9)0R%q%R!%;Q31fT(Y5tU)z)y2tPmg!-sI&U){#-bKA{SZk_%D&FzhR z
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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4c52048cc509faa9155de58762b251b3a85065af GIT binary patch literal 153341 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
a1YOc1i8Io7X~ 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�HV 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..5c662acd9e931c39914cc705ba75d0412660d526 GIT binary patch literal 256131 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

#Z@W;&YG;m;0^ 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

Xq8iXFFh2v_{@o{W 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 z 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..3927673 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3939161 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #59C9FD + \ No newline at end of file diff --git a/docs/account_determination_plan.md b/docs/account_determination_plan.md index d3e4ec6..42af65e 100644 --- a/docs/account_determination_plan.md +++ b/docs/account_determination_plan.md @@ -1,5 +1,10 @@ # Workflow определения счёта при парсинге уведомлений +> ⚠️ **Реализовано и затем упрощено (2026-07):** описанная здесь модель привязок +> `account_bindings` (карта/телефон → счёт, per-app default со звёздочкой) удалена в +> schemaVersion 2. Действующая модель: правило `senderToAccount` → +> `source_apps.defaultAccountId` → глобальный дефолт (не trusted). Документ — история. + ## Context Приложение парсит уведомления банков и создаёт черновики транзакций. Проблемы по текущему коду: diff --git a/docs/notification_parsing.md b/docs/notification_parsing.md index e290c29..50606d2 100644 --- a/docs/notification_parsing.md +++ b/docs/notification_parsing.md @@ -1,5 +1,10 @@ # Парсинг push-уведомлений банков → транзакции +> ⚠️ **Устарело в части счетов (2026-07):** таблица `account_bindings` (карта/телефон → счёт) +> удалена в schemaVersion 2. Счёт разрешается лестницей: правило `senderToAccount` → +> `source_apps.defaultAccountId` (авто-обучается первым Confirm в Inbox) → глобальный +> дефолт (**не** trusted → Inbox). См. `data/parser/account_resolver.dart` и CLAUDE.md. + Спецификация фичи: автоматическое создание транзакций из системных push-уведомлений банковских приложений. Платформа — Android. Парсинг — regex first + OpenRouter как fallback. **Главный принцип флоу: пользователь подтверждает каждого мерчанта один раз.** При первой встрече с мерчантом приложение предлагает в один тап создать правило «мерчант → категория». После этого все последующие похожие сообщения этого мерчанта подтверждаются автоматически. Никакого «молчаливого» накопления — правило рождается явным действием пользователя. diff --git a/docs/notification_parsing_status.md b/docs/notification_parsing_status.md index 2115d1f..ca6f86c 100644 --- a/docs/notification_parsing_status.md +++ b/docs/notification_parsing_status.md @@ -2,6 +2,10 @@ > Рекап по спецификации [notification_parsing.md](notification_parsing.md). > Актуально на **2026-05-30**. Ветка `master`, `schemaVersion = 5`. +> +> ⚠️ **2026-07:** `account_bindings` удалена (миграция v1→v2): счёт теперь резолвится +> через правило `senderToAccount` → `source_apps.defaultAccountId` → глобальный дефолт +> (не trusted). Упоминания bindings ниже — историческое состояние. Легенда: ✅ сделано · 🟡 частично · ❌ не начато. diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index f78f6fa..6f1c4c0 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -69,6 +69,7 @@ "analyticsTitle": "Reports", "analyticsSubtitle": "Analytics", + "analyticsNoData": "No data for this month", "accountsSubtitle": "Management", @@ -221,7 +222,7 @@ "gateCheckCurrencyKnown": "currency not recognized", "gateCheckTypeMatchesRule": "transaction type differs from the rule", "gateCheckAccountResolved": "account not resolved", - "gateCheckAccountTrusted": "ambiguous account", + "gateCheckAccountTrusted": "account not confirmed for this app", "gateCheckAmountUnderCap": "amount is too large", "parsingRulesTile": "Parsing rules", "parsingRulesCreatedCount": "Rules created: {count}", @@ -317,6 +318,12 @@ "inboxNoCategory": "No category", "inboxAccountUnknown": "Account unknown", "inboxEditRuleTooltip": "Edit before saving", + "inboxWaitingNetworkTitle": "Waiting for network", + "inboxStuckOffline": "No internet connection. Parsing will resume once you're back online.", + "inboxStuckNetwork": "Network is up, but the AI request failed. Will retry automatically.", + "parseErrorOffline": "No internet connection", + "parseErrorNetwork": "AI request failed (network error)", + "parseErrorRetryLimit": "AI retry limit reached", "rulesTitle": "Parsing rules", "rulesSubtitle": "Settings", @@ -432,14 +439,14 @@ "sourceAppsSelfMerchantLabel": "Merchant is the app itself", "sourceAppsSelfMerchantHint": "Notifications never name the seller: pick the category manually, no rules are suggested", - "appBindingsTitle": "Account bindings", - "appBindingsEmpty": "No bindings yet. Add one to map a card to an account.", - "appBindingsAnyCard": "Any card (default)", - "appBindingsSetDefault": "Set as default for this app", - "appBindingsAddTitle": "New binding", - "appBindingsCardLabel": "Card last 4 digits", - "appBindingsCardHelper": "Leave empty to match any card", - "appBindingsDefaultLabel": "Default for this app", + "appDetailEnabled": "Monitor notifications", + "appDetailDefaultAccount": "Default account", + "appDetailDefaultAccountNone": "Not set", + "appDetailDefaultAccountHint": "New transactions from this app go to this account. It is remembered automatically the first time you confirm a message in the Inbox.", + "appDetailRoutingRules": "Account routing rules", + "appDetailRoutingRulesEmpty": "If the app reports several accounts (card, deposit), add a rule: text pattern → account. Rules override the default account.", + "appDetailAddRule": "Add", + "inboxAppDefaultSet": "Account saved as the app's default", "ruleKindMerchant": "Merchant → category", "ruleKindAccount": "Sender → account", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 6f41f88..a70bbdb 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -236,6 +236,12 @@ abstract class AppLocalizations { /// **'Аналитика'** String get analyticsSubtitle; + /// No description provided for @analyticsNoData. + /// + /// In ru, this message translates to: + /// **'Нет данных за этот месяц'** + String get analyticsNoData; + /// No description provided for @accountsSubtitle. /// /// In ru, this message translates to: @@ -995,7 +1001,7 @@ abstract class AppLocalizations { /// No description provided for @gateCheckAccountTrusted. /// /// In ru, this message translates to: - /// **'счёт неоднозначен'** + /// **'счёт не подтверждён для приложения'** String get gateCheckAccountTrusted; /// No description provided for @gateCheckAmountUnderCap. @@ -1520,6 +1526,42 @@ abstract class AppLocalizations { /// **'Изменить перед сохранением'** String get inboxEditRuleTooltip; + /// No description provided for @inboxWaitingNetworkTitle. + /// + /// In ru, this message translates to: + /// **'Ждёт сети'** + String get inboxWaitingNetworkTitle; + + /// No description provided for @inboxStuckOffline. + /// + /// In ru, this message translates to: + /// **'Нет подключения к интернету. Разбор продолжится, когда появится сеть.'** + String get inboxStuckOffline; + + /// No description provided for @inboxStuckNetwork. + /// + /// In ru, this message translates to: + /// **'Сеть есть, но запрос к AI не прошёл. Повторим автоматически.'** + String get inboxStuckNetwork; + + /// No description provided for @parseErrorOffline. + /// + /// In ru, this message translates to: + /// **'Не было соединения с интернетом'** + String get parseErrorOffline; + + /// No description provided for @parseErrorNetwork. + /// + /// In ru, this message translates to: + /// **'Запрос к AI не прошёл (ошибка сети)'** + String get parseErrorNetwork; + + /// No description provided for @parseErrorRetryLimit. + /// + /// In ru, this message translates to: + /// **'Лимит AI-попыток исчерпан'** + String get parseErrorRetryLimit; + /// No description provided for @rulesTitle. /// /// In ru, this message translates to: @@ -2036,53 +2078,53 @@ abstract class AppLocalizations { /// **'Уведомления не называют продавца: категория выбирается вручную, правила не предлагаются'** String get sourceAppsSelfMerchantHint; - /// No description provided for @appBindingsTitle. + /// No description provided for @appDetailEnabled. /// /// In ru, this message translates to: - /// **'Привязки счетов'** - String get appBindingsTitle; + /// **'Отслеживать уведомления'** + String get appDetailEnabled; - /// No description provided for @appBindingsEmpty. + /// No description provided for @appDetailDefaultAccount. /// /// In ru, this message translates to: - /// **'Пока нет привязок. Добавьте, чтобы связать карту со счётом.'** - String get appBindingsEmpty; + /// **'Счёт по умолчанию'** + String get appDetailDefaultAccount; - /// No description provided for @appBindingsAnyCard. + /// No description provided for @appDetailDefaultAccountNone. /// /// In ru, this message translates to: - /// **'Любая карта (по умолчанию)'** - String get appBindingsAnyCard; + /// **'Не задан'** + String get appDetailDefaultAccountNone; - /// No description provided for @appBindingsSetDefault. + /// No description provided for @appDetailDefaultAccountHint. /// /// In ru, this message translates to: - /// **'Сделать счётом по умолчанию для приложения'** - String get appBindingsSetDefault; + /// **'Новые операции из этого приложения записываются на этот счёт. Запоминается автоматически при первом «Подтвердить» во Входящих.'** + String get appDetailDefaultAccountHint; - /// No description provided for @appBindingsAddTitle. + /// No description provided for @appDetailRoutingRules. /// /// In ru, this message translates to: - /// **'Новая привязка'** - String get appBindingsAddTitle; + /// **'Правила выбора счёта'** + String get appDetailRoutingRules; - /// No description provided for @appBindingsCardLabel. + /// No description provided for @appDetailRoutingRulesEmpty. /// /// In ru, this message translates to: - /// **'Последние 4 цифры карты'** - String get appBindingsCardLabel; + /// **'Если приложение пишет о нескольких счетах (карта, вклад), добавьте правило: паттерн в тексте → счёт. Правила важнее счёта по умолчанию.'** + String get appDetailRoutingRulesEmpty; - /// No description provided for @appBindingsCardHelper. + /// No description provided for @appDetailAddRule. /// /// In ru, this message translates to: - /// **'Оставьте пустым для любой карты'** - String get appBindingsCardHelper; + /// **'Добавить'** + String get appDetailAddRule; - /// No description provided for @appBindingsDefaultLabel. + /// No description provided for @inboxAppDefaultSet. /// /// In ru, this message translates to: - /// **'По умолчанию для приложения'** - String get appBindingsDefaultLabel; + /// **'Счёт сохранён как основной для приложения'** + String get inboxAppDefaultSet; /// No description provided for @ruleKindMerchant. /// diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 34d7194..87fa48e 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -105,6 +105,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get analyticsSubtitle => 'Analytics'; + @override + String get analyticsNoData => 'No data for this month'; + @override String get accountsSubtitle => 'Management'; @@ -519,7 +522,7 @@ class AppLocalizationsEn extends AppLocalizations { String get gateCheckAccountResolved => 'account not resolved'; @override - String get gateCheckAccountTrusted => 'ambiguous account'; + String get gateCheckAccountTrusted => 'account not confirmed for this app'; @override String get gateCheckAmountUnderCap => 'amount is too large'; @@ -795,6 +798,26 @@ class AppLocalizationsEn extends AppLocalizations { @override String get inboxEditRuleTooltip => 'Edit before saving'; + @override + String get inboxWaitingNetworkTitle => 'Waiting for network'; + + @override + String get inboxStuckOffline => + 'No internet connection. Parsing will resume once you\'re back online.'; + + @override + String get inboxStuckNetwork => + 'Network is up, but the AI request failed. Will retry automatically.'; + + @override + String get parseErrorOffline => 'No internet connection'; + + @override + String get parseErrorNetwork => 'AI request failed (network error)'; + + @override + String get parseErrorRetryLimit => 'AI retry limit reached'; + @override String get rulesTitle => 'Parsing rules'; @@ -972,7 +995,7 @@ class AppLocalizationsEn extends AppLocalizations { String get habitTrackingTile => 'Spending habit analysis'; @override - String get habitObligationRequired => 'Necessary'; + String get habitObligationRequired => 'Required'; @override String get habitObligationOptional => 'Optional'; @@ -987,7 +1010,7 @@ class AppLocalizationsEn extends AppLocalizations { String get habitImpulseImpulsive => 'Impulse'; @override - String get habitImpulseConsidered => 'Considered'; + String get habitImpulseConsidered => 'Thoughtful'; @override String get habitNotMarked => 'not marked'; @@ -999,7 +1022,7 @@ class AppLocalizationsEn extends AppLocalizations { String get habitScaleImpulseCaps => 'IMPULSIVENESS'; @override - String get habitScaleObligationCaps => 'OBLIGATION'; + String get habitScaleObligationCaps => 'NECESSITY'; @override String get habitAnalysisTitle => 'Transactions'; @@ -1070,29 +1093,30 @@ class AppLocalizationsEn extends AppLocalizations { 'Notifications never name the seller: pick the category manually, no rules are suggested'; @override - String get appBindingsTitle => 'Account bindings'; + String get appDetailEnabled => 'Monitor notifications'; @override - String get appBindingsEmpty => - 'No bindings yet. Add one to map a card to an account.'; + String get appDetailDefaultAccount => 'Default account'; @override - String get appBindingsAnyCard => 'Any card (default)'; + String get appDetailDefaultAccountNone => 'Not set'; @override - String get appBindingsSetDefault => 'Set as default for this app'; + String get appDetailDefaultAccountHint => + 'New transactions from this app go to this account. It is remembered automatically the first time you confirm a message in the Inbox.'; @override - String get appBindingsAddTitle => 'New binding'; + String get appDetailRoutingRules => 'Account routing rules'; @override - String get appBindingsCardLabel => 'Card last 4 digits'; + String get appDetailRoutingRulesEmpty => + 'If the app reports several accounts (card, deposit), add a rule: text pattern → account. Rules override the default account.'; @override - String get appBindingsCardHelper => 'Leave empty to match any card'; + String get appDetailAddRule => 'Add'; @override - String get appBindingsDefaultLabel => 'Default for this app'; + String get inboxAppDefaultSet => 'Account saved as the app\'s default'; @override String get ruleKindMerchant => 'Merchant → category'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 90ca3aa..0fd9fc5 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -111,6 +111,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get analyticsSubtitle => 'Аналитика'; + @override + String get analyticsNoData => 'Нет данных за этот месяц'; + @override String get accountsSubtitle => 'Управление'; @@ -530,7 +533,7 @@ class AppLocalizationsRu extends AppLocalizations { String get gateCheckAccountResolved => 'счёт не определён'; @override - String get gateCheckAccountTrusted => 'счёт неоднозначен'; + String get gateCheckAccountTrusted => 'счёт не подтверждён для приложения'; @override String get gateCheckAmountUnderCap => 'слишком крупная сумма'; @@ -806,6 +809,26 @@ class AppLocalizationsRu extends AppLocalizations { @override String get inboxEditRuleTooltip => 'Изменить перед сохранением'; + @override + String get inboxWaitingNetworkTitle => 'Ждёт сети'; + + @override + String get inboxStuckOffline => + 'Нет подключения к интернету. Разбор продолжится, когда появится сеть.'; + + @override + String get inboxStuckNetwork => + 'Сеть есть, но запрос к AI не прошёл. Повторим автоматически.'; + + @override + String get parseErrorOffline => 'Не было соединения с интернетом'; + + @override + String get parseErrorNetwork => 'Запрос к AI не прошёл (ошибка сети)'; + + @override + String get parseErrorRetryLimit => 'Лимит AI-попыток исчерпан'; + @override String get rulesTitle => 'Правила парсинга'; @@ -1083,30 +1106,30 @@ class AppLocalizationsRu extends AppLocalizations { 'Уведомления не называют продавца: категория выбирается вручную, правила не предлагаются'; @override - String get appBindingsTitle => 'Привязки счетов'; + String get appDetailEnabled => 'Отслеживать уведомления'; @override - String get appBindingsEmpty => - 'Пока нет привязок. Добавьте, чтобы связать карту со счётом.'; + String get appDetailDefaultAccount => 'Счёт по умолчанию'; @override - String get appBindingsAnyCard => 'Любая карта (по умолчанию)'; + String get appDetailDefaultAccountNone => 'Не задан'; @override - String get appBindingsSetDefault => - 'Сделать счётом по умолчанию для приложения'; + String get appDetailDefaultAccountHint => + 'Новые операции из этого приложения записываются на этот счёт. Запоминается автоматически при первом «Подтвердить» во Входящих.'; @override - String get appBindingsAddTitle => 'Новая привязка'; + String get appDetailRoutingRules => 'Правила выбора счёта'; @override - String get appBindingsCardLabel => 'Последние 4 цифры карты'; + String get appDetailRoutingRulesEmpty => + 'Если приложение пишет о нескольких счетах (карта, вклад), добавьте правило: паттерн в тексте → счёт. Правила важнее счёта по умолчанию.'; @override - String get appBindingsCardHelper => 'Оставьте пустым для любой карты'; + String get appDetailAddRule => 'Добавить'; @override - String get appBindingsDefaultLabel => 'По умолчанию для приложения'; + String get inboxAppDefaultSet => 'Счёт сохранён как основной для приложения'; @override String get ruleKindMerchant => 'Мерчант → категория'; diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index fce0d84..6a9c58e 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -69,6 +69,7 @@ "analyticsTitle": "Отчёты", "analyticsSubtitle": "Аналитика", + "analyticsNoData": "Нет данных за этот месяц", "accountsSubtitle": "Управление", @@ -221,7 +222,7 @@ "gateCheckCurrencyKnown": "валюта не распознана", "gateCheckTypeMatchesRule": "тип операции отличается от правила", "gateCheckAccountResolved": "счёт не определён", - "gateCheckAccountTrusted": "счёт неоднозначен", + "gateCheckAccountTrusted": "счёт не подтверждён для приложения", "gateCheckAmountUnderCap": "слишком крупная сумма", "parsingRulesTile": "Правила парсинга", "parsingRulesCreatedCount": "Правил создано: {count}", @@ -317,6 +318,12 @@ "inboxNoCategory": "Без категории", "inboxAccountUnknown": "Счёт не определён", "inboxEditRuleTooltip": "Изменить перед сохранением", + "inboxWaitingNetworkTitle": "Ждёт сети", + "inboxStuckOffline": "Нет подключения к интернету. Разбор продолжится, когда появится сеть.", + "inboxStuckNetwork": "Сеть есть, но запрос к AI не прошёл. Повторим автоматически.", + "parseErrorOffline": "Не было соединения с интернетом", + "parseErrorNetwork": "Запрос к AI не прошёл (ошибка сети)", + "parseErrorRetryLimit": "Лимит AI-попыток исчерпан", "rulesTitle": "Правила парсинга", "rulesSubtitle": "Настройки", @@ -432,14 +439,14 @@ "sourceAppsSelfMerchantLabel": "Мерчант — само приложение", "sourceAppsSelfMerchantHint": "Уведомления не называют продавца: категория выбирается вручную, правила не предлагаются", - "appBindingsTitle": "Привязки счетов", - "appBindingsEmpty": "Пока нет привязок. Добавьте, чтобы связать карту со счётом.", - "appBindingsAnyCard": "Любая карта (по умолчанию)", - "appBindingsSetDefault": "Сделать счётом по умолчанию для приложения", - "appBindingsAddTitle": "Новая привязка", - "appBindingsCardLabel": "Последние 4 цифры карты", - "appBindingsCardHelper": "Оставьте пустым для любой карты", - "appBindingsDefaultLabel": "По умолчанию для приложения", + "appDetailEnabled": "Отслеживать уведомления", + "appDetailDefaultAccount": "Счёт по умолчанию", + "appDetailDefaultAccountNone": "Не задан", + "appDetailDefaultAccountHint": "Новые операции из этого приложения записываются на этот счёт. Запоминается автоматически при первом «Подтвердить» во Входящих.", + "appDetailRoutingRules": "Правила выбора счёта", + "appDetailRoutingRulesEmpty": "Если приложение пишет о нескольких счетах (карта, вклад), добавьте правило: паттерн в тексте → счёт. Правила важнее счёта по умолчанию.", + "appDetailAddRule": "Добавить", + "inboxAppDefaultSet": "Счёт сохранён как основной для приложения", "ruleKindMerchant": "Мерчант → категория", "ruleKindAccount": "Отправитель → счёт", diff --git a/lib/src/app/router/app_router.dart b/lib/src/app/router/app_router.dart index fbf2f41..56d8ecb 100644 --- a/lib/src/app/router/app_router.dart +++ b/lib/src/app/router/app_router.dart @@ -11,13 +11,13 @@ import '../../features/categories/presentation/screens/categories_list_screen.da import '../../features/categories/presentation/screens/category_form_screen.dart'; import '../../features/home/presentation/screens/home_screen.dart'; import '../../features/notification_parsing/presentation/screens/ai_consent_screen.dart'; -import '../../features/notification_parsing/presentation/screens/app_bindings_screen.dart'; import '../../features/notification_parsing/presentation/screens/debug_inject_screen.dart'; import '../../features/notification_parsing/presentation/screens/inbox_screen.dart'; import '../../features/notification_parsing/presentation/screens/parsing_log_screen.dart'; import '../../features/notification_parsing/presentation/screens/parsing_settings_screen.dart'; import '../../features/notification_parsing/presentation/screens/rule_editor_screen.dart'; import '../../features/notification_parsing/presentation/screens/rules_list_screen.dart'; +import '../../features/notification_parsing/presentation/screens/source_app_detail_screen.dart'; import '../../features/notification_parsing/presentation/screens/source_apps_screen.dart'; import '../../features/profile/presentation/screens/profile_screen.dart'; import '../../features/transactions/presentation/screens/transaction_form_screen.dart'; @@ -75,10 +75,7 @@ GoRouter appRouter(Ref ref) { ), GoRoute( path: AppRoutes.categoriesList, - pageBuilder: (context, state) => _slideUpPage( - state, - const CategoriesListScreen(), - ), + builder: (context, state) => const CategoriesListScreen(), ), GoRoute( path: AppRoutes.categoryNew, @@ -110,8 +107,7 @@ GoRouter appRouter(Ref ref) { ), GoRoute( path: AppRoutes.inbox, - pageBuilder: (context, state) => - _slideUpPage(state, const InboxScreen()), + builder: (context, state) => const InboxScreen(), ), GoRoute( path: AppRoutes.parsingSettings, @@ -149,15 +145,14 @@ GoRouter appRouter(Ref ref) { builder: (context, state) => const SourceAppsScreen(), ), GoRoute( - path: AppRoutes.parsingAppBindingsPattern, - builder: (context, state) => AppBindingsScreen( + path: AppRoutes.parsingAppDetailPattern, + builder: (context, state) => SourceAppDetailScreen( packageName: Uri.decodeComponent(state.pathParameters['pkg']!), ), ), GoRoute( path: AppRoutes.habitAnalysis, - pageBuilder: (context, state) => - _slideUpPage(state, const HabitAnalysisScreen()), + builder: (context, state) => const HabitAnalysisScreen(), ), StatefulShellRoute.indexedStack( builder: (context, state, navigationShell) => AppScaffold( diff --git a/lib/src/app/router/app_routes.dart b/lib/src/app/router/app_routes.dart index 5774305..3714f0c 100644 --- a/lib/src/app/router/app_routes.dart +++ b/lib/src/app/router/app_routes.dart @@ -32,7 +32,7 @@ class AppRoutes { static const parsingDebugInject = '/settings/parsing/debug'; static const parsingLog = '/settings/parsing/log'; static const parsingApps = '/settings/parsing/apps'; - static const parsingAppBindingsPattern = '/settings/parsing/apps/:pkg'; - static String parsingAppBindings(String packageName) => + static const parsingAppDetailPattern = '/settings/parsing/apps/:pkg'; + static String parsingAppDetail(String packageName) => '/settings/parsing/apps/${Uri.encodeComponent(packageName)}'; } diff --git a/lib/src/core/database/app_database.dart b/lib/src/core/database/app_database.dart index 30db003..f6c3402 100644 --- a/lib/src/core/database/app_database.dart +++ b/lib/src/core/database/app_database.dart @@ -1,5 +1,6 @@ import 'package:drift/drift.dart'; import 'package:drift_flutter/drift_flutter.dart'; +import 'package:uuid/uuid.dart'; import 'converters/enum_converters.dart'; import 'tables/users_table.dart'; @@ -20,13 +21,11 @@ import '../../features/notification_parsing/data/drift/converters.dart'; import '../../features/notification_parsing/data/drift/tables/raw_messages_table.dart'; import '../../features/notification_parsing/data/drift/tables/parse_rules_table.dart'; import '../../features/notification_parsing/data/drift/tables/rule_candidates_table.dart'; -import '../../features/notification_parsing/data/drift/tables/account_bindings_table.dart'; import '../../features/notification_parsing/data/drift/tables/source_apps_table.dart'; import '../../features/notification_parsing/data/drift/tables/transfer_pairing_blocklist_table.dart'; import '../../features/notification_parsing/data/drift/daos/raw_messages_dao.dart'; import '../../features/notification_parsing/data/drift/daos/parse_rules_dao.dart'; import '../../features/notification_parsing/data/drift/daos/rule_candidates_dao.dart'; -import '../../features/notification_parsing/data/drift/daos/account_bindings_dao.dart'; import '../../features/notification_parsing/data/drift/daos/source_apps_dao.dart'; import '../../features/notification_parsing/data/drift/daos/transfer_pairing_blocklist_dao.dart'; @@ -44,7 +43,6 @@ part 'app_database.g.dart'; RawMessagesTable, ParseRulesTable, RuleCandidatesTable, - AccountBindingsTable, SourceAppsTable, TransferPairingBlocklistTable, ], @@ -58,7 +56,6 @@ part 'app_database.g.dart'; RawMessagesDao, ParseRulesDao, RuleCandidatesDao, - AccountBindingsDao, SourceAppsDao, TransferPairingBlocklistDao, ], @@ -70,15 +67,106 @@ class AppDatabase extends _$AppDatabase { AppDatabase.forTesting(super.executor); @override - int get schemaVersion => 1; + int get schemaVersion => 2; @override MigrationStrategy get migration => MigrationStrategy( onCreate: (m) async { await m.createAll(); }, + onUpgrade: (m, from, to) async { + if (from < 2) await _migrateV1ToV2(m); + }, ); + /// v1 → v2: `account_bindings` заменяются на `source_apps.defaultAccountId` + /// + правила `senderToAccount` (см. план «Упрощение связок»): + /// - default-связка приложения (или единственная) → дефолтный счёт приложения; + /// - связки по карте/телефону → contains-правило «цифры → счёт» + /// (кроме избыточных, чей счёт совпал с новым дефолтом); + /// - связки без карты/телефона и без default-флага (ambiguous) пропадают — + /// намеренно, этой ступени резолвера больше нет. + Future _migrateV1ToV2(Migrator m) async { + await m.addColumn(sourceAppsTable, sourceAppsTable.defaultAccountId); + + // Старые dev-сборки могли не иметь таблицы вовсе. + final hasBindings = (await customSelect( + "SELECT name FROM sqlite_master WHERE type = 'table' " + "AND name = 'account_bindings'", + ).get()) + .isNotEmpty; + if (!hasBindings) return; + + final rows = await customSelect('SELECT * FROM account_bindings').get(); + + // Группируем по (user_id, package_name); связки без package_name (легаси + // phone-связки) конвертируются в глобальные правила отдельным проходом. + final byApp = <(String, String), List>{}; + final global = []; + for (final r in rows) { + final pkg = r.readNullable('package_name'); + if (pkg == null) { + global.add(r); + } else { + byApp.putIfAbsent((r.read('user_id'), pkg), () => []).add(r); + } + } + + for (final entry in byApp.entries) { + final (userId, pkg) = entry.key; + final group = entry.value; + final def = group.where((r) => r.read('is_default')).firstOrNull ?? + (group.length == 1 ? group.single : null); + if (def != null) { + await customStatement( + 'UPDATE source_apps SET default_account_id = ? ' + 'WHERE user_id = ? AND package_name = ?', + [def.read('account_id'), userId, pkg], + ); + } + for (final r in group) { + // Избыточное правило: счёт и так станет дефолтом приложения. + if (def != null && + r.read('account_id') == def.read('account_id')) { + continue; + } + await _bindingToSenderRule(r, packageName: pkg); + } + } + + for (final r in global) { + await _bindingToSenderRule(r, packageName: null); + } + + await customStatement('DROP TABLE account_bindings'); + } + + /// Связка по карте/телефону → правило `senderToAccount` (contains по цифрам). + /// Связки без идентификатора пропускаются — паттерна для правила нет. + Future _bindingToSenderRule(QueryRow r, {String? packageName}) async { + final pattern = + r.readNullable('card_last4') ?? r.readNullable('phone'); + if (pattern == null || pattern.isEmpty) return; + await customStatement( + 'INSERT INTO parse_rules ' + '(id, user_id, package_name, kind, match_mode, pattern, match_count, ' + 'account_id, created_at) ' + 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', + [ + const Uuid().v4(), + r.read('user_id'), + packageName, + // Конвертеры хранят enum по .name. + ParseRuleKind.senderToAccount.name, + MatchMode.contains.name, + pattern, + r.read('match_count'), + r.read('account_id'), + r.read('created_at'), + ], + ); + } + static QueryExecutor _openConnection() { return driftDatabase(name: 'new_budget_db'); } diff --git a/lib/src/features/analytics/domain/month_math.dart b/lib/src/features/analytics/domain/month_math.dart new file mode 100644 index 0000000..651e6c2 --- /dev/null +++ b/lib/src/features/analytics/domain/month_math.dart @@ -0,0 +1,37 @@ +/// Математика календарных месяцев для аналитики. +/// +/// Семантика границ повторяет `month_summary.dart` (Home): месяц — это +/// `DateTime(year, month)`, конец месяца — последняя миллисекунда перед +/// началом следующего. `settings.firstDayOfMonth` намеренно игнорируется — +/// дашборд считает по календарным месяцам. +library; + +/// Начало месяца: `DateTime(year, month, 1, 00:00)`. +DateTime monthStart(DateTime month) => DateTime(month.year, month.month); + +/// Конец месяца: последняя миллисекунда перед началом следующего месяца. +DateTime monthEnd(DateTime month) => DateTime(month.year, month.month + 1) + .subtract(const Duration(milliseconds: 1)); + +/// Первый день предыдущего месяца. +DateTime previousMonth(DateTime month) => + DateTime(month.year, month.month - 1); + +/// Первый день месяца, отстоящего на [delta] месяцев (может быть < 0). +DateTime addMonths(DateTime month, int delta) => + DateTime(month.year, month.month + delta); + +/// Ключ месяца в формате `YYYY-MM` — совпадает со STRFTIME('%Y-%m') в DAO. +String monthKeyOf(DateTime month) => + '${month.year.toString().padLeft(4, '0')}-' + '${month.month.toString().padLeft(2, '0')}'; + +/// Обратное преобразование ключа `YYYY-MM` в начало месяца. +DateTime monthFromKey(String key) { + final parts = key.split('-'); + return DateTime(int.parse(parts[0]), int.parse(parts[1])); +} + +/// Число дней в месяце (28–31). +int daysInMonth(DateTime month) => + DateTime(month.year, month.month + 1, 0).day; diff --git a/lib/src/features/analytics/presentation/screens/analytics_screen.dart b/lib/src/features/analytics/presentation/screens/analytics_screen.dart index ef737c9..df5bca8 100644 --- a/lib/src/features/analytics/presentation/screens/analytics_screen.dart +++ b/lib/src/features/analytics/presentation/screens/analytics_screen.dart @@ -5,12 +5,13 @@ import 'package:go_router/go_router.dart'; import '../../../../app/l10n/l10n.dart'; import '../../../../app/router/app_routes.dart'; import '../../../../app/theme/app_colors.dart'; -import '../../../../shared/widgets/placeholder_screen.dart'; import '../../../settings/application/settings_controller.dart'; import '../../../user/application/active_user_controller.dart'; +import '../widgets/chart_card.dart'; +import '../widgets/month_stepper.dart'; -/// Хаб аналитики — список подэкранов. Пока единственный пункт — -/// «Анализ привычек» (показывается только при включённом тумблере). +/// Дашборд аналитики — лента карточек-графиков за выбранный месяц. +/// Месяц общий с Home и хабит-экраном ([MonthStepper] в AppBar). class AnalyticsScreen extends ConsumerWidget { const AnalyticsScreen({super.key}); @@ -25,64 +26,31 @@ class AnalyticsScreen extends ConsumerWidget { false) : false; - return PlaceholderScreen( - subtitle: l10n.analyticsSubtitle, - title: l10n.analyticsTitle, - body: !habitEnabled - ? null - : ListView( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - children: [ - Container( - decoration: BoxDecoration( - border: Border.all(color: p.line), - borderRadius: BorderRadius.circular(14), - ), - child: _HubTile( - icon: Icons.insights_outlined, - title: l10n.habitAnalysisTile, - onTap: () => context.push(AppRoutes.habitAnalysis), - ), - ), - ], - ), - ); - } -} - -class _HubTile extends StatelessWidget { - const _HubTile({ - required this.icon, - required this.title, - required this.onTap, - }); - - final IconData icon; - final String title; - final VoidCallback onTap; - - @override - Widget build(BuildContext context) { - final p = context.palette; - return InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(14), - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 16), - child: Row( - children: [ - Icon(icon, size: 20, color: p.ink2), - const SizedBox(width: 12), - Expanded( - child: Text( - title, - style: TextStyle(fontSize: 14, color: p.ink), + return Scaffold( + backgroundColor: p.paper, + appBar: AppBar( + backgroundColor: p.paper, + title: Text(l10n.analyticsTitle), + actions: const [ + MonthStepper(), + SizedBox(width: 12), + ], + ), + body: userId == null + ? const SizedBox.shrink() + : SafeArea( + child: ListView( + padding: const EdgeInsets.only(top: 8, bottom: 24), + children: [ + if (habitEnabled) + ChartCard( + title: l10n.habitAnalysisTile, + leadingIcon: Icons.insights_outlined, + onTap: () => context.push(AppRoutes.habitAnalysis), + ), + ], ), ), - Icon(Icons.chevron_right, size: 18, color: p.ink2), - ], - ), - ), ); } } diff --git a/lib/src/features/analytics/presentation/screens/habit_analysis_screen.dart b/lib/src/features/analytics/presentation/screens/habit_analysis_screen.dart index b6555bd..81e8ccc 100644 --- a/lib/src/features/analytics/presentation/screens/habit_analysis_screen.dart +++ b/lib/src/features/analytics/presentation/screens/habit_analysis_screen.dart @@ -10,13 +10,13 @@ import '../../../accounts/application/accounts_controller.dart'; import '../../../accounts/domain/entities/account.dart'; import '../../../categories/application/categories_controller.dart'; import '../../../categories/domain/entities/category.dart'; -import '../../../home/presentation/state/selected_category_filter.dart'; import '../../../home/presentation/widgets/day_header.dart'; import '../../../home/presentation/widgets/money_text.dart'; import '../../../home/presentation/widgets/tx_row.dart'; import '../../../transactions/domain/entities/transaction.dart'; import '../../../user/application/active_user_controller.dart'; import '../../application/habit_analysis_providers.dart'; +import '../widgets/month_stepper.dart'; /// Подэкран «Анализ привычек»: фильтры по двум шкалам + список расходов за месяц. class HabitAnalysisScreen extends ConsumerWidget { @@ -28,6 +28,14 @@ class HabitAnalysisScreen extends ConsumerWidget { final userId = ref.watch(activeUserControllerProvider).value?.id; return Scaffold( backgroundColor: p.paper, + appBar: AppBar( + backgroundColor: p.paper, + title: Text(context.l10n.habitAnalysisTitle), + actions: const [ + MonthStepper(), + SizedBox(width: 12), + ], + ), body: userId == null ? const SizedBox.shrink() : SafeArea(child: _Body(userId: userId)), @@ -57,7 +65,6 @@ class _Body extends ConsumerWidget { return CustomScrollView( slivers: [ - SliverToBoxAdapter(child: _HeaderBar(userId: userId)), SliverToBoxAdapter(child: _FilterBlock(userId: userId)), SliverToBoxAdapter(child: _SummaryRow(userId: userId)), const SliverToBoxAdapter(child: SizedBox(height: 4)), @@ -87,99 +94,6 @@ class _Body extends ConsumerWidget { } } -// ───────────────────────────────────────────────────────────────────────────── -// Шапка: крупный заголовок + селектор месяца -// ───────────────────────────────────────────────────────────────────────────── - -class _HeaderBar extends ConsumerWidget { - const _HeaderBar({required this.userId}); - - final String userId; - - @override - Widget build(BuildContext context, WidgetRef ref) { - final p = context.palette; - final l10n = context.l10n; - final locale = Localizations.localeOf(context).toString(); - final month = ref.watch(selectedMonthProvider); - - final now = DateTime.now(); - final isCurrentMonth = month.year == now.year && month.month == now.month; - final monthName = DateFormat.MMMM(locale).format(month); - final monthCap = '${monthName[0].toUpperCase()}${monthName.substring(1)}'; - final monthTitle = '$monthCap ${month.year}'; - - return Padding( - padding: const EdgeInsets.fromLTRB(4, 8, 16, 8), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - IconButton( - onPressed: () => Navigator.of(context).pop(), - icon: Icon(Icons.close, color: p.ink), - tooltip: MaterialLocalizations.of(context).closeButtonTooltip, - ), - Expanded( - child: Text( - l10n.habitAnalysisTitle, - style: TextStyle( - fontSize: 24, - fontWeight: FontWeight.w700, - color: p.ink, - ), - ), - ), - _NavButton( - icon: Icons.chevron_left, - color: p.ink2, - onTap: () => ref.read(selectedMonthProvider.notifier).previous(), - ), - Text( - monthTitle, - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.w600, - color: p.ink2, - ), - ), - if (!isCurrentMonth) - _NavButton( - icon: Icons.chevron_right, - color: p.ink2, - onTap: () => ref.read(selectedMonthProvider.notifier).next(), - ) - else - const SizedBox(width: 24), - ], - ), - ); - } -} - -class _NavButton extends StatelessWidget { - const _NavButton({ - required this.icon, - required this.color, - required this.onTap, - }); - - final IconData icon; - final Color color; - final VoidCallback onTap; - - @override - Widget build(BuildContext context) { - return GestureDetector( - onTap: onTap, - behavior: HitTestBehavior.opaque, - child: Padding( - padding: const EdgeInsets.all(2), - child: Icon(icon, size: 20, color: color), - ), - ); - } -} - // ───────────────────────────────────────────────────────────────────────────── // Блок фильтров с суммами // ───────────────────────────────────────────────────────────────────────────── @@ -212,7 +126,7 @@ class _FilterBlock extends ConsumerWidget { .toList(); return Padding( - padding: const EdgeInsets.fromLTRB(16, 4, 16, 8), + padding: const EdgeInsets.fromLTRB(16, 8, 16, 8), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/src/features/analytics/presentation/widgets/chart_card.dart b/lib/src/features/analytics/presentation/widgets/chart_card.dart new file mode 100644 index 0000000..5df508a --- /dev/null +++ b/lib/src/features/analytics/presentation/widgets/chart_card.dart @@ -0,0 +1,107 @@ +import 'package:flutter/material.dart'; + +import '../../../../app/l10n/l10n.dart'; +import '../../../../app/theme/app_colors.dart'; + +/// Карточка дашборда аналитики — визуальный язык `CategoryDonutCard` +/// (рамка `p.line`, радиус 14, margin 16/0/16/14, padding 14). +/// +/// Заголовок + опциональный контент; при заданном [onTap] вся карточка +/// кликабельна и получает шеврон (переход на детальный экран). +class ChartCard extends StatelessWidget { + const ChartCard({ + super.key, + required this.title, + this.leadingIcon, + this.trailing, + this.onTap, + this.child, + }); + + final String title; + final IconData? leadingIcon; + + /// Виджет справа от заголовка (например, KPI-значение). + final Widget? trailing; + final VoidCallback? onTap; + final Widget? child; + + @override + Widget build(BuildContext context) { + final p = context.palette; + + final content = Padding( + padding: const EdgeInsets.all(14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Row( + children: [ + if (leadingIcon != null) ...[ + Icon(leadingIcon, size: 18, color: p.ink2), + const SizedBox(width: 8), + ], + Expanded( + child: Text( + title, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: p.ink, + ), + ), + ), + ?trailing, + if (onTap != null) + Icon(Icons.chevron_right, size: 18, color: p.ink2), + ], + ), + if (child != null) ...[ + const SizedBox(height: 10), + child!, + ], + ], + ), + ); + + return Container( + margin: const EdgeInsets.fromLTRB(16, 0, 16, 14), + decoration: BoxDecoration( + border: Border.all(color: p.line), + borderRadius: BorderRadius.circular(14), + ), + child: onTap == null + ? content + : Material( + color: Colors.transparent, + child: InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(14), + child: content, + ), + ), + ); + } +} + +/// Заглушка контента карточки, когда за выбранный месяц нет данных. +class ChartCardEmpty extends StatelessWidget { + const ChartCardEmpty({super.key, this.height = 160}); + + final double height; + + @override + Widget build(BuildContext context) { + final p = context.palette; + return SizedBox( + height: height, + child: Center( + child: Text( + context.l10n.analyticsNoData, + style: TextStyle(fontSize: 13, color: p.ink2), + ), + ), + ); + } +} diff --git a/lib/src/features/analytics/presentation/widgets/chart_theme.dart b/lib/src/features/analytics/presentation/widgets/chart_theme.dart new file mode 100644 index 0000000..b24a89a --- /dev/null +++ b/lib/src/features/analytics/presentation/widgets/chart_theme.dart @@ -0,0 +1,87 @@ +import 'package:flutter/material.dart'; +import 'package:graphic/graphic.dart'; + +import '../../../../app/theme/app_colors.dart'; + +/// Единственное место маппинга [AppPalette] → примитивы `graphic`. +/// Виджеты чартов не строят PaintStyle/LabelStyle сами — берут отсюда. +class ChartTheme { + const ChartTheme(this._p); + + final AppPalette _p; + + // ── Цвета серий ──────────────────────────────────────────────────────────── + + Color get income => _p.positive; + Color get expense => _p.negative; + Color get accent => _p.accent; + + /// Вторичная/затемнённая серия (прошлый месяц, «прочее»). + Color get dim => _p.ink2; + + // ── Оси ──────────────────────────────────────────────────────────────────── + + /// Ось значений (деньги): подписи 10px `ink2`, сетка `line` 0.5, + /// без линии оси. Тики форматируются через [compactMinor]. + AxisGuide moneyAxis() => AxisGuide( + label: _axisLabel(), + grid: PaintStyle(strokeColor: _p.line, strokeWidth: 0.5), + ); + + /// Ось категорий/времени: линия оси `line` 0.5, подписи 10px `ink2`, + /// без сетки. + AxisGuide labelAxis() => AxisGuide( + line: PaintStyle(strokeColor: _p.line, strokeWidth: 0.5), + label: _axisLabel(), + ); + + LabelStyle _axisLabel() => + LabelStyle(textStyle: TextStyle(fontSize: 10, color: _p.ink2)); + + // ── Тултип ───────────────────────────────────────────────────────────────── + + /// Общий стиль тултипа: тёмная плашка `ink`, текст `paper`. + /// Суммы в тултипах — полные, с ₽ (в отличие от тиков оси). + TooltipGuide tooltip({List? variables, bool multiTuples = false}) => + TooltipGuide( + backgroundColor: _p.ink, + textStyle: TextStyle(fontSize: 11, color: _p.paper), + radius: const Radius.circular(6), + elevation: 2, + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6), + variables: variables, + multiTuples: multiTuples, + ); +} + +extension ChartThemeX on BuildContext { + ChartTheme get chartTheme => ChartTheme(palette); +} + +/// Общий transition для всех `Chart` — по умолчанию у graphic анимации +/// смены данных НЕТ, без явного transition шаг месяца будет мгновенным. +final Transition kChartTransition = Transition( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, +); + +/// Компактный формат минорных единиц для тиков оси: «12k», «1.5M». +/// Без символа валюты — ₽ показываем только в тултипах. +String compactMinor(num minor) { + final rub = minor / 100; + final abs = rub.abs(); + final String body; + if (abs >= 1000000) { + body = '${_trimZero(abs / 1000000)}M'; + } else if (abs >= 1000) { + body = '${_trimZero(abs / 1000)}k'; + } else { + body = abs.round().toString(); + } + return rub < 0 ? '−$body' : body; // U+2212 minus, как в formatMinor +} + +String _trimZero(double v) { + final s = v >= 10 ? v.round().toString() : v.toStringAsFixed(1); + return s.endsWith('.0') ? s.substring(0, s.length - 2) : s; +} diff --git a/lib/src/features/analytics/presentation/widgets/month_stepper.dart b/lib/src/features/analytics/presentation/widgets/month_stepper.dart new file mode 100644 index 0000000..a0ddecc --- /dev/null +++ b/lib/src/features/analytics/presentation/widgets/month_stepper.dart @@ -0,0 +1,79 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:intl/intl.dart'; + +import '../../../../app/theme/app_colors.dart'; +import '../../../home/presentation/state/selected_category_filter.dart'; + +/// Селектор месяца для AppBar — двигает общий [selectedMonthProvider] +/// (тот же, что на Home и хабит-экране). Шаг вперёд скрыт на текущем месяце. +class MonthStepper extends ConsumerWidget { + const MonthStepper({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final p = context.palette; + final locale = Localizations.localeOf(context).toString(); + final month = ref.watch(selectedMonthProvider); + + final now = DateTime.now(); + final isCurrentMonth = month.year == now.year && month.month == now.month; + final monthName = DateFormat.MMMM(locale).format(month); + final monthCap = '${monthName[0].toUpperCase()}${monthName.substring(1)}'; + final monthTitle = '$monthCap ${month.year}'; + + return Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + _NavButton( + icon: Icons.chevron_left, + color: p.ink2, + onTap: () => ref.read(selectedMonthProvider.notifier).previous(), + ), + const SizedBox(width: 4), + Text( + monthTitle, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w600, + color: p.ink2, + ), + ), + const SizedBox(width: 4), + if (!isCurrentMonth) + _NavButton( + icon: Icons.chevron_right, + color: p.ink2, + onTap: () => ref.read(selectedMonthProvider.notifier).next(), + ) + else + const SizedBox(width: 24), + ], + ); + } +} + +class _NavButton extends StatelessWidget { + const _NavButton({ + required this.icon, + required this.color, + required this.onTap, + }); + + final IconData icon; + final Color color; + final VoidCallback onTap; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + behavior: HitTestBehavior.opaque, + child: Padding( + padding: const EdgeInsets.all(2), + child: Icon(icon, size: 20, color: color), + ), + ); + } +} diff --git a/lib/src/features/categories/presentation/screens/categories_list_screen.dart b/lib/src/features/categories/presentation/screens/categories_list_screen.dart index db90019..373ce2f 100644 --- a/lib/src/features/categories/presentation/screens/categories_list_screen.dart +++ b/lib/src/features/categories/presentation/screens/categories_list_screen.dart @@ -22,6 +22,10 @@ class CategoriesListScreen extends ConsumerWidget { return Scaffold( backgroundColor: p.paper, + appBar: AppBar( + backgroundColor: p.paper, + title: Text(l10n.categoriesScreenTitle), + ), floatingActionButton: FloatingActionButton( onPressed: () => context.push(AppRoutes.categoryNew), backgroundColor: p.accent, @@ -34,15 +38,7 @@ class CategoriesListScreen extends ConsumerWidget { error: (e, _) => Center(child: Text('$e')), data: (user) { if (user == null) return const SizedBox.shrink(); - return Column( - children: [ - _Header( - title: l10n.categoriesScreenTitle, - onClose: () => Navigator.of(context).pop(), - ), - Expanded(child: _CategoriesBody(userId: user.id)), - ], - ); + return _CategoriesBody(userId: user.id); }, ), ), @@ -201,37 +197,3 @@ class _CategoryRow extends StatelessWidget { } } -class _Header extends StatelessWidget { - const _Header({required this.title, required this.onClose}); - - final String title; - final VoidCallback onClose; - - @override - Widget build(BuildContext context) { - final p = context.palette; - return Padding( - padding: const EdgeInsets.fromLTRB(8, 6, 8, 6), - child: Row( - children: [ - IconButton( - onPressed: onClose, - icon: Icon(Icons.close, color: p.ink), - ), - Expanded( - child: Text( - title, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 16, - color: p.ink, - fontWeight: FontWeight.w600, - ), - ), - ), - const SizedBox(width: 48), - ], - ), - ); - } -} diff --git a/lib/src/features/notification_parsing/application/account_bindings_controller.dart b/lib/src/features/notification_parsing/application/account_bindings_controller.dart deleted file mode 100644 index a522793..0000000 --- a/lib/src/features/notification_parsing/application/account_bindings_controller.dart +++ /dev/null @@ -1,55 +0,0 @@ -import 'package:riverpod_annotation/riverpod_annotation.dart'; - -import '../domain/entities/account_binding.dart'; -import 'notification_parsing_providers.dart'; - -part 'account_bindings_controller.g.dart'; - -/// Все привязки пользователя — для экрана привязок приложения. -@riverpod -Stream> accountBindingsList(Ref ref, String userId) => - ref.watch(accountBindingsRepositoryProvider).watchByUser(userId); - -/// CRUD над привязками «карта/телефон → счёт». -@Riverpod(keepAlive: true) -class AccountBindingsController extends _$AccountBindingsController { - @override - AsyncValue build() => const AsyncData(null); - - Future add({ - required String userId, - required String packageName, - required String accountId, - String? cardLast4, - String? phone, - bool isDefault = false, - }) async { - state = const AsyncLoading(); - try { - final repo = ref.read(accountBindingsRepositoryProvider); - final binding = await repo.create( - userId: userId, - packageName: packageName, - accountId: accountId, - cardLast4: cardLast4, - phone: phone, - ); - // Единственный default на пакет: проводим через setDefault (атомарно - // снимает флаг у прочих привязок), а не через create(isDefault: true). - if (isDefault) { - await repo.setDefault(binding.id, userId, packageName); - } - state = const AsyncData(null); - } catch (e, st) { - state = AsyncError(e, st); - rethrow; - } - } - - Future setDefault(String id, String userId, String packageName) => ref - .read(accountBindingsRepositoryProvider) - .setDefault(id, userId, packageName); - - Future delete(String id) => - ref.read(accountBindingsRepositoryProvider).deleteById(id); -} diff --git a/lib/src/features/notification_parsing/application/inbox_controller.dart b/lib/src/features/notification_parsing/application/inbox_controller.dart index 1bf681e..660aa47 100644 --- a/lib/src/features/notification_parsing/application/inbox_controller.dart +++ b/lib/src/features/notification_parsing/application/inbox_controller.dart @@ -65,7 +65,10 @@ class InboxController extends _$InboxController { /// «Создать правило»: транзакция + parse_rule + удаление кандидата. /// Все последующие похожие сообщения auto-apply молча. - Future createRule({ + /// + /// Возвращает true, если выбранный счёт был записан дефолтом приложения + /// (авто-обучение) — карточка показывает SnackBar. + Future createRule({ required String userId, required RawMessage message, required ParseDraft draft, @@ -74,7 +77,7 @@ class InboxController extends _$InboxController { required String merchantCanonical, required String pattern, MatchMode matchMode = MatchMode.contains, - bool bindAccount = true, + bool learnAppDefault = true, }) async { state = const AsyncLoading(); try { @@ -108,8 +111,10 @@ class InboxController extends _$InboxController { } await ref.read(rawMessagesRepositoryProvider).linkTransaction(message.id, tx.id); - if (bindAccount) await _maybeBind(userId, message, draft, accountId); + final learned = learnAppDefault && + await _maybeSetAppDefault(userId, message, accountId); state = const AsyncData(null); + return learned; } catch (e, st) { state = AsyncError(e, st); rethrow; @@ -118,13 +123,15 @@ class InboxController extends _$InboxController { /// «Подтвердить разово»: только транзакция (правило не создаём), /// усиливаем кандидата для будущего предложения. - Future confirmOnce({ + /// + /// Возвращает true, если счёт записан дефолтом приложения (см. [createRule]). + Future confirmOnce({ required String userId, required RawMessage message, required ParseDraft draft, required String accountId, String? categoryId, - bool bindAccount = true, + bool learnAppDefault = true, }) async { state = const AsyncLoading(); try { @@ -149,8 +156,10 @@ class InboxController extends _$InboxController { resolvedValue: categoryId, ); } - if (bindAccount) await _maybeBind(userId, message, draft, accountId); + final learned = learnAppDefault && + await _maybeSetAppDefault(userId, message, accountId); state = const AsyncData(null); + return learned; } catch (e, st) { state = AsyncError(e, st); rethrow; @@ -389,25 +398,18 @@ class InboxController extends _$InboxController { } } - /// Создаёт привязку «карта → счёт», если её ещё нет — чтобы следующее - /// сообщение того же мерчанта прошло gate молча (account score 100). - Future _maybeBind( + /// Авто-обучение дефолтного счёта приложения: первый Confirm по приложению + /// без дефолта запоминает выбранный счёт — следующие сообщения резолвятся + /// trusted и могут авто-применяться. true = дефолт записан только что. + Future _maybeSetAppDefault( String userId, RawMessage message, - ParseDraft draft, String accountId, ) async { - final last4 = draft.cardLast4; - if (last4 == null) return; - final bindings = ref.read(accountBindingsRepositoryProvider); - final existing = await bindings.findByPackageAndCard( - userId, message.packageName, last4); - if (existing != null) return; - await bindings.create( - userId: userId, - packageName: message.packageName, - cardLast4: last4, - accountId: accountId, - ); + final repo = ref.read(sourceAppsRepositoryProvider); + final app = await repo.findByPackageName(userId, message.packageName); + if (app == null || app.defaultAccountId != null) return false; + await repo.setDefaultAccount(app.id, accountId); + return true; } } diff --git a/lib/src/features/notification_parsing/application/notification_parsing_providers.dart b/lib/src/features/notification_parsing/application/notification_parsing_providers.dart index 980f3c8..b7a7032 100644 --- a/lib/src/features/notification_parsing/application/notification_parsing_providers.dart +++ b/lib/src/features/notification_parsing/application/notification_parsing_providers.dart @@ -2,13 +2,11 @@ import 'package:riverpod_annotation/riverpod_annotation.dart'; import '../../../core/providers/database_provider.dart'; import '../data/native/notification_listener_channel.dart'; -import '../data/repositories/account_bindings_repository_impl.dart'; import '../data/repositories/parse_rules_repository_impl.dart'; import '../data/repositories/raw_messages_repository_impl.dart'; import '../data/repositories/rule_candidates_repository_impl.dart'; import '../data/repositories/source_apps_repository_impl.dart'; import '../data/repositories/transfer_pairing_blocklist_repository_impl.dart'; -import '../domain/repositories/account_bindings_repository.dart'; import '../domain/repositories/parse_rules_repository.dart'; import '../domain/repositories/raw_messages_repository.dart'; import '../domain/repositories/rule_candidates_repository.dart'; @@ -32,11 +30,6 @@ RuleCandidatesRepository ruleCandidatesRepository(Ref ref) => RuleCandidatesRepositoryImpl( ref.watch(appDatabaseProvider).ruleCandidatesDao); -@Riverpod(keepAlive: true) -AccountBindingsRepository accountBindingsRepository(Ref ref) => - AccountBindingsRepositoryImpl( - ref.watch(appDatabaseProvider).accountBindingsDao); - @Riverpod(keepAlive: true) SourceAppsRepository sourceAppsRepository(Ref ref) => SourceAppsRepositoryImpl(ref.watch(appDatabaseProvider).sourceAppsDao); diff --git a/lib/src/features/notification_parsing/application/parsing_pipeline.dart b/lib/src/features/notification_parsing/application/parsing_pipeline.dart index 7f5b95b..80af1a1 100644 --- a/lib/src/features/notification_parsing/application/parsing_pipeline.dart +++ b/lib/src/features/notification_parsing/application/parsing_pipeline.dart @@ -19,6 +19,7 @@ import '../domain/entities/parse_draft.dart'; import '../domain/entities/raw_message.dart'; import '../domain/entities/rule_candidate.dart'; import '../domain/entities/rule_suggestion.dart'; +import '../domain/entities/source_app.dart'; import '../domain/enums.dart'; import 'ai_providers.dart'; import 'notification_parsing_providers.dart'; @@ -78,8 +79,7 @@ class ParsingPipeline { } // Извлечение через AI (regex-этап удалён). Без AI/сети — Inbox/ignored. - await _extractViaAi(userId, msg, settings, - selfMerchant: sourceApp.selfMerchant); + await _extractViaAi(userId, msg, settings, sourceApp: sourceApp); } /// Извлечение через AI: спам без цифр → ignored; зовём AI (если разрешён), @@ -88,7 +88,7 @@ class ParsingPipeline { String userId, RawMessage msg, ParsingSettings settings, { - required bool selfMerchant, + required SourceApp sourceApp, }) async { final repo = _ref.read(rawMessagesRepositoryProvider); final settingsCtrl = _ref.read(parsingSettingsControllerProvider.notifier); @@ -165,7 +165,7 @@ class ParsingPipeline { ); case AiParseStatus.draft: await _runPipeline(userId, msg, outcome.draft!, settings, - categories: categories, selfMerchant: selfMerchant); + categories: categories, sourceApp: sourceApp); } } on DeepSeekNetworkException { await repo.updateAfterParse( @@ -194,18 +194,19 @@ class ParsingPipeline { /// Общий хвост pipeline (§5, шаги 3–8) для AI-draft. /// - /// [selfMerchant] — источник помечен «мерчант — само приложение» (Ozon): - /// AI-подсказка категории глушится, merchant→category правило не - /// предлагается — категорию пользователь выбирает вручную на карточке. + /// [sourceApp] — приложение-источник: `selfMerchant` («мерчант — само + /// приложение», Ozon: AI-подсказка категории глушится, merchant→category + /// правило не предлагается) и `defaultAccountId` для резолвера счёта. Future _runPipeline( String userId, RawMessage msg, ParseDraft draft0, ParsingSettings settings, { List? categories, - bool selfMerchant = false, + required SourceApp sourceApp, }) async { final repo = _ref.read(rawMessagesRepositoryProvider); + final selfMerchant = sourceApp.selfMerchant; if (selfMerchant) { // «Нет AI-префилла»: карточка читает подсказку из draftJson, поэтому @@ -223,22 +224,18 @@ class ParsingPipeline { return; } - // 3. Разрешение счёта (§B): привязки → senderToAccount → дефолты. + // 3. Разрешение счёта (§B): senderToAccount → дефолт приложения → + // глобальный дефолт (не trusted). final globalDefaultAccountId = (await _ref .read(accountRepositoryProvider) .watchDefault(userId) .first) ?.id; - final resolver = - AccountResolver(_ref.read(accountBindingsRepositoryProvider)); - final resolution = await resolver.resolve( - userId: userId, - packageName: msg.packageName, + final resolution = resolveAccount( body: msg.body, - cardLast4: draft0.cardLast4, - phone: draft0.counterpartyPhone, merchantRaw: draft0.merchantRaw, senderRules: rules, + appDefaultAccountId: sourceApp.defaultAccountId, globalDefaultAccountId: globalDefaultAccountId, ); var draft = draft0.copyWith(accountId: resolution.accountId); @@ -341,7 +338,7 @@ class ParsingPipeline { ); if (gate.decision == GateDecision.autoApply) { - await _autoApply(userId, msg, draft, rule!, scores, resolution.bindingId); + await _autoApply(userId, msg, draft, rule!, scores); } else { await repo.updateAfterParse( id: msg.id, @@ -371,7 +368,6 @@ class ParsingPipeline { ParseDraft draft, rule, FieldScores scores, - String? bindingId, ) async { final repo = _ref.read(rawMessagesRepositoryProvider); final tx = await _ref @@ -404,11 +400,6 @@ class ParsingPipeline { await _ref .read(parseRulesRepositoryProvider) .incrementMatchCount(rule.id, DateTime.now()); - if (bindingId != null) { - await _ref - .read(accountBindingsRepositoryProvider) - .incrementMatchCount(bindingId); - } } // ── Transfer pairing ─────────────────────────────────────────────────────── diff --git a/lib/src/features/notification_parsing/application/parsing_worker.dart b/lib/src/features/notification_parsing/application/parsing_worker.dart index bd7d3dd..00f4535 100644 --- a/lib/src/features/notification_parsing/application/parsing_worker.dart +++ b/lib/src/features/notification_parsing/application/parsing_worker.dart @@ -11,6 +11,16 @@ import 'parsing_settings_controller.dart'; part 'parsing_worker.g.dart'; +/// Политика бэкоффа авторетрая `pending_ai` — отдельный провайдер, чтобы +/// тесты могли ужать интервалы до миллисекунд. +typedef AiRetryBackoff = ({Duration initial, Duration max}); + +@Riverpod(keepAlive: true) +AiRetryBackoff aiRetryBackoff(Ref ref) => ( + initial: const Duration(seconds: 30), + max: const Duration(minutes: 15), + ); + /// ParsingWorker (§5): foreground-драйвер pipeline. Слушает /// `raw_messages.pending` и прогоняет каждое сообщение через [ParsingPipeline]. /// Отвечает только за «когда запускать» (триггер/дедуп/ретраи); сама обработка @@ -20,7 +30,7 @@ part 'parsing_worker.g.dart'; /// Идемпотентен: при возврате сообщения в `pending` перепарсивается. /// Провайдер `keepAlive` — активируется `ref.watch` из AppScaffold. /// -/// Оба входа (pending и waitingPair) — прямые подписки на Drift-стримы +/// Все входы (pending, pendingAi и waitingPair) — прямые подписки на Drift-стримы /// репозитория, БЕЗ промежуточных autoDispose stream-провайдеров: у тех нет /// UI-слушателей, а внутренний `ref.listen` приостановленного воркера (bare /// `ProviderContainer` в тестах) их не активирует — pause-семантика riverpod 3. @@ -40,6 +50,16 @@ class ParsingWorker extends _$ParsingWorker { bool _sweepRequested = false; Timer? _pairTimer; + // Level-триггер авторетрая `pending_ai` (§7): edge-реквью по сети бессилен, + // когда connectivity считает сеть живой, а запросы фактически падают + // (транзиентный сбой, сеть без интернета). Пока есть pending_ai-строки, + // таймер с экспоненциальным бэкоффом прогоняет их через pipeline напрямую. + // Кэп реальных попыток (5) в pipeline переводит хронику в failed — цикл + // конечен; счётчик попыток при авторетрае НЕ сбрасывается (в отличие от + // ручного `resetForRetry`). + Timer? _aiRetryTimer; + Duration? _aiRetryDelay; // null = базовая задержка (бэкофф сброшен) + @override void build(String userId) { // Первая эмиссия Drift-стрима — текущий снапшот: бэклог `pending`, @@ -86,6 +106,27 @@ class ParsingWorker extends _$ParsingWorker { ); ref.onDispose(onlineSub.close); + // Авторетрай pending_ai по таймеру с бэкоффом (см. комментарий у полей). + // Пустая эмиссия = очередь реально разобрана (успех, ручной ретрай или + // edge-реквью) — бэкофф сбрасывается. Прямой прогон через pipeline (без + // реквью в pending) как раз и держит строки в pending_ai до успеха: + // иначе каждый цикл опустошал бы стрим и обнулял бэкофф. + final backoff = ref.read(aiRetryBackoffProvider); + final pendingAiSub = ref + .read(rawMessagesRepositoryProvider) + .watchPendingAi(userId) + .listen((list) { + if (list.isEmpty) { + _aiRetryTimer?.cancel(); + _aiRetryTimer = null; + _aiRetryDelay = null; + return; + } + _armAiRetryTimer(userId, backoff); + }); + ref.onDispose(pendingAiSub.cancel); + ref.onDispose(() => _aiRetryTimer?.cancel()); + // Transfer pairing: каждая эмиссия waitingPair (новая половинка, склейка, // релиз) запускает sweep и перевзводит таймер ближайшего дедлайна. // Первая эмиссия покрывает старт приложения: дедлайны в БД, рестарт @@ -163,8 +204,44 @@ class ParsingWorker extends _$ParsingWorker { if (list.isNotEmpty) _drain(userId, list); } + /// Взводит таймер авторетрая, если он ещё не взведён. + void _armAiRetryTimer(String userId, AiRetryBackoff backoff) { + if (_aiRetryTimer != null) return; + _aiRetryTimer = Timer(_aiRetryDelay ?? backoff.initial, () { + _aiRetryTimer = null; + _onAiRetryTimer(userId, backoff); + }); + } + + /// Срабатывание таймера авторетрая: прогоняем текущий снапшот `pending_ai` + /// через pipeline. Скипы (фича выключена / явный офлайн) перевзводят таймер + /// БЕЗ удвоения задержки — попытка не расходуется; восстановление сети + /// дополнительно ловится edge-триггером выше. + Future _onAiRetryTimer(String userId, AiRetryBackoff backoff) async { + if (ref.read(parsingSettingsControllerProvider).value?.enabled == false || + ref.read(isOnlineProvider).value == false) { + _armAiRetryTimer(userId, backoff); + return; + } + // Удваиваем задержку ДО прогона: неудача вернёт строки в pending_ai, + // эмиссия стрима перевзведёт таймер уже с новой задержкой. + final current = _aiRetryDelay ?? backoff.initial; + _aiRetryDelay = current * 2 <= backoff.max ? current * 2 : backoff.max; + final list = await ref + .read(rawMessagesRepositoryProvider) + .watchPendingAi(userId) + .first; + if (list.isNotEmpty) await _drain(userId, list); + } + /// Переводит ожидающие сети `pending_ai` обратно в `pending` (retry). Future _requeuePendingAi(String userId) async { + // Фича выключена: pipeline всё равно no-op'нёт pending, а перевод + // pending_ai → pending терял бы карточку «ждёт сети» в Inbox. После + // обратного включения очередь подхватит таймер авторетрая. + if (ref.read(parsingSettingsControllerProvider).value?.enabled == false) { + return; + } final repo = ref.read(rawMessagesRepositoryProvider); final list = await repo.watchPendingAi(userId).first; for (final m in list) { diff --git a/lib/src/features/notification_parsing/application/source_apps_controller.dart b/lib/src/features/notification_parsing/application/source_apps_controller.dart index 6245c91..311ba22 100644 --- a/lib/src/features/notification_parsing/application/source_apps_controller.dart +++ b/lib/src/features/notification_parsing/application/source_apps_controller.dart @@ -41,6 +41,9 @@ class SourceAppsController extends _$SourceAppsController { Future setSelfMerchant(String id, {required bool value}) => ref.read(sourceAppsRepositoryProvider).setSelfMerchant(id, value: value); + Future setDefaultAccount(String id, String? accountId) => + ref.read(sourceAppsRepositoryProvider).setDefaultAccount(id, accountId); + Future delete(String id) => ref.read(sourceAppsRepositoryProvider).deleteById(id); } diff --git a/lib/src/features/notification_parsing/data/drift/daos/account_bindings_dao.dart b/lib/src/features/notification_parsing/data/drift/daos/account_bindings_dao.dart deleted file mode 100644 index 08b8ad3..0000000 --- a/lib/src/features/notification_parsing/data/drift/daos/account_bindings_dao.dart +++ /dev/null @@ -1,120 +0,0 @@ -import 'package:drift/drift.dart'; -import '../../../../../core/database/app_database.dart'; -import '../tables/account_bindings_table.dart'; - -part 'account_bindings_dao.g.dart'; - -@DriftAccessor(tables: [AccountBindingsTable]) -class AccountBindingsDao extends DatabaseAccessor - with _$AccountBindingsDaoMixin { - AccountBindingsDao(super.db); - - // ── Streams ──────────────────────────────────────────────────────────────── - - /// Все привязки пользователя — для экрана настроек парсинга. - Stream> watchByUser(String userId) => - (select(accountBindingsTable) - ..where((t) => t.userId.equals(userId)) - ..orderBy([(t) => OrderingTerm.desc(t.createdAt)])) - .watch(); - - // ── Lookups (шаг 3 pipeline: account_bindings.resolve) ──────────────────── - - /// Точное совпадение по packageName + cardLast4 (приоритет score=100). - Future findByPackageAndCard( - String userId, - String packageName, - String cardLast4, - ) => - (select(accountBindingsTable) - ..where((t) => - t.userId.equals(userId) & - t.packageName.equals(packageName) & - t.cardLast4.equals(cardLast4)) - ..limit(1)) - .getSingleOrNull(); - - /// Совпадение по bankKey + cardLast4 (score=90). - Future findByBankKeyAndCard( - String userId, - String bankKey, - String cardLast4, - ) => - (select(accountBindingsTable) - ..where((t) => - t.userId.equals(userId) & - t.bankKey.equals(bankKey) & - t.cardLast4.equals(cardLast4)) - ..limit(1)) - .getSingleOrNull(); - - /// Совпадение по номеру телефона — для СБП-переводов. - Future findByPhone( - String userId, - String phone, - ) => - (select(accountBindingsTable) - ..where((t) => - t.userId.equals(userId) & t.phone.equals(phone)) - ..limit(1)) - .getSingleOrNull(); - - /// Все привязки по packageName (для эвристики «один счёт банка»). - Future> findByPackageName( - String userId, - String packageName, - ) => - (select(accountBindingsTable) - ..where((t) => - t.userId.equals(userId) & t.packageName.equals(packageName))) - .get(); - - /// Умолчательная привязка приложения (card неизвестна) — §B #4. - Future findDefaultByPackageName( - String userId, - String packageName, - ) => - (select(accountBindingsTable) - ..where((t) => - t.userId.equals(userId) & - t.packageName.equals(packageName) & - t.isDefault.equals(true)) - ..limit(1)) - .getSingleOrNull(); - - // ── Mutations ────────────────────────────────────────────────────────────── - - Future insert(AccountBindingsTableCompanion companion) => - into(accountBindingsTable).insert(companion); - - Future updateRow(AccountBindingsTableCompanion companion) => - (update(accountBindingsTable) - ..where((t) => t.id.equals(companion.id.value))) - .write(companion); - - /// Инкремент matchCount при каждом успешном матче. - Future incrementMatchCount(String id) => customUpdate( - 'UPDATE account_bindings SET match_count = match_count + 1 WHERE id = ?', - variables: [Variable(id)], - updates: {accountBindingsTable}, - ); - - /// Делает привязку [id] умолчательной для её пакета: снимает флаг у всех - /// прочих привязок этого packageName и выставляет у выбранной (атомарно). - Future setDefault( - String id, - String userId, - String packageName, - ) => - transaction(() async { - await (update(accountBindingsTable) - ..where((t) => - t.userId.equals(userId) & t.packageName.equals(packageName))) - .write(const AccountBindingsTableCompanion(isDefault: Value(false))); - await (update(accountBindingsTable)..where((t) => t.id.equals(id))) - .write(const AccountBindingsTableCompanion(isDefault: Value(true))); - }); - - Future deleteById(String id) => - (delete(accountBindingsTable)..where((t) => t.id.equals(id))).go(); -} diff --git a/lib/src/features/notification_parsing/data/drift/daos/raw_messages_dao.dart b/lib/src/features/notification_parsing/data/drift/daos/raw_messages_dao.dart index b2154b8..e3f0dc6 100644 --- a/lib/src/features/notification_parsing/data/drift/daos/raw_messages_dao.dart +++ b/lib/src/features/notification_parsing/data/drift/daos/raw_messages_dao.dart @@ -33,15 +33,17 @@ class RawMessagesDao extends DatabaseAccessor .watch(); /// Поток сообщений, ожидающих внимания в Inbox: распознанные (`inbox`), - /// неполные (`parsed_partial`) и ошибочные (`failed`) — последние две для - /// AI-ветки (§7) показываются с сырым текстом и кнопкой «попробовать снова». + /// неполные (`parsed_partial`), ошибочные (`failed`) и ждущие сети + /// (`pending_ai`) — последние три для AI-ветки (§7) показываются с сырым + /// текстом и кнопкой «попробовать снова». Stream> watchInbox(String userId) => (select(rawMessagesTable) ..where((t) => t.userId.equals(userId) & (t.status.equalsValue(RawMessageStatus.inbox) | t.status.equalsValue(RawMessageStatus.parsedPartial) | - t.status.equalsValue(RawMessageStatus.failed))) + t.status.equalsValue(RawMessageStatus.failed) | + t.status.equalsValue(RawMessageStatus.pendingAi))) ..orderBy([(t) => OrderingTerm.desc(t.receivedAt)])) .watch(); @@ -65,11 +67,12 @@ class RawMessagesDao extends DatabaseAccessor ..limit(limit)) .watch(); - /// Реактивный счётчик для бэджа на Home (inbox + parsed_partial + failed). + /// Реактивный счётчик для бэджа на Home. Список статусов должен совпадать + /// с [watchInbox] (inbox + parsed_partial + failed + pending_ai). Stream watchInboxCount(String userId) { final query = customSelect( 'SELECT COUNT(*) AS c FROM raw_messages WHERE user_id = ? ' - "AND status IN ('inbox', 'parsedPartial', 'failed')", + "AND status IN ('inbox', 'parsedPartial', 'failed', 'pendingAi')", variables: [Variable(userId)], readsFrom: {rawMessagesTable}, ); diff --git a/lib/src/features/notification_parsing/data/drift/daos/source_apps_dao.dart b/lib/src/features/notification_parsing/data/drift/daos/source_apps_dao.dart index d4b24d9..ac732f5 100644 --- a/lib/src/features/notification_parsing/data/drift/daos/source_apps_dao.dart +++ b/lib/src/features/notification_parsing/data/drift/daos/source_apps_dao.dart @@ -48,6 +48,11 @@ class SourceAppsDao extends DatabaseAccessor (update(sourceAppsTable)..where((t) => t.id.equals(id))) .write(SourceAppsTableCompanion(selfMerchant: Value(value))); + /// Основной счёт приложения; null — сброс. + Future setDefaultAccount(String id, String? accountId) => + (update(sourceAppsTable)..where((t) => t.id.equals(id))) + .write(SourceAppsTableCompanion(defaultAccountId: Value(accountId))); + Future deleteById(String id) => (delete(sourceAppsTable)..where((t) => t.id.equals(id))).go(); } diff --git a/lib/src/features/notification_parsing/data/drift/tables/account_bindings_table.dart b/lib/src/features/notification_parsing/data/drift/tables/account_bindings_table.dart deleted file mode 100644 index c0b6150..0000000 --- a/lib/src/features/notification_parsing/data/drift/tables/account_bindings_table.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:drift/drift.dart'; -import '../../../../../core/database/tables/users_table.dart'; -import '../../../../../core/database/tables/accounts_table.dart'; - -/// Привязка идентификатора карты / телефона к счёту в приложении. -/// -/// Используется на шаге 3 pipeline для разрешения accountId. -/// Уникальный индекс по (userId, packageName, cardLast4) через [uniqueKeys]. -class AccountBindingsTable extends Table { - @override - String get tableName => 'account_bindings'; - - TextColumn get id => text()(); - TextColumn get userId => - text().references(UsersTable, #id, onDelete: KeyAction.cascade)(); - - TextColumn get packageName => text().nullable()(); - - /// Нормализованный ключ банка из bank_templates_catalog. - TextColumn get bankKey => text().nullable()(); - - TextColumn get cardLast4 => text().nullable()(); - TextColumn get phone => text().nullable()(); - - TextColumn get accountId => - text().references(AccountsTable, #id, onDelete: KeyAction.cascade)(); - - /// Привязка по умолчанию для этого приложения (когда карта не распознана). - /// Единственная на пакет — обеспечивается через [AccountBindingsDao.setDefault]. - BoolColumn get isDefault => boolean().withDefault(const Constant(false))(); - - IntColumn get matchCount => integer().withDefault(const Constant(0))(); - DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)(); - - @override - Set get primaryKey => {id}; - - @override - List> get uniqueKeys => [ - {userId, packageName, cardLast4}, - ]; -} diff --git a/lib/src/features/notification_parsing/data/drift/tables/parse_rules_table.dart b/lib/src/features/notification_parsing/data/drift/tables/parse_rules_table.dart index ae22c89..54ec87f 100644 --- a/lib/src/features/notification_parsing/data/drift/tables/parse_rules_table.dart +++ b/lib/src/features/notification_parsing/data/drift/tables/parse_rules_table.dart @@ -23,7 +23,7 @@ class ParseRulesTable extends Table { /// Приложение-источник, к которому привязано правило (per-app scope). /// Nullable в SQL (упрощает миграцию), но все пути создания обязаны /// передавать значение; NULL-строки матчатся в любом приложении (легаси). - /// Без FK на source_apps — зеркалим паттерн account_bindings. + /// Без FK на source_apps — удаление приложения правила не трогает. TextColumn get packageName => text().nullable()(); /// merchantToCategory | senderToAccount | ignore diff --git a/lib/src/features/notification_parsing/data/drift/tables/source_apps_table.dart b/lib/src/features/notification_parsing/data/drift/tables/source_apps_table.dart index e26d1c5..6a576be 100644 --- a/lib/src/features/notification_parsing/data/drift/tables/source_apps_table.dart +++ b/lib/src/features/notification_parsing/data/drift/tables/source_apps_table.dart @@ -1,4 +1,5 @@ import 'package:drift/drift.dart'; +import '../../../../../core/database/tables/accounts_table.dart'; import '../../../../../core/database/tables/users_table.dart'; /// Приложение-источник уведомлений, добавленное пользователем (allowlist). @@ -27,6 +28,15 @@ class SourceAppsTable extends Table { /// merchant→category правило для таких источников. BoolColumn get selfMerchant => boolean().withDefault(const Constant(false))(); + /// Основной счёт приложения (§B): резолвер доверяет ему (trusted), правила + /// senderToAccount его переопределяют. NULL — не задан: до первого + /// «Подтвердить» в Inbox (авто-обучение) сообщения идут на глобальный + /// дефолт БЕЗ доверия. FK не энфорсится (PRAGMA foreign_keys выключен) — + /// UI и резолвер обязаны терпеть висячий id. + TextColumn get defaultAccountId => text() + .references(AccountsTable, #id, onDelete: KeyAction.setNull) + .nullable()(); + DateTimeColumn get createdAt => dateTime().withDefault(currentDateAndTime)(); @override diff --git a/lib/src/features/notification_parsing/data/mappers/account_binding_mapper.dart b/lib/src/features/notification_parsing/data/mappers/account_binding_mapper.dart deleted file mode 100644 index c189075..0000000 --- a/lib/src/features/notification_parsing/data/mappers/account_binding_mapper.dart +++ /dev/null @@ -1,18 +0,0 @@ -import '../../../../core/database/app_database.dart'; -import '../../domain/entities/account_binding.dart'; - -/// Маппер: строка Drift → доменная сущность [AccountBinding]. -extension AccountBindingMapper on AccountBindingsTableData { - AccountBinding toDomain() => AccountBinding( - id: id, - userId: userId, - packageName: packageName, - bankKey: bankKey, - cardLast4: cardLast4, - phone: phone, - accountId: accountId, - isDefault: isDefault, - matchCount: matchCount, - createdAt: createdAt, - ); -} diff --git a/lib/src/features/notification_parsing/data/mappers/source_app_mapper.dart b/lib/src/features/notification_parsing/data/mappers/source_app_mapper.dart index 4e6c5a3..403f6d7 100644 --- a/lib/src/features/notification_parsing/data/mappers/source_app_mapper.dart +++ b/lib/src/features/notification_parsing/data/mappers/source_app_mapper.dart @@ -10,6 +10,7 @@ extension SourceAppMapper on SourceAppsTableData { displayName: displayName, enabled: enabled, selfMerchant: selfMerchant, + defaultAccountId: defaultAccountId, createdAt: createdAt, ); } diff --git a/lib/src/features/notification_parsing/data/parser/account_resolver.dart b/lib/src/features/notification_parsing/data/parser/account_resolver.dart index 57c1770..c4f60f1 100644 --- a/lib/src/features/notification_parsing/data/parser/account_resolver.dart +++ b/lib/src/features/notification_parsing/data/parser/account_resolver.dart @@ -1,18 +1,8 @@ import '../../domain/entities/parse_rule.dart'; -import '../../domain/repositories/account_bindings_repository.dart'; import 'rule_lookup.dart'; /// Откуда взят разрешённый счёт (для диагностики / подсветки). -enum AccountSource { - bindingCard, - bindingPhone, - senderRule, - singleBinding, - appDefault, - ambiguous, - globalDefault, - none, -} +enum AccountSource { senderRule, appDefault, globalDefault, none } /// Результат разрешения счёта из уведомления (шаг 3 pipeline, §B). class AccountResolution { @@ -21,7 +11,6 @@ class AccountResolution { required this.score, required this.trusted, required this.source, - this.bindingId, }); /// Разрешённый счёт (null, если ничего не нашлось). @@ -31,125 +20,62 @@ class AccountResolution { final int score; /// Можно ли доверять счёту для авто-применения. Именно это поле (а не score) - /// решает судьбу в gate: неоднозначность (#5) → false → Inbox; осознанные - /// дефолты (#4, #6) → true → авто-применение разрешено. + /// решает судьбу в gate: правило и дефолт приложения — осознанный выбор + /// пользователя → true; глобальный дефолт — лишь догадка → false → Inbox + /// с префиллом (первый Confirm выучит его как дефолт приложения). final bool trusted; final AccountSource source; - - /// id сработавшей привязки — для инкремента matchCount. - final String? bindingId; } -/// Разрешает `accountId` по цепочке источников (§B): привязки карта/телефон, -/// `senderToAccount`-правила, per-app default и глобальный дефолт счёта. -class AccountResolver { - const AccountResolver(this._bindings); - - final AccountBindingsRepository _bindings; - - Future resolve({ - required String userId, - required String packageName, - required String body, - String? cardLast4, - String? phone, - String? merchantRaw, - List senderRules = const [], - String? globalDefaultAccountId, - }) async { - // #1 — binding по packageName + cardLast4. - if (cardLast4 != null) { - final b = - await _bindings.findByPackageAndCard(userId, packageName, cardLast4); - if (b != null) { - return AccountResolution( - accountId: b.accountId, - score: 100, - trusted: true, - source: AccountSource.bindingCard, - bindingId: b.id, - ); - } - } - - // #1 — binding по телефону (СБП). - if (phone != null) { - final b = await _bindings.findByPhone(userId, phone); - if (b != null) { - return AccountResolution( - accountId: b.accountId, - score: 100, - trusted: true, - source: AccountSource.bindingPhone, - bindingId: b.id, - ); - } - } - - // #2 — senderToAccount-правило (матч по телу). - final senderRule = - findSenderRule(senderRules, body: body, merchantRaw: merchantRaw); - if (senderRule?.accountId != null) { - return AccountResolution( - accountId: senderRule!.accountId, - score: 90, - trusted: true, - source: AccountSource.senderRule, - ); - } - - final byPkg = await _bindings.findByPackageName(userId, packageName); - - // #3 — единственный binding по packageName. - if (byPkg.length == 1) { - return AccountResolution( - accountId: byPkg.first.accountId, - score: 75, - trusted: true, - source: AccountSource.singleBinding, - bindingId: byPkg.first.id, - ); - } - - if (byPkg.length > 1) { - // #4 — per-app default binding (card неизвестна). - final def = await _bindings.findDefaultByPackageName(userId, packageName); - if (def != null) { - return AccountResolution( - accountId: def.accountId, - score: 70, - trusted: true, - source: AccountSource.appDefault, - bindingId: def.id, - ); - } - // #5 — несколько bindings без default-флага → «первый», но не доверяем. - return AccountResolution( - accountId: byPkg.first.accountId, - score: 45, - trusted: false, - source: AccountSource.ambiguous, - bindingId: byPkg.first.id, - ); - } - - // #6 — глобальный Account.isDefault. - if (globalDefaultAccountId != null) { - return AccountResolution( - accountId: globalDefaultAccountId, - score: 40, - trusted: true, - source: AccountSource.globalDefault, - ); - } - - // #7 — ничего. - return const AccountResolution( - accountId: null, - score: 15, - trusted: false, - source: AccountSource.none, +/// Разрешает `accountId` по лестнице источников (§B): правило senderToAccount +/// (паттерн в теле → счёт) → дефолтный счёт приложения → глобальный дефолтный +/// счёт (без доверия) → ничего. +AccountResolution resolveAccount({ + required String body, + String? merchantRaw, + List senderRules = const [], + String? appDefaultAccountId, + String? globalDefaultAccountId, +}) { + // #1 — senderToAccount-правило (матч по телу). + final senderRule = + findSenderRule(senderRules, body: body, merchantRaw: merchantRaw); + if (senderRule?.accountId != null) { + return AccountResolution( + accountId: senderRule!.accountId, + score: 90, + trusted: true, + source: AccountSource.senderRule, ); } + + // #2 — дефолтный счёт приложения (выбран пользователем / авто-обучен). + if (appDefaultAccountId != null) { + return AccountResolution( + accountId: appDefaultAccountId, + score: 75, + trusted: true, + source: AccountSource.appDefault, + ); + } + + // #3 — глобальный Account.isDefault: префилл для Inbox, но НЕ trusted — + // авто-применение требует явно подтверждённого счёта приложения. + if (globalDefaultAccountId != null) { + return AccountResolution( + accountId: globalDefaultAccountId, + score: 40, + trusted: false, + source: AccountSource.globalDefault, + ); + } + + // #4 — ничего. + return const AccountResolution( + accountId: null, + score: 15, + trusted: false, + source: AccountSource.none, + ); } diff --git a/lib/src/features/notification_parsing/data/parser/decision_gate.dart b/lib/src/features/notification_parsing/data/parser/decision_gate.dart index 3a49d47..279e29b 100644 --- a/lib/src/features/notification_parsing/data/parser/decision_gate.dart +++ b/lib/src/features/notification_parsing/data/parser/decision_gate.dart @@ -24,10 +24,11 @@ enum AutoApplyCheck { /// (null у легаси-правил — проверка пропускается). typeMatchesRule, - /// Счёт разрешён (binding / правило / дефолт). + /// Счёт разрешён (правило / дефолт приложения / глобальный дефолт). accountResolved, - /// Счёту можно доверять для авто-применения (не ambiguous multi-binding). + /// Счёту можно доверять для авто-применения: правило senderToAccount или + /// дефолт приложения; глобальный дефолт — лишь префилл, не доверяем. accountTrusted, /// Сумма ниже потолка — защита от галлюцинаций (§15). diff --git a/lib/src/features/notification_parsing/data/repositories/account_bindings_repository_impl.dart b/lib/src/features/notification_parsing/data/repositories/account_bindings_repository_impl.dart deleted file mode 100644 index fcdba1b..0000000 --- a/lib/src/features/notification_parsing/data/repositories/account_bindings_repository_impl.dart +++ /dev/null @@ -1,100 +0,0 @@ -import 'package:drift/drift.dart'; -import 'package:uuid/uuid.dart'; - -import '../../../../core/database/app_database.dart'; -import '../../domain/entities/account_binding.dart'; -import '../../domain/repositories/account_bindings_repository.dart'; -import '../drift/daos/account_bindings_dao.dart'; -import '../mappers/account_binding_mapper.dart'; - -class AccountBindingsRepositoryImpl implements AccountBindingsRepository { - const AccountBindingsRepositoryImpl(this._dao); - final AccountBindingsDao _dao; - - @override - Stream> watchByUser(String userId) => _dao - .watchByUser(userId) - .map((rows) => rows.map((r) => r.toDomain()).toList()); - - @override - Future findByPackageAndCard( - String userId, - String packageName, - String cardLast4, - ) async => - (await _dao.findByPackageAndCard(userId, packageName, cardLast4)) - ?.toDomain(); - - @override - Future findByBankKeyAndCard( - String userId, - String bankKey, - String cardLast4, - ) async => - (await _dao.findByBankKeyAndCard(userId, bankKey, cardLast4))?.toDomain(); - - @override - Future findByPhone(String userId, String phone) async => - (await _dao.findByPhone(userId, phone))?.toDomain(); - - @override - Future> findByPackageName( - String userId, - String packageName, - ) async => - (await _dao.findByPackageName(userId, packageName)) - .map((r) => r.toDomain()) - .toList(); - - @override - Future findDefaultByPackageName( - String userId, - String packageName, - ) async => - (await _dao.findDefaultByPackageName(userId, packageName))?.toDomain(); - - @override - Future create({ - required String userId, - String? packageName, - String? bankKey, - String? cardLast4, - String? phone, - required String accountId, - }) async { - final id = const Uuid().v4(); - // Привязка всегда создаётся не-дефолтной; default назначается отдельно - // через [setDefault] (атомарно снимает флаг у прочих привязок пакета). - await _dao.insert( - AccountBindingsTableCompanion.insert( - id: id, - userId: userId, - packageName: Value(packageName), - bankKey: Value(bankKey), - cardLast4: Value(cardLast4), - phone: Value(phone), - accountId: accountId, - ), - ); - return AccountBinding( - id: id, - userId: userId, - packageName: packageName, - bankKey: bankKey, - cardLast4: cardLast4, - phone: phone, - accountId: accountId, - createdAt: DateTime.now(), - ); - } - - @override - Future incrementMatchCount(String id) => _dao.incrementMatchCount(id); - - @override - Future setDefault(String id, String userId, String packageName) => - _dao.setDefault(id, userId, packageName); - - @override - Future deleteById(String id) => _dao.deleteById(id); -} diff --git a/lib/src/features/notification_parsing/data/repositories/source_apps_repository_impl.dart b/lib/src/features/notification_parsing/data/repositories/source_apps_repository_impl.dart index 0f035b1..76aca03 100644 --- a/lib/src/features/notification_parsing/data/repositories/source_apps_repository_impl.dart +++ b/lib/src/features/notification_parsing/data/repositories/source_apps_repository_impl.dart @@ -54,6 +54,10 @@ class SourceAppsRepositoryImpl implements SourceAppsRepository { Future setSelfMerchant(String id, {required bool value}) => _dao.setSelfMerchant(id, value: value); + @override + Future setDefaultAccount(String id, String? accountId) => + _dao.setDefaultAccount(id, accountId); + @override Future deleteById(String id) => _dao.deleteById(id); } diff --git a/lib/src/features/notification_parsing/domain/entities/account_binding.dart b/lib/src/features/notification_parsing/domain/entities/account_binding.dart deleted file mode 100644 index bf251c9..0000000 --- a/lib/src/features/notification_parsing/domain/entities/account_binding.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'account_binding.freezed.dart'; - -/// Привязка идентификатора карты/телефона к конкретному счёту в приложении. -/// -/// Используется на шаге 3 pipeline для разрешения [accountId] из уведомления. -/// Уникальный индекс по (userId, packageName, cardLast4) в таблице. -/// -/// Хотя бы одно из ([packageName], [bankKey], [cardLast4], [phone]) -/// должно быть заполнено для осмысленного матча. -@freezed -abstract class AccountBinding with _$AccountBinding { - const factory AccountBinding({ - required String id, - required String userId, - String? packageName, - - /// Нормализованный ключ банка из bank_templates_catalog. - String? bankKey, - String? cardLast4, - String? phone, - - required String accountId, - - /// Привязка по умолчанию для приложения (карта не распознана). - @Default(false) bool isDefault, - @Default(0) int matchCount, - required DateTime createdAt, - }) = _AccountBinding; -} diff --git a/lib/src/features/notification_parsing/domain/entities/parse_draft.dart b/lib/src/features/notification_parsing/domain/entities/parse_draft.dart index ede4fcd..6535923 100644 --- a/lib/src/features/notification_parsing/domain/entities/parse_draft.dart +++ b/lib/src/features/notification_parsing/domain/entities/parse_draft.dart @@ -7,7 +7,7 @@ part 'parse_draft.freezed.dart'; /// Структурированный результат разбора одного уведомления. /// /// Промежуточный объект pipeline: создаётся regex-parser или ai-parser, -/// дополняется account_bindings, rule_lookup, затем передаётся в +/// дополняется account_resolver, rule_lookup, затем передаётся в /// confidence_scorer и decision gate. /// /// [amount] — минорные единицы (всегда > 0); знак определяется [type]. @@ -43,7 +43,7 @@ abstract class ParseDraft with _$ParseDraft { // Resolved fields — заполняются на последующих шагах pipeline: - /// Счёт, разрешённый через account_bindings. + /// Счёт, разрешённый резолвером (правило / дефолт приложения / глобальный). String? accountId, /// Нормализованное имя мерчанта (из правила или rule_candidate). diff --git a/lib/src/features/notification_parsing/domain/entities/source_app.dart b/lib/src/features/notification_parsing/domain/entities/source_app.dart index c86efec..d3c9e23 100644 --- a/lib/src/features/notification_parsing/domain/entities/source_app.dart +++ b/lib/src/features/notification_parsing/domain/entities/source_app.dart @@ -17,6 +17,11 @@ abstract class SourceApp with _$SourceApp { /// Уведомления не называют продавца: мерчант — само приложение (Ozon). @Default(false) bool selfMerchant, + + /// Основной счёт приложения: trusted-ступень резолвера после правил + /// senderToAccount. null — не задан (авто-обучится первым «Подтвердить» + /// в Inbox). Может висеть на удалённый счёт — UI показывает «Не задан». + String? defaultAccountId, required DateTime createdAt, }) = _SourceApp; } diff --git a/lib/src/features/notification_parsing/domain/repositories/account_bindings_repository.dart b/lib/src/features/notification_parsing/domain/repositories/account_bindings_repository.dart deleted file mode 100644 index 3591021..0000000 --- a/lib/src/features/notification_parsing/domain/repositories/account_bindings_repository.dart +++ /dev/null @@ -1,49 +0,0 @@ -import '../entities/account_binding.dart'; - -/// Доступ к привязкам «карта/телефон → счёт» ([AccountBinding]). -/// -/// Используется на шаге 3 pipeline (account_resolver) для разрешения accountId. -abstract interface class AccountBindingsRepository { - Stream> watchByUser(String userId); - - Future findByPackageAndCard( - String userId, - String packageName, - String cardLast4, - ); - - Future findByBankKeyAndCard( - String userId, - String bankKey, - String cardLast4, - ); - - Future findByPhone(String userId, String phone); - - Future> findByPackageName( - String userId, - String packageName, - ); - - /// Умолчательная привязка приложения (карта не распознана) — §B #4. - Future findDefaultByPackageName( - String userId, - String packageName, - ); - - Future create({ - required String userId, - String? packageName, - String? bankKey, - String? cardLast4, - String? phone, - required String accountId, - }); - - Future incrementMatchCount(String id); - - /// Делает привязку умолчательной для её пакета (сбрасывает флаг у прочих). - Future setDefault(String id, String userId, String packageName); - - Future deleteById(String id); -} diff --git a/lib/src/features/notification_parsing/domain/repositories/source_apps_repository.dart b/lib/src/features/notification_parsing/domain/repositories/source_apps_repository.dart index bac49be..e6bc6ac 100644 --- a/lib/src/features/notification_parsing/domain/repositories/source_apps_repository.dart +++ b/lib/src/features/notification_parsing/domain/repositories/source_apps_repository.dart @@ -26,5 +26,8 @@ abstract interface class SourceAppsRepository { /// Флаг «мерчант — само приложение» (Ozon, маркетплейсы). Future setSelfMerchant(String id, {required bool value}); + /// Основной счёт приложения (trusted-дефолт резолвера); null — сброс. + Future setDefaultAccount(String id, String? accountId); + Future deleteById(String id); } diff --git a/lib/src/features/notification_parsing/presentation/screens/app_bindings_screen.dart b/lib/src/features/notification_parsing/presentation/screens/app_bindings_screen.dart deleted file mode 100644 index 1a3da2a..0000000 --- a/lib/src/features/notification_parsing/presentation/screens/app_bindings_screen.dart +++ /dev/null @@ -1,159 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; - -import '../../../../app/l10n/l10n.dart'; -import '../../../../app/theme/app_colors.dart'; -import '../../../accounts/application/accounts_controller.dart'; -import '../../../accounts/domain/entities/account.dart'; -import '../../../transactions/presentation/widgets/account_picker_sheet.dart'; -import '../../../user/application/active_user_controller.dart'; -import '../../application/account_bindings_controller.dart'; -import '../../domain/entities/account_binding.dart'; - -/// Привязки выбранного приложения-источника: card/phone → счёт + дефолт (§A). -class AppBindingsScreen extends ConsumerWidget { - const AppBindingsScreen({super.key, required this.packageName}); - - final String packageName; - - @override - Widget build(BuildContext context, WidgetRef ref) { - final p = context.palette; - final l10n = context.l10n; - final userId = ref.watch(activeUserControllerProvider).value?.id; - - if (userId == null) { - return Scaffold(backgroundColor: p.paper, body: const SizedBox.shrink()); - } - - final bindings = (ref.watch(accountBindingsListProvider(userId)).value ?? - const []) - .where((b) => b.packageName == packageName) - .toList(); - final accounts = ref.watch(accountsStreamProvider(userId)).value ?? - const []; - final accountById = {for (final a in accounts) a.id: a}; - - return Scaffold( - backgroundColor: p.paper, - appBar: AppBar( - backgroundColor: p.paper, - title: Text(l10n.appBindingsTitle), - actions: [ - IconButton( - icon: const Icon(Icons.add), - onPressed: () => _addBinding(context, ref, userId), - ), - ], - ), - body: bindings.isEmpty - ? Center( - child: Padding( - padding: const EdgeInsets.all(32), - child: Text(l10n.appBindingsEmpty, - textAlign: TextAlign.center, - style: TextStyle(fontSize: 14, color: p.ink2)), - ), - ) - : ListView.separated( - padding: const EdgeInsets.symmetric(vertical: 8), - itemCount: bindings.length, - separatorBuilder: (_, _) => Container(height: 1, color: p.line), - itemBuilder: (context, i) { - final b = bindings[i]; - final accountName = - accountById[b.accountId]?.name ?? b.accountId; - final subtitle = b.cardLast4 != null - ? '•••• ${b.cardLast4}' - : (b.phone ?? l10n.appBindingsAnyCard); - return ListTile( - title: Text(accountName, - style: TextStyle(fontSize: 14, color: p.ink)), - subtitle: Text(subtitle, - style: TextStyle(fontSize: 12, color: p.ink2)), - leading: IconButton( - icon: Icon( - b.isDefault ? Icons.star : Icons.star_border, - color: b.isDefault ? p.accent : p.ink2, - ), - tooltip: l10n.appBindingsSetDefault, - onPressed: b.isDefault - ? null - : () => ref - .read(accountBindingsControllerProvider.notifier) - .setDefault(b.id, userId, packageName), - ), - trailing: IconButton( - icon: Icon(Icons.delete_outline, color: p.ink2), - onPressed: () => ref - .read(accountBindingsControllerProvider.notifier) - .delete(b.id), - ), - ); - }, - ), - ); - } - - Future _addBinding( - BuildContext context, - WidgetRef ref, - String userId, - ) async { - final accountId = await showAccountPicker(context, userId: userId); - if (accountId == null || !context.mounted) return; - - final l10n = context.l10n; - final cardCtrl = TextEditingController(); - var asDefault = false; - final ok = await showDialog( - context: context, - builder: (context) => StatefulBuilder( - builder: (context, setState) => AlertDialog( - title: Text(l10n.appBindingsAddTitle), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - controller: cardCtrl, - keyboardType: TextInputType.number, - maxLength: 4, - decoration: InputDecoration( - labelText: l10n.appBindingsCardLabel, - helperText: l10n.appBindingsCardHelper, - ), - ), - CheckboxListTile( - contentPadding: EdgeInsets.zero, - title: Text(l10n.appBindingsDefaultLabel), - value: asDefault, - onChanged: (v) => setState(() => asDefault = v ?? false), - ), - ], - ), - actions: [ - TextButton( - onPressed: () => Navigator.of(context).pop(false), - child: Text(l10n.commonCancel), - ), - TextButton( - onPressed: () => Navigator.of(context).pop(true), - child: Text(l10n.commonAdd), - ), - ], - ), - ), - ); - final card = cardCtrl.text.trim(); - cardCtrl.dispose(); - if (ok == true) { - await ref.read(accountBindingsControllerProvider.notifier).add( - userId: userId, - packageName: packageName, - accountId: accountId, - cardLast4: card.isEmpty ? null : card, - isDefault: asDefault, - ); - } - } -} diff --git a/lib/src/features/notification_parsing/presentation/screens/inbox_screen.dart b/lib/src/features/notification_parsing/presentation/screens/inbox_screen.dart index 9ef3ccb..695477d 100644 --- a/lib/src/features/notification_parsing/presentation/screens/inbox_screen.dart +++ b/lib/src/features/notification_parsing/presentation/screens/inbox_screen.dart @@ -8,6 +8,7 @@ import '../../../categories/application/categories_controller.dart'; import '../../../categories/domain/entities/category.dart'; import '../../../user/application/active_user_controller.dart'; import '../../application/inbox_controller.dart'; +import '../../data/parser/draft_codec.dart'; import '../../domain/entities/raw_message.dart'; import '../widgets/inbox_card.dart'; @@ -74,7 +75,9 @@ class InboxScreen extends ConsumerWidget { ), ), ), - if (messages.isNotEmpty) + // «Учесть все» имеет смысл только когда есть хоть один готовый + // черновик — карточки pendingAi/failed без draftJson applyAll скипает. + if (messages.any((m) => decodeDraftBundle(m.draftJson) != null)) SafeArea( top: false, child: Padding( diff --git a/lib/src/features/notification_parsing/presentation/screens/parsing_log_screen.dart b/lib/src/features/notification_parsing/presentation/screens/parsing_log_screen.dart index 7bb616a..1dd1dfc 100644 --- a/lib/src/features/notification_parsing/presentation/screens/parsing_log_screen.dart +++ b/lib/src/features/notification_parsing/presentation/screens/parsing_log_screen.dart @@ -14,6 +14,7 @@ import '../../domain/entities/raw_message.dart'; import '../../domain/enums.dart'; import '../widgets/confidence_badge.dart'; import '../widgets/gate_check_labels.dart'; +import '../widgets/parse_error_labels.dart'; /// Максимум реальных AI-попыток до статуса `failed` (см. ParsingWorker §7). const _maxParseAttempts = 5; @@ -182,7 +183,8 @@ class _LogRowState extends ConsumerState<_LogRow> { final merchant = draft?.merchantCanonical ?? draft?.merchantRaw; final canRetry = message.status == RawMessageStatus.failed || - message.status == RawMessageStatus.ignored; + message.status == RawMessageStatus.ignored || + message.status == RawMessageStatus.pendingAi; return Padding( padding: const EdgeInsets.fromLTRB(12, 10, 12, 10), @@ -259,8 +261,15 @@ class _LogRowState extends ConsumerState<_LogRow> { if (message.lastParseError != null) ...[ const SizedBox(height: 6), Text( - message.lastParseError!, - style: TextStyle(fontSize: 12, color: p.negative, height: 1.3), + parseErrorLabel(context, message.lastParseError!), + style: TextStyle( + fontSize: 12, + // pendingAi — ожидание, не ошибка: не пугаем красным. + color: message.status == RawMessageStatus.pendingAi + ? p.ink2 + : p.negative, + height: 1.3, + ), maxLines: _expanded ? null : 2, overflow: _expanded ? null : TextOverflow.ellipsis, ), diff --git a/lib/src/features/notification_parsing/presentation/screens/rule_editor_screen.dart b/lib/src/features/notification_parsing/presentation/screens/rule_editor_screen.dart index de22f4e..d17e56b 100644 --- a/lib/src/features/notification_parsing/presentation/screens/rule_editor_screen.dart +++ b/lib/src/features/notification_parsing/presentation/screens/rule_editor_screen.dart @@ -18,20 +18,24 @@ import '../../domain/entities/parse_rule.dart'; import '../../domain/entities/source_app.dart'; import '../../domain/enums.dart'; -/// Предзаполнение редактора при создании правила из Inbox. +/// Предзаполнение редактора при создании правила из Inbox (merchant→category +/// с паттерном/мерчантом) или с детального экрана приложения (senderToAccount +/// с одним лишь packageName). Приложение и вид правила фиксируются. class RuleEditorPrefill { const RuleEditorPrefill({ required this.packageName, - required this.pattern, - required this.merchantCanonical, + this.kind = ParseRuleKind.merchantToCategory, + this.pattern, + this.merchantCanonical, this.categoryId, this.accountId, this.matchMode = MatchMode.contains, }); final String packageName; - final String pattern; - final String merchantCanonical; + final ParseRuleKind kind; + final String? pattern; + final String? merchantCanonical; final String? categoryId; final String? accountId; final MatchMode matchMode; @@ -98,8 +102,9 @@ class _RuleEditorScreenState extends ConsumerState { final pf = widget.prefill; if (pf != null) { _packageName = pf.packageName; - _patternCtrl.text = pf.pattern; - _merchantCtrl.text = pf.merchantCanonical; + _kind = pf.kind; + _patternCtrl.text = pf.pattern ?? ''; + _merchantCtrl.text = pf.merchantCanonical ?? ''; _matchMode = pf.matchMode; _categoryId = pf.categoryId; _accountId = pf.accountId; @@ -231,9 +236,9 @@ class _RuleEditorScreenState extends ConsumerState { body: ListView( padding: const EdgeInsets.fromLTRB(16, 8, 16, 24), children: [ - // Выбор вида — только при создании из списка правил. Из Inbox - // (prefill) композим всегда merchant→category: senderToAccount там - // не применяется (inbox_controller создаёт правило этого вида). + // Выбор вида — только при создании из списка правил. С prefill + // вид зафиксирован источником: Inbox — merchant→category, детальный + // экран приложения — senderToAccount. if (_appIsPickable) ...[ _KindSelector( kind: _kind, diff --git a/lib/src/features/notification_parsing/presentation/screens/source_app_detail_screen.dart b/lib/src/features/notification_parsing/presentation/screens/source_app_detail_screen.dart new file mode 100644 index 0000000..8ebb285 --- /dev/null +++ b/lib/src/features/notification_parsing/presentation/screens/source_app_detail_screen.dart @@ -0,0 +1,294 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../../../../app/l10n/l10n.dart'; +import '../../../../app/router/app_routes.dart'; +import '../../../../app/theme/app_colors.dart'; +import '../../../accounts/application/accounts_controller.dart'; +import '../../../accounts/domain/entities/account.dart'; +import '../../../transactions/presentation/widgets/account_picker_sheet.dart'; +import '../../../user/application/active_user_controller.dart'; +import '../../application/rules_controller.dart'; +import '../../application/source_apps_controller.dart'; +import '../../domain/entities/parse_rule.dart'; +import '../../domain/entities/source_app.dart'; +import '../../domain/enums.dart'; +import 'rule_editor_screen.dart'; + +/// Детальный экран приложения-источника: всё про одно приложение в одном +/// месте — мониторинг, selfMerchant, дефолтный счёт и правила выбора счёта +/// (senderToAccount). Заменил экран привязок card/phone → счёт. +class SourceAppDetailScreen extends ConsumerWidget { + const SourceAppDetailScreen({super.key, required this.packageName}); + + final String packageName; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final p = context.palette; + final l10n = context.l10n; + final userId = ref.watch(activeUserControllerProvider).value?.id; + + if (userId == null) { + return Scaffold(backgroundColor: p.paper, body: const SizedBox.shrink()); + } + + final app = (ref.watch(sourceAppsListProvider(userId)).value ?? + const []) + .where((a) => a.packageName == packageName) + .firstOrNull; + if (app == null) { + // Приложение удалено (в т.ч. только что, с этого же экрана). + return Scaffold(backgroundColor: p.paper, body: const SizedBox.shrink()); + } + + final ctrl = ref.read(sourceAppsControllerProvider.notifier); + final accounts = ref.watch(accountsStreamProvider(userId)).value ?? + const []; + // Висячий id (счёт удалён) показываем как «Не задан». + final defaultAccount = accounts + .where((a) => a.id == app.defaultAccountId) + .firstOrNull; + final accountById = {for (final a in accounts) a.id: a}; + + final senderRules = + (ref.watch(parseRulesListProvider(userId)).value ?? const []) + .where((r) => + r.kind == ParseRuleKind.senderToAccount && + r.packageName == packageName) + .toList(); + + return Scaffold( + backgroundColor: p.paper, + appBar: AppBar( + backgroundColor: p.paper, + title: Text(app.displayName ?? app.packageName), + actions: [ + IconButton( + icon: Icon(Icons.delete_outline, color: p.ink2), + tooltip: l10n.commonDelete, + onPressed: () async { + await ctrl.delete(app.id); + if (context.mounted) context.pop(); + }, + ), + ], + ), + body: ListView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + children: [ + if (app.displayName != null) + Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Text(app.packageName, + style: TextStyle(fontSize: 12, color: p.ink2)), + ), + _Card( + children: [ + SwitchListTile( + title: Text(l10n.appDetailEnabled, + style: TextStyle(fontSize: 14, color: p.ink)), + value: app.enabled, + activeThumbColor: p.accent, + onChanged: (v) => ctrl.setEnabled(app.id, enabled: v), + ), + Container(height: 1, color: p.line), + SwitchListTile( + title: Text(l10n.sourceAppsSelfMerchantLabel, + style: TextStyle(fontSize: 14, color: p.ink)), + subtitle: Text(l10n.sourceAppsSelfMerchantHint, + style: TextStyle(fontSize: 12, color: p.ink2)), + value: app.selfMerchant, + activeThumbColor: p.accent, + onChanged: (v) => ctrl.setSelfMerchant(app.id, value: v), + ), + ], + ), + const SizedBox(height: 20), + Text(l10n.appDetailDefaultAccount, + style: TextStyle(fontSize: 13, color: p.ink2)), + const SizedBox(height: 8), + _Card( + children: [ + InkWell( + onTap: () async { + final id = await showAccountPicker( + context, + userId: userId, + currentAccountId: defaultAccount?.id, + ); + if (id != null) await ctrl.setDefaultAccount(app.id, id); + }, + child: Padding( + padding: const EdgeInsets.fromLTRB(14, 6, 6, 6), + child: Row( + children: [ + Icon(Icons.account_balance_wallet_outlined, + size: 20, color: p.ink2), + const SizedBox(width: 12), + Expanded( + child: Text( + defaultAccount?.name ?? + l10n.appDetailDefaultAccountNone, + style: TextStyle( + fontSize: 14, + color: defaultAccount != null ? p.ink : p.ink2, + ), + ), + ), + if (app.defaultAccountId != null) + IconButton( + icon: Icon(Icons.clear, size: 18, color: p.ink2), + tooltip: l10n.commonDelete, + onPressed: () => + ctrl.setDefaultAccount(app.id, null), + ), + Icon(Icons.chevron_right, size: 18, color: p.ink2), + const SizedBox(width: 8), + ], + ), + ), + ), + ], + ), + const SizedBox(height: 6), + Text(l10n.appDetailDefaultAccountHint, + style: TextStyle(fontSize: 12, color: p.ink2, height: 1.3)), + const SizedBox(height: 20), + Row( + children: [ + Expanded( + child: Text(l10n.appDetailRoutingRules, + style: TextStyle(fontSize: 13, color: p.ink2)), + ), + TextButton.icon( + onPressed: () => _addRule(context, ref, userId), + icon: Icon(Icons.add, size: 18, color: p.accent), + label: Text(l10n.appDetailAddRule, + style: TextStyle(fontSize: 13, color: p.accent)), + ), + ], + ), + if (senderRules.isEmpty) + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Text(l10n.appDetailRoutingRulesEmpty, + style: TextStyle(fontSize: 13, color: p.ink2, height: 1.3)), + ) + else + _Card( + children: [ + for (final (i, rule) in senderRules.indexed) ...[ + if (i > 0) Container(height: 1, color: p.line), + _RuleTile( + rule: rule, + accountName: rule.accountId == null + ? null + : accountById[rule.accountId]?.name, + ), + ], + ], + ), + ], + ), + ); + } + + /// «+»: редактор в compose-режиме с зафиксированными приложением и видом + /// senderToAccount; результат сохраняем здесь (редактор только композит). + Future _addRule( + BuildContext context, + WidgetRef ref, + String userId, + ) async { + final result = await context.push( + AppRoutes.parsingRuleNew, + extra: RuleEditorPrefill( + packageName: packageName, + kind: ParseRuleKind.senderToAccount, + ), + ); + if (result == null) return; + await ref.read(rulesControllerProvider.notifier).create( + userId: userId, + packageName: result.packageName, + kind: result.kind, + matchMode: result.matchMode, + pattern: result.pattern, + priority: result.priority, + merchantCanonical: result.merchantCanonical.isEmpty + ? null + : result.merchantCanonical, + categoryId: result.categoryId, + accountId: result.accountId, + ); + } +} + +/// Строка правила «паттерн → счёт»: тап — редактор, корзина — удаление. +class _RuleTile extends ConsumerWidget { + const _RuleTile({required this.rule, required this.accountName}); + + final ParseRule rule; + final String? accountName; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final p = context.palette; + return InkWell( + onTap: () => context.push(AppRoutes.parsingRuleEdit(rule.id)), + child: Padding( + padding: const EdgeInsets.fromLTRB(14, 6, 6, 6), + child: Row( + children: [ + Expanded( + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: rule.pattern, + style: TextStyle( + fontSize: 14, + color: rule.enabled ? p.ink : p.ink2, + ), + ), + TextSpan( + text: ' → ${accountName ?? rule.accountId ?? '—'}', + style: TextStyle(fontSize: 14, color: p.ink2), + ), + ], + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + IconButton( + icon: Icon(Icons.delete_outline, size: 20, color: p.ink2), + tooltip: context.l10n.commonDelete, + onPressed: () => + ref.read(rulesControllerProvider.notifier).delete(rule.id), + ), + ], + ), + ), + ); + } +} + +class _Card extends StatelessWidget { + const _Card({required this.children}); + final List children; + + @override + Widget build(BuildContext context) { + final p = context.palette; + return Container( + decoration: BoxDecoration( + border: Border.all(color: p.line), + borderRadius: BorderRadius.circular(14), + ), + child: Column(children: children), + ); + } +} diff --git a/lib/src/features/notification_parsing/presentation/screens/source_apps_screen.dart b/lib/src/features/notification_parsing/presentation/screens/source_apps_screen.dart index fcc75a7..1321522 100644 --- a/lib/src/features/notification_parsing/presentation/screens/source_apps_screen.dart +++ b/lib/src/features/notification_parsing/presentation/screens/source_apps_screen.dart @@ -330,74 +330,36 @@ class _AddedAppTile extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final p = context.palette; - final l10n = context.l10n; final ctrl = ref.read(sourceAppsControllerProvider.notifier); final title = app.displayName ?? app.packageName; + // Одна строка: всё остальное (selfMerchant, дефолтный счёт, правила, + // удаление) — на детальном экране приложения. return InkWell( - onTap: () => context.push(AppRoutes.parsingAppBindings(app.packageName)), + onTap: () => context.push(AppRoutes.parsingAppDetail(app.packageName)), child: Padding( padding: const EdgeInsets.fromLTRB(14, 8, 8, 8), - child: Column( + child: Row( children: [ - Row( - children: [ - Icon(Icons.apps_outlined, size: 20, color: p.ink2), - const SizedBox(width: 12), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(title, - style: TextStyle(fontSize: 14, color: p.ink)), - if (app.displayName != null) - Text(app.packageName, - style: TextStyle(fontSize: 11, color: p.ink2)), - ], - ), - ), - Switch( - value: app.enabled, - activeThumbColor: p.accent, - onChanged: (v) => ctrl.setEnabled(app.id, enabled: v), - ), - IconButton( - icon: Icon(Icons.delete_outline, size: 20, color: p.ink2), - tooltip: l10n.commonDelete, - onPressed: () => ctrl.delete(app.id), - ), - Icon(Icons.chevron_right, size: 18, color: p.ink2), - ], - ), - // «Мерчант — само приложение» (Ozon): уведомления не называют - // продавца — категория выбирается вручную, правила не предлагаются. - Padding( - padding: const EdgeInsets.only(left: 32), - child: Tooltip( - message: l10n.sourceAppsSelfMerchantHint, - child: Row( - children: [ - Icon(Icons.storefront_outlined, size: 16, color: p.ink2), - const SizedBox(width: 8), - Expanded( - child: Text(l10n.sourceAppsSelfMerchantLabel, - style: TextStyle(fontSize: 12, color: p.ink2)), - ), - SizedBox( - height: 32, - width: 40, - child: Checkbox( - value: app.selfMerchant, - activeColor: p.accent, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - onChanged: (v) => - ctrl.setSelfMerchant(app.id, value: v ?? false), - ), - ), - ], - ), + Icon(Icons.apps_outlined, size: 20, color: p.ink2), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(title, style: TextStyle(fontSize: 14, color: p.ink)), + if (app.displayName != null) + Text(app.packageName, + style: TextStyle(fontSize: 11, color: p.ink2)), + ], ), ), + Switch( + value: app.enabled, + activeThumbColor: p.accent, + onChanged: (v) => ctrl.setEnabled(app.id, enabled: v), + ), + Icon(Icons.chevron_right, size: 18, color: p.ink2), ], ), ), diff --git a/lib/src/features/notification_parsing/presentation/widgets/inbox_card.dart b/lib/src/features/notification_parsing/presentation/widgets/inbox_card.dart index 4f39974..9294096 100644 --- a/lib/src/features/notification_parsing/presentation/widgets/inbox_card.dart +++ b/lib/src/features/notification_parsing/presentation/widgets/inbox_card.dart @@ -12,6 +12,7 @@ import '../../../home/presentation/widgets/money_text.dart'; import '../../../transactions/presentation/screens/transaction_form_screen.dart'; import '../../../transactions/presentation/widgets/account_picker_sheet.dart'; import '../../../transactions/presentation/widgets/category_picker_sheet.dart'; +import '../../application/ai_providers.dart'; import '../../application/inbox_controller.dart'; import '../../data/parser/draft_codec.dart'; import '../../domain/entities/raw_message.dart'; @@ -19,6 +20,7 @@ import '../../domain/enums.dart'; import '../screens/rule_editor_screen.dart'; import 'confidence_badge.dart'; import 'gate_check_labels.dart'; +import 'parse_error_labels.dart'; /// Карточка Inbox (§12.2): мерчант, сумма, подсветка слабых полей и три /// действия — «Создать правило», «Подтвердить», «Игнорировать». @@ -51,6 +53,9 @@ class InboxCard extends ConsumerWidget { ), child: message.status == RawMessageStatus.failed ? _FailedBody(message: message) + // pendingAi — ждёт сети/AI: причина + ручной ретрай (draftJson ещё нет). + : message.status == RawMessageStatus.pendingAi + ? _PendingAiBody(message: message) : bundle == null ? _UnrecognizedBody(message: message) // pairedRawMessageId → склеенная пара «Перевод между счетами». @@ -210,7 +215,7 @@ class _RecognizedBody extends ConsumerWidget { final acc = await _resolveAccount(context, userId: userId, accountId: accountId); if (acc == null || !context.mounted) return; - await _runReporting( + await _runLearning( context, () => ref .read(inboxControllerProvider.notifier) @@ -256,7 +261,7 @@ class _RecognizedBody extends ConsumerWidget { final acc = await _resolveAccount(context, userId: userId, accountId: accountId); if (acc == null || !context.mounted) return; - await _runReporting( + await _runLearning( context, () => ref.read(inboxControllerProvider.notifier).createRule( userId: userId, @@ -292,7 +297,7 @@ class _RecognizedBody extends ConsumerWidget { final acc = await _resolveAccount(context, userId: userId, accountId: result.accountId ?? accountId); if (acc == null || !context.mounted) return; - await _runReporting( + await _runLearning( context, () => ref.read(inboxControllerProvider.notifier).createRule( userId: userId, @@ -325,6 +330,27 @@ Future _runReporting( } } +/// То же для confirmOnce/createRule: контроллер возвращает true, когда счёт +/// только что записан дефолтом приложения (авто-обучение) — сообщаем об этом +/// SnackBar'ом, дальше похожие сообщения смогут применяться автоматически. +Future _runLearning( + BuildContext context, + Future Function() action, +) async { + try { + final learned = await action(); + if (learned && context.mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(context.l10n.inboxAppDefaultSet)), + ); + } + } catch (e) { + if (!context.mounted) return; + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text(e.toString()))); + } +} + /// Счёт для подтверждения: переданный [accountId] (draft/дефолт), иначе — /// пикер счёта. `null` из пикера = пользователь отменил. Future _resolveAccount( @@ -549,7 +575,7 @@ class _ConfirmOnceBodyState extends ConsumerState<_ConfirmOnceBody> { accountId: draft.accountId ?? widget.defaultAccountId, ); if (acc == null || !mounted) return; - await _runReporting( + await _runLearning( context, () => ref.read(inboxControllerProvider.notifier).confirmOnce( userId: widget.userId, @@ -929,7 +955,7 @@ class _FailedBody extends ConsumerWidget { ), if (message.lastParseError != null) ...[ const SizedBox(height: 6), - Text(message.lastParseError!, + Text(parseErrorLabel(context, message.lastParseError!), style: TextStyle(fontSize: 12, color: p.negative, height: 1.3), maxLines: 3, overflow: TextOverflow.ellipsis), @@ -966,6 +992,87 @@ class _FailedBody extends ConsumerWidget { } } +/// Карточка сообщения, ждущего сети для AI-разбора (`pendingAi`, §7): причина +/// зависания (офлайн vs сетевой сбой при живой сети), счётчик попыток, сырой +/// `body` и кнопки «Попробовать снова» / «Игнорировать». Ручной ретрай через +/// `InboxController.retry` сбрасывает счётчик попыток (`resetForRetry`). +class _PendingAiBody extends ConsumerWidget { + const _PendingAiBody({required this.message}); + + final RawMessage message; + + /// Кэп реальных AI-попыток в pipeline (§7). + static const _maxAttempts = 5; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final p = context.palette; + final l10n = context.l10n; + // Живое состояние сети объясняет, ЧЕМУ сообщение висит: явный офлайн — + // ждём сеть; иначе сеть числится живой, но запрос не прошёл. + final offline = ref.watch(isOnlineProvider).value == false; + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Row( + children: [ + Icon( + offline ? Icons.cloud_off_outlined : Icons.hourglass_top, + size: 18, + color: p.ink2, + ), + const SizedBox(width: 6), + Expanded( + child: Text(l10n.inboxWaitingNetworkTitle, + style: TextStyle( + fontSize: 14, fontWeight: FontWeight.w600, color: p.ink)), + ), + ], + ), + const SizedBox(height: 6), + Text( + offline ? l10n.inboxStuckOffline : l10n.inboxStuckNetwork, + style: TextStyle(fontSize: 12, color: p.ink2, height: 1.3), + ), + if (message.parseAttemptCount > 0) ...[ + const SizedBox(height: 4), + Text( + l10n.parsingDetailAttempt(message.parseAttemptCount, _maxAttempts), + style: TextStyle(fontSize: 12, color: p.ink2, height: 1.3), + ), + ], + const SizedBox(height: 8), + Text(message.body, + style: TextStyle(fontSize: 12, color: p.ink2, height: 1.3), + maxLines: 3, + overflow: TextOverflow.ellipsis), + const SizedBox(height: 12), + Row( + children: [ + Expanded( + child: _SecondaryButton( + icon: Icons.refresh, + label: l10n.inboxRetry, + onTap: () => + ref.read(inboxControllerProvider.notifier).retry(message), + ), + ), + const SizedBox(width: 8), + Expanded( + child: _SecondaryButton( + icon: Icons.close, + label: l10n.inboxIgnore, + onTap: () => + ref.read(inboxControllerProvider.notifier).ignore(message), + ), + ), + ], + ), + ], + ); + } +} + /// Акцентная сплит-кнопка «действие | ✎»: основной сегмент выполняет действие /// ([onTap] == null — сегмент неактивен и приглушён), карандаш всегда активен /// и открывает редактор/форму. Используется для «Создать правило» и diff --git a/lib/src/features/notification_parsing/presentation/widgets/parse_error_labels.dart b/lib/src/features/notification_parsing/presentation/widgets/parse_error_labels.dart new file mode 100644 index 0000000..325a714 --- /dev/null +++ b/lib/src/features/notification_parsing/presentation/widgets/parse_error_labels.dart @@ -0,0 +1,20 @@ +import 'package:flutter/widgets.dart'; + +import '../../../../app/l10n/l10n.dart'; + +/// Локализованная причина сбоя разбора по сырому значению `lastParseError` +/// (пишется pipeline'ом) — для журнала парсинга и карточек Inbox. +String parseErrorLabel(BuildContext context, String raw) { + final l10n = context.l10n; + switch (raw) { + case 'offline': + return l10n.parseErrorOffline; + case 'network': + return l10n.parseErrorNetwork; + case 'AI retry limit reached': + return l10n.parseErrorRetryLimit; + default: + // auth/API-ошибки несут полезный свободный текст — показываем как есть. + return raw; + } +} diff --git a/lib/src/features/profile/presentation/screens/profile_screen.dart b/lib/src/features/profile/presentation/screens/profile_screen.dart index 502ee1b..5cd6a8c 100644 --- a/lib/src/features/profile/presentation/screens/profile_screen.dart +++ b/lib/src/features/profile/presentation/screens/profile_screen.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; @@ -115,20 +116,24 @@ class _ProfileScreenState extends ConsumerState { ], ), ), - const SizedBox(height: 12), - Container( - decoration: BoxDecoration( - border: Border.all(color: p.line), - borderRadius: BorderRadius.circular(14), + // Demo-seeding is dev-only tooling: hidden in release builds so it + // can't be tapped by accident in the production app. + if (kDebugMode) ...[ + const SizedBox(height: 12), + Container( + decoration: BoxDecoration( + border: Border.all(color: p.line), + borderRadius: BorderRadius.circular(14), + ), + child: _NavRow( + icon: Icons.auto_fix_high_outlined, + title: l10n.profileSeedDemoTile, + loading: _seedingDemo, + onTap: userId == null ? () {} : () => _seedDemo(userId), + enabled: userId != null && !_seedingDemo, + ), ), - child: _NavRow( - icon: Icons.auto_fix_high_outlined, - title: l10n.profileSeedDemoTile, - loading: _seedingDemo, - onTap: userId == null ? () {} : () => _seedDemo(userId), - enabled: userId != null && !_seedingDemo, - ), - ), + ], const SizedBox(height: 12), Text( l10n.profileHint, diff --git a/pubspec.lock b/pubspec.lock index 7484dbe..c64bfe5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -453,6 +453,14 @@ packages: url: "https://pub.dev" source: hosted version: "8.1.0" + graphic: + dependency: "direct main" + description: + name: graphic + sha256: f0028af737f7fdd5fd50c043af85242d72638ae040a820470208bc885a229d04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" graphs: dependency: transitive description: @@ -685,6 +693,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + path_drawing: + dependency: transitive + description: + name: path_drawing + sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 + url: "https://pub.dev" + source: hosted + version: "1.0.1" + path_parsing: + dependency: transitive + description: + name: path_parsing + sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" + url: "https://pub.dev" + source: hosted + version: "1.1.0" path_provider: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 8adb4bb..751724c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: # Charts fl_chart: ^1.2.0 + graphic: ^2.7.0 # AI fallback (DeepSeek) http: ^1.2.2 @@ -70,8 +71,14 @@ flutter: # App launcher icons — regenerate with: # dart run flutter_launcher_icons +# Adaptive (API 26+): flat blue background matching the artwork's own background, +# foreground inset so the cat/coins stay inside the launcher mask's safe zone. +# image_path is the legacy fallback for pre-26 devices. flutter_launcher_icons: android: true ios: false + min_sdk_android: 21 image_path: "assets/icon/app_icon.png" - remove_alpha_ios: true + adaptive_icon_background: "#59C9FD" + adaptive_icon_foreground: "assets/icon/app_icon.png" + adaptive_icon_foreground_inset: 14 diff --git a/test/core/database/migration_v2_test.dart b/test/core/database/migration_v2_test.dart new file mode 100644 index 0000000..b222a75 --- /dev/null +++ b/test/core/database/migration_v2_test.dart @@ -0,0 +1,181 @@ +import 'package:drift/native.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:new_budget/src/core/database/app_database.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/enums.dart'; + +/// Миграция v1 → v2: `account_bindings` → `source_apps.default_account_id` +/// + правила `senderToAccount` (см. `AppDatabase._migrateV1ToV2`). +/// +/// Сценарий: raw-схема v1 + фикстуры связок заливаются в `setup:` (до drift), +/// `PRAGMA user_version = 1` заставляет drift выполнить onUpgrade при +/// открытии. Дальше проверяем результат уже через API v2. + +const _userId = 'u1'; +const _sber = 'ru.sberbankmobile'; +const _tinkoff = 'com.idamob.tinkoff.android'; +const _vtb = 'ru.vtb24.mobilebanking.android'; + +void _createV1Schema(dynamic raw) { + raw.execute(''' +CREATE TABLE source_apps ( + id TEXT NOT NULL PRIMARY KEY, + user_id TEXT NOT NULL, + package_name TEXT NOT NULL, + display_name TEXT, + enabled INTEGER NOT NULL DEFAULT 1, + self_merchant INTEGER NOT NULL DEFAULT 0, + created_at INTEGER NOT NULL DEFAULT (strftime('%s','now')), + UNIQUE (user_id, package_name) +);'''); + raw.execute(''' +CREATE TABLE parse_rules ( + id TEXT NOT NULL PRIMARY KEY, + user_id TEXT NOT NULL, + package_name TEXT, + kind TEXT NOT NULL, + match_mode TEXT NOT NULL DEFAULT 'contains', + pattern TEXT NOT NULL, + priority INTEGER NOT NULL DEFAULT 0, + match_count INTEGER NOT NULL DEFAULT 0, + weight INTEGER NOT NULL DEFAULT 1, + last_match_at INTEGER, + tx_type TEXT, + merchant_canonical TEXT, + category_id TEXT, + account_id TEXT, + enabled INTEGER NOT NULL DEFAULT 1, + created_at INTEGER NOT NULL DEFAULT (strftime('%s','now')) +);'''); + raw.execute(''' +CREATE TABLE account_bindings ( + id TEXT NOT NULL PRIMARY KEY, + user_id TEXT NOT NULL, + package_name TEXT, + bank_key TEXT, + card_last4 TEXT, + phone TEXT, + account_id TEXT NOT NULL, + is_default INTEGER NOT NULL DEFAULT 0, + match_count INTEGER NOT NULL DEFAULT 0, + created_at INTEGER NOT NULL DEFAULT (strftime('%s','now')), + UNIQUE (user_id, package_name, card_last4) +);'''); + + raw.execute( + 'INSERT INTO source_apps (id, user_id, package_name) VALUES ' + "('src-sber', '$_userId', '$_sber'), " + "('src-tinkoff', '$_userId', '$_tinkoff'), " + "('src-vtb', '$_userId', '$_vtb')"); + + // Сбер: default-связка по карте 1234 + вторая карта 5678 → отдельный счёт. + raw.execute( + 'INSERT INTO account_bindings ' + '(id, user_id, package_name, card_last4, account_id, is_default, match_count) VALUES ' + "('b1', '$_userId', '$_sber', '1234', 'acc-1', 1, 3), " + "('b2', '$_userId', '$_sber', '5678', 'acc-2', 0, 7)"); + // Тинькофф: единственная связка без карты и default-флага. + raw.execute( + 'INSERT INTO account_bindings ' + '(id, user_id, package_name, account_id) VALUES ' + "('b3', '$_userId', '$_tinkoff', 'acc-3')"); + // ВТБ: две карточные связки без default — дефолт не выводится, оба правила. + raw.execute( + 'INSERT INTO account_bindings ' + '(id, user_id, package_name, card_last4, account_id) VALUES ' + "('b4', '$_userId', '$_vtb', '1111', 'acc-5'), " + "('b5', '$_userId', '$_vtb', '2222', 'acc-6')"); + // Легаси phone-связка без package_name → глобальное правило. + raw.execute( + 'INSERT INTO account_bindings ' + '(id, user_id, phone, account_id) VALUES ' + "('b6', '$_userId', '+79990001122', 'acc-4')"); + + raw.execute('PRAGMA user_version = 1'); +} + +void main() { + late AppDatabase db; + + setUp(() { + db = AppDatabase.forTesting(NativeDatabase.memory(setup: _createV1Schema)); + }); + + tearDown(() => db.close()); + + test('default-связка (или единственная) → source_apps.default_account_id', + () async { + final apps = await db.select(db.sourceAppsTable).get(); + final byId = {for (final a in apps) a.id: a}; + + expect(byId['src-sber']!.defaultAccountId, 'acc-1', + reason: 'is_default=1 → дефолт приложения'); + expect(byId['src-tinkoff']!.defaultAccountId, 'acc-3', + reason: 'единственная связка → дефолт приложения'); + expect(byId['src-vtb']!.defaultAccountId, isNull, + reason: 'несколько связок без default — дефолт не выводится'); + }); + + test('карточные/phone-связки → правила senderToAccount, избыточные — скип', + () async { + final rules = await db.select(db.parseRulesTable).get(); + expect(rules.every((r) => r.kind == ParseRuleKind.senderToAccount), isTrue); + expect(rules.every((r) => r.matchMode == MatchMode.contains), isTrue); + expect(rules.every((r) => r.enabled), isTrue, + reason: 'SQL-дефолт enabled=1 должен примениться'); + expect(rules.every((r) => r.txType == null), isTrue, + reason: 'tx_type NULL — gate пропускает проверку типа'); + + final byPattern = {for (final r in rules) r.pattern: r}; + expect(byPattern.keys.toSet(), {'5678', '1111', '2222', '+79990001122'}, + reason: '«1234» не мигрирует: счёт совпал с новым дефолтом приложения'); + + expect(byPattern['5678']!.packageName, _sber); + expect(byPattern['5678']!.accountId, 'acc-2'); + expect(byPattern['5678']!.matchCount, 7, + reason: 'match_count переносится из связки'); + + expect(byPattern['1111']!.accountId, 'acc-5'); + expect(byPattern['2222']!.accountId, 'acc-6'); + + expect(byPattern['+79990001122']!.packageName, isNull, + reason: 'phone-связка без package_name → глобальное правило (легаси)'); + expect(byPattern['+79990001122']!.accountId, 'acc-4'); + }); + + test('таблица account_bindings удалена', () async { + final left = await db + .customSelect( + "SELECT name FROM sqlite_master WHERE type = 'table' " + "AND name = 'account_bindings'", + ) + .get(); + expect(left, isEmpty); + }); + + test('свежая БД (onCreate) сразу содержит default_account_id и без bindings', + () async { + final fresh = AppDatabase.forTesting(NativeDatabase.memory()); + addTearDown(fresh.close); + + // Колонка есть → insert с defaultAccountId проходит. + await fresh.usersDao.insertUser( + UsersTableCompanion.insert(id: _userId, name: 'Test'), + ); + await fresh.sourceAppsDao.insert(SourceAppsTableCompanion.insert( + id: 'src-1', + userId: _userId, + packageName: _sber, + )); + await fresh.sourceAppsDao.setDefaultAccount('src-1', 'acc-1'); + final row = await fresh.sourceAppsDao.findById('src-1'); + expect(row!.defaultAccountId, 'acc-1'); + + final bindings = await fresh + .customSelect( + "SELECT name FROM sqlite_master WHERE type = 'table' " + "AND name = 'account_bindings'", + ) + .get(); + expect(bindings, isEmpty); + }); +} diff --git a/test/features/analytics/analytics_screen_test.dart b/test/features/analytics/analytics_screen_test.dart new file mode 100644 index 0000000..c515f58 --- /dev/null +++ b/test/features/analytics/analytics_screen_test.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:new_budget/l10n/app_localizations.dart'; +import 'package:new_budget/src/app/theme/app_theme.dart'; +import 'package:new_budget/src/core/database/converters/enum_converters.dart'; +import 'package:new_budget/src/features/analytics/domain/month_math.dart'; +import 'package:new_budget/src/features/analytics/presentation/screens/analytics_screen.dart'; +import 'package:new_budget/src/features/home/presentation/state/selected_category_filter.dart'; +import 'package:new_budget/src/features/settings/application/settings_controller.dart'; +import 'package:new_budget/src/features/settings/domain/entities/settings.dart'; +import 'package:new_budget/src/features/user/application/active_user_controller.dart'; +import 'package:new_budget/src/features/user/domain/entities/user.dart'; + +// ─── Fakes ─────────────────────────────────────────────────────────────────── + +const _userId = 'test-uid'; + +class FakeActiveUserController extends ActiveUserController { + @override + Future build() async => + User(id: _userId, name: 'Test', createdAt: DateTime(2024)); +} + +class FakeSettingsController extends SettingsController { + FakeSettingsController({required this.habitEnabled}); + final bool habitEnabled; + + @override + Future build(String userId) async => Settings( + userId: _userId, + baseCurrency: 'RUB', + themeMode: AppThemeMode.system, + locale: 'ru', + firstDayOfMonth: 1, + habitTrackingEnabled: habitEnabled, + ); +} + +Widget _buildScreen({required bool habitEnabled}) => ProviderScope( + overrides: [ + activeUserControllerProvider + .overrideWith(() => FakeActiveUserController()), + settingsControllerProvider(_userId) + .overrideWith(() => FakeSettingsController( + habitEnabled: habitEnabled, + )), + ], + child: MaterialApp( + theme: AppTheme.light(), + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + home: const AnalyticsScreen(), + ), + ); + +ProviderContainer _container(WidgetTester tester) => + ProviderScope.containerOf(tester.element(find.byType(AnalyticsScreen))); + +// ─── Tests ─────────────────────────────────────────────────────────────────── + +void main() { + setUpAll(() { + GoogleFonts.config.allowRuntimeFetching = false; + }); + + testWidgets('хабит-карточка видна при включённом трекинге', (tester) async { + await tester.pumpWidget(_buildScreen(habitEnabled: true)); + await tester.pump(); // future-провайдеры разрешаются + await tester.pump(); + + expect(find.text('Habit analysis'), findsOneWidget); + }); + + testWidgets('хабит-карточка скрыта при выключенном трекинге', + (tester) async { + await tester.pumpWidget(_buildScreen(habitEnabled: false)); + await tester.pump(); + await tester.pump(); + + expect(find.text('Habit analysis'), findsNothing); + }); + + testWidgets('шаг месяца в AppBar двигает общий selectedMonthProvider', + (tester) async { + await tester.pumpWidget(_buildScreen(habitEnabled: false)); + await tester.pump(); + await tester.pump(); + + final container = _container(tester); + final initial = container.read(selectedMonthProvider); + + await tester.tap(find.byIcon(Icons.chevron_left)); + await tester.pump(); + expect(container.read(selectedMonthProvider), previousMonth(initial)); + + // На прошлом месяце появляется шаг вперёд — возвращаемся. + await tester.tap(find.byIcon(Icons.chevron_right)); + await tester.pump(); + expect(container.read(selectedMonthProvider), initial); + }); +} diff --git a/test/features/analytics/habit_analysis_screen_test.dart b/test/features/analytics/habit_analysis_screen_test.dart index da9aba1..6f8c6d1 100644 --- a/test/features/analytics/habit_analysis_screen_test.dart +++ b/test/features/analytics/habit_analysis_screen_test.dart @@ -84,7 +84,7 @@ void main() { GoogleFonts.config.allowRuntimeFetching = false; }); - testWidgets('по умолчанию: оба «All» активны, чип «Necessary» виден', + testWidgets('по умолчанию: оба «All» активны, чип «Required» виден', (tester) async { await tester.pumpWidget(_buildScreen()); await tester.pump(); // activeUserControllerProvider разрешается @@ -92,10 +92,10 @@ void main() { // «All» в обеих строках фильтров. expect(find.text('All'), findsNWidgets(2)); // Чип обязательности + пилюля tx1 в списке. - expect(find.text('Necessary'), findsNWidgets(2)); + expect(find.text('Required'), findsNWidgets(2)); }); - testWidgets('выбор «Impulse» скрывает чип «Necessary»', (tester) async { + testWidgets('выбор «Impulse» скрывает чип «Required»', (tester) async { await tester.pumpWidget(_buildScreen()); await tester.pump(); @@ -103,21 +103,21 @@ void main() { // AnimatedSize — доигрываем анимацию. await tester.pumpAndSettle(); - // Чип скрыт, tx1 отфильтрована — «Necessary» нет нигде. - expect(find.text('Necessary'), findsNothing); + // Чип скрыт, tx1 отфильтрована — «Required» нет нигде. + expect(find.text('Required'), findsNothing); // Возврат на «All» импульсивности возвращает чип. await tester.tap(find.text('All').first); await tester.pumpAndSettle(); - expect(find.text('Necessary'), findsNWidgets(2)); + expect(find.text('Required'), findsNWidgets(2)); }); - testWidgets('выбор «Impulse» сбрасывает выбранную «Necessary» (каскад)', + testWidgets('выбор «Impulse» сбрасывает выбранную «Required» (каскад)', (tester) async { await tester.pumpWidget(_buildScreen()); await tester.pump(); - await tester.tap(find.text('Necessary').first); + await tester.tap(find.text('Required').first); await tester.pumpAndSettle(); final container = _container(tester); expect( diff --git a/test/features/analytics/month_math_test.dart b/test/features/analytics/month_math_test.dart new file mode 100644 index 0000000..8c79618 --- /dev/null +++ b/test/features/analytics/month_math_test.dart @@ -0,0 +1,35 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:new_budget/src/features/analytics/domain/month_math.dart'; + +void main() { + group('month_math', () { + test('monthStart / monthEnd — границы как в month_summary', () { + final m = DateTime(2026, 7, 15, 13, 45); + expect(monthStart(m), DateTime(2026, 7)); + expect(monthEnd(m), DateTime(2026, 7, 31, 23, 59, 59, 999)); + }); + + test('monthEnd — декабрь переходит в новый год', () { + expect(monthEnd(DateTime(2025, 12)), DateTime(2025, 12, 31, 23, 59, 59, 999)); + }); + + test('previousMonth / addMonths — переходы через границу года', () { + expect(previousMonth(DateTime(2026, 1)), DateTime(2025, 12)); + expect(addMonths(DateTime(2026, 11), 3), DateTime(2027, 2)); + expect(addMonths(DateTime(2026, 2), -14), DateTime(2024, 12)); + }); + + test('monthKeyOf ↔ monthFromKey — roundtrip, паддинг нулём', () { + expect(monthKeyOf(DateTime(2026, 3)), '2026-03'); + expect(monthFromKey('2026-03'), DateTime(2026, 3)); + expect(monthFromKey(monthKeyOf(DateTime(2024, 12))), DateTime(2024, 12)); + }); + + test('daysInMonth — включая високосный февраль', () { + expect(daysInMonth(DateTime(2026, 2)), 28); + expect(daysInMonth(DateTime(2024, 2)), 29); + expect(daysInMonth(DateTime(2026, 7)), 31); + expect(daysInMonth(DateTime(2026, 6)), 30); + }); + }); +} diff --git a/test/features/home/habit_chips_test.dart b/test/features/home/habit_chips_test.dart index 6c20fee..82fc70a 100644 --- a/test/features/home/habit_chips_test.dart +++ b/test/features/home/habit_chips_test.dart @@ -59,7 +59,7 @@ void main() { impulse: SpendingImpulse.impulsive, ))); - expect(find.text('Necessary'), findsOneWidget); + expect(find.text('Required'), findsOneWidget); expect(find.text('Impulse'), findsOneWidget); expect(find.byIcon(Icons.bolt), findsOneWidget); expect(find.text('not marked'), findsNothing); diff --git a/test/features/home/tx_row_habit_test.dart b/test/features/home/tx_row_habit_test.dart index 2ea470c..eda9cdb 100644 --- a/test/features/home/tx_row_habit_test.dart +++ b/test/features/home/tx_row_habit_test.dart @@ -69,7 +69,7 @@ void main() { ); expect(find.text('комментарий'), findsNothing); - expect(find.text('Necessary'), findsOneWidget); + expect(find.text('Required'), findsOneWidget); }); testWidgets('флаг включён, оценок нет → "not marked" вместо extraInfo', diff --git a/test/features/notification_parsing/application/inbox_controller_test.dart b/test/features/notification_parsing/application/inbox_controller_test.dart index 5e88f2a..62792b0 100644 --- a/test/features/notification_parsing/application/inbox_controller_test.dart +++ b/test/features/notification_parsing/application/inbox_controller_test.dart @@ -3,13 +3,13 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:new_budget/src/core/database/converters/enum_converters.dart'; import 'package:new_budget/src/features/notification_parsing/application/inbox_controller.dart'; import 'package:new_budget/src/features/notification_parsing/application/notification_parsing_providers.dart'; -import 'package:new_budget/src/features/notification_parsing/domain/entities/account_binding.dart'; import 'package:new_budget/src/features/notification_parsing/domain/entities/parse_draft.dart'; import 'package:new_budget/src/features/notification_parsing/domain/entities/parse_rule.dart'; import 'package:new_budget/src/features/notification_parsing/domain/entities/raw_message.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/entities/source_app.dart'; import 'package:new_budget/src/features/notification_parsing/domain/enums.dart'; -import 'package:new_budget/src/features/notification_parsing/domain/repositories/account_bindings_repository.dart'; import 'package:new_budget/src/features/notification_parsing/domain/repositories/parse_rules_repository.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/repositories/source_apps_repository.dart'; import 'package:new_budget/src/features/notification_parsing/domain/repositories/raw_messages_repository.dart'; import 'package:new_budget/src/features/notification_parsing/domain/repositories/rule_candidates_repository.dart'; import 'package:new_budget/src/features/transactions/application/transaction_providers.dart'; @@ -94,6 +94,12 @@ class _FakeRawMessagesRepo implements RawMessagesRepository { final List<(String, String)> linked = []; final List<(String, RawMessageStatus)> statusUpdates = []; final List> afterParse = []; + final List retried = []; + + @override + Future resetForRetry(String id) async { + retried.add(id); + } @override Future linkTransaction(String id, String transactionId) async { @@ -214,40 +220,23 @@ class _FakeRuleCandidatesRepo implements RuleCandidatesRepository { throw UnimplementedError(invocation.memberName.toString()); } -class _FakeAccountBindingsRepo implements AccountBindingsRepository { - AccountBinding? existing; - final List> created = []; +class _FakeSourceAppsRepo implements SourceAppsRepository { + /// Приложение-источник сообщения (null — не добавлено в allowlist). + SourceApp? app; + + final List<(String, String?)> defaultsSet = []; @override - Future findByPackageAndCard( + Future findByPackageName( String userId, String packageName, - String cardLast4, ) async => - existing; + app?.packageName == packageName ? app : null; @override - Future create({ - required String userId, - String? packageName, - String? bankKey, - String? cardLast4, - String? phone, - required String accountId, - }) async { - created.add({ - 'packageName': packageName, - 'cardLast4': cardLast4, - 'accountId': accountId, - }); - return AccountBinding( - id: 'b1', - userId: userId, - packageName: packageName, - cardLast4: cardLast4, - accountId: accountId, - createdAt: _now, - ); + Future setDefaultAccount(String id, String? accountId) async { + defaultsSet.add((id, accountId)); + if (app?.id == id) app = app!.copyWith(defaultAccountId: accountId); } @override @@ -255,12 +244,20 @@ class _FakeAccountBindingsRepo implements AccountBindingsRepository { throw UnimplementedError(invocation.memberName.toString()); } +SourceApp _sourceApp({String? defaultAccountId}) => SourceApp( + id: 'app1', + userId: _userId, + packageName: 'ru.sberbankmobile', + defaultAccountId: defaultAccountId, + createdAt: _now, + ); + void main() { late _FakeTransactionRepo txRepo; late _FakeRawMessagesRepo rawRepo; late _FakeParseRulesRepo rulesRepo; late _FakeRuleCandidatesRepo candidatesRepo; - late _FakeAccountBindingsRepo bindingsRepo; + late _FakeSourceAppsRepo sourceAppsRepo; late ProviderContainer container; setUp(() { @@ -268,14 +265,14 @@ void main() { rawRepo = _FakeRawMessagesRepo(); rulesRepo = _FakeParseRulesRepo(); candidatesRepo = _FakeRuleCandidatesRepo(); - bindingsRepo = _FakeAccountBindingsRepo(); + sourceAppsRepo = _FakeSourceAppsRepo()..app = _sourceApp(); container = ProviderContainer( overrides: [ transactionRepositoryProvider.overrideWithValue(txRepo), rawMessagesRepositoryProvider.overrideWithValue(rawRepo), parseRulesRepositoryProvider.overrideWithValue(rulesRepo), ruleCandidatesRepositoryProvider.overrideWithValue(candidatesRepo), - accountBindingsRepositoryProvider.overrideWithValue(bindingsRepo), + sourceAppsRepositoryProvider.overrideWithValue(sourceAppsRepo), ], ); }); @@ -286,8 +283,9 @@ void main() { container.read(inboxControllerProvider.notifier); group('createRule', () { - test('creates transaction + rule, removes candidate, links, binds', () async { - await controller().createRule( + test('creates transaction + rule, removes candidate, links, learns default', + () async { + final learned = await controller().createRule( userId: _userId, message: _message(), draft: _draft(), @@ -312,41 +310,17 @@ void main() { expect(candidatesRepo.deleted, contains((_userId, 'PYATEROCHKA'))); expect(rawRepo.linked, contains(('msg1', 'tx1'))); - // _maybeBind: no existing binding → creates one (card *3456 → acc1). - expect(bindingsRepo.created, hasLength(1)); - expect(bindingsRepo.created.single['cardLast4'], '3456'); - expect(bindingsRepo.created.single['accountId'], 'acc1'); + // Авто-обучение: дефолта не было → счёт записан, вернулось true. + expect(learned, isTrue); + expect(sourceAppsRepo.defaultsSet, [('app1', 'acc1')]); expect(container.read(inboxControllerProvider).hasValue, isTrue); }); - - test('does not re-create binding when one already exists', () async { - bindingsRepo.existing = AccountBinding( - id: 'old', - userId: _userId, - packageName: 'ru.sberbankmobile', - cardLast4: '3456', - accountId: 'acc1', - createdAt: _now, - ); - - await controller().createRule( - userId: _userId, - message: _message(), - draft: _draft(), - accountId: 'acc1', - categoryId: 'cat1', - merchantCanonical: 'PYATEROCHKA', - pattern: 'PYATEROCHKA', - ); - - expect(bindingsRepo.created, isEmpty); - }); }); group('confirmOnce', () { test('creates transaction without a rule, observes candidate', () async { - await controller().confirmOnce( + final learned = await controller().confirmOnce( userId: _userId, message: _message(), draft: _draft(), @@ -359,6 +333,50 @@ void main() { expect(rawRepo.linked, contains(('msg1', 'tx1'))); expect(candidatesRepo.observed, hasLength(1)); expect(candidatesRepo.observed.single['resolvedValue'], 'cat1'); + expect(learned, isTrue); + }); + }); + + group('авто-обучение дефолтного счёта приложения', () { + test('дефолт уже задан → не перезаписывается, false', () async { + sourceAppsRepo.app = _sourceApp(defaultAccountId: 'acc-old'); + + final learned = await controller().confirmOnce( + userId: _userId, + message: _message(), + draft: _draft(), + accountId: 'acc-new', + ); + + expect(learned, isFalse); + expect(sourceAppsRepo.defaultsSet, isEmpty); + }); + + test('learnAppDefault: false → пропуск обучения', () async { + final learned = await controller().confirmOnce( + userId: _userId, + message: _message(), + draft: _draft(), + accountId: 'acc1', + learnAppDefault: false, + ); + + expect(learned, isFalse); + expect(sourceAppsRepo.defaultsSet, isEmpty); + }); + + test('приложение не в allowlist → пропуск обучения', () async { + sourceAppsRepo.app = null; + + final learned = await controller().confirmOnce( + userId: _userId, + message: _message(), + draft: _draft(), + accountId: 'acc1', + ); + + expect(learned, isFalse); + expect(sourceAppsRepo.defaultsSet, isEmpty); }); }); @@ -382,4 +400,20 @@ void main() { expect(rulesRepo.created, isEmpty); }); }); + + group('retry', () { + test('pendingAi message → resetForRetry (сброс попыток и в очередь)', + () async { + final stuck = _message().copyWith( + status: RawMessageStatus.pendingAi, + parseAttemptCount: 3, + lastParseError: 'network', + ); + + await controller().retry(stuck); + + expect(rawRepo.retried, ['msg1']); + expect(txRepo.created, isEmpty); + }); + }); } diff --git a/test/features/notification_parsing/application/parsing_worker_ai_retry_test.dart b/test/features/notification_parsing/application/parsing_worker_ai_retry_test.dart new file mode 100644 index 0000000..9901f82 --- /dev/null +++ b/test/features/notification_parsing/application/parsing_worker_ai_retry_test.dart @@ -0,0 +1,282 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:drift/native.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:new_budget/src/core/database/app_database.dart'; +import 'package:new_budget/src/core/providers/database_provider.dart'; +import 'package:new_budget/src/features/notification_parsing/application/ai_providers.dart'; +import 'package:new_budget/src/features/notification_parsing/application/notification_parsing_providers.dart'; +import 'package:new_budget/src/features/notification_parsing/application/parsing_settings_controller.dart'; +import 'package:new_budget/src/features/notification_parsing/application/parsing_worker.dart'; +import 'package:new_budget/src/features/notification_parsing/data/deepseek/deepseek_client.dart'; +import 'package:new_budget/src/features/notification_parsing/data/parser/ai_parser.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/entities/raw_message.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/enums.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/repositories/raw_messages_repository.dart'; + +/// Тесты авторетрая `pending_ai` в [ParsingWorker] (§7): таймер с бэкоффом +/// прогоняет застрявшие сообщения через pipeline, попытки НЕ сбрасываются, +/// кэп pipeline (5) переводит хронические сбои в failed. Форма релизного +/// бага: connectivity считает сеть живой, а запросы фактически падают. + +const _userId = 'u1'; +const _bank = 'ru.sberbankmobile'; + +/// Быстрый бэкофф, чтобы тест укладывался в сотни миллисекунд. +const _testBackoff = ( + initial: Duration(milliseconds: 20), + max: Duration(milliseconds: 50), +); + +/// AI-парсер, чей HTTP-клиент падает, пока [failing] возвращает true, +/// и отвечает валидным draft-JSON после. +AiParser _flakyAiParser({ + required bool Function() failing, + void Function()? onCall, +}) { + final mock = MockClient((req) async { + onCall?.call(); + if (failing()) throw http.ClientException('conn refused'); + final content = jsonEncode({ + 'type': 'expense', + 'kind': 'purchase', + 'amount': 1500, + 'currency': 'RUB', + 'merchantRaw': 'LENTA', + }); + return http.Response( + jsonEncode({ + 'choices': [ + { + 'message': {'content': content}, + } + ], + 'usage': {'total_tokens': 42}, + }), + 200, + headers: {'content-type': 'application/json'}, + ); + }); + return AiParser(DeepSeekClient(client: mock, apiKey: 'k')); +} + +Future _seed(AppDatabase db) async { + await db.usersDao.insertUser( + UsersTableCompanion.insert(id: _userId, name: 'Test'), + ); + // Банк в allowlist, чтобы pipeline доходил до AI. + await db.sourceAppsDao.insert(SourceAppsTableCompanion.insert( + id: 'src-1', + userId: _userId, + packageName: _bank, + )); +} + +Future _enableAi(ProviderContainer c) async { + final settings = c.read(parsingSettingsControllerProvider.notifier); + await c.read(parsingSettingsControllerProvider.future); + await settings.setAiConsent(true); +} + +Future _insert(RawMessagesRepository repo) => repo.insertIncoming( + userId: _userId, + packageName: _bank, + body: 'Payment of 1500 RUB at LENTA', + receivedAt: DateTime(2026, 5, 31, 12), + ); + +/// Ждёт, пока сообщение [id] не удовлетворит [predicate]. +Future _waitFor( + RawMessagesRepository repo, + String id, + bool Function(RawMessage) predicate, { + Duration timeout = const Duration(seconds: 10), +}) async { + final completer = Completer(); + late final StreamSubscription> sub; + sub = repo.watchAll(_userId).listen((list) { + for (final m in list) { + if (m.id == id && predicate(m)) { + if (!completer.isCompleted) completer.complete(m); + return; + } + } + }); + try { + return await completer.future.timeout(timeout); + } finally { + await sub.cancel(); + } +} + +Future _current(RawMessagesRepository repo, String id) async { + final list = await repo.watchAll(_userId).first; + return list.firstWhere((m) => m.id == id); +} + +/// Активный слушатель воркера — эквивалент `ref.watch` в AppScaffold. +/// `container.read` недостаточно: у паузнутого воркера внутренние `ref.listen` +/// (isOnline) не активируют autoDispose-зависимости (pause-семантика +/// Riverpod 3), и онлайн-статус навсегда остаётся null «как бы онлайн». +void _activateWorker(ProviderContainer c) { + c.listen(parsingWorkerProvider(_userId), (_, _) {}); +} + +void main() { + late AppDatabase db; + late ProviderContainer container; + late RawMessagesRepository repo; + + tearDown(() async { + container.dispose(); + await db.close(); + }); + + test( + 'сеть «живая», но запросы падают → таймер ретраит без сброса попыток ' + '→ после 5 попыток failed «AI retry limit reached»', () async { + var aiCalls = 0; + db = AppDatabase.forTesting(NativeDatabase.memory()); + await _seed(db); + container = ProviderContainer(overrides: [ + appDatabaseProvider.overrideWithValue(db), + isOnlineProvider.overrideWith((ref) => Stream.value(true)), + aiRetryBackoffProvider.overrideWithValue(_testBackoff), + aiParserProvider.overrideWith((ref) async => _flakyAiParser( + failing: () => true, + onCall: () => aiCalls++, + )), + ]); + repo = container.read(rawMessagesRepositoryProvider); + await _enableAi(container); + _activateWorker(container); + + final inserted = await _insert(repo); + + final msg = await _waitFor( + repo, + inserted.id, + (m) => m.status == RawMessageStatus.failed, + ); + expect(msg.lastParseError, 'AI retry limit reached'); + expect(msg.parseAttemptCount, 5, + reason: 'авторетрай не должен сбрасывать счётчик попыток'); + expect(aiCalls, 5); + }); + + test('реальный офлайн → pending_ai без расхода попыток, таймер не ретраит', + () async { + var aiCalls = 0; + db = AppDatabase.forTesting(NativeDatabase.memory()); + await _seed(db); + container = ProviderContainer(overrides: [ + appDatabaseProvider.overrideWithValue(db), + isOnlineProvider.overrideWith((ref) => Stream.value(false)), + aiRetryBackoffProvider.overrideWithValue(_testBackoff), + aiParserProvider.overrideWith((ref) async => _flakyAiParser( + failing: () => true, + onCall: () => aiCalls++, + )), + ]); + repo = container.read(rawMessagesRepositoryProvider); + await _enableAi(container); + _activateWorker(container); + // Даём эмиссии `false` дойти до isOnlineProvider до вставки сообщения. + await Future.delayed(const Duration(milliseconds: 50)); + + final inserted = await _insert(repo); + + await _waitFor( + repo, + inserted.id, + (m) => m.status == RawMessageStatus.pendingAi, + ); + // Несколько периодов бэкоффа: таймер обязан скипать на явном офлайне. + await Future.delayed(const Duration(milliseconds: 300)); + + final msg = await _current(repo, inserted.id); + expect(msg.status, RawMessageStatus.pendingAi); + expect(msg.lastParseError, 'offline'); + expect(msg.parseAttemptCount, 0); + expect(aiCalls, 0); + }); + + test('восстановление сети (edge-триггер) → застрявшее сообщение доходит до inbox', + () async { + var failing = true; + final online = StreamController(); + addTearDown(online.close); + db = AppDatabase.forTesting(NativeDatabase.memory()); + await _seed(db); + container = ProviderContainer(overrides: [ + appDatabaseProvider.overrideWithValue(db), + isOnlineProvider.overrideWith((ref) => online.stream), + aiRetryBackoffProvider.overrideWithValue(_testBackoff), + aiParserProvider.overrideWith( + (ref) async => _flakyAiParser(failing: () => failing)), + ]); + repo = container.read(rawMessagesRepositoryProvider); + await _enableAi(container); + _activateWorker(container); + + online.add(false); + // Даём эмиссии дойти до isOnlineProvider до вставки сообщения. + await Future.delayed(const Duration(milliseconds: 50)); + + final inserted = await _insert(repo); + await _waitFor( + repo, + inserted.id, + (m) => m.status == RawMessageStatus.pendingAi, + ); + + // Сеть вернулась, запросы снова проходят. + failing = false; + online.add(true); + + final msg = await _waitFor( + repo, + inserted.id, + (m) => m.status == RawMessageStatus.inbox, + ); + // Правила для мерчанта нет → gate не пропускает, сообщение ждёт в Inbox. + expect(msg.status, RawMessageStatus.inbox); + }); + + test('фича выключена → таймер не трогает pending_ai', () async { + var aiCalls = 0; + db = AppDatabase.forTesting(NativeDatabase.memory()); + await _seed(db); + container = ProviderContainer(overrides: [ + appDatabaseProvider.overrideWithValue(db), + isOnlineProvider.overrideWith((ref) => Stream.value(true)), + aiRetryBackoffProvider.overrideWithValue(_testBackoff), + aiParserProvider.overrideWith((ref) async => _flakyAiParser( + failing: () => true, + onCall: () => aiCalls++, + )), + ]); + repo = container.read(rawMessagesRepositoryProvider); + await _enableAi(container); + await container + .read(parsingSettingsControllerProvider.notifier) + .setEnabled(false); + + // Паркуем сообщение в pending_ai ДО активации воркера (при выключенной + // фиче pipeline не обрабатывает pending, поэтому статус ставим напрямую). + final inserted = await _insert(repo); + await repo.updateStatus(inserted.id, RawMessageStatus.pendingAi); + + _activateWorker(container); + await Future.delayed(const Duration(milliseconds: 300)); + + final msg = await _current(repo, inserted.id); + expect(msg.status, RawMessageStatus.pendingAi); + expect(msg.parseAttemptCount, 0); + expect(aiCalls, 0); + }); +} diff --git a/test/features/notification_parsing/application/parsing_worker_allowlist_test.dart b/test/features/notification_parsing/application/parsing_worker_allowlist_test.dart index f8324a3..3f5be75 100644 --- a/test/features/notification_parsing/application/parsing_worker_allowlist_test.dart +++ b/test/features/notification_parsing/application/parsing_worker_allowlist_test.dart @@ -198,8 +198,8 @@ void main() { }); test( - 'включённый банк без карты + глобальный дефолт + правило категории ' - '→ авто-применение на дефолтный счёт', () async { + 'включённый банк + дефолтный счёт приложения + правило категории ' + '→ авто-применение на счёт приложения', () async { db = AppDatabase.forTesting(NativeDatabase.memory()); await _seed(db); container = ProviderContainer(overrides: [ @@ -211,16 +211,15 @@ void main() { repo = container.read(rawMessagesRepositoryProvider); await enableAi(container); - // Allowlist: банк включён. + // Allowlist: банк включён, дефолтный счёт приложения задан (trusted). await db.sourceAppsDao.insert(SourceAppsTableCompanion.insert( id: 'src-1', userId: _userId, packageName: _bank, )); - // Глобальный дефолтный счёт. await container - .read(accountRepositoryProvider) - .setDefault(_accountId, _userId); + .read(sourceAppsRepositoryProvider) + .setDefaultAccount('src-1', _accountId); // Категория + правило merchant→category на «LENTA». await db.categoriesDao.insertCategory(CategoriesTableCompanion.insert( id: 'cat-1', @@ -237,7 +236,7 @@ void main() { categoryId: 'cat-1', ); // Gate-чек-лист: правило есть, сумма 1500 находится в теле, валюта RUB, - // тип совпадает с правилом, счёт — глобальный дефолт (trusted). + // тип совпадает с правилом, счёт — дефолт приложения (trusted). _activateWorker(container); @@ -252,13 +251,66 @@ void main() { expect(msg.status, RawMessageStatus.applied, reason: 'lastParseError=${msg.lastParseError}'); - // Создалась транзакция на дефолтном счёте. + // Создалась транзакция на дефолтном счёте приложения. final txns = await db.select(db.transactionsTable).get(); expect(txns, hasLength(1)); expect(txns.first.accountId, _accountId); expect(txns.first.categoryId, 'cat-1'); }); + test( + 'только глобальный дефолт (без дефолта приложения) → Inbox с префиллом, ' + 'НЕ авто-применение (смена поведения)', () async { + db = AppDatabase.forTesting(NativeDatabase.memory()); + await _seed(db); + container = ProviderContainer(overrides: [ + appDatabaseProvider.overrideWithValue(db), + isOnlineProvider.overrideWith((ref) => Stream.value(true)), + aiParserProvider.overrideWith((ref) async => + _fakeAiParser(merchantRaw: 'LENTA', amount: 1500)), + ]); + repo = container.read(rawMessagesRepositoryProvider); + await enableAi(container); + + await db.sourceAppsDao.insert(SourceAppsTableCompanion.insert( + id: 'src-1', + userId: _userId, + packageName: _bank, + )); + // Глобальный дефолтный счёт есть, дефолт приложения — нет. + await container + .read(accountRepositoryProvider) + .setDefault(_accountId, _userId); + await db.categoriesDao.insertCategory(CategoriesTableCompanion.insert( + id: 'cat-1', + userId: _userId, + name: 'Продукты', + )); + await container.read(parseRulesRepositoryProvider).create( + userId: _userId, + packageName: _bank, + kind: ParseRuleKind.merchantToCategory, + matchMode: MatchMode.contains, + pattern: 'LENTA', + txType: TransactionType.expense, + categoryId: 'cat-1', + ); + + _activateWorker(container); + + final inserted = await repo.insertIncoming( + userId: _userId, + packageName: _bank, + body: 'Payment of 1500 RUB at LENTA', + receivedAt: DateTime(2026, 5, 31, 12), + ); + + final msg = await _waitTerminal(repo, inserted.id); + expect(msg.status, RawMessageStatus.inbox, + reason: 'глобальный дефолт больше не trusted — нужен первый Confirm'); + expect(await db.select(db.transactionsTable).get(), isEmpty); + }); + test('allowlist обновляется без перезапуска: добавили банк → парсится', () async { db = AppDatabase.forTesting(NativeDatabase.memory()); diff --git a/test/features/notification_parsing/application/transfer_pairing_pipeline_test.dart b/test/features/notification_parsing/application/transfer_pairing_pipeline_test.dart index 14c16a6..cfadaf9 100644 --- a/test/features/notification_parsing/application/transfer_pairing_pipeline_test.dart +++ b/test/features/notification_parsing/application/transfer_pairing_pipeline_test.dart @@ -141,12 +141,11 @@ void main() { final settings = container.read(parsingSettingsControllerProvider.notifier); await container.read(parsingSettingsControllerProvider.future); await settings.setAiConsent(true); - // Однозначные привязки: bankA → accA, bankB → accB (resolver #3, trusted). - final bindings = container.read(accountBindingsRepositoryProvider); - await bindings.create( - userId: _userId, packageName: _bankA, accountId: _accA); - await bindings.create( - userId: _userId, packageName: _bankB, accountId: _accB); + // Дефолтные счета приложений: bankA → accA, bankB → accB (resolver #2, + // trusted). + final sourceApps = container.read(sourceAppsRepositoryProvider); + await sourceApps.setDefaultAccount('src-a', _accA); + await sourceApps.setDefaultAccount('src-b', _accB); } tearDown(() async { diff --git a/test/features/notification_parsing/data/raw_messages_inbox_visibility_test.dart b/test/features/notification_parsing/data/raw_messages_inbox_visibility_test.dart new file mode 100644 index 0000000..2ad03ef --- /dev/null +++ b/test/features/notification_parsing/data/raw_messages_inbox_visibility_test.dart @@ -0,0 +1,72 @@ +import 'package:drift/native.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:new_budget/src/core/database/app_database.dart'; +import 'package:new_budget/src/features/notification_parsing/data/drift/daos/raw_messages_dao.dart'; +import 'package:new_budget/src/features/notification_parsing/data/repositories/raw_messages_repository_impl.dart'; +import 'package:new_budget/src/features/notification_parsing/domain/enums.dart'; + +/// Видимость статусов в Inbox: `watchInbox` и `watchInboxCount` должны +/// показывать одинаковый набор статусов (в count — сырая SQL-строка, её легко +/// рассинхронизировать с запросом списка). Отдельно охраняем `pendingAi`: +/// застрявшие «ждёт сети» сообщения обязаны быть видны пользователю. + +const _userId = 'u1'; +const _bank = 'ru.sberbankmobile'; + +void main() { + late AppDatabase db; + late RawMessagesRepositoryImpl repo; + + setUp(() async { + db = AppDatabase.forTesting(NativeDatabase.memory()); + await db.usersDao.insertUser( + UsersTableCompanion.insert(id: _userId, name: 'Test'), + ); + repo = RawMessagesRepositoryImpl(RawMessagesDao(db)); + }); + + tearDown(() => db.close()); + + Future insertWithStatus(RawMessageStatus status, DateTime t) async { + final m = await repo.insertIncoming( + userId: _userId, + packageName: _bank, + body: 'Payment at $t', + receivedAt: t, + ); + await repo.updateStatus(m.id, status); + return m.id; + } + + test('pendingAi виден и в watchInbox, и в watchInboxCount', () async { + final id = await insertWithStatus( + RawMessageStatus.pendingAi, + DateTime(2026, 6, 10, 12), + ); + + final inbox = await repo.watchInbox(_userId).first; + expect(inbox.map((m) => m.id), contains(id)); + expect(await repo.watchInboxCount(_userId).first, 1); + }); + + test('watchInbox и watchInboxCount согласованы по всем статусам', () async { + var minute = 0; + for (final status in RawMessageStatus.values) { + await insertWithStatus(status, DateTime(2026, 6, 10, 12, minute++)); + } + + final inbox = await repo.watchInbox(_userId).first; + final count = await repo.watchInboxCount(_userId).first; + expect(count, inbox.length, + reason: 'сырая SQL-строка count разошлась с запросом watchInbox'); + expect( + inbox.map((m) => m.status).toSet(), + { + RawMessageStatus.inbox, + RawMessageStatus.parsedPartial, + RawMessageStatus.failed, + RawMessageStatus.pendingAi, + }, + ); + }); +} diff --git a/test/features/notification_parsing/parser/account_resolver_test.dart b/test/features/notification_parsing/parser/account_resolver_test.dart index c6dcfdc..f3eb144 100644 --- a/test/features/notification_parsing/parser/account_resolver_test.dart +++ b/test/features/notification_parsing/parser/account_resolver_test.dart @@ -1,136 +1,43 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:new_budget/src/features/notification_parsing/data/parser/account_resolver.dart'; -import 'package:new_budget/src/features/notification_parsing/domain/entities/account_binding.dart'; import 'package:new_budget/src/features/notification_parsing/domain/entities/parse_rule.dart'; import 'package:new_budget/src/features/notification_parsing/domain/enums.dart'; -import 'package:new_budget/src/features/notification_parsing/domain/repositories/account_bindings_repository.dart'; const _userId = 'u1'; -const _pkg = 'ru.sberbankmobile'; final _now = DateTime(2026, 1, 1); -AccountBinding _binding({ - required String id, - required String accountId, - String? cardLast4, - String? phone, - bool isDefault = false, -}) => - AccountBinding( - id: id, - userId: _userId, - packageName: _pkg, - cardLast4: cardLast4, - phone: phone, - accountId: accountId, - isDefault: isDefault, - createdAt: _now, - ); - -ParseRule _senderRule(String pattern, String accountId) => ParseRule( - id: 'sr', +ParseRule _senderRule(String pattern, String accountId, {bool enabled = true}) => + ParseRule( + id: 'sr-$pattern', userId: _userId, kind: ParseRuleKind.senderToAccount, matchMode: MatchMode.contains, pattern: pattern, accountId: accountId, + enabled: enabled, createdAt: _now, ); -/// Конфигурируемый фейк: возвращает заданные привязки из in-memory списка. -class _FakeBindingsRepo implements AccountBindingsRepository { - _FakeBindingsRepo(this.bindings); - final List bindings; - - @override - Future findByPackageAndCard( - String userId, - String packageName, - String cardLast4, - ) async => - bindings - .where((b) => - b.packageName == packageName && b.cardLast4 == cardLast4) - .firstOrNull; - - @override - Future findByPhone(String userId, String phone) async => - bindings.where((b) => b.phone == phone).firstOrNull; - - @override - Future> findByPackageName( - String userId, - String packageName, - ) async => - bindings.where((b) => b.packageName == packageName).toList(); - - @override - Future findDefaultByPackageName( - String userId, - String packageName, - ) async => - bindings - .where((b) => b.packageName == packageName && b.isDefault) - .firstOrNull; - - @override - dynamic noSuchMethod(Invocation invocation) => - throw UnimplementedError(invocation.memberName.toString()); -} - -Future _resolve( - List bindings, { - String? cardLast4, - String? phone, +AccountResolution _resolve({ List senderRules = const [], + String? appDefaultAccountId, String? globalDefaultAccountId, String body = 'Покупка 1240 ₽ Карта *3456 PYATEROCHKA', -}) { - final resolver = AccountResolver(_FakeBindingsRepo(bindings)); - return resolver.resolve( - userId: _userId, - packageName: _pkg, - body: body, - cardLast4: cardLast4, - phone: phone, - senderRules: senderRules, - globalDefaultAccountId: globalDefaultAccountId, - ); -} +}) => + resolveAccount( + body: body, + senderRules: senderRules, + appDefaultAccountId: appDefaultAccountId, + globalDefaultAccountId: globalDefaultAccountId, + ); void main() { - group('AccountResolver.resolve (table B)', () { - test('#1 binding by package + card → 100, trusted', () async { - final r = await _resolve( - [_binding(id: 'b', accountId: 'acc-card', cardLast4: '3456')], - cardLast4: '3456', - ); - expect(r.accountId, 'acc-card'); - expect(r.score, 100); - expect(r.trusted, isTrue); - expect(r.source, AccountSource.bindingCard); - }); - - test('#1 binding by phone → 100, trusted', () async { - final r = await _resolve( - [_binding(id: 'b', accountId: 'acc-phone', phone: '+79990001122')], - phone: '+79990001122', - ); - expect(r.accountId, 'acc-phone'); - expect(r.score, 100); - expect(r.trusted, isTrue); - expect(r.source, AccountSource.bindingPhone); - }); - - test('#2 senderToAccount rule → 90, trusted', () async { - // Несколько привязок без default, чтобы single/default не перехватили, - // но правило отправителя имеет приоритет над ними. - final r = await _resolve( - [ - _binding(id: 'b1', accountId: 'a1'), - _binding(id: 'b2', accountId: 'a2'), - ], - senderRules: [_senderRule('PYATEROCHKA', 'acc-rule')], + group('resolveAccount (лестница §B)', () { + test('#1 senderToAccount rule → 90, trusted; бьёт оба дефолта', () { + final r = _resolve( + senderRules: [_senderRule('*3456', 'acc-rule')], + appDefaultAccountId: 'acc-app', + globalDefaultAccountId: 'acc-global', ); expect(r.accountId, 'acc-rule'); expect(r.score, 90); @@ -138,46 +45,39 @@ void main() { expect(r.source, AccountSource.senderRule); }); - test('#3 single binding by package → 75, trusted', () async { - final r = await _resolve([_binding(id: 'b', accountId: 'acc-single')]); - expect(r.accountId, 'acc-single'); - expect(r.score, 75); - expect(r.trusted, isTrue); - expect(r.source, AccountSource.singleBinding); + test('#1 несовпавшее/выключенное правило пропускается', () { + final r = _resolve( + senderRules: [ + _senderRule('НЕ СОВПАДЁТ', 'acc-miss'), + _senderRule('*3456', 'acc-off', enabled: false), + ], + appDefaultAccountId: 'acc-app', + ); + expect(r.accountId, 'acc-app'); + expect(r.source, AccountSource.appDefault); }); - test('#4 per-app default binding → 70, trusted', () async { - final r = await _resolve([ - _binding(id: 'b1', accountId: 'a1'), - _binding(id: 'b2', accountId: 'acc-default', isDefault: true), - ]); - expect(r.accountId, 'acc-default'); - expect(r.score, 70); + test('#2 дефолт приложения → 75, trusted', () { + final r = _resolve( + appDefaultAccountId: 'acc-app', + globalDefaultAccountId: 'acc-global', + ); + expect(r.accountId, 'acc-app'); + expect(r.score, 75); expect(r.trusted, isTrue); expect(r.source, AccountSource.appDefault); }); - test('#5 multiple bindings, no default → 45, NOT trusted', () async { - final r = await _resolve([ - _binding(id: 'b1', accountId: 'a1'), - _binding(id: 'b2', accountId: 'a2'), - ]); - expect(r.accountId, 'a1'); - expect(r.score, 45); - expect(r.trusted, isFalse); - expect(r.source, AccountSource.ambiguous); - }); - - test('#6 global default account → 40, trusted', () async { - final r = await _resolve(const [], globalDefaultAccountId: 'acc-global'); + test('#3 глобальный дефолт → 40, NOT trusted (смена поведения)', () { + final r = _resolve(globalDefaultAccountId: 'acc-global'); expect(r.accountId, 'acc-global'); expect(r.score, 40); - expect(r.trusted, isTrue); + expect(r.trusted, isFalse); expect(r.source, AccountSource.globalDefault); }); - test('#7 nothing → null, 15, NOT trusted', () async { - final r = await _resolve(const []); + test('#4 ничего → null, 15, NOT trusted', () { + final r = _resolve(); expect(r.accountId, isNull); expect(r.score, 15); expect(r.trusted, isFalse); diff --git a/test/features/notification_parsing/parser/decision_gate_test.dart b/test/features/notification_parsing/parser/decision_gate_test.dart index 91f73b7..87ecd24 100644 --- a/test/features/notification_parsing/parser/decision_gate_test.dart +++ b/test/features/notification_parsing/parser/decision_gate_test.dart @@ -49,16 +49,16 @@ ParseDraft _draft({ const _trusted = AccountResolution( accountId: 'a1', - score: 100, + score: 90, trusted: true, - source: AccountSource.bindingCard, + source: AccountSource.senderRule, ); const _untrusted = AccountResolution( accountId: 'a1', - score: 45, + score: 40, trusted: false, - source: AccountSource.ambiguous, + source: AccountSource.globalDefault, ); void main() { @@ -166,7 +166,7 @@ void main() { ); }); - test('untrusted account (ambiguous multi-binding) → inbox', () { + test('untrusted account (global default) → inbox', () { final r = decide( autoApplyEnabled: true, merchantRule: _rule(), diff --git a/test/features/notification_parsing/presentation/inbox_card_test.dart b/test/features/notification_parsing/presentation/inbox_card_test.dart index 8b650c2..5a2acbb 100644 --- a/test/features/notification_parsing/presentation/inbox_card_test.dart +++ b/test/features/notification_parsing/presentation/inbox_card_test.dart @@ -10,6 +10,7 @@ import 'package:new_budget/src/core/database/converters/enum_converters.dart'; import 'package:new_budget/src/features/accounts/application/accounts_controller.dart'; import 'package:new_budget/src/features/accounts/domain/entities/account.dart'; import 'package:new_budget/src/features/categories/domain/entities/category.dart'; +import 'package:new_budget/src/features/notification_parsing/application/ai_providers.dart'; import 'package:new_budget/src/features/notification_parsing/application/inbox_controller.dart'; import 'package:new_budget/src/features/notification_parsing/data/parser/draft_codec.dart'; import 'package:new_budget/src/features/notification_parsing/domain/entities/parse_draft.dart'; @@ -25,6 +26,7 @@ class FakeInboxController extends InboxController { int createRuleCalls = 0; int confirmOnceCalls = 0; int ignoreCalls = 0; + int retryCalls = 0; String? lastCreateRuleCategory; String? lastCreateRuleAccount; String? lastConfirmCategory; @@ -34,8 +36,12 @@ class FakeInboxController extends InboxController { @override AsyncValue build() => const AsyncData(null); + /// Что возвращать из createRule/confirmOnce: true = «дефолт приложения + /// только что выучен» → карточка показывает SnackBar. + bool learnResult = false; + @override - Future createRule({ + Future createRule({ required String userId, required RawMessage message, required ParseDraft draft, @@ -44,25 +50,27 @@ class FakeInboxController extends InboxController { required String merchantCanonical, required String pattern, MatchMode matchMode = MatchMode.contains, - bool bindAccount = true, + bool learnAppDefault = true, }) async { createRuleCalls++; lastCreateRuleCategory = categoryId; lastCreateRuleAccount = accountId; + return learnResult; } @override - Future confirmOnce({ + Future confirmOnce({ required String userId, required RawMessage message, required ParseDraft draft, required String accountId, String? categoryId, - bool bindAccount = true, + bool learnAppDefault = true, }) async { confirmOnceCalls++; lastConfirmCategory = categoryId; lastConfirmAccount = accountId; + return learnResult; } @override @@ -74,8 +82,28 @@ class FakeInboxController extends InboxController { Future ignore(RawMessage message) async { ignoreCalls++; } + + @override + Future retry(RawMessage message) async { + retryCalls++; + } } +/// Сообщение, застрявшее в «ждёт сети» (pendingAi): draftJson ещё нет. +RawMessage _pendingAiMessage({int attempts = 0, String? lastParseError}) => + RawMessage( + id: 'msg3', + userId: 'u1', + packageName: 'ru.sberbankmobile', + body: 'Покупка 1240 ₽ Карта *3456 PYATEROCHKA', + receivedAt: _now, + dedupHash: 'h3', + status: RawMessageStatus.pendingAi, + parseAttemptCount: attempts, + lastParseError: lastParseError, + createdAt: _now, + ); + RawMessage _recognizedMessage() { final draft = ParseDraft( rawMessageId: 'msg1', @@ -232,6 +260,37 @@ void main() { expect(fake.createRuleCalls, 0); }); + testWidgets('confirm показывает SnackBar, когда контроллер выучил дефолт', + (tester) async { + final l10n = await AppLocalizations.delegate.load(const Locale('ru')); + fake.learnResult = true; + await tester.pumpWidget(_host(fake, _recognizedMessage())); + await tester.pump(); + + await tester.tap(find.byIcon(Icons.check)); + await tester.pump(); + + expect( + find.descendant( + of: find.byType(SnackBar), + matching: find.text(l10n.inboxAppDefaultSet), + ), + findsOneWidget, + ); + }); + + testWidgets('confirm без обучения дефолта — SnackBar не показывается', + (tester) async { + final l10n = await AppLocalizations.delegate.load(const Locale('ru')); + await tester.pumpWidget(_host(fake, _recognizedMessage())); + await tester.pump(); + + await tester.tap(find.byIcon(Icons.check)); + await tester.pump(); + + expect(find.text(l10n.inboxAppDefaultSet), findsNothing); + }); + testWidgets('tap ignore calls controller', (tester) async { await tester.pumpWidget(_host(fake, _recognizedMessage())); await tester.pump(); @@ -494,4 +553,42 @@ void main() { expect(find.text(l10n.inboxUnrecognized), findsOneWidget); expect(find.text(l10n.inboxAddManually), findsOneWidget); }); + + testWidgets('pendingAi offline: причина «нет сети», ретрай зовёт контроллер', + (tester) async { + final l10n = await AppLocalizations.delegate.load(const Locale('ru')); + await tester.pumpWidget(_host( + fake, + _pendingAiMessage(lastParseError: 'offline'), + extraOverrides: [ + // connectivity_plus не работает под flutter test — оверрайдим явно. + isOnlineProvider.overrideWith((ref) => Stream.value(false)), + ], + )); + await tester.pump(); + + expect(find.text(l10n.inboxWaitingNetworkTitle), findsOneWidget); + expect(find.text(l10n.inboxStuckOffline), findsOneWidget); + + await tester.tap(find.byIcon(Icons.refresh)); + await tester.pump(); + expect(fake.retryCalls, 1); + }); + + testWidgets('pendingAi при живой сети: причина «запрос не прошёл» + попытки', + (tester) async { + final l10n = await AppLocalizations.delegate.load(const Locale('ru')); + await tester.pumpWidget(_host( + fake, + _pendingAiMessage(attempts: 2, lastParseError: 'network'), + extraOverrides: [ + isOnlineProvider.overrideWith((ref) => Stream.value(true)), + ], + )); + await tester.pump(); + + expect(find.text(l10n.inboxWaitingNetworkTitle), findsOneWidget); + expect(find.text(l10n.inboxStuckNetwork), findsOneWidget); + expect(find.text(l10n.parsingDetailAttempt(2, 5)), findsOneWidget); + }); }