package com.zioinfo.kintex.visitor.contact;

import jakarta.validation.constraints.NotBlank;

/**
 * F-C4 관람객 명함/컨택트 지갑 DTO. 인증(본인 지갑만).
 * <p>보안(§0-3): 연락처·이메일은 마스킹만 노출.
 */
public final class ContactDtos {

    private ContactDtos() {
    }

    /** 내 명함 저장 요청 — 연락처/이메일은 서버가 마스킹 후 저장. */
    public record SaveCardRequest(
            @NotBlank String displayName,
            String company,
            String title,
            String email,
            String phone) {
    }

    /** 내 명함 카드(QR 공유 대상). qrPayload = CONTACT|shareToken. */
    public record MyCardDto(
            String displayName,
            String company,
            String title,
            String emailMasked,
            String phoneMasked,
            String shareToken,
            String qrPayload) {
    }

    /** QR 교환 요청 — 스캔한 상대 명함 QR 페이로드. */
    public record ExchangeRequest(@NotBlank String qrPayload) {
    }

    /** 저장된 컨택트. */
    public record ContactDto(
            String id,
            String displayName,
            String company,
            String title,
            String emailMasked,
            String phoneMasked,
            String memo,
            String savedAt) {
    }
}
