mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 04:57:28 +00:00
[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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user