@readerseye2/cr_type 1.0.149 → 1.0.152

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -348,8 +348,39 @@ export interface ReadingAccumulatedState {
348
348
  quizResults: QuizAttemptResult[];
349
349
  quizScore: number;
350
350
  quizMaxScore: number;
351
+ /** 속도 필터 통과한 GI 수 (WPM 계산용) */
352
+ validReadGIs: number;
353
+ /** 유효 읽기 시간 ms (유효 GI가 있는 window만 포함) */
354
+ validReadMs: number;
355
+ /** 추정 WPM (800 초과 시 null) */
356
+ estimatedWpm: number | null;
351
357
  estimatedReadingScore: number;
352
358
  }
359
+ /**
360
+ * 읽기 세션 전체를 아우르는 요약 — 세션 종료 시 localStorage 저장 + 추후 서버 전송
361
+ * - 섹션 전환마다 accumulated 병합하여 누적
362
+ * - accumulated는 섹션 단위 리셋, sessionSummary는 세션 동안 유지
363
+ */
364
+ export interface ReadingSessionSummary {
365
+ /** 세션 전체 GI progress (0~1, 전 섹션 합산) */
366
+ totalExposedCoverage: number;
367
+ /** 속도 필터 통과한 총 GI 수 */
368
+ totalValidReadGIs: number;
369
+ /** 유효 읽기 시간 (ms) */
370
+ totalValidReadMs: number;
371
+ /** 추정 WPM (800 초과 시 null) */
372
+ estimatedWpm: number | null;
373
+ totalBlinks: number;
374
+ /** 분당 깜빡임 (totalValidReadMs 기준) */
375
+ blkPerMinute: number | null;
376
+ totalWordLookups: number;
377
+ lookedUpWords: LookedUpWord[];
378
+ totalQuizScore: number;
379
+ totalQuizMaxScore: number;
380
+ quizResults: QuizAttemptResult[];
381
+ /** 집중듣기 점수: 오디오+시선 GI LINEBREAK 패턴 기반 (placeholder) */
382
+ readingPlayFocusGrade: number | null;
383
+ }
353
384
  export interface ChildDailySummary {
354
385
  childIdx: number;
355
386
  /** KST 기준 날짜 "YYYY-MM-DD" */
@@ -37,8 +37,6 @@ export interface ViewerSnapshot {
37
37
  audio?: AudioSnapshot;
38
38
  range?: RangeSnapshot | null;
39
39
  translate?: TranslateSnapshot | null;
40
- /** 렌더링된 텍스트의 워드 간 평균 거리 (px) — reading saccade 판정용 */
41
- wordAvgDistancePx?: number;
42
40
  /** 녹화 당시 전체 화면 크기 (window.innerWidth) */
43
41
  screenWidth?: number;
44
42
  /** 녹화 당시 전체 화면 크기 (window.innerHeight) */
@@ -180,8 +180,6 @@ export type RecordingSnapshot = {
180
180
  audio?: AudioSnapshot;
181
181
  range?: RangeSnapshot | null;
182
182
  translate?: TranslateSnapshot | null;
183
- /** 렌더링된 run 간 수평 평균 거리 (px) — reading saccade 판정용 */
184
- wordAvgDistancePx?: number;
185
183
  /** 녹화 당시 전체 화면 크기 */
186
184
  screenWidth?: number;
187
185
  screenHeight?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@readerseye2/cr_type",
3
- "version": "1.0.149",
3
+ "version": "1.0.152",
4
4
  "description": "CheckReading shared TypeScript types",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",