토픽 작성기에서 이모지 태그 관련 일관되지 않은 동작을 발견했으며, 수정되지 않은 main 브랜치의 802125b979b5bb848a7cfc52409ef3176ffd4d82 커밋에서 이를 재현했습니다.
기존 이모지 태그의 경우, 그 이름을 입력하면 기존 태그와 사용 횟수 대신 생성(Creat) 옵션이 표시될 수 있습니다. 해당 옵션을 선택하여 게시해도 결국 기존 태그가 첨부됩니다. 완전히 새로운 이모지 태그는 별개의 사례로, 작성기에서는 선택할 수 있지만 게시 후 사라집니다.
기존 태그 문제를 재현하려면:
😊같은 기존 이모지 태그와 다른 더 자주 사용되는 태그가 있는 사이트를 사용하세요.- 토픽 작성기를 열고 이모지 태그 이름을 입력하세요.
- 해당 태그가 반환되는 인기 태그 제한 범위 밖에 있다면, 드롭다운에는 생성 옵션과 관련 없는 인기 태그만 표시되고 기존 태그의 사용 횟수는 표시되지 않습니다.
- 생성 옵션을 선택하고 게시한 뒤 새로고침을 하면, 토픽은 여전히 원래 태그 레코드를 사용합니다.
격리된 브라우저 테스트에서 사용 횟수가 17인 기존 이모지 태그, 사용 횟수가 100인 관련 없는 태그, 그리고 검색 제한 1을 사용했습니다. 드롭다운에는 Create: '😊'와 popular x100이 표시되었고, 게시 후 기존 이모지 태그가 올바르게 재사용되었습니다. 기존 😊 레코드가 없는 경우, 동일한 작업은 HTTP 200을 반환했지만 태그는 저장되지 않았습니다.
원인은 검색어 및 새 이름 저장에 모두 사용되는 DiscourseTagging.clean_tag에 있습니다. 이 함수는 이모지 문자를 제거합니다. 이로 인해 검색은 인기 결과로 폴백되지만, 새 이름을 정리하기 전에 원래 이름으로 기존 태그를 찾을 수 있어 저장은 성공할 수 있습니다.
기존 Emoji.unicode_replacements 데이터에 의해 인식되는 완전한 이모지 그래프엠을 보존하는 작은 패치를 준비했습니다. 이 패치는 기존 ASCII 필터링을 유지하고 비(非)이모지 텍스트에서 무효 문자를 제거합니다. 또한 현재 단어 경계 표현식이 😊-restricted와 같이 이모지로 시작하는 이름을 놓치므로, 비활성화된 태그 제안이 이름의 시작 부분에 일치하도록 허용합니다.
해당 패치는 두 개의 구현 파일을 변경하고 세 개의 테스트 파일에 회귀 테스트 커버리지를 추가합니다. 데이터베이스 마이그레이션, 프론트엔드 변경, 새 API 또는 별도의 이모지 캐시를 추가하지 않습니다.
로컬 검증: 572개의 관련 백엔드 예제와 8개의 브라우저 예제가 통과했습니다. 브라우저 테스트는 기존 이모지 태그가 x17으로 표시되고, 게시 및 새로고침 후에도 해당 태그와 완전히 새로운 😊 태그가 모두 남아있는지 확인합니다.
패치 브랜치:
관련 보고서 및 토론:
이러한 보고서는 이전의 이모지 태그 한계를 설명합니다. 이 패치는 위에서 재현된 작성기 검색 및 저장 실패를 해결하며, 모든 이모지 태그 문제를 해결한다고 주장하지는 않습니다.