旧 Django 后端 2026-08-26 下线、回滚路径作废,代码里还留着几处以它为前提的
死代码和过期注释。
- PUBLIC_WS_URL / PUBLIC_OJ_URL 全部删除。BaseWebSocket 的
`${PUBLIC_WS_URL}/${path}/` fallback 是 Channels 时代的写法,而三个子类
早就各自传 url,等于永不执行;config.vue 里 PUBLIC_OJ_URL 只是个会被
getWebsiteConfig() 立刻覆盖、且指着 :8000 的假初值。WebSocketConfig.path
随之去掉,url 改成必填。
- vite.config:删掉 /api2、/ws2 的迁移期注释,换成还成立的约束(代理这三段
要和 docker/Caddyfile 同步);newBackend 改名 backend。
- 六处 “回滚时旧后端还要读” 换成真实理由:snake_case 保留的结论不变,但因为
判题机按这套键名写、存量 JSONB 就是这形状。
- CLAUDE.md:数据库一节开头「不写迁移 + 先想清楚回滚」与下一节的 drizzle
migration 自相矛盾,改掉;判题状态码不再要求同步到 OnlineJudge,理由换成
历史 submission.result 和沙箱用的就是这套编码。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
16
CLAUDE.md
16
CLAUDE.md
@@ -95,11 +95,11 @@ dev 直接起不来。
|
||||
|
||||
加完路由跑 `bun run --filter '@oj2/api' check:routes`。
|
||||
|
||||
### 判题状态码要三处同步
|
||||
### 判题状态码不能改
|
||||
|
||||
`apps/api/src/judge/status.ts`、`apps/web/src/utils/constants.ts`、
|
||||
以及上一代的 `../OnlineJudge/submission/models.py`(回滚时要对得上)。
|
||||
题目表情 reaction 的语义 key 同理。
|
||||
`apps/api/src/judge/status.ts` 和 `apps/web/src/utils/constants.ts` 必须一致。
|
||||
这些整数是**落库的值**:12 万条历史提交的 `submission.result` 就是它们,判题沙箱回的也是
|
||||
这套编码,所以只能新增、不能改已有的含义。题目表情 reaction 的语义 key 同理。
|
||||
|
||||
### 比赛只有 ACM 模式
|
||||
|
||||
@@ -112,9 +112,11 @@ dev 直接起不来。
|
||||
|
||||
## 数据库
|
||||
|
||||
Drizzle schema 是从生产库 `drizzle-kit pull` 出来的,**不写迁移**。
|
||||
新旧后端跑在同一套表结构上(阶段 5 演练逐列比对过,零差异),这是回滚能成立的前提 ——
|
||||
所以改 schema 前先想清楚回滚怎么办。
|
||||
Drizzle schema 最初是 `drizzle-kit pull` 从生产库拉出来的,所以它长得像 Django 建的表
|
||||
(表名、bigint/int4 混用、外键全是 NO ACTION),`schema.ts` 顶部记了哪些地方是手工修的。
|
||||
|
||||
**schema 现在归 OJ2 独占。** 旧后端已下线,「改 schema 要考虑回滚」这条约束不再存在,
|
||||
结构变更走下面的 migration 正常演进即可。
|
||||
|
||||
### 改 schema 走 drizzle migration
|
||||
|
||||
|
||||
Reference in New Issue
Block a user