feat(feedback): improve feedback workflow

This commit is contained in:
dev
2026-10-06 16:21:41 +03:00
parent 98f24faaaf
commit a876071911
3 changed files with 99 additions and 68 deletions
+35 -50
View File
@@ -7,65 +7,50 @@
<link rel="stylesheet" href="admin.css">
<style>
.feedback-list { display:flex; flex-direction:column; gap:10px; }
.feedback-item { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:10px 12px; display:grid; grid-template-columns:120px 140px 160px 100px 140px 1fr 160px; gap:10px; align-items:center; }
.feedback-item .col { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.feedback-item .text { color:var(--text-secondary); font-size:13px; }
.feedback-item .actions { display:flex; gap:6px; flex-wrap:wrap; }
.card-stack { flex-direction: column; align-items: stretch; }
.card-stack .filters { margin-bottom: 0; }
.feedback-item .btn-xs.sent-on { background:var(--accent); color:#fff; }
@media (max-width: 1100px) {
.feedback-item { grid-template-columns:120px 140px 160px 100px 140px 1fr; }
.feedback-item .actions { grid-column:1/-1; justify-content:flex-end; }
}
.feedback-item .ai-badge { margin-left:0; }
.feedback-item .btn-link.sent-on { background:var(--accent); color:#fff; border-color:var(--accent); }
.shorts-list { display:flex; flex-direction:column; gap:6px; width:100%; max-height:220px; overflow:auto; padding:2px 0; }
.shorts-list .item { display:flex; gap:8px; align-items:flex-start; }
.shorts-list .item label { flex:1; font-size:13px; line-height:1.3; color:var(--text); cursor:pointer; }
</style>
</head>
<body data-page="feedback">
<div class="app">
<div class="layout">
<aside class="sidebar" id="sidebar"></aside>
<main class="main">
<header class="page-head">
<div>
<h2>Обратная связь</h2>
<div class="page-sub">Отзывы тьютора по итогам занятий</div>
<div class="page-head">
<h2>Обратная связь</h2>
<p class="page-sub">Отзывы тьютора по итогам занятий</p>
</div>
<div class="filters">
<div><label>Поиск</label><input type="text" id="fbSearch" class="search-input" placeholder="Поиск по ФИО, теме, тексту…"></div>
<div><label>Группа</label><select id="fbGroupFilter"><option value="">Все группы</option></select></div>
<div><label>Статус</label><select id="fbStatusFilter">
<option value="">Все статусы</option>
<option value="sent">Отправлено</option>
<option value="none">Без ИИ</option>
<option value="pending">Ожидает</option>
<option value="processing">В обработке</option>
<option value="done">Готово</option>
<option value="error">Ошибка</option>
<option value="skipped">Пропущен</option>
</select></div>
<div><label>С</label><input type="date" id="fbDateFrom"></div>
<div><label>По</label><input type="date" id="fbDateTo"></div>
<div><label>&nbsp;</label>
<label class="toggle">
<input type="checkbox" id="fbDeletedToggle">
<span class="toggle-track"><span class="toggle-thumb"></span></span>
<span class="toggle-text">Удалённые</span>
</label>
</div>
<button class="btn-primary" id="addFeedbackBtn"><span data-lucide="plus"></span> Добавить отзыв</button>
</header>
<section class="card card-stack">
<div class="filters">
<div><label>Поиск</label><input type="text" id="fbSearch" class="search-input" placeholder="Поиск по ФИО, теме, тексту…"></div>
<div><label>Группа</label><select id="fbGroupFilter"><option value="">Все группы</option></select></div>
<div><label>Статус</label><select id="fbStatusFilter">
<option value="">Все статусы</option>
<option value="sent">Отправлено</option>
<option value="none">Без ИИ</option>
<option value="pending">Ожидает</option>
<option value="processing">В обработке</option>
<option value="done">Готово</option>
<option value="error">Ошибка</option>
<option value="skipped">Пропущен</option>
</select></div>
<div><label>С</label><input type="date" id="fbDateFrom"></div>
<div><label>По</label><input type="date" id="fbDateTo"></div>
<div><label>&nbsp;</label>
<label class="toggle" style="align-items:center">
<input type="checkbox" id="fbDeletedToggle">
<span class="toggle-track"><span class="toggle-thumb"></span></span>
<span class="toggle-text">Показать удалённые</span>
</label>
</div>
</div>
<div class="table-wrap">
<div class="feedback-list" id="feedbackList"></div>
</div>
<div class="card-foot">
<div id="feedbackState" class="muted"></div>
<div id="pager"></div>
</div>
</section>
<div><label>&nbsp;</label><button type="button" class="btn-primary" id="addFeedbackBtn"><span data-lucide="plus"></span> Добавить отзыв</button></div>
</div>
<div class="hint" id="feedbackState" style="margin-bottom:12px"></div>
<div class="feedback-list" id="feedbackList"><div class="empty">Загрузка…</div></div>
<div class="pager" id="pager"></div>
</main>
</div>