package com.njcn.rdms.module.project.service.project;

import com.njcn.rdms.module.project.controller.admin.project.execution.vo.execution.ProjectExecutionStatusBoardReqVO;
import com.njcn.rdms.module.project.controller.admin.project.execution.vo.execution.ProjectExecutionStatusBoardRespVO;
import com.njcn.rdms.module.project.controller.admin.project.task.vo.ProjectTaskBoardPageReqVO;
import com.njcn.rdms.module.project.controller.admin.project.task.vo.ProjectTaskBoardPageRespVO;
import com.njcn.rdms.module.project.controller.admin.project.task.vo.ProjectTaskStatusBoardReqVO;
import com.njcn.rdms.module.project.controller.admin.project.task.vo.ProjectTaskStatusBoardRespVO;

public interface ProjectStatusBoardService {

    ProjectExecutionStatusBoardRespVO getExecutionStatusBoard(Long projectId, ProjectExecutionStatusBoardReqVO reqVO);

    ProjectTaskStatusBoardRespVO getTaskStatusBoard(Long projectId, Long executionId, ProjectTaskStatusBoardReqVO reqVO);

    /**
     * 看板视图任务分页：一次请求返回若干状态列，每列附带当前页切片 + 该列总数。
     * <p>statusCode 缺省=按状态字典返回全部列（空列也回，list=[]、total=0）；传若干个=只返回这些状态的列，
     * 字典外的值静默忽略。pageNo / pageSize 应用到返回的所有列（每列各自分页但页码统一）。
     * <p>list 元素结构与 /tasks/page 完全一致（共享 {@code assembleTaskRespVOPage} 装配方法）。
     */
    ProjectTaskBoardPageRespVO getTaskBoardPage(Long projectId, Long executionId, ProjectTaskBoardPageReqVO reqVO);

}
