Python 后端(FastAPI + FastMCP + ...)的初始版本号设定为 0.1.0,这是 uv 在 pypriject.toml 里给我自动设置的,我觉得有道理。
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
"""为课程提供一个简短的别名,便于在空间有限的课程表图片中辨认。
|
|
|
|
别名是单独保存的,在最终输出阶段才会被装饰在原有的课表输出上。
|
|
"""
|
|
|
|
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
|