개선관리 요구사항과 Google 로그인을 완료

This commit is contained in:
Yun Chan 2026-08-28 16:07:09 +09:00
parent cc0a15b7c6
commit 2a39636163
112 changed files with 10166 additions and 527 deletions

View file

@ -62,6 +62,10 @@ class InProcSession:
theory_mode: str
persona: PersonaCard
state: SessionState
# 승인된 불변 카드의 DB 식별자. 코드만으로는 같은 코드의 버전 핀을
# 증명할 수 없으므로 런타임 read model에도 복합 키를 보존한다.
persona_id: str | None = None
persona_version: int | None = None
session_no: int = 1
created_at: float = field(default_factory=time.time)
ended_at: Optional[float] = None
@ -70,6 +74,8 @@ class InProcSession:
prev_rapport_credit: float = 0.0 # carry-over delta 계산용
learner_label: str | None = None
goal_stages: list[str] = field(default_factory=list) # 이번 회기 목표 단계(학습자 선택, 최대 4)
# 계정 설정 변경과 진행 중 회기의 race를 막는 회기 시작 시점 정책 스냅샷.
learner_feedback_enabled: bool = True
def turns_visible_to(self, role: str) -> list[TurnRecord]:
return [turn for turn in self.turns if turn.is_visible_to(role)]
@ -96,9 +102,12 @@ class SessionStore:
persona: PersonaCard,
theory_mode: str,
state: SessionState,
persona_id: str | None = None,
persona_version: int | None = None,
session_no: int = 1,
carry_rapport: float = 0.0,
goal_stages: list[str] | None = None,
learner_feedback_enabled: bool = True,
) -> InProcSession:
session_id = uuid4().hex
case_id = uuid4().hex
@ -110,9 +119,12 @@ class SessionStore:
theory_mode=theory_mode,
persona=persona,
state=state,
persona_id=persona_id,
persona_version=persona_version,
session_no=session_no,
prev_rapport_credit=carry_rapport,
goal_stages=list(goal_stages or []),
learner_feedback_enabled=learner_feedback_enabled,
)
self._sessions[session_id] = s
return s