Validate plan date before yesterday workflow indexing

This commit is contained in:
ي
2026-03-06 21:45:25 +05:30
parent 5d49351c2d
commit e694e6172f

View File

@@ -4,6 +4,7 @@ from datetime import datetime
from loguru import logger from loguru import logger
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from sqlalchemy.exc import SQLAlchemyError
from middleware.auth_middleware import get_current_user from middleware.auth_middleware import get_current_user
from services.database import get_db from services.database import get_db
@@ -100,10 +101,20 @@ async def get_today_workflow(
if created: if created:
asyncio.create_task(_index_tasks_to_sif(user_id, plan.date, response_tasks, label="today")) asyncio.create_task(_index_tasks_to_sif(user_id, plan.date, response_tasks, label="today"))
try:
from datetime import date as date_type, timedelta from datetime import date as date_type, timedelta
y_str = (date_type.fromisoformat(plan.date) - timedelta(days=1)).isoformat() try:
parsed_plan_date = date_type.fromisoformat(plan.date)
except ValueError:
logger.warning(
"Invalid plan.date format; skipping yesterday indexing plan_id={} user_id={} plan_date={} reason={}",
plan.id,
user_id,
plan.date,
"plan.date is not in ISO format YYYY-MM-DD",
)
else:
y_str = (parsed_plan_date - timedelta(days=1)).isoformat()
def _fetch_yesterday(): def _fetch_yesterday():
y_plan = ( y_plan = (
@@ -121,8 +132,19 @@ async def get_today_workflow(
return y_tasks return y_tasks
return [] return []
try:
y_tasks = await run_in_threadpool(_fetch_yesterday) y_tasks = await run_in_threadpool(_fetch_yesterday)
except SQLAlchemyError as db_error:
logger.warning(
"Failed to fetch yesterday tasks; skipping yesterday indexing plan_id={} user_id={} plan_date={} yesterday_date={} error_class={} error_message={}",
plan.id,
user_id,
plan.date,
y_str,
type(db_error).__name__,
str(db_error),
)
else:
if y_tasks: if y_tasks:
y_response = [] y_response = []
for t in y_tasks: for t in y_tasks:
@@ -136,8 +158,6 @@ async def get_today_workflow(
} }
) )
asyncio.create_task(_index_tasks_to_sif(user_id, y_str, y_response, label="yesterday")) asyncio.create_task(_index_tasks_to_sif(user_id, y_str, y_response, label="yesterday"))
except Exception:
pass
return { return {
"success": True, "success": True,