피드 수집이 역할(SOURCE/RIVAL)과 무관하게 롱폼만 저장하도록 변경. 쇼츠는 이미 잘린 결과물이라 자를 원본(소재)이 아니므로 수집 대상에서 제외. UI 문구(경쟁 쇼츠 → 경쟁 채널)와 길이 필터도 함께 정리. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
49 lines
1.9 KiB
Java
49 lines
1.9 KiB
Java
package com.hlab.yanalyst.domain.channel;
|
|
|
|
/**
|
|
* 등록 채널의 역할.
|
|
*
|
|
* <ul>
|
|
* <li>{@link #MY} — 벤치마킹용 등록 채널. 영상이 수집함으로 들어가 소재 후보가 된다.</li>
|
|
* <li>{@link #OWN} — 내가 운영하는 채널. 이미 발행한 결과물이라 소재가 아니므로
|
|
* 수집함·칸반·발굴·피드 어디에도 섞이지 않고 내 채널 분석 화면에서만 쓰인다.</li>
|
|
* <li>{@link #SOURCE} — 소재 원본 채널(웹예능 공식채널). 롱폼만 피드에 수집한다.</li>
|
|
* <li>{@link #RIVAL} — 경쟁 채널(같은 소재를 다루는 클립 채널). 역시 롱폼만 피드에 수집한다.</li>
|
|
* </ul>
|
|
*
|
|
* ddl-auto:update 로 컬럼이 추가되므로 기존 행은 role 이 null 이다. null 은 항상 {@link #MY} 로 취급한다.
|
|
*/
|
|
public final class ChannelRole {
|
|
|
|
public static final String MY = "MY";
|
|
public static final String OWN = "OWN";
|
|
public static final String SOURCE = "SOURCE";
|
|
public static final String RIVAL = "RIVAL";
|
|
|
|
private ChannelRole() {}
|
|
|
|
/** null/공백/미인식 값을 MY 로 보정하고 대문자로 정규화한다. */
|
|
public static String normalize(String role) {
|
|
if (role == null || role.isBlank()) return MY;
|
|
String r = role.trim().toUpperCase();
|
|
return switch (r) {
|
|
case SOURCE, RIVAL, OWN, MY -> r;
|
|
default -> MY;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* 이 역할의 채널에서 수집한 영상에 붙일 출처(ChannelVideo.source).
|
|
* 수집함/발굴 쿼리는 CHANNEL·SEARCH 만 보므로, OWN 은 자동으로 격리된다.
|
|
*/
|
|
public static String videoSource(String role) {
|
|
return OWN.equals(normalize(role)) ? OWN : "CHANNEL";
|
|
}
|
|
|
|
/** 피드(소재 원본/경쟁) 역할인지. */
|
|
public static boolean isFeed(String role) {
|
|
String r = normalize(role);
|
|
return SOURCE.equals(r) || RIVAL.equals(r);
|
|
}
|
|
}
|