package com.dora.service;

import com.dora.dto.WorkflowCategoryDto;
import com.dora.dto.WorkflowListItemDto;
import com.dora.dto.WorkflowDetailDto;
import com.dora.dto.WorkflowVideoPlayDto;
import com.dora.dto.WorkflowDataDto;
import com.dora.dto.PageResultDto;
import com.dora.entity.Workflow;

import java.util.List;

/**
 * 工作流服务接口
 */
public interface WorkflowService {
    
    /**
     * 获取工作流分类列表
     */
    List<WorkflowCategoryDto> getCategories();
    
    /**
     * 获取热门工作流列表
     */
    PageResultDto<WorkflowListItemDto> getHotWorkflows(int page, int size);
    
    /**
     * 根据分类获取工作流列表
     */
    PageResultDto<WorkflowListItemDto> getWorkflowsByCategory(String category, int page, int size);
    
    /**
     * 获取工作流详情
     */
    Workflow getWorkflowById(Long id);

    /**
     * 获取工作流详情（包含权限信息）
     */
    WorkflowDetailDto getWorkflowDetail(Long workflowId, Long userId);

    /**
     * 获取工作流视频播放凭证
     */
    WorkflowVideoPlayDto.PlayAuthResponse getWorkflowVideoPlayAuth(WorkflowVideoPlayDto.GetPlayAuthRequest request, Long userId);

    /**
     * 获取工作流数据包下载地址
     */
    WorkflowDataDto.DataFileResponse getWorkflowDataFile(Long workflowId, Long userId);

    /**
     * 获取工作流JSON数据
     */
    WorkflowDataDto.JsonDataResponse getWorkflowJsonData(Long workflowId, Long userId);

    /**
     * 提交/保存工作流（创作上传）。支持两种模式：
     * - JSON模式：提供 data JSON
     * - 文件模式：提供 dataFileUrl（依赖文件地址），同时可选提供简要元数据
     */
    Long createOrUpdateWorkflow(Long ownerId, Workflow workflow);
} 