package com.zioinfo.esn.admin.dto;

import lombok.Data;

import java.time.LocalDateTime;

/**
 * 감사 로그 (esn_audit_log 테이블 매핑).
 *
 * <p>ESL 제어 운영(펌웨어 배포·가격 변경·태그 큐 전파)과 관리 행위(사용자/테넌트 CRUD·설정 변경)를
 * 추적한다. 멀티테넌트 스코프(tenantCode)를 보존한다.
 *
 * <p>보안: 비밀번호/자격증명/PII 는 detail 에 절대 기록하지 않는다(키/식별자/요약만).
 */
@Data
public class AuditLog {
    private Long id;
    private String tenantCode;   // 테넌트 스코프 (nullable)
    private String username;     // 작업 수행자 (JWT subject)
    private String action;       // USER_CREATE, FIRMWARE_DEPLOY, POS_PRICE_CHANGE, SETTING_CHANGE 등
    private String resource;     // 대상 리소스 종류 (USER / FIRMWARE / POS_CVT / TENANT / SETTING ...)
    private String resourceId;   // 대상 식별자 (id / key 등)
    private String detail;       // 부가 요약 (민감정보 제외)
    private String ipAddress;    // 요청 IP (nullable)
    private String userAgent;    // User-Agent (nullable)
    private Boolean success;     // 성공 여부
    private LocalDateTime createdAt;
}
