• Joined on 2026-05-02
wangdl commented on issue wangdl/api-server#115 2026-06-08 20:53:22 +08:00
API-INFO-017 P0 | 首页继续学习接口 【status:todo】

完成报告

交付

GET /learning/continue — 首页继续学习:

@Get("learning/continue")
async continueLearning(req) {
  // 查询最新阅读进度的资料
 
wangdl commented on issue wangdl/api-server#114 2026-06-08 20:51:59 +08:00
API-INFO-016 P0 | 查询资料阅读进度接口 【status:todo】

完成报告

交付

ReadingController.getProgress() — 资料阅读进度查询:

GET /materials/:id/reading-progress?readingTargetType=knowledge_source
Authorization: Bearer…
wangdl closed issue wangdl/api-server#114 2026-06-08 20:51:59 +08:00
API-INFO-016 P0 | 查询资料阅读进度接口 【status:todo】
wangdl commented on issue wangdl/api-server#137 2026-06-08 20:47:03 +08:00
API-INFO-026 P0 | 幂等去重与重复统计测试 【status:todo】

实现提醒(来自 Batch C 审查 F2)

DailyLearningActivity.materialsReadCount 同日重复打开同一资料会重复计数。需去重:同一 (userId, materialId) 当日首次…

wangdl commented on issue wangdl/api-server#131 2026-06-08 20:45:25 +08:00
API-INFO-015 P0 | 写入 LearningRecord 阅读记录 【status:todo】

完成报告

交付

ProcessorService 事务新增 Step 5d — LearningRecord 写入

// 仅在以下事件写入记录:
//   material_opened  → "Reading…
wangdl closed issue wangdl/api-server#131 2026-06-08 20:45:25 +08:00
API-INFO-015 P0 | 写入 LearningRecord 阅读记录 【status:todo】
wangdl closed issue wangdl/api-server#113 2026-06-08 20:44:26 +08:00
API-INFO-014 P0 | 聚合到 DailyLearningActivity 【status:todo】
wangdl commented on issue wangdl/api-server#113 2026-06-08 20:44:25 +08:00
API-INFO-014 P0 | 聚合到 DailyLearningActivity 【status:todo】

完成报告

交付

1. LearningActivityRepository.upsertFromReadingEvent(tx, data) — 时区感知的每日聚合:

// computeActivityDate: clientTimestampMs +…
wangdl commented on issue wangdl/api-server#112 2026-06-08 20:42:04 +08:00
API-INFO-013 P0 | 聚合到 MaterialReadingProgress 【status:todo】

完成报告

交付

1. MaterialReadingProgressService.upsertFromReadingEvent(tx, data) — 事务内聚合方法:

// MaterialOpened → 创建或更新,sessionCoun…
wangdl closed issue wangdl/api-server#112 2026-06-08 20:42:04 +08:00
API-INFO-013 P0 | 聚合到 MaterialReadingProgress 【status:todo】
wangdl commented on issue wangdl/api-server#111 2026-06-08 20:40:17 +08:00
API-INFO-012 P0 | 聚合 ReadingEvent 到 LearningSession 【status:todo】

完成报告

交付

1. LearningSessionRepository.upsertFromReadingEvent(tx, data) — 聚合核心方法:

// MaterialOpened → 新建 session (mode=reading,…
wangdl closed issue wangdl/api-server#111 2026-06-08 20:40:17 +08:00
API-INFO-012 P0 | 聚合 ReadingEvent 到 LearningSession 【status:todo】
wangdl commented on issue wangdl/api-server#111 2026-06-08 20:36:28 +08:00
API-INFO-012 P0 | 聚合 ReadingEvent 到 LearningSession 【status:todo】

实现提醒(来自 Batch B 审查 F6)

ReadingEventProcessorService.processOne()insertReadingEventaggregateEvent 不在同一事务中。

如果聚合失败,事件已写…

wangdl closed issue wangdl/api-server#130 2026-06-08 20:34:25 +08:00
API-INFO-011 P0 | 实现 ReadingEventProcessorService 【status:todo】
wangdl commented on issue wangdl/api-server#130 2026-06-08 20:34:24 +08:00
API-INFO-011 P0 | 实现 ReadingEventProcessorService 【status:todo】

完成报告

交付

reading-event-processor.service.ts — 独立 ProcessorService,6 步处理管线:

class ReadingEventProcessorService {
  processBatch(userId,
wangdl closed issue wangdl/api-server#110 2026-06-08 20:32:25 +08:00
API-INFO-010 P0 | 事件校验、去重、activeSecondsDelta 处理 【status:todo】
wangdl commented on issue wangdl/api-server#110 2026-06-08 20:32:24 +08:00
API-INFO-010 P0 | 事件校验、去重、activeSecondsDelta 处理 【status:todo】

完成报告

交付

reading-event.service.tsprocessBatch() 完整 7 步校验管线:

1. Required fields — eventId / clientSessionId / materialId 缺失 → failed **2.…

wangdl commented on issue wangdl/api-server#109 2026-06-08 20:31:11 +08:00
API-INFO-009 P0 | 实现批量上报阅读事件接口 【status:todo】

完成报告

交付

1. Controllerreading-event.controller.ts:

POST /learning/reading-events/batch
@UseGuards(JwtAuthGuard)

async uploadBatch(req, body:
wangdl closed issue wangdl/api-server#109 2026-06-08 20:31:11 +08:00
API-INFO-009 P0 | 实现批量上报阅读事件接口 【status:todo】
wangdl commented on issue wangdl/api-server#132 2026-06-08 20:23:12 +08:00
API-INFO-021 P1 | 学习历史记录接口 【status:todo】

实现提醒(来自 Batch A 审查 F3)

LearningRecordService.findByUser() 当前不返回分页总数(total count),实现学习历史记录接口时需补齐。

代码位置:`src…