package com.nbport.zgwl.contractlaunch.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 约定给法务的固定审批回调结构。
 *
 * 设计原则：
 * 1. 只保留法务系统可持有或可回写的字段
 * 2. 业务系统依赖 contractSysId 唯一定位合同
 * 3. approveStatus 仅约定 approved / rejected 两种值，不做多值兼容
 */
@Data
public class ContractLaunchLawCallbackDto implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 法务回调唯一流水号，后续若做幂等可直接使用 */
    private String callbackId;

    /** 结算平台推送给法务的唯一合同编码，用于回调时唯一定位合同 */
    private String contractSysId;

    /** 业务合同编号（推送给法务时已带出，便于双方排查） */
    private String contractCode;

    /** 二级单位合同编码（若推送时有值，法务可原样带回） */
    private String selfCode;

    /** 合同名称（便于接口日志和联调排查） */
    private String contractName;

    /** 审批状态，仅允许 approved / rejected */
    private String approveStatus;

    /** 审批意见 */
    private String approveMessage;

    /** 法务审批完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime approveTime;

    /** 法务系统合同编号 */
    private String lawContractCode;

    /** 法务系统合同ID */
    private String lawContractId;

    /** 带法务水印的合同正文文件 */
    private ContractLaunchLawCallbackFileDto watermarkFile;
}
