package com.pavis.admin.aigc.core.agent;

import lombok.Data;

import java.time.LocalDateTime;

@Data
public class ReActRecord {

    /**
     * 智能体思考开始的时间戳
     */
    private LocalDateTime thinkStartTime;

    /**
     * 智能体思考结束的时间戳
     */
    private LocalDateTime thinkEndTime;

    /**
     * 智能体思考时输入的上下文
     */
    private String thinkInput;

    /**
     * 智能体思考时输出的上下文
     */
    private String thinkOutput;

    /**
     * 智能体思考时长（秒）
     */
    private Long thinkDuration;

    /**
     * 智能体思考是否需要执行步骤 0否 1是
     */
    private Boolean executionNeeded;

    /**
     * 智能体执行开始的时间戳
     */
    private LocalDateTime executionStartTime;

    /**
     * 智能体执行结束的时间戳
     */
    private LocalDateTime executionEndTime;

    /**
     * 智能体执行时长（秒）
     */
    private Long executionDuration;

    /**
     * 步骤执行的工具名称
     */
    private String toolName;

    /**
     * 步骤执行的工具参数
     */
    private String toolParameters;

    /**
     * 步骤执行结果
     */
    private String result;

    /**
     * 步骤执行的状态
     */
    private String status;

    /**
     * 此步骤是否完成
     */
    private Boolean completed;

    /**
     * 智能体是否卡住
     */
    private Boolean stucked;

    /**
     * 错误描述
     */
    private String errorMessage;

    /**
     * 记录思考阶段开始
     */
    public void startThinking(String thinkInput) {
        this.thinkStartTime = LocalDateTime.now();
        this.thinkInput = thinkInput;
    }

    /**
     * 记录思考阶段结束
     */
    public void finishThinking(String thinkOutput) {
        this.thinkEndTime = LocalDateTime.now();
        this.thinkOutput = thinkOutput;
    }

    /**
     * 记录错误信息
     */
    public void recordError(String errorMessage) {
        this.errorMessage = errorMessage;
        this.status = "ERROR";
    }
}
