feat: 扩展风险规则体系、审批动态路由与预算中心列表化改造

- 新增 25+ 条风险规则(预算/报销/申请/通用类),完善风险规则模拟与反馈发布机制
- 引入费用审批动态路由、平台风险分级、预审与风险阶段管理
- 预算中心列表化改造,优化票据夹仪表盘与数字员工工作看板
- 新增 Hermes 风险线索收集器、Agent 链路追踪中心
- 扩展数字员工能力库(18 个领域 Skill)与交通费用自动预估
- 完善报销申请快速预览、权限控制与前端测试覆盖
This commit is contained in:
caoxiaozhu
2026-06-01 17:07:14 +08:00
parent 7989f3a159
commit 92444e7eae
285 changed files with 25075 additions and 2986 deletions

View File

@@ -53,7 +53,7 @@
<article class="progress-card panel">
<div class="progress-block">
<div class="progress-head">
<h3>{{ isApplicationDocument ? '申请进度' : isTravelRequest ? '差旅进度' : '报销进度' }}</h3>
<h3>{{ isApplicationDocument ? '申请进度' : '报销进度' }}</h3>
</div>
<div class="progress-line" :style="{ '--progress-columns': progressSteps.length }">
<div
@@ -435,22 +435,16 @@
:key="card.id"
:class="['risk-advice-card', card.tone]"
>
<div class="risk-advice-card-head">
<span>{{ card.label }}</span>
<strong>{{ card.title }}</strong>
<div class="risk-advice-card-main">
<div class="risk-advice-card-head">
<span>{{ card.label }}</span>
<strong>{{ card.title }}</strong>
</div>
<p class="risk-advice-point">{{ card.risk }}</p>
</div>
<p class="risk-advice-point">{{ card.risk }}</p>
<div class="risk-advice-meta">
<div>
<span>规则依据</span>
<ul>
<li v-for="basis in card.ruleBasis" :key="basis">{{ basis }}</li>
</ul>
</div>
<div>
<span>修改建议</span>
<p>{{ card.suggestion }}</p>
</div>
<div class="risk-advice-compact-meta">
<span v-if="card.ruleBasis?.length">{{ card.ruleBasis[0] }}</span>
<em>{{ card.suggestion }}</em>
</div>
</article>
</div>
@@ -461,11 +455,12 @@
v-if="request.claimId"
:claim-id="request.claimId"
/>
<EmployeeProfileRiskCard
v-if="showEmployeeRiskProfile"
:profile="employeeRiskProfile"
:loading="employeeRiskProfileLoading"
:error="employeeRiskProfileError"
<StageRiskAdviceCard
v-if="showStageRiskAdvice"
:request="request"
:expense-items="expenseItems"
:ai-advice="aiAdvice"
:is-application-document="isApplicationDocument"
/>
</section>
</div>
@@ -481,8 +476,8 @@
{{ deleteBusy ? '删除中' : deleteActionLabel }}
</button>
<button class="approve-action" type="button" :disabled="!canSubmit" @click="handleSubmit">
<i class="mdi mdi-send-circle-outline"></i>
{{ submitBusy ? '提交中' : '提交审批' }}
<i :class="submitActionIcon"></i>
{{ submitActionLabel }}
</button>
</div>
<div v-else-if="canReturnRequest || canApproveRequest || canPayRequest || canDeleteRequest" class="approval-action-group" aria-label="单据管理操作">
@@ -658,9 +653,9 @@
badge="提交确认"
badge-tone="warning"
:title="`确认提交 ${request.id} 吗?`"
:description="isApplicationDocument ? '请确认申请事由、预计金额和申请信息均已核对无误。确认后将提交至直属领导审批。' : '请确认报销事由、金额、费用明细和附件材料均已核对无误。确认后系统将发起 AI 预审并进入审批流程。'"
:description="submitConfirmDescription"
cancel-text="返回核对"
confirm-text="确认提交"
:confirm-text="submitConfirmText"
busy-text="提交中..."
confirm-tone="primary"
confirm-icon="mdi mdi-send-circle-outline"
@@ -692,7 +687,7 @@
badge="重大风险"
badge-tone="danger"
:title="`当前存在 ${submitRiskWarnings.length} 条重大风险`"
description="如仍需提交审批,请逐条填写违规或超标原因,系统会写入附加说明并用于后续风险统计。"
description="如仍需进入下一步,请逐条填写每一个重大风险的原因,系统会写入附加说明并用于后续风险统计。"
cancel-text="返回整改"
confirm-text="保存原因并继续"
busy-text="保存中..."