From 808f3101e324e747437786e4f2211579bdb5322f Mon Sep 17 00:00:00 2001 From: v6ole Date: Sat, 9 May 2026 15:19:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=85=AC=E5=91=8A=20A?= =?UTF-8?q?PI=20=E8=B7=AF=E7=94=B1=E9=A1=BA=E5=BA=8F=20=E2=80=94=20/today?= =?UTF-8?q?=20=E5=92=8C=20/stats=20=E5=9C=A8=20/{id}=20=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将具体路由移到参数化路由之前,避免 "today"/"stats" 被 {announcement_id} 作为整数解析而返回 422。 --- app/api/announcements.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/api/announcements.py b/app/api/announcements.py index 028e786..41d20eb 100644 --- a/app/api/announcements.py +++ b/app/api/announcements.py @@ -57,17 +57,6 @@ async def list_announcements( ) -@router.get("/announcements/{announcement_id}", response_model=AnnouncementResponse) -async def get_announcement(announcement_id: int, db: AsyncSession = Depends(get_db)): - result = await db.execute( - select(Announcement).where(Announcement.id == announcement_id) - ) - item = result.scalar_one_or_none() - if item is None: - raise HTTPException(status_code=404, detail="公告不存在") - return AnnouncementResponse.model_validate(item) - - @router.get("/announcements/today", response_model=AnnouncementListResponse) async def get_today_announcements(db: AsyncSession = Depends(get_db)): today = datetime.now().date() @@ -106,3 +95,14 @@ async def get_stats(db: AsyncSession = Depends(get_db)): "new": new_count.scalar() or 0, "unsent": unsent.scalar() or 0, } + + +@router.get("/announcements/{announcement_id}", response_model=AnnouncementResponse) +async def get_announcement(announcement_id: int, db: AsyncSession = Depends(get_db)): + result = await db.execute( + select(Announcement).where(Announcement.id == announcement_id) + ) + item = result.scalar_one_or_none() + if item is None: + raise HTTPException(status_code=404, detail="公告不存在") + return AnnouncementResponse.model_validate(item)