Python 后端提交

Python 后端(FastAPI + FastMCP + ...)的初始版本号设定为 0.1.0,这是 uv 在 pypriject.toml
里给我自动设置的,我觉得有道理。
This commit is contained in:
2026-04-21 13:38:46 +08:00
parent 14eadaab86
commit b284c3c260
27 changed files with 1691 additions and 0 deletions

41
router/enhance/alias.py Normal file
View File

@@ -0,0 +1,41 @@
"""为课程提供一个简短的别名,便于在空间有限的课程表图片中辨认。
别名是单独保存的,在最终输出阶段才会被装饰在原有的课表输出上。
"""
from typing import Sequence
from sqlmodel import Session, select
from njupt_api.baselib import logger
from router.enhance.model import Alias, engine
def apply_alias(courses: list[dict]) -> list[dict]:
with Session(engine) as session:
aliases: Sequence[Alias] = session.exec(select(Alias)).all()
# 否则不做任何更改
if len(aliases) == 0:
return courses
alias_count = 0
apply_count = 0
alias_dict = {}
for alias in aliases:
m = alias.model_dump()
alias_dict[m["originalName"]] = m["aliasName"]
alias_count += 1
for course in courses:
if course["name"] in alias_dict:
course["alias"] = alias_dict[course["name"]]
apply_count += 1
else:
course["alias"] = None
logger.debug(
f"课程别名 | 将 {alias_count} 个别名应用在了 {apply_count} 门输出的课程上。",
)
return courses