Skip to content

feat(editorial-story): discovery 후보 풀 아티스트/멤버 밸런싱 #1010

Description

@cocoyoon

배경

discovery 후보 풀이 ORDER BY trending_score DESC LIMIT 80 전역 top-N이라, 최다 아티스트(제니)가 풀을 독식 → 저볼륨 멤버(로제/지수)가 80 컷 아래로 밀려 LLM 메뉴에 아예 안 들어옴. LLM은 편중된 메뉴에서 판단할 수밖에 없다 (artist_frequency도 편중된 값을 봄).

위치: packages/ai-server/src/services/editorial_discovery/repository.py gather_discovery_input (L164–188).

목표

후보 풀에 아티스트/멤버 다양성 확보 — 출력 강제가 아니라 LLM이 판단할 "공정한 메뉴"만 보장. 최종 구성(누구를/몇 명/순서)은 그대로 모델 판단.

옵션

  • (a) 아티스트별 천장row_number() OVER (PARTITION BY artist_name ORDER BY trending_score DESC) <= KLIMIT 80. 트렌딩 유지 + 멤버당 상한(예 12). 각 멤버의 베스트 K장이 풀에 진입.
  • (b) 2-tier — 상위 60 순수 트렌딩(바이럴 신호 보존) + 20 저평가 멤버 베스트 fill.
  • (선택) 프롬프트 넛지 — 그룹 앵글이면 멤버 레인지 고려(모델 판단, 하드코딩 X).

우선순위 (후순위)

person angle_type 제거로 그룹 완결성 계약이 사라지면 급하지 않음 — item/style은 멤버 완결성이 없어 제니만 나와도 "밋밋"할 뿐 "깨진" 게 아님. 일반 다양성 향상 목적으로 후순위. person 전용 agent 부활 시 필수화.

Metadata

Metadata

Assignees

No one assigned

    Labels

    aiAI/자동화enhancementNew feature or request

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions