Initial travel knowledge graph release

This commit is contained in:
2026-06-09 09:56:26 +08:00
commit 5f061295d8
402 changed files with 103877 additions and 0 deletions

42
app/api/notifications.py Normal file
View File

@@ -0,0 +1,42 @@
"""In-app notifications / inbox (P4)."""
from fastapi import APIRouter, HTTPException
from app.auth import CurrentUser
from app.db import (
get_user_id_by_username,
list_notifications,
mark_all_notifications_read,
mark_notification_read,
unread_notification_count,
)
router = APIRouter()
async def _uid(user: dict) -> int:
uid = await get_user_id_by_username(user["username"])
if uid is None:
raise HTTPException(404, "用户不存在")
return uid
@router.get("/notifications")
async def _list(user: CurrentUser, only_unread: bool = False):
return await list_notifications(await _uid(user), only_unread)
@router.get("/notifications/unread-count")
async def _count(user: CurrentUser):
return {"count": await unread_notification_count(await _uid(user))}
@router.post("/notifications/{notif_id}/read")
async def _read(notif_id: int, user: CurrentUser):
await mark_notification_read(notif_id, await _uid(user))
return {"ok": True}
@router.post("/notifications/read-all")
async def _read_all(user: CurrentUser):
n = await mark_all_notifications_read(await _uid(user))
return {"ok": True, "marked": n}