Validate plan date before yesterday workflow indexing
This commit is contained in:
@@ -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,11 +101,21 @@ 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
|
|
||||||
|
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()
|
||||||
|
|
||||||
y_str = (date_type.fromisoformat(plan.date) - timedelta(days=1)).isoformat()
|
|
||||||
|
|
||||||
def _fetch_yesterday():
|
def _fetch_yesterday():
|
||||||
y_plan = (
|
y_plan = (
|
||||||
db.query(DailyWorkflowPlan)
|
db.query(DailyWorkflowPlan)
|
||||||
@@ -121,23 +132,32 @@ async def get_today_workflow(
|
|||||||
return y_tasks
|
return y_tasks
|
||||||
return []
|
return []
|
||||||
|
|
||||||
y_tasks = await run_in_threadpool(_fetch_yesterday)
|
try:
|
||||||
|
y_tasks = await run_in_threadpool(_fetch_yesterday)
|
||||||
if y_tasks:
|
except SQLAlchemyError as db_error:
|
||||||
y_response = []
|
logger.warning(
|
||||||
for t in y_tasks:
|
"Failed to fetch yesterday tasks; skipping yesterday indexing plan_id={} user_id={} plan_date={} yesterday_date={} error_class={} error_message={}",
|
||||||
y_response.append(
|
plan.id,
|
||||||
{
|
user_id,
|
||||||
"id": str(t.id),
|
plan.date,
|
||||||
"pillarId": t.pillar_id,
|
y_str,
|
||||||
"title": t.title,
|
type(db_error).__name__,
|
||||||
"description": t.description,
|
str(db_error),
|
||||||
"status": "skipped" if t.status == "dismissed" else t.status,
|
)
|
||||||
}
|
else:
|
||||||
)
|
if y_tasks:
|
||||||
asyncio.create_task(_index_tasks_to_sif(user_id, y_str, y_response, label="yesterday"))
|
y_response = []
|
||||||
except Exception:
|
for t in y_tasks:
|
||||||
pass
|
y_response.append(
|
||||||
|
{
|
||||||
|
"id": str(t.id),
|
||||||
|
"pillarId": t.pillar_id,
|
||||||
|
"title": t.title,
|
||||||
|
"description": t.description,
|
||||||
|
"status": "skipped" if t.status == "dismissed" else t.status,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
asyncio.create_task(_index_tasks_to_sif(user_id, y_str, y_response, label="yesterday"))
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"success": True,
|
"success": True,
|
||||||
|
|||||||
Reference in New Issue
Block a user