사용자 이름의 대문자가 작성기에서 멘션 도달성 확인을 방해합니다

Private Topics Plugin - #109 by thoka 을 조사하던 중, 제한된 카테고리에서 대문자가 포함된 사용자명을 멘션할 경우 해당 멘션이 보고되지 않는다는 사실을 발견했습니다.

@SomeUser를 멘션하면 에디터가
/composer/mentions.json?names[]=SomeUser&topic_id=10728
을 요청하며, 결과로 사용자명이 소문자로 반환되고 user_reasons가 설정되지 않은 상태입니다.

소문자로 된 사용자명으로 쿼리를 실행하면 "user_reasons": {"someuser":"category"}가 반환됩니다.

컴포저에서 사용자명을 소문자로 입력하면, 권한이 부족한 사용자에 대한 경고가 표시됩니다.

에디터에서 제공하는 자동완성을 사용하면, 입력된 소문자 사용자명이 대문자 이름으로 대체되어 보고되지 않습니다.

3개의 좋아요

좋은 발견이네요 @thoka !

문제는 여기에 있습니다.

users{"username_lower" => User object }를 반환합니다.

하지만 name이 소문자로 변환되지 않으면 users[name]은 존재하지 않습니다.

수정 방법:

if user = users[name.downcase]
...nelsif group = groups[name.downcase]
...

아니면 더 좋은 방법은: 메서드 시작 부분에서 모든 이름을 소문자로 변환하는 것입니다. 여기에는 많은 문제가 있는데, groups.where("lower(name) IN (?)", @names.map(&:downcase))를 잘 수행하지만, visible_group_ids_for_allowed_check, topic_allowed_group_ids, mentionable_group_idsmembers_visible_group_ids와 같은 함수들은 모두 where(name: @names)를 사용하여 대소문자 구분 문제를 유발합니다.

3개의 좋아요

올바른 수정 방법은

이지만, 지금은 변경 사항이 너무 커서 머지하는 것이 부담스럽습니다 :grimacing:

대신, 리뷰를 더 쉽게 하고 위험을 줄이기 위해 각 "endpoints"를 하나씩 수정하겠습니다.

여기 첫 번째 단계입니다

7개의 좋아요

645cb014c0에서 102c93e2ea까지의 188개 커밋으로 discourse를 다시 빌드한 후, 마크다운 작성기에서 회귀(regression)로 보이는 문제를 발견했습니다.

이 경우 경고 메시지는 다소 오해의 소지가 있을 수 있지만, 제 커스텀 에이전트 @Forum_Research_Assis를 호출하려고 할 때마다 매번 나타납니다.

동영상 재현 자료에 따라 이 문제를 일관되게 재현할 수 있습니다.

해당 커밋에는 사용자가 AI 에이전트를 멘션할 때 우회하도록 하는 로직이 누락된 것으로 보입니다.

준비가 되시면 새로운 풀 리퀘트를 시작할 수 있지만, 제 유일한 GitHub 계정에는 이미 열린 풀 리퀘트가 하나 있습니다.

1개의 좋아요

내 "수정"으로 인해 AI 에이전트에서 이 문제가 드러난 것 같다 :thinking:

3개의 좋아요