vignette/apps/api/app/services/evaluation_contract.py
2026-07-15 21:31:30 +09:00

25 lines
776 B
Python

"""Shared fast-loop evaluation labels and explicit score projections."""
from __future__ import annotations
from typing import Literal
Appropriateness = Literal["pos", "warn", "neutral"]
APPROPRIATENESS_VALUES: tuple[Appropriateness, ...] = ("pos", "warn", "neutral")
# Persistence uses the rubric's 1..5 scale. Keep this projection distinct from
# the learner-growth 0..1 normalization below.
PERSISTED_APPROPRIATENESS_SCORE_5PT: dict[Appropriateness, float] = {
"warn": 1.0,
"neutral": 3.0,
"pos": 5.0,
}
# ``neg`` is retained only for legacy stored evaluations; current evaluator
# output is restricted to APPROPRIATENESS_VALUES.
GROWTH_APPROPRIATENESS_SCORE_01: dict[str, float] = {
"neg": 0.0,
"warn": 0.25,
"neutral": 0.5,
"pos": 1.0,
}