Files
X-Financial/web/src/views/HermesEmployeeSettingsPanel.vue
caoxiaozhu 5b388d08c0 feat: 增强知识库索引与设置页面模块化拆分
扩展知识库索引任务和 RAG 检索支持增量入库和文档去重,优
化本体检测和规则匹配精度,前端设置页面拆分为 LLM、邮件
和 Hermes 员工同步子面板并重构样式,新增日志详情组件和
知识入库日志模型,补充单元测试覆盖。
2026-05-22 23:47:28 +08:00

137 lines
5.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>