Skip to content

Commit 0726fc3

Browse files
authored
Merge pull request #1733 from 0xi4o/feature/chat-message-feedback
Feature: Chat message feedback
2 parents 4b01e66 + 2853b31 commit 0726fc3

25 files changed

+991
-18
lines changed

packages/server/src/Interface.ts

+15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ export enum chatType {
66
INTERNAL = 'INTERNAL',
77
EXTERNAL = 'EXTERNAL'
88
}
9+
10+
export enum ChatMessageRatingType {
11+
THUMBS_UP = 'THUMBS_UP',
12+
THUMBS_DOWN = 'THUMBS_DOWN'
13+
}
914
/**
1015
* Databases
1116
*/
@@ -39,6 +44,16 @@ export interface IChatMessage {
3944
createdDate: Date
4045
}
4146

47+
export interface IChatMessageFeedback {
48+
id: string
49+
content?: string
50+
chatflowid: string
51+
chatId: string
52+
messageId: string
53+
rating: ChatMessageRatingType
54+
createdDate: Date
55+
}
56+
4257
export interface ITool {
4358
id: string
4459
name: string
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/* eslint-disable */
2+
import { Entity, Column, CreateDateColumn, PrimaryGeneratedColumn, Index, Unique } from 'typeorm'
3+
import { IChatMessageFeedback, ChatMessageRatingType } from '../../Interface'
4+
5+
@Entity()
6+
@Unique(['messageId'])
7+
export class ChatMessageFeedback implements IChatMessageFeedback {
8+
@PrimaryGeneratedColumn('uuid')
9+
id: string
10+
11+
@Index()
12+
@Column()
13+
chatflowid: string
14+
15+
@Index()
16+
@Column()
17+
chatId: string
18+
19+
@Column()
20+
messageId: string
21+
22+
@Column({ nullable: true })
23+
rating: ChatMessageRatingType
24+
25+
@Column({ nullable: true, type: 'text' })
26+
content?: string
27+
28+
@CreateDateColumn()
29+
createdDate: Date
30+
}

packages/server/src/database/entities/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ChatFlow } from './ChatFlow'
22
import { ChatMessage } from './ChatMessage'
3+
import { ChatMessageFeedback } from './ChatMessageFeedback'
34
import { Credential } from './Credential'
45
import { Tool } from './Tool'
56
import { Assistant } from './Assistant'
@@ -8,6 +9,7 @@ import { Variable } from './Variable'
89
export const entities = {
910
ChatFlow,
1011
ChatMessage,
12+
ChatMessageFeedback,
1113
Credential,
1214
Tool,
1315
Assistant,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm'
2+
3+
export class AddFeedback1707213626553 implements MigrationInterface {
4+
public async up(queryRunner: QueryRunner): Promise<void> {
5+
await queryRunner.query(
6+
`CREATE TABLE IF NOT EXISTS \`chat_message_feedback\` (
7+
\`id\` varchar(36) NOT NULL,
8+
\`chatflowid\` varchar(255) NOT NULL,
9+
\`content\` text,
10+
\`chatId\` varchar(255) NOT NULL,
11+
\`messageId\` varchar(255) NOT NULL,
12+
\`rating\` varchar(255) NOT NULL,
13+
\`createdDate\` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
14+
PRIMARY KEY (\`id\`)
15+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;`
16+
)
17+
}
18+
19+
public async down(queryRunner: QueryRunner): Promise<void> {
20+
await queryRunner.query(`DROP TABLE chat_message_feedback`)
21+
}
22+
}

packages/server/src/database/migrations/mysql/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { AddFileAnnotationsToChatMessage1700271021237 } from './1700271021237-Ad
1313
import { AddFileUploadsToChatMessage1701788586491 } from './1701788586491-AddFileUploadsToChatMessage'
1414
import { AddVariableEntity1699325775451 } from './1702200925471-AddVariableEntity'
1515
import { AddSpeechToText1706364937060 } from './1706364937060-AddSpeechToText'
16+
import { AddFeedback1707213626553 } from './1707213626553-AddFeedback'
1617

1718
export const mysqlMigrations = [
1819
Init1693840429259,
@@ -29,5 +30,6 @@ export const mysqlMigrations = [
2930
AddFileAnnotationsToChatMessage1700271021237,
3031
AddFileUploadsToChatMessage1701788586491,
3132
AddVariableEntity1699325775451,
32-
AddSpeechToText1706364937060
33+
AddSpeechToText1706364937060,
34+
AddFeedback1707213626553
3335
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm'
2+
3+
export class AddFeedback1707213601923 implements MigrationInterface {
4+
public async up(queryRunner: QueryRunner): Promise<void> {
5+
await queryRunner.query(
6+
`CREATE TABLE IF NOT EXISTS chat_message_feedback (
7+
id uuid NOT NULL DEFAULT uuid_generate_v4(),
8+
"chatflowid" varchar NOT NULL,
9+
"content" text,
10+
"chatId" varchar NOT NULL,
11+
"messageId" varchar NOT NULL,
12+
"rating" varchar NOT NULL,
13+
"createdDate" timestamp NOT NULL DEFAULT now(),
14+
CONSTRAINT "PK_98419043dd704f54-9830ab78f8" PRIMARY KEY (id)
15+
);`
16+
)
17+
}
18+
19+
public async down(queryRunner: QueryRunner): Promise<void> {
20+
await queryRunner.query(`DROP TABLE chat_message_feedback`)
21+
}
22+
}

packages/server/src/database/migrations/postgres/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { AddFileAnnotationsToChatMessage1700271021237 } from './1700271021237-Ad
1313
import { AddFileUploadsToChatMessage1701788586491 } from './1701788586491-AddFileUploadsToChatMessage'
1414
import { AddVariableEntity1699325775451 } from './1702200925471-AddVariableEntity'
1515
import { AddSpeechToText1706364937060 } from './1706364937060-AddSpeechToText'
16+
import { AddFeedback1707213601923 } from './1707213601923-AddFeedback'
1617

1718
export const postgresMigrations = [
1819
Init1693891895163,
@@ -29,5 +30,6 @@ export const postgresMigrations = [
2930
AddFileAnnotationsToChatMessage1700271021237,
3031
AddFileUploadsToChatMessage1701788586491,
3132
AddVariableEntity1699325775451,
32-
AddSpeechToText1706364937060
33+
AddSpeechToText1706364937060,
34+
AddFeedback1707213601923
3335
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { MigrationInterface, QueryRunner } from 'typeorm'
2+
3+
export class AddFeedback1707213619308 implements MigrationInterface {
4+
public async up(queryRunner: QueryRunner): Promise<void> {
5+
await queryRunner.query(
6+
`CREATE TABLE IF NOT EXISTS "chat_message_feedback" ("id" varchar PRIMARY KEY NOT NULL, "chatflowid" varchar NOT NULL, "chatId" varchar NOT NULL, "messageId" varchar NOT NULL, "rating" varchar NOT NULL, "content" text, "createdDate" datetime NOT NULL DEFAULT (datetime('now')));`
7+
)
8+
await queryRunner.query(`CREATE INDEX IF NOT EXISTS "IDX_e574527322272fd838f4f0f3d3" ON "chat_message_feedback" ("chatflowid") ;`)
9+
await queryRunner.query(`CREATE INDEX IF NOT EXISTS "IDX_e574527322272fd838f4f0f3d3" ON "chat_message_feedback" ("chatId") ;`)
10+
}
11+
12+
public async down(queryRunner: QueryRunner): Promise<void> {
13+
await queryRunner.query(`DROP TABLE IF EXISTS "chat_message_feedback";`)
14+
}
15+
}

packages/server/src/database/migrations/sqlite/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { AddFileAnnotationsToChatMessage1700271021237 } from './1700271021237-Ad
1313
import { AddFileUploadsToChatMessage1701788586491 } from './1701788586491-AddFileUploadsToChatMessage'
1414
import { AddVariableEntity1699325775451 } from './1702200925471-AddVariableEntity'
1515
import { AddSpeechToText1706364937060 } from './1706364937060-AddSpeechToText'
16+
import { AddFeedback1707213619308 } from './1707213619308-AddFeedback'
1617

1718
export const sqliteMigrations = [
1819
Init1693835579790,
@@ -29,5 +30,6 @@ export const sqliteMigrations = [
2930
AddFileAnnotationsToChatMessage1700271021237,
3031
AddFileUploadsToChatMessage1701788586491,
3132
AddVariableEntity1699325775451,
32-
AddSpeechToText1706364937060
33+
AddSpeechToText1706364937060,
34+
AddFeedback1707213619308
3335
]

0 commit comments

Comments
 (0)