feat: linebot
All checks were successful
Oracle-Deploy / redeploy (push) Successful in 31s

1. change column name
This commit is contained in:
2026-03-24 10:30:06 +08:00
parent 9f44fbe970
commit 85520e6724

View File

@@ -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