收口结果总览风险人员区块
This commit is contained in:
@@ -16,6 +16,12 @@ public class CcdiProjectRiskPeopleOverviewItemVO {
|
||||
|
||||
private Integer riskCount;
|
||||
|
||||
private String riskLevel;
|
||||
|
||||
private String riskLevelType;
|
||||
|
||||
private Integer modelCount;
|
||||
|
||||
private String riskPoint;
|
||||
|
||||
private String actionLabel;
|
||||
|
||||
@@ -106,6 +106,9 @@ public class CcdiProjectOverviewServiceImpl implements ICcdiProjectOverviewServi
|
||||
item.setIdNo(aggregate.getStaffIdCard());
|
||||
item.setDepartment(aggregate.getDeptName());
|
||||
item.setRiskCount(defaultZero(aggregate.getHitCount()));
|
||||
item.setRiskLevel(resolveRiskLevelName(aggregate.getRiskLevelCode()));
|
||||
item.setRiskLevelType(resolveRiskLevelType(aggregate.getRiskLevelCode()));
|
||||
item.setModelCount(defaultZero(aggregate.getModelCount()));
|
||||
item.setRiskPoint(aggregate.getRiskPoint());
|
||||
item.setActionLabel(ACTION_LABEL);
|
||||
return item;
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.ruoyi.ccdi.project.controller;
|
||||
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectOverviewDashboardVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskPeopleOverviewItemVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectRiskPeopleOverviewVO;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectTopRiskPeopleVO;
|
||||
import com.ruoyi.ccdi.project.service.ICcdiProjectOverviewService;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
@@ -56,11 +58,21 @@ class CcdiProjectOverviewControllerTest {
|
||||
|
||||
@Test
|
||||
void shouldExposeRiskPeopleEndpoint() throws Exception {
|
||||
when(overviewService.getRiskPeopleOverview(40L)).thenReturn(new CcdiProjectRiskPeopleOverviewVO());
|
||||
CcdiProjectRiskPeopleOverviewItemVO item = new CcdiProjectRiskPeopleOverviewItemVO();
|
||||
item.setRiskLevel("中风险");
|
||||
item.setRiskLevelType("warning");
|
||||
item.setModelCount(4);
|
||||
CcdiProjectRiskPeopleOverviewVO overview = new CcdiProjectRiskPeopleOverviewVO();
|
||||
overview.setOverviewList(List.of(item));
|
||||
when(overviewService.getRiskPeopleOverview(40L)).thenReturn(overview);
|
||||
|
||||
AjaxResult result = controller.getRiskPeople(40L);
|
||||
|
||||
assertEquals(200, result.get("code"));
|
||||
CcdiProjectRiskPeopleOverviewVO data = (CcdiProjectRiskPeopleOverviewVO) result.get("data");
|
||||
assertEquals("中风险", data.getOverviewList().getFirst().getRiskLevel());
|
||||
assertEquals("warning", data.getOverviewList().getFirst().getRiskLevelType());
|
||||
assertEquals(4, data.getOverviewList().getFirst().getModelCount());
|
||||
verify(overviewService).getRiskPeopleOverview(40L);
|
||||
|
||||
Method method = CcdiProjectOverviewController.class.getMethod("getRiskPeople", Long.class);
|
||||
|
||||
@@ -64,6 +64,8 @@ class CcdiProjectOverviewServiceImplTest {
|
||||
aggregate.setDeptName("信息二部");
|
||||
aggregate.setRuleCount(5);
|
||||
aggregate.setHitCount(8);
|
||||
aggregate.setRiskLevelCode("HIGH");
|
||||
aggregate.setModelCount(3);
|
||||
aggregate.setRiskPoint("大额单笔收入、疑似兼职");
|
||||
when(overviewMapper.selectRiskPeopleOverviewByProjectId(40L)).thenReturn(List.of(aggregate));
|
||||
|
||||
@@ -71,6 +73,9 @@ class CcdiProjectOverviewServiceImplTest {
|
||||
|
||||
assertEquals(1, overview.getOverviewList().size());
|
||||
assertEquals(8, overview.getOverviewList().getFirst().getRiskCount());
|
||||
assertEquals("高风险", overview.getOverviewList().getFirst().getRiskLevel());
|
||||
assertEquals("danger", overview.getOverviewList().getFirst().getRiskLevelType());
|
||||
assertEquals(3, overview.getOverviewList().getFirst().getModelCount());
|
||||
assertEquals("大额单笔收入、疑似兼职", overview.getOverviewList().getFirst().getRiskPoint());
|
||||
assertEquals("查看详情", overview.getOverviewList().getFirst().getActionLabel());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# 结果总览风险人员总览字段扩展后端实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 为 [`CcdiProjectRiskPeopleOverviewItemVO.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/vo/CcdiProjectRiskPeopleOverviewItemVO.java) 新增 `riskLevel`、`riskLevelType`、`modelCount` 字段。
|
||||
- 调整 [`CcdiProjectOverviewServiceImpl.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImpl.java) 中 `buildRiskPeopleItem` 映射逻辑,风险人员总览直接返回风险等级、标签类型和命中模型数。
|
||||
- 调整 [`CcdiProjectOverviewServiceImplTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/service/impl/CcdiProjectOverviewServiceImplTest.java),锁定风险人员总览返回新字段。
|
||||
- 调整 [`CcdiProjectOverviewControllerTest.java`](/Users/wkc/Desktop/ccdi/ccdi/ccdi-project/src/test/java/com/ruoyi/ccdi/project/controller/CcdiProjectOverviewControllerTest.java),校验控制器返回数据中包含新字段。
|
||||
|
||||
## 处理说明
|
||||
|
||||
- 本次未新增接口,继续复用 `GET /ccdi/project/overview/risk-people`。
|
||||
- 本次未修改员工风险聚合 SQL,也未调整风险等级分级规则。
|
||||
- 本次未删除后端独立的 `top-risk-people` 接口,收口范围只限于风险人员总览接口字段扩展。
|
||||
|
||||
## 验证情况
|
||||
|
||||
- 已执行结果总览后端定向测试:
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceStructureTest
|
||||
```
|
||||
|
||||
- 上述命令执行通过,证明服务映射、控制器、SQL 结构与服务接口边界未被本次调整破坏。
|
||||
@@ -0,0 +1,32 @@
|
||||
# 结果总览风险人员区块收口前端实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 调整 [`projectOverview.js`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/api/ccdi/projectOverview.js),移除页面不再使用的 `getOverviewTopRiskPeople` 封装。
|
||||
- 调整 [`PreliminaryCheck.vue`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/PreliminaryCheck.vue),页面并发请求从 `dashboard + riskPeople + topRiskPeople` 收口为 `dashboard + riskPeople`。
|
||||
- 调整 [`preliminaryCheck.mock.js`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/preliminaryCheck.mock.js),为 `overviewList` 补充 `riskLevel`、`riskLevelType`、`modelCount`,并移除展示层对 `topRiskList` 的依赖。
|
||||
- 调整 [`RiskPeopleSection.vue`](/Users/wkc/Desktop/ccdi/ccdi/ruoyi-ui/src/views/ccdiProject/components/detail/RiskPeopleSection.vue),删除独立的 `中高风险人员TOP10` 区块,在风险人员总览单表中新增 `风险等级`、`命中模型数` 两列。
|
||||
- 调整 4 个前端静态断言脚本,锁定页面不再依赖 TOP10 接口,且风险人员总览单表直接绑定新字段。
|
||||
|
||||
## 处理说明
|
||||
|
||||
- 本次未新增页面组件,也未修改风险模型区和风险明细区。
|
||||
- 本次未增加前端拼装补丁逻辑,风险等级标签继续直接使用后端返回的 `riskLevelType`。
|
||||
- 本次未启动长期前端开发进程,因此不存在额外进程清理动作。
|
||||
|
||||
## 验证情况
|
||||
|
||||
- 已执行结果总览前端静态断言回归:
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
node tests/unit/project-overview-api.test.js
|
||||
node tests/unit/preliminary-check-api-integration.test.js
|
||||
node tests/unit/preliminary-check-summary-and-people.test.js
|
||||
node tests/unit/preliminary-check-risk-people-binding.test.js
|
||||
node tests/unit/preliminary-check-states.test.js
|
||||
node tests/unit/preliminary-check-layout.test.js
|
||||
npm run build:prod
|
||||
```
|
||||
|
||||
- 上述命令全部通过;生产构建仅出现现有资源体积告警,无新增编译错误,说明页面接口依赖、单表结构、字段绑定和基础状态展示均符合本轮需求。
|
||||
@@ -0,0 +1,26 @@
|
||||
# 结果总览风险人员总览字段扩展后端验证记录
|
||||
|
||||
## 验证范围
|
||||
|
||||
- 风险人员总览服务映射
|
||||
- 风险人员总览控制器返回结构
|
||||
- 结果总览 SQL 结构回归
|
||||
- 结果总览服务接口结构回归
|
||||
|
||||
## 验证命令
|
||||
|
||||
```bash
|
||||
mvn test -pl ccdi-project -Dtest=CcdiProjectOverviewServiceImplTest,CcdiProjectOverviewControllerTest,CcdiProjectOverviewMapperSqlTest,CcdiProjectOverviewServiceStructureTest
|
||||
```
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 2026-03-20 09:28:10 首次执行定向测试,测试编译失败,失败原因符合预期:`CcdiProjectRiskPeopleOverviewItemVO` 尚未提供 `riskLevel`、`riskLevelType`、`modelCount` 访问器。
|
||||
- 2026-03-20 09:28:30 完成最小实现后重新执行同一命令,`CcdiProjectOverviewServiceImplTest`、`CcdiProjectOverviewControllerTest`、`CcdiProjectOverviewMapperSqlTest`、`CcdiProjectOverviewServiceStructureTest` 共 11 个测试全部通过。
|
||||
- Maven 过程仅出现 Mockito 动态 agent 的现有 JDK 警告,无新增 failure 或 error。
|
||||
|
||||
## 结论
|
||||
|
||||
- 风险人员总览接口已稳定返回 `riskLevel`、`riskLevelType`、`modelCount`。
|
||||
- 结果总览后端现有 SQL 聚合与接口结构在本轮改动后保持稳定。
|
||||
- 后端独立 TOP10 接口未受本次修改影响。
|
||||
@@ -0,0 +1,39 @@
|
||||
# 结果总览风险人员区块收口前端验证记录
|
||||
|
||||
## 验证范围
|
||||
|
||||
- API 封装收口
|
||||
- 结果总览页面并发取数收口
|
||||
- 风险人员总览单表结构
|
||||
- 风险等级与命中模型数字段绑定
|
||||
- 加载态、空态与基础布局回归
|
||||
|
||||
## 验证命令
|
||||
|
||||
```bash
|
||||
cd ruoyi-ui
|
||||
node tests/unit/project-overview-api.test.js
|
||||
node tests/unit/preliminary-check-api-integration.test.js
|
||||
node tests/unit/preliminary-check-summary-and-people.test.js
|
||||
node tests/unit/preliminary-check-risk-people-binding.test.js
|
||||
node tests/unit/preliminary-check-states.test.js
|
||||
node tests/unit/preliminary-check-layout.test.js
|
||||
npm run build:prod
|
||||
```
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 2026-03-20 前端先按新需求更新断言后首次执行静态测试,`project-overview-api.test.js` 失败,失败点符合预期:源码仍保留 `getOverviewTopRiskPeople`。
|
||||
- 2026-03-20 完成最小实现后重新执行全部 6 个静态断言脚本,进程均 `exit 0`。
|
||||
- 2026-03-20 执行 `npm run build:prod`,构建完成,只有现有资源体积告警,无新增编译错误。
|
||||
- 验证结果覆盖:
|
||||
- 页面不再依赖 `top-risk-people` 接口
|
||||
- 风险人员区块不再包含 `中高风险人员TOP10`
|
||||
- 风险人员总览单表已展示 `风险等级`、`命中模型数`
|
||||
- 页面空态、加载态与基础结构未被破坏
|
||||
|
||||
## 结论
|
||||
|
||||
- 前端已按设计完成人员区块收口。
|
||||
- 结果总览页面当前只依赖 `dashboard` 和 `riskPeople` 两类真实接口。
|
||||
- 风险人员总览已成为唯一人员榜单区块,新增字段展示正常。
|
||||
@@ -15,11 +15,3 @@ export function getOverviewRiskPeople(projectId) {
|
||||
params: { projectId }
|
||||
})
|
||||
}
|
||||
|
||||
export function getOverviewTopRiskPeople(projectId) {
|
||||
return request({
|
||||
url: '/ccdi/project/overview/top-risk-people',
|
||||
method: 'get',
|
||||
params: { projectId }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import {
|
||||
import {
|
||||
getOverviewDashboard,
|
||||
getOverviewRiskPeople,
|
||||
getOverviewTopRiskPeople,
|
||||
} from "@/api/ccdi/projectOverview";
|
||||
import OverviewStats from "./OverviewStats";
|
||||
import RiskPeopleSection from "./RiskPeopleSection";
|
||||
@@ -103,25 +102,21 @@ export default {
|
||||
|
||||
this.pageState = "loading";
|
||||
try {
|
||||
const [dashboardRes, riskPeopleRes, topRiskPeopleRes] = await Promise.all([
|
||||
const [dashboardRes, riskPeopleRes] = await Promise.all([
|
||||
getOverviewDashboard(this.projectId),
|
||||
getOverviewRiskPeople(this.projectId),
|
||||
getOverviewTopRiskPeople(this.projectId),
|
||||
]);
|
||||
const dashboardData = (dashboardRes && dashboardRes.data) || {};
|
||||
const riskPeopleData = (riskPeopleRes && riskPeopleRes.data) || {};
|
||||
const topRiskPeopleData = (topRiskPeopleRes && topRiskPeopleRes.data) || {};
|
||||
|
||||
this.realData = createOverviewLoadedData({
|
||||
dashboardData,
|
||||
riskPeopleData,
|
||||
topRiskPeopleData,
|
||||
});
|
||||
|
||||
const hasOverviewData = Boolean(
|
||||
(Array.isArray(dashboardData.stats) && dashboardData.stats.length) ||
|
||||
(Array.isArray(riskPeopleData.overviewList) && riskPeopleData.overviewList.length) ||
|
||||
(Array.isArray(topRiskPeopleData.topRiskList) && topRiskPeopleData.topRiskList.length)
|
||||
(Array.isArray(riskPeopleData.overviewList) && riskPeopleData.overviewList.length)
|
||||
);
|
||||
|
||||
this.pageState = hasOverviewData ? "loaded" : "empty";
|
||||
|
||||
@@ -16,37 +16,15 @@
|
||||
<el-table-column prop="idNo" label="身份证号" min-width="180" />
|
||||
<el-table-column prop="department" label="所属部门" min-width="140" />
|
||||
<el-table-column prop="riskCount" label="疑似违规数" min-width="100" />
|
||||
<el-table-column prop="riskPoint" label="核心异常点" min-width="220" />
|
||||
<el-table-column label="操作" width="100" align="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini">{{ scope.row.actionLabel || "查看详情" }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="block-header">
|
||||
<div>
|
||||
<div class="block-title">中高风险人员TOP10</div>
|
||||
<div class="block-subtitle">按风险等级和命中数量聚焦重点对象</div>
|
||||
</div>
|
||||
<el-button size="mini" type="text">导出</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="sectionData.topRiskList || []" class="people-table">
|
||||
<el-table-column type="index" label="排名" width="60" />
|
||||
<el-table-column prop="name" label="姓名" min-width="100" />
|
||||
<el-table-column prop="idNo" label="身份证号" min-width="180" />
|
||||
<el-table-column prop="department" label="所属部门" min-width="140" />
|
||||
<el-table-column prop="riskLevel" label="风险等级" min-width="100">
|
||||
<el-table-column prop="riskLevel" label="风险等级" min-width="110">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="mini" :type="scope.row.riskLevelType" effect="plain">
|
||||
{{ scope.row.riskLevel }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="modelCount" label="命中模型数" min-width="100" />
|
||||
<el-table-column prop="modelCount" label="命中模型数" min-width="110" />
|
||||
<el-table-column prop="riskPoint" label="核心异常点" min-width="220" />
|
||||
<el-table-column label="操作" width="100" align="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini">{{ scope.row.actionLabel || "查看详情" }}</el-button>
|
||||
@@ -82,10 +60,6 @@ export default {
|
||||
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
|
||||
}
|
||||
|
||||
.block + .block {
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
.block-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
@@ -18,6 +18,9 @@ export const mockOverviewData = {
|
||||
idNo: "331081199003230321",
|
||||
department: "信息二部",
|
||||
riskCount: 5,
|
||||
riskLevel: "高风险",
|
||||
riskLevelType: "danger",
|
||||
modelCount: 3,
|
||||
riskPoint: "跨地域转账频繁交易",
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
@@ -26,6 +29,9 @@ export const mockOverviewData = {
|
||||
idNo: "331081199003231077",
|
||||
department: "办公室",
|
||||
riskCount: 2,
|
||||
riskLevel: "中风险",
|
||||
riskLevelType: "warning",
|
||||
modelCount: 2,
|
||||
riskPoint: "多工资转入频繁交易",
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
@@ -34,30 +40,13 @@ export const mockOverviewData = {
|
||||
idNo: "331081199003231099",
|
||||
department: "信息五部",
|
||||
riskCount: 2,
|
||||
riskLevel: "低风险",
|
||||
riskLevelType: "info",
|
||||
modelCount: 1,
|
||||
riskPoint: "频繁小额转账",
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
],
|
||||
topRiskList: [
|
||||
{
|
||||
name: "张三",
|
||||
idNo: "331081199003231021",
|
||||
department: "信贷部",
|
||||
riskLevel: "高风险",
|
||||
riskLevelType: "danger",
|
||||
modelCount: 8,
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
{
|
||||
name: "李四",
|
||||
idNo: "331081199003230321",
|
||||
department: "信息二部",
|
||||
riskLevel: "中风险",
|
||||
riskLevelType: "warning",
|
||||
modelCount: 6,
|
||||
actionLabel: "查看详情",
|
||||
},
|
||||
],
|
||||
},
|
||||
riskModels: {
|
||||
cardList: [
|
||||
@@ -158,7 +147,7 @@ function normalizeSummaryStats(stats) {
|
||||
}));
|
||||
}
|
||||
|
||||
export function createOverviewLoadedData({ dashboardData, riskPeopleData, topRiskPeopleData } = {}) {
|
||||
export function createOverviewLoadedData({ dashboardData, riskPeopleData } = {}) {
|
||||
return {
|
||||
...mockOverviewData,
|
||||
summary: {
|
||||
@@ -172,9 +161,6 @@ export function createOverviewLoadedData({ dashboardData, riskPeopleData, topRis
|
||||
overviewList: Array.isArray(riskPeopleData && riskPeopleData.overviewList)
|
||||
? riskPeopleData.overviewList
|
||||
: [],
|
||||
topRiskList: Array.isArray(topRiskPeopleData && topRiskPeopleData.topRiskList)
|
||||
? topRiskPeopleData.topRiskList
|
||||
: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -191,7 +177,6 @@ export const mockOverviewStateData = {
|
||||
},
|
||||
riskPeople: {
|
||||
overviewList: [],
|
||||
topRiskList: [],
|
||||
},
|
||||
riskModels: {
|
||||
...mockOverviewData.riskModels,
|
||||
|
||||
@@ -10,7 +10,10 @@ const source = fs.readFileSync(
|
||||
[
|
||||
"getOverviewDashboard",
|
||||
"getOverviewRiskPeople",
|
||||
"getOverviewTopRiskPeople",
|
||||
"loadOverviewData",
|
||||
"Promise.all",
|
||||
].forEach((token) => assert(source.includes(token), token));
|
||||
|
||||
assert(!source.includes("getOverviewTopRiskPeople"), "页面不应再依赖TOP10接口");
|
||||
assert(!source.includes("topRiskPeopleRes"), "页面不应再处理TOP10响应");
|
||||
assert(!source.includes("topRiskPeopleData"), "页面不应再处理TOP10数据");
|
||||
|
||||
@@ -9,12 +9,13 @@ const source = fs.readFileSync(
|
||||
|
||||
[
|
||||
"sectionData.overviewList",
|
||||
"sectionData.topRiskList",
|
||||
"riskCount",
|
||||
"riskPoint",
|
||||
"modelCount",
|
||||
"riskLevelType",
|
||||
].forEach((token) => assert(source.includes(token), token));
|
||||
|
||||
assert(!source.includes("sectionData.topRiskList"), "不应再绑定TOP10列表");
|
||||
|
||||
assert(!source.includes("scope.row.riskLevelType || 'danger'"), "riskLevelType fallback");
|
||||
assert(source.includes('scope.row.actionLabel || "查看详情"'), "actionLabel fallback");
|
||||
|
||||
@@ -25,7 +25,8 @@ const people = fs.readFileSync(
|
||||
);
|
||||
|
||||
["风险仪表盘", "overview-stats"].forEach((token) => assert(stats.includes(token), token));
|
||||
["风险人员总览", "中高风险人员TOP10", "查看详情"].forEach((token) =>
|
||||
["风险人员总览", "风险等级", "命中模型数", "查看详情"].forEach((token) =>
|
||||
assert(people.includes(token), token)
|
||||
);
|
||||
assert(!people.includes("中高风险人员TOP10"), "不应保留TOP10区块");
|
||||
assert(entry.includes("risk-people-section"), "入口应挂载风险人员区");
|
||||
|
||||
@@ -10,8 +10,11 @@ const source = fs.readFileSync(
|
||||
[
|
||||
"getOverviewDashboard",
|
||||
"getOverviewRiskPeople",
|
||||
"getOverviewTopRiskPeople",
|
||||
"/ccdi/project/overview/dashboard",
|
||||
"/ccdi/project/overview/risk-people",
|
||||
"/ccdi/project/overview/top-risk-people",
|
||||
].forEach((token) => assert(source.includes(token), token));
|
||||
|
||||
[
|
||||
"getOverviewTopRiskPeople",
|
||||
"/ccdi/project/overview/top-risk-people",
|
||||
].forEach((token) => assert(!source.includes(token), token));
|
||||
|
||||
Reference in New Issue
Block a user