| 1234567891011121314151617181920212223242526272829303132 |
- exports.up = function (knex) {
- return knex.schema.createTable("atendimento_golden_labels", (t) => {
- t.integer("AtendimentoId").unsigned().primary();
- t.string("Status", 12).notNullable().defaultTo("pendente"); // pendente | rotulado
- // espelha atendimento_avaliacoes, porém tudo nullable: NULL = ainda não rotulado
- t.tinyint("ScoreAtendente").unsigned().nullable(); // 1 a 10
- t.text("JustificativaScore").nullable();
- t.string("Resolvido", 12).nullable(); // sim | nao | parcial | indefinido
- t.string("Sentimento", 12).nullable(); // positivo | neutro | negativo | indefinido
- t.text("Resumo").nullable();
- t.text("Sugestoes").nullable(); // JSON array de strings
- t.text("Atendentes").nullable(); // JSON array de strings
- t.boolean("VisitaAgendada").nullable();
- t.string("HorarioVisitaInformado", 15).nullable(); // sim | nao | nao_se_aplica
- t.string("HorarioVisita", 150).nullable();
- t.string("StatusCancelamento", 12).nullable(); // nao | ameacou | cancelou | indefinido
- t.text("MotivoCancelamento").nullable();
- t.timestamp("SampledAt").notNullable().defaultTo(knex.fn.now()); // quando entrou na amostra do golden set
- t.timestamp("LabeledAt").nullable(); // quando terminou de ser rotulado
- t.timestamp("CreatedAt").notNullable().defaultTo(knex.fn.now());
- t.timestamp("UpdatedAt").notNullable().defaultTo(knex.fn.now());
- t.foreign("AtendimentoId").references("atendimentos.Id").onDelete("CASCADE");
- t.index(["Status"]);
- });
- };
- exports.down = function (knex) {
- return knex.schema.dropTable("atendimento_golden_labels");
- };
|