2026.07.22 (์ˆ˜)

โœจ GPT-5.6 Sol์˜ ์š”์•ฝ ใ€€

๋ชธ ๊ธฐ๋ก UI๋ฅผ ๊ณ„์† ๊ณ ์น˜๋‹ค ๊ณผ๊ฑฐ ์ผ๊ธฐ๊ฐ€ ์ตœ์‹  ๊ตฌ์กฐ์™€ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ , schema_version ํ•˜๋‚˜๋กœ rendererยทschemaยทvalidator๋ฅผ ๊ฐ™์€ ๋ฒ„์ „์— ๋ฌถ์€ ๊ธฐ๋ก.

body_review ๋ฒ„์ „์€ ์žˆ์—ˆ์ง€๋งŒ ๋ Œ๋”๋Ÿฌ๊ฐ€ ์“ฐ์ง€ ์•Š์•˜๋‹ค

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

๊ทธ๋Ÿฐ๋ฐ ํ™”๋ฉด์„ ๊ณ„์† ๊ณ ์น˜๋‹ค ๋ณด๋‹ˆ ๋” ํฐ ๋ฌธ์ œ๊ฐ€ ๋ณด์˜€๋‹ค. front matter์—๋Š” ์ด๋ฏธ schema_version์ด ์žˆ์—ˆ์ง€๋งŒ, ์‹ค์ œ _includes/body-review.html์€ ๊ทธ ๊ฐ’์„ ๋ณด์ง€ ์•Š๊ณ  ์ตœ์‹  ๊ตฌ์กฐ๋ฅผ ๋ฐ”๋กœ ๋ Œ๋”๋งํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๋‚˜์ค‘์— ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊พธ๋ฉด ๊ณผ๊ฑฐ Daily Review๋„ ์ตœ์‹  renderer๋กœ ๋“ค์–ด์™€ ๊นจ์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

schema_version์œผ๋กœ vN renderer๋ฅผ ๋ฐ”๋กœ ์ฐพ๋Š”๋‹ค

body-review.html์—๋Š” ๋ฒ„์ „๋ณ„ case when์„ ๋Š˜์–ด๋†“์ง€ ์•Š์•˜๋‹ค. ์ˆซ์ž๋กœ ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ํŒŒ์ผ์„ ๋ฐ”๋กœ ๋ถ€๋ฅด๊ฒŒ ํ–ˆ๋‹ค.

{%- assign schema_version = review.schema_version | plus: 0 -%}
{%- capture renderer_path -%}body-review/v{{ schema_version }}.html{%- endcapture -%}
{% include {{ renderer_path }} review=review %}

v4๋ฉด body-review/v4.html, v100์ด๋ฉด body-review/v100.html๋กœ ๊ฐ„๋‹ค. v101๋ถ€ํ„ฐ ๋ง‰ํžˆ๋Š” ์ƒํ•œ๋„ ์—†๋‹ค. ํ•ด๋‹น ๋ฒ„์ „ ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ์žˆ์œผ๋ฉด ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์—ฐ๊ฒฐ๋˜๊ณ , ์—†์œผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์กฐ์šฉํžˆ ๋„˜๊ธฐ์ง€ ์•Š๊ณ  build๊ฐ€ ์‹คํŒจํ•œ๋‹ค.

rendererยทschemaยทvalidator๋ฅผ ๊ฐ™์€ ๋ฒˆํ˜ธ๋กœ ๋ฌถ์—ˆ๋‹ค

ํ™”๋ฉด๋งŒ ๋ฒ„์ „ํ™”ํ•˜๋ฉด ์ž…๋ ฅ ๊ฒ€์‚ฌ๊ฐ€ ๋‹ค์‹œ ์—‡๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๋ฒ„์ „์€ ์„ธ ํŒŒ์ผ์„ ํ•œ ๋ฌถ์Œ์œผ๋กœ ๊ฐ–๊ฒŒ ํ–ˆ๋‹ค.

_includes/body-review/v4.html
_project/blog-system/body-review-schemas/v4.yml
_project/blog-system/body-review-validators/v4.rb

๊ฒ€์‚ฌ๊ธฐ๋Š” ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ชจ๋“  vN์„ ์ฐพ์•„ ์„ธ ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†๊ฑฐ๋‚˜ renderer์˜ body-review--vN ํ‘œ์‹์ด ๋น ์ง€๋ฉด ์‹คํŒจํ•œ๋‹ค. ์ƒˆ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ๋‹ค์Œ ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฏธ ๊ณต๊ฐœ๋œ ๊ธ€์€ ์ž์‹ ์ด ์„ ์–ธํ•œ ๋ฒ„์ „์œผ๋กœ ๊ณ„์† ํ•ด์„ํ•œ๋‹ค.

v4์—๋Š” ๋‹น์žฅ ๊ฑฐ์Šฌ๋ฆฌ๋˜ ํ™”๋ฉด๋„ ๊ฐ™์ด ์ •๋ฆฌํ–ˆ๋‹ค. ์ ‘ํžŒ ์š”์•ฝ์€ ์˜ค๋Š˜๊ณผ ์ตœ๊ทผ 7์ผ์„ ์„œ๋กœ ๋‹ค๋ฅธ ํ–‰์œผ๋กœ ๋‚˜๋ˆด๊ณ , ํŽผ์นœ ์นด๋“œ๋Š” component ํญ์— ๋”ฐ๋ผ 3์—ด์—์„œ 2์—ด, ๋‹ค์‹œ 1์—ด๋กœ ๋ฐ”๋€๋‹ค. ๋ชธ ๊ธฐ๋ก๊ณผ ์ฝ”์นญ ํŒ์ •์€ ๊ฐ™์€ ๋ณ„์  include๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , UI ๋ฌธ๊ตฌ์™€ ์ ‘๊ทผ์„ฑ label๋„ ํ™œ์„ฑ ์–ธ์–ด๋ณ„ data์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

์ด์ œ ๋‹จ์ˆœํ•œ ๋ฌธ๊ตฌ๋‚˜ style ์ˆ˜์ •์€ v4 ์•ˆ์—์„œ ๊ณ ์น˜๋ฉด ๋œ๋‹ค. ๋ฐ˜๋Œ€๋กœ data shape๋ฅผ ๊นจ๋Š” ๋ณ€๊ฒฝ์ด๋ผ๋ฉด ์ƒˆ vN ๋ฌถ์Œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ตœ์‹  ํ™”๋ฉด์„ ๋งŒ๋“ค ๋•Œ ๊ณผ๊ฑฐ ์ผ๊ธฐ๊นŒ์ง€ ํ•œ๊บผ๋ฒˆ์— ๋‹ค์‹œ ๋œฏ์–ด๊ณ ์น  ํ•„์š”๊ฐ€ ์—†์–ด์กŒ๋‹ค.

๋Œ“๊ธ€ ๋‚จ๊ธฐ๊ธฐ