Skip to content

Commit

Permalink
Merge pull request #512 from nanasikeai/feat_rule_audit
Browse files Browse the repository at this point in the history
feat: 规则审计,数据源联调 --story=120928207
  • Loading branch information
0RAJA authored Jan 8, 2025
2 parents 09dda51 + b0d60c1 commit 01f0f28
Show file tree
Hide file tree
Showing 17 changed files with 250 additions and 273 deletions.
10 changes: 6 additions & 4 deletions src/frontend/src/domain/model/strategy/common-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ export default class CommonData {
algorithm_operator: Array<ItemType>;
strategy_status: Array<ItemType>;
risk_level: Array<ItemType>;
strategy_way: Array<ItemType>;
customize_table_type: Array<ItemType>;
strategy_type: Array<ItemType>;
rule_audit_config_type: Array<ItemType>;
aggregate: Array<ItemType>;
link_table_join_type: Array<ItemType>;
link_table_table_type: Array<ItemType>;
rule_audit_aggregate_type: Array<ItemType>;

constructor(payload = {} as CommonData) {
this.offset_unit = payload.offset_unit || [];
Expand All @@ -45,11 +46,12 @@ export default class CommonData {
this.algorithm_operator = payload.algorithm_operator || [];
this.strategy_status = payload.strategy_status || [];
this.risk_level = payload.risk_level || [];
this.strategy_way = payload.strategy_way || [];
this.customize_table_type = payload.customize_table_type || [];
this.strategy_type = payload.strategy_type || [];
this.rule_audit_config_type = payload.rule_audit_config_type || [];
this.aggregate = payload.aggregate || [];
this.link_table_join_type = payload.link_table_join_type || [];
this.link_table_table_type = payload.link_table_table_type || [];
this.rule_audit_aggregate_type = payload.rule_audit_aggregate_type || [];
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,18 @@
to the current version of the project delivered to anyone in the future.
*/
export default class DatabaseTableField {
rt_id: string; // RT ID
table: string; // RT ID
raw_name: string; // bkbase 字段名
display_name: string; // 展示名称 -- 用于 AS 别名,查询中唯一
type: string; // 字段类型 -- 来自 bkbase
aggregate?: string; // 聚合函数 -- 聚合算法
link_table?: { // 联表 -- 存在联表则必填
uid: string,
version: string
};
remark: string; // 备注

constructor(payload = {} as DatabaseTableField) {
this.rt_id = payload.rt_id;
this.table = payload.table;
this.raw_name = payload.raw_name;
this.display_name = payload.display_name;
this.type = payload.type;
this.link_table = payload.link_table;
this.remark = payload.remark;
}
}
4 changes: 2 additions & 2 deletions src/frontend/src/domain/model/strategy/strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export default class Strategy {
risk_hazard: string;
risk_guidance: string;
risk_title: string;
strategy_way: string;
strategy_type: string;
event_evidence_field_configs: StrategyFieldEvent['event_evidence_field_configs'];
event_data_field_configs: StrategyFieldEvent['event_data_field_configs'];
event_basic_field_configs: StrategyFieldEvent['event_basic_field_configs'];
Expand Down Expand Up @@ -94,7 +94,7 @@ export default class Strategy {
this.risk_hazard = payload.risk_hazard;
this.risk_guidance = payload.risk_guidance;
this.risk_title = payload.risk_title;
this.strategy_way = payload.strategy_way;
this.strategy_type = payload.strategy_type;
this.event_evidence_field_configs = payload.event_evidence_field_configs;
this.event_data_field_configs = payload.event_data_field_configs;
this.event_basic_field_configs = payload.event_basic_field_configs;
Expand Down
8 changes: 0 additions & 8 deletions src/frontend/src/domain/service/meta-manage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,6 @@ export default {
})
.then(({ data }) => new SystemModel(data));
},
/**
* @desc 获取关联数据表
* @param { Object } params
*/
fetchLinkDataSheet(params = {}) {
return MetaManageSource.getLinkDataSheet(params)
.then(({ data }) => data);
},
/**
* @desc 操作列表
* @param { String } id
Expand Down
9 changes: 0 additions & 9 deletions src/frontend/src/domain/service/strategy-manage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,15 +145,6 @@ export default {
return StrategySource.getTable(params)
.then(({ data }) => data);
},
/**
* @desc 获取表字段
*/
fetDatabaseTableFields(params: {
table_id: string;
}) {
return StrategySource.getDatabaseTableFields(params)
.then(({ data }) => data);
},
/**
* @desc 获取表字段对应的规则和枚举值列表
*/
Expand Down
16 changes: 0 additions & 16 deletions src/frontend/src/domain/source/meta-manage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
We undertake not to change the open source license (MIT license) applicable
to the current version of the project delivered to anyone in the future.
*/
import type DateSheetModel from '@model/meta/data-sheet';
import type EventSourceAppModel from '@model/meta/event-source-app';
import type GlobalsModel from '@model/meta/globals';
import type NamespaceModel from '@model/meta/namespace';
Expand Down Expand Up @@ -83,21 +82,6 @@ class MetaManage extends ModuleBase {
payload,
});
}
// 获取关联数据表
getLinkDataSheet(params: Record<string, any>) {
// return Request.get<Array<DateSheetModel>>(`${this.path}/link_data_sheet/list_sheet/`, {
// params,
// });
console.log(params);
return Promise.resolve<{
data: Array<DateSheetModel>
}>({
data: [{
id: 1,
name: '关联表1',
}],
});
}
// 操作列表(搜索)
getBatchActionBySystemIds(params: Record<'system_ids', string>) {
return Request.get<Array<Record<'id'|'name', string>>>(`${this.path}/systems/action_search/`, {
Expand Down
26 changes: 0 additions & 26 deletions src/frontend/src/domain/source/strategy-manage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,32 +158,6 @@ class Strategy extends ModuleBase {
params,
});
}
// 获取表字段
getDatabaseTableFields(params: {
table_id: string;
}) {
// return Request.get<Array<DatabaseTableFieldModel>>(`${this.path}/strategy_database_table_fields/`, {
// params,
// });
console.log(params);
return Promise.resolve<{
data: Array<DatabaseTableFieldModel>
}>({
data: [{
rt_id: 'fr93yxgtrUtMCZ8DjkTh7F',
raw_name: 'dtEventTime',
type: 'datetime',
display_name: '时间',
remark: '',
}, {
rt_id: 'fr93yxgtrUtMCZ8DjkTh7G',
raw_name: 'user',
type: 'string',
display_name: '人员-1',
remark: '',
}],
});
}
// 获取表字段对应的规则和枚举值列表
gethFiledRules(params: {
field: DatabaseTableFieldModel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,8 @@
:class="[selectIndex === index ? 'select-item-active' : '']"
@click="() => handleSelectField(index, item)">
<div>
<audit-icon
style=" margin-right: 4px; font-size: 16px;color: #1ba3fd"
type="user" />
<span>{{ item.display_name }}</span>
<span style=" margin-right: 4px;font-size: 14px; color: #29bc9e;">#</span>
<span>{{ item.display_name.replace(/\(.*?\)/g, '').trim() }}</span>
</div>
<div>{{ item.raw_name }}</div>
</div>
Expand Down Expand Up @@ -120,7 +118,7 @@
selectIndex.value = index;
// 同一字段不能重复添加同一聚合算法
// eslint-disable-next-line max-len
const hasAggregate = props.expectedResultList.filter(item => (item.rt_id + item.raw_name) === (field.rt_id + item.raw_name));
const hasAggregate = props.expectedResultList.filter(item => (item.table + item.raw_name) === (field.table + item.raw_name));
if (hasAggregate.length) {
localAggregateList.value = localAggregateList.value.map((item) => {
if (hasAggregate.some(element => element.aggregate === item.value)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
<script setup lang='ts'>
import {
ref,
watch,
} from 'vue';
import { useI18n } from 'vue-i18n';

Expand All @@ -70,20 +71,33 @@
(e: 'updateDataSource', value: IFormData['configs']['data_source']): void,
}

interface Props {
tableData: Array<{
label: string;
value: string;
children: Array<{
label: string;
value: string;
}>
}>;
}

interface IFormData {
configs: {
data_source: {
system_id: string[],
rt_id: string,
},
},
}
const props = defineProps<Props>();
const emits = defineEmits<Emits>();

const { t } = useI18n();
const formData = ref<IFormData>({
configs: {
data_source: {
system_id: [],
rt_id: '',
},
},
});
Expand Down Expand Up @@ -131,6 +145,16 @@
emits('updateDataSource', formData.value.configs.data_source);
};

watch(() => props.tableData, (data) => {
if (data) {
formData.value.configs.data_source.rt_id = data[0]?.value;
emits('updateDataSource', formData.value.configs.data_source);
}
}, {
immediate: true,
});


defineExpose<Expose>({
resetFormData: () => {
formData.value.configs.data_source.system_id = [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
-->
<template>
<div
v-if="linkDataDetail.config.links && linkDataDetail.config.links.length"
v-if="linkDataDetail.config?.links && linkDataDetail.config.links.length"
class="link-data-detail">
<bk-alert
v-if="linkDataDetail.has_refresh"
Expand Down Expand Up @@ -44,21 +44,26 @@
</bk-alert>
<div class="detail-wrapper">
<div style="display: flex; justify-content: space-between;">
<span>{{ t('连表预览') }}</span>
<div>
<span>{{ t('连表预览') }}</span>
<audit-icon
v-bk-tooltips="t('联表中,将自动生成各个原始表的字母别名,用于后续选择字段的简略标识')"
style=" margin-left: 9px; font-size: 14px;color: #c4c6cc; cursor: pointer;"
type="help-fill" />
</div>
<div class="operation">
<span>{{ t('找不到合适的数据?') }}</span>
<router-link
<bk-button
style="margin: 0 16px;"
target="_blank"
:to="{
name: '',
}">
text
theme="primary"
@click="create">
{{ t('立即新建联表') }}
</router-link>
</bk-button>
<router-link
target="_blank"
:to="{
name: '',
name: 'linkDataManage',
}">
{{ t('前往联表管理') }}
</router-link>
Expand All @@ -71,13 +76,13 @@
<div class="detail-table">
<div class="detail-table-head">
<div class="left-name">
{{ item.left_table.name }}
{{ item.left_table.rt_id }}
</div>
<div class="join-type">
<relation-ship :join-type="item.join_type" />
</div>
<div class="right-name">
{{ item.right_table.name }}
{{ item.right_table.rt_id }}
</div>
</div>
<template
Expand All @@ -98,27 +103,37 @@
</div>
</div>
</div>
<create-link-data
ref="createRef" />
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { useI18n } from 'vue-i18n';

import LinkDataDetailModel from '@model/link-data/link-data-detail';

import CreateLinkData from '@views/link-data-manage/link-data-create/index.vue';

interface Emits {
(e: 'handleRefreshLinkData'): void;
(e: 'refreshLinkData'): void;
}
interface Props {
linkDataDetail: LinkDataDetailModel
linkDataSheetId: string
linkDataSheetId: number
}

defineProps<Props>();
const emit = defineEmits<Emits>();
const { t } = useI18n();
const createRef = ref();

const create = () => {
createRef.value.show();
};

const handleRefreshLinkData = () => {
emit('handleRefreshLinkData');
emit('refreshLinkData');
};
</script>
<style scoped lang="postcss">
Expand Down
Loading

0 comments on commit 01f0f28

Please sign in to comment.