This commit is contained in:
gr
2026-10-30 13:43:29 +08:00
144 changed files with 16467 additions and 2457 deletions
@@ -952,6 +952,7 @@ class DiagnosisController extends BaseAdminController
$control = null;
$profile = '';
$sseStartedAt = hrtime(true);
$firstLiveUpdateMs = null;
$disconnected = false;
$shouldAbort = static function () use (&$control, &$disconnected, &$emit): bool {
if (connection_aborted() === 1 && !$disconnected) {
@@ -970,6 +971,9 @@ class DiagnosisController extends BaseAdminController
};
$options = [
'should_abort' => $shouldAbort,
// Only scene-validated call identity enters preparation; no caller source text/config.
'call_record_id' => $params['call_record_id'] ?? null,
'transcription_session_id' => $params['transcription_session_id'] ?? null,
'upstream_user' => 'admin-diagnosis-assistant-' . $this->adminId,
'on_authorized' => function (array $metadata) use (&$control, &$emit, &$profile, &$sseStartedAt, $requestId, $timing): bool {
// prepareAssistant reaches this callback only after permission, task
@@ -987,6 +991,15 @@ class DiagnosisController extends BaseAdminController
'on_progress' => static function (array $progress) use (&$emit): void {
if ($emit !== null) $emit('progress', $progress);
},
'on_live_update' => static function (array $payload) use (&$emit, $shouldAbort, $timing, &$sseStartedAt, &$firstLiveUpdateMs): bool {
if ($emit === null || $shouldAbort()) return false;
$accepted = $emit('live_update', $payload);
if ($accepted && $firstLiveUpdateMs === null) {
$firstLiveUpdateMs = AssistantSseTiming::elapsedMs($sseStartedAt);
$timing->log('first_live_update', ['duration_ms' => $firstLiveUpdateMs, 'live_update_count' => 1]);
}
return $accepted;
},
'on_clinical_rejection' => static function (string $unit, array $issues) use ($timing): void {
try {
AssistantClinicalRejectDiagnostic::log($timing, $unit, $issues);