Input Only Composition - kimjooyoon/meta-ontology-go GitHub Wiki

์ž…๋ ฅ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๊ณ  ๊ธฐ๋Œ€๊ฐ’์€ ๋‚˜์ค‘์— ํ™•์ธํ•˜๊ธฐ

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

์ด๋ฒˆ์—๋Š” ๋‚ด๋ถ€์— ์žˆ๋˜ ์ž…๋ ฅ ์ „์šฉ ์‹คํ–‰์„ body-compose --inputs ๋ช…๋ น์œผ๋กœ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ์‹คํ—˜์„ ์‹œ์ž‘ํ•  ๋•Œ ํ˜ธ์ถœ ์ •๋‹ต ํŒŒ์ผ์„ ๋จผ์ € ๋งŒ๋“œ๋Š” ๋‹จ๊ณ„๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

PR1426์€ ์›๋ณธ ์ „์ฒด CI 37934706536์˜ ํ•„์ˆ˜ ์—ฌ์„ฏ ๊ฒ€์‚ฌ์™€ v5 ์ฆ๊ฑฐ๋ฅผ ํ†ต๊ณผํ•ด dev 485ef8ed572882206d79680aa5ab87744e52738a์— ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์†Œ์Šค๋กœ ์„ค์น˜ํ•œ ๊ฐœ๋ฐœํŒ์—์„œ๋„ ์•„๋ž˜ ํ๋ฆ„์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. CIยท๋ณ‘ํ•ฉยท์„ค์น˜ ๊ด€์ธก.

์‹คํ–‰ํ•ด ๋ณด๊ธฐ

ํ˜„์žฌ ๊ณต๊ฐœ 0.6.23์˜ gooo๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์•ž์„  ๊ฐœ๋ฐœ ๊ด€์ธก์€ ์›๋ž˜ ๋ฆฌ๋น„์ „์œผ๋กœ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

gooo body-compose --source examples/scalar-identity/source.gooo.fixture \
  --entry Describe --inputs examples/composition-inputs/record.json \
  --model examples/scalar-identity/model/model.json --out out/observed-record

์ž…๋ ฅ ๋‘ ๊ฐœ์˜ ์‹ค์ œ ๊ฒฐ๊ณผ๊ฐ€ runtime.json์— ๋‚จ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž 9007199254740993, ํ•œ๊ธ€, ๋นˆ ๋ฌธ์ž์—ด, false, 0์„ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ์ƒ๋žตํ•˜๋ฉด ์†Œ์Šค์˜ ๊ณ ์ • ์ˆœ์„œ๋กœ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์•ˆ์˜ ์กฐ๋ฆฝ์šฉ ์‚ฌ๋ก€๋Š” ๊ณ„์† ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

gooo body-compose --source out/observed-record/original.gooo \
  --cases examples/scalar-identity/cases.json \
  --composition out/observed-record/composition.json

์ƒˆ ๋ชจ๋ธ ํ˜ธ์ถœ ์—†์ด ์ €์žฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ์กด ๋„ค ํ˜ธ์ถœ ์‚ฌ๋ก€๋กœ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ๋งŒ ๋ฐ”๊ฟ” ๊ด€์ธกํ•˜๋ ค๋ฉด --cases ๋Œ€์‹  --inputs๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ์ฝ๊ธฐ

๊ด€์ธก ํ•ด์„
์ž…๋ ฅ ์ „์šฉ ์‹คํ–‰ 0/0 ๊ธฐ๋Œ€๊ฐ’์„ ์ œ๊ณตํ•œ ์ˆ˜๊ฐ€ 0๊ฐœ, ์ •ํ™•๋„ ๋ฏธ์ธก์ •
UNKNOWN / NO_RUNTIME_EXPECTATIONS ์‹ค์ œ ๊ฐ’์€ ์–ป์—ˆ๊ณ , ํ˜ธ์ถœ ์ •๋‹ต์€ ์•„์ง ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์Œ
์†Œ์Šค ์กฐ๋ฆฝ ์‚ฌ๋ก€ 4/4, ํ•„๋“œ 12/12 ์†Œ์Šค์— ์„ ์–ธํ•œ ๋„ค ์กฐ๋ฆฝ ์‚ฌ๋ก€์˜ ๊ฒฐ๊ณผ
๋‚˜์ค‘์— ์ œ๊ณตํ•œ ํ˜ธ์ถœ ์‚ฌ๋ก€ 4/4 ๊ฐ™์€ ์ƒ์„ฑ๋ฌผ์ด ๊ธฐ์กด ๋„ค ํ˜ธ์ถœ ๊ธฐ๋Œ€๊ฐ’๊ณผ ์ผ์น˜
์ตœ์ดˆ ๋ชจ๋ธ ํ˜ธ์ถœ 1ํšŒ, ์žฌ์ƒ ์ƒˆ ํ˜ธ์ถœ 0ํšŒ ๋ชจ๋ธ ์‚ฌ์šฉ ๋‹น์‹œ ๊ธฐ๋ก๊ณผ ํ˜„์žฌ ์‹คํ–‰์„ ๊ตฌ๋ถ„

์ด ๊ด€์ธก์˜ ๋Œ€์ƒ์€ ๊ฐ™์€ ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ ํ•™์Šต ๋…ธ์ถœ์€ ๋ณ„๋„๋กœ ์•Œ๋ ค์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ„๋ชจ๋ฅผ ํ•˜๋‚˜์˜ ์ •ํ™•๋„๋กœ ํ•ฉ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ™œ๋™ ์—ฐ๊ฒฐ๊ณผ ๋ฐ˜๋ณต

joins.json ์˜ˆ์ œ๋Š” ๋…๋ฆฝ ์ž…๋ ฅ, ํ•ฉ๋ฅ˜, ๋ถ„๊ธฐ, ์ผ๋ถ€๋งŒ ์—ฐ๊ฒฐํ•œ ์—ฌ๋Ÿฌ ์ž…๋ ฅ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ™œ๋™์€ ์—ฐ๊ฒฐํ•œ ์ƒ์‚ฐ์ž์˜ ์‹ค์ œ ๊ฐ’์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์—ฐ๊ฒฐ๋œ ํฌํŠธ์˜ ๊ฐ’์„ ๋Œ€์‹  ์ง€์ •ํ•˜๋ฉด ํƒ€์ž… ๊ฒ€์‚ฌ ๋‹จ๊ณ„์—์„œ ๊ฑฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. --repeat 2์˜ ๋‘ ๋ฒˆ์งธ ์‹คํ–‰์€ ๊ฐ™์€ ์‹คํ–‰ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. nested helper์˜ ์ •์ฑ… ์ด์–ด๊ฐ€๊ธฐ์—๋„ ์ž…๋ ฅ ์ „์šฉ ๊ด€์ธก์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์ •๋‹ต์ด ์—†์–ด๋„ ์†Œ์Šค์˜ ์„ ํƒ ์กฐ๊ฑด๊ณผ ํ›„๋ณด ์ˆœ์„œ๋Š” ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

inputs.json์—๋Š” ์›๋ณธ ๋ฌธ์„œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด๊ด€ํ•˜๋ฉฐ, input_schema๋Š” ์‹คํ–‰ ๋ชจ๋“œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. --inputs, --cases, --case-series ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ž‘์—…์žฅ์˜ assemble ๋ช…๋ น์€ --cases๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์กฐ๋ฆฝ ๋ณธ๋ฌธ๊ณผ ์ถ”๊ฐ€ ๋ฃจํŠธ ์ž…๋ ฅ์„ ์ž‘์—…์žฅ ๋ฐ˜๋ก€ ๋ฃจํ”„๋กœ ์˜ฎ๊ธฐ๋Š” ์—ฐ๊ฒฐ์€ ๋‹ค์Œ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ ํ‚ค๋‚˜ ์—ฐ๊ฒฐ์„ ๋จผ์ € ํ™•์ธํ•˜๋ ค๋ฉด body-plan์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. native ์ƒ์„ฑ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ ๊ณ„ํš์—์„œ ํŽธ์ง‘ํ•  ์ž…๋ ฅ ์–‘์‹๊นŒ์ง€ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ํ•œ ์‚ฌ์šฉ ์›๋ฆฌ

Matt Pocock์˜ ์ž‘์€ ๋„๊ตฌ ๊ตฌ์„ฑ, Michael Lynch์˜ ๊ฐœ๋ฐœ ๊ธ€์“ฐ๊ธฐ, Carson Gross์˜ ์ƒ์„ฑ ์ฝ”๋“œ ์ดํ•ด์™€ ๋ณต์žก๋„ ๊ด€๋ฆฌ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ , ์›๋ž˜ ์˜๋„์™€ ์‹ค์ œ ๊ฐ’์˜ ํ๋ฆ„์„ ํ•จ๊ป˜ ์ฝ๋Š” ๋ถ€๋ถ„์„ Gooo์— ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์กฐ์‚ฌ์ผ๊ณผ ์›๋ฌธ ์ž‘์„ฑ์ผ์€ ๋ณ„๋„ ์—ฐ๊ตฌ ๊ธฐ๋ก์— ๋‚จ๊น๋‹ˆ๋‹ค.