feat: 优化差旅报销预审流程与个人工作台 UI 体系
- 完善 user_agent_application 申请差旅报销预审槽位与消息组装 - 增强预算助理报告与风险建议卡片交互 - 重构登录页视觉样式与移动端响应式适配 - 优化个人工作台、文档中心、政策中心、员工管理等页面布局 - 拆分 travelRequestDetailPreReviewModel 为 advice/submit 模型 - 补充报销草稿、风险复核、Item Sync 与模板执行器测试覆盖
This commit is contained in:
@@ -700,24 +700,30 @@ export function buildClaimSummaryRiskCards(request = {}) {
|
||||
})]
|
||||
}
|
||||
|
||||
export function buildAiAdviceViewModel({ completionItems = [], riskCards = [] } = {}) {
|
||||
export function buildAiAdviceViewModel({
|
||||
completionItems = [],
|
||||
materialPrompts = [],
|
||||
profileAdviceItems = [],
|
||||
riskCards = []
|
||||
} = {}) {
|
||||
const normalizedCompletionItems = completionItems.map((item) => normalizeText(item)).filter(Boolean)
|
||||
const normalizedMaterialPrompts = materialPrompts.map((item) => normalizeText(item)).filter(Boolean)
|
||||
const normalizedProfileAdviceItems = profileAdviceItems.map((item) => normalizeText(item)).filter(Boolean)
|
||||
const normalizedRiskCards = riskCards.filter(Boolean)
|
||||
const hasHighRisk = normalizedRiskCards.some((card) => card.tone === 'high')
|
||||
const sortedRiskCards = sortRiskCardsByTone(normalizedRiskCards)
|
||||
|
||||
if (!normalizedCompletionItems.length && !normalizedRiskCards.length) {
|
||||
const items = [
|
||||
'点击右下角“提交审批”进入流程。',
|
||||
'提交前再核对一次合计金额与各条费用明细金额是否一致。',
|
||||
'如有特殊业务背景或例外情况,可在下方附加说明中补充。'
|
||||
]
|
||||
|
||||
if (
|
||||
!normalizedCompletionItems.length
|
||||
&& !normalizedMaterialPrompts.length
|
||||
&& !normalizedProfileAdviceItems.length
|
||||
&& !normalizedRiskCards.length
|
||||
) {
|
||||
return {
|
||||
tone: 'ready',
|
||||
badge: '可直接提交',
|
||||
summary: 'AI判断当前草稿已具备提交条件,可以直接发起审批。',
|
||||
items,
|
||||
badge: '可以提交',
|
||||
summary: '自动检测未发现票据、金额、行程或历史画像异常,可以提交审批。',
|
||||
items: [],
|
||||
riskCards: [],
|
||||
sections: []
|
||||
}
|
||||
@@ -731,6 +737,20 @@ export function buildAiAdviceViewModel({ completionItems = [], riskCards = [] }
|
||||
items: normalizedCompletionItems
|
||||
})
|
||||
}
|
||||
if (normalizedMaterialPrompts.length) {
|
||||
sections.push({
|
||||
kind: 'material',
|
||||
title: '材料补充提示',
|
||||
items: normalizedMaterialPrompts
|
||||
})
|
||||
}
|
||||
if (normalizedProfileAdviceItems.length) {
|
||||
sections.push({
|
||||
kind: 'profile',
|
||||
title: '历史操作建议',
|
||||
items: normalizedProfileAdviceItems
|
||||
})
|
||||
}
|
||||
if (normalizedRiskCards.length) {
|
||||
sections.push({
|
||||
kind: 'risk',
|
||||
@@ -742,10 +762,12 @@ export function buildAiAdviceViewModel({ completionItems = [], riskCards = [] }
|
||||
|
||||
return {
|
||||
tone: hasHighRisk ? 'warning' : 'pending',
|
||||
badge: hasHighRisk ? '优先整改' : '待核对',
|
||||
badge: hasHighRisk ? '优先整改' : normalizedRiskCards.length ? '待核对' : '建议关注',
|
||||
summary: normalizedRiskCards.length
|
||||
? `AI已整理出 ${normalizedRiskCards.length} 个风险点,已按风险等级排序全部展示。`
|
||||
: '建议先补齐必填信息,完成后即可提交审批。',
|
||||
? `自动检测发现 ${normalizedRiskCards.length} 个风险点,已按风险等级排序全部展示。`
|
||||
: normalizedMaterialPrompts.length
|
||||
? `自动检测发现 ${normalizedMaterialPrompts.length} 条材料补充提示,不作为风险计数。`
|
||||
: '结合历史操作记录生成提交建议,请按提示核对后提交审批。',
|
||||
items: normalizedCompletionItems,
|
||||
riskCards: normalizedRiskCards,
|
||||
sections
|
||||
|
||||
Reference in New Issue
Block a user