Chat API: direction=past일 때 page_size 파라미터가 무시됩니다

Discourse Chat 플러그인의 API 관련 버그를 보고합니다. 과거 채팅 메시지를 조회할 때 page_size 파라미터가 무시되고, 엔드포인트가 항상 최대 메시지 수를 반환합니다.

재현 방법:

  1. 채팅 메시지 엔드포인트에 API 호출을 수행합니다 (예: /chat/{channel_id}/messages.json).

  2. 요청에 다음 파라미터를 사용합니다:

    • target_message_id: [최근 메시지의 ID]

    • direction: past

    • page_size: 5 (또는 50보다 작은 임의의 숫자)

기대되는 동작: API는 지정된 target_message_id보다 이전에 전송된 최대 5개의 메시지를 포함하는 JSON 객체를 반환해야 합니다.

실제 동작: API는 page_size=5 파라미터를 무시하고 50개의 메시지를 반환합니다. 이 시나리오에서 최대 페이지 크기로 하드코딩된 것으로 보입니다.

확인해 주셔서 감사합니다!

2개의 좋아요

구현 코드를 살펴보면, 이는 일부러 그렇게 설계된 것으로 보입니다:

아마 @loic 님이 이 부분에 대해 몇 가지 생각이 있으실 것 같습니다.

2개의 좋아요

재현을 시도해 봤지만, 재현하지는 못했습니다.

Chat::MessagesQuery, Chat::ListChannelMessages 및 컨트롤러 액션을 스펙을 통해 확인했고, 로컬 인스턴스에서 수동으로 테스트해 보기도 했습니다. page_size 매개변수와 direction 매개변수 모두 예상대로 올바르게 처리되고 있습니다.

@Nima1 올바른 엔드포인트를 사용하고 계신지 확인해 주실 수 있을까요? /chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5처럼 api가 포함되어야 합니다.

stable 환경에서는 동작이 다를 수 있는지 여부는 아직 확인하지 못했습니다. 인스턴스가 tests-passed 브랜치와 최신 상태인지 확인해 보세요.

2개의 좋아요

확인해 주셔서 감사합니다.

죄송합니다. 중요한 세부 사항을 언급하는 것을 깜빡했습니다. 이 문제는 스레딩이 활성화된 채널에서만 발생합니다. 그것이 재현하지 못한 이유일 가능성이 높습니다.

특정 스레드에서 메시지를 가져올 때 page_size 매개변수가 무시됩니다. 예를 들어, 이 엔드포인트를 page_size=5로 사용할 때:

/chat/api/channels/64/threads/1526/messages?target_message_id=19205&page_size=5

스레드에 충분한 수의 메시지가 있음에도 불구하고, 요청한 5개 대신 기본값인 50개의 메시지가 반환됩니다. 문제가 스레드 API 엔드포인트에 특이한 것 같습니다.

2개의 좋아요

버그를 찾았습니다! 해당 서비스를 이미 조금 리팩터링하고 있었기 때문에, 수정 사항을 그 안에 포함시켰습니다:

4개의 좋아요

이 주제는 마지막 답변 후 3일이 지나 자동으로 닫혔습니다. 더 이상 새로운 답변을 할 수 없습니다.