package com.qqchen.deploy.backend.workflow.dto.inputmapping;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * Git同步检测节点输入映射
 *
 * @author qqchen
 * @since 2025-12-04
 */
@Data
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class GitSyncCheckInputMapping extends BaseNodeInputMapping {
    
    /**
     * 源Git系统ID（内网Git）
     */
    @NotNull(message = "源Git系统ID不能为空")
    private Long sourceGitSystemId;
    
    /**
     * 源Git项目ID
     */
    @NotNull(message = "源Git项目ID不能为空")
    private Long sourceGitProjectId;
    
    /**
     * 源分支名称
     */
    @NotBlank(message = "源分支不能为空")
    private String sourceBranch;
    
    /**
     * 目标Git系统ID（客户Git）
     * 可选字段，如果未配置则跳过Git同步检测
     */
    private Long targetGitSystemId;
    
    /**
     * 目标Git项目ID
     * 可选字段，如果未配置则跳过Git同步检测
     */
    private Long targetGitProjectId;
    
    /**
     * 目标分支名称
     * 可选字段，如果未配置则跳过Git同步检测
     */
    private String targetBranch;
    
    // ✅ 继承自 BaseNodeInputMapping.continueOnFailure
    // - true: 发现差异时标记为FAILURE，但继续执行（不阻断）
    // - false: 发现差异时抛出BpmnError，终止流程（阻断）
}
