You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 atomic split 전략(카드당 1 fact, max 80자, 1 Cloze)을 mobile-friendly 전략으로 전환한다. split/compact/skip 삼자택일 operation 모델을 도입하여, LLM이 카드 특성에 맞는 최적 작업을 판정한다. 과도한 분할로 인한 학습 효과 저하 문제를 해결한다.
Context
현 상태: SuperMemo "Minimum Information Principle"을 엄격하게 적용하여 카드를 극도로 잘게 분할함 (예: CSS 명시도 1매 → 11매, DNS 1매 → 10매)
문제점: 이력 목록의 대부분이 "rejected" 상태. 과도한 분할이 오히려 학습 효과를 저하시킴
필요성: "모바일 AnkiDroid에서 스크롤 없이 표시"를 기준으로, split/compact/skip을 LLM이 판단하는 유연한 전략 필요
Summary
현재 atomic split 전략(카드당 1 fact, max 80자, 1 Cloze)을 mobile-friendly 전략으로 전환한다. split/compact/skip 삼자택일 operation 모델을 도입하여, LLM이 카드 특성에 맞는 최적 작업을 판정한다. 과도한 분할로 인한 학습 효과 저하 문제를 해결한다.
Context
Related Commits
fe8c118— refactor: Hard Split 제거 및 Split 단일화 (refactor: Hard Split 제거 및 Split 단일화 #45)0338005— docs: mobile-friendly split + compact 디자인 스펙 초안62ef2d4— docs: 2차 spec review suggestion 반영 및 status 업데이트038b2fd— docs: mobile-friendly split + compact 구현 계획 작성Affected Files
packages/core/src/parser/text-length.tspackages/core/src/gemini/validator.tspackages/core/src/splitter/atomic-converter.tsanalyzeForOptimization(Cloze 수 OR 텍스트 길이 초과)packages/core/src/gemini/prompts.tsbuildOptimizationPromptpackages/core/src/gemini/client.tsrequestCardOptimization,estimateOptimizationCostpackages/core/src/prompt-version/types.tspackages/server/src/routes/split.tspackages/server/src/routes/cards.tsneedsOptimization, filter aliaspackages/server/src/history/store.tspackages/web/src/pages/SplitWorkspace.tsxpackages/web/src/pages/CardBrowser.tsxcanSplit→needsOptimizationpackages/web/src/components/card/AuditReportPanel.tsxpackages/web/src/components/card/CompactDiffView.tsxProposed Changes
Core Layer
computeTextLength유틸리티 추가 (HTML/Cloze/Callout 제거 후 순수 텍스트 길이)operation: split | compact | skip) + 레거시shouldSplit폴백 변환analyzeForOptimization— Cloze 수 OR 텍스트 길이(500자) 초과 시 트리거SYSTEM_PROMPT전면 개편: atomic → mobile-friendly, operation 판정 가이드, compact 지침buildOptimizationPrompt+OPTIMIZATION_RESPONSE_FORMATrequestCardOptimization,estimateOptimizationCostREJECTION_REASONS업데이트 (char-exceeded제거,over-compressed/info-lost추가)Server Layer
routes/cards.ts—needsOptimization, filter aliasroutes/split.ts— operation 분기 (preview: split/compact/skip, apply: split/compact)operation컬럼,markGenerated/markAppliedcompact 분기Web Layer
OptimizationPreviewResultdiscriminated union 타입needsOptimizationNotes
docs/superpowers/specs/2026-03-22-mobile-friendly-split-design.mddocs/superpowers/plans/2026-03-22-mobile-friendly-split.mdrequestCardSplit등)은 deprecated wrapper로 유지하여 하위 호환 보장requestCardSplit재사용 → 이 리팩토링 완료 후requestCardOptimization으로 전환 필요MAX_TEXT_LENGTH = 500은 모바일 AnkiDroid 실제 테스트 후 튜닝 예정