Question Answer Plugin

이 문제는 QnA 주제뿐만 아니라 모든 주제에서 발생하고 있습니다. 모든 주제가 QnA인 ‘질문’ 카테고리를 가지고 있으며, 주제를 QnA로 만들려면 ‘질문’ 태그도 사용하고 있습니다.

다만, 지금은 동작이 약간 달라졌습니다. 정렬 순서가 부여되기 전에는 해당 게시글이 목록 맨 아래에 고정되어 있었지만, 지금은 여전히 순서가 어긋나 있지만 더 새로운 게시글이 그 아래에 위치하고 있습니다.

1개의 좋아요

@AJDurant 감사합니다.

우리 고객 중 한 명이 이 문제를 경험했기 때문에, 문제가 발생한 데이터셋을 자세히 살펴볼 수 있었습니다. 여기서는 QA 태그가 제거된 토픽이 처리되는 방식에 문제가 있을 수 있다고 생각합니다.

@mbcahyono와 제가 이 문제를 해결하기 위해 PR을 시작했습니다.

특정 토픽에 대해 이 문제를 해결하는 방법은 다음과 같습니다:

./launcher enter app
rails c
topic = Topic.find(<topic_id>) 
topic.posts.each { |p| p.update_columns(sort_order: p.post_number) }

서버에서 이 문제를 해결하는 데 더 많은 실질적인 도움이 필요하신 분은 제게 비공개로 연락해 주세요. 무료로 도움을 드릴 수 있습니다.

1개의 좋아요

늦게 답변드려 죄송합니다. 이번 주에 출장을 다녀왔습니다.

위 코드가 문제가 있는 개별 게시물을 수정하는 것을 확인했습니다.

또한, 다음 명령어를 실행해도 문제가 해결되지 않음을 확인했습니다.

rake "posts:reorder_posts[1234]"

모든 게시물에 대해 이 작업을 수행하는 방법이 있을까요? 기본적으로 모든 게시물을 반복하는 방식입니다.

그리고 rake posts:reorder_posts만 단독으로 실행했는데 작동하지 않나요? 먼저 다시 시도해 보세요.

그렇게 해도 작동하지 않는다면 다음을 실행해 보세요.

./launcher enter app
rails c
Post.update_all("sort_order = post_number")

문제의 원인을 파악했습니다. 이 문제는 8월에 도입되었습니다. 해당 사례에 대한 테스트와 함께 곧 수정 사항을 배포할 예정입니다.

2개의 좋아요

위 명령어를 실행했는데 다음과 같은 오류가 발생했습니다.

root@REMOVE-web-only:/var/www/discourse# rake posts:reorder_posts
rake aborted!
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "post_timings_unique"
DETAIL:  Key (topic_id, post_number, user_id)=(1567, 20, 3) already exists.
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.2.0/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.2.0/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mini_sql-0.3/lib/mini_sql/postgres/connection.rb:201:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mini_sql-0.3/lib/mini_sql/postgres/connection.rb:173:in `exec'
/var/www/discourse/lib/tasks/posts.rake:368:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/posts.rake:351:in `each'
/var/www/discourse/lib/tasks/posts.rake:351:in `block (2 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/lib/tasks/posts.rake:312:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => posts:reorder_posts
(See full trace by running task with --trace)

중복 키 오류를 확인하고 나서 이것이 더 큰 문제일 수 있다고 생각하여 두 번째 명령어는 실행하지 않았습니다.

이것은 이 문제와 무관하지만, 여기에서 수정을 막고 있는 DB 관련 문제인 것 같습니다. 곧 DM으로 연락드리고 별도로 디버깅하겠습니다.

2개의 좋아요

감사합니다 @angus, 이제 모든 것이 정상적으로 작동하는 것 같습니다 :smiley:

최신 릴리스를 실행 중이며 다음 오류가 발생합니다.

메시지 (49건 보고됨)

Job exception: uninitialized constant Jobs::QaUpdateTopicsPostOrder
Did you mean? Jobs::UpdateTopicPostOrder
Jobs::QAUpdateTopicsPostOrder

Backtrace

/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:284:in const_get' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:284:in block in constantize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in inject’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in constantize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/core_ext/string/inflections.rb:68:in constantize’
/var/www/discourse/app/jobs/base.rb:288:in enqueue' /var/www/discourse/app/jobs/onceoff/onceoff.rb:40:in block in enqueue_all’
/var/www/discourse/app/jobs/onceoff/onceoff.rb:37:in each' /var/www/discourse/app/jobs/onceoff/onceoff.rb:37:in enqueue_all’

문제로 인해 죄송합니다. 수정 중이며, 머지될 때까지 기다리고 있습니다:

1개의 좋아요

좋아요, 이 변경 사항이 병합되는 것을 기대하고 있고 수정 사항을 기다리고 있습니다. 즐거운 명절 보내세요.

카테고리 설정에서 찾을 수 있는 “QnA 일대다수(one-to-many) 형식” 설정의 역할은 무엇인가요?

1개의 좋아요

이 기능은 비추천(deprecated) 상태이며, 가까운 미래에 QnA 플러그인에서 제거될 예정입니다. 해당 기능은 이제 전용 플러그인으로 분리되었습니다.

2개의 좋아요

표를 어떻게 취소하나요? 옵션에 표를 취소할 수 있는 시간을 설정할 수 있는 항목이 있지만, 실제로 어떻게 취소하는지 방법을 찾지 못하겠습니다.

1개의 좋아요

이 플러그인이 실제로 사용되는 좋은 예시가 있을까요? 동작하는 모습을 보고 싶습니다!

노란색 “상표를 취소합니다” 텍스트를 선택하세요 - 아래 스크린샷을 참조하세요.

몇 가지 피드백 항목을 발견했습니다:

  1. 투표용 상단 아이콘이 다크 테마를 따르지 않습니다 (스크린샷 참조)
  2. 답변에 대한 댓글에서 내 플레어 위치가 어긋나 있습니다 (스크린샷 참조)
  3. 정보 버튼의 스타일링은 나쁘지 않지만 페이지의 나머지 부분과 잘 어울리지 않으며 수평 공간을 차지합니다. 다른 접근 방식, 예를 들어 오른쪽 위 모서리나 카테고리 및 태그 옆에 작은 텍스트 링크를 사용하는 것이 더 좋을 수도 있습니다?
  4. “상표를 취소합니다” 링크가 명확하게 링크로 보이지 않습니다
  5. qa trust level vote limits 관리자 설정은 기본적으로 선택 해제되어 있지만, 여전히 "신뢰 수준에 따른 최대 투표 수를 초과할 수 없습니다"라는 오류가 발생하는데, 이는 이해가 되지 않습니다?
  1. 첫 번째 게시물에는 ‘댓글’ 버튼만 있고, 답글에는 하단에 해당 버튼이 표시되지 않나요?

이것은 의도된 디자인인가요, 아니면 제 테마에 버그가 있는 건가요?

  1. 추천(Upvote) 버튼 정렬이 어긋나 있는 것 같습니다. CSS로 수정할 수 있을 것 같네요 (직접 시도해 보겠습니다).

감사합니다!

플러그인을 삭제하면 게시물의 정상적인 순서를 복구할 수 있을까요?

이전에 보고된 버그가 정말로 우리의 대화를 엉망으로 만들었습니다 :neutral_face:

네, 이 플러그인과 Solved 플러그인 사이에 충돌이 있는 것 같습니다. 즉, 스크린샷에 보이는 “해결됨” 요소와 관련이 있습니다. 이 플러그인은 아직 Solved 플러그인을 공식적으로 지원하지 않습니다.

네, 활성화된 카테고리에서 해당 플러그인을 비활성화하면 게시물들이 원래 순서로 돌아갑니다.

1개의 좋아요

이 플러그인을 만들어 주셔서 감사합니다! 한 가지 질문이 있는데, 플러그인을 삭제하면 콘텐츠에는 어떤 일이 일어나나요? 투표와 답글의 특수 정렬은 사라질 것이라는 점은 명확하지만, 각 답글에 달린 "답글"과 "댓글"은 어떻게 되나요? 그대로 남아 있을까요, 아니면 사라질까요?

이렇게 질문하는 이유는, 이 플러그인을 활용해 협업형 사용자 가이드를 작성하기 시작했기 때문입니다. 각 답글에 댓글을 달 수 있는 기능은 매우 편리합니다. 투표 기능도 유망해 보이지만, 의도하지 않은 부작용이 생겨서 이를 제거하고 싶다면 어떻게 될까요? 투표를 제거하기 위해 가이드 전체를 잃는 것은 아쉬울 것 같습니다.

최악의 경우를 가정해 보면, 플러그인은 그대로 두면서 CSS를 통해 투표 UI를 제거하는 방법도 있을 것 같습니다.

1개의 좋아요

훌륭한 질문입니다.

댓글과 답변은 단순히 다른 순서로 표시되는 게시물일 뿐입니다. 삭제되지 않고 그대로 유지됩니다.

플러그인을 제거하려면 카테고리 설정에서 “이 카테고리의 모든 주제를 QnA로 표시” 옵션의 체크를 해제하세요. 그러면 모든 게시물이 원래 순서로 복원됩니다.

예를 들어, 방금 try.thepavilion.io의 QnA 카테고리를 표준 순서(즉, 시간 순서)로 복원했습니다. (24시간 후 다시 변경됩니다.)

https://try.thepavilion.io/t/whats-it-like-to-be-a-bat/22

2개의 좋아요

음, 이걸 알게 되어 다행입니다. 플러그인을 시도해 보겠습니다. 만약 투표가 그 역할을 수행하지 못하면, 이를 제거할 두 가지 옵션이 있습니다: CSS를 통한 가벼운 방법과 플러그인을 비활성화하는 강력한 방법입니다. 콘텐츠는 전혀 손실되지 않습니다. Discourse의 핵심 구성 요소를 훌륭하게 적용하셨네요!

참고로, 궁금하시다면 말씀드리겠습니다. 저희는 이 플러그인을 사용하여 제품의 협업형 비디오 가이드를 만들고 있습니다. 사람들이 이 제품의 다양한 측면에 대해 만든 비디오를 링크하도록 초대하는 방식입니다. 작동하도록 몇 가지 라벨을 사용자 지정했습니다. Bitwig Video Guide - Bitwish (방금 시작했기 때문에 대부분 비어 있으며, 또한 대부분의 하위 카테고리가 음소거되어 있어匿名用户에게는 더 비어 보일 수 있습니다).

3개의 좋아요