5월에 새로운 기능이 추가되었습니다: Selective dismissal of New and Unread topics. 최근 최신 버전의 Discourse로 업그레이드했으며, 코드와 DB 로그를 확인해 보니 사용자가 항목을 선택하지 않고 “Dismiss New”(새 항목 무시)를 실행할 때(즉, 일괄 무시하는 경우) 요청 파라미터로 tracked = false만 전달하고 나머지는 아무것도 전달하지 않은 채 reset-new를 호출하는 것으로 보입니다.

PR 변경 사항을 살펴본 결과, topic_scope를 결정하는 과정에서 다음 위치에 도달하는 것 같습니다: FEATURE: Allow selective dismissal of new and unread topics (#12976) · discourse/discourse@7a79bd7 · GitHub
그리고 topic_ids를 전달하지 않으므로 if문을 건너뛰고 자동으로 L989로 이동하게 됩니다.
우리는 상당히 큰 규모의 Discourse 서버를 운영 중인데, 모든 Topics를 대상으로 하는 개념은 상당히 비용이 많이 드는 것 같습니다. 기본적으로 쿼리가 다음과 같이 생성되기 때문입니다:
LEFT JOIN topic_users ON topic_users.topic_id = topics.id AND topic_users.user_id = xxx WHERE "topics"."deleted_at" IS NULL AND "topics"."id" IN (1, ... 1000000) AND (topics.created_at >= 'date') AND (topic_users.last_read_post_number IS NULL) AND (topics.archetype <> 'private_message') ORDER BY topics.created_at DESC LIMIT 500
IN 절에는 100만 개가 넘는 모든 Topic ID가 포함된 것으로 보입니다.
일괄 선택 시 기본값을 모든 가능한 Topics 대신 해당 Topic ID들만 전달하도록 변경할 수 있을까요?