задачи 2 и 8
This commit is contained in:
98
frontend/admin/views/schedule-quality.html
Normal file
98
frontend/admin/views/schedule-quality.html
Normal file
@@ -0,0 +1,98 @@
|
||||
<section class="quality-lab" aria-labelledby="quality-lab-title">
|
||||
<header class="quality-hero">
|
||||
<div class="quality-hero-copy">
|
||||
<span class="quality-kicker">Диагностика · публикация или черновик</span>
|
||||
<h2 id="quality-lab-title">Качество видно до перестановок</h2>
|
||||
<p>
|
||||
Анализатор находит окна, перегруженные дни, неудачные аудитории и нарушения
|
||||
пожеланий. Черновик можно оценить до публикации, не показывая промежуточное
|
||||
расписание студентам и преподавателям.
|
||||
</p>
|
||||
</div>
|
||||
<div class="quality-run-panel">
|
||||
<label for="quality-semester">Семестр</label>
|
||||
<select id="quality-semester" data-native-select="true">
|
||||
<option value="">Загрузка семестров…</option>
|
||||
</select>
|
||||
<label for="quality-version">Версия</label>
|
||||
<select id="quality-version" data-native-select="true">
|
||||
<option value="">Сначала выберите семестр</option>
|
||||
</select>
|
||||
<button type="button" class="btn btn-md btn-primary" id="quality-run">
|
||||
Выполнить анализ
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="quality-status" id="quality-status" role="status" aria-live="polite">
|
||||
Выберите семестр, чтобы получить объяснимую оценку.
|
||||
</div>
|
||||
|
||||
<div class="quality-results" id="quality-results" hidden>
|
||||
<section class="quality-scoreboard" aria-label="Итог анализа">
|
||||
<div class="quality-score-orbit" id="quality-score-orbit">
|
||||
<svg class="quality-score-ring" viewBox="0 0 36 36" aria-hidden="true">
|
||||
<circle class="quality-score-ring-track" cx="18" cy="18" r="15.9155"></circle>
|
||||
<circle class="quality-score-ring-value" id="quality-score-ring-value"
|
||||
cx="18" cy="18" r="15.9155" pathLength="100"></circle>
|
||||
</svg>
|
||||
<div class="quality-score-inner">
|
||||
<strong id="quality-score">—</strong>
|
||||
<span>из 100</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="quality-score-copy">
|
||||
<span class="quality-score-band" id="quality-score-band">Нет данных</span>
|
||||
<h3 id="quality-semester-label">Семестр</h3>
|
||||
<p id="quality-score-summary"></p>
|
||||
<div class="quality-score-meta" id="quality-score-meta"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="quality-metrics" id="quality-metrics" aria-label="Метрики качества"></section>
|
||||
|
||||
<section class="quality-workbench">
|
||||
<div class="quality-problems-column">
|
||||
<div class="quality-section-heading">
|
||||
<div>
|
||||
<span class="quality-kicker">Карта неудобств</span>
|
||||
<h3>Что снижает оценку</h3>
|
||||
</div>
|
||||
<span class="quality-problem-total" id="quality-problem-total"></span>
|
||||
</div>
|
||||
|
||||
<div class="quality-filters">
|
||||
<label>
|
||||
Важность
|
||||
<select id="quality-severity-filter" data-native-select="true">
|
||||
<option value="">Все уровни</option>
|
||||
<option value="CRITICAL">Критические</option>
|
||||
<option value="HIGH">Высокие</option>
|
||||
<option value="MEDIUM">Средние</option>
|
||||
<option value="LOW">Низкие</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
Категория
|
||||
<select id="quality-type-filter" data-native-select="true">
|
||||
<option value="">Все категории</option>
|
||||
<option value="GAPS">Окна и компактность</option>
|
||||
<option value="LOAD">Дневная нагрузка</option>
|
||||
<option value="ROOM">Аудитории</option>
|
||||
<option value="PREFERENCE">Пожелания</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="quality-problems" id="quality-problems"></div>
|
||||
</div>
|
||||
|
||||
<aside class="quality-recommendations" id="quality-recommendations" aria-live="polite">
|
||||
<div class="quality-recommendations-empty">
|
||||
<span class="quality-recommendations-mark">↗</span>
|
||||
<h3>Локальные улучшения</h3>
|
||||
<p>Выберите проблему, чтобы проверить свободные слоты и аудитории.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
79
frontend/admin/views/schedule-versions.html
Normal file
79
frontend/admin/views/schedule-versions.html
Normal file
@@ -0,0 +1,79 @@
|
||||
<section class="version-studio" aria-labelledby="version-studio-title">
|
||||
<header class="version-hero">
|
||||
<div>
|
||||
<span class="version-eyebrow">Контур публикации</span>
|
||||
<h2 id="version-studio-title">Расписание меняется за кулисами</h2>
|
||||
<p>Черновики изолированы от студентов и преподавателей. Сравните правила и занятия, проверьте целостность и опубликуйте весь пакет одной операцией.</p>
|
||||
</div>
|
||||
<div class="version-hero-controls">
|
||||
<label for="version-semester">Рабочий семестр</label>
|
||||
<select id="version-semester" data-native-select="true">
|
||||
<option value="">Загрузка семестров…</option>
|
||||
</select>
|
||||
<button type="button" class="btn btn-md btn-primary" id="version-create">Новый черновик</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="version-status" id="version-status" role="status" aria-live="polite">Загружаем контур версий…</div>
|
||||
|
||||
<section class="version-current" id="version-current" aria-label="Опубликованная версия"></section>
|
||||
|
||||
<div class="version-workbench">
|
||||
<section class="version-drafts-panel">
|
||||
<div class="version-section-head">
|
||||
<div>
|
||||
<span class="version-eyebrow">Подготовка</span>
|
||||
<h3>Черновики</h3>
|
||||
</div>
|
||||
<span id="version-draft-count">0</span>
|
||||
</div>
|
||||
<div class="version-draft-list" id="version-drafts"></div>
|
||||
</section>
|
||||
|
||||
<aside class="version-diff-panel" id="version-diff">
|
||||
<div class="version-empty">
|
||||
<span>Δ</span>
|
||||
<h3>Сравнение версий</h3>
|
||||
<p>Выберите «Сравнить» у черновика, чтобы увидеть изменения правил и сформированных занятий.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<section class="version-archive-panel">
|
||||
<div class="version-section-head">
|
||||
<div>
|
||||
<span class="version-eyebrow">Возврат без паники</span>
|
||||
<h3>Архив публикаций</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="version-archive-list" id="version-archive"></div>
|
||||
</section>
|
||||
|
||||
<section class="version-history-panel">
|
||||
<div class="version-section-head">
|
||||
<div>
|
||||
<span class="version-eyebrow">Неизменяемый след</span>
|
||||
<h3>Журнал действий</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="version-history" id="version-history"></div>
|
||||
</section>
|
||||
|
||||
<div class="version-modal" id="version-modal" hidden>
|
||||
<div class="version-modal-card" role="dialog" aria-modal="true" aria-labelledby="version-modal-title">
|
||||
<button type="button" class="version-modal-close" id="version-modal-close" aria-label="Закрыть">×</button>
|
||||
<span class="version-eyebrow" id="version-modal-kicker">Новая операция</span>
|
||||
<h3 id="version-modal-title">Версия расписания</h3>
|
||||
<p id="version-modal-copy"></p>
|
||||
<form id="version-modal-form">
|
||||
<label for="version-modal-value" id="version-modal-label">Название</label>
|
||||
<textarea id="version-modal-value" rows="3" maxlength="2000" required></textarea>
|
||||
<div class="version-modal-summary" id="version-modal-summary" hidden></div>
|
||||
<div class="version-modal-actions">
|
||||
<button type="button" class="btn btn-md btn-ghost" id="version-modal-cancel">Отмена</button>
|
||||
<button type="submit" class="btn btn-md btn-primary" id="version-modal-submit">Продолжить</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1,4 +1,19 @@
|
||||
<div class="card create-card">
|
||||
<section class="version-constructor-bar" id="schedule-version-context">
|
||||
<div>
|
||||
<span class="version-eyebrow">Изолированный контекст</span>
|
||||
<h2>Рабочий черновик</h2>
|
||||
<p id="schedule-version-note">Выберите черновик: только его правила можно изменять в конструкторе.</p>
|
||||
</div>
|
||||
<div class="version-constructor-controls">
|
||||
<label for="schedule-version-select">Версия расписания</label>
|
||||
<select id="schedule-version-select" data-native-select="true">
|
||||
<option value="">Загрузка черновиков…</option>
|
||||
</select>
|
||||
<button type="button" class="btn btn-sm btn-secondary" id="schedule-version-manage">Управление версиями</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="card create-card" id="schedule-rule-editor">
|
||||
<div class="card-header-row">
|
||||
<h2 id="schedule-rule-form-title">Новое правило расписания</h2>
|
||||
<button type="button" class="btn btn-sm btn-ghost" id="schedule-rule-reset">Очистить форму</button>
|
||||
|
||||
Reference in New Issue
Block a user