mirror of
https://github.com/langgenius/dify.git
synced 2025-12-25 01:00:42 -05:00
fix: review
This commit is contained in:
@@ -15,6 +15,7 @@ import { useChatConversations, useCompletionConversations } from '@/service/use-
|
||||
import { APP_PAGE_LIMIT } from '@/config'
|
||||
import type { App } from '@/types/app'
|
||||
import { AppModeEnum } from '@/types/app'
|
||||
import type { ChatConversationsRequest, CompletionConversationsRequest } from '@/models/log'
|
||||
export type ILogsProps = {
|
||||
appDetail: App
|
||||
}
|
||||
@@ -71,23 +72,30 @@ const Logs: FC<ILogsProps> = ({ appDetail }) => {
|
||||
// Get the app type first
|
||||
const isChatMode = appDetail.mode !== AppModeEnum.COMPLETION
|
||||
|
||||
const query = useMemo(() => ({
|
||||
const completionQuery = useMemo<CompletionConversationsRequest & { sort_by?: string }>(() => ({
|
||||
page: currPage + 1,
|
||||
limit,
|
||||
...((debouncedQueryParams.period !== '9')
|
||||
? {
|
||||
start: dayjs().subtract(TIME_PERIOD_MAPPING[debouncedQueryParams.period].value, 'day').startOf('day').format('YYYY-MM-DD HH:mm'),
|
||||
end: dayjs().endOf('day').format('YYYY-MM-DD HH:mm'),
|
||||
}
|
||||
: {}),
|
||||
...(isChatMode ? { sort_by: debouncedQueryParams.sort_by } : {}),
|
||||
...omit(debouncedQueryParams, ['period']),
|
||||
}), [currPage, debouncedQueryParams, isChatMode, limit])
|
||||
keyword: debouncedQueryParams.keyword ?? '',
|
||||
annotation_status: debouncedQueryParams.annotation_status ?? 'all',
|
||||
start: debouncedQueryParams.period !== '9'
|
||||
? dayjs().subtract(TIME_PERIOD_MAPPING[debouncedQueryParams.period].value, 'day').startOf('day').format('YYYY-MM-DD HH:mm')
|
||||
: '',
|
||||
end: debouncedQueryParams.period !== '9'
|
||||
? dayjs().endOf('day').format('YYYY-MM-DD HH:mm')
|
||||
: '',
|
||||
...omit(debouncedQueryParams, ['period', 'sort_by', 'keyword', 'annotation_status']),
|
||||
}), [currPage, debouncedQueryParams, limit])
|
||||
|
||||
const chatQuery = useMemo<ChatConversationsRequest & { sort_by?: string }>(() => ({
|
||||
...completionQuery,
|
||||
sort_by: debouncedQueryParams.sort_by,
|
||||
message_count: (debouncedQueryParams as any).message_count ?? 0,
|
||||
}), [completionQuery, debouncedQueryParams.sort_by, isChatMode])
|
||||
|
||||
// When the details are obtained, proceed to the next request
|
||||
const { data: chatConversations, refetch: refetchChatList } = useChatConversations(appDetail.id, query as any, isChatMode)
|
||||
const { data: chatConversations, refetch: refetchChatList } = useChatConversations(appDetail.id, chatQuery, isChatMode)
|
||||
|
||||
const { data: completionConversations, refetch: refetchCompletionList } = useCompletionConversations(appDetail.id, query as any, !isChatMode)
|
||||
const { data: completionConversations, refetch: refetchCompletionList } = useCompletionConversations(appDetail.id, completionQuery, !isChatMode)
|
||||
|
||||
const total = isChatMode ? chatConversations?.total : completionConversations?.total
|
||||
|
||||
|
||||
@@ -935,14 +935,12 @@ const ConversationList: FC<IConversationList> = ({ logs, appDetail, onRefresh })
|
||||
router.push(buildUrlWithConversation(log.id), { scroll: false })
|
||||
}, [buildUrlWithConversation, conversationIdInUrl, currentConversation, router, showDrawer])
|
||||
|
||||
const currentConversationId = currentConversation?.id
|
||||
|
||||
useEffect(() => {
|
||||
if (!conversationIdInUrl) {
|
||||
if (pendingConversationIdRef.current)
|
||||
return
|
||||
|
||||
if (showDrawer || currentConversationId) {
|
||||
if (showDrawer || currentConversation?.id) {
|
||||
setShowDrawer(false)
|
||||
setCurrentConversation(undefined)
|
||||
}
|
||||
@@ -970,7 +968,7 @@ const ConversationList: FC<IConversationList> = ({ logs, appDetail, onRefresh })
|
||||
|
||||
if (pendingConversationCacheRef.current?.id === conversationIdInUrl || matchedConversation)
|
||||
pendingConversationCacheRef.current = undefined
|
||||
}, [conversationIdInUrl, currentConversation, currentConversationId, isChatMode, logs?.data, showDrawer])
|
||||
}, [conversationIdInUrl, currentConversation, isChatMode, logs?.data, showDrawer])
|
||||
|
||||
const onCloseDrawer = useCallback(() => {
|
||||
onRefresh()
|
||||
|
||||
@@ -24,13 +24,13 @@ import type { NodeTracingListResponse } from '@/types/workflow'
|
||||
export const fetchConversationList = ({ appId, params }: { name: string; appId: string; params?: Record<string, any> }): Promise<ConversationListResponse> => get<ConversationListResponse>(`/console/api/apps/${appId}/messages`, params)
|
||||
|
||||
// (Text Generation Application) Session List
|
||||
export const fetchCompletionConversations = ({ url, params }: { url: string; params?: CompletionConversationsRequest }): Promise<CompletionConversationsResponse> => get<CompletionConversationsResponse>(url, { params })
|
||||
export const fetchCompletionConversations = ({ url, params }: { url: string; params?: Partial<CompletionConversationsRequest> & { sort_by?: string } }): Promise<CompletionConversationsResponse> => get<CompletionConversationsResponse>(url, { params })
|
||||
|
||||
// (Text Generation Application) Session Detail
|
||||
export const fetchCompletionConversationDetail = ({ url }: { url: string }): Promise<CompletionConversationFullDetailResponse> => get<CompletionConversationFullDetailResponse>(url, {})
|
||||
|
||||
// (Chat Application) Session List
|
||||
export const fetchChatConversations = ({ url, params }: { url: string; params?: ChatConversationsRequest }): Promise<ChatConversationsResponse> => get<ChatConversationsResponse>(url, { params })
|
||||
export const fetchChatConversations = ({ url, params }: { url: string; params?: Partial<ChatConversationsRequest> & { sort_by?: string } }): Promise<ChatConversationsResponse> => get<ChatConversationsResponse>(url, { params })
|
||||
|
||||
// (Chat Application) Session Detail
|
||||
export const fetchChatConversationDetail = ({ url }: { url: string }): Promise<ChatConversationFullDetailResponse> => get<ChatConversationFullDetailResponse>(url, {})
|
||||
|
||||
@@ -35,15 +35,18 @@ type AnnotationPayload = {
|
||||
value: string
|
||||
}
|
||||
|
||||
export const chatConversationsKey = (appId?: string, params?: ChatConversationsRequest): QueryKey => ['chat-conversations', appId, params]
|
||||
export const completionConversationsKey = (appId?: string, params?: CompletionConversationsRequest): QueryKey => ['completion-conversations', appId, params]
|
||||
type ChatConversationsParams = Partial<ChatConversationsRequest> & { sort_by?: string }
|
||||
type CompletionConversationsParams = Partial<CompletionConversationsRequest> & { sort_by?: string }
|
||||
|
||||
export const chatConversationsKey = (appId?: string, params?: ChatConversationsParams): QueryKey => ['chat-conversations', appId, params]
|
||||
export const completionConversationsKey = (appId?: string, params?: CompletionConversationsParams): QueryKey => ['completion-conversations', appId, params]
|
||||
export const completionConversationDetailKey = (appId?: string, conversationId?: string): QueryKey => ['completion-conversation-detail', appId, conversationId]
|
||||
|
||||
export const chatConversationDetailKey = (appId?: string, conversationId?: string): QueryKey => ['chat-conversation-detail', appId, conversationId]
|
||||
|
||||
export const annotationsCountKey = (appId?: string): QueryKey => ['annotations-count', appId]
|
||||
|
||||
export const useChatConversations = (appId?: string, params?: ChatConversationsRequest, enabled = true) => {
|
||||
export const useChatConversations = (appId?: string, params?: ChatConversationsParams, enabled = true) => {
|
||||
const queryKey = chatConversationsKey(appId, params)
|
||||
const queryResult = useQuery<ChatConversationsResponse>({
|
||||
queryKey,
|
||||
@@ -54,7 +57,7 @@ export const useChatConversations = (appId?: string, params?: ChatConversationsR
|
||||
return { ...queryResult, queryKey }
|
||||
}
|
||||
|
||||
export const useCompletionConversations = (appId?: string, params?: CompletionConversationsRequest, enabled = true) => {
|
||||
export const useCompletionConversations = (appId?: string, params?: CompletionConversationsParams, enabled = true) => {
|
||||
const queryKey = completionConversationsKey(appId, params)
|
||||
const queryResult = useQuery<CompletionConversationsResponse>({
|
||||
queryKey,
|
||||
@@ -103,6 +106,8 @@ export const useUpdateLogMessageFeedback = (appId?: string, invalidateKey?: Quer
|
||||
|
||||
return useMutation({
|
||||
mutationFn: async ({ mid, rating, content }: FeedbackPayload) => {
|
||||
if (!appId)
|
||||
throw new Error('appId is required to update message feedback.')
|
||||
return await updateLogMessageFeedbacks({
|
||||
url: `/apps/${appId}/feedbacks`,
|
||||
body: { message_id: mid, rating, content: content ?? undefined },
|
||||
@@ -120,6 +125,8 @@ export const useUpdateLogMessageAnnotation = (appId?: string, invalidateKey?: Qu
|
||||
|
||||
return useMutation({
|
||||
mutationFn: async ({ mid, value }: AnnotationPayload) => {
|
||||
if (!appId)
|
||||
throw new Error('appId is required to update message annotation.')
|
||||
return await updateLogMessageAnnotations({
|
||||
url: `/apps/${appId}/annotations`,
|
||||
body: { message_id: mid, content: value },
|
||||
|
||||
Reference in New Issue
Block a user