@if (workState$ | async; as state) { @switch (state.status) { @case ('loading') {
} @case ('error') {

Не удалось загрузить работу.

} @case ('ok') {

Работа #{{ workId() }}

@switch (activeTabIndex()) { @case (0) {

Сведения о работе

Идентификатор
{{ state.work.id }}
Студент
#{{ state.work.student_id }}
Мероприятие
#{{ state.work.event_id }}
Время
{{ formatDateTime(state.work.time) }}
Архив
@if (state.work.archive_object_key) { {{ state.work.archive_object_key }} } @else { не загружен }
@if (summaryState$ | async; as summaryState) { @if (summaryState.status === 'ok') {

Summary

Risk {{ summaryState.summary.presentation_summary?.risk_level ?? '—' }}
Trust score {{ summaryState.summary.presentation_summary?.trust_score ?? '—' }}
Plagiarism rate {{ summaryState.summary.presentation_summary?.plagiarism_rate ?? '—' }}
Counterparts {{ summaryState.summary.presentation_summary?.counterparts_count ?? 0 }}
} } } @case (1) {

Загрузка архива и запуск проверки

@if (isPolling()) {

Polling статуса запущен...

} @if (latestRun(); as run) {

Текущий статус: {{ run.status | analysisRunStatus }}

}
} @case (2) {

Analysis runs

@if (runsState$ | async; as runsState) { @switch (runsState.status) { @case ('loading') {
} @case ('error') {

Не удалось загрузить runs.

} @case ('ok') { @if (runsState.runs.length === 0) {

Проверки пока не запускались.

} @else { } } } }

Совпадения выбранного run

@if (adoptionsState$ | async; as adoptState) { @switch (adoptState.status) { @case ('idle') {

Выберите run.

} @case ('loading') {
} @case ('error') {

Не удалось загрузить совпадения.

} @case ('ok') {

Всего совпадений: {{ adoptState.adoptions.length }}

@if (adoptState.adoptions.length > 0) {
@for (adoption of adoptState.adoptions; track adoption.id) {
ID
{{ adoption.id }}
Path
{{ adoption.path ?? '—' }}
Score
{{ adoption.similarity_score ?? '—' }}
@if (adoption.segment_excerpt) {

{{ adoption.segment_excerpt }}

}
}
} } } }
} @case (3) {

Teacher report

} } } } }