“리뷰 미디어” 체크(skip_review_media_groups 사이트 설정)는 포스트 생성 시점에만 NewPostManager에서 적용됩니다. 수정은 PostRevisor를 통해 이루어지며, 여기서 미디어 체크가 실행되지 않습니다. 따라서 사용자는 먼저 순수 텍스트만 게시(리뷰 통과)한 뒤, 수정을 통해 이미지를 추가할 수 있으며, 이렇게 하면 해당 포스트가 리뷰 대기열에 들어가지 않습니다.
더 큰 문제는, 수정이 editing_grace_period(기본값 5분) 내에 이루어지고 diff가 editing_grace_period_max_diff(기본값 100자 — 업로드된 이미지 마크다운 한 줄은 약 40~60자)보다 작을 경우, 수정 이력(revision)이나 연필 아이콘이 생성되지 않아 UI에서 우회가 완전히 보이지 않는다는 점입니다.
재현 방법
일반 사용자(예: TL0/TL1)가 면제되지 않도록skip_review_media_groups를 구성합니다. 미디어가 포함된 포스트는 승인이 필요해야 합니다.
일반 사용자로 텍스트만 포함된 포스트를 생성합니다. 정상적으로 승인/게시됩니다(미디어 없음 → 리뷰 불필요).
그레이스 피리어드 내에 포스트를 수정하여 업로드된 이미지를 삽입합니다.
기대 결과
(이제 미디어를 포함하게 된) 포스트는 리뷰 대기열로 전송되어야 하거나, 최소한 수정 시에도 포스트 생성 시와 동일한 미디어 체크가 적용되어야 합니다.
이 PR을 배포해 보았는데, 새 게시물과 편집 간의 미디어 검토 메커니즘에 비대칭이 있음을 발견했습니다. 이 문제를 제기하고자 합니다:
미디어가 포함된 새 게시물 — ReviewableQueuedPost (게시 전 검토)
게시물은 전혀 생성되지 않습니다. 콘텐츠는 승인될 때까지 검토 대기 페이로드에 머물러 있습니다.
작성자는 토픽 페이지에서 “승인 대기 중” 섹션(pending_posts)을 볼 수 있습니다.
게시물은 moderater가 승인한 후에야(perform_approve_post → PostCreator) 모든 사용자에게 표시됩니다.
거부 시 콘텐츠는 폐기됩니다 — 공개된 적이 없었기 때문입니다.
미디어를 추가하는 편집 — ReviewablePost (먼저 게시, 나중에 검토)
편집은 즉시 적용됩니다. 새 버전(이미지 포함)은 즉시 모든 사용자에게 표시됩니다.
작성자에게 “검토 중” 알림이 없습니다 — 그리고 유예 기간 내 편집의 경우 리비전이 생성되지도 않아 원래 콘텐츠가 UI에 흔적을 남기지 않습니다.
거부 시 게시물이 삭제됩니다(perform_reject_and_delete). 이전 리비전을 통해 복구할 수 있습니다.
우려 사항
현재 방식으로는 문제 있는 이미지가 moderater가 조치할 수 있기 전에 공개적으로 노출될 수 있으며, 검토 소요 시간에 따라 상당한 시간 동안 그럴 수 있습니다. 이는 skip_review_media_groups 설정의 본질을 약화시키는 것으로 보입니다. 해당 설정의 설명에는 미디어가 포함된 게시물이 "스태프 검토를 위해 전송된다"고 되어 있는데, 이는 그 사이에 공개되어서는 안 된다는 의미로 읽힙니다.
개선 제안
편집 내용을 적용하는 대신 대기열에 넣기. (이 방식이 더 좋다고 생각합니다) 편집이 새 미디어를 도입할 경우, 게시물은 변경되지 않은 상태로 유지하고, 작성자에게 새 편집이 검토 대기 중임을 알림하며, moderater가 승인한 후에야 편집된 내용을 게시물에 적용하고 — 거부 시 폐기합니다. 이는 새 게시물 동작과 최대한 유사하게 합니다. (구현 측면에서, 이는 새 게시물을 생성하는 대신 기존 게시물에 revise를 수행하는 승인 로직을 가진 검토 가능 변형체가 필요합니다.)
편집이 새 미디어를 도입할 때 게시물을 숨기기로, 작성자에게만 “승인 대기 중” 알림과 함께 표시되고, 승인 시 기존 perform_approve_and_unhide 작업을 사용합니다 — ReviewablePost 작업은 이미 이를 지원합니다.