๐ ๋ฐฐ๊ฒฝ
๋ค์ค ์ฅ์ ์ถ์ถ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด์ ์ฅ์ ์ ํ ๊ฒฐ๊ณผ์ ๊ธฐ์ค ํ๋๋ selected_places๊ฐ ๋์์ต๋๋ค.
๊ธฐ์กด selected_place๋ ๋จ์ผ ์ฅ์ ์ถ์ถ ์์ ์ API/DB ํธํ์ฑ์ ์ํด ์ ์งํ์ง๋ง, ๋ ์ด์ ํ์ ํธํ ํ๋๋ก ๋จ๊ฒจ๋ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋์ผํ ์๋ฏธ์ ๋ฐ์ดํฐ๊ฐ selected_places[0]์ selected_place์ ์ค๋ณต ์ ์ฅ๋์ด ์คํค๋ง์ ์๋ต ๊ตฌ์กฐ๊ฐ ๋ถํ์ํ๊ฒ ๋ณต์กํด์ง๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๐ฏ ๋ชฉํ
selected_place ๋จ์ผ ํ๋๋ฅผ ์ ๊ฑฐํ๊ณ , ์ฅ์ ์ ํ ๊ฒฐ๊ณผ๋ฅผ selected_places ๊ธฐ์ค์ผ๋ก ์ผ์ํํฉ๋๋ค.
API ์๋ต, DB ์คํค๋ง, repository/model/schema/test ์ ๋ฐ์์ selected_place ์์กด์ฑ์ ์ ๊ฑฐํฉ๋๋ค.
๐ ๏ธ ๊ตฌํ ๋ด์ฉ
processing.job_results ํ
์ด๋ธ์์ selected_place ์ปฌ๋ผ์ ์ ๊ฑฐํ๋ migration ์ถ๊ฐ
- job result ์ ์ฅ ๋ก์ง์์
selected_place insert/update ์ ๊ฑฐ
- job result ์กฐํ ๋ก์ง์์
selected_place read/deserialize ์ ๊ฑฐ
- domain model, API response schema์์
selected_place ํ๋ ์ ๊ฑฐ
- worker processor์์
selected_place = selected_places[0] ์์ฑ ๋ฐ ์ ๋ฌ ๋ก์ง ์ ๊ฑฐ
- API endpoint ์๋ต์์
selected_place ์ ๊ฑฐ
- ๊ด๋ จ ํ
์คํธ์์
selected_place ๊ฒ์ฆ ์ ๊ฑฐ ๋ฐ selected_places ๊ธฐ์ค์ผ๋ก ์์
- ๊ธฐ์กด ๋จ์ผ ์ฅ์ ์๋๋ฆฌ์ค๋
selected_places์ 1๊ฐ ํญ๋ชฉ์ด ๋ค์ด๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ ์ง
โ ๏ธ ๊ณ ๋ ค์ฌํญ
selected_place ์ ๊ฑฐ๋ API breaking change์ด๋ฏ๋ก, ํ์ฌ ํ๋ก ํธ ์ชฝ์์selected_places๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํ๋์ด ์๋์ง ํ์ธ ํ์
- ๊ธฐ์กด DB ๋ฐ์ดํฐ๋
003_add_selected_places_to_job_results.sql์์ selected_place๋ฅผ selected_places๋ก ๋ฐฑํํ๊ณ ์์ผ๋ฏ๋ก, ์ปฌ๋ผ ์ ๊ฑฐ ์ ์ ํด๋น migration์ด ์ ์ฉ๋์ด ์์ด์ผ ํจ
selected_places๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ์กด selected_place = null๊ณผ ๋์ผํ๊ฒ ๋น ๋ฐฐ์ด []๋ก ํํ
- ๋ํ ์ฅ์ ํ๋๊ฐ ํ์ํ ์๋น์ฒ๋
selected_places[0]๋ฅผ ์ฌ์ฉํ๋๋ก ์๋ด ํ์
โ
์๋ฃ ์กฐ๊ฑด
- DB migration์ผ๋ก
selected_place ์ปฌ๋ผ์ด ์ ๊ฑฐ๋จ
- API ์๋ต์์
selected_place ํ๋๊ฐ ๋ ์ด์ ๋ด๋ ค๊ฐ์ง ์์
- ์ ์ฅ/์กฐํ/worker/schema/domain ๋ก์ง์์
selected_place ์ฐธ์กฐ๊ฐ ์ ๊ฑฐ๋จ
- ๋จ์ผ ์ฅ์ ๋ฐ ๋ค์ค ์ฅ์ ์ถ์ถ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋
selected_places๋ก ์ ์ ๋ฐํ๋จ
- ๊ด๋ จ ํ
์คํธ๊ฐ
selected_places ๊ธฐ์ค์ผ๋ก ์์ ๋๊ณ ํต๊ณผํจ
๐ ๋ฐฐ๊ฒฝ
๋ค์ค ์ฅ์ ์ถ์ถ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด์ ์ฅ์ ์ ํ ๊ฒฐ๊ณผ์ ๊ธฐ์ค ํ๋๋
selected_places๊ฐ ๋์์ต๋๋ค.๊ธฐ์กด
selected_place๋ ๋จ์ผ ์ฅ์ ์ถ์ถ ์์ ์ API/DB ํธํ์ฑ์ ์ํด ์ ์งํ์ง๋ง, ๋ ์ด์ ํ์ ํธํ ํ๋๋ก ๋จ๊ฒจ๋ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋์ผํ ์๋ฏธ์ ๋ฐ์ดํฐ๊ฐselected_places[0]์selected_place์ ์ค๋ณต ์ ์ฅ๋์ด ์คํค๋ง์ ์๋ต ๊ตฌ์กฐ๊ฐ ๋ถํ์ํ๊ฒ ๋ณต์กํด์ง๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.๐ฏ ๋ชฉํ
selected_place๋จ์ผ ํ๋๋ฅผ ์ ๊ฑฐํ๊ณ , ์ฅ์ ์ ํ ๊ฒฐ๊ณผ๋ฅผselected_places๊ธฐ์ค์ผ๋ก ์ผ์ํํฉ๋๋ค.API ์๋ต, DB ์คํค๋ง, repository/model/schema/test ์ ๋ฐ์์
selected_place์์กด์ฑ์ ์ ๊ฑฐํฉ๋๋ค.๐ ๏ธ ๊ตฌํ ๋ด์ฉ
processing.job_resultsํ ์ด๋ธ์์selected_place์ปฌ๋ผ์ ์ ๊ฑฐํ๋ migration ์ถ๊ฐselected_placeinsert/update ์ ๊ฑฐselected_placeread/deserialize ์ ๊ฑฐselected_placeํ๋ ์ ๊ฑฐselected_place = selected_places[0]์์ฑ ๋ฐ ์ ๋ฌ ๋ก์ง ์ ๊ฑฐselected_place์ ๊ฑฐselected_place๊ฒ์ฆ ์ ๊ฑฐ ๋ฐselected_places๊ธฐ์ค์ผ๋ก ์์ selected_places์ 1๊ฐ ํญ๋ชฉ์ด ๋ค์ด๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ ์งselected_place์ ๊ฑฐ๋ API breaking change์ด๋ฏ๋ก, ํ์ฌ ํ๋ก ํธ ์ชฝ์์selected_places๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํ๋์ด ์๋์ง ํ์ธ ํ์003_add_selected_places_to_job_results.sql์์selected_place๋ฅผselected_places๋ก ๋ฐฑํํ๊ณ ์์ผ๋ฏ๋ก, ์ปฌ๋ผ ์ ๊ฑฐ ์ ์ ํด๋น migration์ด ์ ์ฉ๋์ด ์์ด์ผ ํจselected_places๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ์กดselected_place = null๊ณผ ๋์ผํ๊ฒ ๋น ๋ฐฐ์ด[]๋ก ํํselected_places[0]๋ฅผ ์ฌ์ฉํ๋๋ก ์๋ด ํ์โ ์๋ฃ ์กฐ๊ฑด
selected_place์ปฌ๋ผ์ด ์ ๊ฑฐ๋จselected_placeํ๋๊ฐ ๋ ์ด์ ๋ด๋ ค๊ฐ์ง ์์selected_place์ฐธ์กฐ๊ฐ ์ ๊ฑฐ๋จselected_places๋ก ์ ์ ๋ฐํ๋จselected_places๊ธฐ์ค์ผ๋ก ์์ ๋๊ณ ํต๊ณผํจ