mirror of
https://github.com/henry4682/linebot_finance.git
synced 2026-05-16 04:41:52 +00:00
1. change column name
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user