[유료 작업] 주제 뷰 직렬화기용 Discourse 플러그인 요구 사항

어떤 작업을 원하시나요?

RE: https://community.unix.com/

Discourse로의 마이그레이션을 방금 완료했지만, 20년 간의 레거시 코드가 있으며 회원들이 이를 자랑스럽게 여기고(그리고 많은 노력을 기울였습니다) 있으므로 2021년까지 기존 포럼에 접근할 수 있도록 유지할 예정입니다.

마이그레이된 코드의 무결성을 주기적으로 확인하고 싶은 스태프를 위해, topic_custom_fields에서 value를 분리하여 정수(레거시 포럼 스레드 ID)만 TopicViewSerializer에 추가하는 작은 플러그인을 원합니다. 이렇게 하면 JSON 직렬화기에 다음 추가 키-값 쌍이 포함됩니다:

"import_id" : <thread_id_of_legacy_forum>

아래 쿼리를 예시로 참고해 주시면, 이 Discourse topic_id에 대해 TopicViewSerializer에 추가되는 값은 다음과 같습니다:

"import_id": 284071
postgres=# \c discourse
You are now connected to database "discourse" as user "postgres".
discourse=# select * from topic_custom_fields where name like '%import_id%' and topic_id = 377947;
   id   | topic_id |   name    |     value     |         created_at         |         updated_at         
--------+----------+-----------+---------------+----------------------------+----------------------------
 239520 |   377947 | import_id | thread-284071 | 2020-04-22 03:20:03.968513 | 2020-04-22 03:20:03.968513
(1 row)

이 속성을 다음과 같은 템플릿 컴포넌트에서 사용하고자 합니다:

{{import_id}}

topic-category plugin-outlet용 작은 <span> 템플릿 컴포넌트가 필요하며, 다음과 같은 형태(지정한 신뢰 수준(trust level)의 사용자만 볼 수 있음)로 보이길 원합니다:

<span class='import-id'>Legacy Forum Thread <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>

언제까지 완료되길 원하시나요?

앞으로 몇 주 내로 언제든 괜찮습니다. 큰 조급함은 없습니다.

이 작업을 위해 제안하실 예산(USD)은 얼마인가요?

이 작은 플러그인에 대한 합리적인 견적이라면 모두 환영합니다.

추가 정보

비슷한 마이그레이션을 수행한 모든 사람에게 이 코드를 자유롭게 공개할 계획입니다. 하지만 다른 레거시 포럼은 레거시 코드에 대해 이 정도로 높은 데이터 무결성 우려를 가지고 있지 않을 가능성이 크므로, 이 플러그인을 사용하는 포럼이 우리 포럼뿐일 수도 있습니다.

어제 이 요구 사항에 대해 “과도하게 복잡한” 그리고 아마도 “부정확한” 설명을 작성했었습니다. 따라서 위 설명이 더 간단하고 이해하기 쉽다고 생각합니다(희망합니다):

각주

이 작은 플러그인을 며칠 동안 직접 작업해 보았습니다. 제 첫 Discourse 플러그인 시도였는데, TopicViewSerializer에서 import_id 값이 계속 null로 반환되었습니다.

업데이트

조금의 도움과 지도 덕분에, 이 작업의 직렬화기(serializer) 부분은 이제 작동합니다.

3개의 좋아요

업데이트:

@spirobel 님의 따뜻한 코칭, 격려, 그리고 세심한 도움 덕분에 이 플러그인 개발이 순조롭게 진행되고 있습니다.

여전히 코드를 단계별로 작업 중이며, 완성 후 미래에 유사한 요구사항을 가진 마이그레이션 사용자들이 활용할 수 있도록 다듬어 제공할 예정입니다.

@spirobel 님은 정말 함께 일하기 좋으셨습니다. 대부분의 작업과 디버깅을 제가 직접 수행할 수 있게 해주면서도, 막히는 부분이 생길 때마다 팁, 코드, 초안 PR, 그리고 힌트를 제공해 주셨습니다.

@spirobel 님, 감사합니다!

6개의 좋아요

업데이트:

(알파 버전)을 막 완료하고 첫 번째 플러그인의 라이브 테스트를 시작했습니다.

상태:

  • 라이브 테스트 중

할 일(TODO)

  • 이 제 첫 Discourse 플러그인입니다. 레거시 포럼 링크가 컴포넌트에 하드코딩되어 있습니다. 이 부분을 설정 가능한 옵션으로 만들어야 합니다.
  • 현재 코딩은 Discourse 표준에 크게 못 미치므로, 시간이 지나면서 플러그인을 개선하여 코딩 수준을 "Discourse 표준"에 맞게 끌어올릴 것입니다.
  • 테스트가 완료되면 Customization > Plugin 카테고리에 게시글을 올릴 것입니다.

감사의 말

어제 저를 코칭해 주시고 시리얼라이저가 작동하도록 도와주며 기본 컴포넌트 구조를 세팅하는 데 도움을 주신 @spirobel님께 특별한 감사를 드립니다.

주의사항

모든 “비표준적이거나 나쁜 코딩” 관행은 전적으로 저의 책임입니다.

참고

이 레거시 포럼 정보는 포럼에서 신뢰 수준 4(trust level 4) 멤버에게만 표시(설정 가능)됩니다.

7개의 좋아요

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.