Imported from dbtkdfhr/hwalro (
apps/simulation-service/src/main/java/com/hwalro/simulation/search/AGENTS.md). Install upstream withnpx skills add dbtkdfhr/hwalro --skill search. Copyright stays with the author.
๋ฐฐ์น ๊ฐ์ ์ ํ์(Layout Search) ์ง์นจ
- ๋ฐฐ์น ๊ฐ์ ์ ํ์์ ์๋ฃ๋ ๊ธฐ์ค ์๋ฎฌ๋ ์ด์ ํ๋๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฐฐ์น ๋ณ๊ฒฝ ํ๋ณด๋ฅผ ์์ฑํ๋ค.
- ์ค์ธก ๊ฒ์ฆ์ ์ ํ ์ฌํญ์ด๋ฉฐ ๊ธฐ๋ณธ์ ํ์ง ์๋๋ค(
StartStudyRequest.verify). ๊ฒ์ฆ์ด ํ์ ์๊ฐ์ ๋๋ถ๋ถ์ ์ฐจ์งํ๊ณ , ์ด๋ค ๋ฐฐ์น๋ฅผ ์ค์ ๋ก ๋๋ ค๋ณผ์ง๋ ์ฌ์ฉ์๊ฐ ์ ํ๋ ํธ์ด ์์ฐ์ค๋ฝ๊ธฐ ๋๋ฌธ์ด๋ค. ์ ํ์searches.budgetJSON์verify์ ์ ์ฅํ๋ฉฐ, ์ด ํ๋๊ฐ ์๋ ๊ธฐ์กด ํ์ "๊ฒ์ฆํจ"์ผ๋ก ์ฝ๋๋ค.- ๊ฒ์ฆํ ๋: ๋์ผ ์กฐ๊ฑด(๋์ผ seedยท์ธ์ยท์ขํยท์ํ ๊ตฌ์ญยท์ถ๊ตฌ)์ ์ค์ ์์ง ์คํ์ผ๋ก ๊ฒ์ฆํ ๋ค,
๊ธฐ์ค ๋๋น ์ค์ธก ๊ฐ์ ์ด ํ์ธ๋ ํ๋ณด(
EVALUATED)๋ฅผ ์ฐ์ ์ ์ํ๊ณ ์ค์ธก ๋ธํ๋ก ์์๋ฅผ ๋งค๊ธด๋ค. ๊ฐ์ ๋ฏธ๋ฌ(NOT_IMPROVED)๊ณผ ๊ฒ์ฆ ์คํจ(FAILED) ํ๋ณด๋ ์ฌ์ฉ์๊ฐ ๋ฐฐ์น์ ์ค์ธก ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ ์ ์๋๋ก ๋ณ๋ ๊ฒฐ๊ณผ๋ก ๋ฐํํ๋, ์ฑํ ๊ฐ๋ฅํ ๊ฐ์ ์์ผ๋ก ์ทจ๊ธํ์ง ์๋๋ค. - ๊ฒ์ฆํ์ง ์์ ๋: ํ๋ณด๋ฅผ
QUEUED๋ก ๋๊ณ ๊ทธ๋๋ก ์ ์ํ๋ฉฐ, ์์ง์ด ๋งค๊ธดcandidate_order๋ฅผ ์์๋ก ์ด๋ค. ์ค์ธก ์งํ์ "์์ง์ด ๊ฒ์ฆํ ๊ณต์ ์งํ"๋ผ๋ ํํ์ ๋ ธ์ถํ์ง ์๋๋ค. 2๋ผ์ด๋๋ ์ค์ธก์ผ๋ก ๊ฐ์ ๋ ๋ถ๋ชจ๋ฅผ ํ์ฅํ๋ ๋จ๊ณ์ด๋ฏ๋ก 1๋ผ์ด๋๋ง ๋๋ค.
- ๊ฒ์ฆํ ๋: ๋์ผ ์กฐ๊ฑด(๋์ผ seedยท์ธ์ยท์ขํยท์ํ ๊ตฌ์ญยท์ถ๊ตฌ)์ ์ค์ ์์ง ์คํ์ผ๋ก ๊ฒ์ฆํ ๋ค,
๊ธฐ์ค ๋๋น ์ค์ธก ๊ฐ์ ์ด ํ์ธ๋ ํ๋ณด(
- ์ ์ ์ข
๋ฃ๋ ๊ฒ์ฆ ์คํ์ ๊ฐ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๊ฒ์ฆ ๋ ๋ฐ์ ์์ง ๊ฒฐ๊ณผ(ํ์๋ผ์ธยทํํธ๋งต ์ฒญํฌ ํฌํจ)๋ฅผ
์ฌ์ฌ์ฉํด ์๋ฃ ์ํ์ ์ค์ ์๋ฎฌ๋ ์ด์
์ ์ฆ์ ์์ฑํ๊ณ
prepared_simulation_id๋ก ์ฐ๊ฒฐํ๋ค. ์ด ์๋ฎฌ๋ ์ด์ ์ ์๋ฎฌ๋ ์ด์ ๋ชฉ๋ก ์ต์์์๋ ๋์ค์ง ์๊ณ , ๋ฐ๋์ ๊ธฐ์ค ์๋ฎฌ๋ ์ด์ ํ ์๋ ๋ต๊ธ๋ก๋ง ๋ ธ์ถ๋๋ฉฐ ๊ฒฐ๊ณผ ํ๋ฉด๊น์ง ์ด๋ํ ์ ์๋ค. ์์ง ์คํ ์์ฒด๊ฐ ์คํจํ ํ๋ณด๋งsimulationsํ์ ๋ง๋ค์ง ์๋๋ค. - ํ์ํ๋ ๋ชจ๋ ์์น๋ ์์ง ์ฐ์ถ ๊ณต์ ์งํ๋ค. ํ๋ก์ ์ ์(
proxy_score)๋ ๋ด๋ถ ๋ญํน ์ ์ฉ์ด๋ฉฐ API ์๋ต์ ํฌํจํ์ง ์๋๋ค. - ๊ฒ์ฆ trial์ ์๋ฎฌ๋ ์ด์
์๊ฐ ์ํ์ ๊ธฐ์ค ๋ํผ ์๊ฐ์
abort-margin์ ๋ํ ๊ฐ์ผ๋ก ์ ํํ๋ค. ์ด ์ํ ์์ ์ ์ ๋ํผํ์ง ๋ชปํ ํ๋ณด๋ ์คํจ๊ฐ ์๋๋ผNOT_IMPROVED๋ก ์ฒ๋ฆฌํ๋ค. - ํ์์ ์ฅ์๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด๋ค. trial ๊ฒฐ๊ณผ๋ ๋๋๋ ์ฆ์ ๊ฐ๋ณ ํธ๋์ญ์ ์ผ๋ก ์ปค๋ฐํ๋ฉฐ, ํ์ ์ ์ฒด๋ฅผ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ง ์๋๋ค.
- ์๋น์ค ์ฌ์์ ์
RUNNINGํ๋ณด๋ ํ ๋ฒ ๋ ์๋ํ๋ค.attempt_count < 2์ด๋ฉด ํ๋ณด๋ฅผQUEUED๋ก ๋๋๋ฆฌ๊ณ trial์ ์ข ๋ฃ ํ์๋ฅผ ์ง์ด ๋ค ํ์ฑ ํ์์ ์ด์ด์ ์ฌ๊ฐํ๊ณ , ๋ ๋ฒ์งธ ์ค๋จ์ด๋ฉด trial์SERVICE_RESTARTED์คํจ๋ก ์ ๋ฆฌํ๊ณ ํ๋ณด๋ฅผFAILED๋ก ๋๋ค. ์ฌ์๋ ํ๋๋ฅผ ๋๊ธด ํ์์hasExhaustedRecoveryํ์ ์ผ๋ก ์คํจ ์ข ๋ฃํ๋ค. - ํ๋ณด ์ฑํ ์์๋ง
layout_versionsํ๊ณผ ์ ํ์ ์ผ๋ก ์๋ฎฌ๋ ์ด์ DRAFT๋ฅผ ๋ง๋ ๋ค. ์ด๋ DRAFT์parent_simulation_id๋ ๊ธฐ์ค ์๋ฎฌ๋ ์ด์ ์ด๊ณ ,layout_version_id๋ ์๋ก ๋ง๋ ์ฑํ ๋ฒ์ ์ด๋ผ ๋ถ๋ชจ์ ๋ค๋ฅด๋ค.simulations์ ๋ถ๋ชจ FK๊ฐparent_simulation_id๋จ์ผ ์ฐธ์กฐ์ธ ์ด์ ๋ค. - ์ฑํ ๊ฐ๋ฅํ ํ๋ณด ์ํ๋
EVALUATED์QUEUED๋ค. ๊ฒ์ฆํ์ง ์๋ ํ์์์๋ ์ฌ์ฉ์๊ฐ ๊ณ ๋ฅธ ํ๋ณด๋ฅผ ์ง์ ๋๋ ค๋ณด๋ ๊ฒ์ด ํ๋ฆ ์์ฒด์ด๋ฏ๋ก, ์ค์ธก์ ์ค๋น์ ์ ์ ๋ก ๋ ์ ์๋ค.