<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Generation on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/ko/tags/generation/</link><description>Recent content in Generation on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Thu, 16 Apr 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/ko/tags/generation/index.xml" rel="self" type="application/rss+xml"/><item><title>hybrid-image-search-demo 개발 로그 #15 — 톤 카운트 제거, A/B 네이밍 정리</title><link>https://ice-ice-bear.github.io/ko/posts/2026-04-16-hybrid-search-dev15/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/ko/posts/2026-04-16-hybrid-search-dev15/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post hybrid-image-search-demo 개발 로그 #15 — 톤 카운트 제거, A/B 네이밍 정리" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;톤 카운트(tone_count) 시스템을 프로젝트 전반에서 완전히 제거하고, 생성 이미지를 A/B 두 벌로 깔끔하게 정리한 회차다. 백엔드 로직, DB 기존 데이터, 프론트엔드 UI까지 한꺼번에 손봐야 해서 커밋이 7개로 늘어났다. 배포 환경 이슈와 앵글/렌즈 전용 재생성 버그도 함께 수정했다.&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://ice-ice-bear.github.io/posts/2026-04-15-hybrid-search-dev14/" &gt;이전 글: hybrid-image-search-demo 개발 로그 #14&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="변경-요약"&gt;변경 요약
&lt;/h2&gt;&lt;h3 id="톤-카운트-제거--왜"&gt;톤 카운트 제거 — 왜?
&lt;/h3&gt;&lt;p&gt;기존에는 생성 시 톤(색조) 변형 장수를 &lt;code&gt;tone_count&lt;/code&gt;로 관리했다. 실제 사용해보니 A/B 두 벌이면 충분했고, 톤 장수 개념이 UI와 프롬프트를 불필요하게 복잡하게 만들고 있었다. 이번 회차에서 이를 전면 제거했다.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR
 A["기존: tone_count=N"] --&gt;|"제거"| B["A/B 두 벌 고정"]
 B --&gt; C["프롬프트 단순화"]
 B --&gt; D["UI 라벨 정리"]
 B --&gt; E["DB 마이그레이션"]&lt;/pre&gt;&lt;h3 id="db-마이그레이션-alembic"&gt;DB 마이그레이션 (Alembic)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;injection_reason&lt;/code&gt; 컬럼에 &lt;code&gt;_tone2&lt;/code&gt;, &lt;code&gt;_tone3&lt;/code&gt; 같은 접미사가 붙어 있던 기존 행들을 strip하는 마이그레이션을 추가했다. &lt;code&gt;app_utils.py&lt;/code&gt;의 파싱 로직도 접미사를 무시하도록 수정했다.&lt;/p&gt;
&lt;h3 id="백엔드-변경"&gt;백엔드 변경
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;app_utils.py&lt;/code&gt; — reason 문자열에 tone_count 접미사 붙이는 로직 제거, 파싱 시 접미사 strip&lt;/li&gt;
&lt;li&gt;&lt;code&gt;routes/generation.py&lt;/code&gt; — tone_count 파라미터 제거&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generation/injection.py&lt;/code&gt; — 톤 비율 관련 로직 제거&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generation/prompt.py&lt;/code&gt; — B 변형의 디테일을 강화하는 프롬프트 개선&lt;/li&gt;
&lt;li&gt;&lt;code&gt;routes/history.py&lt;/code&gt; — 히스토리 조회 시 톤 접미사 호환 처리&lt;/li&gt;
&lt;li&gt;&lt;code&gt;schemas.py&lt;/code&gt; — tone_count 필드 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="프론트엔드-변경"&gt;프론트엔드 변경
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;App.tsx&lt;/code&gt; — 톤 N장 배지 제거, A/B 네이밍으로 통일&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GeneratedImageDetail.tsx&lt;/code&gt; — 동일하게 톤 관련 라벨 제거&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api.ts&lt;/code&gt; — tone_count 파라미터 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="앵글렌즈-전용-재생성-수정"&gt;앵글/렌즈 전용 재생성 수정
&lt;/h3&gt;&lt;p&gt;앵글이나 렌즈만 바꿔서 재생성할 때 프롬프트가 제대로 구성되지 않던 버그를 수정했다. 속성 인젝션 없이 앵글/렌즈만 변경하는 케이스를 명시적으로 처리한다.&lt;/p&gt;
&lt;h3 id="배포-스크립트-수정"&gt;배포 스크립트 수정
&lt;/h3&gt;&lt;p&gt;EC2에서 &lt;code&gt;uv&lt;/code&gt; 바이너리가 &lt;code&gt;~/.local/bin&lt;/code&gt;에 설치되는데, deploy 스크립트의 PATH에 포함되지 않아 실패하던 문제를 수정했다.&lt;/p&gt;
&lt;h2 id="커밋-로그"&gt;커밋 로그
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: center"&gt;순서&lt;/th&gt;
 &lt;th style="text-align: center"&gt;범위&lt;/th&gt;
 &lt;th style="text-align: left"&gt;설명&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;1&lt;/td&gt;
 &lt;td style="text-align: center"&gt;db&lt;/td&gt;
 &lt;td style="text-align: left"&gt;기존 injection_reason 행에서 tone_count 접미사 strip하는 마이그레이션&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;2&lt;/td&gt;
 &lt;td style="text-align: center"&gt;gen&lt;/td&gt;
 &lt;td style="text-align: left"&gt;reason 문자열에 tone_count 접미사 붙이는 로직 제거&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;3&lt;/td&gt;
 &lt;td style="text-align: center"&gt;history&lt;/td&gt;
 &lt;td style="text-align: left"&gt;reason 파싱 시 tone_count 접미사 strip 처리&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;4&lt;/td&gt;
 &lt;td style="text-align: center"&gt;ui&lt;/td&gt;
 &lt;td style="text-align: left"&gt;톤 카운트 배지 제거, A/B 네이밍 적용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;5&lt;/td&gt;
 &lt;td style="text-align: center"&gt;ui&lt;/td&gt;
 &lt;td style="text-align: left"&gt;남은 &amp;lsquo;톤 N장&amp;rsquo; 라벨을 A/B로 교체&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;6&lt;/td&gt;
 &lt;td style="text-align: center"&gt;deploy&lt;/td&gt;
 &lt;td style="text-align: left"&gt;EC2에서 uv 경로를 PATH에 추가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: center"&gt;7&lt;/td&gt;
 &lt;td style="text-align: center"&gt;gen&lt;/td&gt;
 &lt;td style="text-align: left"&gt;톤 비율 전면 제거, 앵글/렌즈 전용 재생성 수정, B 변형 디테일 강화&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="인사이트"&gt;인사이트
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;점진적 제거가 안전하다&lt;/strong&gt; — tone_count를 한 커밋에서 다 지우지 않고, DB 마이그레이션 → 백엔드 로직 → 프론트엔드 순으로 나눠 진행했다. 각 단계에서 기존 데이터 호환성을 확인할 수 있었다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A/B가 N장보다 낫다&lt;/strong&gt; — 사용자 입장에서 &amp;ldquo;톤 3장&amp;rdquo; 같은 표현보다 &amp;ldquo;A / B&amp;quot;가 직관적이다. 선택지를 줄이는 것이 UX를 개선한다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;배포 환경과 개발 환경의 PATH 차이&lt;/strong&gt; — 로컬에서는 잘 되는데 EC2에서 실패하는 전형적인 케이스. deploy 스크립트에 PATH를 명시적으로 설정하는 습관이 필요하다.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>