优化外部人员风险明细模型筛选

This commit is contained in:
wjj
2026-07-09 16:19:08 +08:00
parent 3f3e9268f2
commit c999497693
2 changed files with 43 additions and 4 deletions

View File

@@ -0,0 +1,21 @@
# 外部人员风险明细模型筛选实施记录
## 修改内容
- 风险明细的“可疑规则”选择“外部人员预警”时,命中模型下拉改为展示三个实际外部人员模型:
- 外部人员大额交易
- 外部人员可疑赌博
- 外部人员可疑关系
- 外部人员预警不再禁用命中模型筛选,查询时继续向后端传递 `modelCode`
- 切换可疑规则类型时,仅清理不属于当前类型的模型编码,避免外部模型编码串到员工规则筛选。
## 影响范围
- 前端文件:`ruoyi-ui/src/views/ccdiProject/components/detail/RiskDetailSection.vue`
- 后端 `getOverviewSuspiciousTransactions` 查询链路已支持 `suspiciousType = EXTERNAL_PERSON` 且按 `modelCode` 二次过滤,本次未修改后端 SQL。
## 验证情况
- 已使用 Node `v22.22.3` / npm `10.9.8` 执行 `npm run build:prod`,构建通过。
- 本机 `62318` 后端未监听,无法完成真实业务数据接口联调;浏览器验证尝试受本地调试实例占用影响未继续扩大范围。
- 从代码链路确认:前端选择外部人员模型后仍通过 `getOverviewSuspiciousTransactions` 传递 `modelCode`,后端 `suspiciousTransactionFilterSql` 已按 `query.modelCode` 过滤 `ccdi_bank_statement_tag_result.model_code`

View File

@@ -23,13 +23,12 @@
<el-select
v-model="selectedModelCode"
class="suspicious-filter-select"
placeholder="全部模型"
:placeholder="allModelOptionLabel"
filterable
:disabled="isExternalSuspiciousType"
>
<el-option label="全部模型" value="" />
<el-option :label="allModelOptionLabel" value="" />
<el-option
v-for="item in riskModelOptions"
v-for="item in displayRiskModelOptions"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -374,6 +373,11 @@ const SUSPICIOUS_TYPE_OPTIONS = [
{ value: "MODEL_RULE", label: "员工规则命中" },
{ value: "EXTERNAL_PERSON", label: "外部人员预警" },
];
const EXTERNAL_RISK_MODEL_OPTIONS = [
{ value: "EXTERNAL_LARGE_TRANSACTION", label: "外部人员大额交易" },
{ value: "EXTERNAL_SUSPICIOUS_GAMBLING", label: "外部人员可疑赌博" },
{ value: "EXTERNAL_SUSPICIOUS_RELATION", label: "外部人员可疑关系" },
];
const DEFAULT_RISK_DETAIL_PAGE_SIZE = 5;
const RISK_DETAIL_PAGE_SIZE_OPTIONS = [5, 10, 20, 50];
@@ -537,6 +541,12 @@ export default {
isExternalSuspiciousType() {
return this.currentSuspiciousType === "EXTERNAL_PERSON";
},
displayRiskModelOptions() {
return this.isExternalSuspiciousType ? EXTERNAL_RISK_MODEL_OPTIONS : this.riskModelOptions;
},
allModelOptionLabel() {
return this.isExternalSuspiciousType ? "全部外部模型" : "全部模型";
},
},
watch: {
sectionData: {
@@ -572,6 +582,14 @@ export default {
buildFlowEvidenceFingerprint,
handleSuspiciousTypeSelectChange(value) {
if (value === "EXTERNAL_PERSON") {
const hasExternalModel = EXTERNAL_RISK_MODEL_OPTIONS
.some((item) => item.value === this.selectedModelCode);
if (!hasExternalModel) {
this.selectedModelCode = "";
}
return;
}
if (this.selectedModelCode && this.selectedModelCode.indexOf("EXTERNAL_") === 0) {
this.selectedModelCode = "";
}
},