CREATE TABLE IF NOT EXISTS `ChatSession` ( `id` VARCHAR(191) NOT NULL, `userId` VARCHAR(191) NOT NULL, `knowledgeBaseId` VARCHAR(191) NOT NULL, `title` VARCHAR(200) NOT NULL DEFAULT '新对话', `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `ChatSession_userId_idx`(`userId`), INDEX `ChatSession_knowledgeBaseId_idx`(`knowledgeBaseId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `ChatMessage` ( `id` VARCHAR(191) NOT NULL, `sessionId` VARCHAR(191) NOT NULL, `role` VARCHAR(16) NOT NULL, `content` LONGTEXT NOT NULL, `tokens` INTEGER NOT NULL DEFAULT 0, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `ChatMessage_sessionId_idx`(`sessionId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `ChatCitation` ( `id` VARCHAR(191) NOT NULL, `messageId` VARCHAR(191) NOT NULL, `chunkId` VARCHAR(191) NULL, `sourceId` VARCHAR(191) NULL, `sourceTitle` VARCHAR(255) NULL, `excerptText` VARCHAR(2000) NULL, `pageNumber` INT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `ChatCitation_messageId_idx`(`messageId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;