#!/usr/bin/env python3 # -*- coding: utf-8 -*- """检查微信账单与已导入的支付宝/邮储卡支出的重叠""" import json, pymysql, collections cfg = json.load(open('db_config.json')) conn = pymysql.connect(host=cfg['host'], port=cfg['port'], user=cfg['user'], password=cfg.get('password'), database=cfg['database'], charset='utf8mb4') cur = conn.cursor() cur.execute("""SELECT amount, recorded_date FROM variable_expenses WHERE member_id=3 AND recorded_date BETWEEN '2026-01-01' AND '2026-06-30' AND (note LIKE '%[支付宝]%' OR note LIKE '%[邮储卡]%')""") imported = set() for a, d in cur.fetchall(): imported.add((d.strftime('%Y-%m-%d'), round(float(a), 2))) print(f"已导入支付宝+邮储卡支出: {len(imported)}笔") d = json.load(open('/tmp/wx_juaner.json')) def fp(s): return float(s) wx_pay = [(r[0][:10], round(fp(r[5]), 2), r[1].strip(), r[2], r[6].strip()) for r in d['records'] if r[4].strip() == '支出'] overlap = 0; dupe_amt = 0.0; over_pay = collections.Counter() for t, amt, typ, peer, pay in wx_pay: if (t, amt) in imported: overlap += 1; dupe_amt += amt; over_pay[pay] += 1 print(f"微信支出中与已导入(支付宝/邮储卡)同日同金额重叠: {overlap}笔 ¥{dupe_amt:.2f}") print(" 重叠按微信支付方式:", dict(over_pay)) for pay in ['邮储银行储蓄卡(8719)', '零钱通', '零钱', '徽商银行储蓄卡(1491)']: sub = [x for x in wx_pay if x[4] == pay] ov = sum(1 for x in sub if (x[0], x[1]) in imported) print(f" {pay}: {len(sub)}笔, 其中与已导入重叠 {ov}笔") conn.close()