feat: add durable ASR-to-patient extraction and guarded review

This commit is contained in:
2026-10-08 15:08:42 +08:00
parent 8bb4bd07ae
commit 13948f5982
34 changed files with 2377 additions and 56 deletions
@@ -7,6 +7,7 @@ namespace app\command;
use app\common\service\followupaudio\FollowupAudioDify;
use app\common\service\followupaudio\FollowupAudioException;
use app\common\service\followupaudio\FollowupAudioProviderConfig;
use app\common\service\followupaudio\FollowupAudioStore;
use think\console\Command;
use think\console\Input;
use think\console\input\Option;
@@ -101,6 +102,11 @@ final class FollowupAudioProbe extends Command
foreach (['stage', 'upstream_started_at', 'upstream_file_id', 'upstream_run_id', 'upstream_ids_json'] as $field) {
if (array_key_exists($field, $fields)) { $report['cases'][$case][$field] = $fields[$field]; }
}
if (isset($fields['pipeline_checkpoint'])) {
// Even synthetic two-stage probes must durably retain their stage outcomes before more I/O.
// Keep plaintext transcript/answers out of the JSON report and console.
$report['cases'][$case]['pipeline_cipher'] = FollowupAudioStore::seal(0, 'probe-' . $case, $fields['pipeline_checkpoint']['state']);
}
self::save($reportPath, $report);
return true;
};