[app-task] refactor: 纯调度执行器 + WebUI 登录 + 定时出题链路修复与独立部署 - #83
Merged
Conversation
- 删除 xxl-job/mongo/notification_worker/app_client/latex 等旧执行器实现,重构为 通用 task/task_log 纯调度 + executor(http/lua) + queue(WAL) + email_queue 投递 - 新增嵌入式 WebUI 控制台(go:embed):独立 /login 登录页 + 用户名密码登录 (webui_user 表,bcrypt,默认 admin/app-task-admin,仅 admin 管账户) + 会话 Cookie + 每IP限流/CORS/安全响应头 - 新增 app-task/docker-compose.yml 独立启动(自带 MySQL,不拉起主栈) + .env.example - default.yaml/README 同步
…erdue_emailed)并新增 repository/quiz_task_repository - internal_quiz:task_id 改可选走 X-Task-Id 头兜底(原必填导致 Pydantic 422), generate 使用解析后的 task_id - task_quiz register:uid 进 payload(否则业务行 uid=0,detail 按真实 uid 404) - cc_emails 为 JSON 列:写入 json.dumps / 读取 json.loads(1064 语法错误修复) - quiz_task INSERT 补 overdue_emailed(1364 无默认值修复)+ models server_default - 数据访问从 services 下沉 repository/quiz_task_repository.py(服务层只留业务编排) - 移除旧 task_quiz_task 迁移逻辑(database.py/system.sql/models.py)
lifespan 函数内在第 227 行使用 asyncio.create_task,但 asyncio 到函数内 崩溃恢复块才局部 import,被当作函数局部变量未绑定即引用而报错;改为顶部 模块级 import 并移除函数内局部 import
- TaskQuizListItem 改 taskType+payload(app-task 列表不再返回 prompt)
- getTask 改打 /tasks/{id}/detail(业务详情在主 app);未触发任务 404 时
用列表项合成待触发视图兜底
- 状态枚举补 generating/awaiting_answer/running(业务态与调度态并集)
- 详情页/列表页/答题页适配新字段与状态;脚本审计 operator 填登录用户名
…ail/send、scripts)
- CLAUDE.md §2.7/§5/§11 对齐纯调度器架构与数据归属;README 部署启动指向 docs/ - app-task/README、docs/app-task.md、docs/setup-guide.md、根 .env.example 同步 独立 compose、默认 admin 登录、废弃变量标注
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概述
将 app-task 从旧「出题执行器」重构为纯调度执行器(通用 task/task_log + executor + queue),补全定时出题全链路契约修复,并新增 WebUI 控制台(用户名+密码登录) 与 独立 docker-compose 部署。
改动(按模块 7 个 commit)
b6c27af9a0a3e4task_id走 X-Task-Id 头兜底(修 422)、uid进 payload(修 detail 404)、cc_emailsJSON 列读写(修 1064)、INSERT 补overdue_emailed(修 1364);数据访问下沉repository/quiz_task_repository.py3dbf128asyncio未导入导致启动失败b9ee7d3/tasks/{id}/detail详情端点 + 404 兜底)68ed17c9cec6e82f98711验证
py_compile通过go test ./...(app-task)全量通过(含 WebUI 登录/限流/页面门禁/账户管理测试)node --check(WebUI SPA)部署注意
admin/app-task-admin,生产务必登录后在「账户」页改密cd app-task && docker compose up -d --build独立拉起(不依赖主栈)