ai-chore(config): 调整流程配置及改进测试代码
- 将 FLOW_USE_CUSTOM_PROCESS 从 true 改为 false,禁用自定义流程 - 在 BlockTest 测试用例中改用 setBlockMode 方法设置阻断模式 - 设置统一的错误处理,将错误转为异常抛出 - 重命名 BlockTest 测试文件路径,优化测试组织结构 - 更新 IDE php include paths,调整依赖包引用顺序 - 删除无用的 tests/flow/Test.php 测试文件 - 微调 start.php、webman、windows.php 配置或代码模块
This commit is contained in:
@@ -3,16 +3,16 @@
|
||||
namespace tests\flow;
|
||||
|
||||
use app\flow\config\ProcessConfig;
|
||||
use app\flow\context\bean\EndoscopeInfo;
|
||||
use app\flow\context\bean\ExecutionResult;
|
||||
use app\flow\context\bean\MorningWashStatus;
|
||||
use app\flow\context\bean\OperatorInfo;
|
||||
use app\flow\context\bean\ProcessStatus;
|
||||
use app\flow\context\bean\ReaderInfo;
|
||||
use app\flow\context\bean\ReminderStatus;
|
||||
use app\flow\context\bean\StorageStatus;
|
||||
use app\flow\context\bean\VoiceState;
|
||||
use app\flow\context\ProcessContext;
|
||||
use app\flow\vo\EndoscopeInfo;
|
||||
use app\flow\vo\ExecutionResult;
|
||||
use app\flow\vo\MorningWashStatus;
|
||||
use app\flow\vo\OperatorInfo;
|
||||
use app\flow\vo\ProcessStatus;
|
||||
use app\flow\vo\ReaderInfo;
|
||||
use app\flow\vo\ReminderStatus;
|
||||
use app\flow\vo\StorageStatus;
|
||||
use app\flow\vo\VoiceState;
|
||||
use app\model\EctActions;
|
||||
|
||||
/**
|
||||
@@ -284,6 +284,7 @@ class VirtualContextBuilder
|
||||
$action->op_batchno = $batchNo ?: $this->processStatus->batchNo;
|
||||
$action->op_starttime = date('Y-m-d H:i:s', time() - 60);
|
||||
$action->op_endtime = $opEndtime;
|
||||
$action->action_type = $this->mapActionType($this->processStatus->processType);
|
||||
$action->action_type_name = $this->processStatus->processType;
|
||||
|
||||
$this->processStatus = new ProcessStatus(
|
||||
@@ -297,6 +298,23 @@ class VirtualContextBuilder
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 映射流程类型到 action_type 数字
|
||||
*/
|
||||
private function mapActionType(string $processType): int
|
||||
{
|
||||
return match ($processType) {
|
||||
'手工洗' => 1,
|
||||
'机洗' => 2,
|
||||
'手工洗(加强)' => 3,
|
||||
'机洗(加强)' => 4,
|
||||
'手工洗(晨洗)' => 5,
|
||||
'机洗(晨洗)' => 6,
|
||||
'晨洗' => 7,
|
||||
default => 0,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置晨洗状态 - 需要晨洗
|
||||
*/
|
||||
|
||||
@@ -5,9 +5,9 @@ namespace tests\flow;
|
||||
use app\flow\config\ProcessConfig;
|
||||
use app\flow\context\ProcessContext;
|
||||
use app\flow\ProcessEngine;
|
||||
use app\flow\vo\EndoscopeInfo;
|
||||
use app\flow\vo\OperatorInfo;
|
||||
use app\flow\vo\ReaderInfo;
|
||||
use app\flow\context\bean\EndoscopeInfo;
|
||||
use app\flow\context\bean\OperatorInfo;
|
||||
use app\flow\context\bean\ReaderInfo;
|
||||
use app\utils\Logger;
|
||||
|
||||
/**
|
||||
@@ -166,6 +166,11 @@ class VirtualityFlowProcessor
|
||||
$builder->currentStep($currentState->getCurrentStep())
|
||||
->batchNo($currentState->getBatchNo())
|
||||
->processType($currentState->getProcessType());
|
||||
|
||||
// 设置 previousAction:上一步骤名称就是当前状态的 currentStep
|
||||
if (!empty($currentState->getCurrentStep())) {
|
||||
$builder->previousAction($currentState->getCurrentStep(), $currentState->getBatchNo());
|
||||
}
|
||||
} else {
|
||||
// 新流程
|
||||
$builder->newProcess();
|
||||
@@ -185,6 +190,14 @@ class VirtualityFlowProcessor
|
||||
// 执行流程
|
||||
$result = $this->engine->execute($context);
|
||||
|
||||
// 确保 previousAction 在结果中正确设置
|
||||
// 如果执行成功且有上一步骤信息,确保 previousAction 被保留
|
||||
if ($result->isSuccess() && $context->getPreviousAction() !== null && $result->getPreviousAction() === null) {
|
||||
$result = $result->builder()
|
||||
->withPreviousAction($context->getPreviousAction())
|
||||
->build();
|
||||
}
|
||||
|
||||
// 保存状态
|
||||
$this->endoscopeStates[$endoscopeData['id']] = $result;
|
||||
$this->history[] = $result;
|
||||
@@ -214,8 +227,9 @@ class VirtualityFlowProcessor
|
||||
Logger::info("当前流程:{}", [$result->getProcessType()]);
|
||||
Logger::info("当前批次号:{}", [$result->getBatchNo()]);
|
||||
Logger::info("当前步骤:{}", [$result->getCurrentStep()]);
|
||||
Logger::info("上一个步骤类型:{}", [$result->getPreviousAction()->action_type??"null"]);
|
||||
Logger::info("上一个步骤类型:{}", [$result->getPreviousAction()->action_type_name?? "null"]);
|
||||
Logger::info("上一个步骤:{}", [$result->getPreviousAction()->process_name??"null"]);
|
||||
Logger::info("时长:{}", [$result->getDuration()?? "null"]);
|
||||
Logger::info("当前语音:{$result->getFullVoice()}\n");
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -80,11 +80,14 @@ class BlockTest extends TestCase
|
||||
Config::getInstance()->setBlockMode(true);
|
||||
|
||||
// 创建一个时间不足的场景(只有5秒)
|
||||
// 关键:设置 previousAction 和 processType 使得时间验证策略生效
|
||||
$context = $this->processor->createContextBuilder()
|
||||
->endoscope('胃镜1')
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->previousAction('清洗') // 上一步也是清洗,表示重复刷同一步骤
|
||||
->processType('手工洗') // 必须设置流程类型,否则 hasStep 返回 false
|
||||
->duration(5) // 只有5秒,时间不足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
@@ -112,6 +115,8 @@ class BlockTest extends TestCase
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->previousAction('清洗') // 设置 previousAction 使时间验证生效
|
||||
->processType('手工洗') // 必须设置流程类型
|
||||
->duration(5) // 只有5秒,时间不足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
@@ -161,6 +166,8 @@ class BlockTest extends TestCase
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->previousAction('清洗') // 设置 previousAction 使时间验证生效
|
||||
->processType('手工洗') // 必须设置流程类型
|
||||
->duration(120) // 120秒,时间充足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
|
||||
Reference in New Issue
Block a user