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:
zimoyin
2026-03-11 13:48:40 +08:00
parent 6c874221ad
commit f2ff4ae123
42 changed files with 246 additions and 158 deletions
+27 -9
View File
@@ -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,
};
}
/**
* 设置晨洗状态 - 需要晨洗
*/
+18 -4
View File
@@ -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;
}
+7
View File
@@ -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();