diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigBase.java b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigBase.java index e9877855c..2841cd802 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigBase.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigBase.java @@ -31,7 +31,7 @@ public class ChatConfigBase { /** * information about dictionary about the domain */ - private List dictionaryInfos; + private List knowledgeInfos; /** * available status diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigInfo.java b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigInfo.java index 775f9b2f8..556c224f6 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigInfo.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigInfo.java @@ -30,7 +30,7 @@ public class ChatConfigInfo { /** * information about dictionary about the domain */ - private List dictionaryInfos; + private List knowledgeInfos; /** * available status diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigRichInfo.java b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigRichInfo.java index 7e056a386..bb72fcf1d 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigRichInfo.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/pojo/config/ChatConfigRichInfo.java @@ -33,7 +33,7 @@ public class ChatConfigRichInfo { /** * information about dictionary about the domain */ - private List dictionaryInfos; + private List knowledgeInfos; /** * available status diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/ChatConfigUtils.java b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/ChatConfigUtils.java index 77781ab4e..c3517d08a 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/ChatConfigUtils.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/ChatConfigUtils.java @@ -154,7 +154,7 @@ public class ChatConfigUtils { JsonUtil.toList(chaConfigDO.getDefaultMetrics(), DefaultMetricInfo.class)); chaConfigDescriptor.setVisibility(JsonUtil.toObject(chaConfigDO.getVisibility(), ItemVisibility.class)); chaConfigDescriptor.setEntity(JsonUtil.toObject(chaConfigDO.getEntity(), Entity.class)); - chaConfigDescriptor.setDictionaryInfos(JsonUtil.toList(chaConfigDO.getKnowledgeInfo(), KnowledgeInfo.class)); + chaConfigDescriptor.setKnowledgeInfos(JsonUtil.toList(chaConfigDO.getKnowledgeInfo(), KnowledgeInfo.class)); chaConfigDescriptor.setStatusEnum(StatusEnum.of(chaConfigDO.getStatus())); chaConfigDescriptor.setCreatedBy(chaConfigDO.getCreatedBy()); diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/DictMetaUtils.java b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/DictMetaUtils.java index a0da48167..9590908aa 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/DictMetaUtils.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/domain/utils/DictMetaUtils.java @@ -14,6 +14,7 @@ import com.tencent.supersonic.chat.domain.pojo.config.ItemVisibilityInfo; import com.tencent.supersonic.chat.domain.pojo.config.KnowledgeInfo; import com.tencent.supersonic.knowledge.domain.pojo.DictUpdateMode; import com.tencent.supersonic.knowledge.domain.pojo.DimValue2DictCommand; + import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -22,6 +23,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; + import org.apache.logging.log4j.util.Strings; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -37,7 +39,7 @@ public class DictMetaUtils { private final DefaultSemanticInternalUtils defaultSemanticUtils; public DictMetaUtils(SemanticLayer semanticLayer, - DefaultSemanticInternalUtils defaultSemanticUtils) { + DefaultSemanticInternalUtils defaultSemanticUtils) { this.semanticLayer = semanticLayer; this.defaultSemanticUtils = defaultSemanticUtils; } @@ -129,21 +131,21 @@ public class DictMetaUtils { } private void fillDimValueDOList(List dimValueDOList, Long domainId, - Map dimIdAndDescPair) { + Map dimIdAndDescPair) { ChatConfigRichInfo chaConfigRichDesc = defaultSemanticUtils.getChatConfigRichInfo(domainId); if (Objects.nonNull(chaConfigRichDesc)) { List defaultMetricDescList = chaConfigRichDesc.getDefaultMetrics(); - List dictionaryInfos = chaConfigRichDesc.getDictionaryInfos(); - if (!CollectionUtils.isEmpty(dictionaryInfos)) { + List knowledgeInfos = chaConfigRichDesc.getKnowledgeInfos(); + if (!CollectionUtils.isEmpty(knowledgeInfos)) { List dimensions = new ArrayList<>(); - dictionaryInfos.stream() - .filter(dictionaryInfo -> dictionaryInfo.getIsDictInfo() - && isVisibleDim(dictionaryInfo, chaConfigRichDesc.getVisibility())) - .forEach(dictionaryInfo -> { - if (dimIdAndDescPair.containsKey(dictionaryInfo.getItemId())) { - DimSchemaResp dimensionDesc = dimIdAndDescPair.get(dictionaryInfo.getItemId()); + knowledgeInfos.stream() + .filter(knowledgeInfo -> knowledgeInfo.getIsDictInfo() + && isVisibleDim(knowledgeInfo, chaConfigRichDesc.getVisibility())) + .forEach(knowledgeInfo -> { + if (dimIdAndDescPair.containsKey(knowledgeInfo.getItemId())) { + DimSchemaResp dimensionDesc = dimIdAndDescPair.get(knowledgeInfo.getItemId()); //default cnt if (CollectionUtils.isEmpty(defaultMetricDescList)) { @@ -156,9 +158,9 @@ public class DictMetaUtils { } String bizName = dimensionDesc.getBizName(); - dimensions.add(new Dim4Dict(dictionaryInfo.getItemId(), bizName, - dictionaryInfo.getBlackList(), dictionaryInfo.getWhiteList(), - dictionaryInfo.getRuleList())); + dimensions.add(new Dim4Dict(knowledgeInfo.getItemId(), bizName, + knowledgeInfo.getBlackList(), knowledgeInfo.getWhiteList(), + knowledgeInfo.getRuleList())); } }); @@ -173,10 +175,10 @@ public class DictMetaUtils { } } - private boolean isVisibleDim(KnowledgeInfo dictionaryInfo, ItemVisibilityInfo itemVisibilityDesc) { + private boolean isVisibleDim(KnowledgeInfo knowledgeInfo, ItemVisibilityInfo itemVisibilityDesc) { if (Objects.isNull(itemVisibilityDesc) || CollectionUtils.isEmpty(itemVisibilityDesc.getBlackDimIdList())) { return true; } - return !itemVisibilityDesc.getBlackDimIdList().contains(dictionaryInfo.getItemId()); + return !itemVisibilityDesc.getBlackDimIdList().contains(knowledgeInfo.getItemId()); } } \ No newline at end of file diff --git a/launchers/chat/src/main/resources/db/chat-data-h2.sql b/launchers/chat/src/main/resources/db/chat-data-h2.sql index f286f1ae0..48d7d332c 100644 --- a/launchers/chat/src/main/resources/db/chat-data-h2.sql +++ b/launchers/chat/src/main/resources/db/chat-data-h2.sql @@ -3,7 +3,6 @@ insert into s2_user (id, `name`, password, display_name, email) values (2, 'jack insert into s2_user (id, `name`, password, display_name, email) values (3, 'tom','123456','tom','tom@xx.com'); insert into s2_user (id, `name`, password, display_name, email) values (4, 'lucy','123456','lucy','lucy@xx.com'); -insert into s2_chat_config (`id` ,`domain_id` ,`default_metrics`,`visibility`,`entity_info` ,`dictionary_info`,`created_at`,`updated_at`,`created_by`,`updated_by`,`status` ) values (1,1,'[{"metricId":1,"unit":7,"period":"DAY"}]','{"blackDimIdList":[],"blackMetricIdList":[]}','{"entityIds":[2],"names":["用户","用户姓名"],"detailData":{"dimensionIds":[1,2],"metricIds":[2]}}','[{"itemId":1,"type":"DIMENSION","blackList":[],"isDictInfo":true},{"itemId":2,"type":"DIMENSION","blackList":[],"isDictInfo":true},{"itemId":3,"type":"DIMENSION","blackList":[],"isDictInfo":true}]','2023-05-24 18:00:00','2023-05-25 11:00:00','admin','admin',1); insert into s2_chat_config (id, domain_id, default_metrics, visibility, entity_info, dictionary_info, created_at, updated_at, created_by, updated_by, status) values (2, 1, '[{"metricId":1,"unit":7,"period":"DAY"}]','{"blackDimIdList":[],"blackMetricIdList":[]}','{"entityIds":[2],"names":["用户","用户姓名"],"detailData":{"dimensionIds":[1,2],"metricIds":[2]}}','[{"itemId":1,"type":"DIMENSION","blackList":[],"isDictInfo":true},{"itemId":2,"type":"DIMENSION","blackList":[],"isDictInfo":true},{"itemId":3,"type":"DIMENSION","blackList":[],"isDictInfo":true}]','2023-05-24 18:00:00', '2023-05-25 11:00:00', 'admin', 'admin', 1 ); insert into s2_chat (chat_id, `chat_name`, create_time, last_time, creator,last_question,is_delete,is_top) values (1, '超音数访问统计','2023-06-10 10:00:52.495','2023-06-10 10:00:52','admin','您好,欢迎使用内容智能小Q','0','0'); diff --git a/webapp/packages/supersonic-fe/package.json b/webapp/packages/supersonic-fe/package.json index e98deae10..4f4f88f33 100644 --- a/webapp/packages/supersonic-fe/package.json +++ b/webapp/packages/supersonic-fe/package.json @@ -53,6 +53,7 @@ ], "dependencies": { "@ant-design/charts": "^1.3.3", + "@ant-design/cssinjs": "^1.10.1", "@ant-design/icons": "^4.7.0", "@ant-design/pro-card": "^1.11.13", "@ant-design/pro-components": "^2.4.4", @@ -143,4 +144,4 @@ "@types/react": "17.0.0" }, "__npminstall_done": false -} \ No newline at end of file +} diff --git a/webapp/packages/supersonic-fe/src/app.tsx b/webapp/packages/supersonic-fe/src/app.tsx index 74bd1632f..2ccfb6ed9 100644 --- a/webapp/packages/supersonic-fe/src/app.tsx +++ b/webapp/packages/supersonic-fe/src/app.tsx @@ -50,7 +50,7 @@ const getToken = async () => { try { const fromUrl = localStorage.getItem(FROM_URL_KEY); const res = await queryToken(data.code as string); - localStorage.setItem(TOKEN_KEY, res.data.authToken); + localStorage.setItem(TOKEN_KEY, res.payload); const newUrl = deleteUrlQuery(window.location.href, 'code'); window.location.href = fromUrl || newUrl; } catch (err) { diff --git a/webapp/packages/supersonic-fe/src/common/constants.ts b/webapp/packages/supersonic-fe/src/common/constants.ts index f32921677..d0e3aafc2 100644 --- a/webapp/packages/supersonic-fe/src/common/constants.ts +++ b/webapp/packages/supersonic-fe/src/common/constants.ts @@ -1,6 +1,5 @@ // 登陆 token key -export const AUTH_TOKEN_KEY = 'SUPERSONIC_TOKEN'; - +export const AUTH_TOKEN_KEY = process.env.APP_TARGET === 'inner' ? 'TME_TOKEN' : 'SUPERSONIC_TOKEN'; // 记录上次访问页面 export const FROM_URL_KEY = 'FROM_URL'; diff --git a/webapp/packages/supersonic-fe/src/components/SelectTMEPerson/index.tsx b/webapp/packages/supersonic-fe/src/components/SelectTMEPerson/index.tsx index 989812f4b..2f7beff49 100644 --- a/webapp/packages/supersonic-fe/src/components/SelectTMEPerson/index.tsx +++ b/webapp/packages/supersonic-fe/src/components/SelectTMEPerson/index.tsx @@ -22,11 +22,12 @@ const SelectTMEPerson: FC = ({ placeholder, value, isMultiple = true, onC { fetcher: async () => { const res = await getAllUser(); - if (res.code !== 200) { + if (res.code == 200 || Number(res.code) == 0) { + return res.data || []; + } else { message.error(res.msg); throw new Error(res.msg); } - return res.data || []; }, updater: (list) => { const users = list.map((item: UserItem) => { diff --git a/webapp/packages/supersonic-fe/src/pages/Chat/RightSection/Context/index.tsx b/webapp/packages/supersonic-fe/src/pages/Chat/RightSection/Context/index.tsx index dc42669f7..fe7860a17 100644 --- a/webapp/packages/supersonic-fe/src/pages/Chat/RightSection/Context/index.tsx +++ b/webapp/packages/supersonic-fe/src/pages/Chat/RightSection/Context/index.tsx @@ -17,15 +17,17 @@ const Context: React.FC = ({ chatContext }) => { 主题域: {domainName} - {dateInfo && ( -
- 时间范围: - - {dateInfo.text || - `近${moment(dateInfo.endDate).diff(moment(dateInfo.startDate), 'days') + 1}天`} - -
- )} + { + dateInfo && ( +
+ 时间范围: + + {dateInfo.text || + `近${moment(dateInfo.endDate).diff(moment(dateInfo.startDate), 'days') + 1}天`} + +
+ ) + } {metrics && metrics.length > 0 && (
指标: diff --git a/webapp/packages/supersonic-fe/src/pages/Chat/index.tsx b/webapp/packages/supersonic-fe/src/pages/Chat/index.tsx index 3a58bb1ed..41189b8d3 100644 --- a/webapp/packages/supersonic-fe/src/pages/Chat/index.tsx +++ b/webapp/packages/supersonic-fe/src/pages/Chat/index.tsx @@ -11,9 +11,14 @@ import RightSection from './RightSection'; import ChatFooter from './ChatFooter'; import classNames from 'classnames'; import { AUTH_TOKEN_KEY, DEFAULT_CONVERSATION_NAME, WEB_TITLE } from '@/common/constants'; -import { HistoryMsgItemType, MsgDataType, getHistoryMsg, queryContext } from 'supersonic-chat-sdk'; +import { + HistoryMsgItemType, + MsgDataType, + getHistoryMsg, + queryContext, + setToken as setChatSdkToken, +} from 'supersonic-chat-sdk'; import { getConversationContext } from './utils'; -import { setToken as setChatSdkToken } from 'supersonic-chat-sdk'; import 'supersonic-chat-sdk/dist/index.css'; const Chat = () => { diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/ProjectManager.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/ProjectManager.tsx index edcce689f..3f7467ecb 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/ProjectManager.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/ProjectManager.tsx @@ -26,6 +26,7 @@ type Props = { const DEFAULT_LEFT_SIZE = '300px'; const DomainManger: React.FC = ({ domainManger, dispatch }) => { + window.RUNNING_ENV = 'semantic'; const [collapsed, setCollapsed] = useState(false); const [leftSize, setLeftSize] = useState(''); const { selectDomainId, selectDomainName } = domainManger; diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/index.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/index.tsx index 6f79cdca8..ba6d01565 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/index.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/SemanticGraph/index.tsx @@ -196,7 +196,6 @@ const DomainManger: React.FC = ({ domainManger, domainId }) => { }; // const [visible, setVisible] = useState(false); useEffect(() => { - console.log(domainId, graphData, 'domainId'); if (!(Array.isArray(graphData.children) && graphData.children.length > 0)) { return; } @@ -356,7 +355,6 @@ const DomainManger: React.FC = ({ domainManger, domainId }) => { labelCfg: { style: { fill: '#3c3c3c' } }, }; }); - console.log(graphData, 'graphData'); // graph.data(graphData); graph.changeData(graphData); graph.render(); @@ -386,7 +384,6 @@ const DomainManger: React.FC = ({ domainManger, domainId }) => { value={graphShowType} onChange={(e) => { const { value } = e.target; - console.log(value, 'value'); setGraphShowType(value); changeGraphData(dataSourceListData, value); }} diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionSearchVisibleModal.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionSearchVisibleModal.tsx index 6306e21a6..82eba7b19 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionSearchVisibleModal.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Entity/DimensionSearchVisibleModal.tsx @@ -26,13 +26,13 @@ const DimensionSearchVisibleModal: React.FC = ({ const [dictRules, setDictRules] = useState(''); useEffect(() => { - const dictionaryInfos = themeData?.dictionaryInfos; - if (Array.isArray(dictionaryInfos)) { - const target = dictionaryInfos[0]; + const knowledgeInfos = themeData?.knowledgeInfos; + if (Array.isArray(knowledgeInfos)) { + const target = knowledgeInfos[0]; if (Array.isArray(target?.ruleList)) { setDictRules(target.ruleList[0]); } - const selectKeys = dictionaryInfos.map((item: any) => { + const selectKeys = knowledgeInfos.map((item: any) => { return item.itemId; }); setSelectedKeyList(selectKeys); @@ -48,7 +48,7 @@ const DimensionSearchVisibleModal: React.FC = ({ }, [settingSourceList]); const saveDictBatch = async () => { - const dictionaryInfos = selectedKeyList.map((key: string) => { + const knowledgeInfos = selectedKeyList.map((key: string) => { return { itemId: key, type: 'DIMENSION', @@ -62,7 +62,7 @@ const DimensionSearchVisibleModal: React.FC = ({ saveDomainExtendQuery = editDomainExtend; } const { code, msg } = await saveDomainExtendQuery({ - dictionaryInfos, + knowledgeInfos, domainId, id, }); diff --git a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Permission/PermissionTable.tsx b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Permission/PermissionTable.tsx index 7f154ec00..dcacc302c 100644 --- a/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Permission/PermissionTable.tsx +++ b/webapp/packages/supersonic-fe/src/pages/SemanticModel/components/Permission/PermissionTable.tsx @@ -53,14 +53,14 @@ const PermissionTable: React.FC = ({ domainManger }) => { const queryDepartmentData = async () => { const { code, data } = await getDepartmentTree(); - if (code === 200) { + if (code === 200 || code === '0') { setDepartmentTreeData(data); } }; const queryTmePersonData = async () => { const { code, data } = await getAllUser(); - if (code === 200) { + if (code === 200 || Number(code) === 0) { setTmePerson(data); } }; diff --git a/webapp/packages/supersonic-fe/src/services/login.ts b/webapp/packages/supersonic-fe/src/services/login.ts index 179904954..2035aa497 100644 --- a/webapp/packages/supersonic-fe/src/services/login.ts +++ b/webapp/packages/supersonic-fe/src/services/login.ts @@ -9,7 +9,7 @@ export type LoginParamsType = { }; export async function queryToken(code: string) { - return request(`${process.env.API_BASE_URL}user/ioaLoginCallback`, { + return request(`/davinciapi/login/tmeloginCallback`, { params: { code }, }); } diff --git a/webapp/packages/supersonic-fe/src/services/request.ts b/webapp/packages/supersonic-fe/src/services/request.ts index b60fa3c12..ddba11cab 100644 --- a/webapp/packages/supersonic-fe/src/services/request.ts +++ b/webapp/packages/supersonic-fe/src/services/request.ts @@ -20,6 +20,7 @@ const authHeaderInterceptor = (url: string, options: RequestOptionsInit) => { const token = query[TOKEN_KEY] || localStorage.getItem(TOKEN_KEY); if (token) { + headers.Authorization = `Bearer ${token}`; headers.auth = `Bearer ${token}`; localStorage.setItem(TOKEN_KEY, token); } @@ -31,25 +32,19 @@ const authHeaderInterceptor = (url: string, options: RequestOptionsInit) => { }; const responseInterceptor = async (response: Response) => { - const data: Result = await response?.clone()?.json?.(); - if (Number(data.code) === 403) { - history.push('/login'); - return response; - } - const redirect = response.headers.get('redirect'); // 若HEADER中含有REDIRECT说明后端想重定向 if (redirect === 'REDIRECT') { localStorage.removeItem(TOKEN_KEY); - let win: any = window; - while (win !== win.top) { - win = win.top; - } - if (!/fromExternal=true/.test(win.location.search)) { - localStorage.setItem(FROM_URL_KEY, win.location.href); - } + const win: any = window; // 将后端重定向的地址取出来,使用win.location.href去实现重定向的要求 const contextpath = response.headers.get('contextpath'); win.location.href = contextpath; + } else { + const data: Result = await response?.clone()?.json?.(); + if (Number(data.code) === 403) { + history.push('/login'); + return response; + } } return response;