# 后续待办 ## 待做 - 登录日志的 key 用错维度:`routes/accounts.py` 的 `_log_login()` 拿用户名(手机号)当 key 写 `run_log`,而卡片 「课程日志」按账号 id 读,两边对不上——登录行只有「登录记录」页能看到。要么统一成账号 id,要么卡片同时聚合两个 key。 - `ddddocr` 的报错提示会误导:`plugins/gdgxk/utils/login.py` 把任何导入失败都写成「需要先装 ddddocr(pip install ddddocr)」, `uv sync` 在应用运行期间改写包造成的 `DLL load failed` 也会被说成「没装」。应区分 ImportError 与 OSError(DLL), 并把真实异常写进 `runtime.log`。 - 前端补一条自动化回归(Playwright):空态、账号卡片、测验弹窗、设置保存、平台下拉。 - pre-commit 首次接入还没跑过全量:`ruff-format` 会重排约 30 个文件,`ruff check` 会报 `plugins/guanyixue/script/study_video.py:34` 的 E402(脚本先改 `sys.path` 再 import,加 `# noqa: E402` 即可)。 找一次专门的提交跑 `pre-commit run --all-files`,别混进功能改动里。 - 构建检查进 CI:`cd web && pnpm install --frozen-lockfile && pnpm typecheck && pnpm build`, 并校验 `static/` 与源码同步。 - 广东公需课:视频弹题仍未接入;`answer.py` 的两套按序答案留作考核备选,暂未使用。 - 推送渠道目前只有呆呆面板(`plugins/daidai_push/`):要接 WxPusher / Telegram / 邮件,按 `"kind": "notify"` 再建一个插件目录即可,核心不用改;`notify.send()` 会发给所有已加载渠道。 - 接入第二个学习平台时,建 `plugins/<名字>/`(`plugin.json` + `main.py` 的 `Platform` 子类),实现 `session` / `login` / `list_courses` / `discover` / `study` 并注册;账号在「添加账号」里选平台后即可用,登录与课程发现不需要再改路由。 ## 已知偏差 - 测验 `/api/quiz/submit` 已改成按 `registry.get(platform).quiz_submit` 分发(公需课也能交卷),但 `/api/quiz*` 三个接口仍由莞易学插件注册: 停用莞易学后公需课的「打开测验」会 404。要让接口彻底跟插件解耦,需把它们挪到 `routes/`,并把 AI 答题的提示词 / 解析一起下沉到核心。 - `engine.py` 的 legacy / spa 日志标签、`enable_quiz` / `optQuiz` 字段、`snapshots` 表仍带着莞易学的概念, 有第二个平台再决定是否抽象。 ## 未验证 - 广东公需课:用一门**未学完**的课实测进度上报,确认平台端「已学时长 / 已完成」状态跟着变。 - 广东公需课:**试卷考核**已接入(`utils/exam.py`:解析内嵌题面 → 题库/AI 答题 → `finishTest2` 交卷),待用 一门只差考核的课实测交卷响应与得分。