Dev Spec v2 · ← 返回文档首页

03 接口规格

前缀 /api/tt/v1;匿名用户通过 X-Anon-Id 识别,可以玩免费集,注册后进度合并。

1. 内容

方法 路径 说明
GET /seasons?lang=ja 季列表:封面、简介、集数、免费集数、是否已解锁
GET /seasons/{id}/episodes 集列表:标题、时长、完成状态、是否锁定
GET /episodes/{id} 剧本(已按用户的记忆和剧情变量替换占位符)+ 资源链接;未解锁返回 LOCKED 和购买选项
POST /episodes/{id}/progress {"node_id":"n5","vars":{"bag":true}}(前端在节点切换时上报)
POST /episodes/{id}/complete {"rating":4,"feedback":"可选的一句话"} → 返回本集总结(词汇、得分、下集预告)

2. 口语关卡

POST /episodes/{id}/checkpoints/{node_id}(multipart:音频 + kind + attempt_no)

// 返回(跟读)
{"passed": true, "score": 78, "words": [{"w":"袋","score":52,"issue":"pitch accent"}], "next": "n3"}
// 返回(选择)
{"matched_option": 0, "confidence": 0.82, "next": "n4a"}
// 返回(自由回答)
{"understood": true, "reply_text": "映画いいね!", "reply_audio_stream": "/api/tt/v1/stream/abc",
 "correction": {...}, "next": "n6"}

GET /episodes/{id}/checkpoints/{node_id}/hint?level=1|2 → 提示内容。

3. 记忆与学习

方法 路径 说明
GET /me/memories 查看记忆
DELETE /me/memories/{id} 删除一条;DELETE /me/memories 全部删除
GET /me/vocab 词汇本(带复习时间)
POST /me/vocab/review 复习结果
GET /me/stats 连续打卡、周报

4. 角色消息与自由对话(P2)

方法 路径 说明
GET /messages 收到的角色消息
POST /messages/{id}/reply 语音回复(按自由回答处理)
POST /freetalk/sessions {"character_id":"yuki"} → 会话 ID;无 Pro 权益返回 PRO_REQUIRED
POST /freetalk/sessions/{id}/turns 语音一轮;超出每日时长返回 FAIR_USE_LIMIT

5. 安全

方法 路径 说明
POST /me/age {"birth_year": 2001}
POST /me/session-heartbeat 前端每分钟上报一次,服务器判断是否需要休息提醒

危机处理不是单独的接口:关卡或自由对话返回 {"safety": {"action":"pause","resources":[...]}} 时,前端必须暂停剧情并显示求助资源。

6. 后台 /api/tt/admin/v1

路径 说明
POST /seasons {"theme":"...","lang":"ja","level":"beginner","region":"global"} → 启动流水线
GET /seasons/{id}/pipeline 各集各步骤的进度与质检结果
GET /episodes/{id}/health 评分、完成率、各节点退出率、关卡求助率
POST /episodes/{id}/regenerate 手动触发重新生成(一般由定时任务自动触发)
GET /stats/daily 次日留存、完成率、转化率、每集可变成本、内容成本