import request from '@/utils/request'

// ==================== 模板管理 ====================

// 查询模板列表
export function listTemplate(query) {
  return request({
    url: '/aiAddwxSop/template/list',
    method: 'get',
    params: query
  })
}

// 获取模板详情（含节点）
export function getTemplate(templateId) {
  return request({
    url: '/aiAddwxSop/template/' + templateId,
    method: 'get'
  })
}

// 新增模板
export function addTemplate(data) {
  return request({
    url: '/aiAddwxSop/template',
    method: 'post',
    data: data
  })
}

// 修改模板
export function updateTemplate(data) {
  return request({
    url: '/aiAddwxSop/template',
    method: 'put',
    data: data
  })
}

// 删除模板
export function delTemplate(templateIds) {
  return request({
    url: '/aiAddwxSop/template/' + templateIds,
    method: 'delete'
  })
}

// 保存模板及节点
export function saveTemplateWithNodes(data) {
  return request({
    url: '/aiAddwxSop/template/saveWithNodes',
    method: 'post',
    data: data
  })
}

// ==================== 模板节点管理 ====================

// 查询模板节点列表
export function listTemplateNode(templateId) {
  return request({
    url: '/aiAddwxSop/templateNode/list/' + templateId,
    method: 'get'
  })
}

// 获取模板节点详情
export function getTemplateNode(nodeId) {
  return request({
    url: '/aiAddwxSop/templateNode/' + nodeId,
    method: 'get'
  })
}

// 新增模板节点
export function addTemplateNode(data) {
  return request({
    url: '/aiAddwxSop/templateNode',
    method: 'post',
    data: data
  })
}

// 修改模板节点
export function updateTemplateNode(data) {
  return request({
    url: '/aiAddwxSop/templateNode',
    method: 'put',
    data: data
  })
}

// 删除模板节点
export function delTemplateNode(nodeId) {
  return request({
    url: '/aiAddwxSop/templateNode/' + nodeId,
    method: 'delete'
  })
}

// 批量保存画布节点（含位置坐标）
export function saveCanvasNodes(data) {
  return request({
    url: '/aiAddwxSop/templateNode/saveCanvasNodes',
    method: 'post',
    data: data
  })
}

// ==================== 模板节点规则管理 ====================

// 查询节点规则列表
export function listTemplateNodeRule(nodeId) {
  return request({
    url: '/aiAddwxSop/templateNodeRule/list/' + nodeId,
    method: 'get'
  })
}

// 获取节点规则详情
export function getTemplateNodeRule(ruleId) {
  return request({
    url: '/aiAddwxSop/templateNodeRule/' + ruleId,
    method: 'get'
  })
}

// 新增节点规则
export function addTemplateNodeRule(data) {
  return request({
    url: '/aiAddwxSop/templateNodeRule',
    method: 'post',
    data: data
  })
}

// 修改节点规则
export function updateTemplateNodeRule(data) {
  return request({
    url: '/aiAddwxSop/templateNodeRule',
    method: 'put',
    data: data
  })
}

// 删除节点规则
export function delTemplateNodeRule(ruleId) {
  return request({
    url: '/aiAddwxSop/templateNodeRule/' + ruleId,
    method: 'delete'
  })
}

// ==================== 个人工作流管理 ====================

// 查询个人工作流列表
export function listUserWorkflow(query) {
  return request({
    url: '/aiAddwxSop/userWorkflow/list',
    method: 'get',
    params: query
  })
}

// 获取个人工作流详情（含节点树）
export function getUserWorkflow(userWorkflowId) {
  return request({
    url: '/aiAddwxSop/userWorkflow/' + userWorkflowId,
    method: 'get'
  })
}

// 根据模板创建个人工作流
export function createUserWorkflowFromTemplate(templateId, businessKey) {
  return request({
    url: '/aiAddwxSop/userWorkflow/createFromTemplate',
    method: 'post',
    params: { templateId, businessKey }
  })
}

// 推进工作流到下一节点
export function advanceWorkflow(userWorkflowId, currentNodeId) {
  return request({
    url: '/aiAddwxSop/userWorkflow/advance',
    method: 'post',
    params: { userWorkflowId, currentNodeId }
  })
}

// 修改个人工作流
export function updateUserWorkflow(data) {
  return request({
    url: '/aiAddwxSop/userWorkflow',
    method: 'put',
    data: data
  })
}

// 删除个人工作流
export function delUserWorkflow(userWorkflowIds) {
  return request({
    url: '/aiAddwxSop/userWorkflow/' + userWorkflowIds,
    method: 'delete'
  })
}

// ==================== 个人节点管理 ====================

// 查询个人节点列表
export function listUserNode(userWorkflowId) {
  return request({
    url: '/aiAddwxSop/userNode/list/' + userWorkflowId,
    method: 'get'
  })
}

// 获取个人节点详情
export function getUserNode(userNodeId) {
  return request({
    url: '/aiAddwxSop/userNode/' + userNodeId,
    method: 'get'
  })
}

// 修改个人节点（含提示词、条件等）
export function updateUserNode(data) {
  return request({
    url: '/aiAddwxSop/userNode',
    method: 'put',
    data: data
  })
}

// 更新节点状态
export function updateNodeStatus(userNodeId, status) {
  return request({
    url: '/aiAddwxSop/userNode/status',
    method: 'put',
    params: { userNodeId, status }
  })
}

// ==================== 执行日志管理 ====================

// 查询执行日志列表
export function listExecLog(query) {
  return request({
    url: '/aiAddwxSop/execLog/list',
    method: 'get',
    params: query
  })
}

// 根据工作流ID查询执行日志
export function listExecLogByWorkflow(userWorkflowId) {
  return request({
    url: '/aiAddwxSop/execLog/workflow/' + userWorkflowId,
    method: 'get'
  })
}

// 根据节点ID查询执行日志
export function listExecLogByNode(userNodeId) {
  return request({
    url: '/aiAddwxSop/execLog/node/' + userNodeId,
    method: 'get'
  })
}

// 获取执行日志详情
export function getExecLog(logId) {
  return request({
    url: '/aiAddwxSop/execLog/' + logId,
    method: 'get'
  })
}

// ==================== 标签模板绑定管理 ====================

// 查询标签模板绑定列表
export function listTagTemplateBind(query) {
  return request({
    url: '/aiAddwxSop/tagTemplateBind/list',
    method: 'get',
    params: query
  })
}

// 根据标签ID查询绑定
export function getTagTemplateBindByTag(qwTagId) {
  return request({
    url: '/aiAddwxSop/tagTemplateBind/byTag/' + qwTagId,
    method: 'get'
  })
}

// 新增标签模板绑定
export function addTagTemplateBind(data) {
  return request({
    url: '/aiAddwxSop/tagTemplateBind',
    method: 'post',
    data: data
  })
}

// 修改标签模板绑定
export function updateTagTemplateBind(data) {
  return request({
    url: '/aiAddwxSop/tagTemplateBind',
    method: 'put',
    data: data
  })
}

// 删除标签模板绑定
export function delTagTemplateBind(bindIds) {
  return request({
    url: '/aiAddwxSop/tagTemplateBind/' + bindIds,
    method: 'delete'
  })
}
