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

import com.pavis.admin.aigc.core.agent.browser.EnvData;
import com.pavis.admin.aigc.model.resp.AgentPlanResp;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;

/**
 * 规划上下文类
 * 用于在计划的创建、执行和总结过程中传递和维护状态信息
 * 该类作为计划执行流程中的核心数据载体，在的各个阶段之间传递
 * 主要职责：
 * - 存储计划ID和计划实体信息
 * - 保存用户原始请求
 * - 维护计划执行状态
 * - 存储执行结果摘要
 * - 控制是否需要生成执行总结
 */
@Data
public class PlanContext implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 会话ID
     */
    private Long conversationId;

    /**
     * 消息ID
     */
    private Long messageId;

    /**
     * 用户的消息内容
     */
    private String messageContent;

    /**
     * 计划的唯一标识符
     */
    private Long planId;

    /**
     * 当前执行计划步骤的ID
     */
    private Long currentPlanStepId;

    /**
     * 执行计划实体，包含计划的详细信息和执行步骤
     */
    private AgentPlanResp plan;

    /**
     * 智能体插件执行计划步骤的环境数据
     * 前端插件环境
     * url
     * title
     * tabs
     * scroll_info
     * interactive_elements
     * screenshot
     * help:
     * [0], [1], [2], etc., represent clickable indices corresponding to the elements listed. Clicking on these indices
     * will navigate to or interact with the respective content behind them.
     */
    private EnvData envData;

    /**
     * 计划执行完成后的结果摘要
     */
    private String resultSummary;

    /**
     * 是否需要为执行结果调用大模型生成摘要，true是调用大模型，false是不调用直接输出结果
     */
    private boolean needSummary = true;

    /**
     * 计划执行是否成功的标志
     */
    private boolean success = false;

}
