auto: sync OpenClaw config 2026-08-08 17:17
This commit is contained in:
BIN
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat":"AARzJWAFAAABAAAAAAAr3PqxbskjeYpnLxx1aiAAAAB+9905Q6UiugPBawU3n3cyzQX+LkN8ofRzsCZYN0mt7r8a9A/P+jazOZkC6OvTEXcIEtkOnVzYK4ml1u4NXP4xh0lm4TJa"}
|
{"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat":"AARzJWAFAAABAAAAAABDhnXp+HcBqTrwGd92aiAAAAB+9905Q6UiugPBawU3n3cyzQX+LkN8ofRzsCZYN0mt7kdOinFAoP67VCUjNL9AHsWrMsJukz0sfS1XeLn1+p0d/jUyg1h2"}
|
||||||
@@ -1 +1 @@
|
|||||||
{"get_updates_buf":"ChAIOxDbydjL/TMYmp6chfYzEjplNDhhY2U5ODE0ZjBAaW0uYm90OjA2MDAwMGQ0ZmYwNzg5NWY2NDFlMmZjNmIzNGUzMzNkZDIwMjgx"}
|
{"get_updates_buf":"ChAIQRCp+92C/jMYmp6chfYzEjplNDhhY2U5ODE0ZjBAaW0uYm90OjA2MDAwMGQ0ZmYwNzg5NWY2NDFlMmZjNmIzNGUzMzNkZDIwMjgx"}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
openclaw-workspace-attestation:v1
|
openclaw-workspace-attestation:v1
|
||||||
2026-07-30T01:34:39.891Z
|
2026-08-08T07:48:12.936Z
|
||||||
generated:HEARTBEAT.md:ecce558615751a35aa173731e892ff3993f44bb4f5a1219c0a02994790c85528
|
generated:HEARTBEAT.md:ecce558615751a35aa173731e892ff3993f44bb4f5a1219c0a02994790c85528
|
||||||
generated:USER.md:e418ca9a680553b3ad8f54aecb0d403330810bb77826ab5251cc1dc13368fe16
|
generated:USER.md:e418ca9a680553b3ad8f54aecb0d403330810bb77826ab5251cc1dc13368fe16
|
||||||
|
|||||||
@@ -47,6 +47,15 @@
|
|||||||
|
|
||||||
## 2026年数据进展
|
## 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上半年三张卡流水
|
- **2026-07-15**:导入杨轩2026上半年三张卡流水
|
||||||
- **工行交通卡2808**:64条流水,34笔外部支出¥3,774
|
- **工行交通卡2808**:64条流水,34笔外部支出¥3,774
|
||||||
- 火车票¥3,632 = 96%,滴滴¥101,共享单车¥15,停车费¥11,卡年费¥10
|
- 火车票¥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