refactor(study): SR 산술 sr_schedule.py 공용추출 (B1 — 카드 SR 토대)
문제 SR과 카드 SR이 같은 간격 상수·산술을 참조하도록 순수함수 추출. 운영 동작 무변경.
- app/services/study/sr_schedule.py: REVIEW_INTERVAL_DAYS{1:3,2:7,3:14}/MASTERED=4/FIRST_DUE=1
+ advance(stage,outcome,now)→(new_stage,new_due) | None(skipped) + first_due(now).
진입 게이트(due_at IS NOT NULL/최초 due/skipped 불변)는 호출부 잔류(finalize vs review-complete 정책 차이).
- session_finalize.py: 상수·advance 분기 → sr_schedule import + sr_advance() (re-export 유지).
- study_question_progress.py: DEFAULT_FIRST_DUE_DAYS → sr_schedule import.
- 회귀 테스트 7/7: 전진 1·3·7·14·졸업·리셋·skipped불변·상수 + 전 stage×outcome 구 로직 바이트 동등.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,8 +26,8 @@ from models.user import User
|
||||
|
||||
router = APIRouter(prefix="/study-topics", tags=["study-progress"])
|
||||
|
||||
# 1차 due_at 부여 시 디폴트 1일 뒤
|
||||
DEFAULT_FIRST_DUE_DAYS = 1
|
||||
# 1차 due_at 부여 시 디폴트 1일 뒤 — SR 상수는 sr_schedule.py 단일 source (재-export).
|
||||
from services.study.sr_schedule import DEFAULT_FIRST_DUE_DAYS # noqa: E402,F401
|
||||
|
||||
|
||||
def _verify_topic_owner(topic: StudyTopic | None, user: User) -> None:
|
||||
|
||||
Reference in New Issue
Block a user