본문으로 이동

사용자:Hsl0/DiscussionRatings: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
Hsl0 (토론 | 기여)
편집 요약 없음
Hsl0 (토론 | 기여)
잔글편집 요약 없음
 
(사용자 2명의 중간 판 45개는 보이지 않습니다)
1번째 줄: 1번째 줄:
API에서 discussiontoolspageinfo 사용
* [[mw:Extension:DiscussionTools]] 사용 전제


= 구조 =
# 평가 대상이 될 이름공간을 정해둠. (문서에 자기 자신에 대한 평가 문단이 있는 문서의 이름공간과, 연결된 토론 문서에 평가 문단이 있는 문서의 이름공간을 구별함)
== h-게임 평가하기-(id) ==
# 사용자들이 평가를 남길 문단명을 정해둠.
h-(사용자1)-(id)
# 대상 이름공간에 평가 문단이 존재할 경우, 쉽게 평가할 수 있는 위젯을 해당 문단 제목 다음에 추가함. (위키텍스트에 존재하지 않고, 확장 기능이 렌더링 중 추가함. 원하면 위키텍스트로 추가 및 예외 설정 가능)
=== h-(문단)-게임 평가하기-(id) ===
# 대상 이름공간이 편집될 때, 수정된 문단 제목이 평가 문단 제목으로 정해진 것과 동일할 경우, DiscussionTools를 이용해 해당 문단에 포함된 각 하위 문단과 메시지를 집계함.
c-(사용자2)-(id)-게임 평가하기
# 집계한 평가 수를 VoteNY 호환 DB 테이블에 저장 (DB 테이블은 캐싱 역할만 하고 문서가 편집될 때마다 위키텍스트 내용을 기반으로 갱신됨)
c-(사용자2)-(id)
# SectionRatings에서 해당 데이터를 활용
:c-(사용자3)-(id)-(사용자2)-(id)
:c-(사용자3)-(id)


= 한계 =
== API: discussiontoolspageinfo ==
* 클라이언트 사이드 스크립트보다는 서버 사이드 확장기능이 더 유용하다. 각 게임별로 크롤링할 수 없다. action API 대신 사용할 수 있는 서버 사이드 API 필요 => [[mw:API:Calling internally]]
action API에서 action=discussiontoolspageinfo&prop=threaditemshtml 사용
 
ID는 다음과 같은 구조임.
* 문단: h-(제목)-(타임스탬프)
* 의견: c-(작성자)-(타임스탬프)
 
문단의 name은 다음과 같은 구조임.
* h-(작성자)-(타임스탬프)
 
하위에 속한 의견은 마지막에 -와 상위 요소가 문단일 경우 (제목)이, 상위 요소가 의견일 경우 (작성자)-(타임스탬프)가 ID에 붙음.
 
하위에 속한 문단은 제목과 타임스탬프 사이에 상위 문단의 (제목)이 붙고 앞뒤에 -로 나뉨.
 
뒤에 붙는 상위요소는 1단계 위까지만 붙음.
 
문단명이나 사용자명의 -에 주의할것.
 
문단명은 {{주석|escapeIDForLink|PHP: (static) MediaWiki\Parser\Sanitizer::escapeIDForLink / JS: mw.util.escapeIDForLink}} 처리됨.
 
타임스탬프는 밀리세컨드 단위까지의 ISO 8601 Zulu Time(예: {{#time: Y-m-d"T"H:i:s.000"Z"}}) 또는 년월일시분초를 구분자 없이 숫자만 이어붙인 형태(예: {{#time: YmdHis}})
 
=== 구조 예시 ===
<syntaxhighlight lang="wikitext">
== 게임 평가하기 ==
어쩌구 --[[사용자:사용자1|사용자1]] 2025년 1월 27일 (월) 17:07 (KST)
 
=== 하위 문단 ===
저쩌구 --[[사용자:사용자2|사용자2]] 2025년 1월 27일 (월) 17:07 (KST)
:이러쿵 --[[사용자:사용자3|사용자3]] 2025년 1월 27일 (월) 17:07 (KST)
</syntaxhighlight>
 
* h-사용자1-2025-01-27T08:07:28.000Z
* h-게임_평가하기-2025-01-27T08:07:28.000Z
** c-사용자2-2025-01-27T08:07:28.000Z-게임_평가하기
** h-사용자2-2025-01-27T08:07:28.000Z
** h-하위_문단-게임_평가하기-2025-01-27T08:07:28.000Z
*** c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
**** c-사용자3-2025-01-27T08:07:28.000Z-사용자2-2025-01-27T08:07:28.000Z
* h-사용자2-2025-01-27T08:07:28.000Z
* h-하위_문단-게임_평가하기-2025-01-27T08:07:28.000Z
** c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
*** c-사용자3-2025-01-27T08:07:28.000Z-사용자2-2025-01-27T08:07:28.000Z
 
== 설정 ==
* $wgDiscussionRatingsSelfRatedNamespaces: int(namespace id)[]
* $wgDiscussionRatingsTalkRatedNamespaces: int(namespace id)[]
* $wgDiscussionRatingsCommentIndentation: 'invisible'|'bullet'|'number'
 
== 인터페이스 메시지 ==
* DiscussionRatings-section: 문서 평가하기
* DiscussionRatings-section-''n'' (n: 이름공간 ID): {DiscussionRatings-section}
* DiscussionRatings-rating-1: 매우 나쁘다
* DiscussionRatings-rating-2: 나쁘다
* DiscussionRatings-rating-3: 보통이다
* DiscussionRatings-rating-4: 좋다
* DiscussionRatings-rating-5: 매우 좋다
 
== 고찰 ==
* 클라이언트 사이드 스크립트보다는 서버 사이드 확장기능이 더 유용하다. 각 게임별로 크롤링할 수는 없기 때문이다. action API 대신 사용할 수 있는 서버 사이드 API 필요 => [[mw:API:Calling internally]]
* [[/문단 통계|가끔씩 문단 이름이 다른 경우]]가 있다. {{주석|시스템 메시지 기능|미디어위키 이름공간과 int 파서 함수}}이나 틀을 활용해 통일할 필요가 있다.
*: 백괴게임 당시의 평론 문단과 현재 사용 중인 리버티게임의 평론 문단 제목이 다릅니다. 기존의 문단 제목은 현재 사용 중인 문단 제목으로 변경할 필요가 있습니다. --[[사용자:명진|명진]] ([[사용자토론:명진|토론]]) 2023년 9월 21일 (목) 16:33 (KST)
* API 활용이 부적합하다면 DiscussionTools 확장기능을 그냥 포크해서 토론 파싱부분을 베이스로 다시 만들면 된다.
* 토론란이 편집되지 않는 동안, 토론란을 분석해서 나온 평점을 캐싱해도 좋다.
** 토론란이 편집됐을 때, 게임 평가 문단이 수정됐을 경우, 평가를 집계해 VoteNY 호환 DB 테이블에 캐싱한다. 그러면 SectionRatings에서 해당 데이터를 활용한다.

2025년 1월 31일 (금) 22:30 기준 최신판

  1. 평가 대상이 될 이름공간을 정해둠. (문서에 자기 자신에 대한 평가 문단이 있는 문서의 이름공간과, 연결된 토론 문서에 평가 문단이 있는 문서의 이름공간을 구별함)
  2. 사용자들이 평가를 남길 문단명을 정해둠.
  3. 대상 이름공간에 평가 문단이 존재할 경우, 쉽게 평가할 수 있는 위젯을 해당 문단 제목 다음에 추가함. (위키텍스트에 존재하지 않고, 확장 기능이 렌더링 중 추가함. 원하면 위키텍스트로 추가 및 예외 설정 가능)
  4. 대상 이름공간이 편집될 때, 수정된 문단 제목이 평가 문단 제목으로 정해진 것과 동일할 경우, DiscussionTools를 이용해 해당 문단에 포함된 각 하위 문단과 메시지를 집계함.
  5. 집계한 평가 수를 VoteNY 호환 DB 테이블에 저장 (DB 테이블은 캐싱 역할만 하고 문서가 편집될 때마다 위키텍스트 내용을 기반으로 갱신됨)
  6. SectionRatings에서 해당 데이터를 활용

API: discussiontoolspageinfo[편집 | 원본 편집]

action API에서 action=discussiontoolspageinfo&prop=threaditemshtml 사용

ID는 다음과 같은 구조임.

  • 문단: h-(제목)-(타임스탬프)
  • 의견: c-(작성자)-(타임스탬프)

문단의 name은 다음과 같은 구조임.

  • h-(작성자)-(타임스탬프)

하위에 속한 의견은 마지막에 -와 상위 요소가 문단일 경우 (제목)이, 상위 요소가 의견일 경우 (작성자)-(타임스탬프)가 ID에 붙음.

하위에 속한 문단은 제목과 타임스탬프 사이에 상위 문단의 (제목)이 붙고 앞뒤에 -로 나뉨.

뒤에 붙는 상위요소는 1단계 위까지만 붙음.

문단명이나 사용자명의 -에 주의할것.

문단명은 escapeIDForLinkPHP: (static) MediaWiki\Parser\Sanitizer::escapeIDForLink / JS: mw.util.escapeIDForLink 처리됨.

타임스탬프는 밀리세컨드 단위까지의 ISO 8601 Zulu Time(예: 2025-02-17T08:40:00.000Z) 또는 년월일시분초를 구분자 없이 숫자만 이어붙인 형태(예: 20250217084000)

구조 예시[편집 | 원본 편집]

== 게임 평가하기 ==
어쩌구 --[[사용자:사용자1|사용자1]] 2025년 1월 27일 (월) 17:07 (KST)

=== 하위 문단 ===
저쩌구 --[[사용자:사용자2|사용자2]] 2025년 1월 27일 (월) 17:07 (KST)
:이러쿵 --[[사용자:사용자3|사용자3]] 2025년 1월 27일 (월) 17:07 (KST)
  • h-사용자1-2025-01-27T08:07:28.000Z
  • h-게임_평가하기-2025-01-27T08:07:28.000Z
    • c-사용자2-2025-01-27T08:07:28.000Z-게임_평가하기
    • h-사용자2-2025-01-27T08:07:28.000Z
    • h-하위_문단-게임_평가하기-2025-01-27T08:07:28.000Z
      • c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
        • c-사용자3-2025-01-27T08:07:28.000Z-사용자2-2025-01-27T08:07:28.000Z
  • h-사용자2-2025-01-27T08:07:28.000Z
  • h-하위_문단-게임_평가하기-2025-01-27T08:07:28.000Z
    • c-사용자2-2025-01-27T08:07:28.000Z-하위_문단
      • c-사용자3-2025-01-27T08:07:28.000Z-사용자2-2025-01-27T08:07:28.000Z

설정[편집 | 원본 편집]

  • $wgDiscussionRatingsSelfRatedNamespaces: int(namespace id)[]
  • $wgDiscussionRatingsTalkRatedNamespaces: int(namespace id)[]
  • $wgDiscussionRatingsCommentIndentation: 'invisible'|'bullet'|'number'

인터페이스 메시지[편집 | 원본 편집]

  • DiscussionRatings-section: 문서 평가하기
  • DiscussionRatings-section-n (n: 이름공간 ID): {DiscussionRatings-section}
  • DiscussionRatings-rating-1: 매우 나쁘다
  • DiscussionRatings-rating-2: 나쁘다
  • DiscussionRatings-rating-3: 보통이다
  • DiscussionRatings-rating-4: 좋다
  • DiscussionRatings-rating-5: 매우 좋다

고찰[편집 | 원본 편집]

  • 클라이언트 사이드 스크립트보다는 서버 사이드 확장기능이 더 유용하다. 각 게임별로 크롤링할 수는 없기 때문이다. action API 대신 사용할 수 있는 서버 사이드 API 필요 => mw:API:Calling internally
  • 가끔씩 문단 이름이 다른 경우가 있다. 시스템 메시지 기능미디어위키 이름공간과 int 파서 함수이나 틀을 활용해 통일할 필요가 있다.
    백괴게임 당시의 평론 문단과 현재 사용 중인 리버티게임의 평론 문단 제목이 다릅니다. 기존의 문단 제목은 현재 사용 중인 문단 제목으로 변경할 필요가 있습니다. --명진 (토론) 2023년 9월 21일 (목) 16:33 (KST)
  • API 활용이 부적합하다면 DiscussionTools 확장기능을 그냥 포크해서 토론 파싱부분을 베이스로 다시 만들면 된다.
  • 토론란이 편집되지 않는 동안, 토론란을 분석해서 나온 평점을 캐싱해도 좋다.
    • 토론란이 편집됐을 때, 게임 평가 문단이 수정됐을 경우, 평가를 집계해 VoteNY 호환 DB 테이블에 캐싱한다. 그러면 SectionRatings에서 해당 데이터를 활용한다.