Files
X-Financial/web/src/views/scripts/auditViewMetadata.js
caoxiaozhu 575f093c74 feat: 新增风险规则生成引擎与知识图谱可视化
后端新增风险规则自动生成和模板执行服务,支持从规则资产
批量生成并持久化风险规则文件;知识库入库日志增强图谱
查询和本地 RAG 回退,前端审计页面增加风险规则模型和流
程图组件,知识入库面板拆分为图谱可视化子组件,报销创
建页面增加引导式流程模型,更新知识库索引数据。
2026-05-23 19:54:42 +08:00

329 lines
11 KiB
JavaScript
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.
export const RULE_TABLE_COLUMNS = {
name: '规则名称',
category: '业务域',
owner: '负责人',
scope: '适用场景',
version: '修改次数',
metric: '修改人'
}
export const TYPE_META = {
rules: {
assetType: 'rule',
label: '规则',
typeLabel: '规则',
tableColumns: RULE_TABLE_COLUMNS
},
skills: {
assetType: 'skill',
label: '技能',
typeLabel: '技能',
createButtonLabel: '技能已接入',
hintText: '技能页签已接到真实资产 API可查看输入、输出、依赖和场景信息。',
searchPlaceholder: '搜索技能名称、编码或负责人',
showMetricColumn: false,
tableColumns: {
name: '技能名称',
category: '业务域',
owner: '负责人',
scope: '适用场景',
runtime: '输入摘要',
version: '当前版本',
metric: ''
}
},
mcp: {
assetType: 'mcp',
label: 'MCP',
typeLabel: 'MCP',
createButtonLabel: 'MCP 已接入',
hintText: 'MCP 页签已接到真实资产 API可查看服务地址、鉴权方式、超时和降级策略。',
searchPlaceholder: '搜索 MCP 名称、编码或负责人',
tableColumns: {
name: 'MCP 服务',
category: '业务域',
owner: '维护人',
scope: '适用场景',
runtime: '调用地址',
version: '当前版本',
metric: '超时配置'
}
},
tasks: {
assetType: 'task',
label: '任务',
typeLabel: '任务',
createButtonLabel: '任务已接入',
hintText: '任务页签已接到真实资产 API可查看调度周期、执行 Agent 和最近执行结果。',
searchPlaceholder: '搜索任务名称、编码或负责人',
tableColumns: {
name: '任务名称',
category: '业务域',
owner: '负责人',
scope: '适用场景',
runtime: '调度周期',
version: '当前版本',
metric: '执行 Agent'
}
}
}
export const TAB_META = {
financialRules: {
assetType: 'rule',
typeKey: 'rules',
label: '财务规则',
typeLabel: '财务规则',
createButtonLabel: '财务规则已接入',
hintText: '仅展示 tag 为“财务规则”的规则资产;未打新 tag 的旧规则已从规则中心隐藏。',
searchPlaceholder: '搜索财务规则名称、编码或负责人',
tableColumns: RULE_TABLE_COLUMNS,
showRuntimeColumn: false,
showStatusColumn: false,
badgeTone: 'emerald'
},
riskRules: {
assetType: 'rule',
typeKey: 'rules',
label: '风险规则',
typeLabel: '风险规则',
createButtonLabel: '新建风险规则',
hintText: '仅展示平台风险规则;适用场景按差旅、发票、餐饮招待等分类,可用「使用场景」筛选。',
searchPlaceholder: '搜索风险规则名称、编码或负责人',
tableColumns: RULE_TABLE_COLUMNS,
showRuntimeColumn: false,
showVersionColumn: false,
showStatusColumn: false,
badgeTone: 'rose'
},
skills: {
...TYPE_META.skills,
typeKey: 'skills',
badgeTone: 'blue'
},
mcp: {
...TYPE_META.mcp,
typeKey: 'mcp',
badgeTone: 'amber'
},
tasks: {
...TYPE_META.tasks,
typeKey: 'tasks',
badgeTone: 'violet'
}
}
export const STATUS_META = {
draft: { label: '草稿中', tone: 'draft' },
review: { label: '待审核', tone: 'warning' },
active: { label: '已上线', tone: 'success' },
disabled: { label: '已停用', tone: 'disabled' }
}
export const REVIEW_META = {
approved: { label: '已通过', tone: 'success' },
pending: { label: '待审核', tone: 'warning' },
rejected: { label: '已驳回', tone: 'danger' }
}
export const VERSION_STATE_META = {
published: { label: '已上线', tone: 'success' },
draft: { label: '草稿', tone: 'draft' },
pending_review: { label: '待审核', tone: 'warning' },
approved: { label: '已通过待上线', tone: 'success' },
rejected: { label: '已驳回', tone: 'danger' },
history: { label: '历史版本', tone: 'disabled' }
}
export const DOMAIN_LABELS = {
expense: '报销',
ar: '应收',
ap: '应付',
knowledge: '知识',
system: '系统'
}
export const SCENARIO_LABELS = {
expense: '报销',
risk_check: '风险检查',
duplicate_expense: '重复报销',
explain: '规则解释',
invoice_anomaly: '票据异常',
travel_policy: '差旅制度',
travel_standard: '差旅标准',
communication_expense: '通信费报销',
expense_standard: '费用标准',
accounts_payable: '应付',
accounts_receivable: '应收',
approval_required: '需审批',
query: '查询',
summary: '汇总',
system: '系统',
schedule: '调度',
rule_center: '规则中心',
review_digest: '待审摘要',
aging_summary: '账龄汇总',
invoice_validation: '发票验真'
}
export const DETAIL_TITLES = {
rules: {
configTitle: '规则元信息',
configDesc: '展示规则编码、版本、业务域和当前审核 / 上线状态。',
detailTitle: '规则版本说明',
detailDesc: '规则正文由 Markdown 驱动,保存后会生成新的版本快照。',
outputTitle: '审核与上线',
outputDesc: '规则上线受审核状态控制,未审核通过的版本会被后端拦截。',
ruleListTitle: '上线要求',
checkListTitle: '当前状态',
triggerTitle: '适用场景',
triggerDesc: '当前规则注册到的业务场景',
toolTitle: '关联信息',
toolDesc: '规则当前审核、保存和版本快照信息',
historyTitle: '版本历史',
historyDesc: '最近 5 个规则版本',
publishTitle: '上线控制',
publishDesc: '正式上线会调用后端激活接口,审核未通过时会被拦截。'
},
skills: {
configTitle: '技能配置',
configDesc: '展示技能编码、输入摘要、版本和业务域。',
detailTitle: '技能结构',
detailDesc: '按输入、输出和依赖组织技能定义。',
outputTitle: '输出契约',
outputDesc: '技能详情重点展示输入参数、输出参数和依赖能力。',
ruleListTitle: '输出要求',
checkListTitle: '当前快照',
triggerTitle: '适用场景',
triggerDesc: '当前技能注册到的场景标签',
toolTitle: '依赖能力',
toolDesc: '技能当前依赖的数据库或其他能力',
historyTitle: '版本历史',
historyDesc: '最近版本记录',
publishTitle: '发布状态',
publishDesc: '技能当前状态由资产中心统一管理。'
},
mcp: {
configTitle: 'MCP 连接配置',
configDesc: '展示服务地址、超时和调用方式。',
detailTitle: '服务协议',
detailDesc: '按服务类型、鉴权方式和降级策略组织外部服务信息。',
outputTitle: '调用约束',
outputDesc: 'MCP 详情重点展示鉴权方式、返回策略和最近调用状态。',
ruleListTitle: '调用约束',
checkListTitle: '最近状态',
triggerTitle: '适用场景',
triggerDesc: '当前 MCP 覆盖的业务场景',
toolTitle: '运行信息',
toolDesc: '结合 AgentRun 中的 ToolCall 还原最近一次调用状态',
historyTitle: '版本历史',
historyDesc: '最近版本记录',
publishTitle: '服务状态',
publishDesc: 'MCP 资产已接入规则中心,但真实外部调用仍以后续链路集成为准。'
},
tasks: {
configTitle: '任务配置',
configDesc: '展示调度周期、执行 Agent 和任务编码。',
detailTitle: '任务结构',
detailDesc: '按调度计划、目标场景和运行结果组织任务信息。',
outputTitle: '运行要求',
outputDesc: '任务详情重点展示调度 Agent、最近运行结果和运行日志入口。',
ruleListTitle: '运行要求',
checkListTitle: '最近执行',
triggerTitle: '适用场景',
triggerDesc: '当前任务覆盖的业务场景',
toolTitle: '最近调用',
toolDesc: '根据 AgentRun 中的最近执行记录回显任务运行情况',
historyTitle: '版本历史',
historyDesc: '最近版本记录',
publishTitle: '调度状态',
publishDesc: '任务资产已接入规则中心,后续 Day 4 运行时会继续消费这些配置。'
}
}
export const STATUS_OPTIONS = [
{ value: '', label: '全部状态' },
{ value: 'draft', label: '草稿中' },
{ value: 'review', label: '待审核' },
{ value: 'active', label: '已上线' },
{ value: 'disabled', label: '已停用' }
]
export const EXPENSE_RULE_BLOCK_PATTERN = /```expense-rule\s*([\s\S]*?)\s*```/i
export const RULE_SPREADSHEET_BLOCK_PATTERN = /```rule-spreadsheet\s*([\s\S]*?)\s*```/i
export const RULE_TEMPLATE_LABELS = {
travel_standard_v1: '差旅标准模板',
expense_amount_limit_v1: '金额上限模板',
attachment_requirement_v1: '附件要求模板',
general_policy_v1: '通用制度模板'
}
export const RULE_TAB_TAG_ALIASES = {
financialRules: new Set(['财务规则', '财务', 'financialrule', 'financialrules', 'financerule', 'financerules', 'financial', 'finance']),
riskRules: new Set(['风险规则', '风险', '风控', 'riskrule', 'riskrules', 'risk'])
}
export const RISK_SCENARIO_OPTIONS = [
{ value: '', label: '全部场景' },
{ value: '差旅', label: '差旅' },
{ value: '发票', label: '发票' },
{ value: '餐饮招待', label: '餐饮招待' },
{ value: '交通出行', label: '交通出行' },
{ value: '办公物料', label: '办公物料' },
{ value: '费用科目', label: '费用科目' },
{ value: '通用', label: '通用' }
]
export const RISK_SCENARIO_VALUES = new Set(RISK_SCENARIO_OPTIONS.map((item) => item.value).filter(Boolean))
export const LEGACY_RISK_SCENARIO_KEYS = new Set([
'expense',
'risk_check',
'travel',
'meal',
'invoice',
'travel_policy',
'travel_standard',
'attachment_policy',
'scene_policy',
'invoice_anomaly',
'communication_expense',
'expense_standard',
'approval_required'
])
export const SPREADSHEET_DETAIL_MODE = 'spreadsheet'
export const JSON_RISK_DETAIL_MODE = 'json_risk'
export const PREVIEW_RULE_ID = 'preview-rule-expense-company-travel-expense'
export const PREVIEW_RULE_CODE = 'rule.expense.company_travel_expense_reimbursement'
export const PREVIEW_RULE_VERSION_SPECS = [
{
version: 'v1.2.0',
fileName: '公司差旅费报销规则.xlsx',
updatedAt: '2026-05-17T09:30:00Z',
updatedBy: '王楠',
note: '补充城市分级与住宿限额示例。',
source: 'preview',
isCurrent: true
},
{
version: 'v1.1.0',
fileName: '公司差旅费报销规则-v1.1.0.xlsx',
updatedAt: '2026-05-14T15:20:00Z',
updatedBy: '顾承宇',
note: '新增票据要求与超标审批列。',
source: 'preview',
isCurrent: false
},
{
version: 'v1.0.0',
fileName: '公司差旅费报销规则-v1.0.0.xlsx',
updatedAt: '2026-05-10T11:10:00Z',
updatedBy: '系统初始化',
note: '首版差旅费报销规则表预览。',
source: 'preview',
isCurrent: false
}
]