Python 后端提交
Python 后端(FastAPI + FastMCP + ...)的初始版本号设定为 0.1.0,这是 uv 在 pypriject.toml 里给我自动设置的,我觉得有道理。
This commit is contained in:
41
router/enhance/alias.py
Normal file
41
router/enhance/alias.py
Normal 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
|
||||
Reference in New Issue
Block a user