修改Whatshub工单的完成数量总计的计算方法

This commit is contained in:
root
2026-07-05 02:13:06 +08:00
parent 6b72cd7b67
commit f1acab12a7
33 changed files with 338 additions and 96 deletions
+6 -1
View File
@@ -56,6 +56,9 @@ class SplitNumberRatioDeferredService
/**
* 同步侧:根据 visit / inbound 与上次同步检查点重算 streak
*
* 访问侧(recordVisitAfterRedirect)已按次 +1 累计 streak,此处不得再叠加 delta,否则首次同步会双倍计次导致提前关号。
* 取 max(访问侧 streak, 自上次同步以来的点击增量) 作为裁决值,并兜底访问钩子未触发的场景。
*
* @param array<string, mixed>|Number $number
*/
public function computeStreakForSync($number, int $currentStreak): int
@@ -74,7 +77,9 @@ class SplitNumberRatioDeferredService
}
if ($visitCount > $lastVisit) {
return $currentStreak + ($visitCount - $lastVisit);
$deltaSinceSync = $visitCount - $lastVisit;
return max($currentStreak, $deltaSinceSync);
}
return $currentStreak;
View File
View File
+1 -2
View File
@@ -36,12 +36,11 @@ class SplitScrmSpiderFactory
/**
* API 优先同步类型:常态走 PHP cURL,不占 Node Real Browser 槽位
*
* 调度层据此跳过 Node 队列门禁并允许并行投递;蜘蛛实现本身不在此修改
* Whatshub 已改为混合同步(cURL 号码 + Node statistics),需走 Node 队列门禁
*
* @var list<string>
*/
private const API_FIRST_SYNC_TYPES = [
'whatshub',
];
/**
+2 -14
View File
@@ -373,13 +373,11 @@ class SplitTicketSyncDispatchService
$logDir = $this->resolveLogDir();
$logFile = $logDir . 'cli_' . $ticketId . '_' . date('YmdHis') . '.log';
$syncMode = $this->normalizeSyncModeForCli($source);
$inner = sprintf(
'%s %s split:sync-tickets --ticket=%d --mode=%s >> %s 2>&1',
'%s %s split:sync-tickets --ticket=%d >> %s 2>&1',
escapeshellarg($php),
escapeshellarg($think),
$ticketId,
$syncMode,
escapeshellarg($logFile)
);
@@ -405,13 +403,11 @@ class SplitTicketSyncDispatchService
continue;
}
$logFile = $logDir . 'cli_' . $ticketId . '_' . date('YmdHis') . '.log';
$syncMode = $this->normalizeSyncModeForCli($source);
$parts[] = sprintf(
'%s %s split:sync-tickets --ticket=%d --mode=%s >> %s 2>&1',
'%s %s split:sync-tickets --ticket=%d >> %s 2>&1',
escapeshellarg($php),
escapeshellarg($think),
$ticketId,
$syncMode,
escapeshellarg($logFile)
);
}
@@ -556,12 +552,4 @@ class SplitTicketSyncDispatchService
{
return function_exists('shell_exec') && !in_array('shell_exec', $this->disabledFunctions(), true);
}
/**
* 投递 CLI 时携带 --mode,供 sync_success_mode 区分自动/手动
*/
private function normalizeSyncModeForCli(string $source): string
{
return in_array($source, ['auto', 'manual'], true) ? $source : 'manual';
}
}