~/prastora.dev
прастора · распрацоўкі

Нататка18 красавіка 2024 г.

Нататка ад 18 красавіка 2024 г.

AL
AlroniksCreator

Разбіралі баг з недахопам грошай на балансе аднаго з карыстальнікаў. Каб упэўніцца, што ўсё добра ў іншых, давялося шукаць нетрывіяльны спосаб праверыць астатнія рахункі.

Архітэктура: у карыстальніка ёсць рахункі ў розных валютах і асобна ёсць спіс транзакцый па кожным з рахункаў. Транзакцыі зроблены метадам падвойнага бухгалтарскага запісу, таму кожны рахунак мае ўваходныя і выходныя транзакцыі. Кожная транзакцыя захоўвае так сама і значэнне канчатковага балансу на той момант, калі яна была створана.

Запыт 1 правярае, што баланс на рахунку адпавядае суме ўсіх транзакцый па гэтым рахунку, і выводзіць тыя рахункі, дзе ёсць разыходжанні. Калі нічога не вярнуў — значыць усё добра.

Запыт 2 разлічвае нарастаючы вынік для кожнай транзакцыі ў межах аднаго рахунка і параўноўвае з фактычным значэннем балансу, якое захавана ў транзакцыі. Гэта дазваляе знайсці канкрэтную транзакцыю, пасля якой паўстала разыходжанне.

Такі падыход дапамагае хутка лакалізаваць праблему ў дадзеных, не перабіраючы транзакцыі рукамі.