diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ScheduledActionData.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ScheduledActionData.java index 00eaaaea..09bd04bf 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ScheduledActionData.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ScheduledActionData.java @@ -2,6 +2,12 @@ package work.slhaf.partner.core.action.entity; import lombok.Data; import lombok.EqualsAndHashCode; +import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.HistoryAction; + +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** * 计划行动数据类,继承自{@link ActionData},扩展了属性{@link ScheduledActionData#type}和{@link ScheduledActionData#scheduleContent},用于标识计划类型(单次还是周期性任务)和计划内容 @@ -10,9 +16,29 @@ import lombok.EqualsAndHashCode; @Data public class ScheduledActionData extends ActionData { private ScheduledType type; - private String scheduleContent; //如果为周期,则对应cron表达式,如果为一次性,则对应为LocalDateTime字符串 + private String scheduleContent; //如果为周期,则对应cron表达式,如果为一次性,则对应为ZonedDateTime字符串 + private List scheduledHistories = new ArrayList<>(); - enum ScheduledType { + public void recordAndReset() { + this.scheduledHistories.add(new ScheduledHistory(ZonedDateTime.now(), this.result, Map.copyOf(this.history))); + + // 清理执行时内容 + this.additionalContext.clear(); + this.executingStage = 0; + this.getActionChain().forEach((stage, actions) -> { + for (MetaAction action : actions) { + action.getParams().clear(); + action.setResult(new MetaAction.Result()); + } + }); + + this.setStatus(ActionStatus.PREPARE); + } + + public enum ScheduledType { CYCLE, ONCE } + + private record ScheduledHistory(ZonedDateTime endTime, String result, Map> history) { + } } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionExecutor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionExecutor.java index b659aadf..ec3181a1 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionExecutor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionExecutor.java @@ -9,11 +9,8 @@ import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule; import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule; import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCore; -import work.slhaf.partner.core.action.entity.ActionData; +import work.slhaf.partner.core.action.entity.*; import work.slhaf.partner.core.action.entity.ActionData.ActionStatus; -import work.slhaf.partner.core.action.entity.MetaAction; -import work.slhaf.partner.core.action.entity.MetaActionInfo; -import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.core.action.runner.RunnerClient; import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.memory.MemoryCapability; @@ -157,7 +154,12 @@ public class ActionExecutor extends AgentRunningSubModule new ArrayList<>()) .add(historyAction); diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionRepairer.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionRepairer.java index 60a88569..ce6ec96c 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionRepairer.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ActionRepairer.java @@ -209,9 +209,9 @@ public class ActionRepairer extends AgentRunningSubModule { JSONObject historyItem = new JSONObject(); - historyItem.put("[行动Key]", historyAction.getActionKey()); - historyItem.put("[行动描述]", historyAction.getDescription()); - historyItem.put("[行动结果]", historyAction.getResult()); + historyItem.put("[行动Key]", historyAction.actionKey()); + historyItem.put("[行动描述]", historyAction.description()); + historyItem.put("[行动结果]", historyAction.result()); historyData.add(historyItem); }); diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ParamsExtractor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ParamsExtractor.java index 25a8d5cc..9caf2686 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ParamsExtractor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/ParamsExtractor.java @@ -50,9 +50,9 @@ public class ParamsExtractor extends AgentRunningSubModule historyActions = input.getHistoryActionResults(); for (HistoryAction historyAction : historyActions) { JSONObject historyItem = new JSONObject(); - historyItem.put("[行动Key]", historyAction.getActionKey()); - historyItem.put("[行动描述]", historyAction.getDescription()); - historyItem.put("[行动结果]", historyAction.getResult()); + historyItem.put("[行动Key]", historyAction.actionKey()); + historyItem.put("[行动描述]", historyAction.description()); + historyItem.put("[行动结果]", historyAction.result()); historyData.add(historyItem); } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/entity/HistoryAction.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/entity/HistoryAction.java index 4d0b9a0e..cf36f1ed 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/entity/HistoryAction.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/entity/HistoryAction.java @@ -1,10 +1,4 @@ package work.slhaf.partner.module.modules.action.dispatcher.executor.entity; -import lombok.Data; - -@Data -public class HistoryAction { - private String actionKey; - private String description; - private String result; +public record HistoryAction(String actionKey, String description, String result) { }