feat: 新增风险规则生成引擎与知识图谱可视化

后端新增风险规则自动生成和模板执行服务,支持从规则资产
批量生成并持久化风险规则文件;知识库入库日志增强图谱
查询和本地 RAG 回退,前端审计页面增加风险规则模型和流
程图组件,知识入库面板拆分为图谱可视化子组件,报销创
建页面增加引导式流程模型,更新知识库索引数据。
This commit is contained in:
caoxiaozhu
2026-05-23 19:54:42 +08:00
parent 5b388d08c0
commit 575f093c74
63 changed files with 35497 additions and 1517 deletions

View File

@@ -82,7 +82,7 @@
/>
</span>
<div class="message-bubble">
<div class="message-bubble" :class="buildMessageBubbleClass(message)">
<header class="message-meta">
<strong>{{ message.role === 'assistant' ? (message.assistantName || ASSISTANT_DISPLAY_NAME) : '我' }}</strong>
<time>{{ message.time }}</time>
@@ -357,6 +357,13 @@
</p>
</template>
<div
v-if="buildReviewNextStepRichCopyForMessage(message)"
class="review-next-step-rich-copy message-answer-markdown"
v-html="renderMarkdown(buildReviewNextStepRichCopyForMessage(message))"
@click="handleAssistantMarkdownClick($event, message)"
></div>
<div
v-if="resolveReviewFooterActions(message.reviewPayload).length"
class="review-footer-actions"
@@ -773,7 +780,11 @@
</div>
<Transition name="insight-switch" mode="out-in">
<div :key="`${activeSessionType}-${currentInsight.intent}-${currentInsight.title}-${reviewDrawerMode}`" class="insight-body">
<div
:key="`${activeSessionType}-${currentInsight.intent}-${currentInsight.title}-${reviewDrawerMode}`"
class="insight-body"
:class="{ 'document-review-body': isReviewDocumentDrawer }"
>
<template v-if="isKnowledgeSession">
<section class="insight-card knowledge-hot-card">
<div class="card-head">
@@ -1145,7 +1156,7 @@
v-model="activeReviewDocument.scene_label"
type="text"
:disabled="submitting || reviewActionBusy"
placeholder="例如:业务招待费 / 差旅费"
placeholder="例如:出租车/网约车票据 / 火车/高铁票"
/>
</label>
@@ -1302,6 +1313,22 @@
@confirm="confirmDeleteCurrentSession"
/>
<ConfirmDialog
:open="nextStepConfirmDialog.open"
badge="提交确认"
badge-tone="primary"
title="确认提交当前单据?"
description="提交后单据将进入审批流程,请确认关键信息、票据和风险提示已经核对无误。"
cancel-text="再检查一下"
confirm-text="确认提交"
busy-text="提交中..."
confirm-tone="primary"
confirm-icon="mdi mdi-send-check-outline"
:busy="reviewActionBusy"
@close="closeReviewNextStepConfirm"
@confirm="confirmReviewNextStepSubmit"
/>
<Transition name="assistant-modal">
<div v-if="documentPreviewDialog.open" class="assistant-overlay review-overlay">
<section class="review-preview-modal">
@@ -1318,11 +1345,13 @@
<div class="review-preview-body" :class="documentPreviewDialog.kind">
<img
v-if="documentPreviewDialog.kind === 'image'"
:key="documentPreviewDialog.renderKey"
:src="documentPreviewDialog.url"
:alt="documentPreviewDialog.filename"
/>
<iframe
v-else-if="documentPreviewDialog.kind === 'pdf'"
:key="documentPreviewDialog.renderKey"
:src="documentPreviewDialog.url"
title="票据 PDF 原图预览"
></iframe>