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