package com.hlab.yanalyst.domain.channel; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.CreationTimestamp; import java.time.LocalDateTime; /** * 추적 대상 인물. 인물은 프로그램을 옮겨 다니므로 채널만 쫓으면 놓치는 소재를 잡아낸다. * *
1명당 검색 1회(100 units)가 들어 하루 1회만 수집한다. 활성 인원은 * {@code hlab.feed.person.max-people} 로 제한한다. */ @Entity @Table(name = "tracked_persons", indexes = @Index(name = "idx_tp_name", columnList = "name", unique = true)) @Getter @NoArgsConstructor public class TrackedPerson { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true, length = 100) private String name; /** 꺼두면 수집 대상에서 빠진다(쿼터를 아끼면서 목록은 유지). */ @Column(nullable = false) private Boolean enabled = true; /** 마지막 수집 시각. */ private LocalDateTime lastCollectedAt; /** 마지막 수집에서 새로 담은 롱폼 수. */ private Integer lastFound; @CreationTimestamp @Column(updatable = false) private LocalDateTime createdAt; public TrackedPerson(String name) { this.name = name; this.enabled = true; } public boolean isEnabled() { return Boolean.TRUE.equals(this.enabled); } public void setEnabled(boolean enabled) { this.enabled = enabled; } public void recordCollection(int found) { this.lastCollectedAt = LocalDateTime.now(); this.lastFound = found; } }