diff --git a/app/Linebot_handler/Expense.py b/app/Linebot_handler/Expense.py index 83a15a0..2e338a1 100755 --- a/app/Linebot_handler/Expense.py +++ b/app/Linebot_handler/Expense.py @@ -112,7 +112,7 @@ def parse_multiline_expense(text: str) -> dict | None: field_map = { "品項": "item_name", "類別": "category", - "金額": "amount", + "金額": "total_amount", "店家": "seller_name", "備註": "note", } @@ -124,11 +124,11 @@ def parse_multiline_expense(text: str) -> dict | None: fields[field] = value break - if not all(k in fields for k in ["item_name", "category", "amount"]): + if not all(k in fields for k in ["item_name", "category", "total_amount"]): return None try: - fields["amount"] = float(re.sub(r"[^\d.]", "", fields["amount"])) + fields["total_amount"] = float(re.sub(r"[^\d.]", "", fields["total_amount"])) except ValueError: return None @@ -144,7 +144,7 @@ def save_expense(line_user_id: str, fields: dict) -> str: db.add(Expense( user_id=user_id, category_id=subcategory_id or category_id, - amount=fields["amount"], + amount=fields["total_amount"], note=fields.get("note"), seller_name=fields.get("seller_name"), item_name=fields["item_name"], @@ -156,7 +156,7 @@ def save_expense(line_user_id: str, fields: dict) -> str: f"✅ 已記錄!\n" f"品項:{fields['item_name']}\n" f"類別:{fields['category']}\n" - f"金額:${fields['amount']:.0f}\n" + f"金額:${fields['total_amount']:.0f}\n" ) if fields.get("seller_name"): reply += f"店家:{fields['seller_name']}\n" @@ -192,7 +192,7 @@ def delete_expense(line_user_id: str, target: str) -> str: row = rows[idx] db.delete(row) db.commit() - return f"✅ 已刪除:{row.item_name} ${float(row.amount):.0f}" + return f"✅ 已刪除:{row.item_name} ${float(row.total_amount):.0f}" matched = [r for r in rows if r.item_name == target] if not matched: @@ -200,7 +200,7 @@ def delete_expense(line_user_id: str, target: str) -> str: row = matched[-1] db.delete(row) db.commit() - return f"✅ 已刪除:{row.item_name} ${float(row.amount):.0f}" + return f"✅ 已刪除:{row.item_name} ${float(row.total_amount):.0f}" except Exception as e: db.rollback() print("❌ 刪除失敗:", e) @@ -221,7 +221,7 @@ def query_today(line_user_id: str) -> str: if not rows: return "今天還沒有記錄 📭" - total = sum(float(r.amount) for r in rows) + total = sum(float(r.total_amount) for r in rows) lines = [ f"{i+1}. {r.item_name} ${float(r.amount):.0f}" + (f"({r.note})" if r.note else "") for i, r in enumerate(rows) @@ -243,7 +243,7 @@ def query_month(line_user_id: str) -> str: sql = text(""" SELECT COALESCE(m.display_name, e.item_name) AS display_name, - SUM(e.amount) as total_amount + SUM(e.total_amount) as total_amount FROM expenses e LEFT JOIN merchant_mapping m ON e.seller_name LIKE '%%' || m.pattern || '%%' WHERE e.user_id = :user_id @@ -258,7 +258,7 @@ def query_month(line_user_id: str) -> str: if not rows: return "本月還沒有記錄 📭" - total = sum(float(r.amount) for r in rows) + total = sum(float(r.total_amount) for r in rows) summary = {} for row in rows: name = row.display_name