047611fd24
🚀 Create and publish a Docker image / Detect changes in backend and frontend (push) Successful in 5s
🚀 Create and publish a Docker image / Build & publish backend image (push) Successful in 8s
🚀 Create and publish a Docker image / Update stack on Portainer (push) Successful in 3s
55 lines
2.5 KiB
Vue
55 lines
2.5 KiB
Vue
<script setup lang="ts">
|
||
import GlassCard from '@/components/ui/GlassCard.vue'
|
||
import DataTable from '@/components/ui/DataTable.vue'
|
||
import StatusBadge from '@/components/ui/StatusBadge.vue'
|
||
|
||
const columns = [
|
||
{ key: 'id', label: 'ID' },
|
||
{ key: 'lecture', label: 'Лекция' },
|
||
{ key: 'student', label: 'Студент' },
|
||
{ key: 'date', label: 'Дата' },
|
||
{ key: 'status', label: 'Статус', align: 'center' },
|
||
{ key: 'sentiment', label: 'Sentiment', align: 'center' },
|
||
{ key: 'quality', label: 'Качество', align: 'center' },
|
||
{ key: 'coins', label: 'Монеты', align: 'center' },
|
||
{ key: 'actions', label: 'Действия', align: 'right' },
|
||
]
|
||
|
||
const rows = [
|
||
{ id: 'RV-1024', lecture: 'Нейронные сети', student: 'А. Морозов', date: '06.05', status: 'pending', sentiment: 'Позитивный', quality: 0.82, coins: 20 },
|
||
{ id: 'RV-1025', lecture: 'Квантовые вычисления', student: 'Н. Иванова', date: '05.05', status: 'active', sentiment: 'Нейтральный', quality: 0.63, coins: 10 },
|
||
{ id: 'RV-1026', lecture: 'Право в информационном обществе', student: 'Д. Комаров', date: '04.05', status: 'done', sentiment: 'Негативный', quality: 0.41, coins: 0 },
|
||
{ id: 'RV-1027', lecture: 'Философия цифровой эпохи', student: 'С. Орлова', date: '03.05', status: 'rejected', sentiment: 'Нейтральный', quality: 0.22, coins: 0 },
|
||
]
|
||
</script>
|
||
|
||
<template>
|
||
<div class="admin-llm page-content">
|
||
<div class="header">
|
||
<h1 class="page-title">Очередь LLM-анализа отзывов</h1>
|
||
<button class="btn-primary">Запустить повторный анализ</button>
|
||
</div>
|
||
|
||
<GlassCard>
|
||
<DataTable :columns="columns" :rows="rows">
|
||
<template #status="{ value }">
|
||
<StatusBadge :status="value" />
|
||
</template>
|
||
<template #quality="{ value }">
|
||
<span :class="value >= 0.7 ? 'badge badge-green' : value >= 0.4 ? 'badge badge-orange' : 'badge badge-red'">
|
||
{{ value }}
|
||
</span>
|
||
</template>
|
||
<template #actions>
|
||
<button class="btn-ghost">Повторить</button>
|
||
</template>
|
||
</DataTable>
|
||
</GlassCard>
|
||
</div>
|
||
</template>
|
||
|
||
<style scoped>
|
||
.admin-llm { display: flex; flex-direction: column; gap: 16px; }
|
||
.header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
|
||
</style>
|