토픽 첫 게시글 수정 시 REST API 호출에서 bypass_bump에 대한 감사

How to edit post with API without bumping topic? 토론을 이어가며:

Discourse 팀이 bypass_bump 매개변수를 추가해 주셔서 진심으로 감사드립니다. 작지만 강력한 도구로, 스크립트와 플러그인이 최신 게시글 보기에서 오래된 주제가 의도치 않게 노출되지 않도록 배경에서 콘텐츠를 업데이트할 수 있게 해 줍니다.

저희는 ICS 동기화 스크립트에 이 기능을 사용하며, 의미 있는 변경 사항만 실제로 주제를 최신순으로 올릴 수 있도록 보장합니다. 커뮤니티 포럼을 깔끔하게 유지하고 독자의 경험을 방해하지 않도록 배려된 기능입니다. 다시 한번 감사드립니다!

이것은 지난번처럼 오해의 소지가 있는 칭찬 게시글이 아닙니다🙈. 그 이유는 다음과 같습니다.

  • Discourse는 게시글을 수정할 때 bypass_bump 플래그를 지원합니다. 이 플래그는 마지막(또는 유일한) 게시글을 수정하더라도 토픽의 마지막 활동 날짜(bump date)가 변경되지 않도록 방지합니다. 이는 PostRevisor 옵션에 명시적으로 기재되어 있습니다(“- bypass_bump: 마지막 게시글이더라도 토픽을 bump하지 않음”).
  • 해당 사용 사례를 정확히 설명하는 이 칭찬 토픽이 실제로 존재합니다.
  • 과거에는 이 옵션이 API 문서에 널리 알려져 있지 않아 /t/{id}/reset-bump-date 우회 방법을 사용했지만, 필요 시 여전히 사용 가능합니다.

실무 참고: 새 raw 데이터를 포함하여 PUT /posts/{post_id}.json을 호출하고 bypass_bump=true를 지정하면, 해당 수정이 /latest에 토픽을 노출시키지 않습니다. (공식 문서에는 이 파라미터가 명시적으로 나와 있지 않지만, 서버 측에서 PostRevisor를 통해 구현되어 있습니다.)

API 문서에서 bypass_bump의 공식적인 상태에 대해 여전히 100% 확신할 수 없습니다. 어디에도 명확하게 언급되어 있지 않으니까요.

하지만 Ethsim12의 Python 동기화 스크립트 로그를 살펴보면 시사하는 바가 큽니다. 해당 스크립트는 bypass_bump=true로 API를 호출하려고 합니다. 만약 이 파라미터가 무시되거나 무효하다면, 불필요한 범프(bump)를 방지할 수 있는 유일한 방법은 그들이 추가한 폴백, 즉 수동 호출인

/t/{topic_id}/reset-bump-date`

입니다.

따라서 로그 출력 자체가 강력한 증거가 됩니다. 로그에서 `/latest`에 표시되지 않으면서도 리셋 폴백 없이 토픽이 업데이트되고 있다면, `bypass_bump`가 실제로 작동하고 있다는 좋은 증거가 됩니다. 반대로 로그가 항상 `reset-bump-date`로 폴백된다면, `bypass_bump`가 작동하지 않는 것일 수 있습니다.

즉, 이 스크립트의 로그는 `bypass_bump`가 존재하며 Discourse에서 실제로 존중되는지 확인하는 데 큰 도움이 됩니다.

이 pull request에 관심이 있을 수 있습니다

이 PR을 공유해 줘서 고마워요, moin — 정말 유용한 컨텍스트네요.

제 사이드 프로젝트(ics_to_discourse.py 임포터)에서 실제로 캘린더 기반 업데이트가 토픽을 “시끄럽게” 갱신하지 않도록 막는 변경 사항을 방금 커밋했어요:

해당 커밋은 편집이 “의미 있는” 것(시간/장소 변경 등)인지 판단하는 로직을 추가하고, 루틴한 ICS 동기화가 토픽을 불필요하게 노출하지 않도록 bypass_bump와 reset-bump-date 폴백을 사용하고 있습니다.

따라서 이 PR은 제가 추구하던 방향과 완벽하게 일치하네요 — 코어가 같은 방향으로 나아가고 있는 것을 보니 좋습니다. “편집 시 토픽을 갱신하지 않음” 동작이 병합되면, 추가적인 폴백을 제거하고 코드를 단순화할 예정이지만, 지금은 해당 커밋이 현재 Discourse 설치 환경에서 상황을 조용히 유지해 주고 있습니다.

Community Building > Praise 채널에서 이 내용을 방금 발견해서 꽤 기술적인 내용이라 Development 채널로 옮겼습니다. 물론 칭찬은 감사히 받겠습니다! :hugs:

음, 이 주제를 다시 읽어보니 대학에 다닐 때 활동하지 않았고 코딩할 시간이 있었을 때 관련 PR을 하나 더 포함시키지 않았다는 걸 깨달았어요.