Files
expense_monitor/app/services/categorization.py
Mateusz Gruszczyński 986ffb200a first commit
2026-03-13 15:17:32 +01:00

26 lines
797 B
Python

from __future__ import annotations
from ..models import Expense
def suggest_category_id(user_id: int, vendor: str = '', title: str = '') -> int | None:
vendor = (vendor or '').strip().lower()
title = (title or '').strip().lower()
if not vendor and not title:
return None
recent = (
Expense.query.filter_by(user_id=user_id, is_deleted=False)
.filter(Expense.category_id.isnot(None))
.order_by(Expense.id.desc())
.limit(100)
.all()
)
for expense in recent:
ev = (expense.vendor or '').strip().lower()
et = (expense.title or '').strip().lower()
if vendor and ev == vendor:
return expense.category_id
if title and et == title:
return expense.category_id
return None