浏览器走查 + 真实 AI 调用暴露出来的,都是「接口好的、界面坏的」,
只靠脚本打 API 永远发现不了。
## 一、AI 功能和测试用例下载全都会 404(我今天造成的)
把 api2.ts 的 baseURL 从 /api2 改成 /api 时,只改了走 axios 实例的调用,
漏掉 5 处不走它的:
oj/store/ai.ts AI 题解分析 原生 fetch("/api2/...")
oj/problem/.../SubmissionResult.vue AI 提示 原生 fetch
oj/rank/list.vue AI 班级分析 原生 fetch
oj/class/pk.vue AI 班级 PK 原生 fetch
utils/download.ts 测试用例下载 独立 axios,baseURL "/api2/admin"
生产的 Caddy 只认 /api,这 5 条全是 404。阶段 0 的端点清单里就写着
「盲点 2:4 处用原生 fetch」「盲点 3:download.ts 是独立 axios 实例」——
我今天读过那份文档,还是漏了。
修完实测四条 AI 链路全通(真实 DeepSeek 调用):
/api/ai/analysis 200 SSE 176 分片 5.2s start→delta→done→end 完整
/api/ai/hint 200 2.4s 且未泄露参考答案
/api/ai/class-analysis 200 12.6s
/api/ai/class-pk-analysis 200 12.6s
落库确认(ai_analysis 新增,model=deepseek-v4-flash 与旧后端一致)。
hint 对别人的提交回 404 是**正确**的,它用 userId 限定只能看自己的。
## 二、4 个字段名永久对不上(重写引入的回归)
适配器只在**大写字母**前插下划线:`top10Avg` → `top10_avg`;
而旧 Django 给的是 `top_10_avg`(数字前也有)。前端还按旧名读。
影响比"三列空白"大:`row.top_10_avg.toFixed(2)` 在 undefined 上抛异常,
Vue 放弃整个子树 —— 班级PK 和班级排名页的**整个「分层统计」面板都不显示**
(Q1/Q3/四分位距/标准差/前10%/中间80%/后10%/人数 全没了),控制台还不报错。
修完实测:前10%均值 194.80、中间80%均值 93.79、后10%均值 49.40 全部出现。
写脚本按这个规律全仓扫过,确认只有这 4 个,改完复查归零。
## 三、.gitignore 差一点把生产库提交上去
原来只忽略 data/test_case/ 和 data/judge_server/,而 compose 会在
data/postgres/ 生成**整个数据库**(含 raw_password 明文列)、data/redis/、
data/backend/(学生上传的文件)。这次 `git add -A` 报权限错误才发现 ——
只因为 postgres 容器用别的 uid、目录读不了才没提交成功。改成忽略整个 data/。
已确认历史里从没提交过这些。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
34 lines
1.0 KiB
Plaintext
34 lines
1.0 KiB
Plaintext
node_modules/
|
||
dist/
|
||
build/
|
||
*.log
|
||
|
||
.env
|
||
.env.*
|
||
!.env.example
|
||
!apps/web/.env.production
|
||
!apps/web/.env.staging
|
||
!apps/web/.env.test
|
||
|
||
.DS_Store
|
||
.vscode/
|
||
.idea/
|
||
|
||
# spike 的依赖不入库,spike 源码与依赖清单入库
|
||
# 只排除脚本产物(endpoints-*.json),package.json / bun.lock 必须入库,
|
||
# 否则 spike 换台机器就跑不起来(曾漏掉三个 tree-sitter 依赖,ast-spike.ts 直接报错)
|
||
docs/spikes/node_modules/
|
||
docs/spikes/endpoints-*.json
|
||
|
||
# data/ 整个目录都是运行时数据,一律不进版本库。
|
||
#
|
||
# 必须写成整目录:原来只忽略了 test_case/ 和 judge_server/,而
|
||
# docker/compose.*.yml 会在这里生成 data/postgres/(**整个数据库**,含
|
||
# raw_password 明文列)、data/redis/、data/backend/(学生上传的文件)。
|
||
# 阶段 5 演练时 `git add -A` 差一点就把生产库快照提交上去,只因为 postgres
|
||
# 容器用的是别的 uid、目录读不了才失败。别再收窄这条。
|
||
data/
|
||
|
||
# 生产题目样本只用于本地验收,不进入 git
|
||
*.csv
|