更新
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\common\service\prescriptionai {
|
||||
/** Only the external evidence/model boundaries are fixtures; real worker/store/API/ORM run. */
|
||||
final class PrescriptionAiContext
|
||||
{
|
||||
public static bool $allowed = true;
|
||||
public static int $builds = 0;
|
||||
public static function build(array $rx, int $actor, array $info, int $decisionAt): array
|
||||
{
|
||||
self::$builds++;
|
||||
return ['source' => ['records' => [['source_id' => 'diagnoses:1', 'data' => ['symptom' => 'fixture']]]],
|
||||
'source_hash' => hash('sha256', 'pipeline evidence'), 'source_diagnosis_ids' => [1],
|
||||
'source_summary' => ['source_record_count' => 1], 'source_access_manifest' => [],
|
||||
'missing' => [], 'baseline_eligible' => false, 'baseline_exclusion_reasons' => ['test_nonbaseline'],
|
||||
'comparison_type' => 'latest_context', 'cutoff_at' => time(), 'wait_for_transcript' => false];
|
||||
}
|
||||
public static function assertSnapshotAccess(array $context, int $actor, array $info): bool
|
||||
{
|
||||
return self::$allowed;
|
||||
}
|
||||
}
|
||||
final class PrescriptionAiGenerator
|
||||
{
|
||||
public static array $inputs = [];
|
||||
public static bool $revokeDuringCall = false;
|
||||
public static function generate(string $model, array $context, ?callable $checkpoint = null): array
|
||||
{
|
||||
self::$inputs[$model] = $context;
|
||||
if ($checkpoint && !$checkpoint(['stage' => 'fixture', 'steps' => [], 'usage' => []])) {
|
||||
return ['ok' => false, 'error_code' => 'CHECKPOINT_REJECTED', 'retryable' => false];
|
||||
}
|
||||
if (self::$revokeDuringCall) {
|
||||
PrescriptionAiContext::$allowed = false;
|
||||
}
|
||||
return ['ok' => true, 'report' => ['summary' => 'fixture report'], 'coverage' => ['status' => 'complete', 'complete' => true],
|
||||
'candidate' => ['status' => 'available_for_review', 'prescription_type' => '饮片', 'dose_basis' => 'per_dose',
|
||||
'herbs' => [['name' => '测试药材', 'dosage' => 10, 'unit' => 'g', 'dose_basis' => 'per_dose',
|
||||
'formula_type' => '主方', 'processing' => '', 'instructions' => '']], 'usage_days' => 7, 'times_per_day' => 2],
|
||||
'model_name' => 'fixture-' . $model, 'prompt_version' => 'fixture-v1'];
|
||||
}
|
||||
}
|
||||
}
|
||||
namespace {
|
||||
define('PRESCRIPTION_AI_PIPELINE_FIXTURE', true);
|
||||
require __DIR__ . '/PrescriptionAiQueueTest.php';
|
||||
}
|
||||
Reference in New Issue
Block a user