Просмотр исходного кода

refactor: enhance message data handling and introduce custom metadata structure

Shun Miyazawa 1 год назад
Родитель
Сommit
4bc867ee1d

+ 8 - 4
apps/app/src/features/openai/client/components/AiAssistant/AiAssistantChatSidebar/AiAssistantChatSidebar.tsx

@@ -73,12 +73,16 @@ const AiAssistantChatSidebarSubstance: React.FC<AiAssistantChatSidebarSubstanceP
   });
 
   useEffect(() => {
-    const getMessageData = async() => {
+    const fetchAndSetMessageData = async() => {
       const messageData = await mutateMessageData();
       if (messageData != null) {
-        const reversedMessageData = messageData.data.slice().reverse();
+        const normalizedMessageData = messageData.data
+          .slice()
+          .reverse()
+          .filter(message => message.metadata?.shouldHideMessage !== 'true');
+
         setMessageLogs(() => {
-          return reversedMessageData.map((message, index) => (
+          return normalizedMessageData.map((message, index) => (
             {
               id: index.toString(),
               content: message.content[0].type === 'text' ? message.content[0].text.value : '',
@@ -90,7 +94,7 @@ const AiAssistantChatSidebarSubstance: React.FC<AiAssistantChatSidebarSubstanceP
     };
 
     if (threadData != null) {
-      getMessageData();
+      fetchAndSetMessageData();
     }
   }, [mutateMessageData, threadData]);
 

+ 3 - 2
apps/app/src/features/openai/client/stores/message.tsx

@@ -1,9 +1,10 @@
-import type OpenAI from 'openai';
 import useSWRMutation, { type SWRMutationResponse } from 'swr/mutation';
 
 import { apiv3Get } from '~/client/util/apiv3-client';
 
-export const useSWRMUTxMessages = (aiAssistantId: string, threadId?: string): SWRMutationResponse<OpenAI.Beta.Threads.Messages.MessagesPage | null> => {
+import type { MessageWithCustomMetaData } from '../../interfaces/message';
+
+export const useSWRMUTxMessages = (aiAssistantId: string, threadId?: string): SWRMutationResponse<MessageWithCustomMetaData | null> => {
   const key = threadId != null ? [`/openai/messages/${aiAssistantId}/${threadId}`] : null;
   return useSWRMutation(
     key,

+ 9 - 0
apps/app/src/features/openai/interfaces/message.ts

@@ -0,0 +1,9 @@
+import type OpenAI from 'openai';
+
+export type MessageWithCustomMetaData = Omit<OpenAI.Beta.Threads.Messages.MessagesPage, 'data'> & {
+  data: Array<OpenAI.Beta.Threads.Message & {
+    metadata?: {
+      shouldHideMessage?: 'true' | 'false',
+    }
+  }>;
+};

+ 3 - 0
apps/app/src/features/openai/server/routes/message.ts

@@ -89,6 +89,9 @@ export const postMessageHandlersFactory: PostMessageHandlersFactory = (crowi) =>
               content: req.body.summaryMode
                 ? 'Turn on summary mode: I will try to answer concisely, aiming for 1-3 sentences.'
                 : 'I will turn off summary mode and answer.',
+              metadata: {
+                shouldHideMessage: 'true',
+              },
             },
             { role: 'user', content: req.body.userMessage },
           ],