package com.pavis.admin.aigc.service;

import com.pavis.admin.aigc.core.agent.planner.PlanContext;
import top.continew.starter.extension.crud.service.BaseService;
import com.pavis.admin.aigc.model.query.AgentPlanQuery;
import com.pavis.admin.aigc.model.req.AgentPlanReq;
import com.pavis.admin.aigc.model.resp.AgentPlanDetailResp;
import com.pavis.admin.aigc.model.resp.AgentPlanResp;

/**
 * 智能体规划记录业务接口
 *
 * @author semi
 * @since 2025/05/28 16:59
 */
public interface AgentPlanService extends BaseService<AgentPlanResp, AgentPlanDetailResp, AgentPlanQuery, AgentPlanReq> {

    /**
     * 创建计划，仅创建不执行
     *
     * @param req 计划请求
     * @return 计划上下文
     */
    PlanContext createPlan(AgentPlanReq req);

    /**
     * 计划执行管理，具体执行放在前端插件，这里仅做执行管理
     *
     * @param context 计划上下文
     * @return 计划上下文
     */
    PlanContext executePlan(PlanContext context);

    /**
     * 根据计划ID获取计划信息
     *
     * @param planId 计划ID
     * @return 计划信息
     */
    AgentPlanResp getByPlanId(Long planId);

    /**
     * 保存或修改计划信息
     *
     * @param resp 计划信息
     * @return 计划信息
     */
    AgentPlanResp saveOrUpdate(AgentPlanResp resp);
}