fix: 品牌保护+知识库全量覆盖 - 6层防御解决传销问题 + 30+产品关键词补全
This commit is contained in:
@@ -9,10 +9,26 @@ async function ensureColumnExists(tableName, columnName, definitionSql) {
|
||||
}
|
||||
}
|
||||
|
||||
async function columnMatchesType(tableName, columnName, expectedType) {
|
||||
const dbName = process.env.MYSQL_DATABASE || 'bigwo_chat';
|
||||
const [rows] = await pool.query(
|
||||
`SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? AND COLUMN_NAME=?`,
|
||||
[dbName, tableName, columnName]
|
||||
);
|
||||
if (!rows.length) return false;
|
||||
return rows[0].COLUMN_TYPE.toLowerCase().includes(expectedType.toLowerCase());
|
||||
}
|
||||
|
||||
async function migrateSchema() {
|
||||
await pool.execute("ALTER TABLE `sessions` MODIFY COLUMN `mode` ENUM('voice', 'chat') DEFAULT 'chat'");
|
||||
await pool.execute("ALTER TABLE `messages` MODIFY COLUMN `role` ENUM('user', 'assistant', 'tool', 'system') NOT NULL");
|
||||
await pool.execute("ALTER TABLE `messages` MODIFY COLUMN `source` ENUM('voice_asr', 'voice_bot', 'voice_tool', 'chat_user', 'chat_bot') NOT NULL");
|
||||
if (!(await columnMatchesType('sessions', 'mode', "'chat'"))) {
|
||||
await pool.execute("ALTER TABLE `sessions` MODIFY COLUMN `mode` ENUM('voice', 'chat') DEFAULT 'chat'");
|
||||
}
|
||||
if (!(await columnMatchesType('messages', 'role', "'system'"))) {
|
||||
await pool.execute("ALTER TABLE `messages` MODIFY COLUMN `role` ENUM('user', 'assistant', 'tool', 'system') NOT NULL");
|
||||
}
|
||||
if (!(await columnMatchesType('messages', 'source', "'chat_bot'"))) {
|
||||
await pool.execute("ALTER TABLE `messages` MODIFY COLUMN `source` ENUM('voice_asr', 'voice_bot', 'voice_tool', 'chat_user', 'chat_bot') NOT NULL");
|
||||
}
|
||||
await ensureColumnExists('messages', 'tool_name', '`tool_name` VARCHAR(64) NULL AFTER `source`');
|
||||
await ensureColumnExists('messages', 'meta_json', '`meta_json` JSON NULL AFTER `tool_name`');
|
||||
await ensureColumnExists('messages', 'created_at', '`created_at` BIGINT NULL AFTER `tool_name`');
|
||||
|
||||
Reference in New Issue
Block a user