feat: complete pragativeer v2 frontend and backend, docker setup, and cbt engine

This commit is contained in:
2026-07-06 17:08:13 +05:30
parent ce01795aa9
commit 426b98ddab
66 changed files with 7949 additions and 363 deletions

34
backend/ai_coach.py Normal file
View File

@@ -0,0 +1,34 @@
from datetime import datetime, timedelta
from typing import Tuple
def calculate_sm2(q: int, repetitions: int, ease_factor: float, previous_interval: int) -> Tuple[int, float]:
"""
Implements the standard SuperMemo-2 (SM-2) algorithm.
q: quality of the response (0-5)
5: perfect response
4: correct response after a hesitation
3: correct response caught with serious difficulty
2: incorrect response; where the correct one seemed easy to recall
1: incorrect response; the correct one remembered
0: complete blackout
"""
if q < 3:
# If the answer was incorrect, reset repetitions and schedule for immediate review (1 day)
return 1, ease_factor
# Calculate new Easiness Factor
new_ef = ease_factor + (0.1 - (5 - q) * (0.08 + (5 - q) * 0.02))
if new_ef < 1.3:
new_ef = 1.3
# Calculate next interval (in days)
if repetitions == 0:
new_interval = 1
elif repetitions == 1:
new_interval = 3 # Calibrated for intense JEE/NEET daily sprint cycles
elif repetitions == 2:
new_interval = 7
else:
new_interval = round(previous_interval * new_ef)
return new_interval, new_ef