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 fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy import func, select from sqlalchemy import func, select
@@ -11,6 +11,12 @@ from app.models.schemas import AnnouncementListResponse, AnnouncementResponse
router = APIRouter() 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) @router.get("/announcements", response_model=AnnouncementListResponse)
async def list_announcements( async def list_announcements(
page: int = Query(1, ge=1), page: int = Query(1, ge=1),
@@ -27,10 +33,12 @@ async def list_announcements(
conditions.append(Announcement.source_code == source_code) conditions.append(Announcement.source_code == source_code)
if crawl_mode: if crawl_mode:
conditions.append(Announcement.crawl_mode == crawl_mode) conditions.append(Announcement.crawl_mode == crawl_mode)
if start_date: start = _parse_date(start_date)
conditions.append(Announcement.publish_date >= start_date) end = _parse_date(end_date)
if end_date: if start:
conditions.append(Announcement.publish_date <= end_date) conditions.append(Announcement.publish_date >= start)
if end:
conditions.append(Announcement.publish_date <= end)
if keyword: if keyword:
conditions.append( conditions.append(
Announcement.title.ilike(f"%{keyword}%") Announcement.title.ilike(f"%{keyword}%")