Files
OJ2/apps/api/src/db/meta/_journal.json
yuetsh a0ef204bd2
Some checks failed
Deploy / deploy (push) Has been cancelled
feat(提交): 采集编辑过程信号,落进 submission_trace
AI 时代 OJ 设计的第 1 步:给「可信 AC」和学情分析攒数据,本身不判任何事。
- 契约:提交请求加可选的 trace(活跃时长、键入/粘贴/删除字符数、切后台次数等,
  只有计数、不含按键内容);写成 .optional().catch(undefined),坏了就当没带,
  不让附带数据把提交挡成 400
- 迁移 0016 建 submission_trace,与 submission 一对一、CASCADE;since_prev_ms
  由服务端在同一条 INSERT 里算(排掉自身),bigint —— 实测已有 44 天的间隔,int4 装不下
- 后端写 trace 失败只记日志,不影响提交
- 前端 oj/problem/utils/editTrace.ts 是模块单例(扩展对象不能过 Pinia 的响应式代理),
  只数带 userEvent 的事务:格式化回写 / 载入草稿 / 协作对方的改动天然排除;
  closeBrackets 越过右括号时是原样替换,按 no-op 跳过。比赛编辑器同样挂上
- 实跑:后端四种请求、前端浏览器里键入/粘贴/删除/setCode 回写/切后台/提交后清零,
  计数与预期逐项一致

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 05:46:55 -06:00

125 lines
2.6 KiB
JSON

{
"version": "7",
"dialect": "postgresql",
"entries": [
{
"idx": 0,
"version": "7",
"when": 1786070652521,
"tag": "0000_crazy_gateway",
"breakpoints": true
},
{
"idx": 1,
"version": "7",
"when": 1787740189021,
"tag": "0001_add_submission_public_create_time_idx",
"breakpoints": true
},
{
"idx": 2,
"version": "7",
"when": 1787740469403,
"tag": "0002_drop_django_leftovers",
"breakpoints": true
},
{
"idx": 3,
"version": "7",
"when": 1787850608174,
"tag": "0003_submission_public_create_time_id_idx",
"breakpoints": true
},
{
"idx": 4,
"version": "7",
"when": 1788271411343,
"tag": "0004_add_tutorial_progress",
"breakpoints": true
},
{
"idx": 5,
"version": "7",
"when": 1788272667927,
"tag": "0005_add_exercise_attempt",
"breakpoints": true
},
{
"idx": 6,
"version": "7",
"when": 1788402925980,
"tag": "0006_drop_contest_announcement",
"breakpoints": true
},
{
"idx": 7,
"version": "7",
"when": 1788408053304,
"tag": "0007_add_submission_problemset_id",
"breakpoints": true
},
{
"idx": 8,
"version": "7",
"when": 1788409130862,
"tag": "0008_drop_ip_columns",
"breakpoints": true
},
{
"idx": 9,
"version": "7",
"when": 1788409690565,
"tag": "0009_drop_django_dead_columns",
"breakpoints": true
},
{
"idx": 10,
"version": "7",
"when": 1788409961010,
"tag": "0010_fk_cascade_on_delete",
"breakpoints": true
},
{
"idx": 11,
"version": "7",
"when": 1788788493497,
"tag": "0011_user_lookup_indexes",
"breakpoints": true
},
{
"idx": 12,
"version": "7",
"when": 1788869393805,
"tag": "0012_drop_redundant_indexes",
"breakpoints": true
},
{
"idx": 13,
"version": "7",
"when": 1788913334948,
"tag": "0013_add_filter_and_metrics_indexes",
"breakpoints": true
},
{
"idx": 14,
"version": "7",
"when": 1789034426259,
"tag": "0014_drop_django_migrations",
"breakpoints": true
},
{
"idx": 15,
"version": "7",
"when": 1789364546358,
"tag": "0015_submission_filter_indexes",
"breakpoints": true
},
{
"idx": 16,
"version": "7",
"when": 1789817209482,
"tag": "0016_add_submission_trace",
"breakpoints": true
}
]
}