auto: sync OpenClaw config 2026-08-08 17:17
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""分析汪礼平跨月重复的转账/红包对象"""
|
||||
import json, pymysql, re
|
||||
from collections import defaultdict
|
||||
cfg = json.load(open('db_config.json'))
|
||||
conn = pymysql.connect(host=cfg['host'], port=cfg['port'], user=cfg['user'],
|
||||
password=str(cfg['password']), database=cfg['database'], charset='utf8mb4')
|
||||
cur = conn.cursor()
|
||||
|
||||
cur.execute("""
|
||||
SELECT recorded_date, amount, note FROM variable_expenses
|
||||
WHERE member_id=1 AND (category='转账/红包' OR category LIKE '%红包%' OR note LIKE '%微信转账%' OR note LIKE '%微信红包%')
|
||||
""")
|
||||
rows = cur.fetchall()
|
||||
|
||||
def peer_of(note):
|
||||
# note 形如 [微信] 转账|对方名|备注 或 转账 | 对方 | 备注
|
||||
parts = [p.strip() for p in note.replace('[微信] ', '').split('|')]
|
||||
if len(parts) >= 2:
|
||||
return parts[1]
|
||||
m = re.search(r'转账\s*[:|]\s*([^|\s]+)', note)
|
||||
return None
|
||||
|
||||
# 按对方+月份统计
|
||||
by_peer_month = defaultdict(set) # peer -> set of 'YYYY-MM'
|
||||
by_peer_total = defaultdict(float)
|
||||
by_peer_count = defaultdict(int)
|
||||
|
||||
for d, amt, note in rows:
|
||||
p = peer_of(note)
|
||||
if not p:
|
||||
p = '(未知)'
|
||||
month = d.strftime('%Y-%m')
|
||||
by_peer_month[p].add(month)
|
||||
by_peer_total[p] += float(amt)
|
||||
by_peer_count[p] += 1
|
||||
|
||||
# 按月数排序,找出跨月重复的
|
||||
print('=== 转账对象出现月份数(>=2个月视为规律性) ===')
|
||||
multi = []
|
||||
for p, months in by_peer_month.items():
|
||||
if len(months) >= 2:
|
||||
multi.append((len(months), by_peer_count[p], by_peer_total[p], p, sorted(months)))
|
||||
multi.sort(key=lambda x: (-x[0], -x[2]))
|
||||
for nmon, ncnt, tot, p, months in multi:
|
||||
print(f' {p:16s} 出现{nmon}个月共{ncnt}笔 累计¥{tot:.0f} 月:{months}')
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user