Skip to content

API与可观察数据 ​

所有路径相对http://localhost:8000。设置API_KEY后,每个/api/请求必须携带X-API-Key;工作台支持输入此值,网页不会持久化密钥。/health与静态工作台不要求密钥。本系统是本地单用户学习服务,没有生产多租户身份系统。

方法与路径输入输出/用途
POST /api/jobsRequest主题、等级、语言、地区、book_id、修订上限、场景job,后台开始执行
GET /api/jobs无最近100个任务
GET /api/jobs/job idjob、versions、reviews、tasks、最近300个events
GET /api/jobs/{id}/diffbefore、after版本参数按稳定block ID比较内容
POST /api/jobs/{id}/decisionaction、expected_version、note、edits、override人工通过/退回/终止入队
POST /api/jobs/{id}/editexpected_version、edits、note新教材版本、新epoch、审核失效
POST /api/jobs/{id}/recover无失败恢复原线程;终止恢复新epoch
GET /api/jobs/{id}/delivery无最新批准且资源完整的ZIP
POST /api/documentsname/text/level/language/region/source_url/facts资料版本、chunk数量、namespace
GET /api/documents无全部资料版本与active标记
GET /api/searchquery、level、language、region、strategy片段、文档/版本、offset、score
GET/POST /api/rulesRules结构读取或保存更高版本地区规则
POST /api/tasks/{id}/resolvereconcile或retry;重复风险确认回执核对或明确重试
GET /api/tasks/{id}/assettask id已成功任务对应资源

完整字段约束从运行中的/docs、/openapi.json与python -m app.cli schemas获取,避免手写文档与Schema漂移。

人工通过示例 ​

先查询任务,替换JOB_ID和expected_version,不要把示例数字当成永远正确:

bash
curl -X POST http://localhost:8000/api/jobs/JOB_ID/decision \
  -H 'Content-Type: application/json' \
  -d '{"action":"approve","expected_version":2,"note":"已核对教材与来源"}'

旧版本返回409;仍有error/critical问题返回400。必须人工明确给出override=true和理由才能覆盖问题,覆盖不会伪装成评审通过。

局部修订示例 ​

json
{
  "expected_version": 2,
  "edits": [{
    "block_id": "c1-practice",
    "text": "请计算:2 + 2 = ?",
    "translation": "Calculate: 2 + 2 = ?",
    "answer": "4"
  }],
  "note": "修正参考答案"
}

人工编辑允许修改现有块,不提供章节增删或任意JSON Patch。编辑不默默复用旧批准;新版本必须重新评审。结构性修改目前应建立新任务,这是已知范围,不是假装有完整富文本编辑器。

事件读法 ​

从retrieved看到资料范围与冲突;从model_call看到role、上下文hash、Token和耗时;从tool_denied识别越权;从version_saved/reviewed定位教材变化;从task_finished/lease_recovered看失败恢复;从asset_reused理解内容寻址;delivery_ready才代表当前版本可交付。

事件不是完整审计系统:默认最多返回300条,没有分页导出与保留周期策略。没有记录模型隐藏思维链;可追踪的是必要输入快照、结构化结果与执行事件。

学习复现系统 · 事实、实验与假设分开记录