• Joined on 2026-05-02
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…

wangdl commented on issue wangdl/api-server#119 2026-06-08 20:19:40 +08:00
API-INFO-007 P0 | 新增 LearningRecord 模块 【status:partial】

完成报告

交付

src/modules/learning-record/ — NestJS 模块:

1. learning-record.service.ts — 完整 CRUD:

class LearningRecordService {
  create({
wangdl closed issue wangdl/api-server#119 2026-06-08 20:19:40 +08:00
API-INFO-007 P0 | 新增 LearningRecord 模块 【status:partial】
wangdl commented on issue wangdl/api-server#127 2026-06-08 20:16:34 +08:00
API-INFO-006 P0 | 扩展 DailyLearningActivity 字段与 Repository 【status:partial】

完成报告

交付

1. Prisma SchemaDailyLearningActivity 新增 3 个 M8 字段:

model DailyLearningActivity {
  // ... 现有字段 (durationSeconds, sessionsCoun…
wangdl closed issue wangdl/api-server#127 2026-06-08 20:16:34 +08:00
API-INFO-006 P0 | 扩展 DailyLearningActivity 字段与 Repository 【status:partial】