가져온 사용자의 사용자 경험은 어떻게 되나요?

메일링 리스트에서 약 600개의 이메일 주소를 Discourse로 가져오는 것을 검토하고 있습니다. 목표는 Announcements 카테고리를 기본적으로 모든 사용자에게 구독(watch) 상태로 설정하여, 메일링 리스트의 주요 기능을 대체하는 효과를 내는 것입니다.

제 이해로는, 가져오기 과정(스크립트가 관여되며 개발자의 도움이 필요할 것 같습니다)에서 모든 가져온 사용자에게 Announcements 카테고리를 ‘Watching’ 상태로 강제 설정할 수 있다고 합니다. 이렇게 하면 사용자가 수동으로 구독을 해제하지 않는 한 모든 게시글에 대해 이메일을 definitely 수신하게 됩니다. 맞습니까?

더 명확하지 않은 점은 가져온 사용자들의 사용자 경험입니다. 각 사용자에게 계정이 생성되겠지만, 비밀번호를 설정하기 전까지는 로그인할 수 없다고 추정됩니다. 그리고 사이트에 처음 방문할 때 Discourse가 비밀번호 설정을 요구하게 되겠죠? 맞습니까?

그렇다면 사용자가 아예 비밀번호를 설정하지 않는 경우는 어떻게 될까요? (대부분은 이제 Mailman 계정을 가지고 있다는 사실을 인지하지 못하고 있으며, 별도의 계정을 만들어야 한다는 점에 대해 반발이 있었습니다. 한숨.) 사용자가 사이트를 방문하지도, 로그인하지도 않는다면, Announcements 카테고리의 주제 및 게시글에 대한 이메일을 여전히 수신할 수 있을까요?

이 작업을 수행해 보신 분들에게 질문드립니다. 가져오기 이후 어떤 종류의 지원 이슈를 처리해야 했나요?

감사합니다!

이미 해당 사용자들과 거래 관계를 맺고 있거나, 새로운 플랫폼으로 이전하는 중이라면, 사용자 생성 과정을 건너뛰는 방법이 있습니다. 이는 더 고급 관리자용이지만, 다음과 같은 명령줄(rails console) 아이디어가 작동할 수 있습니다:

u = User.new({username: 'testuser', email: 'testuser@example.com', name: 'Test User', trust_level: 2, password: SecureRandom.hex});
u.activate();
t = u.email_tokens.create(email: u.email);
Jobs.enqueue(:critical_user_email, type: :account_created, user_id: u.id, email_token: t.token);

경험상 이 방법은 제공한 세부 정보로 새 사용자를 생성하고, 이메일을 받을 수 있도록 계정을 활성화한 다음, Discourse 사이트에서 계정이 생성되었음을 알리는 이메일과 계정 설정 링크를 전송합니다:

Your Discourse Site Name에서 귀하를 위한 새 계정이 생성되었습니다.

새 계정의 비밀번호를 설정하려면 다음 링크를 클릭하세요:
https://discourse.example.org/u/password-reset/(randomdigits)

모든 새 사용자가 자동으로 이 카테고리를 '감시(Watching)'하도록 Announcements 카테고리를 설정해야 하며, 이는 사이트 설정 사항입니다.

감사합니다! 꽤 단순해 보이네요 (그리고 네, 이 사용자들은 제가 관리하는 목록에 있는 사용자들입니다. 그리고 저는 이들을 Mailman에서 다른 서비스로 옮기려고 하고 있습니다).

사용자들이 계정을 설정하지 않으면, 자동 관찰(Auto-Watching)되는 공지(Announcements) 카테고리로 이메일을 받을 때 어떤 일이 일어나는지 아시나요?

이 주제에 대해 나보다 더 잘 아는 분들이 여기 계실 수 있지만, u.activate(); 명령을 실행하기 때문에 이미 완전히 활성화된 상태이며, 이메일을 통해 하는 유일한 작업은 아무도 모르는 초기 랜덤 문자열 비밀번호를 변경하는 것뿐이라고 생각합니다.

비활성 사용자는 결국 이메일을 더 이상 받지 않게 된다는 개념이 있지만, "자동 관찰(auto-watched)"된 카테고리에는 이것이 해당되는지 확실하지 않습니다. 저는 주로 다이제스트/요약 수신자를 기준으로만 생각해 봤기 때문입니다. 다른 분들이 이 부분에 대해 답변해 주시면 좋겠습니다.

가져오기(Import)에 대해 또 하나 간단한 질문입니다. 시스템에 이미 사용자에게 할당된 이메일 주소를 가져오려고 하면 어떤 일이 일어나는지 아시나요? 그냥 건너뛰어질까요?

:man_shrugging:

일회성 주소를 사용해서 테스트를 해보는 게 좋을 것 같아.

그렇게 말할까 봐 걱정했어. Rails 콘솔 방식은 제 관리 능력으로 감당하기엔 훨씬 어려웠거든 (우리 VPS에는 Rails조차 설치되어 있지 않았고, 그 방식으로 600개의 주소를 가져오는 방법도 도무지 모르겠었으니까). 그래서 개발자를 불러서 확인해 달라고 해야 할 것 같아. 그에게 확인해 달라고 해볼게.

자체 호스팅한 Discourse 사이트에서 레일즈 콘솔에 액세스하는 방법은 다음과 같습니다:

ssh ....
cd /var/discourse
./launcher enter app
rails c

감사합니다! docker 데몬에 연결할 권한을 얻기 위해 세 번째 줄 앞에 sudu su를 추가해야 했는데, 그렇게 하니까 잘 작동해서 위에서 언급한 Rails 스크립트의 줄들을 실행하고 테스트 사용자를 생성할 수 있었습니다. 와!

그런데 이 스크립트를 600개의 이메일 주소 목록으로 확장하려면 어떻게 해야 할까요? 600번 실행하는 건… 좀 번거로운 것 같네요. :slight_smile:

600명의 사용자를 위한 그 한 줄을 포함하는 스크립트를 생성하거나, 데이터를 어떤 데이터 구조에 넣고 반복문을 돌리는 방식으로 구현했을 것입니다.

여기 아무도 Ruby 경험이 없어서, 모든 명령어를 하나의 큰 파일로 만들어 Rails 콘솔에 붙여넣는 방식으로 진행했습니다. 일단은 잘 동작하는 것 같지만, 첫 50건의 테스트 임포트 중 4건의 Sidekiq 오류가 발생했고, 이 오류들이 무엇을 의미하는지, 어떻게 처리해야 하는지 모르겠습니다. 사용자는 생성된 걸까요? 아니면 단순히 환영 이메일을 받지 못한 걸까요? 재시도가 실패하고 있으니, 이 오류들을 그냥 삭제하고 넘어가는 게 좋을까요?

그것을 확인하는 것이 좋을 것 같습니다.

user_id가 무효가 되는 상황이 어떻게 될 수 있는지 상상하기가 어렵습니다.

그렇습니다. 하지만 어떤 사용자가 실패했고 그 이유는 무엇인지 파악해야 합니다.
명령어를 붙여넣을 때 에러가 발생했나요? 만약 그 사실을 알 수 없다면, 현재 존재하는 사용자와 존재해야 한다고 기대하는 사용자를 비교하여 그 차이를 확인해야 합니다.

스크롤을 통해 이전 내용을 쉽게 되돌아볼 수 있는 수단이 없다면, 진행 상황을 더 쉽게 확인할 수 있도록 더 작은 배치로 작업하는 것이 좋습니다.

꽤나 시간이 지난 후에야 이 문제에 대해 통보를 받았기 때문에, 되돌아가서 확인하는 것이 불가능했습니다. 이러한 오류가 가져온 이메일 주소가 이미 시스템에 존재할 때 발생하는 것일 수 있습니다—이를 테스트해 볼 수 있습니다. 생성되기를 기대했던 모든 사용자는 생성되었습니다.

하지만 제가 이해할 수 없는 것은, 이 스크린샷의 정보와 Discourse에서 조회할 수 있는 어떤 정보 사이에 어떤 연결이 있는지입니다. email_tokens는 다른 정보와 연결할 수 있는 것인가요?

작은 배치로 계속 진행하면서 이 메시지 중 하나에 오류를 연결해 볼 수 있는지 확인해 보겠습니다.

결국 이 에러들은 가져오기(import) 과정에서 오류가 발생할 때마다 생성된 것이었습니다. 예를 들어, 사용자 이름이 20자를 초과하거나, 사용자 이름에 특수 문자가 연속으로 두 개 이상 사용된 경우, 또는 이메일이 이미 사용 중인 경우 등이 해당합니다(이 항목은 결과에 일관성이 없었습니다). 저는 각 문제를 수정한 뒤 진행했고, 마지막에 Sidekiq에서 모든 에러를 삭제했습니다.