Compare commits

...

3 Commits

Author SHA1 Message Date
9d956e5952 包含 LoginError 2026-04-21 21:07:44 +08:00
21429c19c1 在课表测试路由中使用 jwxt()
从而避免无法获取默认课表以保存到数据库的问题
2026-04-21 21:07:15 +08:00
471cc8fed6 websocket 远程连接地址错误
临时修正,修复远程访问 WebUI 时,日志 websocket 连接错误的问题
2026-04-21 21:06:29 +08:00
4 changed files with 12 additions and 11 deletions

View File

@@ -1,4 +1,5 @@
from .createcourse import create_course_schedule from .createcourse import create_course_schedule
from .exc import LoginError
from .lib import jwxt from .lib import jwxt
from .sso import SSO from .sso import SSO
from .types import Course, course_dict_serializer, course_list_serializer from .types import Course, course_dict_serializer, course_list_serializer
@@ -12,4 +13,5 @@ __all__ = [
course_list_serializer, course_list_serializer,
ZhengFang, ZhengFang,
jwxt, jwxt,
LoginError,
] ]

View File

@@ -7,7 +7,7 @@ from pydantic import BaseModel
from sqlmodel import Session, delete, select from sqlmodel import Session, delete, select
from njupt_api.baselib import config, logger from njupt_api.baselib import config, logger
from njupt_api.zhengfang import ZhengFang, course_list_serializer from njupt_api.zhengfang import LoginError, course_list_serializer, jwxt
from router.enhance.auth import verify_token from router.enhance.auth import verify_token
from router.enhance.lib import AliasDto, ReturnDto, TestDto, get_session from router.enhance.lib import AliasDto, ReturnDto, TestDto, get_session
from router.enhance.model import Alias, Course from router.enhance.model import Alias, Course
@@ -37,8 +37,8 @@ async def validate_token(vtd: ValidateTokenDto) -> ReturnDto:
@admin_router.post("/schedule/test", dependencies=[Depends(verify_token)]) @admin_router.post("/schedule/test", dependencies=[Depends(verify_token)])
async def post_schedule_test(test: TestDto, session: Annotated[Session, Depends(get_session)]) -> ReturnDto: async def post_schedule_test(test: TestDto, session: Annotated[Session, Depends(get_session)]) -> ReturnDto:
async with ZhengFang() as zf: try:
if await zf.login(test.username, test.password): async with jwxt(test.username, test.password) as zf:
if test.scheduleType == "class": if test.scheduleType == "class":
final_course_list = course_list_serializer( final_course_list = course_list_serializer(
await zf.get_class_schedule(), await zf.get_class_schedule(),
@@ -67,13 +67,8 @@ async def post_schedule_test(test: TestDto, session: Annotated[Session, Depends(
success=False, success=False,
message="参数错误,请检查 scheduleType 参数。", message="参数错误,请检查 scheduleType 参数。",
) )
logger.error( except LoginError as e:
f"{test.username} | 获取课程表失败,请检查账号密码是否正确后再试。", return ReturnDto(success=False, message=str(e))
)
return ReturnDto(
success=False,
message="获取课程表失败,请检查账号密码是否正确后再试。",
)
@admin_router.get("/schedule/test", dependencies=[Depends(verify_token)]) @admin_router.get("/schedule/test", dependencies=[Depends(verify_token)])

View File

@@ -14,7 +14,7 @@ ansiUp.use_classes = true
let ws: WebSocket | null = null let ws: WebSocket | null = null
const initWebSocket = () => { const initWebSocket = () => {
ws = new WebSocket('ws://127.0.0.1:8000/ws/logs') ws = new WebSocket(`ws://${window.location.hostname}:8000/ws/logs`)
ws.onmessage = (event) => { ws.onmessage = (event) => {
// 1. 解析 ANSI 颜色编码 // 1. 解析 ANSI 颜色编码

View File

@@ -53,6 +53,10 @@ export default defineConfig({
target: 'http://localhost:8000', target: 'http://localhost:8000',
changeOrigin: true, changeOrigin: true,
}, },
'/ws': {
target: 'http://localhost:8000',
changeOrigin: true,
},
'/version': { '/version': {
target: 'http://localhost:8000', target: 'http://localhost:8000',
changeOrigin: true, changeOrigin: true,