From 28b33f2c6b00da16ed03f7cfff9fa1d75060dfd7 Mon Sep 17 00:00:00 2001 From: Ilango Date: Mon, 12 Feb 2024 11:27:29 +0530 Subject: [PATCH] Add feedback endpoints --- .../src/database/entities/ChatMessage.ts | 7 ++- packages/server/src/index.ts | 45 +++++++++++++++++-- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/packages/server/src/database/entities/ChatMessage.ts b/packages/server/src/database/entities/ChatMessage.ts index 4054a26d..f25f893c 100644 --- a/packages/server/src/database/entities/ChatMessage.ts +++ b/packages/server/src/database/entities/ChatMessage.ts @@ -1,6 +1,7 @@ /* eslint-disable */ -import { Entity, Column, CreateDateColumn, PrimaryGeneratedColumn, Index } from 'typeorm' +import { Entity, Column, CreateDateColumn, PrimaryGeneratedColumn, Index, OneToOne, JoinColumn } from 'typeorm' import { IChatMessage, MessageType } from '../../Interface' +import { ChatMessageFeedback } from './ChatMessageFeedback' @Entity() export class ChatMessage implements IChatMessage { @@ -40,4 +41,8 @@ export class ChatMessage implements IChatMessage { @CreateDateColumn() createdDate: Date + + @OneToOne(() => ChatMessageFeedback) + @JoinColumn() + feedback?: ChatMessageFeedback } diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index dbb5717d..f2f5fea7 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -10,7 +10,7 @@ import logger from './utils/logger' import { expressRequestLogger } from './utils/logger' import { v4 as uuidv4 } from 'uuid' import OpenAI from 'openai' -import { Between, IsNull, FindOptionsWhere } from 'typeorm' +import { Between, IsNull, FindOptionsWhere, createQueryBuilder } from 'typeorm' import { IChatFlow, IncomingInput, @@ -20,6 +20,7 @@ import { ICredentialReturnResponse, chatType, IChatMessage, + IChatMessageFeedback, IDepthQueue, INodeDirectedGraph } from './Interface' @@ -54,6 +55,7 @@ import { getDataSource } from './DataSource' import { NodesPool } from './NodesPool' import { ChatFlow } from './database/entities/ChatFlow' import { ChatMessage } from './database/entities/ChatMessage' +import { ChatMessageFeedback } from './database/entities/ChatMessageFeedback' import { Credential } from './database/entities/Credential' import { Tool } from './database/entities/Tool' import { Assistant } from './database/entities/Assistant' @@ -512,6 +514,7 @@ export class App { const sessionId = req.query?.sessionId as string | undefined const startDate = req.query?.startDate as string | undefined const endDate = req.query?.endDate as string | undefined + const feedback = req.query?.feedback as boolean | undefined let chatTypeFilter = req.query?.chatType as chatType | undefined if (chatTypeFilter) { @@ -537,7 +540,8 @@ export class App { memoryType, sessionId, startDate, - endDate + endDate, + feedback ) return res.json(chatmessages) }) @@ -599,6 +603,24 @@ export class App { return res.json(results) }) + // ---------------------------------------- + // Chat Message Feedback + // ---------------------------------------- + this.app.get('/api/v1/feedback/:id', async (req: Request, res: Response) => {}) + + this.app.post('/api/v1/feedback/:id', async (req: Request, res: Response) => { + const body = req.body + const results = await this.addChatMessageFeedback(body) + return res.json(results) + }) + + this.app.put('/api/v1/feedback/:id', async (req: Request, res: Response) => { + const chatflowid = req.params.id + const body = req.body + const results = await this.addChatMessageFeedback(body) + return res.json(results) + }) + // ---------------------------------------- // Credentials // ---------------------------------------- @@ -1422,6 +1444,7 @@ export class App { * @param {string} sessionId * @param {string} startDate * @param {string} endDate + * @param {boolean} feedback */ async getChatMessage( chatflowid: string, @@ -1431,7 +1454,8 @@ export class App { memoryType?: string, sessionId?: string, startDate?: string, - endDate?: string + endDate?: string, + feedback?: boolean ): Promise { let fromDate if (startDate) fromDate = new Date(startDate) @@ -1450,6 +1474,9 @@ export class App { }, order: { createdDate: sortOrder === 'DESC' ? 'DESC' : 'ASC' + }, + relations: { + feedback } }) } @@ -1466,6 +1493,18 @@ export class App { return await this.AppDataSource.getRepository(ChatMessage).save(chatmessage) } + /** + * Method that adds feedback for a chat message. + * @param {Partial} chatMessageFeedback + */ + async addChatMessageFeedback(chatMessageFeedback: Partial): Promise { + const newFeedback = new ChatMessageFeedback() + Object.assign(newFeedback, chatMessageFeedback) + + const feedback = this.AppDataSource.getRepository(ChatMessageFeedback).create(newFeedback) + return await this.AppDataSource.getRepository(ChatMessageFeedback).save(feedback) + } + async upsertVector(req: Request, res: Response, isInternal: boolean = false) { try { const chatflowid = req.params.id