회기 연속성과 멀티 케이스 계약을 영속화
This commit is contained in:
parent
be08c0b573
commit
72353ecd82
26 changed files with 2170 additions and 127 deletions
|
|
@ -104,16 +104,17 @@ class SessionStore:
|
|||
state: SessionState,
|
||||
persona_id: str | None = None,
|
||||
persona_version: int | None = None,
|
||||
case_id: str | 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
|
||||
stable_case_id = case_id or uuid4().hex
|
||||
s = InProcSession(
|
||||
session_id=session_id,
|
||||
case_id=case_id,
|
||||
case_id=stable_case_id,
|
||||
learner_id=learner_id,
|
||||
persona_code=persona.code,
|
||||
theory_mode=theory_mode,
|
||||
|
|
@ -138,6 +139,23 @@ class SessionStore:
|
|||
def list(self) -> list[InProcSession]:
|
||||
return list(self._sessions.values())
|
||||
|
||||
def find_active(
|
||||
self,
|
||||
*,
|
||||
learner_id: str,
|
||||
persona_id: str | None,
|
||||
persona_code: str,
|
||||
) -> Optional[InProcSession]:
|
||||
"""Return the active session for one learner-persona continuity case."""
|
||||
for session in self._sessions.values():
|
||||
if session.ended or session.learner_id != learner_id:
|
||||
continue
|
||||
if persona_id is not None and session.persona_id == persona_id:
|
||||
return session
|
||||
if session.persona_id is None and session.persona_code == persona_code:
|
||||
return session
|
||||
return None
|
||||
|
||||
def append_turn(self, session_id: str, turn: TurnRecord) -> None:
|
||||
s = self._sessions.get(session_id)
|
||||
if s is not None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue