어떤 작업을 원하시나요?
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) 부분은 이제 작동합니다.

