Custom Wizard Plugin ๐Ÿง™

์ปค์Šคํ…€ ์œ„์ž๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋กœ ๋ช‡ ๋ฒˆ ์ œ์ถœํ–ˆ๋Š”๋ฐ, ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์ฝ์€ ๋ฐ”๋กœ๋Š” Rails๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋˜๋ฐ, ์–ด๋–ค ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ChatGPT๋„ ์—ฌ๊ธฐ์„œ๋Š” ์ž์ฃผ ์‹คํŒจํ•˜๋”๋ผ๊ณ ์š”.

1๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š” :slight_smile:

6์›” 6~7์ผ ์ฃผ๋ง์— ์ ์šฉ๋œ Discourse Core์˜ ์ตœ์‹  ์—…๋ฐ์ดํŠธ์—์„œ ์•„ํ‚คํ…์ฒ˜ ๊ด€๋ จ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ discourse-custom-wizard ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ€ํŒ… ์‚ฌ์ดํด ์ „์ฒด๋ฅผ ์ถฉ๋Œ์‹œํ‚ค๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™” ๋ฏธ๋“ค์›จ์–ด ๋“ฑ๋ก ๋‹จ๊ณ„์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— /safe-mode ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ ค๊ณ  ํ•ด๋„ ์ „์—ญ 500 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Logster์—์„œ ํ™•์ธํ•œ ์ •ํ™•ํ•œ ์น˜๋ช…์  ์—๋Ÿฌ ์ถ”์  ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

ActionView::Template::Error (undefined method 'admin_stylesheets' for class DiscoursePluginRegistry)
lib/stylesheet/manager/builder.rb:199:in `Stylesheets::Manager::Builder#plugins_digest'

์ž์‚ฐ/์Šคํƒ€์ผ์‹œํŠธ ์ปดํŒŒ์ผ ๋‹จ๊ณ„(plugins_digest)์—์„œ Discourse ์ฝ”์–ด๊ฐ€ DiscoursePluginRegistry์˜ admin_stylesheets ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋งˆ๋„ ์ปค์Šคํ…€ ์œ„์ฆˆ๋“œ๊ฐ€ ๊ด€๋ฆฌ์šฉ ์Šคํƒ€์ผ์„ ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ํ™•์žฅํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ˜„์žฌ ์ฝ”์–ด ๊ฐ„์˜ ๋ถˆ์ผ์น˜๋กœ ์ธํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

app.yml์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™„์ „ํžˆ ์žฌ๋นŒ๋“œํ•˜๋ฉด ํฌ๋Ÿผ์ด ์ •์ƒ์ ์œผ๋กœ ๋ถ€ํŒ…๋˜๋ฏ€๋กœ, ์ถฉ๋Œ์ด ์œ„์ฆˆ๋“œ์˜ ํ†ตํ•ฉ ํ›…์— ๊ตญํ•œ๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ฝ”์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ/์Šคํƒ€์ผ์‹œํŠธ ํ›…์„ ์—…๋ฐ์ดํŠธํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

1๊ฐœ์˜ ์ข‹์•„์š”

์ €๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ์ผ์‹œ์ ์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ค‘๋‹จํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„์›€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„ ์•ˆ๋…•ํ•˜์„ธ์š”! ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ๋งค์ฒด๋ฅผ ํ†ตํ•ด ์ œ๊ฒŒ ์—ฐ๋ฝํ•ด ์ฃผ์‹  ๋ถ„๋“ค์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค์‹œ ์ •์ƒ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

9๊ฐœ์˜ ์ข‹์•„์š”

Discourse์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ์ดํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ํƒœ๊ทธ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•„๋“œ๋ฅผ ์„ค์ •ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ๋ฅผ ํŠน์ • ํƒœ๊ทธ ๊ทธ๋ฃน์œผ๋กœ ์ œํ•œํ•˜๊ณ , Tag Groups ์„น์…˜์—์„œ ํ•ด๋‹น ๊ทธ๋ฃน์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ „์—๋Š” ์ด ์„ค์ •์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ํƒœ๊ทธ ๊ทธ๋ฃน ๋‚ด์˜ ํƒœ๊ทธ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ํƒœ๊ทธ ๊ทธ๋ฃน์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ฌด ํƒœ๊ทธ๋‚˜ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ ๊ทธ๋ฃน์„ ์‚ญ์ œํ•˜๊ณ  ์ €์žฅํ•œ ๋’ค ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด ๋ณด์•˜์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํƒœ๊ทธ ๊ทธ๋ฃน์„ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Content ์„น์…˜์—์„œ ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์‹œ๋„ํ•ด ๋ณด์•˜์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ์ตœ๋Œ€ 5๊ฐœ๊นŒ์ง€ ์ œํ•œ๋˜์–ด ์žˆ์–ด ์ œ ๊ฒฝ์šฐ(5๊ฐœ ์ดˆ๊ณผ)์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ์ œ ํผ ์›Œํฌํ”Œ๋กœ๊ฐ€ ์™„์ „ํžˆ ๊นจ์ ธ ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ๋“œ๋กญ๋‹ค์šด์—์„œ ๋‹ค์ค‘ ์„ ํƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์˜ต์…˜์„ ์šฐํšŒ์ฑ…์œผ๋กœ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ฒดํฌ๋ฐ•์Šค ๊ทธ๋ฃน๋„ ์‹ค์งˆ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์šฐํšŒ์ฑ…์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด๋‚˜, ์ œ๊ฐ€ ๋ญ”๊ฐ€ ์ž˜๋ชป ์„ค์ •ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•ด ์กฐ์–ธํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์œผ์‹ ๊ฐ€์š”?

2๊ฐœ์˜ ์ข‹์•„์š”

์ œ์ธ, ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋ช‡ ๊ฐ€์ง€ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•ด์„œ ํ‘ธ์‹œํ–ˆ์–ด. ์—…๋ฐ์ดํŠธ ํ•ด๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์•Œ๋ ค์ค˜.

6๊ฐœ์˜ ์ข‹์•„์š”

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @angus. ๋ฐฉ๊ธˆ ์—…๋ฐ์ดํŠธ๋ฅผ ๋งˆ์ณค๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์žฌ๋นŒ๋“œํ•˜๋Š” ๊ณผ์ •์—์„œ ํ™”๋ฉด์— ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์•Œ๋ ค๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค:

[DEPRECATION] Template.error_mode= is deprecated. Use Environment#error_mode= instead. Called from /var/www/discourse/plugins/discourse-custom-wizard/plugin.rb:99:in 'block in Plugin::Instance#activate!'
[DEPRECATION] Template.register_filter is deprecated. Use Environment#register_filter instead. Called from /var/www/discourse/plugins/discourse-custom-wizard/plugin.rb:106:in 'block in Plugin::Instance#activate!'
I, [2026-07-22T09:33:52.756446 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile:build'
[assemble_ember_build] Node.js heap_size_limit is less than 2048MB. Setting --max-old-space-size=2048 and CHEAP_SOURCE_MAPS=1
[assemble_ember_build] No existing build info file found.
Fetching and extracting https://get.discourse.org/discourse-assets/2026.7.0-latest-6accc7b7/production.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 23.3M  100 23.3M    0     0  30.9M      0 --:--:-- --:--:-- --:--:--  184M
Prebuilt assets downloaded and extracted successfully.
[assemble_ember_build] Reusing existing core ember build. All done.
[DEPRECATION] Template.error_mode= is deprecated. Use Environment#error_mode= instead. Called from /var/www/discourse/plugins/discourse-custom-wizard/plugin.rb:99:in 'block in Plugin::Instance#activate!'
[DEPRECATION] Template.register_filter is deprecated. Use Environment#register_filter instead. Called from /var/www/discourse/plugins/discourse-custom-wizard/plugin.rb:106:in 'block in Plugin::Instance#activate!'
3๊ฐœ์˜ ์ข‹์•„์š”

ํ™•์ธํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ ์ง€ ๊ด€๋ฆฌํ•ด ์ฃผ์‹  ์ œ์ž‘์ง„์—๊ฒŒ ํฐ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. :folded_hands:

1๊ฐœ์˜ ์ข‹์•„์š”

์˜ค๋Š˜ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋ช‡ ๊ฐ€์ง€ ์ˆ˜์ • ์‚ฌํ•ญ๊ณผ ์—…๋ฐ์ดํŠธ๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด์‹œ๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

1๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ๊ฐ€ ๋ฌด๋ค์—์„œ ๋‘ ๋ฒˆ์ด๋‚˜ ๋˜์‚ด์•„๋‚ฌ๋„ค์š”.

์ž์ฒด ํ˜ธ์ŠคํŒ…๋œ Discourse ํฌ๋Ÿผ์—์„œ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด Wizard ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์‚ฌ์šฉ์„ฑ ์ธก๋ฉด์—์„œ๋Š” ๊ฝค ์ž˜ ์ž‘๋™ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋Ÿผ์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ๋œ ๊ฒƒ์ด 3์›” ์ดํ›„๋กœ ๊ฝค ์‹œ๊ฐ„์ด ์ง€๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์—, ์—…๋ฐ์ดํŠธ๋ฅผ ์š”์ฒญํ–ˆ๊ณ  ์—…๋ฐ์ดํŠธ๋„ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์—…๋ฐ์ดํŠธ ์ดํ›„๋กœ Wizard๊ฐ€ ์ด์ „์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค๋ช…์„ ๋“œ๋ฆฌ์ž๋ฉด,

๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด '์ƒˆ ์ฃผ์ œโ€™๋ฅผ ํด๋ฆญํ•˜์—ฌ Wizard์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜ ๊ณ„์ •์œผ๋กœ ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ '์ƒˆ ์ฃผ์ œโ€™๋ฅผ ํด๋ฆญํ•˜๋ฉด Wizard๋กœ ์ด๋™ํ•˜๋Š” ๋Œ€์‹ , ๊ฐ™์€ ํŽ˜์ด์ง€์—์„œ ๋ฐ”๋กœ ์ž‘์„ฑ๊ธฐ(composer)๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์›์ธ์€ ์ „ํ˜€ ๋ชจ๋ฅด๊ฒ ๊ณ , ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋ผ ์˜์ƒ ์—…๋กœ๋“œ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(ํ•˜ํ•˜). ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์งˆ๋ฌธ์ด ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋ฌผ์–ด๋ด ์ฃผ์„ธ์š”. ์ œ๊ฐ€ ์•„๋Š” ํ•œ ์ตœ๋Œ€ํ•œ ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, ํ•„์š”ํ•œ ์‹ ๋ขฐ ๋“ฑ๊ธ‰์ด ์—†์–ด์„œ ๊ทธ๋Ÿฌ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ€๋Šฅํ•ด์กŒ์œผ๋‹ˆ ์—ฌ๊ธฐ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

์™ผ์ชฝ ํƒญ์€ ๊ด€๋ฆฌ์ž/๋ชจ๋”๋ ˆ์ดํ„ฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ณ„์ •์ด๊ณ , ์˜ค๋ฅธ์ชฝ ํƒญ์€ ์ผ๋ฐ˜ ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ ์™œ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ, ๋„๋Œ€์ฒด ๋ฌด์Šจ ์ผ์ด๊ธธ๋ž˜ ์ด๋Ÿฌ๋Š” ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”, ํ˜•.

ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ฆฌ UI์˜ ๋ฌธ์„œ ๋งํฌ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์˜ค๋ฅ˜๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค:

https://pavilion.tech/products/discourse-custom-wizard-plugin/documentation/

์ด ์ฃผ์ œ์˜ ์›ํฌ์Šคํ„ฐ(OP)์— ๋”ฐ๋ฅด๋ฉด, ๋ฌธ์„œ๋Š” ๋‹ค์Œ ๋งํฌ์— ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค:

https://coop.pavilion.tech/docs?ascending=true&category=82&order=title

2๊ฐœ์˜ ์ข‹์•„์š”

ํ˜ธ๊ธฐ์‹ฌ์ด ์ƒ๊ฒผ๋Š”๋ฐ, @angus. ์ œ๊ฐ€ ๋ณด๋‚ธ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฒ„๊ทธ๋ฅผ ๋ณด๊ณ ํ•  ๊ณณ์ด ์žˆ๋‚˜์š”?

์•ˆ๋…•ํ•˜์„ธ์š” @Lebron, 8์›”์€ ํ•œ์‚ฐํ•œ ๋‹ฌ์ž…๋‹ˆ๋‹ค :sun: ์ด ๋ฌธ์ œ๊ฐ€ ์ฝ”์–ด discourse/discourse์˜ ๋‹ˆ์น˜ ์ปค์Šคํ…€ ํ•„๋“œ ์‚ฌ์ „ ๋กœ๋”ฉ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ PR์„ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค:

4๊ฐœ์˜ ์ข‹์•„์š”

LeBron James' Emotional Moment

๋„ˆ ๊ณ ๋งˆ์›Œ, ํ˜•. ๋จธ์ง€๋˜๊ณ  ๋””์Šค์ฝ”urses๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด ๊ทธ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ๊ฑฐ์•ผ. :face_holding_back_tears:

๋ถˆํ–‰ํžˆ๋„, ๋‹น์‹ ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ๋ณ‘ํ•ฉ๋œ ํ›„์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šคํƒœํ”„ ๊ณ„์ •์—์„œ๋Š” ์—ฌ์ „ํžˆ ์œ„์ž๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์œ„์ž๋“œ์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ €์žฅํ•œ ํ›„์—๋„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋นˆ ๋ฐ•์Šค๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ด์ƒํ•˜๋„ค์š”.

ํ˜น์‹œ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์„๊นŒ์š”?

์ด๊ฒƒ์€ ์ˆ˜๋งŽ์€ ์˜ต์…˜๋“ค์—์„œ๋„ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ˆ˜๊ฐ€ ์…€ ์ˆ˜ ์—†์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋ง์„ค์—ฌ ์™”์Šต๋‹ˆ๋‹ค.
์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฌธ์ œ๋Š” ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ๋งค์šฐ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ, UI์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ ์š”์†Œ๊ฐ€ ๊ฐ€๋” ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ €๋„ ๊ณต๊ฐํ•˜๊ณ , ์ •๋ง ์ข‹์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ธ๋ฐ ์ด๋Ÿฐ ์ƒํ™ฉ์ด๋‹ˆ ์Šฌํ”„๋„ค์š”. ์ €๋Š” ์ด์ œ ๋งˆ๋ฒ•์‚ฌ(wizards)๋ฅผ ์ƒˆ ์Šคํƒ์ธ Authentik, Formbricks, Discourse Workflows๋กœ ์˜ฎ๊ธฐ๋ ค ํ•ฉ๋‹ˆ๋‹ค. N8N๋„ ์ €์—๊ฒŒ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”.

์ด๊ฒƒ์€ ๋‹จ์ˆœํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ด์ƒ์˜ ์กด์žฌ์ด์ง€๋งŒ, ์œ ์ง€๋ณด์ˆ˜์ž๊ฐ€ ์ฝ”์–ด์™€ ๋™๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•  ์‹œ๊ฐ„์ด๋‚˜ ์ž์›์ด ์—†๋‹ค๋Š” ์ ์€ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋งก๊ธฐ๋ผ๊ณ  ์š”์ฒญํ•  ๋•Œ๊ฐ€ ๋œ ๊ฒƒ์ด ์•„๋‹๊นŒ์š”?

๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ณต์œ ํ•ด ์ฃผ์‹  @angus๋‹˜๊ป˜ ํฐ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์กด๊ฒฝํ•ฉ๋‹ˆ๋‹ค :folded_hands:

@Lebron ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ฝ”์–ด ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์กฐ์ •์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. ๋ฐฉ๊ธˆ ์ผ๋ฐ˜(๋น„์Šคํƒœํ”„) ์‚ฌ์šฉ์ž๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•ด ๋ณด์•˜๋Š”๋ฐ ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@Eviepayne @satonotdead ์—ฌ๋Ÿฌ๋ถ„, ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ธ๋ฐ€ํ•œ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ, Lebron์ด ๋ณด๊ณ ํ–ˆ๋˜ ๋น„๊ด€๋ฆฌ์ž ์ฃผ์ œ ์ƒ์„ฑ ๋ฌธ์ œ๊ฐ€ ์ด์ œ ์ˆ˜์ •๋œ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ œ๊ฐ€ ์ง์ ‘ ๋‹ค๋ฅธ ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ผญ ๋ณด๊ณ ํ•ด ์ฃผ์„ธ์š”!

1๊ฐœ์˜ ์ข‹์•„์š”

๋งˆ๋ฒ•์‚ฌ๋“ค์€ ์ž‘๋™ํ•˜์ง€๋งŒ, ํ•„๋“œ ์„ค์ •์€ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์„ค์ •ํ•œ ํ›„ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @angus.