#๋ฆฌํฌํธ ๋ช ๋ น (ko-KR)
์ฌ์ ์ค๋น์ registered-apps.json ์ค์ ์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
#report:translate
์์ง๋ ๋ฆฌ๋ทฐ JSON์ ํ๊ตญ์ด๋ก ๋ฒ์ญํฉ๋๋ค.
npm run report:translate -- --my-app <owner> ...node dist/translateReviews.js ...
#CLI ์ต์
--my-app(ํ์)--registered-apps-path--input-dir(๊ธฐ๋ณธ๊ฐ:data/{myAppId}/reviews)--output-dir(๊ธฐ๋ณธ๊ฐ:data/{myAppId}/reviews-ko)--target-lang(๊ธฐ๋ณธ๊ฐko)--provider(google-web|none, ๊ธฐ๋ณธ๊ฐgoogle-web)--overwrite(๊ธฐ๋ณธ๊ฐfalse)--concurrency(๊ธฐ๋ณธ๊ฐ4)--output text|json
#์์
npm run report:translate -- --my-app golden-horizon
#์ถ๋ ฅ
data/{myAppId}/reviews-ko/{competitor}.jsondata/{myAppId}/reviews-ko/.translation-cache.json
#report:analyze
๋ฒ์ญ ๋ฆฌ๋ทฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฝ์์ฑ ์ธ์ฌ์ดํธ ๋ฆฌํฌํธ๋ฅผ ์์ฑํฉ๋๋ค.
npm run report:analyze -- --my-app <owner> ...node dist/analyzeCompetitors.js ...
#CLI ์ต์
--my-app(ํ์)--registered-apps-path--input-dir(๊ธฐ๋ณธ๊ฐ:data/{myAppId}/reviews-ko, ์์ผ๋ฉดreviews/ํด๋ฐฑ)--output-dir(๊ธฐ๋ณธ๊ฐ:data/{myAppId}/reports)--include-self(๊ธฐ๋ณธ๊ฐfalse)--top-quotes(๊ธฐ๋ณธ๊ฐ3)--output text|json
#์์
npm run report:analyze -- --my-app golden-horizon
npm run report:analyze -- --my-app golden-horizon --include-self
#์ถ๋ ฅ
data/{myAppId}/reports/competitor-report.ko.mddata/{myAppId}/reports/competitor-report.ko.json- ์์ฑ๋๋ ๋งํฌ๋ค์ด ์ ๋ชฉ(H1)์
{myAppId} ๋ฆฌ๋ทฐ ๋ฆฌํฌํธํ์์ ๋๋ค.
#report:render-html
์ก์ ๋๋ธ ๋งํฌ๋ค์ด ๋ฆฌํฌํธ๋ฅผ ์ธํฐ๋ํฐ๋ธ HTML๋ก ๋ณํํฉ๋๋ค.
npm run report:render-html -- --my-app <owner> ...npm run report:render-html -- --allnode dist/renderReportHtml.js ...- HTML ๋ฌธ์ ์ ๋ชฉ(H1/
<title>)์{myAppId} ๋ฆฌ๋ทฐ ๋ฆฌํฌํธ(์๋ฌธ ๋ฆฌํฌํธ๋{myAppId} Review Report) ํ์์ผ๋ก ๊ณ ์ ๋ฉ๋๋ค. - ์์ฑ๋๋ HTML ์๋จ ์ผ์ชฝ์๋ ํ์ผ๋ก ์ด๋ํ๋
Home๋ฒํผ(/)์ด ํฌํจ๋ฉ๋๋ค. - ํํฐ๋ ์๋จ
ํํฐ๋ฒํผ์ผ๋ก ์ฌ๋ ๋ณ๋ ํจ๋์์ ๊ด๋ฆฌํฉ๋๋ค. - ์ข์ ํ๋ฉด์์๋ ํํฐ ํจ๋์ด ๋ฐํ ์ํธ๋ก ์ด๋ฆฝ๋๋ค.
- ์ข์ ํ๋ฉด์์๋ ๋ ธํธ ํจ๋๋ ์ฐ์ธก ์ฌ์ด๋๋ฐ ๋์ ๋ฐํ ์ํธ๋ก ์ด๋ฆฝ๋๋ค.
- ๊ฒ์์ ๊ธฐ๋ณธ
๐๋ฒํผ์ผ๋ก ํ์๋๋ฉฐ, ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ฒ์ ์ ๋ ฅ์ฐฝ์ด ํ์ฅ๋ฉ๋๋ค. - ์๋จ ์ปจํธ๋กค์ ํญ์ ๋ฐ๋ผ ํ์๋ฉ๋๋ค:
๋ฆฌ๋ทฐ์์๋ํํฐ์๋ ธํธ,๋ฆฌํฌํธ์์๋๊ทผ๊ฑฐ ํผ์น๊ธฐ/์ฐ์ ์์ ํํฐ์ ๋์ผํ๋ ธํธ๋ฒํผ(์ฌ์ด๋๋ฐยท๋ฐํ ์ํธ)์ด ํ์๋ฉ๋๋ค. - ์๋จ ๋ค๋น๊ฒ์ด์
์ํ๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐํ๋๋ฉฐ, ์๋ก๊ณ ์นจ ์์๋ ๋์ผํ UI ์ํ๊ฐ ์ ์ง๋ฉ๋๋ค.
tab(reviews|reports,review/raw,report/backlog๋ณ์นญ ํ์ฉ)q(๊ฒ์์ด)tags(๋ค์ค ์ ํ ํ๊ทธ, ์ฝค๋ง ๊ตฌ๋ถ)exclude(all|active|excluded)min100(100์ ์ด์ํ์ฑ ์1)orig(์์ด ๋ณด๊ธฐํ์ฑ ์1)page(๋ฆฌ๋ทฐํญ ํ์ฌ ํ์ด์ง)priority(๋ฆฌํฌํธํญall|must|should|could)
๋ฆฌํฌํธ์์๋ ๋ณด์กฐ ์ํ์ค(2๋จ)์ด ์จ๊ฒจ์ ธ ๋ค๋น๊ฒ์ด์ ์ด 1๋จ์ผ๋ก๋ง ํ์๋๋ฉฐ,๋ฆฌํฌํธ N/N์นด์ดํธ ๋ผ๋ฒจ์ ํ์ํ์ง ์์ต๋๋ค.๋ฆฌํฌํธ๋ ์ฑ๋ณ ์น์ ์ด ์๋ ์ ์ฒด ํตํฉ ๋ฐฑ๋ก๊ทธ ํ ์ด๋ธ๋ก ํ์๋ฉ๋๋ค.๋ฆฌํฌํธ์์๋ ์ฑ์ด ๋ฌ๋ผ๋ ๋์ผํ ๋ฐฑ๋ก๊ทธ ํญ๋ชฉ์ด๋ฉด ํ๋์ ํ์ผ๋ก ํตํฉํด ํ์ํฉ๋๋ค.- ๊ฐ ๋ฐฑ๋ก๊ทธ ํ์ ์ฑ ๋ชฉ๋ก์ 1์ค ํ
์คํธ๋ก ํ์๋๋ฉฐ, ๊ธธ๋ฉด ๋ง์ค์(
...) ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฆฌํฌํธ์์๋ ์ฐ์ ์์ ํํฐ(์ ์ฒด / MUST / SHOULD / COULD)๋ก ํ์ ๋น ๋ฅด๊ฒ ๊ฑธ๋ฌ๋ณผ ์ ์์ต๋๋ค.๋ฆฌํฌํธํ ์ด๋ธ์๋ ๋ณ๋๊ทผ๊ฑฐ์ปฌ๋ผ์ด ์์ผ๋ฉฐ,๊ทผ๊ฑฐ ์์ ํ์ดํ ๋ฒํผ์ผ๋ก ๊ทผ๊ฑฐ ํ์ ํผ์น๊ณ /์ ์ต๋๋ค.๊ทผ๊ฑฐ ์๋ ์๋ฌธ ์ธ์ฉ ๋ผ์ธ ์๊ฐ ์๋๋ผ,reviewId๊ธฐ์ค์ผ๋ก ์ค๋ณต ์ ๊ฑฐํ ๊ณ ์ ๋ฆฌ๋ทฐ ์๋ก ๊ณ์ฐ๋ฉ๋๋ค.- ๊ทผ๊ฑฐ ํ์ ํผ์น๋ฉด ํ๊ตญ์ด ๋ฌธ์ฅ๋ง ๊ธฐ๋ณธ ํ์๋๋ฉฐ(
KR:์ ๋์ฌ ์์),์์ธํ๋ณด๊ธฐ์์ ๋ฆฌ๋ทฐ ID/๋ฉํ/์๋ฌธ์ ํ์ธํ ์ ์์ต๋๋ค. - ๊ทผ๊ฑฐ ํ์ ํผ์น๋ฉด ํด๋น ๋ฐฑ๋ก๊ทธ ํญ๋ชฉ์ ๋งค์นญ๋ ๊ทผ๊ฑฐ ๋ฆฌ๋ทฐ๋ฅผ ์ํ๋ง ์์ด ์ ๋ถ ๋ ๋ํฉ๋๋ค.
๋ฆฌ๋ทฐ์์๋ ํด์ํ๊ทธ ํํฐ๋ฅผ#โค๏ธ / #์์ฒญ๊ธฐ๋ฅ / #๋ง์กฑ / #๋ถ๋ง์กฑ๋ค์ค ์ ํํ ์ ์๊ณ ,ํ๊ทธ ์ ์ฒด๋ก ์ด๊ธฐํํ ์ ์์ต๋๋ค.๋ฆฌ๋ทฐ์์๋ ํ์ฑ ์ํ ํํฐ๋ฅผ์ ์ฒด / ํ์ฑ / ๋นํ์ฑ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค(๊ธฐ๋ณธ๊ฐ์ ์ฒด).๋ฆฌ๋ทฐ์์๋100์ ์ด์ํ ๊ธ๋ก ๊ธด ๋ฆฌ๋ทฐ๋ง ๋น ๋ฅด๊ฒ ๋ณผ ์ ์์ต๋๋ค.ํํฐ ์ด๊ธฐํ๋ฒํผ์ผ๋ก ๊ฒ์/์ํ/ํ๊ทธ/๊ธธ์ด ํํฐ๋ฅผ ํ ๋ฒ์ ํด์ ํ ์ ์์ต๋๋ค.- ํํฐ ํจ๋์
์ ์ฒด ๋ฆฌ๋ทฐ ๋นํ์ฑ ๋ฆฌ์ ๋ฒํผ์ผ๋ก ๋ชจ๋ ๋ฆฌ๋ทฐ๋ฅผ๋นํ์ฑ์ํ๋ก ์ผ๊ด ์ ํํ๊ณ ํด์ํ๊ทธ๋ฅผ ์ด๊ธฐํํ ์ ์์ต๋๋ค. - ๋ฆฌ๋ทฐ ํํฐ ์ฌ์ด๋๋ฐ/๋ฐํ
์ํธ ํค๋์
ํํฐ๋ง ๋ฆฌ๋ทฐ ์/์ ์ฒด ๋ฆฌ๋ทฐ ์๊ฐ ์ค์๊ฐ์ผ๋ก ํ์๋ฉ๋๋ค. ๋ฆฌ๋ทฐํญ์ ํ์ด์ง๋ค์ด์ ์ ์ง์ํ๋ฉฐ ํ์ด์ง ํฌ๊ธฐ๋100๊ฐ/ํ์ด์ง๋ก ๊ณ ์ ๋ฉ๋๋ค.- ํ์ด์ง๋ค์ด์
์ ํ์ฌ ๊ฒ์/ํํฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์ํ๋ฉฐ, ํ์ด์ง๋ค์ด์
์์ญ์
ํํฐ๋ง ๋ฆฌ๋ทฐ ์/์ ์ฒด ๋ฆฌ๋ทฐ ์๊ฐ ํ์๋ฉ๋๋ค. ๋ฆฌ๋ทฐํญ์ ๊ฐ ์ฑ ํ ์ฐ์ธก ์นด์ดํธ๋ํํฐ๋ง ๋ฆฌ๋ทฐ ์/์ ์ฒด ๋ฆฌ๋ทฐ ์๋ก ํ์๋ฉ๋๋ค.- ์ ๋ชฉ ์๋ ์ปจํ ์คํธ ๋ธ๋ก์ ํญ์ ๋ฐ๋ผ ์ ํ๋์ด, ๊ฐ ํญ์ ํ์ํ ์ ๋ณด๋ง ํ์๋ฉ๋๋ค.
๋ฆฌํฌํธํญ ์ปจํ ์คํธ๋ ์นด๋ํ ํต๊ณ/๋ฉํ ์์ด, ๋ฐฑ๋ก๊ทธ ๊ฑด์ยท์ฐ์ ์์ ๊ท์น(ํด์ํ๊ทธ ๊ธฐ์ค)์ ๊ฐ๋จํ ํ ์คํธ๋ก ํ์ํฉ๋๋ค.๋ฆฌ๋ทฐํญ ์๋จ ์์ฝ ๋ธ๋ก์ ์นด๋ ์์ด ์ค๊ธ๋ก์ฑ ์,ํด์ํ๊ทธ ์ ์,ํ์ฑ ์ํ ์ ์๋ฅผ ํ์ํฉ๋๋ค.- ๋ฆฌ๋ทฐ ์นด๋์์
#โค๏ธ / #์์ฒญ๊ธฐ๋ฅ / #๋ง์กฑ / #๋ถ๋ง์กฑ,๋นํ์ฑ/ํ์ฑ์ ์ง์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. - ์ ๋ณ ๋ฆฌ๋ทฐ๋ ์นดํ
๊ณ ๋ฆฌ ์น์
๋์
์ ๋ณ ๋ฆฌ๋ทฐ (ํด์ํ๊ทธ ๊ธฐ๋ฐ)1๊ฐ ์น์ ์ผ๋ก ํ์๋ฉ๋๋ค. - ๋ฆฌ๋ทฐ ์นด๋์
์์ด์ด๊ธฐ/๋ซ๊ธฐ๋ ๋ถ๋๋ฌ์ด ํผ์นจ/์ ํ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋์ํฉ๋๋ค. - ํด์ํ๊ทธ๋ ์นด๋๊ฐ
ํ์ฑ์ํ์ผ ๋๋ง ์์ ํ ์ ์์ต๋๋ค. - ์๋จ ์ฐ์ธก ์ปจํธ๋กค์
๋ ธํธ๋ฒํผ์ด ์์ผ๋ฉฐ, ์ฐ์ธก ์ฌ์ด๋๋ฐ์์ ์ฑ ์ ๋ ํฐ๋ฅผ ์ ํํด ์ฑ ๋จ์ ๋ฉ๋ชจ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. - ๋ ธํธ ํจ๋์ ์ฑ ์ ๋ ํฐ์์ ํ์ฌ ์ ์ฉํ ์ฑ์ ์ ํํด ๋ฉ๋ชจ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ ธํธ ์ฌ์ด๋๋ฐ์๋ ์ ํํ ์ฑ์ ์คํ ์ด ๋งํฌ(App Store/Google Play)๋ง ํ์๋ฉ๋๋ค.
- ๋
ธํธ๋ ์๋ ์ ์ฅ๋์ง ์์ผ๋ฉฐ,
์ ์ฅ๋ฒํผ(๋๋Ctrl/Cmd + S)์ผ๋ก ์๋ ์ ์ฅํฉ๋๋ค. - ๋ฆฌ๋ทฐ ๋ทฐ๋ ์ฑ๋ณ ์ ์ฒด ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ(
data/{myAppId}/reviews-ko/*.json, ์์ผ๋ฉดreviews/*.json)๋ฅผ ํจ๊ป ๋ถ๋ฌ์ต๋๋ค.- ๋ฆฌํฌํธ ์ ๋ณ ๋ฆฌ๋ทฐ๋ ๊ธฐ๋ณธ
ํ์ฑ - ๋ฏธ์ ๋ณ ๋ฆฌ๋ทฐ๋ ๊ธฐ๋ณธ
๋นํ์ฑ์ํ๋ก ํฌํจ๋์ด ์๋ ํ๋ ์ด์ ๊ฐ๋ฅ
- ๋ฆฌํฌํธ ์ ๋ณ ๋ฆฌ๋ทฐ๋ ๊ธฐ๋ณธ
- preview ๋ชจ๋์์๋ ์นด๋ ์ํ์ ์ฑ ๋
ธํธ๊ฐ
data/{myAppId}/reports/preview-state.json์ ์ ์ฅ๋ฉ๋๋ค(์นด๋ ์ํ๋ ์ฆ์ ๋ฐ์, ๋ ธํธ๋ ์ ์ฅ ๋ฒํผ์ผ๋ก ๋ฐ์). preview-state.json์ v2 ์คํค๋ง(reviews.tags,reviews.excluded,appNotes)๋ง ์ฌ์ฉํฉ๋๋ค. ๊ธฐ์กดfavorite/notesํ๋๋ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ต๋๋ค.data/{myAppId}/icon.png๊ฐ ์กด์ฌํ๋ฉด HTML์ ์์ด์ฝ ๋ฉํ ํ๊ทธ(icon,og:image,twitter:image)๊ฐ ์๋ ๋ฐ์๋ฉ๋๋ค.
#CLI ์ต์
--my-app(--all๋ฏธ์ฌ์ฉ ์ ํ์)--all(๊ธฐ๋ณธ๊ฐfalse):data/{appId}/reports/competitor-raw-actionable.ko.md๊ฐ ์๋ ์ฑ ์ ์ฒด ์ผ๊ด ๋ ๋๋ง--registered-apps-path--input(๊ธฐ๋ณธ๊ฐ:data/{myAppId}/reports/competitor-raw-actionable.ko.md)--output(๊ธฐ๋ณธ๊ฐ:data/{myAppId}/reports/competitor-raw-actionable.ko.html)--all์--my-app,--input,--output๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
#์์
npm run report:render-html -- --my-app aurora-eos
npm run report:render-html -- --all
#์ถ๋ ฅ
data/{myAppId}/reports/competitor-raw-actionable.ko.html
#report:preview
localhost ํ๋ฆฌ๋ทฐ ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
-
๋์๋ณด๋ ๋ชจ๋: ์ฑ ๋ชฉ๋ก + ์์ฑ๋ ๋ฆฌํฌํธ ํ์ผ(
.html,.md,.json) ํ์ -
๋์๋ณด๋ ๋ชจ๋์์
data/{appId}/icon.png๊ฐ ์์ผ๋ฉด ์ฑ ์์ด์ฝ ํ์ -
๋ฆฌํฌํธ ํ๋ฉด ์๋จ๋
data/{appId}/icon.png๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์์ด์ฝ์ด ์์ผ๋ฉดappIdํ ์คํธ๋ก fallback -
๋์๋ณด๋ ๋ฐฐ๊ฒฝ์ ๋ทฐํฌํธ ์ ์ฒด ๋์ด๋ฅผ ์ฑ์ฐ๋๋ก ๋ ๋๋ง๋ฉ๋๋ค(์งง์ ์ฝํ ์ธ ์์๋ ๋ฐฐ๊ฒฝ์ด ๋๊ธฐ์ง ์์).
-
๋จ์ผ ํ์ผ ๋ชจ๋:
--file๋ก HTML 1๊ฐ ์๋น -
๋ฆฌ๋ทฐ ์นด๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
GET /api/preview-state/:appIdPUT /api/preview-state/:appId- ์ ์ฅ ํ์ผ:
data/{myAppId}/reports/preview-state.json
-
npm run report:preview -- [options] -
node dist/previewReport.js ...
#CLI ์ต์
--my-app(์ ํ): ๋์๋ณด๋ ํํฐ--registered-apps-path--file: ๋จ์ผ ํ์ผ ๋ชจ๋ ๊ฒฝ๋ก--data-dir(๊ธฐ๋ณธ๊ฐ:data/)--host(๊ธฐ๋ณธ๊ฐ:127.0.0.1)--port(๊ธฐ๋ณธ๊ฐ:4173)
#์์
npm run report:preview -- --port 4173
npm run report:preview -- --my-app aurora-eos --port 4173
npm run report:preview -- --file data/aurora-eos/reports/competitor-raw-actionable.ko.html --port 4173