diff --git a/app/Linebot_handler/Expense.py b/app/Linebot_handler/Expense.py index 67302e2..2a5f136 100755 --- a/app/Linebot_handler/Expense.py +++ b/app/Linebot_handler/Expense.py @@ -227,24 +227,34 @@ def query_today(line_user_id: str) -> str: rows = db.execute(sql, {"user_id": user_id}).fetchall() data_list = [dict(row) if hasattr(row, '_mapping') else row for row in rows] + total = 0.0 - # 2. 計算總額 - total = sum(float(r['total_amount']) for r in data_list) + for r in rows: + # 這裡依照妳 SQL 的別名抓資料,r.total_amount 或是 r['total_amount'] + amt = float(r.total_amount) + total += amt + + # 抓取顯示名稱與備註 + name = r.display_name if hasattr(r, 'display_name') else r.item_name + note_str = f"({r.note})" if hasattr(r, 'note') and r.note else "" + + data_list.append({ + "name": name, + "amt": amt, + "note": note_str + }) + # 3. 檢查是否有資料 if not data_list: return "📋 今日還沒有記錄喔!💨" - # 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. 組裝每一行的文字 + lines = [ + f"{i+1}. {item['name']} ${item['amt']:.0f}{item['note']}" + for i, item in enumerate(data_list) + ] - # 4. 回傳最終訊息 + # 5. 回傳最終訊息 header = "📋 今日記錄:\n" footer = f"\n\n💰 合計:${total:.0f}\n\n🗑 刪除請輸入:刪除 編號\n例如:刪除 1" return header + "\n".join(lines) + footer