Dev #11

Merged
serega404 merged 87 commits from dev into main 2026-05-25 03:22:55 +03:00
2 changed files with 34 additions and 43 deletions
Showing only changes of commit 6aef5dd66f - Show all commits
-1
View File
@@ -9,7 +9,6 @@ defineEmits<{ click: [] }>()
<button class="coin-chip" type="button" @click="$emit('click')">
<AppIcon class="coin-icon" icon="coin" :size="16" />
<span class="coin-amount">{{ amount }}</span>
<span class="coin-label">монет</span>
</button>
</template>
+34 -42
View File
@@ -259,38 +259,6 @@ onMounted(() => {
</button>
</div>
<GlassCard>
<div class="prompt-header">
<div>
<div class="section-title">Промпт LLM-анализа</div>
<p class="prompt-subtitle">
Шаблон применяется к новым проверкам и ручному повторному анализу отзывов.
</p>
</div>
<span class="prompt-status">{{ promptStatusLabel }}</span>
</div>
<form class="prompt-form" @submit.prevent="savePrompt">
<textarea
v-model="promptText"
class="glass-input prompt-textarea"
rows="9"
:disabled="promptLoading || promptSaving"
placeholder="Загрузка промпта..."
></textarea>
<div class="prompt-footer">
<div class="prompt-messages">
<span class="prompt-hint">Обязательные плейсхолдеры: {lectureContext}, {reviewText}</span>
<span v-if="promptError" class="prompt-error">{{ promptError }}</span>
<span v-else-if="promptSuccess" class="prompt-success">{{ promptSuccess }}</span>
</div>
<button class="btn-primary" type="submit" :disabled="!canSavePrompt">
{{ promptSaving ? 'Сохраняем...' : 'Сохранить промпт' }}
</button>
</div>
</form>
</GlassCard>
<GlassCard>
<div class="review-toolbar">
<div class="status-filters" aria-label="Фильтр статуса LLM">
@@ -334,7 +302,6 @@ onMounted(() => {
<div class="analysis-cell">
<div v-if="!row.analysisReady" class="analysis-head">
<StatusBadge :status="row.status" />
<span class="raw-status">{{ row.rawStatus }}</span>
</div>
<div v-if="row.analysisReady" class="analysis-result">
<div class="analysis-metrics">
@@ -356,7 +323,6 @@ onMounted(() => {
</details>
<span v-else class="analysis-note">Текст ответа нейронки не сохранён</span>
</div>
<span v-else class="analysis-note">{{ row.analysisMessage }}</span>
</div>
</template>
<template #actions="{ row }">
@@ -371,6 +337,38 @@ onMounted(() => {
</DataTable>
</div>
</GlassCard>
<GlassCard>
<div class="prompt-header">
<div>
<div class="section-title">Промпт LLM-анализа</div>
<p class="prompt-subtitle">
Шаблон применяется к новым проверкам и ручному повторному анализу отзывов.
</p>
</div>
<span class="prompt-status">{{ promptStatusLabel }}</span>
</div>
<form class="prompt-form" @submit.prevent="savePrompt">
<textarea
v-model="promptText"
class="glass-input prompt-textarea"
rows="9"
:disabled="promptLoading || promptSaving"
placeholder="Загрузка промпта..."
></textarea>
<div class="prompt-footer">
<div class="prompt-messages">
<span class="prompt-hint">Обязательные плейсхолдеры: {lectureContext}, {reviewText}</span>
<span v-if="promptError" class="prompt-error">{{ promptError }}</span>
<span v-else-if="promptSuccess" class="prompt-success">{{ promptSuccess }}</span>
</div>
<button class="btn-primary" type="submit" :disabled="!canSavePrompt">
{{ promptSaving ? 'Сохраняем...' : 'Сохранить промпт' }}
</button>
</div>
</form>
</GlassCard>
</div>
</template>
@@ -457,16 +455,10 @@ onMounted(() => {
.review-text {
display: inline-block;
max-width: 320px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
white-space: pre-wrap;
overflow-wrap: anywhere;
vertical-align: middle;
}
.raw-status {
display: inline-flex;
color: var(--color-text-secondary);
font-size: 11px;
}
.table-section {
display: flex;
flex-direction: column;