---
type: schema
node_id: schema:question-gen-runs
title: "表结构: question_gen_runs（出题批次）"
date: 2026-07-12
---

# 表结构: question_gen_runs（出题批次）

出题管线 v2 的批次级运行记录。每次 `tools/generate_questions.py generate` 执行产生一行。

## 列定义

| 列名 | 类型 | 约束 | 说明 |
|------|------|------|------|
| `run_id` | TEXT | PK | 生成批次唯一 ID（UUID） |
| `git_sha` | TEXT | NOT NULL | 代码版本（HEAD commit） |
| `config_snapshot` | TEXT | | 科研配置 YAML 快照（JSON 序列化） |
| `started_at` | TEXT | NOT NULL | ISO8601 开始时间 |
| `finished_at` | TEXT | | ISO8601 结束时间（运行中为 NULL） |
| `status` | TEXT | NOT NULL | running / completed / failed |
| `total_slots` | INTEGER | | 目标题数（默认 240） |
| `accepted` | INTEGER | | 过门题数 |
| `rejected` | INTEGER | | 最终拒绝题数 |
| `heavy_sampled` | INTEGER | | 重量抽检题数 |

## DDL

```sql
CREATE TABLE IF NOT EXISTS question_gen_runs (
    run_id        TEXT PRIMARY KEY,
    git_sha       TEXT NOT NULL,
    config_snapshot TEXT,
    started_at    TEXT NOT NULL,
    finished_at   TEXT,
    status        TEXT NOT NULL DEFAULT 'running',
    total_slots   INTEGER,
    accepted      INTEGER,
    rejected      INTEGER,
    heavy_sampled INTEGER
);
```

## 埋点位置

| 代码位置 | 动作 | 时机 |
|---------|------|------|
| `tools/generate_questions.py::generate` 入口 | INSERT（status=running） | 批次开始 |
| `tools/generate_questions.py::generate` 结尾 | UPDATE（finished_at/status/统计汇总） | 批次结束 |

## 查询模式

```sql
-- 最近一次成功运行
SELECT * FROM question_gen_runs WHERE status='completed' ORDER BY started_at DESC LIMIT 1;
-- 产能统计
SELECT accepted, rejected, heavy_sampled, total_slots FROM question_gen_runs WHERE run_id=?;
```
