Fix news risk window query parsing
Development CI / check-and-build (push) Successful in 55s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 3m9s

This commit is contained in:
eezd committed 2026-10-30 18:57:04 +08:00
1 parent 91bc65df75
commit b801c83c60
3 files changed
+43 -3

No files matched your search

+10 -3
View File
@@ -1,6 +1,7 @@
"""Authenticated news risk research endpoints."""
from datetime import UTC, datetime, timedelta
from typing import Annotated, Literal
from enum import IntEnum
from typing import Annotated
from fastapi import APIRouter, Depends, HTTPException, Query
from pydantic import BaseModel, Field
from sqlalchemy import select, func
@@ -17,6 +18,12 @@ router = APIRouter(prefix='/api/risk', tags=['risk'], dependencies=[Depends(requ
DB = Annotated[AsyncSession, Depends(get_session)]
class RiskWindow(IntEnum):
DAY = 24
TWO_DAYS = 48
WEEK = 168
class SettingsIn(BaseModel):
enabled: bool = False
provider_id: int = Field(gt=0)
@@ -72,7 +79,7 @@ async def coverage(session):
@router.get('/overview')
async def overview(session: DB, hours: Literal[24, 48, 168] = 24):
async def overview(session: DB, hours: RiskWindow = RiskWindow.DAY):
now = datetime.now(UTC); cutoff = now - timedelta(hours=hours)
counts = dict((await session.execute(select(RiskEvent.stars, func.count()).where(
RiskEvent.updated_at >= cutoff, RiskEvent.result["verification"].astext != "insufficient").group_by(RiskEvent.stars))).all())
@@ -86,7 +93,7 @@ async def overview(session: DB, hours: Literal[24, 48, 168] = 24):
@router.get('/events')
async def events(session: DB, hours: Literal[24, 48, 168] | None = None, stars: int = Query(1, ge=0, le=5),
async def events(session: DB, hours: RiskWindow | None = None, stars: int = Query(1, ge=0, le=5),
q: str = '', start: datetime | None = None, end: datetime | None = None,
page: int = Query(1, ge=1), limit: int = Query(20, ge=1, le=100)):
conditions = [RiskEvent.stars >= stars]