扩展知识库索引任务和 RAG 检索支持增量入库和文档去重,优 化本体检测和规则匹配精度,前端设置页面拆分为 LLM、邮件 和 Hermes 员工同步子面板并重构样式,新增日志详情组件和 知识入库日志模型,补充单元测试覆盖。
137 lines
5.2 KiB
Vue
137 lines
5.2 KiB
Vue
<template>
|
||
<div class="hermes-settings-container">
|
||
<!-- 主控制卡片 -->
|
||
<section class="settings-card hermes-hero-card" :class="{ active: hermesForm.masterEnabled }">
|
||
<div class="card-head">
|
||
<div class="card-title-with-icon">
|
||
<div class="model-icon-box" :class="{ active: hermesForm.masterEnabled }">
|
||
<i class="mdi mdi-robot"></i>
|
||
<span class="status-pulse-dot" :class="{ active: hermesForm.masterEnabled }"></span>
|
||
</div>
|
||
<div>
|
||
<h4>数字员工自动任务主控</h4>
|
||
<p>开启后系统将自动按计划调度后台数字员工执行知识同步、规则待审、风险扫描及数据统计任务。</p>
|
||
</div>
|
||
</div>
|
||
<div class="card-head-actions">
|
||
<span class="status-badge" :class="{ active: hermesForm.masterEnabled }">
|
||
{{ hermesForm.masterEnabled ? '调度服务运行中' : '调度服务已禁用' }}
|
||
</span>
|
||
<button
|
||
class="switch-btn"
|
||
type="button"
|
||
:class="{ active: hermesForm.masterEnabled }"
|
||
aria-label="切换全局自动任务"
|
||
@click="$emit('toggle-master')"
|
||
>
|
||
<i></i>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- 任务网格控制 -->
|
||
<section class="settings-card hermes-tasks-section" :class="{ disabled: !hermesForm.masterEnabled }">
|
||
<div class="card-head">
|
||
<div class="card-title-with-icon">
|
||
<div class="model-icon-box">
|
||
<i class="mdi mdi-clipboard-list-outline"></i>
|
||
</div>
|
||
<div>
|
||
<h4>自动任务项管理</h4>
|
||
<p>配置并调度具体的后台异步任务,在设定的周期与执行时间定时运行。</p>
|
||
</div>
|
||
</div>
|
||
<div class="card-head-actions">
|
||
<span class="section-badge">已启用 {{ activeTasksCount }} / {{ HERMES_SIMPLE_TASKS.length }} 项</span>
|
||
</div>
|
||
</div>
|
||
|
||
<ul class="hermes-task-grid">
|
||
<li
|
||
v-for="task in HERMES_SIMPLE_TASKS"
|
||
:key="task.id"
|
||
class="hermes-task-card"
|
||
:class="{ active: isTaskOn(task.id), disabled: !hermesForm.masterEnabled }"
|
||
>
|
||
<div class="task-card-header">
|
||
<div class="task-icon-box" :class="getTaskColorClass(task.id)">
|
||
<i class="mdi" :class="getTaskIcon(task.id)"></i>
|
||
</div>
|
||
<div class="task-meta-info">
|
||
<strong>{{ task.label }}</strong>
|
||
<small>{{ task.hint }}</small>
|
||
</div>
|
||
<button
|
||
class="switch-btn mini"
|
||
type="button"
|
||
:class="{ active: isTaskOn(task.id) }"
|
||
:disabled="!hermesForm.masterEnabled"
|
||
:aria-label="`${isTaskOn(task.id) ? '关闭' : '开启'}${task.label}`"
|
||
@click="$emit('toggle-task', task.id)"
|
||
>
|
||
<i></i>
|
||
</button>
|
||
</div>
|
||
|
||
<div class="task-card-footer">
|
||
<div class="frequency-badge" :class="{ active: isTaskOn(task.id) }">
|
||
<i class="mdi mdi-clock-outline"></i>
|
||
<span>{{ task.frequencyLabel }}</span>
|
||
</div>
|
||
<div v-if="isTaskOn(task.id)" class="time-picker-wrapper">
|
||
<input
|
||
:value="taskTime(task.id)"
|
||
type="time"
|
||
:disabled="!hermesForm.masterEnabled"
|
||
aria-label="设置执行时间"
|
||
@input="$emit('update-task-time', { taskId: task.id, time: $event.target.value })"
|
||
/>
|
||
</div>
|
||
<div v-else class="time-picker-placeholder">
|
||
<span>未开启</span>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<!-- 额外设置 (任务告警通知) -->
|
||
<section class="settings-card hermes-extra-settings">
|
||
<div class="card-head">
|
||
<div class="card-title-with-icon">
|
||
<div class="model-icon-box">
|
||
<i class="mdi mdi-bell-ring-outline"></i>
|
||
</div>
|
||
<div>
|
||
<h4>任务告警通知</h4>
|
||
<p>配置自动任务运行出现故障、限频或执行失败时的管理员实时提醒通知渠道。</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="switch-group">
|
||
<button
|
||
class="switch-row"
|
||
type="button"
|
||
:class="{ active: hermesForm.notifyOnFailure }"
|
||
aria-label="切换邮件通知"
|
||
@click="$emit('toggle-flag', 'notifyOnFailure')"
|
||
>
|
||
<span class="switch-copy">
|
||
<strong>任务失败时发送邮件通知管理员</strong>
|
||
<small>仅在自动任务执行出现故障或异常时触发告警,保障后台服务的高可用性。</small>
|
||
</span>
|
||
<span class="switch-btn" :class="{ active: hermesForm.notifyOnFailure }"><i></i></span>
|
||
</button>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
</template>
|
||
|
||
<script src="./scripts/HermesEmployeeSettingsPanel.js"></script>
|
||
|
||
<style scoped src="../assets/styles/views/settings-view-form.css"></style>
|
||
<style scoped src="../assets/styles/views/settings-view.css"></style>
|
||
<style scoped src="../assets/styles/views/settings-view-hermes.css"></style>
|