From b3953bb71cc46b7d12557a6d81b2d2ac6677d2d5 Mon Sep 17 00:00:00 2001 From: v6ole Date: Sat, 9 May 2026 15:41:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=85=AC=E5=91=8A?= =?UTF-8?q?=E5=88=97=E8=A1=A8=20start=5Fdate/end=5Fdate=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=9C=AA=E8=BD=AC=E6=8D=A2=E4=B8=BA=20date=20?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=AF=BC=E8=87=B4=20500=20=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/announcements.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/api/announcements.py b/app/api/announcements.py index 41d20eb..9cf851a 100644 --- a/app/api/announcements.py +++ b/app/api/announcements.py @@ -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}%")