mirror of
https://github.com/henry4682/linebot_finance.git
synced 2026-05-16 04:41:52 +00:00
1. change query today
This commit is contained in:
@@ -213,20 +213,41 @@ def query_today(line_user_id: str) -> str:
|
|||||||
db = SessionLocal()
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
user_id = get_or_create_user(db, line_user_id)
|
user_id = get_or_create_user(db, line_user_id)
|
||||||
rows = db.query(Expense).filter(
|
sql = text("""
|
||||||
Expense.user_id == user_id,
|
SELECT
|
||||||
text("DATE(date) = :today")
|
COALESCE(m.display_name, e.item_name) AS display_name,
|
||||||
).params(today=date.today()).all()
|
SUM(e.amount) as total_amount -- 💡 記得這裡是 amount
|
||||||
|
FROM expenses e
|
||||||
|
LEFT JOIN merchant_mapping m ON e.seller_name LIKE '%%' || m.pattern || '%%'
|
||||||
|
WHERE e.user_id = :user_id
|
||||||
|
AND e.date = CURRENT_DATE -- 💡 這是查今天的關鍵
|
||||||
|
GROUP BY COALESCE(m.display_name, e.item_name)
|
||||||
|
ORDER BY total_amount DESC
|
||||||
|
""")
|
||||||
|
rows = db.execute(sql, {"user_id": user_id}).fetchall()
|
||||||
|
|
||||||
if not rows:
|
data_list = [dict(row) if hasattr(row, '_mapping') else row for row in rows]
|
||||||
return "今天還沒有記錄 📭"
|
|
||||||
|
|
||||||
total = sum(float(r.total_amount) for r in rows)
|
# 2. 計算總額
|
||||||
lines = [
|
total = sum(float(r['total_amount']) for r in data_list)
|
||||||
f"{i+1}. {r.item_name} ${float(r.amount):.0f}" + (f"({r.note})" if r.note else "")
|
|
||||||
for i, r in enumerate(rows)
|
if not data_list:
|
||||||
]
|
return "📋 今日還沒有記錄喔!💨"
|
||||||
return "📋 今日記錄:\n" + "\n".join(lines) + f"\n\n💰 合計:${total:.0f}\n\n🗑 刪除請輸入:刪除 編號\n例如:刪除 1"
|
|
||||||
|
# 3. 組裝每一行的文字 (注意欄位改用 ['display_name'] 和 ['total_amount'])
|
||||||
|
lines = []
|
||||||
|
for i, r in enumerate(data_list):
|
||||||
|
# 這裡用 display_name 才會顯示 merchant_mapping 轉換後的好記名稱
|
||||||
|
name = r.get('display_name') or r.get('item_name')
|
||||||
|
amt = float(r['total_amount'])
|
||||||
|
note_str = f"({r['note']})" if r.get('note') else ""
|
||||||
|
|
||||||
|
lines.append(f"{i+1}. {name} ${amt:.0f}{note_str}")
|
||||||
|
|
||||||
|
# 4. 回傳最終訊息
|
||||||
|
header = "📋 今日記錄:\n"
|
||||||
|
footer = f"\n\n💰 合計:${total:.0f}\n\n🗑 刪除請輸入:刪除 編號\n例如:刪除 1"
|
||||||
|
return header + "\n".join(lines) + footer
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("❌ 查詢失敗:", e)
|
print("❌ 查詢失敗:", e)
|
||||||
return "查詢失敗,請稍後再試"
|
return "查詢失敗,請稍後再試"
|
||||||
|
|||||||
Reference in New Issue
Block a user