refactor(flow): 优化流程配置及相关测试
- 在测试代码中统一使用 setPreviousAction 与 setDuration 方法,规范方法调用 - VirtualContextBuilder 允许 setDuration 接收 null,增强灵活性 - VirtualityFlowProcessor 计算步骤持续时间时改进判断逻辑,避免错误持续时间值 - 增加日志记录上一步骤开始时间,方便调试流程状态 - 自定义流程配置文件大幅重构,新增多种晨洗模式配置 - 新增机洗单步骤流程、无晨洗流程、每日首次晨洗、存储超时晨洗等多种流程样例 - 自定义流程支持 override_steps 为 true/false 的不同合并策略说明与示例 - 详细补充配置节点说明,增强配置文档准确性和用户理解 - 自定义语音模板扩展,支持多种语音播报及错误提示文本 - 更新时间验证配置,统一各流程中各步骤时间要求 - 补充“配置自定义节点流程指南”文档,详细说明配置原则、合并策略与使用建议
This commit is contained in:
@@ -245,7 +245,7 @@ class VirtualContextBuilder
|
||||
/**
|
||||
* 设置操作时长(秒)
|
||||
*/
|
||||
public function setDuration(int $seconds): self
|
||||
public function setDuration(?int $seconds): self
|
||||
{
|
||||
$this->processStatus = new ProcessStatus(
|
||||
currentStep: $this->processStatus->currentStep,
|
||||
|
||||
@@ -164,9 +164,12 @@ class VirtualityFlowProcessor
|
||||
|
||||
// 继承之前的流程状态
|
||||
if ($currentState !== null) {
|
||||
$st = strtotime($currentState->getActionStartTime());
|
||||
$duration = time() - $st;
|
||||
if (empty($st) || $duration <= 0) $duration = null;
|
||||
$builder->currentStep($currentState->getCurrentStep())
|
||||
->batchNo($currentState->getBatchNo())
|
||||
->setDuration(time() - strtotime($currentState->getActionStartTime()))
|
||||
->setDuration($duration)
|
||||
->processType($currentState->getProcessType());
|
||||
|
||||
// 设置 previousAction:上一步骤名称就是当前状态的 currentStep
|
||||
@@ -231,6 +234,7 @@ class VirtualityFlowProcessor
|
||||
Logger::info("当前步骤:{}", [$result->getCurrentStep()]);
|
||||
Logger::info("上一个步骤类型:{}", [$result->getPreviousAction()->action_type_name ?? "null"]);
|
||||
Logger::info("上一个步骤:{}", [$result->getPreviousAction()->process_name ?? "null"]);
|
||||
Logger::info("上一个步骤开始时间:{}", [$result->getPreviousAction()->op_starttime ?? "null"]);
|
||||
Logger::info("时长:{}", [$result->getDuration() ?? "null"]);
|
||||
Logger::info("当前语音:{$result->getFullVoice()}\n");
|
||||
return $result;
|
||||
|
||||
@@ -86,9 +86,9 @@ class BlockTest extends TestCase
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->previousAction('清洗') // 上一步也是清洗,表示重复刷同一步骤
|
||||
->setPreviousAction('清洗') // 上一步也是清洗,表示重复刷同一步骤
|
||||
->processType('手工洗') // 必须设置流程类型,否则 hasStep 返回 false
|
||||
->duration(5) // 只有5秒,时间不足
|
||||
->setDuration(5) // 只有5秒,时间不足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
|
||||
@@ -115,9 +115,9 @@ class BlockTest extends TestCase
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->previousAction('清洗') // 设置 previousAction 使时间验证生效
|
||||
->setPreviousAction('清洗') // 设置 previousAction 使时间验证生效
|
||||
->processType('手工洗') // 必须设置流程类型
|
||||
->duration(5) // 只有5秒,时间不足
|
||||
->setDuration(5) // 只有5秒,时间不足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
|
||||
@@ -166,9 +166,9 @@ class BlockTest extends TestCase
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->previousAction('清洗') // 设置 previousAction 使时间验证生效
|
||||
->setPreviousAction('清洗') // 设置 previousAction 使时间验证生效
|
||||
->processType('手工洗') // 必须设置流程类型
|
||||
->duration(120) // 120秒,时间充足
|
||||
->setDuration(120) // 120秒,时间充足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ class VoiceTest extends TestCase
|
||||
->reader('漂洗')
|
||||
->operator('操作员1')
|
||||
->currentStep('清洗')
|
||||
->duration(5) // 只有5秒,时间不足
|
||||
->setDuration(5) // 只有5秒,时间不足
|
||||
->batchNo(date('Ymd') . '010001')
|
||||
->build();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user