diff --git a/docSite/content/zh-cn/docs/development/upgrading/4914.md b/docSite/content/zh-cn/docs/development/upgrading/4914.md index 54522862b..165111ef8 100644 --- a/docSite/content/zh-cn/docs/development/upgrading/4914.md +++ b/docSite/content/zh-cn/docs/development/upgrading/4914.md @@ -37,4 +37,5 @@ weight: 786 ## 🐛 修复 1. 知识库数据输入,识别 QA 模式错误。 -2. 知识库标签条件冲突。 \ No newline at end of file +2. 知识库标签条件冲突。 +3. 对话日志点赞点踩统计。 \ No newline at end of file diff --git a/packages/service/core/chat/chatItemSchema.ts b/packages/service/core/chat/chatItemSchema.ts index 91ecc8c42..c192d81b1 100644 --- a/packages/service/core/chat/chatItemSchema.ts +++ b/packages/service/core/chat/chatItemSchema.ts @@ -64,9 +64,7 @@ const ChatItemSchema = new Schema({ memories: Object, errorMsg: String, userGoodFeedback: String, - userBadFeedback: { - type: String - }, + userBadFeedback: String, customFeedbacks: [String], adminFeedback: { type: { diff --git a/projects/app/src/pageComponents/dataset/detail/InputDataModal.tsx b/projects/app/src/pageComponents/dataset/detail/InputDataModal.tsx index 2432e330c..daf54fa66 100644 --- a/projects/app/src/pageComponents/dataset/detail/InputDataModal.tsx +++ b/projects/app/src/pageComponents/dataset/detail/InputDataModal.tsx @@ -76,58 +76,47 @@ const InputDataModal = ({ }); const imagePreivewUrl = watch('imagePreivewUrl'); - const { data: collection = defaultCollectionDetail } = useRequest2( - () => getDatasetCollectionById(collectionId), - { - manual: false, - refreshDeps: [collectionId], - onSuccess(res) { - if (res.type === DatasetCollectionTypeEnum.images) { - setCurrentTab(TabEnum.image); - } - } - } - ); - - // Get data - const { data: dataItem, loading: isFetchingData } = useRequest2( + const { data: collection = defaultCollectionDetail, loading: initLoading } = useRequest2( async () => { - if (dataId) return getDatasetDataItemById(dataId); - return null; + const [collection, dataItem] = await Promise.all([ + getDatasetCollectionById(collectionId), + ...(dataId ? [getDatasetDataItemById(dataId)] : []) + ]); + + if (dataItem) { + setCurrentTab(dataItem?.a ? TabEnum.qa : TabEnum.chunk); + reset({ + q: dataItem.q || '', + a: dataItem.a || '', + imagePreivewUrl: dataItem.imagePreivewUrl, + indexes: dataItem.indexes.map((item) => ({ + ...item, + fold: true + })) + }); + } else if (defaultValue) { + setCurrentTab(defaultValue?.a ? TabEnum.qa : TabEnum.chunk); + reset({ + q: defaultValue.q || '', + a: defaultValue.a || '', + imagePreivewUrl: defaultValue.imagePreivewUrl + }); + } else { + setCurrentTab(TabEnum.chunk); + } + + // Forcus reset to image tab + if (collection.type === DatasetCollectionTypeEnum.images) { + setCurrentTab(TabEnum.image); + } + return collection; }, { manual: false, - refreshDeps: [dataId], - onSuccess(res) { - if (res) { - reset({ - q: res.q || '', - a: res.a || '', - imagePreivewUrl: res.imagePreivewUrl, - indexes: res.indexes.map((item) => ({ - ...item, - fold: true - })) - }); - } else if (defaultValue) { - reset({ - q: defaultValue.q || '', - a: defaultValue.a || '', - imagePreivewUrl: defaultValue.imagePreivewUrl - }); - } - }, - onError(err) { - onClose(); - } + refreshDeps: [collectionId, dataId, defaultValue] } ); - useEffect(() => { - if (currentTab || !dataItem) return; - setCurrentTab(dataItem.a ? TabEnum.qa : TabEnum.chunk); - }, [collection, dataItem, currentTab]); - // Import new data const { runAsync: sureImportData, loading: isImporting } = useRequest2( async (e: InputDataType) => { @@ -138,7 +127,7 @@ const InputDataModal = ({ q: e.q, a: currentTab === TabEnum.qa ? e.a : '', // Contains no default index - indexes: e.indexes.filter((item) => !!item.text?.trim()) + indexes: e.indexes?.filter((item) => !!item.text?.trim()) || [] }; const dataId = await postInsertData2Dataset(postData); @@ -194,8 +183,6 @@ const InputDataModal = ({ } ); - const isLoading = isFetchingData; - const icon = useMemo( () => getCollectionIcon({ type: collection.type, name: collection.sourceName }), [collection] @@ -240,7 +227,7 @@ const InputDataModal = ({ diff --git a/projects/app/src/pages/api/core/app/getChatLogs.ts b/projects/app/src/pages/api/core/app/getChatLogs.ts index 702724283..fadf9394e 100644 --- a/projects/app/src/pages/api/core/app/getChatLogs.ts +++ b/projects/app/src/pages/api/core/app/getChatLogs.ts @@ -86,14 +86,44 @@ async function handler( $group: { _id: null, messageCount: { $sum: 1 }, - goodFeedback: { $sum: { $cond: [{ $eq: ['$userGoodFeedback', true] }, 1, 0] } }, - badFeedback: { $sum: { $cond: [{ $eq: ['$userBadFeedback', true] }, 1, 0] } }, + goodFeedback: { + $sum: { + $cond: [ + { + $ifNull: ['$userGoodFeedback', false] + }, + 1, + 0 + ] + } + }, + badFeedback: { + $sum: { + $cond: [ + { + $ifNull: ['$userBadFeedback', false] + }, + 1, + 0 + ] + } + }, customFeedback: { $sum: { $cond: [{ $gt: [{ $size: { $ifNull: ['$customFeedbacks', []] } }, 0] }, 1, 0] } }, - adminMark: { $sum: { $cond: [{ $eq: ['$adminFeedback', true] }, 1, 0] } } + adminMark: { + $sum: { + $cond: [ + { + $ifNull: ['$adminFeedback', false] + }, + 1, + 0 + ] + } + } } } ], @@ -140,9 +170,9 @@ async function handler( ), MongoChat.countDocuments(where, { ...readFromSecondary }) ]); - + console.log(list); const listWithSourceMember = await addSourceMember({ - list: list + list }); const listWithoutTmbId = list.filter((item) => !item.tmbId);