id(); // Vínculo com o Tenant (Multi-tenancy) $table->foreignId('tenant_id')->constrained()->cascadeOnDelete(); // Nome de exibição (Ex: "Lucas Gomes") $table->string('name'); // MUDANÇA 1: Identificador técnico no Asterisk // Armazena "PJSIP/200" ou "SIP/200". Indexado para busca rápida na API. $table->string('interface')->index(); // Status atual do agente $table->enum('status', ['available', 'paused', 'talking', 'offline']) ->default('offline'); // MUDANÇA 2: Motivo da pausa (vindo do AMI) // Ex: "Almoco", "Banheiro", "Reuniao" $table->string('pause_reason')->nullable(); // Momento da última alteração de status (útil para calcular tempo de pausa) $table->timestamp('last_status_change')->useCurrent(); // MUDANÇA 3: Métricas acumuladas (KPIs rápidos) $table->integer('total_calls_answered')->default(0); $table->integer('total_ring_no_answer')->default(0); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('agents'); } };