fix: разбор показывает все решения и балл карточки после разбора, вес отметки преподавателя в настройке
This commit is contained in:
parent
b61036b6fc
commit
a848f89da0
2 changed files with 10 additions and 4 deletions
|
|
@ -90,7 +90,8 @@ export function Debrief({ report, big = false }: { report: SessionReport; big?:
|
|||
{Boolean(report.card_results?.length) && <section className="debrief-card-results">
|
||||
<h3>Карточки занятия ({report.card_results!.length})</h3>
|
||||
{report.card_results!.map((card, index) => <details key={card.card_id}>
|
||||
<summary>Карточка {index + 1}: {card.title || card.scenario_id} · {card.score_auto.toFixed(0)} / 100
|
||||
<summary>Карточка {index + 1}: {card.title || card.scenario_id} · {(card.score_reviewed ?? card.score_auto).toFixed(0)} / 100
|
||||
{card.score_reviewed != null && ` после разбора (автооценка ${card.score_auto.toFixed(0)})`}
|
||||
{card.address ? ` · ${card.address}` : ""}</summary>
|
||||
{card.managed_service && <p><strong>Ответственная служба:</strong> {card.managed_service}</p>}
|
||||
<p><strong>Ответ диспетчера:</strong> {card.reply_text || "не внесён"}</p>
|
||||
|
|
@ -146,9 +147,9 @@ export function Debrief({ report, big = false }: { report: SessionReport; big?:
|
|||
{finding.summary}
|
||||
<div className="ref">{finding.fact}{finding.norm && ` · ${finding.norm}`}</div>
|
||||
{finding.source === "instructor" && <div className="ref">отметка преподавателя {finding.author ?? ""}</div>}
|
||||
{finding.review && <div className="ref">
|
||||
{finding.review.decision === "dismissed" ? "снята" : "подтверждена"} преподавателем: {finding.review.reason}
|
||||
</div>}
|
||||
{(finding.reviews ?? []).map((review, reviewIndex) => <div className="ref" key={reviewIndex}>
|
||||
{review.decision === "dismissed" ? "снята" : "подтверждена"} преподавателем {review.author}: {review.reason}
|
||||
</div>)}
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ const CARD_METRICS = OPERATOR_METRICS.filter(({ key }) => [
|
|||
"required_fields", "description_grammar", "card_fill_time",
|
||||
].includes(key));
|
||||
const CALL_METRICS = OPERATOR_METRICS.filter(({ key }) => key !== "card_fill_time");
|
||||
// Метрика появляется, только когда ручной отметке преподавателя нечего провалить.
|
||||
const REVIEW_METRICS: MetricOption[] = [
|
||||
{ key: "instructor_finding", label: "Отметка преподавателя", hint: "Ручная отметка на разборе без связанной метрики (например, D4)." },
|
||||
];
|
||||
|
||||
export function ScoreWeightsEditor({
|
||||
exercise,
|
||||
|
|
@ -57,6 +61,7 @@ export function ScoreWeightsEditor({
|
|||
: exercise === "card_dds"
|
||||
? [["Карточка КИО", CARD_METRICS], ["Реагирование ДДС", DDS_METRICS]]
|
||||
: [["Опрос 112", CALL_METRICS], ["Реагирование ДДС", DDS_METRICS]];
|
||||
groups.push(["Разбор", REVIEW_METRICS]);
|
||||
|
||||
function setWeight(key: string, raw: string) {
|
||||
const next = { ...values };
|
||||
|
|
|
|||
Loading…
Reference in a new issue