下号比率恢复 + 触线降权 + 同步裁决
This commit is contained in:
@@ -13,7 +13,7 @@ use app\admin\model\split\Ticket;
|
||||
class SplitTicketRuleService
|
||||
{
|
||||
/**
|
||||
* 同步后应用工单开关规则;号码开关以爬虫/platform 快照为准(不再跑单号上限/下号比率)
|
||||
* 同步后应用工单开关规则;号码开关由 applyNumberRules 综合裁决(平台在线 + 单号上限 + 下号比率)
|
||||
*/
|
||||
public function applyAfterSync(Ticket $ticket, int $completeCount): void
|
||||
{
|
||||
@@ -23,7 +23,7 @@ class SplitTicketRuleService
|
||||
if ((string) $fresh['status'] === 'hidden') {
|
||||
$this->cascadeTicketClosedToNumbers($fresh);
|
||||
} else {
|
||||
(new SplitTicketNumberSyncService())->applyStatusFromPlatformSnapshot($fresh);
|
||||
$this->applyNumberRules($fresh);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,7 +70,7 @@ class SplitTicketRuleService
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动切换工单状态时,非手动号码按 platform_status 对齐开关
|
||||
* 手动切换工单状态时,非手动号码按业务规则对齐开关
|
||||
*/
|
||||
public function syncNumbersWithTicketStatus(Ticket $ticket): void
|
||||
{
|
||||
@@ -79,21 +79,21 @@ class SplitTicketRuleService
|
||||
$this->cascadeTicketClosedToNumbers($ticket);
|
||||
return;
|
||||
}
|
||||
(new SplitTicketNumberSyncService())->applyStatusFromPlatformSnapshot($ticket);
|
||||
$this->applyNumberRules($ticket);
|
||||
}
|
||||
|
||||
/**
|
||||
* 工单处于开启状态时,将云控在线的非手动号码设为开启
|
||||
*
|
||||
* @deprecated 请使用 applyStatusFromPlatformSnapshot(以 platform_status 为准)
|
||||
* @deprecated 请使用 applyNumberRules
|
||||
*/
|
||||
public function syncOnlineNumbersWhenTicketOpen(Ticket $ticket): void
|
||||
{
|
||||
(new SplitTicketNumberSyncService())->applyStatusFromPlatformSnapshot($ticket);
|
||||
$this->applyNumberRules($ticket);
|
||||
}
|
||||
|
||||
/**
|
||||
* 单号上限、下号比率、云控在线状态、工单开关综合决定号码状态
|
||||
* 单号上限、下号比率、云控在线状态、工单开关综合决定号码 status;同步时清除或确认 ratio_deferred
|
||||
*/
|
||||
public function applyNumberRules(Ticket $ticket): void
|
||||
{
|
||||
@@ -125,12 +125,21 @@ class SplitTicketRuleService
|
||||
'updatetime' => time(),
|
||||
];
|
||||
|
||||
// 手动管理(含用户手动关闭)的号码:仅更新统计字段,不改状态
|
||||
// 手动管理(含用户手动关闭)的号码:仅更新统计字段,不改状态与降权标记
|
||||
if ((int) $number['manual_manage'] === 1) {
|
||||
Number::where('id', (int) $number['id'])->update($update);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 同步裁决 ratio_deferred:进线增长则解除降权;触线且无进线增长则关号并清除降权
|
||||
if ($inboundCount > $lastInbound) {
|
||||
$update['ratio_deferred'] = 0;
|
||||
$update['ratio_deferred_at'] = null;
|
||||
} else {
|
||||
$update['ratio_deferred'] = 0;
|
||||
$update['ratio_deferred_at'] = null;
|
||||
}
|
||||
|
||||
$update['status'] = $this->resolveAutomatedStatus(
|
||||
$ticket,
|
||||
(string) ($number['platform_status'] ?? 'unknown'),
|
||||
|
||||
Reference in New Issue
Block a user