From 95429cfa86bfc57b1d41a15a689695a1808dd36a Mon Sep 17 00:00:00 2001 From: ankio Date: Wed, 18 Dec 2024 11:58:47 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20(rule):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8C=97=E4=BA=AC=E9=93=B6=E8=A1=8C=E7=9F=AD=E4=BF=A1=E6=94=AF?= =?UTF-8?q?=E5=87=BA=E8=A7=A3=E6=9E=90=E8=A7=84=E5=88=99=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=B5=8B=E8=AF=95=20=20#473?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增北京银行短信支出解析规则,支持解析账户支付信息并生成对应账单对象。包含以下内容: - 正则表达式匹配短信内容,提取账户号、日期、支付方式、金额、余额及对方户名等信息。 - 根据解析结果生成账单对象,设置支出类型、支付渠道、商户名称等属性。 - 添加单元测试,验证解析逻辑的正确性。 --- .../main.js" | 40 +++++++++++++++++++ .../main.test.js" | 21 ++++++++++ ...6\350\241\214\346\224\257\345\207\272.txt" | 5 +++ 3 files changed, 66 insertions(+) create mode 100644 "src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.js" create mode 100644 "src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.test.js" create mode 100644 "src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/tests/\345\214\227\344\272\254\351\223\266\350\241\214\346\224\257\345\207\272.txt" diff --git "a/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.js" "b/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.js" new file mode 100644 index 0000000..a9b589f --- /dev/null +++ "b/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.js" @@ -0,0 +1,40 @@ +import { BillType, formatDate, RuleObject, splitSms, toFloat } from 'common/index.js'; + +let rules = [ + { + // 您账户0561于11月6日13:03通过财付通支付1.00元。活期余额13773.30元。对方户名:微信红包。 + 'regex': + /您账户(\d{4})于(.*?)通过(.*?)支付(.*?)元。活期余额(.*?)元。对方户名:(.*?)。/, + 'match': (match,t) => { + let [, number, date, shopItem, money,,shopName ] = match; + let obj = new RuleObject(); + + obj.money = toFloat(money); + + let type = BillType.Expend; + let typeName = "支出"; + obj.channel = `北京银行[${typeName}]`; + obj.shopItem = shopItem; + obj.time = t; + obj.shopName = shopName; + + obj.type = type; + + obj.accountNameFrom = `北京银行(${number})`; + return obj; + } + }, +]; + +export function get (data) { + let { sender, bankName, text, t } = splitSms(data); + if (bankName !== '北京银行') { + return null; + } + for (let rule of rules) { + const match = text.match(rule.regex); + if (match) { + return rule.match(match,t); + } + } +} diff --git "a/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.test.js" "b/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.test.js" new file mode 100644 index 0000000..18daaf6 --- /dev/null +++ "b/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/main.test.js" @@ -0,0 +1,21 @@ +const { get } = require('./main'); +const { testAnkio, testAnkioInit } = require('../../../../tests/TestUtils'); +const { formatDate } = require('common/Time.js'); +testAnkioInit(get, __dirname, 'com.android.phone'); +test('北京银行支出', () => + testAnkio('北京银行支出', [ + { + "type": "Expend", + "money": 1, + "fee": 0, + "shopName": '微信红包', + "shopItem": '财付通', + "accountNameFrom": '北京银行(0561)', + "accountNameTo": '', + "currency": 'CNY', + "time": 1730869418140, + "channel": '北京银行[支出]', + }, + ])); + + diff --git "a/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/tests/\345\214\227\344\272\254\351\223\266\350\241\214\346\224\257\345\207\272.txt" "b/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/tests/\345\214\227\344\272\254\351\223\266\350\241\214\346\224\257\345\207\272.txt" new file mode 100644 index 0000000..8d6251e --- /dev/null +++ "b/src/rule/com.android.phone/app/\347\237\255\344\277\241\345\214\227\344\272\254\351\223\266\350\241\214/tests/\345\214\227\344\272\254\351\223\266\350\241\214\346\224\257\345\207\272.txt" @@ -0,0 +1,5 @@ +{ +"sender": "95526", +"body": "【北京银行】您账户0561于11月6日13:03通过财付通支付1.00元。活期余额13773.30元。对方户名:微信红包。", +"t": 1730869418140 +}