전 저장소 리팩터링과 SSOT 정비
This commit is contained in:
parent
14ecbd4e7d
commit
3dfddcac6f
173 changed files with 19679 additions and 6952 deletions
|
|
@ -7,14 +7,7 @@ from datetime import datetime
|
|||
from typing import Any, Callable
|
||||
|
||||
from ..store import InProcSession
|
||||
|
||||
|
||||
_APPROPRIATENESS_SCORE = {
|
||||
"neg": 0.0,
|
||||
"warn": 0.25,
|
||||
"neutral": 0.5,
|
||||
"pos": 1.0,
|
||||
}
|
||||
from .evaluation_contract import GROWTH_APPROPRIATENESS_SCORE_01
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
|
|
@ -80,7 +73,7 @@ def turn_score(ev: dict[str, Any]) -> float | None:
|
|||
if str(ev.get("error") or "").strip():
|
||||
return None
|
||||
raw = str(ev.get("appropriateness") or "").strip().lower()
|
||||
return _APPROPRIATENESS_SCORE.get(raw)
|
||||
return GROWTH_APPROPRIATENESS_SCORE_01.get(raw)
|
||||
|
||||
|
||||
def turn_rapport(ev: dict[str, Any]) -> float | None:
|
||||
|
|
@ -179,7 +172,9 @@ def build_learner_growth(
|
|||
ordered = sorted(learner_sessions, key=lambda sess: sess.created_at)
|
||||
points = [session_growth_point(sess) for sess in ordered]
|
||||
scored = [point for point in points if point.score is not None]
|
||||
rapport_values = [point.rapport for point in points if point.rapport is not None]
|
||||
rapport_values = [
|
||||
point.rapport for point in points if point.rapport is not None
|
||||
]
|
||||
technique_counts: dict[str, int] = {}
|
||||
for sess in ordered:
|
||||
for turn in sess.turns:
|
||||
|
|
@ -223,8 +218,12 @@ def build_learner_growth(
|
|||
first_score=first_score,
|
||||
latest_score=latest_score,
|
||||
score_delta=score_delta,
|
||||
avg_score=avg([point.score for point in scored if point.score is not None]),
|
||||
avg_rapport=avg([value for value in rapport_values if value is not None]),
|
||||
avg_score=avg(
|
||||
[point.score for point in scored if point.score is not None]
|
||||
),
|
||||
avg_rapport=avg(
|
||||
[value for value in rapport_values if value is not None]
|
||||
),
|
||||
trend=trend,
|
||||
top_techniques=top_techniques,
|
||||
points=points if point_limit is None else points[-point_limit:],
|
||||
|
|
@ -234,7 +233,9 @@ def build_learner_growth(
|
|||
return sorted_result if limit is None else sorted_result[:limit]
|
||||
|
||||
|
||||
def recent_feedback_notes(sessions: list[InProcSession], *, limit: int = 5) -> list[dict[str, object]]:
|
||||
def recent_feedback_notes(
|
||||
sessions: list[InProcSession], *, limit: int = 5
|
||||
) -> list[dict[str, object]]:
|
||||
notes: list[dict[str, object]] = []
|
||||
for sess in sorted(sessions, key=session_activity_time, reverse=True):
|
||||
for turn in reversed(sess.turns):
|
||||
|
|
@ -254,7 +255,9 @@ def recent_feedback_notes(sessions: list[InProcSession], *, limit: int = 5) -> l
|
|||
"session_no": sess.session_no,
|
||||
"stage": turn.stage,
|
||||
"turn_seq": turn.turn_seq,
|
||||
"created_at": iso_datetime(turn.created_at) or iso_datetime(session_activity_time(sess)) or "",
|
||||
"created_at": iso_datetime(turn.created_at)
|
||||
or iso_datetime(session_activity_time(sess))
|
||||
or "",
|
||||
"score": turn_score(ev),
|
||||
"rapport": turn_rapport(ev),
|
||||
"note": note,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue