fix: 修复公告列表 start_date/end_date 参数未转换为 date 对象导致 500 错误

This commit is contained in:
2026-05-09 15:41:09 +08:00
parent 2efd3ce1a6
commit b3953bb71c
+13 -5
View File
@@ -1,4 +1,4 @@
from datetime import datetime
from datetime import date, datetime
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy import func, select
@@ -11,6 +11,12 @@ from app.models.schemas import AnnouncementListResponse, AnnouncementResponse
router = APIRouter()
def _parse_date(value: str | None) -> date | None:
if not value:
return None
return datetime.strptime(value, "%Y-%m-%d").date()
@router.get("/announcements", response_model=AnnouncementListResponse)
async def list_announcements(
page: int = Query(1, ge=1),
@@ -27,10 +33,12 @@ async def list_announcements(
conditions.append(Announcement.source_code == source_code)
if crawl_mode:
conditions.append(Announcement.crawl_mode == crawl_mode)
if start_date:
conditions.append(Announcement.publish_date >= start_date)
if end_date:
conditions.append(Announcement.publish_date <= end_date)
start = _parse_date(start_date)
end = _parse_date(end_date)
if start:
conditions.append(Announcement.publish_date >= start)
if end:
conditions.append(Announcement.publish_date <= end)
if keyword:
conditions.append(
Announcement.title.ilike(f"%{keyword}%")