Language Tour - kimjooyoon/meta-ontology-go GitHub Wiki

์–ธ์–ด ๋‘˜๋Ÿฌ๋ณด๊ธฐ

์—…๋ฐ์ดํŠธ: 2026-10-04.

Gooo๋Š” ๋Œ€์ƒ๊ณผ ์ž‘์—…์˜ ์˜๋ฏธ๋ฅผ ์„ ์–ธํ•˜๊ณ , ๊ทธ ์„ ์–ธ์—์„œ ๊ตฌ์กฐ์™€ ๊ณ„์‚ฐ ๋ฐ”๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„ ์–ธ์€ ์กฐ๋ฆฝ ์„ค๊ณ„๋„์ด๊ณ  ์•ˆ์ •์  ID๋Š” ๋ถ€ํ’ˆ์˜ ์ด๋ฆ„ํ‘œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Entity์™€ ์•ˆ์ •์  ID

entity Order id "billing://entity/order"

Order๋Š” ์ฝ๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. billing://entity/order๋Š” ์ฐธ์กฐ์™€ ๋ณ€๊ฒฝ ์ถ”์ ์— ์“ฐ๋Š” ์•ˆ์ •์  ์ •์ฒด์„ฑ์ž…๋‹ˆ๋‹ค. ํ‘œ์‹œ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์–ด๋„ ๊ฐ™์€ ๋Œ€์ƒ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ฃผ๋ฌธ ํ•œ ๊ฑด์˜ ์ƒ์„ฑ์€ ์‹คํ–‰ ๊ด€์ธก์—์„œ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

Activity์™€ ์ž…์ถœ๋ ฅ

activity PayOrder(Order, PaymentMethod) -> Payment

์ด ์„ ์–ธ์€ ๊ฒฐ์ œ ์ž‘์—…์ด ์ฃผ๋ฌธ๊ณผ ๊ฒฐ์ œ ์ˆ˜๋‹จ์„ ์‚ฌ์šฉํ•ด ๊ฒฐ์ œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์˜๋ฏธ ๊ตฌ์กฐ๋กœ ์˜ฎ๊ธฐ๊ณ  Go ๊ตฌ์กฐ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๊ฒฐ์ œ ํ˜ธ์ถœ์€ ๊ตฌํ˜„ ์Šฌ๋กฏ๊ณผ ์‹คํ–‰ ๊ณ„์•ฝ์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ž…๋ ฅ ์œ„์น˜, ์ถœ๋ ฅ ๊ด€๊ณ„์™€ ์—ฐ์‚ฐ ์ˆœ์„œ๋Š” ์˜๋ฏธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ •๊ทœํ™”ํ•  ๋•Œ๋„ ์ด ๊ตฌ๋ถ„์„ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๊ฒฐ์ œ ์˜ˆ์ œ.

ํ•จ์ˆ˜ ๋ฐ”๋””: ์กฐ๊ฑด, ๋ณ€์ˆ˜์™€ ๋Œ€์ž…

ํ˜„์žฌ์˜ ์‹คํ—˜์  ๋ฐ”๋”” ๊ฒฝ๋กœ๋Š” computes ๋ฌธ์ž์—ด์„ ํŒŒ์‹ฑํ•ด Go ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ €์žฅ์†Œ ์˜ˆ์ œ์˜ ์„ ์–ธ์ž…๋‹ˆ๋‹ค.

entity Integer id "bodycodegen://entity/integer"

activity ClampBelowZero(Integer) -> Integer computes "let value = input\nvalue = input\nlet accepted = value >= 0\nif accepted { return value } else { return 0 }"

๋ฐ”๋””์—์„œ๋Š” let์œผ๋กœ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ , ๊ฐ’์„ ๋Œ€์ž…ํ•˜๊ณ , ์กฐ๊ฑด๋ฌธ์—์„œ ๋ถ„๊ธฐํ•ด returnํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฐฐํฌ์˜ ์กฐ๊ฑด๋ฌธ์€ else ์—†์ด ๋‹ค์Œ ๋ฌธ์žฅ์œผ๋กœ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IntegerยทBooleanยทText์™€ ๋ ˆ์ฝ”๋“œ ์ž…๋ ฅยท๊ฒฐ๊ณผ, ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ž…๋ ฅ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœยท๋ฐ˜๋ณต๋ฌธยท์™ธ๋ถ€ ํšจ๊ณผ๋Š” ๋‹ค์Œ ์‹คํ–‰ ๋ฒ”์œ„ ํ™•์žฅ์— ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ๊ณผ ์‹คํ–‰ ๋ช…๋ น ยท ์—ฌ๋Ÿฌ ์ž…๋ ฅ ยท ๊ธฐ๋ก๊ฐ’.

์กฐ๋ฆฝ ๊ณ„ํš์—์„œ ์‹ค์ œ ๋กœ์ง ์„ ํƒํ•˜๊ธฐ

์—ฌ๋Ÿฌ ํ™œ๋™์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” bind Assemble.result -> Clamp.input์ฒ˜๋Ÿผ ๊ฒฐ๊ณผ์™€ ์ž…๋ ฅ์„ ๋ช…์‹œ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. body-compose๋Š” ๊ฐ ๋ณธ๋ฌธ์„ ์‹ค์ œ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค๊ณ  ํƒ€์ž…์— ๋งž๋Š” ์ง€์—ญ๊ฐ’์œผ๋กœ ๋‹ค์Œ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์‹œ์ž‘ ์ž…๋ ฅ๊ณผ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์—ฌ๋Ÿฌ ํ™œ๋™์— ์ „๋‹ฌํ•˜๋Š” ์˜ˆ์ œ, ์‹ค์ œ ๊ฐ’๊ณผ ์™„์ „์„ฑ ์ฝ๊ธฐ๋Š” ์กฐ๋ฆฝํ•œ ํ™œ๋™ ๋ณธ๋ฌธ ์—ฐ๊ฒฐยท์‹คํ–‰์— ์žˆ์Šต๋‹ˆ๋‹ค.

assembling์„ ํ™œ๋™์— ๋ถ™์ด๋ฉด ๋ณธ๋ฌธ๊ณผ ํ—ˆ์šฉ๋œ ์„ ํƒ, ํ•œ์˜ ์ง€์‹œ, ์œ ํ•œ ๊ธฐ๋Œ€๊ฐ’์„ ํ•œ ์„ ์–ธ์— ํ•จ๊ป˜ ๋‘ก๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋บ„์…ˆ์˜ ์ˆœ์„œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

activity Offset(Integer) -> Integer computes "return input - 2" assembling {
    choice "offset-order" operand_order at "0" intent "2์—์„œ ์ž…๋ ฅ์„ ๋บ€๋‹ค. Subtract input from two."
    case "-1" -> "3"
    case "4" -> "-2"
    attempts "2"
}

์ผ๋ฐ˜ ์ƒ์„ฑ ๋ช…๋ น์ด ์ด ์„ ์–ธ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ํƒ€์ž…์ด ์ •ํ•ด์ง„ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ์ƒ๋žตํ•˜๋ฉด ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ, ์„ ํƒ ์˜ˆ์‹œ์™€ ์‹ค์ œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜๋ˆ„์–ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ๋ฒ•ยท์‹คํ–‰ยท๊ด€์ธก ๊ฒฐ๊ณผ. ์„ ํƒ ํ›„์—๋Š” computes๊ฐ€ ํ˜„์žฌ ๊ตฌํ˜„, baseline์ด ์œ„์น˜์™€ ๋Œ€์•ˆ์„ ํ•ด์„ํ•  ์‹œ์ž‘ ๋ณธ๋ฌธ, picked๊ฐ€ ์„ ํƒ ๊ฒฝ๋กœ๋ฅผ ๋‹ด์Šต๋‹ˆ๋‹ค. body-realize๋Š” ๊ทธ ๊ด€๊ณ„์™€ ๊ด€์ธก์„ ์žฌ๊ตฌ์„ฑํ•ด ๋‹ค์Œ ์ƒ์„ฑ์— ์“ธ Gooo ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณตํ•œ ์˜ˆ์‹œ์˜ ์ถฉ์กฑ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ๊ฒฝ์šฐ์—๋„ ๊ทธ ์ˆ˜์น˜์™€ ๋ถ„๋ชจ๋ฅผ ํ•จ๊ป˜ ๋‚จ๊น๋‹ˆ๋‹ค.

Combined ์˜ˆ์ œ์˜ ์›๋ณธ์€ first = input + 2, second = input * 2๋ฅผ ๋งŒ๋“ค๊ณ  chosen = first๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ž… ๊ณ„ํš์—์„œ ์„ ํƒํ•  ์œ„์น˜์™€ ๋Œ€์•ˆ์„ ์„ ์–ธํ•˜๋ฉด, ์ƒ์„ฑ๊ธฐ๋Š” ํ—ˆ์šฉ๋œ ๋ณ€์ˆ˜ ์ฐธ์กฐ์™€ ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฅผ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๋ณธ์—์„œ ์ƒ์„ฑํ•œ ๋ฐ”๋””์˜ ํ•ต์‹ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ „์ฒด Go ํŒŒ์ผ์—๋Š” ์•ˆ์ •์  ID์˜ ์ƒ์„ฑ ์˜์—ญ marker๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

var first = (input + 2)
var second = (input * 2)
var chosen = second
if input < 0 {
    chosen = (chosen - 3)
} else {
    chosen = (chosen + 3)
}
return (chosen + (first + second))

์กฐ๋ฆฝ ๊ณ„ํš์˜ ์˜ˆ์‹œ ์ž…๋ ฅ์€ -3, 0, 3์ด๊ณ  ๋ณ„๋„ ์‹คํ–‰ ์ž…๋ ฅ์€ -4, 1, 4์ž…๋‹ˆ๋‹ค. ๋ณ„๋„ ์ž…๋ ฅ์—์„œ ๊ฐ๊ฐ -21, 10, 25๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Unrelated ํ™œ๋™์€ ์ด ์กฐ๋ฆฝ ๋Œ€์ƒ ๋ฐ–์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์ƒ์„ฑ ํŒŒ์ผ๊ณผ ๊ธฐ๋ก์€ ๊ณต๊ฐœ ์„ค์น˜ ๊ด€์ธก์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ค‘๊ฐ„ ํ‘œํ˜„๊ณผ ์ž‘์€ ๋ชจ๋ธ

์—ฌ๋Ÿฌ ์ค„ ๋ฐ”๋””๋ฅผ ๋ฐฑํ‹ฑ ์•ˆ์— ์ง์ ‘ ์“ฐ๋Š” ๋ฌธ๋ฒ• ์ˆ˜์ • #1190๋„ main eb8477d5์— ๋ณ‘ํ•ฉยท์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์ด์ค‘ ๋”ฐ์˜ดํ‘œ ํ˜•์‹๊ณผ ๊ฐ™์€ ํ•ด์„๊ฐ’์„ ์ƒ์„ฑํ•˜๋ฉฐ ์ค„๋ฐ”๊ฟˆ๊ณผ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. ์ •๊ทœ CIยท์ฆ๊ฑฐ๋ฅผ ๋…๋ฆฝ ํ™•์ธํ–ˆ๊ณ  ์„ค์น˜๋ณธ์˜ ์‹ค์ œ ๋ชจ๋ธยท๊ฒฐ์ •๋ก  ์‹คํ–‰๋„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์ž‘์„ฑํ•˜๊ธฐ ยท ์„ค์น˜ ์ƒํƒœ.

IR์€ ์›๋ณธ์„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋‹ค๋ฃจ๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋กœ ์˜ฎ๊ธด ์ค‘๊ฐ„ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค. ์กฐ๊ฑด, ๋ณ€์ˆ˜ ์ฐธ์กฐ, ๋Œ€์ž… ๋Œ€์ƒ๊ณผ ๋ถ„๊ธฐ๋ฅผ ๊ฐ๊ฐ ์กฐ๋ฆฝ ๊ฐ€๋Šฅํ•œ ๋ถ€ํ’ˆ์ฒ˜๋Ÿผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

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

์ž‘์—…์˜ ์ถœ์ฒ˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ด€๊ณ„

๊ด€๊ณ„ ์ฝ๋Š” ๋ฒ•
used ์ž‘์—…์ด ์–ด๋–ค ์ž…๋ ฅ์„ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€
wasGeneratedBy ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ค ์ž‘์—…์—์„œ ๋‚˜์™”๋Š”๊ฐ€
wasDerivedFrom ์–ด๋–ค ์›๋ณธ์—์„œ ํŒŒ์ƒ๋˜์—ˆ๋Š”๊ฐ€
wasAssociatedWith ์ž‘์—…์— ์–ด๋–ค ์ฃผ์ฒด๊ฐ€ ๊ด€์—ฌํ–ˆ๋Š”๊ฐ€

์ด ์–ดํœ˜๋Š” W3C PROV-O๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค. Agent๋Š” ๊ด€์—ฌํ•œ ์‚ฌ๋žŒยท์„œ๋น„์Šค ๊ฐ™์€ ์ฃผ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋ฉฐ, ์‹ค์ œ ์ธ์ฆ๊ณผ ์‹คํ–‰ ๊ถŒํ•œ์€ ๋ณ„๋„์˜ ๊ด€์ธก์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์ •์ฑ…๊ณผ ๋‹ค์Œ ์ž‘์—…

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

๊ฐ ๋ถ€๋ถ„์ด ๋งก๋Š” ์ผ

๋ถ€๋ถ„ ์—ญํ• 
Gooo ์„ ์–ธ ๋Œ€์ƒยท๊ด€๊ณ„ยท์ž‘์—…ยท๊ณ„์‚ฐยท์ •์ฑ… ์˜๋„
์˜๋ฏธ IR ์ •๊ทœํ™”๋œ ๊ตฌ์กฐ์™€ ์˜๋ฏธ ๋น„๊ต
๋ชจ๋ธ๊ณผ ๊ฒฝ๋กœ ๊ณ„ํš ํ—ˆ์šฉ๋œ ์กฐ๋ฆฝ ํ›„๋ณด์˜ ์ˆœ์œ„์™€ ํƒ์ƒ‰
์ƒ์„ฑ Go ๋Œ€์ƒ ์–ธ์–ด์˜ ๊ตฌ์กฐ์™€ ์ง€์›๋˜๋Š” ๋ฐ”๋””
๊ตฌํ˜„ ์Šฌ๋กฏ ์™ธ๋ถ€ ์—ฐ๋™๊ณผ ๋ณ„๋„์˜ ๊ตฌํ˜„ ๋กœ์ง
์‹คํ–‰ยท๊ด€์ธก ๊ธฐ๋ก ์ž…๋ ฅยท์ถœ๋ ฅยท์ถœ์ฒ˜ยท์‹คํŒจยท๋ฏธํ•ด๊ฒฐ ํ•ญ๋ชฉ

์•ž์œผ๋กœ ์ž์—ฐ์–ด์—์„œ ๊ณ„ํš์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋” ๋„“์€ ํƒ€์ž…๊ณผ ์กฐํ•ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „์‹œํ‚ค๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์‚ฌ๋ก€์™€ ๊ด€์ธก์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ยท ์‚ฌ์šฉ ํ๋ฆ„ ยท ํ˜„์žฌ ์ƒํƒœ