auto: sync OpenClaw config 2026-08-08 23:17
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""重新导入王芳2026H1支付宝:只算真实支出(交易成功/支付成功),排除交易关闭(退款)"""
|
||||
import json, pymysql
|
||||
from datetime import datetime
|
||||
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()
|
||||
MEMBER_ID = 3
|
||||
data = json.load(open('/tmp/wangfang_records.json'))
|
||||
|
||||
ali2cat = {
|
||||
'餐饮美食': '餐饮/食品', '日用百货': '购物', '服饰装扮': '购物',
|
||||
'交通出行': '交通', '医疗健康': '医疗', '家居家装': '家居',
|
||||
'美容美发': '美容美发', '保险': '保险', '爱车养车': '交通',
|
||||
'文化休闲': '娱乐', '生活服务': '生活服务', '数码电器': '数码',
|
||||
'商业服务': '商业服务', '母婴亲子': '母婴', '转账红包': '转账/红包',
|
||||
'酒店旅游': '旅游', '充值缴费': '生活缴费', '运动户外': '运动',
|
||||
'教育培训': '教育培训', '其他': '其他',
|
||||
}
|
||||
EXCLUDE_STATUS = ('交易关闭',) # 退款/取消订单
|
||||
|
||||
inc=exp=skip=0; inc_sum=exp_sum=0.0; cat_tot={}
|
||||
closed_list=[]
|
||||
for rec in data['records']:
|
||||
ts=rec['交易时间'].strip(); dt=datetime.strptime(ts,'%Y-%m-%d %H:%M:%S')
|
||||
direction=rec['收/支'].strip(); amount=float(rec['金额'])
|
||||
ali_cat=rec['交易分类'].strip(); status=rec['交易状态'].strip()
|
||||
peer=rec['交易对方']; goods=rec['商品说明']; pay=rec['收/付款方式']
|
||||
note=f"[支付宝] {ali_cat}|{peer}|{goods or '/'}|{pay}"
|
||||
|
||||
if direction=='支出':
|
||||
if status in EXCLUDE_STATUS:
|
||||
skip+=1; continue
|
||||
cat=ali2cat.get(ali_cat,'其他')
|
||||
cur.execute("INSERT INTO variable_expenses (member_id,category,amount,recorded_date,note) VALUES (%s,%s,%s,%s,%s)",
|
||||
(MEMBER_ID,cat,amount,dt.date(),note))
|
||||
exp+=1; exp_sum+=amount; cat_tot[cat]=cat_tot.get(cat,0)+amount
|
||||
elif direction=='收入':
|
||||
cur.execute("INSERT INTO income_records (member_id,source,amount,frequency,recorded_date,note) VALUES (%s,%s,%s,%s,%s,%s)",
|
||||
(MEMBER_ID,peer,amount,'一次性',dt.date(),note))
|
||||
inc+=1; inc_sum+=amount
|
||||
else:
|
||||
skip+=1
|
||||
|
||||
conn.commit()
|
||||
print(f"支出 {exp}笔 ¥{exp_sum:.2f} (排除交易关闭 {skip}笔)")
|
||||
print(f"收入 {inc}笔 ¥{inc_sum:.2f}")
|
||||
print("支出分类:", {k:round(v,2) for k,v in sorted(cat_tot.items(),key=lambda x:-x[1])})
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user