fix(secretaria): migra colunas de telemetria em sec_messages (42703)
O createTable de sec_messages não tinha usage_tokens/provider_used/model_used, mas brain.ts insere esses campos — quebrando com "column does not exist" em qualquer banco criado antes dessas colunas (ex.: clones). Adiciona as colunas ao createTable e um bloco idempotente hasColumn/alterTable (padrão já usado no arquivo) que garante as colunas em tabelas pré-existentes no boot. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -59,10 +59,28 @@ export async function runMigrations(db: Knex): Promise<void> {
|
||||
t.uuid('conversation_id').notNullable().references('id').inTable('sec_conversations').onDelete('CASCADE')
|
||||
t.string('role', 20).notNullable() // user | assistant | system
|
||||
t.text('content').notNullable()
|
||||
t.text('usage_tokens').nullable() // telemetria de tokens (JSON)
|
||||
t.string('provider_used', 40).nullable() // provedor LLM usado na resposta
|
||||
t.string('model_used', 80).nullable() // modelo LLM usado na resposta
|
||||
t.timestamps(true, true)
|
||||
})
|
||||
}
|
||||
|
||||
// ── sec_messages — telemetria: garante colunas em tabelas pré-existentes ────
|
||||
// (o insert em brain.ts grava usage_tokens/provider_used/model_used; sem este
|
||||
// bloco, bancos criados antes dessas colunas quebram com 42703.)
|
||||
if (await db.schema.hasTable('sec_messages')) {
|
||||
if (!(await db.schema.hasColumn('sec_messages', 'usage_tokens'))) {
|
||||
await db.schema.alterTable('sec_messages', (t) => { t.text('usage_tokens').nullable() })
|
||||
}
|
||||
if (!(await db.schema.hasColumn('sec_messages', 'provider_used'))) {
|
||||
await db.schema.alterTable('sec_messages', (t) => { t.string('provider_used', 40).nullable() })
|
||||
}
|
||||
if (!(await db.schema.hasColumn('sec_messages', 'model_used'))) {
|
||||
await db.schema.alterTable('sec_messages', (t) => { t.string('model_used', 80).nullable() })
|
||||
}
|
||||
}
|
||||
|
||||
// ── sec_brain_nodes — adiciona node_model se ainda não existe ────────────
|
||||
if (await db.schema.hasTable('sec_brain_nodes')) {
|
||||
if (!(await db.schema.hasColumn('sec_brain_nodes', 'node_model'))) {
|
||||
|
||||
Reference in New Issue
Block a user