766666601e
Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #22 Reviewed-by: marco <marco@wonderable.ai> Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
"""首页平台级展示数据 endpoint(全平台门面数字,**不鉴权**——登录前首页也要展示)。
|
|
|
|
路由前缀 `/api/v1/platform`:
|
|
GET /stats 首页三统计(帮助用户 / 完成比价 / 累计节省),按运营后台配的模式算。
|
|
|
|
展示模式(real/manual/random,每指标独立)与计算逻辑见 app/repositories/ops_stat.py。
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
from fastapi import APIRouter, Query
|
|
|
|
from app.api.deps import DbSession
|
|
from app.repositories import ops_marquee as marquee_crud
|
|
from app.repositories import ops_stat as crud
|
|
from app.schemas.platform import PlatformStatsOut, SavingsFeedItem, SavingsFeedOut
|
|
|
|
logger = logging.getLogger("shagua.platform")
|
|
|
|
router = APIRouter(prefix="/api/v1/platform", tags=["platform"])
|
|
|
|
|
|
@router.get("/stats", response_model=PlatformStatsOut, summary="首页三统计(全平台门面数字)")
|
|
def stats(db: DbSession) -> PlatformStatsOut:
|
|
v = crud.get_display_values(db)
|
|
return PlatformStatsOut(
|
|
help_users=v["help_users"],
|
|
total_compares=v["total_compares"],
|
|
total_saved_cents=v["total_saved"],
|
|
)
|
|
|
|
|
|
@router.get("/savings-feed", response_model=SavingsFeedOut, summary="首页轮播 feed(真实+种子混播)")
|
|
def savings_feed(db: DbSession, limit: int = Query(8, ge=1, le=30)) -> SavingsFeedOut:
|
|
items = marquee_crud.get_feed(db, limit=limit)
|
|
return SavingsFeedOut(items=[SavingsFeedItem(**it) for it in items])
|