[improvement][semantic-fe] add metric trend download functionality (#246)

* [improvement][semantic-fe] Add model alias setting & Add view permission restrictions to the model permission management tab.
[improvement][semantic-fe] Add permission control to the action buttons for the main domain; apply high sensitivity filtering to the authorization of metrics/dimensions.
[improvement][semantic-fe] Optimize the editing mode in the dimension/metric/datasource components to use the modelId stored in the database for data, instead of relying on the data from the state manager.

* [improvement][semantic-fe] Add time granularity setting in the data source configuration.

* [improvement][semantic-fe] Dictionary import for dimension values supported in Q&A visibility

* [improvement][semantic-fe] Modification of data source creation prompt wording"

* [improvement][semantic-fe] metric market experience optimization

* [improvement][semantic-fe] enhance the analysis of metric trends

* [improvement][semantic-fe] optimize the presentation of metric trend permissions

* [improvement][semantic-fe] add metric trend download functionality
This commit is contained in:
tristanliu
2023-10-17 05:35:24 -05:00
committed by GitHub
parent 968d50e071
commit 883cdbefbe
8 changed files with 142 additions and 104 deletions

View File

@@ -1,4 +1,7 @@
import request from 'umi-request';
import axios from 'axios';
import { AUTH_TOKEN_KEY } from '@/common/constants';
import moment from 'moment';
const getRunningEnv = () => {
return window.location.pathname.includes('/chatSetting/') ? 'chat' : 'semantic';
@@ -366,47 +369,69 @@ export function searchDictLatestTaskList(data: any): Promise<any> {
});
}
export function queryStruct({
const downloadStruct = (blob: Blob) => {
const fieldName = `supersonic_${moment().format('YYYYMMDDhhmmss')}.xlsx`;
const link = document.createElement('a');
link.href = URL.createObjectURL(new Blob([blob]));
link.download = fieldName;
document.body.appendChild(link);
link.click();
URL.revokeObjectURL(link.href);
document.body.removeChild(link);
};
export async function queryStruct({
modelId,
bizName,
dateField = 'sys_imp_date',
startDate,
endDate,
download = false,
}: {
modelId: number;
bizName: string;
dateField: string;
startDate: string;
endDate: string;
download?: boolean;
}): Promise<any> {
return request(`${process.env.API_BASE_URL}query/struct`, {
method: 'POST',
data: {
modelId,
groups: [dateField],
aggregators: [
{
column: bizName,
// func: 'SUM',
nameCh: 'null',
args: null,
const response = await request(
`${process.env.API_BASE_URL}query/${download ? 'download/' : ''}struct`,
{
method: 'POST',
...(download ? { responseType: 'blob', getResponse: true } : {}),
data: {
modelId,
groups: [dateField],
aggregators: [
{
column: bizName,
// func: 'SUM',
nameCh: 'null',
args: null,
},
],
orders: [],
dimensionFilters: [],
metricFilters: [],
params: [],
dateInfo: {
dateMode: 'BETWEEN',
startDate,
endDate,
dateList: [],
unit: 7,
period: 'DAY',
text: 'null',
},
],
orders: [],
dimensionFilters: [],
metricFilters: [],
params: [],
dateInfo: {
dateMode: 'BETWEEN',
startDate,
endDate,
dateList: [],
unit: 7,
period: 'DAY',
text: 'null',
limit: 365,
nativeQuery: false,
},
limit: 365,
nativeQuery: false,
},
});
);
if (download) {
downloadStruct(response.data);
} else {
return response;
}
}