package com.agent.management.model.common;

/**
 * 持有 Jasypt 加密凭据的实体接口。
 *
 * <p>抽象出 {@code passwordEnc}（密文）、{@code passwordPlain}（一次性明文）、
 * {@code decryptedPassword}（运行时解密明文）三组标准访问器，
 * 供 {@link com.agent.management.service.CredentialManager} 统一处理加解密与脱敏。</p>
 *
 * <p><b>字段语义</b>（解决历史字段复用问题）：</p>
 * <ul>
 *   <li>{@code passwordEnc}：永远只承载 Jasypt 密文（来自 DB），含义恒定</li>
 *   <li>{@code passwordPlain}：仅表单提交时携带，用于新增/更新密码</li>
 *   <li>{@code decryptedPassword}：仅运行时使用（@Transient + @JsonIgnore），
 *       供下游 Executor/Jdbc 服务透明读取；永不持久化、永不出现在 API 响应中</li>
 * </ul>
 */
public interface CredentialHolder {

    Long getId();

    String getName();
    void setName(String name);

    String getPasswordEnc();
    void setPasswordEnc(String passwordEnc);

    String getPasswordPlain();
    void setPasswordPlain(String passwordPlain);

    String getDecryptedPassword();
    void setDecryptedPassword(String password);
}
