altair823
05c45c1e10
refactor(v026): #21 hasNoteId type predicate helper
...
기존 4-line narrowing 체인 (e.kind !== 'empty_trash' && ... && ...) 이
union 확장 시 길어짐 → hasNoteId(ev) type predicate 로 통합.
- telemetryEvents.ts: NO_NOTE_ID_KINDS Set + hasNoteId(ev): ev is ... export
- TelemetryService.test.ts: 2 narrowing callsite 단축
- 단위 +2 cases (noteId-bearing / noteId-less)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 01:31:16 +09:00
altair823
a2c17a8b0d
refactor(v026): #5 AiFailedReason union 단일 export 통합
...
기존 'unreachable' | 'schema' | 'timeout' | 'other' literal 이 3곳에 분산:
- telemetryEvents.ts (zod enum AiFailedReason)
- TelemetryService.ts (EmitInput 안 inline literal)
- AiWorker.ts (classifyReason 반환 + AiTelemetryEmitter inline literal)
zod enum z.infer 통해 type 파생, 단일 export AiFailedReason 으로 통합.
- AiFailedReasonSchema (zod enum) + AiFailedReason (type) 둘 다 export
- TelemetryService EmitInput / AiWorker classifyReason / AiTelemetryEmitter
모두 import type AiFailedReason 사용
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-05 01:29:11 +09:00
altair823
b94e68238c
feat(recall): telemetryEvents — recall_shown/opened/dismissed/snoozed zod schemas ( #6 v0.2.3)
...
- RecallShownPayload { noteId, ageDays: int>=0 } .strict()
- recall_opened/dismissed/snoozed → NoteIdPayload 재사용
- TelemetryEventSchema union 15 → 19
- 단위 +3 cases (recall_shown valid, extra field 거부, opened/dismissed/snoozed valid)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-02 13:13:49 +09:00
altair823
b81fc82621
feat(tag-vocab): telemetryEvents — tag_vocab_hit/miss zod schemas ( #3 v0.2.3)
...
- TagVocabHitPayload { tagId: int>0, vocabSize: int>=0 } .strict()
- TagVocabMissPayload { vocabSize: int>=0 } .strict()
- TelemetryEventSchema union 13 → 15
- 단위 +3 cases (hit accept, miss accept, hit extra field 거부)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-02 12:23:31 +09:00
altair823
12c267aabd
feat(retry): telemetry ai_retry_manual + stats AI 수동 재시도 ( #2 v0.2.3)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-02 03:24:31 +09:00
altair823
a68ffe0aeb
feat(ollama): telemetry 3 events — unreachable/recovered/recheck_manual ( #1 v0.2.3)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-02 01:30:26 +09:00
altair823
f76ca06d9e
feat(expiry): telemetry 2 events — expired_banner_shown / expired_batch_trash ( #5 v0.2.3)
2026-05-02 00:08:44 +09:00
altair823
284bfcbdd1
feat(trash): telemetry 4 new kinds (trash/restore/permanent_delete/empty_trash) ( #4 v0.2.3)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 21:05:06 +09:00
altair823
0a0ef11327
feat(telemetry): event schema + privacy invariant ( #7 v0.2.3)
2026-05-01 14:14:19 +09:00