auto: sync OpenClaw config 2026-08-08 17:17
This commit is contained in:
@@ -47,6 +47,15 @@
|
||||
|
||||
## 2026年数据进展
|
||||
|
||||
- **2026-07 汪礼平七月微信账单**(7/01–7/31,77笔)
|
||||
- 支出74笔¥3,130.44 | 收入3笔¥610.00
|
||||
- 支出分类:餐饮/食品¥1,709.79 | 转账/红包¥900(杨小平400+老公200+红包给佳艳300)| 购物¥475.85(拼多多/抖音)| 其他¥40(三城寺香火5×10)| 交通¥4.8(铁塔能源)
|
||||
- 单笔最大:红星扫码¥736(7/26,疑大宗采购)
|
||||
- 收入:杨轩转账400、汪和平200、佳艳红包10
|
||||
- 主要支付方式:安徽农信储蓄卡(8043);零钱少量
|
||||
- 日常以菜市场/超市小摊为主(好想来、惠康、皖商、新皖韵),消费结构健康
|
||||
- 注:7/31 抖音@红星736已入餐饮分类,若属批量采购可复核
|
||||
|
||||
- **2026-07-15**:导入杨轩2026上半年三张卡流水
|
||||
- **工行交通卡2808**:64条流水,34笔外部支出¥3,774
|
||||
- 火车票¥3,632 = 96%,滴滴¥101,共享单车¥15,停车费¥11,卡年费¥10
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""分析汪礼平2026年(1-7月)转账/红包往来"""
|
||||
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 recorded_date BETWEEN '2026-01-01' AND '2026-07-31'
|
||||
AND (category='转账/红包' OR category LIKE '%红包%' OR note LIKE '%微信转账%' OR note LIKE '%微信红包%')
|
||||
ORDER BY recorded_date
|
||||
""")
|
||||
rows = cur.fetchall()
|
||||
|
||||
def peer_of(note):
|
||||
parts = [p.strip() for p in note.replace('[微信] ', '').split('|')]
|
||||
if len(parts) >= 2:
|
||||
return parts[1]
|
||||
return '(未知)'
|
||||
|
||||
by_peer_month = defaultdict(set)
|
||||
by_peer_total = defaultdict(float)
|
||||
by_peer_count = defaultdict(int)
|
||||
by_peer_amounts = defaultdict(list)
|
||||
|
||||
for d, amt, note in rows:
|
||||
p = peer_of(note)
|
||||
m = d.strftime('%Y-%m')
|
||||
a = float(amt)
|
||||
by_peer_month[p].add(m)
|
||||
by_peer_total[p] += a
|
||||
by_peer_count[p] += 1
|
||||
by_peer_amounts[p].append((d.strftime('%m-%d'), a))
|
||||
|
||||
conn.close()
|
||||
|
||||
print(f'2026年1-7月 转账/红包共 {len(rows)} 笔\n')
|
||||
cands = [(by_peer_count[p], by_peer_total[p], p, sorted(by_peer_month[p]), by_peer_amounts[p])
|
||||
for p in by_peer_month]
|
||||
cands.sort(key=lambda x: (-x[1]))
|
||||
print('=== 按累计金额排序 ===')
|
||||
for cnt, tot, p, months, amts in cands:
|
||||
print(f'\n◆ {p} | {cnt}笔 | 累计 ¥{tot:,.0f} | {len(months)}个月 {months}')
|
||||
details = '、'.join(f'{d}¥{a:.0f}' for d, a in amts)
|
||||
print(f' 明细: {details}')
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""查询汪礼平与汪和平相关的全部转账/红包/收支记录"""
|
||||
import json, pymysql
|
||||
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()
|
||||
|
||||
# 支出方向(微信转出给汪和平)
|
||||
print('=== 汪礼平 → 汪和平(支出/转出) ===')
|
||||
cur.execute("""
|
||||
SELECT recorded_date, amount, note FROM variable_expenses
|
||||
WHERE member_id=1 AND note LIKE '%汪和平%' ORDER BY recorded_date
|
||||
""")
|
||||
for d, a, n in cur.fetchall():
|
||||
print(f' {d} ¥{float(a):>9.2f} {"支出" if "支出" in n else "转出"} {n}')
|
||||
|
||||
# 收入方向(汪和平转入→汪礼平)
|
||||
print()
|
||||
print('=== 汪和平 → 汪礼平(收入/转入) ===')
|
||||
cur.execute("""
|
||||
SELECT recorded_date, amount, source, note FROM income_records
|
||||
WHERE member_id=1 AND (source LIKE '%汪和平%' OR note LIKE '%汪和平%') ORDER BY recorded_date
|
||||
""")
|
||||
rows = cur.fetchall()
|
||||
if rows:
|
||||
for d, a, s, n in rows:
|
||||
print(f' {d} ¥{float(a):>9.2f} {"收入" if "收入" in n else "转入"} 来源:{s} {n}')
|
||||
else:
|
||||
# income_records 可能没有汪和平相关,检查所有收入
|
||||
cur.execute("SELECT recorded_date, amount, source, note FROM income_records WHERE member_id=1 ORDER BY recorded_date")
|
||||
print(' (income_records 中未匹配,全部收入记录如下:)')
|
||||
for d, a, s, n in cur.fetchall():
|
||||
print(f' {d} ¥{float(a):>9.2f} 来源:{s} {n or ""}')
|
||||
|
||||
conn.close()
|
||||
@@ -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()
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import json, pymysql
|
||||
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 '%微信红包%')
|
||||
ORDER BY recorded_date
|
||||
""")
|
||||
rows = cur.fetchall()
|
||||
print(f'共{len(rows)}笔转账/红包类记录:')
|
||||
for r in rows:
|
||||
print(f' {r[0]} {r[1]:>8.2f} {r[2]}')
|
||||
print()
|
||||
|
||||
cur.execute("SELECT MIN(recorded_date), MAX(recorded_date) FROM variable_expenses WHERE member_id=1")
|
||||
print('汪礼平支出日期范围:', cur.fetchone())
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user