新增 SQL 题型:SQLite 内联判题(不依赖外部沙箱)

- SQL 作为语言接入现有提交流程,judge_task 按 language 分流到 SQLJudgeDispatcher
- judge/sql_runner.py:内存 SQLite 判题核心,查询题比结果集/增删改题比表状态,
  authorizer + progress_handler + max_page_count 三重防护
- dispatcher 提取 _process_judge_result/_push_status 供 SQL 判题复用(行为不变)
- 测试点通道支持 1.sql..N.sql 压缩包,出题只需数据脚本+标准答案
- Problem 增加 sql_config 字段;options 数据迁移注册 SQL 语言

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 17:23:13 -06:00
parent d1a1c05b9f
commit 9f7f818d51
10 changed files with 551 additions and 93 deletions

View File

@@ -86,6 +86,9 @@ class Problem(models.Model):
# AST 代码结构检查规则
ast_rules = models.JSONField(null=True, blank=True, default=None)
# SQL 题配置: {"mode": "query"|"modify", "order_sensitive": bool},非 SQL 题为 None
sql_config = models.JSONField(null=True, blank=True, default=None)
class Meta:
db_table = "problem"
constraints = [