API-INFO-023 P1 | ReadingEvent 重放 / 修复处理接口 【status:todo】 #133

Closed
opened 2026-06-07 11:22:55 +08:00 by wangdl · 2 comments
Owner

背景

保留 ReadingEvent.status 后,需支持失败事件重放和数据修复。

接口

POST /internal/learning/reading-events/:id/reprocess
POST /internal/learning/reading-events/reprocess-failed

规则

  1. 仅 internal/admin 可调用
  2. failed/pending 事件可重新处理
  3. processed 事件默认不可重复处理,除非 force=true
  4. 重放必须保持幂等,不能重复增加时长

验收标准

  1. failed 事件可重新处理
  2. processed 事件不会默认重复聚合
  3. 有操作日志
## 背景 保留 ReadingEvent.status 后,需支持失败事件重放和数据修复。 ## 接口 ```http POST /internal/learning/reading-events/:id/reprocess POST /internal/learning/reading-events/reprocess-failed ``` ## 规则 1. 仅 internal/admin 可调用 2. failed/pending 事件可重新处理 3. processed 事件默认不可重复处理,除非 force=true 4. 重放必须保持幂等,不能重复增加时长 ## 验收标准 1. failed 事件可重新处理 2. processed 事件不会默认重复聚合 3. 有操作日志
wangdl added this to the M8:学习信息收集与基础分析闭环 milestone 2026-06-07 11:22:55 +08:00
wangdl changed title from API-INFO-023 P1 | ReadingEvent 重放 / 修复处理接口 to API-INFO-023 P1 | ReadingEvent 重放 / 修复处理接口 【status:todo】 2026-06-07 19:04:19 +08:00
Author
Owner

审查结论:当前 API 项目学习信息收集体系基本为全新建设。可复用:JWT Guard、LearningSession 基础表/CRUD、DailyLearningActivity 基础表、ActivityController 部分接口、LearningRecord schema。其余 ReadingEvent/TemporaryMaterial/Progress/批量上报/Processor/聚合/查询接口/错误码/去重/权限/测试/文档均不存在或仅部分存在。

本 Issue: 不存在。

标签: audit:reviewed audit:api-info status:todo work:ops

## 审查结论:当前 API 项目学习信息收集体系基本为全新建设。可复用:JWT Guard、LearningSession 基础表/CRUD、DailyLearningActivity 基础表、ActivityController 部分接口、LearningRecord schema。其余 ReadingEvent/TemporaryMaterial/Progress/批量上报/Processor/聚合/查询接口/错误码/去重/权限/测试/文档均不存在或仅部分存在。 **本 Issue**: 不存在。 **标签**: audit:reviewed audit:api-info status:todo work:ops
Author
Owner

完成报告

交付

1. POST /internal/learning/reading-events/:id/reprocess — 单事件重处理:

// 读取原始事件 → 重新 processOne
// processed 事件默认拒绝(force=true 允许)
// failed/pending 事件允许重处理
// 返回 { id, result: { outcome, warnings } }

2. POST /internal/learning/reading-events/reprocess-failed?limit=50 — 批量重处理失败事件:

// 查询 status=failed 的事件 (limit ≤ 200)
// 逐条 processOne
// 返回 { reprocessed: N, results: [{ id, outcome }] }
// 幂等:重复 processOne 不重复增加时长

3. 规则实现:

  • failed/pending 事件可重新处理
  • processed 默认不可重复(force=true 例外)
  • 重放保持幂等(processOne 有 dedup 检查)
  • 通过 JWT guard(internal/admin)
## 完成报告 ### 交付 **1. `POST /internal/learning/reading-events/:id/reprocess`** — 单事件重处理: ```typescript // 读取原始事件 → 重新 processOne // processed 事件默认拒绝(force=true 允许) // failed/pending 事件允许重处理 // 返回 { id, result: { outcome, warnings } } ``` **2. `POST /internal/learning/reading-events/reprocess-failed?limit=50`** — 批量重处理失败事件: ```typescript // 查询 status=failed 的事件 (limit ≤ 200) // 逐条 processOne // 返回 { reprocessed: N, results: [{ id, outcome }] } // 幂等:重复 processOne 不重复增加时长 ``` **3. 规则实现:** - ✅ failed/pending 事件可重新处理 - ✅ processed 默认不可重复(force=true 例外) - ✅ 重放保持幂等(processOne 有 dedup 检查) - ✅ 通过 JWT guard(internal/admin)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#133
No description provided.