기존 이모지 태그가 작성기에 새로 보임; 게시 후 새 이모지 태그 사라짐

토픽 작성기에서 이모지 태그의 동작이 일관되지 않음을 발견했으며, 수정되지 않은 main 브랜치의 802125b979b5bb848a7cfc52409ef3176ffd4d82 커밋에서 이를 재현했습니다.

기존 이모지 태그의 경우, 태그 이름을 입력하면 기존 태그와 사용 횟수 대신 생성 옵션이 표시될 수 있습니다. 해당 옵션을 선택하여 게시해도 결국 기존 태그가 연결됩니다. 완전히 새로운 이모지 태그는 별개의 사례로, 작성기에서는 선택할 수 있지만 게시 후 사라집니다.

기존 태그 문제를 재현하는 방법:

  1. 😊와 같이 기존 이모지 태그와 더 자주 사용되는 다른 태그들이 있는 사이트를 사용합니다.
  2. 토픽 작성기를 열고 이모지 태그 이름을 입력합니다.
  3. 해당 태그가 반환되는 인기 태그 제한 범위를 벗어나면, 드롭다운 메뉴에 생성 옵션과 관련 없는 인기 태그만 표시되고 기존 태그의 사용 횟수는 표시되지 않습니다.
  4. 생성 옵션을 선택하고 게시한 뒤 새로고침을 합니다. 토픽에는 여전히 원래 태그 레코드가 사용됩니다.

격리된 브라우저 테스트에서 사용 횟수가 17인 기존 이모지 태그, 사용 횟수가 100인 관련 없는 태그, 그리고 검색 제한 값 1을 사용했습니다. 드롭다운에는 Create: '😊'와 popular x100이 표시되었으며, 게시 후 기존 이모지 태그가 올바르게 재사용되었습니다. 기존 😊 레코드가 없는 경우, 동일한 작업은 HTTP 200을 반환했지만 태그는 저장되지 않았습니다.

원인은 DiscourseTagging.clean_tag 함수에 있으며, 이 함수는 검색어 처리와 새 이름 저장 시 모두 사용됩니다. 이 함수는 이모지 문자를 제거합니다. 이로 인해 검색은 인기 결과로 폴백되지만, 새 이름을 정리하기 전에 원래 이름으로 기존 태그를 찾을 수 있으므로 저장은 여전히 가능합니다.

기존 Emoji.unicode_replacements 데이터에 의해 인식되는 완전한 이모지 그라프엠을 보존하는 작은 패치를 보유하고 있습니다. 이 패치는 기존 ASCII 필터링을 유지하고 비-이모지 텍스트에서 무효 문자를 제거합니다. 또한 현재 단어 경계 표현식이 😊-restricted와 같은 이모지로 시작하는 이름을 놓치기 때문에, 비활성화된 태그 제안이 이름의 앞부분과 일치하도록 허용합니다.

해당 패치는 두 개의 구현 파일을 수정하고 세 개의 테스트 파일에 회귀 테스트 커버리지를 추가합니다. 데이터베이스 마이그레이션, 프론트엔드 변경 사항, 새로운 API 또는 별도의 이모지 캐시를 추가하지 않습니다.

로컬 검증: 관련 백엔드 예제 572개와 브라우저 예제 8개가 통과했습니다. 브라우저 테스트는 기존 이모지 태그가 x17으로 표시되며, 게시 및 새로고침 후에도 해당 태그와 완전히 새로운 😊 태그가 모두 남아있는지 확인합니다.

업데이트 — 2026년 10월 23일

해결책은 PR #44994: FIX: Preserve emoji tags during search and saving으로 제출되어 리뷰 준비가 완료되었습니다.

포크 리포지토리의 전체 CI가 통과했습니다: 모든 10개 테스트 매트릭스 작업, 린팅, 그리고 라이선스 체크.

이번 실행을 위해 동일한 해결책을 포함하고 테스트 작업 타임아웃을 20/30분에서 90분으로 늘린 별도 검증 브랜치를 사용했습니다. 이는 이전 실행이 포크 러너에서 타임아웃되었기 때문입니다. 테스트 명령어, 매트릭스 및 단언문(assertions)은 변경되지 않았습니다. 타임아웃 조정은 업스트림 PR의 일부가 아닙니다. PR은 아직 병합되지 않았으며, 업스트림 CI는 유지보관리 승인을 기다리고 있습니다.

패치 브랜치:

관련 보고서 및 토론:

이러한 보고서는 이전의 이모지 태그 제한 사항을 설명합니다. 본 패치는 위에서 재현된 작성기 검색 및 저장 실패 문제를 해결하며, 모든 이모지 태그 문제를 해결한다고 주장하지는 않습니다.