first commit
This commit is contained in:
25
app/services/categorization.py
Normal file
25
app/services/categorization.py
Normal file
@@ -0,0 +1,25 @@
|
||||
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
|
||||
Reference in New Issue
Block a user