Skip to content

ArticleAgentsService: Success 결과에 .failure 호출로 짧은 본문 기사가 예외 경로로 폐기됨 #912

Description

@stadia

문제

app/services/article_agents_service.rbensure_body에서, body_resultSuccess인데 본문이 31자 미만이면 Failure(body_result.failure)가 Success 결과에 .failure를 호출해 예외를 던집니다.

body_result = ContentService.new.call(article)
if body_result.failure? || body_result.value!.size < 31
  article.discard!
  return Failure(body_result.failure)   # Success에 .failure 호출 → 예외
end

dry-monads에서 Success에 .failure를 호출하면 예외가 발생합니다. 이 예외는 아래 rescue StandardError가 삼켜 article.discard! + Failure(e.message)(dry-monads 내부 메시지)를 반환합니다.

영향

  • 짧은 본문(31자 미만) 기사가 정상 폐기 경로가 아니라 예외 경로로 폐기됩니다.
  • 반환 메시지가 dry-monads 내부 오류 메시지로 오염됩니다.

위치

  • app/services/article_agents_service.rb:52-53

기대 동작

Success인데 본문이 짧은 경우 .failure를 호출하지 않고 명시적으로 Failure(:short_body) 같은 의미 있는 실패를 반환해야 합니다.

발견 경위

PR #909 리뷰 중 발견 (별건으로 분리).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions