260.0 KB ยท ์ˆ˜์ • 2026-08-26 13:23
๋ชฉ์ฐจ

๐Ÿ“ฆ ์ธ์ˆ˜์ธ๊ณ„์„œ โ€” ๋‹ค์Œ ๋Œ€ํ™”๋ฐฉ์šฉ

์ƒˆ ๋ฐฉ์€ ์ด ํŽ˜์ด์ง€ ๋จผ์ € ์ฝ๊ณ  ๋ณต์›. ๊ฒฌ์  ์Šคํ‚ค๋งˆ=schema-estimate.md, ํ•จ์ •=traps.md, ์™„๋ฃŒ ์ƒ์„ธ=archive.md, ์„ธ์…˜=sessions.md(๊ฐœ๋ณ„ session-*.md ์ธ๋ฑ์Šค), ์ธํ”„๋ผ/๊ทœ์•ฝ ๋ ˆํผ๋Ÿฐ์Šค=memory.md, ์„ค๊ณ„=design.md.

๐Ÿ†• NOW (2026-08-26) โ€” ํ•œ์ƒ˜ ์ „์šฉ ๊ฒฌ์  ๋ชจ๋“ˆ ์‹ ์„ค โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€Œpfs์— ๊ฒฌ์ ์„œ ๋ชฉ๋ก(ํ•œ์ƒ˜)์„ ์ƒ์„ฑํ•ด์ค˜. ๊ฒฌ์  ์–‘์‹ ๋ฐ ๋‹จ๊ฐ€ํ‘œ ๋ฐ์ดํ„ฐ db์ถ”๊ฐ€ํ•ด์„œ ์ž‘์„ฑํ• ์ˆ˜ ์žˆ๊ฒŒ. ์—‘์…€ํŒŒ์ผ๋„ ์˜ฌ๋ ค์„œ ์—‘์…€ํŒŒ์ผ์— ๋„ฃ๋Š” ํ˜•์‹์œผ๋กœ. ๊ธฐ์กด ๊ฒฌ์ ์„œ ์–‘์‹์œผ๋กœ ํ•œ์ƒ˜๋ถ„ ์ œ์ž‘์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€, ๋ณ„๋„๋กœ ์ƒˆ ์–‘์‹๊ณผ ๋‹จ๊ฐ€ํ‘œ ๊ด€๋ฆฌํ•ด์„œ ์šด์˜. ์šด์˜๋ฐฐํฌ.ใ€ โ†’ ๊ทธ๋ฆด๋ง 5์ฐจ(๊ฒฐ์ • 12๊ฑด) ํ›„ ์ฐฉ์ˆ˜.

๐Ÿ†• ์‹ค๊ฒฌ์  3๊ฑด ๋“ฑ๋ก (2026-08-26 ํ›„์†) โœ…

ํŽ˜ํŽ˜ ใ€Œ2๊ฐœ ๊ฒฌ์ ์„œ ํ•œ์ƒ˜ ์–‘์‹์œผ๋กœ ์ž‘์„ฑํ–ˆ์–ด? ๋ชฉ๋ก์— ์•ˆ๋ณด์ธ๋‹คใ€ โ†’ ๊ทธ๋•Œ๋Š” ๊ทธ๋ฆ‡๋งŒ ์žˆ์—ˆ๋‹ค(0๊ฑด). ์ง€๊ธˆ ์šด์˜ 3๊ฑด.

no ๊ฒฌ์ ๋ช… ์„œ๋ฒ„์ด์•ก(๋ณธ์˜ค๋”) ๋น„๊ณ 
1 ๋ผ์ธ ์•„์‚ฐ7์ฐจ(๋ฆฌ๋‰ด์–ผ) M/H ์ƒ์‚ฐ๋น„ 26๋…„ 06์›” 20,818,331 ์›๋ณธ ๊ฑฐ๋ž˜๋ช…์„ธ์„œ ์žฌํ˜„ ยท field_no ์—†์Œ(ํ˜„์žฅ ๋ฏธ๋“ฑ๋ก)
2 GS ์›์ฃผ ๋‹จ๊ตฌ MH โ€” ํ•œ์ƒ˜์–‘์‹ V2 (์น˜์ˆ˜๊ธฐ์ค€) 17,370,850 ์ ์šฉ๋ฅ  ์ „ ํ–‰ 1.0 ยท ์˜ต์…˜ ๋ฏธ๋ฐ˜์˜ ยท field_no 2169
3 GS ์›์ฃผ ๋‹จ๊ตฌ MH โ€” ํ•œ์ƒ˜์–‘์‹ V1 (์˜ต์…˜ ๋ฐฐ๋ถ„) 22,193,970 ํ–‰๋ณ„ ์ ์šฉ๋ฅ  ์ƒํ–ฅ(์ตœ๋Œ€ 1.8810) ยท field_no 2169

(์ด์ „) 2026-08-26 โ€” ํ•œ์ƒ˜ ๋‹จ๊ฐ€ํ‘œ ์ „ํ™˜ ํ˜„ํ™ฉํŒŒ์•…(๋ณด๊ณ ๋งŒ) + ํ•œ์ƒ˜ ์–‘์‹ xlsx ์™ธ๋ถ€๋งํฌ ์ •๋ฆฌ โœ…

[ํŽ˜ํŽ˜] โ‘ ใ€Œ๊ธฐ์กด ๊ฒฌ์ (GS ์›์ฃผ 763)์„ ํ•œ์ƒ˜ ์‹ ๊ทœ ์–‘์‹์— ๋งž์ถฐ์•ผ ํ•œ๋‹ค. ํ•œ์ƒ˜ ๋‹จ๊ฐ€ํ‘œ๊ฐ€ ๊ธฐ์กด๋ณด๋‹ค ๊ธˆ์•ก์ด ์ ๋‹ค. ์ถ”๊ฐ€๊ธˆ์•กยท์˜ต์…˜๊ธˆ์•ก ๊ทœ์น™์„ ํ™•์ธํ•ด ์†์‹ค ์ตœ์†Œ๋กœ ์˜ฎ๊ธธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ์šฐ์„  ์น˜์ˆ˜๋งŒ ๋ฐ˜์˜ํ•ด ๊ธˆ์•ก์ฐจ๋ฅผ ๋ณธ๋‹ค โ€” ์ด๋ฒˆ์—” ์‹ค์ œ ์ž‘์—… ์—†์ด ํ˜„ํ™ฉ ๋ณด๊ณ ๋งŒใ€ โ‘กใ€Œ์–‘์‹ ํŒŒ์ผ ์ˆ˜์‹์ด ์™ธ๋ถ€ ๋””์Šคํฌ ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค โ†’ ํŒŒ์ผ ๋‚ด ๋‹จ๊ฐ€๊ธฐ์ค€ ํƒญ ์ฐธ์กฐ๋กœ ๊ณ ์ณ๋ผ. ๋™์ผํด๋”์— ์ƒˆํด๋” ๋งŒ๋“ค์–ด ์›๋ณธ ๋ฐฑ์—…ใ€ โ‘ข๋‹น์žฅ ์•ˆ ๋ด๋„ ๋˜๋Š” ํƒญ = ์ถ”๊ฐ€๋ถ„๊ฒฌ์ ยท์ž์žฌ๋น„ยท์šด๋ฐ˜๋น„ยท๊ฐ€๊ฒฉ์ ์šฉ๋ถ„.

โ‘  ํ˜„ํ™ฉ (๋ณด๊ณ ๋งŒ ยท ์ฝ”๋“œ/DB ๋ณ€๊ฒฝ 0)

โ‘ก ์–‘์‹ xlsx ์™ธ๋ถ€๋งํฌ ์ •๋ฆฌ (์‹ค์ž‘์—…)

(์ด์ „) 2026-08-26 โ€” ์—๋„ฅ์Šค ๊ธˆํ˜ธ ๊ตฌ๋ฏธ ๊ฒฌ์  3์ฐจ์ˆ˜ ์ž‘์„ฑ + ์—‘์…€ 3์ข… NAS ์ €์žฅ โœ…์šด์˜ ์™„๋ฃŒ (์ฝ”๋“œ๋ณ€๊ฒฝ 0)

[ํŽ˜ํŽ˜] estimate/modify-v2/764 ๋ณธ๊ฑด ์ž‘์„ฑ ํ›„ = ใ€Œ์ด 3๊ฐœ ๊ฒฌ์ ์„œ ์—‘์…€ ํŒŒ์ผ ์ž‘์„ฑ. 1์ฐจ=ํ˜„์žฌ๊ฑด 24,058,000์› / 2์ฐจ=์ „์ฒด ๋งˆ์ง„์œจ 20% ๊ฐ ํ•ญ๋ชฉ ์กฐ๊ธˆ์”ฉ ์กฐ์ •ํ•ด 1900๋งŒ์› ์•ฝ๊ฐ„ ์ดˆ๊ณผ(๋ชฉํ‘œ 1900๋งŒ) / 3์ฐจ=2์ฐจ ๊ธฐ์ค€ 5% ์ธ์ƒ. pfs ์—๋„ ์ฐจ์ˆ˜๋ณ„๋กœ ์ €์žฅํ•˜๊ณ  ๋น„๊ณ ์— ์ˆ˜์ •๋‚ด์šฉ ์ €์žฅ. ์—‘์…€์€ NAS 2026ํ˜„์žฅ\๊ฒฌ์ \09์›”\์—๋„ฅ์Šค\๊ธˆํ˜ธ ๊ตฌ๋ฏธ ๊ฒฌ์  ์—. ์šด์˜๋ฐฐํฌ ์ž‘์—…๊ฑด์ด๋‹คใ€ + ์ถ”๊ฐ€ 2๊ฑด = ใ€Œ3์ฐจ๋Š” ํผ์„ผํŠธ ์กฐ๊ธˆ ๋” ์˜ฌ๋ ค 2000๋งŒ์›์„ ์กฐ๊ธˆ ๋„˜๊ฒŒ, ํŒŒ์ผ๋ช… ํผ์„ผํŠธ๋Š” ์†Œ์ˆ˜์  ์—†์ด ์ •์ˆ˜๋กœใ€ ยท ใ€Œ์ „์ฒด ํŒŒ์ผ ๋ชจ๋‘ ์šด์ž„์€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹คใ€.

(์ด์ „) 2026-08-26 โ€” ๊ฒฌ์  v2 ํ–‰ UI 3๊ฑด (์น˜์ˆ˜ ๋ธ”๋ก์„ ํƒ ยท ํด๋”ฉ ์•„์ด์ฝ˜ ยท ๋ถ„๋ฅ˜ ๋“œ๋กญ๋‹ค์šด) โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/estimate/modify-v2/764) 3๊ฑด = โ‘ ใ€Œ์น˜์ˆ˜์นธ, ์ฝ”๋„ˆ์นธ ํด๋ฆญ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ธ”๋ก์œผ๋กœ ์žกํžˆ๊ฒŒ ํ•ด์ค˜. ์ˆ˜์ •์‹œ ๋ฐ”๋กœ ์ˆซ์ž์ž…๋ ฅ์œผ๋กœ ๋ฎ์–ด์“ธ์ˆ˜ ์žˆ๊ฒŒใ€ โ‘กใ€Œํด๋”ฉ ์•„์ด์ฝ˜์„ ์ „์ฒด 1๊ฐœ์˜ ์•„์ด์ฝ˜์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค˜. ํ˜„์žฌ ์•„์ด์ฝ˜ ์„ธ๋ชจ ๋ชจ์–‘์ด ์ •์ค‘์•™์ด ์•„๋‹ˆ๋‹ค. ์„ธ๋ชจ๋ชจ์–‘๊ณผ ํ”„๋ ˆ์ž„์กฐํ•ฉ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋””์ž์ธ์ ์œผ๋กœ ๋ณ„๋กœ์ž„. ํ—ˆ์šฉ๋œ ๋ฒ”์œ„์•ˆ์—์„œ ํฌ๊ธฐ๋ฅผ ์ตœ๋Œ€ํ•œ ํ‚ค์›Œ์ค˜. ํด๋ฆญํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ. ์ถ”๊ฐ€๊ธˆ์•ก ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฒ„ํŠผ์˜ ์ปฌ๋Ÿผ ๋ฐฐ๊ฒฝ์„ ์‚ฌ์ด์•ˆ๊ณ„์—ด๋กœ ๋ณ€๊ฒฝํ•ด์ค˜ใ€ โ‘ขใ€Œ๊ธ€์”จ ํฌ๊ธฐ 1ํฌ์ธํŠธ ํ‚ค์›Œ์ฃผ๊ณ  ์ƒ‰์ƒ ์ข€ ๋” ์ง„ํ•˜๊ฒŒ. ๋“œ๋กญ๋ฆฌ์ŠคํŠธ ๊ธ€์”จ ๊ฐ€๋กœ ์•ˆ์ž˜๋ฆฌ๊ฒŒ ๋ฆฌ์ŠคํŠธ ํ”„๋ ˆ์ž„ ํ™•์žฅ. ๋ฆฌ์ŠคํŠธ ์Šคํฌ๋กค ์—†์ด ์ „์ฒด ๋ชฉ๋ก ๋ณด์ด๊ฒŒใ€ + ใ€Œ์ „์ฒด ์ž‘์—…๋‚ด์šฉ ๋ชจ๋‘ ์šด์˜๋ฐฐํฌ ์ง„ํ–‰ใ€

๐Ÿ†• NOW (2026-08-25 ยท 7์ฐจ) โ€” ๊ฒฌ์  ํ˜„์žฅ๊ฒ€์ƒ‰ ๋ชจ๋‹ฌ์— ์ƒ์ฐจ์ผ ๋ฏธํ™•์ • ๋…ธ์ถœ + ๋งจ ์œ„ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/estimate/regist-v2, #btnFieldSearch) ใ€Œ๊ฒฌ์ ์šฉ ํ˜„์žฅ ๋ชจ๋‹ฌ์—์„œ ๋ฆฌ์ŠคํŠธ์— ์ƒ์ฐจ์ผ ๋ฏธํ™•์ •๋ถ„์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. ์ƒ์ฐจ์ผ ๋ฏธํ™•์ •๋ถ„๋„ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ณ , ์ˆœ์„œ์ƒ ๋ฆฌ์ŠคํŠธ ์ƒ๋‹จ์— ๋ฐฐ์น˜์‹œ์ผœ๋ผ. ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-25 ยท 6์ฐจ) โ€” ๊ฑฐ๋ž˜์ฒ˜ ๊ฐœ๋ช…: ๋„ฅ์„œ์Šค โ†’ ํ•œ์ƒ˜ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€Œpfs ์—…์ฒด๋ช… ๋ณ€๊ฒฝ์„ ํ•œ๋‹ค. "๋„ฅ์„œ์Šค"๋ฅผ "ํ•œ์ƒ˜"์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ด€๋ จ ์ง€์นจ์—์„œ ์šฉ์–ด ๊ต์ฒด๋ฅผ ๊ฐ™์ดํ•ด์„œ ์‹œ์Šคํ…œ์— ์˜ค๋ฅ˜๊ฐ€ ์•ˆ์ƒ๊ธฐ๋„๋ก ํ•ด๋ผ. db์ˆ˜์ •๋„ ์Šน์ธํ•œ๋‹ค. ์šด์˜ ๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-25 ยท 5์ฐจ) โ€” ํ˜„์žฅ๋ชฉ๋ก ์ƒ์ฐจ์ผ ๋ฏธํ™•์ •์„ ๋งจ ์œ„๋กœ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€Œpfs ํ˜„์žฅ ๋ชฉ๋ก์—์„œ ์ƒ์ฐจ์ผ ๋ฏธํ™•์ •๋ถ„์ด ๋ฆฌ์ŠคํŠธ์—์„œ ์•ˆ ๋ณด์ธ๋‹ค. ์ •๋ ฌ์ˆœ์„œ ๊ทœ์น™๋•Œ๋ฌธ์ธ๋ฐ, ๋ฏธํ™•์ •๋ถ„์„ ๋ชฉ๋ก ์ƒ๋‹จ์œผ๋กœ ๊ธฐ๋ณธ ๋ฐฐ์ •ํ•ด์ค˜. ์šด์˜ ๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-25 ยท 4์ฐจ) โ€” ๋“ฑ๋กยท์ˆ˜์ • ํผ ํ˜„์žฅ์ƒํƒœ ํ† ๊ธ€ = ์ง„ํ–‰์ค‘ โ†” ๋Œ€๊ธฐ์ค‘ ๋‘˜๋งŒ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/field/modify/2157, button[name=field_status]) = ใ€Œํ† ๊ธ€๋ฒ„ํŠผ ์ˆœ์„œ ์ˆ˜์ •. ์ง„ํ–‰์ค‘ ๋Œ€๊ธฐ์ค‘ 2๊ฐ€์ง€ ์ˆœํ™˜๋งŒ ์ ์šฉํ•œ๋‹ค. ์ด ๋ฒ„ํŠผ์—์„œ ์™„๋ฃŒ๋Š” ์ œ์™ธํ•œ๋‹ค. ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-25 ยท 3์ฐจ) โ€” ํ˜„์žฅ๋ชฉ๋ก ์ƒํƒœ ์ •๋ ฌ ๋กค๋ฐฑ + ํ˜„์žฅ์ƒํƒœ ํ•„ํ„ฐ ํƒญ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€Œํ˜„์žฅ๋ชฉ๋ก ์ƒํƒœ ์ •๋ ฌ์ˆœ ์ทจ์†Œํ•œ๋‹ค. ๋‹ค์‹œ ๋กค๋ฐฑํ•ด์ค˜. ๋Œ€์‹  ํ…Œ์ด๋ธ” ์ƒ๋‹จ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ํ…์ŠคํŠธ ์ง€์šฐ๊ณ  ๊ทธ ์œ„์น˜์— ํ˜„์žฅ์ƒํƒœ ํ•„ํ„ฐ์šฉ ํƒญ์„ ๋‹ฌ์•„์ค˜. ๋Œ€๊ธฐ์ค‘,์ง„ํ–‰์ค‘,์™„๋ฃŒ. ๋‚˜๋จธ์ง€ ์™„๋ฃŒ ์ž‘์—…์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€. ์šด์˜ ๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-25 ยท 2์ฐจ) โ€” ํ˜„์žฅ๋ชฉ๋ก QA 5๊ฑด โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€ŒPFS ํ˜„์žฅ๋ชฉ๋ก ์ˆ˜์ • ์ž‘์—… ์ถ”๊ฐ€ โ€ฆโ‘ ๊ธฐ๋ณธ ์ •๋ ฌ์„ ๋ฏธํ™•์ •/๋Œ€๊ธฐ์ค‘/์ง„ํ–‰์ค‘/์™„๋ฃŒ ์ˆœ + ํ•ญ๋ชฉ๋ณ„ ์ƒ์ฐจ์ผ ๋‚ด๋ฆผ์ฐจ์ˆœ โ‘ก์ƒํƒœ ์ปฌ๋Ÿผ ๋‚ด์šฉ๋ฒ„ํŠผ ํ† ๊ธ€ํ™”(๋Œ€๊ธฐ์ค‘-์ง„ํ–‰์ค‘-์™„๋ฃŒ ์ˆœํ™˜ยท๋ฐ”๋กœ DB) โ‘ข๋“ฑ๋กยท์ˆ˜์ •์—์„œ ํ˜„์žฅ๋ช… ํญ์„ ์ค„์ด๊ณ  ์œ ํ˜•๊ณผ ์ƒ์ฐจ์ผ ์‚ฌ์ด์— ํ˜„์žฅ์ƒํƒœ ํ† ๊ธ€(๊ธฐ๋ณธ ์ง„ํ–‰์ค‘ยท์ €์žฅ ๋ฐ˜์˜) โ‘ฃํ˜„์žฅ๋‹ด๋‹น์ž โ†’ ์—…์ฒด๋‹ด๋‹น์ž โ†’ ์‹œ๊ณต๋‹ด๋‹น์ž ํƒญ ์งํ–‰ โ‘คํŽ˜์ด์ง€๋‹น 10 โ†’ 20 ยท ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-25) โ€” ์ƒ์ฐจ์ผ ใ€Œ๋ฏธํ™•์ •ใ€ ํ† ๊ธ€ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/field/modify/2134, input[name=shipping_date]) = ใ€Œ์ƒ์ฐจ์ผ ์ขŒ์ธก์— ๋ฏธํ™•์ • ํ† ๊ธ€๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์ค˜. ์ƒ์ฐจ์ผ ๋ฏธํ™•์ •์‹œ ํ† ๊ธ€๋ฒ„ํŠผ ํ™œ์„ฑํ™”ํ›„ ๋‚ ์งœ ๋ฏธ์„ ํƒ์‹œ์—๋„ ํ˜„์žฅ ๋“ฑ๋ก, ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ๋‚ ์งœ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฏธํ™•์ • ๋ฒ„ํŠผ์€ ์ž๋™ ๋น„ํ™œ์„ฑํ™” ์‹œํ‚จ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ฏธํ™•์ •๋ฒ„ํŠผ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ƒ์ฐจ์ผ์„ ๋น„์šด๋‹ค. field/print/status ์—์„œ๋„ ์ƒ์ฐจ์ผ ๋ฏธํ™•์ •์ธ ๊ฒฝ์šฐ ๋‚ ์งœ ๋Œ€์‹  "๋ฏธํ™•์ •"์œผ๋กœ ํ‘œ๊ธฐ. ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-24 ยท 3์ฐจ) โ€” ์›”๋งˆ๊ฐ ๋‹ด๋‹น์ž ์ง€์ • ยท ๊ฒฌ์ ์„œ ๋‹ด๋‹น์ž ์˜ˆ์™ธ ยท ์›”๋งˆ๊ฐ ๊ธˆ์•ก ๊ฒฌ์ ์„œ ์—ฐ๋™ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] โ‘ ์›”๋งˆ๊ฐ ๋‹ด๋‹น์ž๋Š” ์—…์ฒด ใ€Œ์ฐธ์กฐใ€ ์ฒดํฌ๋œ ์‚ฌ๋žŒ์ด ๊ธฐ๋ณธ์ด๋˜ ๋„ฅ์„œ์Šค=์žฅ๋™์šฑ ์ฐจ์žฅ / ์—๋„ฅ์Šค=๊ฐ•๋™์‹ ์ฐจ์žฅ / ๋ด‰์ =๊น€์–‘ํ›ˆ ์ฐจ์žฅ / ์•„์ด๋น„์ ผ๊ธ€๋กœ๋ฒŒ=์€์ง€ํ˜ธ ๋Œ€ํ‘œ๋กœ ๊ณ ์ •. ใ€Œํ•˜๋“œ์ฝ”๋”ฉ ์•„๋‹ˆ๋‹คใ€ โ‘ก๊ฒฌ์ ์„œ ์—‘์…€ ๋‹ด๋‹น์ž๋„ ์ฐธ์กฐ์ธ์› ์—ฐ๊ณ„์ธ๋ฐ ๋„ฅ์„œ์Šค๋งŒ ํ•ด๋‹น ํ˜„์žฅ ๋‹ด๋‹น์ž ์ด๋ฆ„+์ง์ฑ… ์˜ˆ์™ธ โ‘ข์›”๋งˆ๊ฐ์— ๊ฒฌ์ ํ•ญ๋ชฉ์„ ๋‹ด์€ ๋’ค ๊ธˆ์•ก์ด ๊ตณ์–ด ๊ฒฌ์  ์ˆ˜์ •์ด ๋ฐ˜์˜ ์•ˆ ๋œ๋‹ค โ†’ ์ž๋™๋ฐ˜์˜. ์šด์˜๋ฐฐํฌ.

๐Ÿ†• NOW (2026-08-24 ยท 2์ฐจ) โ€” ์‹œ๊ฐ„๋Œ€ ์ „๋ฉด KST ์ „ํ™˜ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€ŒPFS ์ƒ์‚ฐํ˜„ํ™ฉ ๋ฉ”๋ชจ์ˆ˜์ • ์•Œ๋žŒ์„ ๋ณด๋‹ˆ ์‹œ๊ฐ„๋Œ€๋ฅผ KST ๋กœ ๊ณ„์‚ฐ ์•ˆ ํ•˜๊ณ  ์žˆ๋‹ค. PFS ์ „์ˆ˜ ๊ฒ€์‚ฌํ•ด์„œ ์‹œ๊ฐ„๋Œ€๋Š” ๋ชจ๋‘ KST ๊ธฐ์ค€์œผ๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์šด์˜๋ฐฐํฌํ•ด.ใ€ + ใ€Œ์ฝ”๋”” ๊ธฐ๋ณธ ์ง€์นจ๋„ KST ๋กœ ๋ณด๊ณ ยทํ‘œ๊ธฐํ•˜๊ฒŒ ๊ณ ์ณ๋†”๋ผใ€

๐Ÿ†• NOW (2026-08-24) โ€” ์ƒ์‚ฐํ˜„ํ™ฉ ์ถœ๋ ฅ ํƒ€์ž… ์นด์šดํŠธ์—์„œ ์†Œํ”„ํŠธ๋”œ๋ฆฌํŠธ ํƒ€์ž… ์ œ์™ธ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/field/print/status, div.muted ใ€Œ(3/3)ใ€) = ใ€Œํƒ€์ž… ์นด์šดํŠธ๋ฅผ ์†Œํ”„ํŠธ๋”œ๋ฆฌํŠธํ•œ ํ•ญ๋ชฉ๊นŒ์ง€ ๊ฐ™์ด ๊ณ„์‚ฐํ•˜๊ณ  ์žˆ๋‹ค. ํƒ€์ž…์ด ์†Œํ”„ํŠธ๋”œ๋ฆฌํŠธ(remove_yn) 1์ด ๋˜๋ฉด ์นด์šดํŠธ์—์„œ ์ œ์™ธํ•ด์ค˜. ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-21 ยท 2์ฐจ) โ€” ํŒŒ๋ ˆํŠธ์šฉ์ง€ ใ€Œํ˜„์žฅ๋ช…ใ€ยทใ€Œ์ƒ์„ธใ€ ๊ธ€์žํฌ๊ธฐ ์นธ ์•ˆ ์ตœ๋Œ€์น˜ ์ž๋™์กฐ์ ˆ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/production/sticker, div.ps-detail) = ใ€Œ์ƒ์„ธ๋‚ด์šฉ ๋ฉ”๋ชจ ๊ธ€์ž ํฌ๊ธฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ”„๋ ˆ์ž„ ๊ตฌ์—ญ ์•ˆ์—์„œ ์ตœ๋Œ€์น˜๋กœ ์ž๋™์กฐ์ ˆํ•ด์„œ ๋ณด์ด๊ฒŒ ํ•ด์ค˜. ์ค„๋ฐ”๊ฟˆ ์ƒํ™ฉ๋„ ๊ณ ๋ คํ•ด์„œ ์กฐ์ •. ์šด์˜๋ฐฐํฌใ€ โ†’ ์ด์–ด์„œ ์ฑ„ํŒ… = ใ€Œํ˜„์žฅ๋ช… ์ด๋ฆ„๋„ ๊ธ€์žํฌ๊ธฐ ์ตœ๋Œ€ ์ž๋™์กฐ์ ˆ ๋˜๊ฒŒ ํ•ด์ค˜. ์ด๊ฒƒ๋„ ์šด์˜๋ฐฐํฌ๊นŒ์ง€ ์ง„ํ–‰ใ€(ํ˜„์žฅ๋ช… = ํ˜„์žฅ๋ช… ์ž…๋ ฅ๊ฐ’).

๐Ÿ†• NOW (2026-08-21 ยท 1์ฐจ) โ€” ์ƒ์‚ฐํ˜„ํ™ฉ ์ถœ๋ ฅ ํ—ค๋” ๋‚ ์งœ: ์ˆ˜๋™์„ ํƒ + ๊ธฐ๋ณธ ์ž๋™ํ‘œ๊ธฐ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/field/print/status, #rpt-date) = ใ€Œโ‘ ๋‚ ์งœ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ฒŒ. ๊ฐ€๋Šฅํ•œ ์บ˜๋ฆฐ๋” ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ ์งœ์„ ํƒ ๋˜๊ฒŒ ํ•œ๋‹ค. โ‘ก๊ธฐ๋ณธ ์ž๋™ํ‘œ๊ธฐ = ๋‹น์ผ 0~9์‹œ ์ถœ๋ ฅ์ด๋ฉด ๋‹น์ผ ๋‚ ์งœ, ๋‹น์ผ 9์‹œ~24์‹œ๋ฉด ๋‚ด์ผ ๋‚ ์งœ. ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-20 ยท 1์ฐจ) โ€” ์Šคํ‹ฐ์ปค ํŒŒ๋ ˆํŠธ์šฉ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ž๋™๋ฐฐ์œจ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper(/production/sticker) = ใ€ŒA4์šฉ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ž‘๋‹ค. ๋‚จ๋Š” ํ™”๋ฉด์„ ์ตœ๋Œ€ํ•œ ์ฑ„์›Œ์„œ ๋ณผ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •ํ•ด์ค˜. ์šด์˜๋ฐฐํฌใ€

๐Ÿ†• NOW (2026-08-19 ยท 8์ฐจ) โ€” AL QA 5๊ฑด: ์„ค์ • ์ธ๋ผ์ธ๊ฒ€์ƒ‰ยท์ž๋™์ €์žฅ ยท ํฐ์†/์ž‘์€์† ๊ฐญยท์ง ๋ฌถ๊ธฐ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] qa_helper 5๊ฑด(/field/al-profile 4 + /field/al-orderpaper 1, ใ€Œ์•„๋ž˜ ๋ชจ๋“  ์ž‘์—… ์ฒ˜๋ฆฌ ํ›„ ์šด์˜๋ฐฐํฌํ•œ๋‹คใ€): โ‘ ์—…์ฒด ์ธ๋ผ์ธ ๊ฒ€์ƒ‰ + ใ€Œ๊ณตํ†ตใ€์ฒ˜๋Ÿผ ์ˆ˜๋™์ž…๋ ฅ๋„ ํ—ˆ๊ฐ€ โ‘ก๊ฒ€์ƒ‰์นธ์— ๋œจ๋Š” null ์•ˆ ๋ณด์ด๊ฒŒ โ‘ข์ˆ˜์ •ยท์ถ”๊ฐ€๋Š” ์ž๋™์ €์žฅ โ‘ฃ๊ทธ๋ž˜์„œ ์ €์žฅ ๋ฒ„ํŠผ ์‚ญ์ œ โ‘คใ€Œํฐ์†ยท์ž‘์€์† ๋„์–ด์˜ ๊ฐญ๋นผ๊ธฐ ์น˜์ˆ˜๋„ ์ ์šฉ. ๋ชฉ๋Œ€ 0.5๋Š” ๋ฒ„๋ฆผํ•ด์„œ ์ •์ˆ˜. ์ง์œผ๋กœ ๋‚˜์˜ค๋ฉด ๊ฐญ์„ ๋บ€ ๋’ค ์‹ค์งˆ์ ์œผ๋กœ ๊ฐ™์€ ๋ชฉ๋Œ€ยท์œ ๋ฆฌ๊ฐ€ ๋‚˜์™€์•ผ ํ•˜๋Š”๋ฐ ๊ฐ ํ–‰์ด ์ง์ธ์ง€ ๋ชจ๋ฅด๋‹ˆ NO ์นผ๋Ÿผ์— 2ํ–‰ ์ด์ƒ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ฌ์•„๋ผใ€ + ๋ฐœ์ฃผ์„œ ์ž‘์„ฑ๋ฒ• 5๋‹จ๊ณ„(์—‘์…€ ์›์‹ ((D-10-VLOOKUP(,6))/2)+VLOOKUP(,7)).

๋ฐฐํฌ = master 7758a18ยทe06d62aยท3b807a1 โ†’ deploy-live 2bbc552(9ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach ์›ŒํฌํŠธ๋ฆฌ). ์šด์˜ DDL ์„ ํ–‰(SSM) = al_orderpaper_item.pair_link CHAR(1) NOT NULL DEFAULT '0' ์ถ”๊ฐ€๋งŒ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ 0. โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ 1ํšŒ(ํ˜„์žฅ > AL๋ฐœ์ฃผ์„œ NO์นธ ๐Ÿ”— ยท AL์„ค์ • ๊ด€๋ฆฌ ์ž๋™์ €์žฅ).

๐Ÿ†• NOW (2026-08-19 ยท 7์ฐจ) โ€” AL๋ฐœ์ฃผ์„œ QA 3๊ฑด: ์œ ๋ฆฌ ์ž…๊ณ ์ฒ˜ ยท ์ „ํ™”๋ฉด ๊ฐ€๋กœํญ ยท ๊ฑฐ๋ž˜์ฒ˜ ๋‹ด๋‹น์ž ์‹ค์‹œ๊ฐ„ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA 3๊ฑด(/field/al-orderpaper, ๊ฐ™์€ ์„ธ์…˜ ์—ฐ์† ์ง€์‹œ ยท ์…‹ ๋‹ค "์šด์˜ ๋ฐฐํฌ"): โ‘ ใ€Œ์œ ๋ฆฌ๋Š” AL์—…์ฒด์— ๋„ฃ์–ด์ค˜์•ผ ํ•˜๋‹ˆ ์ž…๊ณ ์ฒ˜ ์ปฌ๋Ÿผ์ด ํ•„์š”. ๋งˆ์ง€๋ง‰์— ์ƒ์„ฑ, ๊ธฐ๋ณธ์€ ๋ฐœ์ฃผ์„œ์— ์—ฐ๊ฒฐ๋œ ์—…์ฒด, ์ธ๋ผ์ธ ๊ฒ€์ƒ‰ยทEnter ์ˆ˜๋™์ž…๋ ฅ, ์ง€์ • ์—…์ฒด๋Š” ๊ฑฐ๋ž˜์ฒ˜ ์ฃผ์†Œ๊นŒ์ง€ ์ฐธ๊ณ ํ•ด ์—‘์…€ ์ž…๊ณ ์ฒ˜ ์—…์ฒด๋ช…ยท์ฃผ์†Œ์นธ์— ๋„ฃ๋Š”๋‹ค. ํ•œ ์œ ๋ฆฌ์—…์ฒด์— ์ž…๊ณ ์ฒ˜ 2๊ณณ ์ด์ƒ์ด๋ฉด ์ž…๊ณ ์ฒ˜๋ณ„๋กœ ํ–‰์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์ž…๊ณ ์ฒ˜ ํ–‰์€ ๊ทธ ๊ทธ๋ฃน ๋ฐ”๋กœ ์•„๋ž˜. ํ–‰์„ ์ถ”๊ฐ€ํ•˜์ง€ ๋ง๊ณ  ๊ธฐ์กด ๋ธ”๋กํ–‰ ๊ฐœ์ˆ˜ ์•ˆ์—์„œ ๊ต์ฒดใ€ โ‘กใ€Œ๊ธฐ๋ณธ์ •๋ณดยท๋ฐ์ดํ„ฐ์ž…๋ ฅ ํ”„๋ ˆ์ž„ ๊ฐ€๋กœํญ ๋ถ€์กฑ โ€” ์‚ฌ์ด๋“œ๋ฉ”๋‰ด ๋บ€ ์ „ํ™”๋ฉด ํญ + ์ปฌ๋Ÿผํญ ์ ˆ์•ฝใ€ โ‘ขใ€Œ๋Œ€์ง„์•„ํŠธ์™€์ด์–ด ๋‹ด๋‹น์ž๋ฅผ ๋ฐ”๊ฟจ๋Š”๋ฐ ๊ฐฑ์‹ ์ด ์•ˆ ๋“ค์–ด์˜จ๋‹คใ€

๋ฐฐํฌ = master fffd408ยทb98e683ยทb23cf72 โ†’ deploy-live 9963dd5ยท75172d2(ํŒŒ์ผ 5๊ฐœ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach ์›ŒํฌํŠธ๋ฆฌ). ์šด์˜ DDL ์„ ํ–‰ ์ ์šฉ(SSM) = al_orderpaper_item.receive_place VARCHAR(100) ์ปฌ๋Ÿผ ์ถ”๊ฐ€๋งŒ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ 0. โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ 1ํšŒ(ํ˜„์žฅ > AL๋ฐœ์ฃผ์„œ โ†’ ์ƒˆ ๋ฐœ์ฃผ์„œ โ†’ ํ‘œ ๋งจ ์˜ค๋ฅธ์ชฝ ์ž…๊ณ ์ฒ˜).

๐Ÿ”ถ ๋ฃจํŠธ NOW ์ด๊ด€ โ€” ์ง„ํ–‰ยท๋ฏธ๊ฒฐ (2026-08-19 ๋Œ€์ฒญ์†Œ, ํŽ˜ํŽ˜ ์ง€์‹œ)

๋ฃจํŠธ HANDOFF.md๋ฅผ pncad ๋งŒ ๋‚จ๊ธฐ๊ณ  ๋น„์› ๋‹ค. ์•„๋ž˜๋Š” ๊ทธ๋•Œ ์˜ฎ๊ฒจ์˜จ ์›๋ฌธ(๋ฌธ๊ตฌ ๋ฌด๋ณ€๊ฒฝ).

๐Ÿ†• NOW (2026-08-20 ยท 2์ฐจ) โ€” ๊ฒฌ์ ๋ชฉ๋ก ์ถ”๊ฐ€๊ฑด ํด๋”ฉ ๋ฐœ๊ฒฌ์„ฑ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€Œestimate/list-v2 ์—์„œ๋„ ์ถ”๊ฐ€๊ฑด๋“ค ํด๋”ฉ์œผ๋กœ ๋ณผ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜. ๊ทธ๋ž˜์•ผ ์ž…๊ธˆ์—ฌ๋ถ€ ์„ค์ •์„ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹คใ€ + ใ€Œ์šด์˜๋ฐฐํฌใ€

๐Ÿ”‘๊ธฐ๋Šฅ์€ ์ด๋ฏธ 1์ฐจ์— ๋“ค์–ด๊ฐ€ ์žˆ์—ˆ๋‹ค โ€” ํ™”๋ฉด์—์„œ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†์—ˆ์„ ๋ฟ์ด๋‹ค. ์‹ค์ธก = ๊ธฐ๋ณธ ๋ชฉ๋ก 36ํ–‰ยทํŽ˜์ด์ง€๋‹น 10ํ–‰์ธ๋ฐ ์ถ”๊ฐ€๊ฑด ๋ณด์œ  ๋ณธ๊ฑด 5๊ฑด์ด ์ „๋ถ€ 6~7์›” ๊ฑด์ด๋ผ ์ตœ์‹ ์ˆœ 1ํŽ˜์ด์ง€์— โ–ถ ๊ฐ€ 0๊ฐœ(visibleFold=0). 1์ฐจ E2E ๊ฐ€ ์ด๊ฑธ ๋ชป ์žก์€ ์ด์œ  = ๊ฒ€์ฆ์ด datatable.page.len(-1) ๋กœ ์ „ ํŽ˜์ด์ง€๋ฅผ ํŽผ์ณ๋†“๊ณ  ์…Œ๋‹ค.

๊ฒ€์ฆ = _mc_pick_check.py ์— ๋ฐœ๊ฒฌ์„ฑยทํ•˜์œ„ํ–‰ ํ† ๊ธ€ 8ํ•ญ๋ชฉ ์ถ”๊ฐ€ โ†’ ํ…Œ์ŠคํŠธ 59/59 ยท ์šด์˜ 53/53 (์šด์˜์€ ์“ฐ๊ธฐ ํ•ญ๋ชฉ skip). ํšŒ๊ท€ = _deposit_mark_check ์šด์˜ 12/12. ์‚ฌ์ดํŠธ๋งต ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€54ยท๋ฏธ๋ฐ˜์˜ 0. ์ปค๋ฐ‹ = master 1f3954a โ†’ deploy-live efeab22(1ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ).

โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ 1ํšŒ โ€” ๊ฒฌ์ ์„œ ๊ด€๋ฆฌ โ†’ ๊ฒ€์ƒ‰ํ•„ํ„ฐ ใ€Œ์ถ”๊ฐ€๊ฑด ์žˆ๋Š” ๊ฑด๋งŒใ€ ์ฒดํฌ โ†’ โ–ถ ์ถ”๊ฐ€ N ํด๋ฆญ โ†’ ํ•˜์œ„ํ–‰ ์ž…๊ธˆ์—ฌ๋ถ€ ๋ฒ„ํŠผ ํด๋ฆญ.

๐Ÿ†• NOW (2026-08-20) โ€” ์›”๋งˆ๊ฐ ๊ฒฌ์  ๋‹ด๊ธฐ(์ถ”๊ฐ€๊ฑด ๋งคํ•‘) + ๊ฒฌ์ ๋ชฉ๋ก ์ถ”๊ฐ€๊ฑด ํด๋”ฉ + ์ž๋™์ˆ˜์ง‘=๋ฏธ์ž…๊ธˆ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ใ€Œ์›”๋งˆ๊ฐ ๋งคํ•‘ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค. ํ•ญ๋ชฉ์ถ”๊ฐ€์‹œ ๊ฒฌ์ ์„œ ๋ชฉ๋ก ๊ธฐ์ค€ ํ˜„์žฅ๋ช… ๊ฒ€์ƒ‰ ๋ฐ ์„ ํƒ. ์ด๋•Œ ์ถ”๊ฐ€๊ฑด๋„ ์ง€์ • ์„ ํƒ์ด ๋˜์–ด์•ผ ํ•˜๊ณ  ๊ฐ™์€ ๋ณธ๊ฑด ํ˜„์žฅ ๊ธฐ์ค€์œผ๋กœ ํ•œ ํ–‰์œผ๋กœ ๋ฌถ๋Š”๋‹ค. ์ถ”๊ฐ€๊ฑด์€ ์ถ”๊ฐ€1,2๋ฒˆํ˜ธ์— ์ƒ๊ด€์—†์ด ์„ ํƒ๋œ ํ•ญ๋ชฉ์„ ๋ณธ๊ฑด์ปฌ๋Ÿผ ๋›ฐ์–ด๋„˜๊ณ  ์ถ”๊ฐ€๊ฑด ์ฒซ๋ฒˆ์งธ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ. ํ•„์š”์‚ฌํ•ญ ๊ทธ๋ฆด๋ง. ์šด์˜ ๋ฐฐํฌใ€

๊ทธ๋ฆด๋ง 6๋ฐฐ์น˜ ยท ํŽ˜ํŽ˜ ํ™•์ • 13๊ฑด = ๊ฒ€์ƒ‰๋ฒ”์œ„ = ๊ฑฐ๋ž˜์ฒ˜ ํ•œ์ • + ใ€Œ์ „์ฒดใ€ ํ•ด์ œ / ๊ธฐ๊ฐ„ ์—†์Œ ์ตœ์‹  50 / ๋ชจ๋‹ฌ ํ‘œ + ์ถ”๊ฐ€๊ฑด ํ•˜์œ„ํ–‰ / ๋ฌถ์Œํ‚ค = ๋ณธ๊ฒฌ์  estimate_no / ์ค‘๋ณต์€ ๊ธฐ์กด ํ–‰์— ๋ณ‘ํ•ฉ / ์ถ”๊ฐ€์นธ ์ˆœ์„œ = ๊ฒฌ์ ๋ฒˆํ˜ธ ์˜ค๋ฆ„์ฐจ์ˆœ / ์ถ”๊ฐ€๊ฑด ๋ฒˆํ˜ธ = add_amounts ํ™•์žฅ [{no,amt}] / ๋ณธ๊ฑด ๋ฏธ์„ ํƒ ํ–‰์˜ ๋งคํ•‘ = ๋ถ€๋ชจ ๋ณธ๊ฒฌ์  ๋ฒˆํ˜ธ / ๊ฒ€์ฆ = ๋‹ด์€ ๊ฒƒ ํ•ฉ(ํ™•์ •๊ธˆ์•ก์€ ๊ฒ€์ฆ ๋ฌด๊ด€ โ€” ๋„ค๊ณ  ์ˆ˜๊ธฐ๊ฐ’) / ใ€Œํ–‰ ์ถ”๊ฐ€ใ€ ์œ ์ง€ + ใ€Œ๊ฒฌ์  ๋‹ด๊ธฐใ€ ์‹ ์„ค / ์ž๋™์ˆ˜์ง‘ = ๋ฏธ์ž…๊ธˆ๋งŒ / ๋ชฉ๋ก ํด๋”ฉ = โ–ถ ํ•˜์œ„ ์š”์•ฝํ–‰ + ์ถ”๊ฐ€๊ฑด ์ƒํƒœ ๋ณ„๋„ / ์†Œ๊ธ‰์—ฐ๊ฒฐ 66ํ–‰์€ ๋ฒ”์œ„ ๋ฐ– / ๋ฐฐํฌ = ํ•œ ์„ธ์…˜ ์ „๋ถ€ ยท ์šด์˜ 1ํšŒ.

๐Ÿ”ด์ฐฉ์ˆ˜ ์ „ ํŽ˜ํŽ˜ ์ง€์‹œ = ใ€Œ6์›”๊นŒ์ง€ ๊ฒฌ์ ์„œ๋Š” ๋ชจ๋‘ ๋งˆ๊ฐ์ฒ˜๋ฆฌใ€ โ€” ์ž๋™์ˆ˜์ง‘ ํ˜ผ์„  ์ œ๊ฑฐ์šฉ. is_deposit '0'โ†’'2', ๊ฒฌ์ ์ผ(์—†์œผ๋ฉด ๋“ฑ๋ก์ผ) โ‰ค 2026-06-30, ๊ธฐ์กด ์ž…๊ธˆ('1') 5๊ฑด์€ ์ œ์™ธ. ์šด์˜ 609๊ฑด ยท ํ…Œ์ŠคํŠธ 659๊ฑด ์ ์šฉ, ๋กค๋ฐฑ์šฉ ๋ฒˆํ˜ธ๋ชฉ๋ก ๋ฐฑ์—… = /home/ubuntu/pfs-backup/is_deposit_{prod,test}_*.json. ๊ฒฐ๊ณผ = ๋ฏธ์ž…๊ธˆ ๋ณธ๊ฒฌ์  608 โ†’ 11๊ฑด.

๐Ÿ”‘๊ทผ๋ณธ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ = ๋งˆ๊ฐ ํ•ญ๋ชฉ์ด ๊ฒฌ์ ์„œ์™€ ๋ฐ˜์ชฝ๋งŒ ๋ถ™์–ด ์žˆ์—ˆ๋‹ค โ€” ์šด์˜ 78ํ–‰ ์ค‘ estimate_no 12ํ–‰๋ฟ์ด๊ณ  (1~6์›” ์ˆ˜๊ธฐํ–‰์€ ํ˜„์žฅ๋งŒ) ์ถ”๊ฐ€๊ฑด์€ ๊ธˆ์•ก ๋ฐฐ์—ด์ด๋ผ ๋ฒˆํ˜ธ๊ฐ€ ์•„์˜ˆ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ โ‘ ๊ฒ€์ฆ ๋ฐฐ์ง€๊ฐ€ ๋ฌด์—‡๊ณผ ๋Œ€์กฐํ•˜๋Š”์ง€ ๋ถˆ๋ถ„๋ช… โ‘ก์ถ”๊ฐ€๊ฑด ์ž…๊ธˆ์—ฌ๋ถ€๋ฅผ ํŒŒ์ƒํ•  ๊ทผ๊ฑฐ ์—†์Œ โ‘ข๋ฐฐ์ง€๊ฐ€ ๋งํฌ๋„ ์•„๋‹˜. โ†’ add_amounts ๋ฅผ [{"no","amt"}] ๋กœ ํ™•์žฅํ•œ ๊ฒŒ ์ด ๊ธฐ๋Šฅ ์ „์ฒด์˜ ์ „์ œ. ์šด์˜ DDL 0(TEXT ์ปฌ๋Ÿผ ๊ทธ๋Œ€๋กœ, ์ˆซ์ž๋ฐฐ์—ด ํ•˜์œ„ํ˜ธํ™˜).

๊ฒ€์ฆ = ์‹ ์„ค scripts/_mc_pick_check.py ๋ฐฐํฌ์ „ 7 FAIL โ†’ ํ…Œ์ŠคํŠธ 50/50 โ†’ ์šด์˜ 46/46(์šด์˜์€ ์ €์žฅ ์™•๋ณต ์ œ์™ธ). ํšŒ๊ท€ = _deposit_mark_check ํ…Œ์ŠคํŠธ 17/17ยท์šด์˜ 12/12 ยท _monthly_close_ui_check ํ…Œ์ŠคํŠธยท์šด์˜ ๊ฐ 19/19 ยท ์—‘์…€ ์ƒ์„ฑ ํ…Œ์ŠคํŠธยท์šด์˜ ๊ฐ 4/4(์ถ”๊ฐ€๊ธˆ์•ก1..N ์ปฌ๋Ÿผ ์œ ์ง€) ยท ์‹ ๊ทœ SQL 6/6(์šด์˜ ์ง์ ‘ ์‹คํ–‰) ยท ์šด์˜ ๋ฐฐํฌ ํŒŒ์ผ 4๊ฐœ ํ•ด์‹œ๊ฐ€ ํ…Œ์ŠคํŠธ์™€ ์™„์ „ ์ผ์น˜ ยท ์‚ฌ์ดํŠธ๋งต ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€54ยท๋ฏธ๋ฐ˜์˜ 0. ์ปค๋ฐ‹ = master c65e484ยทb9bd8bd โ†’ deploy-live 75fd745(7ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ).

โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ 1ํšŒ โ€” ๊ฒฌ์ >์›”๋งˆ๊ฐ โ†’ ๋งˆ๊ฐ ๊ณจ๋ผ ใ€Œ๊ฒฌ์  ๋‹ด๊ธฐใ€(ํ˜„์žฅ๋ช… ๊ฒ€์ƒ‰ยท์ถ”๊ฐ€๊ฑด ์ฒดํฌยท๋‹ด๊ธฐ) / ใ€Œ๊ฒฌ์  ์ž๋™์ˆ˜์ง‘ใ€์ด ๋ฏธ์ž…๊ธˆ ์ผœ์ง„ ๋ชจ๋‹ฌ๋กœ ์—ด๋ฆฌ๋Š”์ง€ / ๊ฒฌ์ ์„œ ๊ด€๋ฆฌ ๋ชฉ๋ก์˜ โ–ถ ํŽผ์นจ. โณ๋‚จ์€ ๊ฒƒ = 1~6์›” ์ˆ˜๊ธฐํ–‰ 66๊ฑด ๊ฒฌ์  ์†Œ๊ธ‰ ์—ฐ๊ฒฐ(๋ฒ”์œ„ ๋ฐ–์œผ๋กœ ๋บ€ ๊ฑด, ์ด์ œ ๋‹ด๊ธฐ ๋ชจ๋‹ฌ๋กœ ํ•œ ๋‹ฌ์”ฉ ๊ฐ€๋Šฅ). โ†’ projects/pfs/rules.md ๐Ÿ†• ์‹ ๊ทœ 5์ค„

๐Ÿ”Ž ์กฐ์‚ฌ (2026-08-19 ยท 6์ฐจ) โ€” ์›”๋งˆ๊ฐ ํ•ญ๋ชฉ โ†” ๊ฒฌ์ ์„œ ๋งคํ•‘ ์‹คํƒœ (์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์Œ)

[ํŽ˜ํŽ˜] ์งˆ๋ฌธ = ใ€Œ์›”๋งˆ๊ฐ ์ง€์ •๋œ ํ˜„์žฅ๋ณ„ ๊ฒฌ์ ์ด ์‹ค์ œ ๊ฒฌ์ ์„œ์™€ ๋งคํ•‘์€ ์•ˆ ๋˜๋‚˜? ๊ฒ€์ฆ์— ์ ํžŒ ๊ฒฌ์ ์„œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์•ผ?ใ€

๊ฒฐ๋ก  = ๋งคํ•‘ ์ž์ฒด๋Š” ์žˆ๋‹ค(DB ์ปฌ๋Ÿผ 2๊ฐœ). ๋‹ค๋งŒ โ‘ ์‹ค๋ฐ์ดํ„ฐ ๋Œ€๋ถ€๋ถ„์ด ์•ˆ ๋ถ™์–ด ์žˆ๊ณ  โ‘ก์ถ”๊ฐ€๊ฒฌ์  ๋ฒˆํ˜ธ๋Š” ์•„์˜ˆ ์ €์žฅ ์•ˆ ๋˜๊ณ  โ‘ข๊ฒ€์ฆ ๋ฐฐ์ง€๋Š” ๋งํฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ฐœ์„  ํ›„๋ณด(๋ฏธ์ฐฉ์ˆ˜ยทํŽ˜ํŽ˜ ๊ฒฐ์ • ๋Œ€๊ธฐ) = โ‘ ๋ฐฐ์ง€๋ฅผ /estimate/modify-v2/<no> ๋งํฌ๋กœ(1์ค„) โ‘ก์ถ”๊ฐ€๊ฒฌ์  ๋ฒˆํ˜ธ ๋ณด์กด (add_amounts ๋ฅผ [{no,amt}] ๋กœ or ๋ณ„๋„ ์ปฌ๋Ÿผ) โ‘ข1~6์›” ์ˆ˜๊ธฐํ–‰ ๊ฒฌ์  ์†Œ๊ธ‰ ์—ฐ๊ฒฐ(ํ˜„์žฅ+๊ธˆ์•ก ๋Œ€์กฐ).

๐Ÿ†• NOW (2026-08-19 ยท 5์ฐจ) โ€” ์ž…๊ธˆ์—ฌ๋ถ€ ใ€Œ๋งˆ๊ฐใ€ ์ˆ˜๋™ ์„ ํƒ + QA ๋„๊ตฌ ๋ฒ„ํŠผ ์ •๋ฆฌ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA(qa_helper, /estimate/modify-v2/730) = ใ€Œ๋งˆ๊ฐ ๋ฒ„ํŠผ๋„ ์ถ”๊ฐ€ํ•ด์ค˜. ์›”๋งˆ๊ฐ ์ดˆ์•ˆ ์ •๋ฆฌํ•˜๋ฉด์„œ ๋งˆ๊ฐ ํ‘œ์‹œ๋ฅผ ์ฝ”๋””๊ฐ€ ์ƒ์„ฑํ–ˆ๋Š”๋ฐ ๋‚ด๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์€ ์—†๋‹ค. ์šด์˜๋ฐฐํฌใ€ + ๊ฐ™์€ ์„ธ์…˜ ์ถ”๊ฐ€์ง€์‹œ = ใ€Œqahelper ์—์„œ ์ฑ„ํ‹ฐ์šฉ ๋ณต์‚ฌ ๋ฒ„ํŠผ ์ด๋ฆ„์„ ๊ทธ๋ƒฅ ใ€Œ๋ณต์‚ฌใ€๋กœ, ํ…์ŠคํŠธ ๋ณด๊ธฐ ๋ฒ„ํŠผ์€ ์‚ญ์ œใ€.

๋ฐฐํฌ = master 08e0944 โ†’ deploy-live 97e596a(4ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach ์›ŒํฌํŠธ๋ฆฌ). DDL 0 ยท DB ๋ณ€๊ฒฝ 0. โœ…ํŽ˜ํŽ˜ ์šด์˜ ์œก์•ˆ ํ™•์ธ ์™„๋ฃŒ(26.8.19) โ€” ๊ฒฌ์  ์ˆ˜์ •ํ™”๋ฉด ๋งˆ๊ฐ ์„ ํƒ ํ™•์ธ. ์ด ๊ฑด ์ข…๊ฒฐ.

๐Ÿ†• NOW (2026-08-19 ยท 4์ฐจ) โ€” ํ†ตํ•ฉํ˜„์žฅ ํƒญ ์žฌ์„ค๊ณ„ = ์ฝ”๋””๊ฐ€ ์ •๋ฆฌํ•œ ใ€Œํ†ตํ•ฉ ๊ฒŒ์‹œ๊ธ€ใ€ โœ…1์ฐจ ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ(๋ณ„๋„ ์„ธ์…˜ ์ „๋‹ด ยท ํŽ˜ํŽ˜ ์ง€์‹œ 26.8.19)

โœ…1์ฐจ ๋๋‚ฌ๋‹ค(์šด์˜๋ฐฐํฌ๊นŒ์ง€). ๋‹ด๋‹น ์„ธ์…˜์ด master a784e25~93a748e ยท deploy-live f10e839~7d5e2c7 ๋กœ ๋ฐ˜์˜ ์™„๋ฃŒ. ์ด ๊ฑด ํŒŒ์ผ(worklog dao/service/controller ยท kakao_board dao/service ยท field_worklog.html)์€ 2์ฐจ ์ž‘์—…๋„ ๊ฐ™์€ ์„ธ์…˜์ด ์žก๋Š”๋‹ค โ€” ๊ฐ™์€ ์›ŒํฌํŠธ๋ฆฌ ๋™์‹œํŽธ์ง‘์ด๋ฉด ์„œ๋กœ ๋ฎ์–ด์“ด๋‹ค.

[ํŽ˜ํŽ˜ ์ง€์‹œ ยท QA ์ฝ”๋ฉ˜ํŠธ /field/worklog #wl-tab-fusion] "์นดํ†กยทํ†ตํ™” 2๊ฐ€์ง€๋ฅผ ๊ฐ๊ฐ ๋ณด๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ํ˜„์žฅ ๊ธฐ์ค€์œผ๋กœ ํ†ตํ•ฉํ•œ๋‹ค. ๋‹จ์ˆœ ๊ทธ๋ฃน๋ถ„๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ”๋””๊ฐ€ ๋‚ด์šฉ์„ ์ˆ˜์ง‘ยท์ •๋ฆฌํ•ด ์นดํ†ก ๊ฒŒ์‹œ๊ธ€์ฒ˜๋Ÿผ ์ •๋ฆฌํ•œ๋‹ค. ํ†ตํ™”๋‚ด์šฉ๋„ ํ˜„์žฅ ๊ด€๋ จ์ด๋ฉด ์ถœ์ฒ˜๊ฐ€ ํ†ตํ™”์ž„์„ ํ‘œ๊ธฐํ•ด ๊ฒŒ์‹œ๊ธ€์— ํ†ตํ•ฉํ•œ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ์นดํ†ก ๊ฒŒ์‹œ๊ธ€๋กœ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํ†ตํ•ฉ๋˜์–ด ๊ฑฐ๋ž˜์ฒ˜์™€ ํฌ์ธ ์ง์›์ด ํ•œ๋ˆˆ์— ๊ณต์œ ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ." โ†’ ๊ทธ๋ฆด๋ง 5๋ฐฐ์น˜ 15๋ฌธ ์ง„ํ–‰, ์•„๋ž˜ ์ „๋ถ€ ํŽ˜ํŽ˜ ํ™•์ •.

์ฐฉ์ˆ˜ ์ „ ํ™•์ธํ•œ ๊ตฌ์กฐ(์ฝ”๋“œ ์‹ค์ธก)

ํŽ˜ํŽ˜ ํ™•์ • 15๊ฑด (๊ทธ๋ฆด๋ง)

  1. ์ฐฉ์ง€์  = ์ž๋™ ์ฆ‰์‹œ ๋ฐ˜์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๊ฐ„๋‹ค. ๋‹จ ํ†ตํ™”๋‚ด์šฉ์€ PFS ์— ๋จผ์ € ๋œจ๊ณ  ํŽ˜ํŽ˜๊ฐ€ ํ™•์ธ ํ›„ ์นดํ†ก ๊ฒŒ์‹œ๊ธ€ ๋ฐ˜์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ํ˜„์žฅยท๊ฑฐ๋ž˜์ฒ˜์— ๋”ฐ๋ผ ์‚ฌ์ „ ์ „์ฒด์Šน์ธ์œผ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ฒŒ์‹œ ํ›„ ์˜คํƒ์€ PFS ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜์ •ํ•ด ๋ณด์™„ํ•œ๋‹ค.
  2. ์ž‘์„ฑ์ž์— ์ฝ”๋”” ์–ธ๊ธ‰๋งŒ ๋นผ๋ฉด ํ•ญ๋ชฉ ๋‚ด์šฉ ์ž์ฒด์—” ํฐ ์œ„ํ—˜์ด ์—†๋‹ค(ํŽ˜ํŽ˜ ํŒ๋‹จ).
  3. ์ •๋ฆฌ ๋ฌธ์žฅ ์ƒ์„ฑ ์ฃผ์ฒด = ์ฝ”๋””(LLM) ๋ฐฐ์น˜.
  4. ๊ฒŒ์‹œ๊ธ€์— ๋‚˜๊ฐ€๋Š” ํ†ตํ™” ํ•ญ๋ชฉ = ์ฝ”๋”” ์žฌ์ž‘์„ฑ 1์ค„ + ์ถœ์ฒ˜ ํƒœ๊ทธ. ์›๋ฌธยทํ™”์ž ์ด๋ฆ„์€ ๊ฒŒ์‹œ๊ธ€์— ์•ˆ ๋‚˜๊ฐ„๋‹ค. is_private=1 ์€ ์›์ฒœ ์ œ์™ธ.
  5. PFS ์—์„œ ํ†ตํ™” ํ•ญ๋ชฉ์„ ํด๋ฆญํ•˜๋ฉด ๊ทธ ํ†ตํ™” ์ „๋ฌธ ์ „์‚ฌ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค โ€” ์‹œ๊ฐ„ยทํ™”์ž๋ณ„๋กœ ์ •๋ฆฌํ•˜๊ณ  ๊ทธ ํ•ญ๋ชฉ์˜ ๊ทผ๊ฑฐ ๊ตฌ๋ฌธ์„ ํ˜•๊ด‘ ๊ฐ•์กฐํ•œ๋‹ค.
  6. ์ „์‚ฌ ์ˆ˜์ค€ = ๊ธฐ์กด 1,111๊ฑด์€ ํ‰๋ฌธ+๊ตฌ๋ฌธ๊ฐ•์กฐ๋งŒ. ์‹ ๊ทœ ํ†ตํ™”๋ถ€ํ„ฐ ํ™”์ž๋ถ„๋ฆฌ๋ฅผ ํ•œ๋‹ค.
  7. ์‹ ๊ทœ ์ „์‚ฌ ์—”์ง„ = Groq(whisper-large-v3-turbo) ์ „์‚ฌ + sherpa-onnx ๋กœ์ปฌ ํ™”์ž๋ถ„๋ฆฌ(pyannote-segmentation-3.0 ONNX 6.6MB). ๋‘˜ ๋‹ค ๋ฌด๋ฃŒยท๋ฌด์ œํ•œ. Groq ํ‚ค๋Š” .secrets/.env ์— ์ด๋ฏธ ์žˆ๋‹ค.
  8. ํ™”์ž ๋ผ๋ฒจ = ์ฝ”๋””๊ฐ€ ๋งฅ๋ฝ์œผ๋กœ ํŒ์ •. ํžŒํŠธ = ใ€Œ๋‚˜ใ€ = ํฌ์ธ ์‹ ๋™์Šน ์ฐจ์žฅ, ์ƒ๋Œ€๋Š” ๋ณดํ†ต ๋‚˜๋ฅผ ใ€Œ์‹ ์ฐจ์žฅยท์‹ ๋™์Šน ์ฐจ์žฅยท์ฐจ์žฅ๋‹˜ใ€์ด๋ผ ๋ถ€๋ฅธ๋‹ค. โ›”์ „์‚ฌยท์‚ฐ์ถœ๋ฌผ์— ใ€ŒํŽ˜ํŽ˜ใ€๋ผ๋Š” ๋ง์€ ์ ˆ๋Œ€ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
  9. ์ „์‚ฌ๋ณธ PFS ์—…๋กœ๋“œ = ์ „๋Ÿ‰(worklog ํ•ญ๋ชฉ์ด ์ƒ๊ธด ํ†ตํ™”๋งŒ). ๋‹จ 1์ฐจ๋Š” ์ง„ํ–‰์ค‘ ํ˜„์žฅ๋ถ„ ๋จผ์ € โ†’ ๋ณด๊ณ , ๊ทธ ๋’ค ์ตœ๊ทผ ์ผ์ž โ†’ ๊ณผ๊ฑฐ ์ผ์ž ์ˆœ์œผ๋กœ ๋‚˜๋จธ์ง€ โ†’ ์™„๋ฃŒ ๋ณด๊ณ .
  10. ์Šน์ธ UI = ํ†ตํ•ฉํ˜„์žฅ ํƒญ ์•ˆ(ํ–‰๋ณ„ โœ”๊ฒŒ์‹œ/โœ–๋ฒ„๋ฆผ/โœŽ์ˆ˜์ • + ๋ฐฉ๋ณ„ ใ€Œ์‚ฌ์ „ ์ „์ฒด์Šน์ธใ€ ์Šค์œ„์น˜).
  11. ์ดˆ์•ˆ ์ƒ์„ฑ ์ฃผ๊ธฐ = 30๋ถ„๋งˆ๋‹ค(์นดํ†ก ๊ฒŒ์‹œ๊ธ€ ์ฃผ๊ธฐ์— ๋งž์ถ˜๋‹ค). ์ด์— ๋งž์ถฐ ํฐ ํ†ตํ™”์ˆ˜์ง‘๋„ ํ†ตํ™” ์ข…๋ฃŒ ์ฆ‰์‹œ๋กœ ๋‹น๊ธด๋‹ค.
  12. ์ค‘๋ณต = ์ฝ”๋””๊ฐ€ ํ˜„์žฌ ๊ฒŒ์‹œ๊ธ€ ์ „๋ฌธ๊นŒ์ง€ ์ฝ๊ณ  ํŒ๋‹จ. ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ดˆ์•ˆ์—์„œ ๋นผ๊ณ , ์ง„ํ–‰์ด ๋ฐ”๋€ ๊ฑด์€ ์ƒˆ ํ–‰์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ํ–‰ ์ˆ˜์ • ์ œ์•ˆ์œผ๋กœ ๋‚ธ๋‹ค(edit ๋ช…๋ น์€ ์ด๋ฏธ ์žˆ๋‹ค).
  13. ๊ฒŒ์‹œ๊ธ€ ์„น์…˜ = ์ฝ”๋””๊ฐ€ ๊ทธ ๋ฐฉ์˜ ๊ธฐ์กด ์„น์…˜ ๋ชฉ๋ก์„ ๋ณด๊ณ  ๊ณ ๋ฅธ๋‹ค. ๋งž๋Š” ๊ฒŒ ์—†์œผ๋ฉด ใ€Œํ™•์ธ์ค‘ ยท ์š”์ฒญใ€ ์‹ ์„ค. ์ดˆ์•ˆ์— ์„น์…˜๋ช…์„ ์ ์–ด ์Šน์ธ ์ „์— ๋ณด์ธ๋‹ค.
  14. ์นดํ†ก๋ฐฉ ์—†๋Š” ํ˜„์žฅ = ์ดˆ์•ˆ์€ ๋˜‘๊ฐ™์ด ๋งŒ๋“ค๊ณ  PFS ์ „์šฉ์œผ๋กœ ๋ณธ๋‹ค(๊ฒŒ์‹œ ๋ฒ„ํŠผ ์ž๋ฆฌ์— ใ€Œ์นดํ†ก๋ฐฉ ์—†์Œใ€).
  15. ์ฆ‰์‹œ์ˆ˜์ง‘ ๊ตฌํ˜„ = PC ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ adb ํŠธ๋ฆฌ๊ฑฐ(์•ฑ ์ˆ˜์ •ยทAPK ์žฌ์„ค์น˜ 0). ๋ฒ”์œ„ = ๋‹จ๊ณ„ ๋ถ„ํ• , ์™„๋ฃŒ ๊ฒฝ๊ณ„ = ๋ฐ”๋กœ ์šด์˜๋ฐฐํฌ๊นŒ์ง€.

โœ… 1์ฐจ ๊ฒฐ๊ณผ (์šด์˜๋ฐฐํฌ ์™„๋ฃŒ)

๋ฐฐํฌ = pfs master a784e25ยทee39821ยทeb3aa2eยทef38616ยท4eb6cc3ยท93a748e โ†’ deploy-live f10e839ยท73d8fbdยท4ed5557ยท7d5e2c7(6ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, ๋ณ„๋„ ์›ŒํฌํŠธ๋ฆฌ โ€” ๋‹ค๋ฅธ ์„ธ์…˜์ด ๊ฐ™์€ ๋ฆฌํฌ๋ฅผ ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค). poin-agent c818a8a ยท talklog 1a78d82. DDL ์„ ํ–‰ ์—†์Œ โ€” ํ…Œ์ด๋ธ” 2๊ฐœ๋Š” ์ฒซ ํ˜ธ์ถœ์— ์ž๊ฐ€์ƒ์„ฑ.

๐Ÿ”ด ์žก์€ ํ•จ์ • 4๊ฐœ (์ „๋ถ€ ์‹ค์ธก)

  1. _ensure_fusion() ์ด ์ž๊ธฐ ์ž์‹ ์„ ๋ถˆ๋ €๋‹ค โ€” DDL 1ํšŒ ์‹คํ–‰์œผ๋กœ ๋ฐ”๊พธ๋ฉฐ ์ผ๊ด„์น˜ํ™˜์ด ํ•จ์ˆ˜ ์•ˆ์ชฝ ํ˜ธ์ถœ๊นŒ์ง€ ๋จน์—ˆ๋‹ค. ์ฆ์ƒ = ํ†ตํ•ฉํ˜„์žฅ API 500 "maximum recursion depth exceeded". ์ผ๊ด„์น˜ํ™˜ ๋’ค์—” ๊ทธ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ๋ˆˆ์œผ๋กœ ๋ณธ๋‹ค.
  2. flask_restplus ๋ผ์šฐํŠธ ๋ณ€์ˆ˜๋Š” ๋ฉ”์„œ๋“œ ์ธ์ž๋กœ ๋ฐ›์•„์•ผ ํ•œ๋‹ค โ€” def get(self) ๋กœ ๋‘๋ฉด 500 get() got an unexpected keyword argument 'worklog_no'. ํ…Œ์ŠคํŠธ์—” ํ†ตํ™” ํ•ญ๋ชฉ์ด 0๊ฑด์ด๋ผ ์šด์˜์—์„œ ์ฒ˜์Œ ๋“œ๋Ÿฌ๋‚ฌ๋‹ค.
  3. ๐Ÿ”‘๊ทผ๊ฑฐ(excerpt)๋Š” ์ „์‚ฌ๋ฌธ์˜ ์ธ์šฉ์ด ์•„๋‹ˆ๋ผ ใ€Œ์š”์•ฝใ€์ด๋‹ค โ€” ํ†ต์งธ๋กœ ์ฐพ๋Š” ํ˜•๊ด‘์€ ์‹ค์ธก ๋งค์น˜ 0%. โ†’ ๊ตฌ๋‘์ ยท๊ณต๋ฐฑ์„ ๋บ€ ๊ธ€์ž์—ด๋ผ๋ฆฌ ์ตœ์žฅ ๊ณตํ†ต ์กฐ๊ฐ(6์ž ์ด์ƒ)์„ ์•ž์—์„œ๋ถ€ํ„ฐ ํ›‘๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ต์ฒด โ†’ ์šด์˜ 12๊ฑด ์‹ค์ธก 12๊ฑด ์ „๋ถ€ ํ˜•๊ด‘ ยท ๊ทผ๊ฑฐ ๊ธ€์ž์˜ 91% ๋ฎ์Œ. โš ์ค‘๊ฐ„์— ํŒŒ์ด์ฌ ์ธก์ •์ด SKIP + "*".join(...) ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ ๋•Œ๋ฌธ์— ใ€Œ๊ฐ ๊ธ€์ž 0ํšŒ ์ด์ƒใ€ ์ •๊ทœ์‹์ด ๋ผ 92%๋ผ๋Š” ๊ฐ€์งœ ํ•ฉ๊ฒฉ์„ ๋ƒˆ๋‹ค. ๋งค์น˜์œจ์„ ์žด ๋• ๋งŒ๋“ค์–ด์ง„ ์ •๊ทœ์‹์„ ํ•œ ๊ฑด ์ฐ์–ด์„œ ๋ˆˆ์œผ๋กœ ๋ณธ๋‹ค.
  4. ๊ฒŒ์‹œ ๋ฒ„ํŠผ ํŒ๋‹จ์€ ์นด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ใ€Œํ–‰์ด ๊ฒจ๋ƒฅํ•œ ๋ฐฉใ€์œผ๋กœ ํ•œ๋‹ค โ€” ๋ฐฉ ์—ฐ๊ฒฐ์ด ๋‚˜์ค‘์— ๋ฐ”๋€Œ๋ฉด ๋‘˜์ด ์–ด๊ธ‹๋‚˜๊ณ , ๋ฒ„ํŠผ์€ ์‹ค์ œ๋กœ ๋‚˜๊ฐˆ ๊ณณ์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค.

๐Ÿ”ด ์ง€๊ธˆ ์ด ๊ธฐ๋Šฅ์˜ ์‹ค์งˆ ๋ณ‘๋ชฉ โ€” ์นดํ†ก ๊ฒŒ์‹œ๊ธ€ ๋ฐฉ 3๊ฐœ๊ฐ€ ใ€Œํ˜„์žฅ ๋ฏธ์—ฐ๊ฒฐใ€

์šด์˜ ์‹ค์ธก = ๊ฒŒ์‹œ๊ธ€ ๋ฐฉ 5๊ฐœ ์ค‘ ์ž์žฌ๋ฐฉ 2๊ฐœ(์•„์ด๋น„์ ผยท์˜ค์— ์”จ)๋Š” ํ˜„์žฅ์ด ์—†๋Š” ๊ฒŒ ๋งž๊ณ , ๋‚˜๋จธ์ง€ 3๊ฐœ๊ฐ€ ํ˜„์žฅ์ด ์žˆ๋Š”๋ฐ๋„ ๋ฏธ์—ฐ๊ฒฐ์ด๋‹ค. โ†’ ๊ทธ ๋ฐฉ๋“ค์˜ ๊ฒŒ์‹œ๊ธ€์ด ํ˜„์žฅ ์นด๋“œ์— ์•ˆ ๋ถ™์–ด ์ฝ”๋””๊ฐ€ ์ •๋ฆฌํ•  ์žฌ๋ฃŒ๊ฐ€ ์—†๋‹ค(๋ฐฐ์น˜๊ฐ€ 8ํ˜„์žฅ์„ ๊ทธ๋ƒฅ ๊ฑด๋„ˆ๋›ด๋‹ค). ๊ทผ๋ณธ์›์ธ = ๋™๋ช… ํ˜„์žฅ์ด ์—ฌ๋Ÿฟ์ด๋ผ _match_room_field ์˜ ใ€Œ์œ ์ผ ์Šน์žใ€ ๊ฒŒ์ดํŠธ์— ๊ฑธ๋ฆฐ๋‹ค. ์‹ค์ธก = ใ€ŒSGC ๊ด‘์ฃผ ์šฉ๋‘๋™ใ€ 3๊ฑด(๋ณธ๊ฑด MH 1 + AS 2 ยท #2129/#2151/#2164) ยท ใ€Œ๊ธˆ๊ฐ• ๋ถ€์‚ฐ ์—์ฝ”ใ€ 2๊ฑด ยท ใ€Œ๋Œ€์šฐ ์šฉ์ธใ€ 2๊ฑด. โณํŽ˜ํŽ˜ ํŒ๋‹จ ํ•„์š” โ€” ์นดํ†ก๋ฐฉ์„ ๋ณธ๊ฑด์— ๋ถ™์ผ์ง€ AS ์— ๋ถ™์ผ์ง€๋Š” ์—…๋ฌด ํŒ๋‹จ์ด๋‹ค(์ง„ํ–‰์ค‘์œผ๋กœ ๋œจ๋Š” ๊ฑด AS ์ชฝ #2164 ์ธ๋ฐ ๊ฒŒ์‹œ๊ธ€์˜ ์ฃผ์ธ์€ ๋ณดํ†ต ๋ณธ๊ฑด์ด๋‹ค). ์ •ํ•ด์ฃผ๋ฉด kakao_board.field_no ์ง์ ‘ ์—ฐ๊ฒฐ ๋˜๋Š” ๋งค์นญ ๊ทœ์น™์— ๊ทธ ๊ธฐ์ค€์„ ๋„ฃ๋Š”๋‹ค.

โœ… 1-2์ฐจ ์ถ”๊ฐ€ (๊ฐ™์€ ๋‚ , ํŽ˜ํŽ˜ ์ง€์‹œ) โ€” ๋ณธ๊ฑด ์šฐ์„  ๊ทœ์น™ + ์ˆ˜๋™ ์—ฐ๊ฒฐ + ๊ฒŒ์‹œ ์Šน์ธ

[ํŽ˜ํŽ˜] "์นดํ†ก๋ฐฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณธ๊ฑด์— ๋ถ™์ด๋Š” ๊ฒƒ์„ ๊ทœ์น™์œผ๋กœ ํ•œ๋‹ค. ์ดํ›„์—๋„ ๊ทœ์น™ ํ•ด๋‹น์ด ์—†์–ด ๋ฏธ์—ฐ๊ฒฐ ๋˜๋Š” ๊ฒƒ์€ ํ˜„์žฅ์—ฐ๊ฒฐ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์„œ ๋‚ด๊ฐ€ ์ง์ ‘ ์—ฐ๊ฒฐํ•ด์ฃผ๊ฒ ๋‹ค." + "ํ†ตํ™” ๋‚ด์šฉ ํ™•์ธ ์—ฌ๋ถ€์— ์ œ์™ธ ๋ฒ„ํŠผ๋งŒ ์žˆ๊ณ  ์Šน์ธ ๋ฒ„ํŠผ์ด ์—†๋‹ค."

๋ฐฐํฌ = master 61a149aยท9010333 โ†’ deploy-live efc046eยทf362fe0.

โœ… 1-3์ฐจ (๊ฐ™์€ ๋‚ ) โ€” ์™„๋ฃŒ ํ˜„์žฅ๋„ ์—ฐ๊ฒฐ๋œ AS ๊ฐ€ ์ง„ํ–‰์ค‘์ด๋ฉด ์‚ด๋ฆฐ๋‹ค

[ํŽ˜ํŽ˜] "์™„๋ฃŒ ํ˜„์žฅ๋„ AS๊ฐ€ ๋ฐœ์ƒ ๋ฐ ๋ณธ๊ฑด๊ณผ ์—ฐ๊ฒฐ์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ์œผ๋ฉด ์ง€๊ธˆ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐฉ ํ™œ์„ฑํ™”ํ•˜๊ธฐ." + ๊ทธ๋ฆด๋ง ํ™•์ธ. ๋ฐฐํฌ = master 628a15f โ†’ deploy-live af128b5.

โœ… 3์ฐจ (2026-08-21) โ€” ์ˆ˜์‹œ(5๋ถ„)ยท์ฃผ๊ธฐ(30๋ถ„) ์ˆ˜์ง‘ ์ƒ์‹œํ™” + ํ†ตํ™” 143๊ฑด ํšŒ์ˆ˜ + ํ˜„์žฅ๋ณ„ ๋ฐ˜์˜ ์™„๋ฃŒ

2์ฐจ โณใ€ŒํŽ˜ํŽ˜๊ฐ€ ํฐ์„ ๊ฝ‚์•„ ์ค˜์•ผ ํ†ตํ™”๊ฐ€ ๋“ค์–ด์˜จ๋‹คใ€๊ฐ€ ํ•ด์†Œ(๋ฌด์„  adb ์ ‘์†ํฌํŠธ ์ž๋™ํƒ์ƒ‰). ํ†ตํ™” 143๊ฑด ์ ์žฌ โ†’ autolink 27๊ฑด ์—ฐ๊ฒฐ โ†’ ์ •๋ฆฌ๋ณธ 19ํ–‰. PFS ์ œํ’ˆ์ฝ”๋“œ ๋ณ€๊ฒฝ 0 โ†’ deploy-live ์—†์Œ(๋ฐ์ดํ„ฐ ๋ฐ˜์˜์ด ๊ณง ์šด์˜ ๋ฐ˜์˜). ๊ฒ€์ฆ = ์šด์˜ ํ†ตํ•ฉํ˜„์žฅ ํƒญ ๋ Œ๋”ยท์ฝ˜์†” 0. ์›๋ฌธยท๋ฏธ๊ฒฐ(๋ฌด์„ adb Wi-Fi ์ข…์† / ๋ถ„๋ฅ˜ ํ˜„์žฅ๋ช… ํ’ˆ์งˆ) โ†’ projects/talklog/handoff.md NOW 2026-08-21 ยท projects/talklog/rules.md ๐Ÿ†•.

โœ… 2์ฐจ (2026-08-19) โ€” Groq ์ „์‚ฌ + ํ™”์ž๋ถ„๋ฆฌ ยท adb ์ฆ‰์‹œ์ˆ˜์ง‘ ยท 30๋ถ„ ๋ฐฐ์น˜ ์™„๋ฃŒ

์ปค๋ฐ‹ = talklog 7202a6c. PFS ์ œํ’ˆ์ฝ”๋“œ ๋ณ€๊ฒฝ 0 โ†’ ์šด์˜๋ฐฐํฌ ์—†์Œ(1์ฐจ๊ฐ€ ๋งŒ๋“  call_transcript.segs APIยทํ™”๋ฉด์„ ๊ทธ๋Œ€๋กœ ์ฑ„์šฐ๋Š” ์ž‘์—…์ด๋ผ ์„œ๋ฒ„ ์ชฝ์— ๊ณ ์น  ๊ฒŒ ์—†๋‹ค). ์‚ฌ์ดํŠธ๋งต ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€54ยท๋ฏธ๋ฐ˜์˜ 2 = ์ „๋ถ€ ๋‚จ์˜ ์„ธ์…˜ ๊ฒƒ(AL๋ฐœ์ฃผ์„œ).

โ‘  ์ฐฉ์ˆ˜ ์ „ ์‹ค์ธก ๋ฒค์น˜ (ํŽ˜ํŽ˜ ์ง€์‹œ โ€” ์‹คํ†ตํ™” 5๊ฑด ยท server/_bench_stt_diar.py)

ํ•ญ๋ชฉ ๊ฒฐ๊ณผ
Groq ์ „์‚ฌ ์†๋„ 5๋ถ„ ํ†ตํ™” 1.4์ดˆ(์‹ค์‹œ๊ฐ„ 210๋ฐฐ) ยท 1๋ถ„ ํ†ตํ™” 1.0~1.4์ดˆ. ๋ณ€ํ™˜(ffmpeg) 0.1~0.8์ดˆ
์ „์‚ฌ ํ’ˆ์งˆ ๋กœ์ปฌ medium ๋Œ€๋น„ ๋ฌธ์ž ์œ ์‚ฌ๋„ 0.83~0.90(๊ธ€์ž์ˆ˜๋„ ๋น„์Šท) ยท ๋ฌด๋ฃŒ
ํ™”์ž๋ถ„๋ฆฌ ์†๋„ RTF 0.05(1๋ถ„ ํ†ตํ™” 0.8์ดˆ, ์ „๋Ÿ‰ ๋กœ์ปฌยท๋ฌด๋ฃŒ)
ํ™”์ž๋ถ„๋ฆฌ ์ •ํ™•๋„ 88.0%(์ •๋‹ต ๋ผ๋ฒจ 4ํ†ตํ™” 98์„ธ๊ทธ๋จผํŠธ ๋Œ€๋น„, 2๋ผ๋ฒจ ์ตœ์ ๋Œ€์‘)

โ‘ก ๋งŒ๋“  ๊ฒƒ

โ‘ข ๐Ÿ”ด ์ด ๊ธฐ๋Šฅ์˜ ์ง„์งœ ๋ณ‘๋ชฉ์„ ์ฐพ์•˜๋‹ค โ€” ํ†ตํ™” ์ˆ˜์ง‘์ด 8/12๋ถ€ํ„ฐ ๋ฉˆ์ถฐ ์žˆ๋‹ค

โ‘ฃ ๊ฒ€์ฆ

โ‘ค โณ ๋‚จ์€ ๊ฒƒ

๐Ÿ†• NOW (2026-08-19 ยท 3์ฐจ) โ€” ๊ฒฌ์  v2 ๊ทธ๋ฃน ์†Œ๊ณ„ ์‹ค์‹œ๊ฐ„ ๊ฐฑ์‹  + ์ถœ๋ ฅ ๋‹ด๋‹น์ž์นธ ์ง์ฑ… โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA(qa_helper, /estimate/modify-v2/749) 2๊ฑด = โ‘ ใ€Œ310,000์› ์†Œ๊ณ„๊ฐ€ ์‹ค์ œ ๊ธˆ์•ก๊ณผ ์ž˜ ์•ˆ ๋งž๋Š”๋‹ค. ๊ฒ€ํ†  ํ›„ ์ˆ˜์ •๋ณด์™„. ์šด์˜๋ฐฐํฌ. 749 ๊ฒฌ์  ๊ธฐ์ค€ใ€ โ‘กใ€Œ๊ฒฌ์ ์„œ ์—‘์…€ํŒŒ์ผ์—์„œ ๋‹ด๋‹น์ž ์ด๋ฆ„๋งŒ ๋‚˜์˜ค๊ณ  ์ง์ฑ…์ด ๊ฐ™์ด ์•ˆ ๋‚˜์˜จ๋‹ค. ๊ธฐ์กด์—” ใ€Œ์€์ง€ํ˜ธ ํŒ€์žฅใ€์‹์œผ๋กœ ์ด๋ฆ„+๋„์–ด์“ฐ๊ธฐ+์ง์ฑ…์ด์—ˆ๋‹ค. ์ด๊ฒƒ๋„ ์ˆ˜์ • ํ›„ ์šด์˜๋ฐฐํฌใ€.

๋ฐฐํฌ = master 4114abf โ†’ deploy-live 7aab4ad(estimate_regist_v2.js + estimate_dao.py 2ํŒŒ์ผ ํฌ์›Œ๋“œ, --detach ์›ŒํฌํŠธ๋ฆฌ). DB ๋ณ€๊ฒฝ 0 ยท 749 ๋ฐ์ดํ„ฐ ๋ฌด๋ณ€๊ฒฝ(๊ฒ€์ฆ ํ›„ ์žฌ์กฐํšŒ๋กœ ํ™•์ธ).

๐Ÿ†• NOW (2026-08-19 ยท 2์ฐจ) โ€” ๊ฒฌ์  list-v2 ์ž…๊ธˆ์—ฌ๋ถ€ = ์›”๋งˆ๊ฐ ์ดˆ์•ˆ ๊ธฐ์ค€ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] "pfs ๊ฒฌ์ ์„œ ์›”๋งˆ๊ฐ ์ดˆ์•ˆ ๊ธฐ์ค€์œผ๋กœ estimate/list-v2 ์— ์ž…๊ธˆ/๋ฏธ์ž…๊ธˆ ์—ฌ๋ถ€ ํ‘œ์‹œ ๋ณ€๊ฒฝํ•ด์ค˜. ์šด์˜๋ฐฐํฌ ์ž‘์—…."

๋ฐฐํฌ = master d2940ee โ†’ deploy-live 3ed47d7(estimate_dao.py + estimate_list_v2.html 2ํŒŒ์ผ ํฌ์›Œ๋“œ, --detach ์›ŒํฌํŠธ๋ฆฌ). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-19) โ€” AL๋ฐœ์ฃผ์„œ ๋“œ๋กญ๋ฆฌ์ŠคํŠธ ๊ทผ๋ณธ์ˆ˜์ • + ํ˜„์žฅ๋ช… ๋“œ๋กญ๋ฆฌ์ŠคํŠธ ์‹ ์„ค โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA(qa_helper, /field/al-orderpaper ํ’ˆ๋ช…์นธ) = "๋“œ๋กญ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ ์•ˆ๋œ๋‹ค. ํ”„๋ ˆ์ž„์— ๊ฐ‡ํ˜€์„œ ์กฐ๊ธˆ๋งŒ ์›€์ง์—ฌ๋„ ๋ชจ๋‹ฌ์ด ๋‹ซํžˆ๋Š” ํ˜„์ƒ์ด ๋นˆ๋ฒˆ. ๊ฐ€์šด๋ฐ ํœ ๋„ ์ œ๋Œ€๋กœ ์ž‘๋™ ์•ˆ๋จ. ๋ณด์ด๋Š” ๋†’์ด๋„ 2๋ฐฐ๋กœ. ์ˆ˜์ • ํ›„ ์šด์˜๋ฐฐํฌ." + ์ถ”๊ฐ€ = "ํ˜„์žฌ ํŽ˜์ด์ง€ ๋‹ค๋ฅธ ๋“œ๋กญ๋ฐ•์Šค๋“ค๋„ ๋™์ผ ๋ฌธ์ œ โ€” ๋ชจ๋‘ ์ˆ˜์ •๋ณด์™„" + "ํ˜„์žฅ๋ช… ๋“œ๋กญ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฒฌ์ ์„œ ํ˜„์žฅ๊ฒ€์ƒ‰ ๋ฆฌ์ŠคํŠธ ๊ธฐ์ค€์œผ๋กœ".

๋ฐฐํฌ = master de0ba09 โ†’ deploy-live ec2c87a(al_orderpaper.js + field_al_orderpaper.html 2ํŒŒ์ผ ํฌ์›Œ๋“œ). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-18 ยท 3์ฐจ) โ€” ๊ฒฌ์  v2 ์น˜์ˆ˜/์ฝ”๋„ˆ ์นธ ํœ  ์Šคํฌ๋กค ๊ฐ’์ฆ๊ฐ ์ฐจ๋‹จ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA(qa_helper, /estimate/modify-v2/751 ์น˜์ˆ˜3 ์ž…๋ ฅ) = "๋ชจ๋“  ์น˜์ˆ˜์นธ์—์„œ ์Šคํฌ๋กค๋กœ ์ˆซ์ž ์ฆ๊ฐ์ด ๋˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค. ์น˜์ˆ˜์ž…๋ ฅ์นธ์—์„œ ์Šคํฌ๋กค ์‚ฌ์šฉ์€ ๊ธˆ์ง€๋‹ค. ์ˆ˜์ •๋ณด์™„ํ•ด. ์šด์˜๋ฐฐํฌ."

๋ฐฐํฌ = master 387ba62 โ†’ deploy-live b827551(estimate_regist_v2.js 1ํŒŒ์ผ ํฌ์›Œ๋“œ ยท ์ˆœ์ˆ˜ 7์ค„ ์ถ”๊ฐ€). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-18 ยท 2์ฐจ) โ€” ์›”๋งˆ๊ฐ UI: ๋งˆ๊ฐ์›” ์ขŒ์šฐ ํ™”์‚ดํ‘œ + ์ปฌ๋Ÿผ ํญ ์กฐ์ • โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA = "๋งˆ๊ฐ์›” ์ด๋™์ด ๋ถˆํŽธํ•˜๋‹ค. ๊ธฐ์กด ํ˜•ํƒœ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ์ขŒ์šฐ ํ™”์‚ดํ‘œ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ. ํ˜„์žฅ๋ช… ๊ฐ€๋กœํญ ์ ˆ์•ฝ. ์™„๋ฃŒ/์ฒญ๊ตฌ์ผ ๊ฐ€๋กœํญ ์ฆ๊ฐ€. ์šด์˜ ๋ฐฐํฌ."

๋ฐฐํฌ = master b60787d โ†’ deploy-live a8d8f30(ํ…œํ”Œ๋ฆฟ 1ํŒŒ์ผ ํฌ์›Œ๋“œ). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-18) โ€” ์›”๋งˆ๊ฐ 26๋…„ 1~7์›” ์šด์˜ 1์ฐจ ์ดˆ์•ˆ ์‹œ๋”ฉ ์™„๋ฃŒ (์ƒ์„ธ: session-2026-08-18-monthly-close-prod-seed.md)

07-29์— ์ฝ”๋“œ๋งŒ ์šด์˜๋ฐฐํฌํ•˜๊ณ  ๋ฏธ๋ค„๋‘” ใ€Œ๋งˆ๊ฐ ๋ฐ์ดํ„ฐ ์‹œ๋”ฉใ€์„ NAS ๋งˆ๊ฐํ‘œ ๊ธฐ์ค€์œผ๋กœ ์ง‘ํ–‰. ๋งˆ๊ฐ 16๊ฑดยท78ํ–‰.

๐Ÿ†• NOW (2026-08-10 ยท 5์ฐจ) โ€” ์ˆจ๊น€ ํ˜„์žฅ ๊ด€๋ฆฌ ๋ชจ๋‹ฌ = ๊ฒฌ์ ์„œ ํ˜„์žฅ ๊ฒ€์ƒ‰ ํ‘œ ์–‘์‹(๊ธฐ๊ฐ„+ํ˜„์žฅ๋ช… ๊ฒ€์ƒ‰, ๊ธฐ๋ณธ 3๊ฐœ์›”) โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA(qa_helper, /field/orderpaper ใ€Œ๐Ÿ—‚ ์ˆจ๊น€ ํ˜„์žฅ ๊ด€๋ฆฌใ€ ๋ฒ„ํŠผ) = "์ˆจ๊น€ ํ˜„์žฅ ๋ชจ๋‹ฌ์„ ๊ฒฌ์ ์„œ ํ˜„์žฅ๋ช… ๊ฒ€์ƒ‰ ๋ชจ๋‹ฌ๊ณผ ๋™์ผํ•œ ํ˜•์‹์œผ๋กœ ์ˆ˜์ •ํ•ด์ค˜. ๋ชจ๋‹ฌ์— ๋ณ„๋„ ๊ฒ€์ƒ‰์ฐฝ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‚ ์งœ ๊ธฐ๊ฐ„+ํ˜„์žฅ๋ช… ๊ฒ€์ƒ‰ ์šฉ๋„. ๋ชจ๋‹ฌ ๊ธฐ๋ณธ ๋กœ๋“œ๋Š” 3๊ฐœ์›” ์ด์ „ ํ˜„์žฅ๊นŒ์ง€ ๋„์šด๋‹ค. ์šด์˜ ๋ฐฐํฌ."

๋ฐฐํฌ = master eac466b โ†’ deploy-live e965a65(2ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach worktree). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-10 ยท 4์ฐจ) โ€” ๋ฐœ์ฃผ์„œ ใ€Œ์ž…๊ณ ์ฒ˜ใ€ ํ–‰ ํŒŒ์‹ฑ โ†’ ์˜ค์— ์”จ ์ž์žฌ๊ด€๋ฆฌ๋ฅผ ์˜ค์— ์”จ ์ž…๊ณ  ์‹œํŠธ๋กœ ํ•œ์ • โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] QA(qa_helper, /omc/material ํ’ˆ๋ช…์นฉ BNS-24E117 PP) = "์›๋ถ€์ž์žฌ๋ฐœ์ฃผ์„œ ์ฝ๋Š” ์Šคํ‚ฌ ๋ณด์™„ํ•ด์ค˜. ์ด ํ’ˆ๋ชฉ์€ ํ•œ์†”์•„ํŠธ์—์„œ ํ”ผ์•ค์•Œ๋กœ ์ž…๊ณ ๋˜๋Š” ํ’ˆ๋ชฉ์ด๋‹ค. ํ’ˆ๋ชฉ ์•„๋ž˜๋กœ ๋ณ‘ํ•ฉ๋œ ๋ผ์ธ์ด ์žˆ๊ณ , ์ž…๊ณ ์ฒ˜ ์…€๊ณผ ์˜ค๋ฅธ์ชฝ์— ์—…์ฒด๋ช…์…€, ๊ทธ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค. ์ž…๊ณ ์ฒ˜ ํ–‰ ์œ„์ชฝ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ฃผ์„œ ํ•ด๋‹น ํƒญ ์—…์ฒด์—์„œ ์ž…๊ณ ์ฒ˜ ์—…์ฒด๋กœ ๋ฐœ์†ก๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ BNS-24E117 PP์€ ์˜ค์— ์”จ๋กœ ๊ฐ€๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ  ํ”ผ์•ค์•Œ์ด ๋งž๊ณ , ์˜ค์— ์”จ ์ž์žฌ ๊ด€๋ฆฌ์—๋Š” ๋ณด์ด๋ฉด ์•ˆ๋œ๋‹ค. ์ˆ˜์ • ์šด์˜ ๋ฐฐํฌ."

๋ฐฐํฌ = master ba33cfc โ†’ deploy-live efa4593(5ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach worktree). ์šด์˜ RDS ๋Š” ๋™๊ธฐํ™”๊ฐ€ ์„ ์ ์šฉ(orderpaper.receiver ๋ฉฑ๋“ฑ ALTER) โ€” ๋ฐฐํฌ ์ „์— ์ปฌ๋Ÿผ์ด ์žˆ์–ด์•ผ DAO ๊ฐ€ SELECT ํ•œ๋‹ค.

๐Ÿ†• NOW (2026-08-10 ยท 3์ฐจ) โ€” ์ƒ์‚ฐํ˜„ํ™ฉ ๋ ˆํฌํŠธ ์•„์ด๋น„์ ผ๊ธ€๋กœ๋ฒŒ ์—…์ฒด๋ช… 2์ค„ ํ‘œ๊ธฐ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

[ํŽ˜ํŽ˜] ์ง€์‹œ = "field/print/status ์•„์ด๋น„์ ผ๊ธ€๋กœ๋ฒŒ ์—…์ฒด๋ช…์ด ๊ธธ์–ด์„œ ์…€์„ ๋„˜์–ด์„ ๋‹ค. ์ค„๋ฐ”๊ฟˆ ์ ์šฉ. ์•„์ด๋น„์ ผ ํ›„์— ๊ธ€๋กœ๋ฒŒ์€ ๋‹ค์Œ์ค„. ์ด ์—…์ฒด๋งŒ. ์šด์˜๋ฐฐํฌ."

๋ฐฐํฌ = master 4406fe2 โ†’ deploy-live 09c60ff(1ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach worktree). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-10 ยท 2์ฐจ) โ€” ๊ฒฌ์  ์žฌ์ž‘์„ฑ์— ใ€Œ๋‚ด์šฉ ๋ณต์‚ฌใ€ ์„ ํƒ ์‹ ์„ค + ์ฐจ์ˆ˜ ๋ฒ„ํŠผ ํ‘œ๊ธฐยท์œ„์น˜ยท๋ชจ๋‹ฌ ํญ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ = "ํ•จ์ • ์ฃผ์˜ํ•˜๊ณ  pfs ์— ๊ธฐ๋Šฅ์œผ๋กœ ์ถ”๊ฐ€ํ•ด๋ผ. ๋ณธ๊ฑด ๊ฒฌ์ ์„œ ์ƒˆ๋กœ ์ƒ์„ฑ์‹œ ๋ณต์‚ฌ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (์‚ฌ์šฉ์ž ์„ ํƒ์˜ˆ์ •, 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ) ์šด์˜๋ฐฐํฌ." + QA 3๊ฑด(/estimate/list-v2) = "์ฐจ์ˆ˜ 1ยท์ฐจ์ˆ˜ 2 ๋กœ ํ‘œ๊ธฐ๋˜๋Š” ๋ฒ„ํŠผ์„ 1์ฐจยท2์ฐจ๋กœ", "๋ฒ„ํŠผ์„ ์‚ญ์ œ ์™ผ์ชฝ์œผ๋กœ", "์ฐจ์ˆ˜ ์ด๋ ฅ ๋ชจ๋‹ฌ ๊ฐ€๋กœํญ โ€” ์ค„์ด ๋ฐ€๋ฆฐ๋‹ค".

๋ฐฐํฌ = master e25e3e7 โ†’ deploy-live e659f80(4ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ, --detach worktree). DB ๋ณ€๊ฒฝ 0.

๐Ÿ†• NOW (2026-08-10) โ€” ๋Œ€์šฐ ์šฉ์ธ MH ๊ฒฌ์ ์„œ 1์ฐจ(708) โ†’ 2์ฐจ ์žฌ์ž‘์„ฑ๊ฑด(747) ๋‚ด์šฉ ๋ณต์‚ฌ โœ…์šด์˜ ๋ฐ˜์˜ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ = "pfs ์šด์˜์„œ๋ฒ„ ์—๋„ฅ์Šค ๋Œ€์šฐ ์šฉ์ธ ๊ฒฌ์ ์„œ ๋ณธ๊ฑด 1์ฐจ๋ฅผ 2์ฐจ ๋ณธ๊ฑด ์žฌ์ž‘์„ฑ๊ฑด์— ๋‚ด์šฉ ๋ณต์‚ฌํ•ด. ์šด์˜ ์ž‘์—… ์Šน์ธ". ์ฝ”๋“œ ๋ณ€๊ฒฝ 0 โ€” ์šด์˜ RDS ๋ฐ์ดํ„ฐ ์ž‘์—…๋งŒ(๋ฐฐํฌ ์—†์Œ, ์‚ฌ์ดํŠธ๋งต ๋ฌด๊ด€).

๐Ÿ†• NOW (2026-08-10) โ€” ์ƒ์‚ฐ ์Šคํ‹ฐ์ปค ์ถœ๋ ฅ ํšŒ์ˆ˜ ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ(์ด๊ด€๋ฆฌ์ž ์ „์šฉ) โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ QA(qa_helper, ๋„์–ด ํ‘œ์˜ โœ“2ํšŒ 09 Aug 2026 ์‹ ๋™์Šน ์…€) = "์ถœ๋ ฅ ํšŒ์ˆ˜ ์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•ด์ค˜. ๊ด€๋ฆฌ์ž๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ. ๊ด€๋ฆฌ์ž ์•„์ด๋””๋งŒ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •. ํŽ˜์ด์ง€ ์ด๋™ ๋ฒ„ํŠผ ํ–‰์˜ ์šฐ์ธก ๋์— ์ถ”๊ฐ€." (1์ฐจ ์ง€์‹œ์—” ์šด์˜๋ฐฐํฌ ๋ง์ด ์—†์–ด ํ…Œ์ŠคํŠธ๊นŒ์ง€๋งŒ ํ–ˆ๊ณ , ๊ฐ™์€ ๋‚  ํŽ˜ํŽ˜๊ฐ€ ์ฑ„ํŒ…์— ใ€Œ์šด์˜๋ฐฐํฌ ์ง„ํ–‰ใ€ ์ง์ ‘ ์ž…๋ ฅ โ†’ ๋ฐฐํฌ.)

๋ฐฐํฌ = master b590f3e โ†’ deploy-live 84fcb2f(3ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ). ์šด์˜ RDS DDL ์„ ํ–‰ ์ ์šฉ ์™„๋ฃŒ. ๐Ÿ”‘๊ฐ™์€ ํŒŒ์ผ์— ์‹ค๋ ค 8/7 ๋ฐฑ๋กœ๊ทธ๋„ ํ•จ๊ป˜ ๋ฐ˜์˜๋๋‹ค = sticker_controller sync target ํ•œ ์ค„ (์šด์˜ ํ™”๋ฉด ใ€Œ์—‘์…€ ๋™๊ธฐํ™”ใ€๊ฐ€ ํ…Œ์ŠคํŠธ DB ๋ฅผ ๊ฐฑ์‹ ํ•˜๋˜ ๊ฒƒ โ†’ FLASK_CONFIGURATION ๊ธฐ์ค€ prod/test ๊ฒฐ์ •). โ†’ ์‚ฌ์ดํŠธ๋งต ๋ฏธ๋ฐ˜์˜ 1 โ†’ 0.

๐Ÿ†• NOW (2026-08-10) โ€” ์ƒ์‚ฐ ์Šคํ‹ฐ์ปค ํ˜„์žฅ ๊ฒ€์ƒ‰์„ ๊ฒฌ์ ์„œ ๋“ฑ๋ก๊ณผ ๊ฐ™์€ ํ‘œ ์–‘์‹์œผ๋กœ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ QA(qa_helper, #stk-field-input) = "๊ฒฌ์ ์„œ ๋“ฑ๋ก์˜ ํ˜„์žฅ๋ช… ๊ฒ€์ƒ‰ ๋ฆฌ์ŠคํŠธ ์–‘์‹์„ ์—ฌ๊ธฐ์— ์ ์šฉํ•ด์ค˜. ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜์˜ค๊ณ  ๋‚ด์šฉ์ด ์ž˜ ์•ˆ ๋ณด์ž„. ์šด์˜๋ฐฐํฌ"

๋ฐฐํฌ = master fa34a53+cda67b2+582593a โ†’ deploy-live ae9e767(2ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ ยท ์ž„์‹œ worktree).

๐Ÿ†• NOW (2026-08-10 ยท 3์ฐจ) โ€” ํ’ˆ๋ช… ์ธ๋ผ์ธ ํŽธ์ง‘ ์ „ ํ•ญ๋ชฉ ํ™•๋Œ€ + ์‹œํŠธ ์ž…๊ณ ์ผ์ • ๋ณ‘ํ•ฉ ์ฃผ์„ํ–‰ ์ œ์™ธ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ = "์ž‘๋™ ํ™•์ธ ์™„๋ฃŒ. ๋ชจ๋“  ํ•ญ๋ชฉ ์ž์žฌ๊ด€๋ฆฌยท์˜ค์— ์”จ ์ž์žฌ๊ด€๋ฆฌ์—์„œ ํ’ˆ๋ช… ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ฒŒ. ํ”ผ์•ค์•Œ๊ฑด : ์‹œํŠธ๊ฐ€ ํฌํ•จ๋œ ํ–‰์ด ๊ธฐ์กด ๋ธ”๋ก์–‘์‹์ด ์•„๋‹Œ ๋ณ‘ํ•ฉ๋œ ํ–‰์ด๋ฉด ์ œ๊ฑฐํ•œ๋‹ค. ์‹œํŠธ ์ž…๊ณ  ์ผ์ •์— ๋Œ€ํ•œ ์ •๋ณด๋‹ค." ์šด์˜๋ฐฐํฌ.

๋ฐฐํฌ = master d1cb28e โ†’ deploy-live b295283(2ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ ยท --detach worktree).

๊ฒ€์ฆ = scripts/_omc_material_check.py ํ…Œ์ŠคํŠธยท์šด์˜ ALL PASS(ํ’ˆ๋ช…์นธ ์ „๋Ÿ‰ ํŽธ์ง‘ ๊ฐ€๋Šฅยท์‹œํŠธ ์ฃผ์„ํ–‰ 0) + ์‹ ์„ค scripts/_pnr_sheet_row_probe.py ํŒŒ์„œ ์ž์ฒด๊ฒ€์‚ฌ(ํ•ฉ์„ฑ 4์ผ€์ด์Šค + NAS ์‹คํŒŒ์ผ ๋Œ€์กฐ) ALL PASS. ์‚ฌ์ดํŠธ๋งต = ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€50ยท๋ฏธ๋ฐ˜์˜ 0.

โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ(ํ’ˆ๋ช… ํด๋ฆญ ํŽธ์ง‘ ยท ์‹œํŠธ ๊ทธ๋ฃน์—์„œ ์ž…๊ณ ์ผ์ • ๋ฉ”๋ชจ ์‚ฌ๋ผ์กŒ๋Š”์ง€).

๐Ÿ†• NOW (2026-08-10 ยท 2์ฐจ) โ€” ์‹œํŠธ(T) ์ž์žฌ๋ถ„๋ฅ˜ ์‹ ์„ค + ์˜ค์— ์”จ ์ „๋ฉด/ํ›„๋ฉด ํŽธ์ง‘ + ์˜ค์— ์”จ ํ™”๋ฉด ํŽผ์นจยท์‹œํŠธ ์šฐ์„  โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ QA 3๊ฑด = โ‘ "์ „๋ฉดยทํ›„๋ฉด ํ’ˆ๋ช… ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ฒŒ. ๊ธฐ์กด ์ž์žฌ๊ด€๋ฆฌํŽ˜์ด์ง€์™€ ์ˆ˜์ •๊ฒฐ๊ณผ ์—ฐ๋™. ๊ธฐ์กด ๋ฐœ์ฃผ์„œ ์ •๋ฆฌ ํƒญ์—์„œ๋„ ์ „๋ฉด/ํ›„๋ฉด ๋ถ„๋ฆฌ โ€” ์˜ค์— ์”จ ํ…Œ์ด๋ธ”๋งŒ" โ‘ก"๋ถ€์ž์žฌ๋กœ ๋ถ„๋ฅ˜๋˜๋˜ ์‹œํŠธ ํ•ญ๋ชฉ์„ ๋ณ„๋„ ์‹œํŠธ ํ•ญ๋ชฉ์œผ๋กœ ๋ถ„๋ฆฌ. ํ•„ํ„ฐ๋„ ์ถ”๊ฐ€. ์ž์žฌ๊ด€๋ฆฌ ์ „ ํŽ˜์ด์ง€ ์ ์šฉ. ๊ธฐ์กด๋ถ„ยท์ถ”๊ฐ€๋ถ„ ๋ชจ๋‘. ์‹œํŠธ๋Š” ๊ทœ๊ฒฉ์— ํ•ญ์ƒ '์‹œํŠธ'๊ฐ€ ํฌํ•จ" โ‘ข"์˜ค์— ์”จ ์ž์žฌ๊ด€๋ฆฌ ํ˜„์žฅ๋ณ„ ๊ทธ๋ฃน ๊ธฐ๋ณธ ํŽผ์นจ(์™„๋ฃŒํ•ญ๋ชฉ์€ ๊ทธ๋Œ€๋กœ ์ˆจ๊น€), ํ˜„์žฅ ์นด๋“œ ์ƒ๋‹จ์— ์‹œํŠธ ๊ทธ๋ฃน ๋จผ์ € โ€” ์˜ค์— ์”จ์—์„œ ์‹œํŠธ ์ž…๊ณ  ์ฒดํฌ์šฉ". ์šด์˜๋ฐฐํฌ.

๋ฐฐํฌ = master 945ab51+26d2533 โ†’ deploy-live 5222bed(8ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ ยท ์ž„์‹œ worktree). DB ๋ณ€๊ฒฝ 0.

๊ฒ€์ฆ = scripts/_omc_material_check.py {test|prod} ํ™•์žฅ โ€” ํ…Œ์ŠคํŠธ ALL PASS + ์šด์˜ ALL PASS. ํ…Œ์ŠคํŠธ์—์„œ๋งŒ ์“ฐ๊ธฐ ์™•๋ณต 2๊ฑด(โ‘ ์ „๋ฉด/ํ›„๋ฉด ์ €์žฅ โ†’ ์„œ๋ฒ„ ํ•ฉ์นœ ํ’ˆ๋ช… ํ™•์ธ โ†’ ์›๋ณต โ‘กํ˜ผํ•ฉ ๋ธ”๋ก์— ์‹œํŠธ ํ•œ์ • ์ƒํƒœ์ผ๊ด„ โ†’ ์‹œํŠธ 2ํ–‰๋งŒ ๋ฐ”๋€Œ๊ณ  ๋น„์‹œํŠธ 3ํ–‰ ๋ฌด๋ณ€๊ฒฝ โ†’ ์ „๋Ÿ‰ ์›๋ณต). ์šด์˜์€ ์ฝ๊ธฐ์ „์šฉ(ํŽผ์นจยท์Šคํฌ๋กคยท์ธํŽ˜์ด์ง€ ํ•จ์ˆ˜๋งŒ). ์‚ฌ์ดํŠธ๋งต = ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€50ยท๋ฏธ๋ฐ˜์˜ 1(/production/sticker, ๋‹ค๋ฅธ ์„ธ์…˜ ์ง„ํ–‰๋ถ„).

โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ โ€” /omc/material(์‹œํŠธ ๊ทธ๋ฃน ์ตœ์ƒ๋‹จยท์ „๋ฉด/ํ›„๋ฉด ํŽธ์ง‘) ยท /field/orderpaper(์‹œํŠธ ํ•„ํ„ฐยท์˜ค์— ์”จ ์ „๋ฉด/ํ›„๋ฉด). โ“ํŒ๋‹จ ํ•„์š” 1๊ฑด = ๊ทœ๊ฒฉ 9T MDF ์‹œํŠธ/์žฌ๊ณ PP(ํ”ผ์•ค์•Œ, 1ํ–‰)๋Š” ๋ณด๋“œ์ธ๋ฐ ๊ทœ๊ฒฉ์— '์‹œํŠธ'๊ฐ€ ์žˆ์–ด ์‹œํŠธ๋กœ ์žกํžŒ๋‹ค. ์•„๋‹ˆ๋ฉด ์ž์žฌ๊ด€๋ฆฌ ํƒญ์—์„œ ๊ทธ ํ–‰ ๊ทœ๊ฒฉ์„ ๊ณ ์น˜๋ฉด ๋œ๋‹ค.

๐Ÿ†• NOW (2026-08-10) โ€” QA 2๊ฑด: ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ์Šคํฌ๋กค + ์˜ค์— ์”จ ์ „์šฉ ์ž์žฌ๊ด€๋ฆฌ(/omc/material) โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ QA(qa_helper) = โ‘ "์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ํ˜„์žฌ์ƒํƒœ์—์„œ๋„ ์Šคํฌ๋กค ๋˜๊ฒŒ. ํ•˜๋‹จ ๋ฉ”๋‰ด๊ฐ€ ๋„ˆ๋ฌด ๋ฐ‘์— ์žˆ์–ด ์„ ํƒ์ด ์–ด๋ ค์›€. ํ•˜๋‹จ ์Šคํฌ๋กค ์‹œ ์‹œ์Šคํ…œ๊ด€๋ฆฌ ์ดํ•˜๋กœ๋Š” ์ƒ๋‹จ์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ฒŒ ๊ธฐ์ค€์„  ์ง€์ •. ์šด์˜๋ฐฐํฌ ์Šน์ธ" โ‘ก"์˜ค์— ์”จ ์ „์šฉ ์ž์žฌ๊ด€๋ฆฌ ํŽ˜์ด์ง€ ์ƒ์„ฑ. field/orderpaper ๋ฐœ์ฃผ์„œ ์ •๋ฆฌ ํƒญ ๊ธฐ์ค€. ์—†์–ด๋„ ๋˜๋Š” ๊ฒƒ = ํ˜„์žฅ๋ณ„/์—…์ฒด๋ณ„ ํ† ๊ธ€ยท ๋™๊ธฐํ™” ์‚ฌ์ด๋“œ์นด ๋ฒ„ํŠผยท์‚ญ์ œ/์ˆจ๊น€(์˜ค์— ์”จ ์œ ์ € ์ž‘๋™ ๋ถˆ๊ฐ€)ยท์›์ž์žฌ ํ•„ํ„ฐ ๋™์ผ ๋ผ์ธ ๋ชจ๋“  ๋ฒ„ํŠผยท๋น ๋ฅธํ•„ํ„ฐ ๋ผ์ธ. ํ’ˆ๋ช…์„ ์ „๋ฉด/ํ›„๋ฉด ์ปฌ๋Ÿผ ๋ถ„๋ฆฌํ•ด ํ›„๋ฉด ์ž์žฌ ํ‘œ์‹œ(ํ•ฉ์นœ ์ปฌ๋Ÿฌ ๋•Œ ์žˆ๋˜ ๊ด„ํ˜ธ ํ‘œ๊ธฐ ์ œ๊ฑฐ). ์šด์˜๋ฐฐํฌ"

๋ฐฐํฌ = master f956d27+3e80d33 โ†’ deploy-live f68f155(5ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ ยท ์ž„์‹œ worktree). ์šด์˜ RDS์— patch45 ์„ ์ ์šฉ(menu_catalog OMC_MATERIAL 1ํ–‰ + company_permission ์˜ค์— ์”จ(196) 1ํ–‰, ๋ฉฑ๋“ฑ).

โ‘  ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด ์Šคํฌ๋กค โ€” ๐Ÿ”ด์›๋ž˜ ์Šคํฌ๋กค์ด ์•„์˜ˆ ์•ˆ ๋๋‹ค. ํ…Œ๋งˆ๊ฐ€ .left-sidebar์™€ .scroll-sidebar๋ฅผ ๋‘˜ ๋‹ค height:100%๋กœ ์žก๋Š”๋ฐ ๊ทธ ์œ„์— ๋กœ๊ณ +์‚ฌ์šฉ์ž ๋ธ”๋ก(114px)์ด ์–นํ˜€ ์žˆ์–ด ์Šคํฌ๋กค ์˜์—ญ ์•„๋ž˜ 114px๊ฐ€ ํ™”๋ฉด ๋ฐ–์ด๊ณ , scrollHeight==clientHeight๋ผ perfect-scrollbar๊ฐ€ ์Šคํฌ๋กค์„ ์•ˆ ๋งŒ๋“ ๋‹ค(ํœ  ์‹ค์ธก scrollTop=0). โ†’ pfs_layout.css ยง10 ์‚ฌ์ด๋“œ๋ฐ” ์„ธ๋กœ flex(์Šคํฌ๋กค ์˜์—ญ = ๋‚จ์€ ๋†’์ด) + pfs.js pfsSidebarPad()๊ฐ€ ๊ธฐ์ค€์„ (์‹œ์Šคํ…œ ๊ด€๋ฆฌ)์ด ์ƒ๋‹จ์— ์„œ๋Š” ๋งŒํผ๋งŒ ์Šคํฌ๋กค๋˜๋„๋ก ul ํ•˜๋‹จ ์—ฌ๋ฐฑ์„ ๋„ฃ๋Š”๋‹ค. ๐Ÿ”‘์—ฌ๋ฐฑ์€ ๊ณ„์‚ฐ์ด ์•„๋‹ˆ๋ผ ์‹ค์ธก ๋ณด์ • โ€” ์งง์€ ์ฝ˜ํ…์ธ ๋Š” scrollHeight๊ฐ€ ์ž˜๋ฆฌ๊ณ , ps ๋ ˆ์ผ(์ ˆ๋Œ€๋ฐฐ์น˜)์ด 8.5px๋ฅผ ๋”ํ•œ๋‹ค (1์ฐจ ๊ตฌํ˜„์ด ๊ธฐ์ค€์„ ์„ 8.5px ๋„˜๊ฒจ ์˜ฌ๋ผ๊ฐ„ ์›์ธ). 2ํŒจ์Šค ๋ณด์ • ํ›„ ์˜ค์ฐจ 0.5px. ์ƒ์„ธ = rules.md ๐Ÿ†•.

โ‘ก ์˜ค์— ์”จ ์ž์žฌ๊ด€๋ฆฌ โ€” ํ™”๋ฉด์„ ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค. /omc/material(omc_controller)์ด field_orderpaper.html์„ omc_view=True๋กœ ๋ Œ๋”ํ•œ๋‹ค(์ธ๋ผ์ธ JS 1,000์ค„ ๋ณต์ œ 0). ํ…œํ”Œ๋ฆฟยทJS๊ฐ€ ๊ทธ ํ”Œ๋ž˜๊ทธ๋กœ ๊ฐˆ๋ผ์ง„๋‹ค โ€” ํƒญ๋ฐ”ยท๋‹ค๋ฅธ ํƒญ ์ปจํ…Œ์ด๋„ˆ/JS 3ํŒŒ์ผยท๋ถ„๋ฅ˜ํ† ๊ธ€ยทํˆด๋ฐ”(์ž์žฌ/์ˆจ๊น€๊ด€๋ฆฌ/์—…๋กœ๋“œ/๋™๊ธฐํ™”)ยท๋น ๋ฅธํ•„ํ„ฐ ๋ผ์ธยท์นฉยท์ƒ์„ธํ•„ํ„ฐ/์—…๋กœ๋“œ/์ˆจ๊น€ ๋ชจ๋‹ฌ ์ œ์™ธ, op-del-btnยท๋ธ”๋ก์‚ญ์ œยท์ˆจ๊น€ยทํ˜„์žฅ์—ฐ๊ฒฐ/์—ฐ๊ฒฐ๋ณ€๊ฒฝ ์ œ์™ธ(๋ฐœ์ฃผ์ฒ˜๊ฐ€ pfs ํ˜„์žฅ ๋งคํ•‘์„ ๋ฐ”๊ฟ€ ์ž๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€์‹œ ๋ชฉ๋ก์— ์—†์–ด๋„ ๋บ๋‹ค), OP_ALL์„ ์ ์žฌ ์งํ›„ ๋ฐœ์ฃผ์ฒ˜='์˜ค์— ์”จ'๋กœ ํ•„ํ„ฐ(์นด์šดํŠธยทํ•„ํ„ฐ ์˜ต์…˜๊นŒ์ง€ ์ด ์ง‘ํ•ฉ ๊ธฐ์ค€), OP_MODE='site' ๊ณ ์ •, opLoadState/opSaveState ์Šคํ‚ต(๋ฉ”์ธ ํ™”๋ฉด๊ณผ ๊ฐ™์€ localStorage ํ‚ค๋ผ ํ•ด์ œ UI ์—†์ด ํ•„ํ„ฐ์— ๊ฐ‡ํžŒ๋‹ค). ํ’ˆ๋ช… โ†’ ์ „๋ฉด/ํ›„๋ฉด 2์ปฌ๋Ÿผ(opFaceParts, ํ‘œ 7โ†’8์ปฌ๋Ÿผ). ํŽธ์ง‘(์ƒํƒœยท์ž…๊ณ ์ผยท๋ฐœ์ฃผ๋Ÿ‰ยท๋น„๊ณ )์€ ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค. - ๐Ÿ”ด๊ด„ํ˜ธ๊ฐ€ ์ž์žฌ๋„˜๋ฒ„์˜ ์ผ๋ถ€์ธ ํ–‰์ด ์‹ค์ œ๋กœ ์žˆ๋‹ค(70-113(PP)ยท์œ ์‚ฌPP(WH240EMT)) โ†’ ๊ณต๋ฐฑ ์žˆ๋Š” ' (' ๋งŒ ํ•ฉ์นœ ํ‘œ๊ธฐ๋กœ ๋ณธ๋‹ค. rules.md ๐Ÿ†•. - ์ˆจ๊น€ ํ˜„์žฅ์€ ๊ธฐ์กด๊ณผ ๋˜‘๊ฐ™์ด ์ œ์™ธํ•œ๋‹ค(์šด์˜ ์˜ค์— ์”จ 130ํ•ญ๋ชฉ ์ค‘ 99๊ฐ€ ์ˆจ๊น€ ํ˜„์žฅ โ†’ ํ™”๋ฉด์—” 4ํ˜„์žฅ 31ํ•ญ๋ชฉ). ์ˆจ๊น€์€ ใ€Œ์œ ์ง€ยท์˜ค์— ์”จ ์œ ์ € ์ž‘๋™ ๋ถˆ๊ฐ€ใ€๋ผ๋Š” ์ง€์‹œ๋Œ€๋กœ ๋ฒ„ํŠผ๋งŒ ์—†์• ๊ณ  ๋™์ž‘์€ ๊ทธ๋Œ€๋กœ ๋’€๋‹ค. - ๊ถŒํ•œ = ์˜ค์— ์”จ(196)๋งŒ ๋ถ€์—ฌ. ์—๋„ฅ์Šค(4)๋Š” OMC_SHEET/BOARD ๊ถŒํ•œ์ด ์žˆ์ง€๋งŒ ์ด ํ™”๋ฉด์€ ์ „ ํ˜„์žฅ์˜ ์˜ค์— ์”จ ๋ฐœ์ฃผ๋ฅผ ๋ณด์—ฌ์ค˜ ์ œ์™ธ. ํฌ์ธ(์ž์‚ฌ)์€ ๋ช…์‹œ row ์—†์œผ๋ฉด ๊ธฐ๋ณธ ํ—ˆ์šฉ์ด๋ผ ์ž๋™ ๋…ธ์ถœ.

๊ฒ€์ฆ = ์‹ ์„ค scripts/_omc_material_check.py {test|prod} [๋ทฐํฌํŠธ๋†’์ด](๋ฏธ์ถ”์ , ์ฝ๊ธฐ์ „์šฉ โ€” ์นด๋“œยท๋ธ”๋ก ํŽผ์นจ๊ณผ ์Šคํฌ๋กค๋งŒ ๊ฑด๋“œ๋ฆฌ๊ณ  ์ €์žฅ ๋ฒ„ํŠผ์€ ์•ˆ ๋ˆ„๋ฅธ๋‹ค, localStorage ์›๋ณต) โ€” ํ…Œ์ŠคํŠธ ALL PASS(๋ทฐํฌํŠธ 700/800/1080) + ์šด์˜ ALL PASS. ์ „๋ฉด/ํ›„๋ฉด ๊ทœ์น™ 9์ผ€์ด์Šค๋ฅผ ํŽ˜์ด์ง€์˜ opFaceParts๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•ด ๊ฒ€์ฆ + ๊ธฐ์กด /field/orderpaper ํšŒ๊ท€(ํƒญ4ยท7์ปฌ๋Ÿผยท์‚ญ์ œ๋ฒ„ํŠผยทํƒญJS 3๊ฐœ) ํฌํ•จ, ์ฝ˜์†” 0. ์‚ฌ์ดํŠธ๋งต ์žฌ๋นŒ๋“œ = ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€ 50(/omc/material ์‹ ๊ทœ, live ๋ฐ˜์˜ ํ™•์ธ)ยท๋ฏธ๋ฐ˜์˜ 1 = /production/sticker(๋‹ค๋ฅธ ์„ธ์…˜ ์ง„ํ–‰๋ถ„, ๋ณธ๊ฑด ๋ฌด๊ด€).

โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ โ€” โ‘ ์‚ฌ์ด๋“œ๋ฐ” ๋๊นŒ์ง€ ์Šคํฌ๋กค(์‹œ์Šคํ…œ ๊ด€๋ฆฌ๊ฐ€ ์ƒ๋‹จ์— ์„œ๋Š”์ง€) โ‘ก/omc/material ํ™”๋ฉด.

๐Ÿ†• NOW (2026-08-07) โ€” field/worklog 3ํƒญ ใ€Œํ†ตํ•ฉํ˜„์žฅใ€(ํ†ตํ™”+์นดํ†ก ์œตํ•ฉ) โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ = "s25์—์„œ ์ฝ๋Š” ๋‚ด์šฉ(ํ†ตํ™”์ˆ˜์ง‘ยท์นดํ†ก)๊ณผ pfs worklog ์นดํ†ก๋ฐฉ ๋‚ด์šฉ์„ ์œตํ•ฉ. ๋ชจ๋“  ์ •๋ณด๋ฅผ ํ˜„์žฅ ๋งค์นญํ•ด ํ•œ ์žฅ์†Œ์—์„œ. ๊ธฐ์กด ํƒญ ์œ ์ง€ + ์ƒˆ ํƒญ. ์ง„ํ–‰์ค‘ ํ˜„์žฅ ๊ธฐ์ค€ + ์ตœ๊ทผ ์ ‘์ˆ˜ ์žˆ๋Š” ์™„๋ฃŒํ˜„์žฅ(๋ฏธ์ถœ๊ณ ยท์‹ ๊ทœ์ ‘์ˆ˜ ์œ„์ฃผ). ์šด์˜ ๋ฐฐํฌ ์Šน์ธ."

๋ฐฐํฌ = master 844fff8 โ†’ deploy-live c6277a9(4ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ โ€” worklog dao/service/controller + field_worklog.html).

๐Ÿ†• NOW (2026-08-07) โ€” qa_helper ๋‹ค์ค‘์„ ํƒ(๋“œ๋ž˜๊ทธ ๋ฒ”์œ„์ง€์ • + Ctrl์„ ํƒ) โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ = "qahelper ์„ ํƒ๊ธฐ๋Šฅ์— ๋“œ๋ž˜๊ทธยทCtrl์„ ํƒ ์ถ”๊ฐ€. ์ƒํ™ฉ ํŒ๋‹จํ•ด์ค˜" โ†’ ํŒ๋‹จ ๋ณด๊ณ  ํ›„ "A๋กœ ์ง„ํ–‰. pfs ์šด์˜๋ฐฐํฌ".

๋ฐฐํฌ = master adca587 โ†’ deploy-live ff85064(2ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ = web/static/js/qa_helper.js + web/static/css/qa_helper.css).

A์•ˆ = N๊ฐœ๋ฅผ 1ํ•ญ๋ชฉ(๋ฌถ์Œ) + ์ฝ”๋ฉ˜ํŠธ 1๊ฐœ. ํ‘œ 20์นธ์— ์ฝ”๋ฉ˜ํŠธ 20๊ฐœ ์“ธ ์ผ์ด ์—†๋‹ค๋Š” ๊ฒŒ ๊ทผ๊ฑฐ. - Ctrl(โŒ˜)+ํด๋ฆญ = ํ›„๋ณด ํ† ๊ธ€ ยท ํ›„๋ณด๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ๊ทธ๋ƒฅ ํด๋ฆญ๋„ ํ† ๊ธ€(๋ชจ์œผ๋Š” ์ค‘์—” ํด๋ฆญ=ํ† ๊ธ€์ด๋ผ ํ›„๋ณด๋ฅผ ์žƒ์ง€ ์•Š๋Š”๋‹ค) - ๋“œ๋ž˜๊ทธ = ๋ฐด๋“œ ๋ฒ”์œ„ ยท Enter ๋˜๋Š” [๐Ÿงบ ๋ฌถ์Œ ๋‹ด๊ธฐ] ๋กœ ํ™•์ • ยท Esc = ํ›„๋ณด๋งŒ ๋น„์›€(๊ฒ€์ฆ ๋ชจ๋“œ ์œ ์ง€) - ํ›„๋ณด 0์—์„œ ๋‹จ์ˆœ ํด๋ฆญ = ์ข…์ „ ๊ทธ๋Œ€๋กœ ์ฆ‰์‹œ 1ํ•ญ๋ชฉ(๊ธฐ์กด ๋™์ž‘ ๋ฌด๋ณ€๊ฒฝ) - ํ•ญ๋ชฉ ์Šคํ‚ค๋งˆ๋Š” members:[] ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ โ†’ renderListยท๋งˆํฌ๋‹ค์šด์˜ ๊ธฐ์กด ๊ฒฝ๋กœ๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๊ณ  ๋ฌถ์Œ ๋ธ”๋ก๋งŒ ๋ง๋ถ™์ž„

๐Ÿ”‘ ๋“œ๋ž˜๊ทธ์˜ ํ•ต์‹ฌ์€ ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ "๋ฐด๋“œ ์•ˆ์— ๋ญ๊ฐ€ ์žกํžˆ๋А๋ƒ"์˜€๋‹ค. ๊ต์ฐจ ๊ธฐ์ค€์ด๋ฉด ํ‘œ ํ•˜๋‚˜์— ์กฐ์ƒ ์ปจํ…Œ์ด๋„ˆยทtbodyยทtrยทtdยท์•ˆ์ชฝ span ๊นŒ์ง€ ์ˆ˜๋ฐฑ ๊ฐœ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค โ†’ โ‘ ์™„์ „ ํฌํ•จ๋งŒ โ‘กํ›„๋ณด์˜ ์กฐ์ƒ์€ ์ œ์™ธ(=์ตœ๋ง๋‹จ๋งŒ, Set์— ์กฐ์ƒ ํ‘œ์‹œ O(nยทdepth) โ€” ์ „์ˆ˜ ๋น„๊ต O(nยฒ)๋ณด๋‹ค ์‹ธ๋‹ค) โ‘ข6px ๋ฏธ๋งŒ ์ œ์™ธ โ‘ฃ์ƒํ•œ 50(์ดˆ๊ณผ๋ถ„์€ ํ† ์ŠคํŠธ๋กœ ์•Œ๋ฆผ). ์ด๋ฒคํŠธ๋Š” mousedown/mousemove/mouseup + 5px ์ž„๊ณ„(๋ฏธ๋งŒ = ๋‹จ์ผ ํด๋ฆญ), mousedown preventDefault(์•ˆ ํ•˜๋ฉด ํŽ˜์ด์ง€ ํ…์ŠคํŠธ๊ฐ€ ๊ฐ™์ด ๋“œ๋ž˜๊ทธ ์„ ํƒ๋จ), ๋“œ๋ž˜๊ทธ ์ข…๋ฃŒ ์งํ›„ ๋”ฐ๋ผ์˜ค๋Š” click 1ํšŒ ์–ต์ œ(์•ˆ ํ•˜๋ฉด ์‹œ์ž‘์  element ๊ฐ€ ๋ค์œผ๋กœ ์žกํžŒ๋‹ค), ๋“œ๋ž˜๊ทธ ์ค‘ ํ˜ธ๋ฒ„ ํ•˜์ด๋ผ์ดํŠธ OFF.

๐Ÿ”ด ์ž์ฒด๊ฒ€์‚ฌ๊ฐ€ ์žก์€ ์‹ค๋ฒ„๊ทธ 3๊ฑด(์ „๋ถ€ rules.md ๐Ÿ†• ์— ํ•จ์ •์œผ๋กœ ๋“ฑ๋ก) 1. ๋ฐด๋“œ๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ํ›„๋ณด๋กœ ์žก๋Š”๋‹ค โ€” #qa-helper-band ๋Š” ์ž๊ธฐ rect ์•ˆ์— ์™„์ „ ํฌํ•จ + ์ž์‹ ์—†์Œ = ์™„๋ฒฝํ•œ "์ตœ๋ง๋‹จ". isInsidePanel ์ œ์™ธ ๋ชฉ๋ก์— ์ถ”๊ฐ€. 2. Enter ๊ฐ€ ํ†ต์งธ๋กœ ๋จนํ†ต โ€” picker ๊ฐ€ mousedown ์„ preventDefault ํ•˜๋‹ˆ ํฌ์ปค์Šค๊ฐ€ ์‚ฌ์ด๋“œ๋ฐ” ์ด๋ฆ„์นธ์— ๋‚จ๋Š”๋‹ค. "ํŒจ๋„ ๋ฐ–์ผ ๋•Œ๋งŒ Enter" ๋กœ ๊ฑธ์—ˆ๋”๋‹ˆ ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋‹ด์€ ๋’ค์—” ์˜์˜ ์•ˆ ๋จน์—ˆ๋‹ค โ†’ textarea ๋งŒ ์ œ์™ธ. 3. ๋ค = ใ€Œํ…์ŠคํŠธ ๋ณด๊ธฐใ€ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๊ฒ€์ฆ ๋ชจ๋“œ์—์„œ ์•ˆ ๋‹ซํ˜”๋‹ค(๊ธฐ์กด ๋ฒ„๊ทธ). ์˜ค๋ฒ„๋ ˆ์ด์— id ๊ฐ€ ์—†์–ด isInsidePanel ์— ์•ˆ ๊ฑธ๋ ธ๊ณ , document capture ์˜ stopImmediatePropagation ์ด target ์˜ onclick ๋ณด๋‹ค ๋จผ์ €๋‹ค โ†’ id="qa-helper-export" ๋ถ€์—ฌ.

๊ฒ€์ฆ - ์‹ ์„ค scripts/_qa_helper_multiselect_check.py โ€” ๋กœ๊ทธ์ธยท์„œ๋ฒ„ ์—†์ด ๋„๋Š” ์ •์  ํ•˜๋„ค์Šค(์ž„์‹œ http.server + ์‹ค์ œ js/css ๊ทธ๋Œ€๋กœ) Playwright 37ํ•ญ๋ชฉ ALL PASS. td 6๊ฐœ ๋“œ๋ž˜๊ทธ์—์„œ ์กฐ์ƒ 0 ยท 4px ๋ฐ•์Šค ์ œ์™ธ ยท 60๊ฐœ ์ค‘ ์ƒํ•œ 50 ยท ์ฝ˜์†” 0. - ์‹ ์„ค scripts/_qa_helper_live_check.py โ€” ์‹ค์„œ๋ฒ„. ํ…Œ์ŠคํŠธ 26 + ์šด์˜ 26 ALL PASS(/field/list, ์…€ 120๊ฐœ). ์šด์˜ ๋“œ๋ž˜๊ทธ = ํ›„๋ณด 50 ์ „๋ถ€ leaf(A/BUTTON/SPAN/TD/TH), ํฌํ•จ๊ด€๊ณ„ 0, ํŽ˜์ด์ง€ ์ด๋™ 0, ์ฝ˜์†” 0, localStorage ์›์ƒ๋ณต๊ตฌ. - โš ์šด์˜์—์„œ ๋Œ๋ ค๋„ ์•ˆ์ „ํ•œ ์ด์œ  = qa_helper ๋Š” ์„œ๋ฒ„์— ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ์“ฐ๊ณ (localStorage ๋ฟ), ๊ฒ€์ฆ ๋ชจ๋“œ๊ฐ€ ํด๋ฆญ์„ preventDefault ํ•ด์„œ ์กฐ์ž‘์ด ์„œ๋ฒ„๋กœ ์•ˆ ๋‚˜๊ฐ„๋‹ค. - ์‚ฌ์ดํŠธ๋งต ์žฌ๋นŒ๋“œ = ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€49ยท๋ฏธ๋ฐ˜์˜ 1(= /production/sticker ์ƒ์‚ฐ ์Šคํ‹ฐ์ปค, ์ด๋ฒˆ ๊ฑด๊ณผ ๋ฌด๊ด€ํ•œ ๋ณ„๊ฑด ๋ฐฑ๋กœ๊ทธ). meta ์— test adca587 / live ff85064 ๋ฐ˜์˜ ํ™•์ธ. - ๋ฐฐํฌ๋Š” ์ž„์‹œ worktree ๋กœ ํ–ˆ๋‹ค โ€” ์ž‘์—…ํŠธ๋ฆฌ์— ํŽ˜ํŽ˜์˜ ๋ฏธ์ปค๋ฐ‹ ์ˆ˜์ •(orderpaper-sync/*)์ด ์žˆ์–ด git checkout deploy-live ๊ฐ€ ๊ทธ๊ฑธ ๊ฑด๋“œ๋ฆฐ๋‹ค.

โณํŽ˜ํŽ˜ = ์šด์˜ ์œก์•ˆ(๐Ÿ” ํ† ๊ธ€ โ†’ Ctrl+ํด๋ฆญ ๋ช‡ ๊ฐœ โ†’ Enter โ†’ ์‚ฌ์ด๋“œ๋ฐ”์— ๐Ÿงบ ๋ฐฐ์ง€ / ํ‘œ ์œ„์— ๋“œ๋ž˜๊ทธ). โณ์•ˆ ํ•œ ๊ฒƒ = devplan ์ชฝ assets/qahelper.js ํฌํŒ…(์ง€์‹œ๊ฐ€ pfs ๋งŒ์ด๋ผ ๊ทธ๋Œ€๋กœ ๋’€๋‹ค).

๐Ÿ†• NOW (2026-08-07) โ€” ๋ถ€์ž์žฌ ๋ฐœ์ฃผ์„œ ์—…๋กœ๋“œ "์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ ‘์†" ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ QA = ใ€Œ๏ผ‹ ๋ถ€์ž์žฌ ๋ฐœ์ฃผ์„œ ์—…๋กœ๋“œใ€๋กœ ํŒŒ์ผ์„ ๊ณ ๋ฅด๋ฉด "์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ ‘์†"์ด๋ผ๋ฉฐ ์ง„ํ–‰์ด ์•ˆ ๋จ.

์›์ธ = ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTTPS ํŽ˜์ด์ง€์—์„œ ์‚ฌ์„ค IP(HTTP)๋กœ form POST ํ–ˆ๋‹ค. opUpload() ๊ฐ€ http://192.168.45.2:8791/upload(์‚ฌ๋ฌด์‹ค PC ์‚ฌ์ด๋“œ์นด)๋กœ ์ƒˆ ํƒญ form POST โ†’ ํฌ๋กฌ ํ˜ผํ•ฉ์ฝ˜ํ…์ธ  ์ฐจ๋‹จ. ๊ฒŒ๋‹ค๊ฐ€ ๊ทธ ๊ฒฝ๋กœ๋Š” ์ด๋ฏธ ๋‘ ๊ฒน์œผ๋กœ ๋” ๋ง‰ํ˜€ ์žˆ์—ˆ๋‹ค โ€” 26.7.29 ๋ณด์•ˆ์กฐ์น˜๋กœ ์‚ฌ์ด๋“œ์นด๊ฐ€ 127.0.0.1 ๋ฐ”์ธ๋”ฉ + ํ† ํฐ ํ•„์ˆ˜ (๋ธŒ๋ผ์šฐ์ €๋Š” ํ† ํฐ์„ ๋ชป ๋ถ™์ธ๋‹ค). ์ฆ‰ LAN ์ง๊ฒฐ์€ ๋˜์‚ด๋ฆด ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์—†์•จ ๊ฒฝ๋กœ์˜€๋‹ค.

๊ณ ์นœ ๋ฐฉ์‹ = ์ด๋ฏธ ์žˆ๋˜ ์„œ๋ฒ„ ์—…๋กœ๋“œ API ๋ฅผ ์“ฐ๊ณ , ์‚ฌ์ด๋“œ์นด๋Š” ๋ฆด๋ ˆ์ด๋กœ ๋Œ๋ฆฐ๋‹ค(๋™๊ธฐํ™” sync-request ์™€ ๊ฐ™์€ ๋ชจ์–‘). 1. ํ™”๋ฉด โ†’ POST /api/orderpaper/upload(๊ฐ™์€ ์˜ค๋ฆฌ์ง„ HTTPSยทFormData) โ†’ EC2 ๊ฐ€ blob ์„ orderpaper_upload(pending)์— ์ €์žฅ. ๐Ÿ”‘์ด ์—”๋“œํฌ์ธํŠธยทํ…Œ์ด๋ธ”์€ ์›๋ž˜ ์žˆ์—ˆ๋Š”๋ฐ ํ™”๋ฉด์ด ์•ˆ ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค(์šด์˜ ํ…Œ์ด๋ธ” 0ํ–‰ = ํ•œ ๋ฒˆ๋„ ์•ˆ ํƒ„ ์ฃฝ์€ ๊ฒฝ๋กœ). 2. ์‚ฌ๋ฌด์‹ค PC ์‚ฌ์ด๋“œ์นด(orderpaper_sync_server.py)์˜ upload_poll_loop ๊ฐ€ 20์ดˆ๋งˆ๋‹ค POST /api/orderpaper/upload/claim โ†’ ํŒŒ์‹ฑ(orderpaper_upload_parsers) โ†’ ์ ์žฌ(orderpaper_upload_load, SSM) โ†’ POST /api/orderpaper/upload/finish. ์ธ์ฆ = X-PFS-Agent-Token(door_sync_watch ์™€ ๊ฐ™์€ ํ† ํฐ). 3. ํ™”๋ฉด์€ upload_no ๋กœ /api/orderpaper/uploads ๋ฅผ ํด๋ง โ€” ๋Œ€๊ธฐ โ†’ ๋ถ„์„ยท์ ์žฌ ์ค‘ โ†’ โœ…์™„๋ฃŒ(๋ชฉ๋ก ์ž๋™ ๊ฐฑ์‹ )/โŒ์‚ฌ์œ . 4. ์‚ฌ์ด๋“œ์นด์˜ LAN ์ „์šฉ POST /upload ์‚ญ์ œ(๊ฒฝ๋กœ ์ด์ค‘ํ™” ๋ฐฉ์ง€) ยท running 10๋ถ„ ์ดˆ๊ณผ ๊ฑด ์ž๋™ ์žฌ์ ์œ .

๋ค์œผ๋กœ ์žก์€ ๊ฒƒ 3๊ฐœ - ๐Ÿ”ดinsert_upload ๊ฐ€ ํ•ญ์ƒ upload_no=0 ์„ ๋ฐ˜ํ™˜(= MySQLUtil.execute + ๋ณ„๋„ SELECT LAST_INSERT_ID() ๋Š” ์ปค๋„ฅ์…˜์ด ๋‹ฌ๋ผ์ง„๋‹ค) โ†’ execute_id ๋กœ ๊ต์ฒด. ๊ทธ๋Œ€๋กœ ๋’€์œผ๋ฉด ์—…๋กœ๋“œ๊ฐ€ ์„ฑ๊ณตํ•ด๋„ ํ™”๋ฉด์ด ์˜์›ํžˆ "๋Œ€๊ธฐ"์˜€๋‹ค. - ๐Ÿ”ดnginx client_max_body_size ๊ฐ€ ์•„์˜ˆ ์—†์–ด ๊ธฐ๋ณธ 1MB(์‹ค์ธก 1.43MB โ†’ 413) โ†’ nginx.conf http ๋ธ”๋ก 20m (์„œ๋ฒ„ ํŒŒ์ผยทgit ๋ฐ–, nginx -t ํ†ต๊ณผ ํ›„ reload, ๋ฐฑ์—… nginx.conf.bak_20260807). ํ™”๋ฉด๋„ 413 ์ด๋ฉด ํฌ๊ธฐ ์ดˆ๊ณผ๋ผ๊ณ  ์•ˆ๋‚ด. - ๐Ÿ”ด์‚ฌ์ด๋“œ์นด ํด๋ง try ๊ฐ€ env ๋ฃจํ”„ ๋ฐ”๊นฅ์ด๋ผ ์šด์˜ 401(๋ฏธ๋ฐฐํฌ) ํ•˜๋‚˜๋กœ ํ…Œ์ŠคํŠธ ํด๋ง๊นŒ์ง€ ๊ตถ์—ˆ๋‹ค โ†’ ์•ˆ์ชฝ์œผ๋กœ. ๊ฐ™์ด _sidecar.log ์‹ ์„ค(์ฐฝ ์—†๋Š” ์ƒ์ฃผ๋ผ ์ถœ๋ ฅ์ด ์‚ฌ๋ผ์ ธ ์ง„๋‹จ ๋ถˆ๊ฐ€์˜€๋‹ค).

ํŒŒ์„œ๋Š” ์„œ๋ฒ„์— ์•ˆ ์˜ฌ๋ ธ๋‹ค โ€” EC2 py3.6 ์—์„œ pdfplumber ๊ฐ€ chardet 5.0(์•ฑ requests 2.21 ๊ณผ ์ถฉ๋Œ)ยทcryptography 40 (certbot)์„ ๋Œ๊ณ  ์˜จ๋‹ค(pip download ์‹ค์ธก). xlrdยทpdfplumber ๋Š” ์‚ฌ๋ฌด์‹ค PC(Python39)์—๋งŒ ์„ค์น˜.

๊ฒ€์ฆ = โ‘ ํ…Œ์ŠคํŠธ ๋ฆด๋ ˆ์ด E2E 12ํ•ญ๋ชฉ(์—๋„ฅ์Šค ์–‘์‹ .xls ๋ฅผ xlwt ๋กœ ๋งŒ๋“ค์–ด ์‹คํŒŒ์„œ ํ†ต๊ณผ ยท blob ๋ฐ”์ดํŠธ ๋™์ผ ยท ์ ์žฌยท์›์ƒ๋ณต๊ตฌ๊นŒ์ง€) โ‘กlive ์‚ฌ์ด๋“œ์นด 8ํ•ญ๋ชฉ(์ƒ์ฃผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง‘์–ด๊ฐ€๋Š” ์‹ค๊ฒฝ๋กœ) โ‘ข์‹ค๋ธŒ๋ผ์šฐ์ €(ํ…Œ์ŠคํŠธ = ์—…๋กœ๋“œโ†’ โœ… 2๊ฑด ์ ์žฌยท์ฝ˜์†” 0 / ์šด์˜ = ์ƒˆ ์ฝ”๋“œ ์ ์žฌ ํ™•์ธ, OP_SYNC_URL ์†Œ๋ฉธ) โ‘ฃ์šด์˜ ์Šค๋ชจํฌ 4ํ•ญ๋ชฉ(๋ฏธ๋“ฑ๋ก ์–‘์‹ .txt ๋กœ ๊ฒฝ๋กœ๋งŒ ํƒœ์šฐ๊ณ  ํ–‰ ์‚ญ์ œ โ€” ์šด์˜ ๋ฐ์ดํ„ฐ ๋ฌด๋ณ€๊ฒฝ). ์‚ฌ์ดํŠธ๋งต = ๊ทธ๋ฃน8ยทํŽ˜์ด์ง€49ยท๋ฏธ๋ฐ˜์˜ 2(๊ธฐ์กด AL ๋ฐฑ๋กœ๊ทธ, ์ฆ๊ฐ€ ์—†์Œ).

๋ฐฐํฌ = ํ…Œ์ŠคํŠธ 12a9b31 ยท ์šด์˜ bac884b(master 1f497ea+58b6809+12a9b31 7ํŒŒ์ผ ์„ ๋ณ„ ํฌ์›Œ๋“œ). โš ์‚ฌ๋ฌด์‹ค PC ์‚ฌ์ด๋“œ์นด๊ฐ€ ๊บผ์ ธ ์žˆ์œผ๋ฉด ์—…๋กœ๋“œ๋Š” "๋Œ€๊ธฐ"์—์„œ ๋ฉˆ์ถ˜๋‹ค(2๋ถ„ ๋’ค ์‹œ๊ฐ„์ดˆ๊ณผ ์•ˆ๋‚ด).

๐Ÿ†• ํ›„์†(๊ฐ™์€ ๋‚ ) โ€” ํŽ˜ํŽ˜ ์‹ค์—…๋กœ๋“œ์—์„œ ์ ์žฌ ๋‚ด์šฉ์ด ๊นจ์กŒ๋‹ค โ†’ ํŒŒ์„œ ์žฌ์ž‘์„ฑยท์žฌ์ ์žฌ ์™„๋ฃŒ

์ฆ์ƒ = ๋Œ€์šฐ ์šฉ์ธ ์—๋„ฅ์Šค ๋ฐœ์ฃผ์„œ๋ฅผ ์˜ฌ๋ ธ๋”๋‹ˆ 128ํ–‰์ด ๋“ค์–ด์™”๋Š”๋ฐ ์ ˆ๋ฐ˜์ด ๋นˆ ํ’ˆ๋ช…, ์—…์ฒด๋Š” ์ „๋ถ€ '์ฒœ์ผ'. ์›์ธ = ํŒŒ์„œ๊ฐ€ ์–‘์‹์„ ๋ชฐ๋ž๋‹ค. ์—๋„ฅ์Šค .xls ๋Š” ํ•œ ์‹œํŠธ์— ๋ฐœ์ฃผ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š”๋ฐ(์ˆ˜์‹ ์ฒ˜=์—…์ฒด 1๊ณณ๋‹น 1ํŽ˜์ด์ง€, ์‹ค์ธก 407ํ–‰ยท11ํŽ˜์ด์ง€) ์˜› ํŒŒ์„œ๋Š” ์ฒซ ํŽ˜์ด์ง€ ๋จธ๋ฆฌ๋งŒ ์ฝ๊ณ  11ํ–‰~๋์„ ํ†ต์งธ๋กœ ํ•œ ์—…์ฒด ํ•ญ๋ชฉ์œผ๋กœ ๋ดค๋‹ค โ†’ ๋ผ๋ฒจํ–‰('ํ’ˆ ๋ชฉ/๊ทœ ๊ฒฉ/์ˆ˜๋Ÿ‰'ยท'๊ณ„'ยท'ํŠน์ด์‚ฌํ•ญ'ยท'๋ฐœ ์ฃผ ์ผ'โ€ฆ)๊นŒ์ง€ ์ž์žฌ๋กœ ์ ์žฌ๋˜๊ณ  ๋‚˜๋จธ์ง€ 10๊ฐœ ์—…์ฒด๋Š” ์†Œ์‹ค.

์ˆ˜์ •(orderpaper_upload_parsers.parse_enex) โ€” A์—ด '์ˆ˜ ์‹  ์ฒ˜'๋ฅผ ํŽ˜์ด์ง€ ๋จธ๋ฆฌ๋กœ ๋ธ”๋ก ๋ถ„ํ• , ํŽ˜์ด์ง€๋งˆ๋‹ค ์—…์ฒดยท๋ฐœ์ฃผ์ผยท๋‚ฉ๊ธฐ ์ฝ๊ธฐ, ํ‘œ๋Š” ๋จธ๋ฆฌ+6ํ–‰๋ถ€ํ„ฐ '๊ณ„' ์ „๊นŒ์ง€, ํ‘œ ์•ˆ ๊ณ ์ • ์•ˆ๋‚ด๋ฌธ('ํฌ์ธ : โ€ฆ') ์ œ์™ธ, ๋น„๊ณ  ์—ด ์˜คํƒ€ 8โ†”9 ์ˆ˜์ •, ๋‚ฉ๊ธฐ ๋ฌธ์ž์—ด('์ถ”ํ›„ํ†ต๋ณด')์€ ๋‚ ์งœ ๋น„์›€, ๐Ÿ”‘๊ฐ™์€ ์—…์ฒด 2ํŽ˜์ด์ง€(์ฟ ์Šค์ฝ”)๋Š” block_key ๊ฐ€ ๊ฒน์ณ ๋’ค๊ฐ€ ์•ž์„ ๋ฎ์–ด์“ฐ๋ฏ€๋กœ sheet์— ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์–ด ๋ถ„๋ฆฌ.

์žฌ์ ์žฌ = ์‚ฌ์šฉ์ž ํŽธ์ง‘ยท์‚ฌ์šฉ๋Ÿ‰ ์ด๋ ฅ 0๊ฑด ํ™•์ธ โ†’ ์›๋ฌธ 128ํ–‰ JSON ๋ฐฑ์—…(/home/ubuntu/backup/ orderpaper_daewoo_badload_2026-08-07.json) โ†’ ์‚ญ์ œ โ†’ ์—…๋กœ๋“œํ–‰ pending ๋˜๋Œ๋ฆผ โ†’ ์‚ฌ์ด๋“œ์นด ์žฌ์ฒ˜๋ฆฌ (โš ํŒŒ์„œ๋Š” sys.modules ์บ์‹œ๋ผ ์‚ฌ์ด๋“œ์นด ์žฌ์‹œ์ž‘ ํ•„์ˆ˜) โ†’ 11๋ธ”๋กยท55ํ•ญ๋ชฉ. ๊ฒ€์ฆ = ์‹คํŒŒ์ผ ํŒŒ์„œ ์ฒดํฌ 12ํ•ญ๋ชฉ ALL PASS(scripts/_op_enex_parse_check.py) ยท ์šด์˜ DB 55ํ–‰ยท์—…์ฒด 10๊ณณ (์ฟ ์Šค์ฝ” 2๋ธ”๋ก) ยท ํ‘œ๋ณธ 20ํ–‰ ํ’ˆ๋ช…/๊ทœ๊ฒฉ/์ˆ˜๋Ÿ‰/๋น„๊ณ  ์ •์ƒ ยท ์šด์˜ ํ™”๋ฉด 55๊ฑดยท์ฝ˜์†” 0. ๋ฐฐํฌ = master 674102e ยท ์šด์˜ 2d0bbd2(์‚ฌ์ด๋“œ์นด ํŒŒ์ผ์ด๋ผ ์„œ๋ฒ„ ์•ฑ๊ณผ ๋ฌด๊ด€, ๋ธŒ๋žœ์น˜ ๋™๊ธฐํ™”์šฉ).

๐Ÿ†• 2์ฐจ ํ›„์† โ€” ํ’ˆ๋ช… ์ƒ์†(ํŽ˜ํŽ˜ ์ง€์‹œ "โ‘ ๊ทœ๊ฒฉยท๋ฐœ์ฃผ๋Ÿ‰์€ ์žˆ๋Š”๋ฐ ํ’ˆ๋ช…์ด ์—†์œผ๋ฉด ์œ„ ํ’ˆ๋ช…์„ ์ด์–ด๋ฐ›๋Š”๋‹ค โ‘กํ’ˆ๋ช…์ด ์Œ๋”ฐ์˜ดํ‘œ๋ฉด ๋™์ผ"). ์›๋ณธ์€ ๊ฐ™์€ ํ’ˆ๋ชฉ์ด ์ด์–ด์ง€๋ฉด ํ’ˆ๋ช…์นธ์„ ๋น„์šฐ๊ฑฐ๋‚˜ "(ใ€ƒ)๋กœ ์“ฐ๋Š” ์ˆ˜๊ธฐ ๊ด€ํ–‰์ด๋ผ ๊ทธ๋Œ€๋กœ ๋„ฃ์œผ๋ฉด ํ™”๋ฉดยท๋ฐœ์ฃผ์—์„œ ํ’ˆ๋ช… ์—†๋Š” ํ–‰์ด ๋œ๋‹ค(์‹ค์ธก ๋นˆ์นธ 10 ยท ๋”ฐ์˜ดํ‘œ 3). ์ƒ์†์€ ๋ธ”๋ก(์—…์ฒด) ์•ˆ์—์„œ๋งŒ. ๐Ÿ”‘์žฌ์ ์žฌ๋Š” ์‚ญ์ œ ์—†์ด pending ๋˜๋Œ๋ฆผ๋งŒ โ€” item_key ๊ฐ€ ๊ทธ๋Œ€๋กœ๋ผ ๋กœ๋”๊ฐ€ ๊ฐ™์€ ํ–‰์„ UPDATE(55ํ–‰ ์œ ์ง€ยท ์‚ญ์ œ 0ยท*_user ํŽธ์ง‘ ๋ณด์กด). ๊ฒ€์ฆ = ํŒŒ์„œ 18ํ•ญ๋ชฉ ALL PASS ยท ์šด์˜ DB ๋นˆ์นธ 0ยท๋”ฐ์˜ดํ‘œ 0ยท์—…์ฒด 10ยท๋ธ”๋ก 11 ยท ์šด์˜ ํ™”๋ฉด 55๊ฑดยท์ฝ˜์†” 0(์˜ˆ: ํ—คํ‹ฐ 2~4ํ–‰์ด ์ด๋…ธํ… ์•„ํ‹ฐ๋ผ๋ ˆ์ผ470 ์„ ๋ฌผ๋ ค๋ฐ›์Œ). ๋ฐฐํฌ = master 971fed7 ยท ์šด์˜ bdaff93. โณํŽ˜ํŽ˜ = ํ™”๋ฉด ์œก์•ˆ(์—…์ฒด๋ณ„ ๋ธ”๋กยทํ’ˆ๋ช… ์ƒ์†).


NOW (2026-08-06) โ€” AWS ๋น„์šฉ์ ˆ๊ฐ Phase A ์™„๋ฃŒ(A1~A5ยทA7) ยท โณํŽ˜ํŽ˜ ์Šน์ธ = A6(RDS-test ์‚ญ์ œ)

์„ธ์…˜ ์ธ๊ณ„์šฉ ์š”์•ฝ: ํ…Œ์ŠคํŠธ DB๋ฅผ RDS์—์„œ EC2 ์•ˆ Docker MySQL 8.4.8๋กœ ์˜ฎ๊ฒผ๋‹ค. ์•ฑ์€ ์ด๋ฏธ ์ „ํ™˜ ์™„๋ฃŒยท๊ฒ€์ฆ ํ†ต๊ณผ. RDS-test ๋Š” ์•„์ง ์‚ด์•„ ์žˆ๋‹ค(๋กค๋ฐฑ ์ž๋ฃŒ). ๋‚จ์€ ๊ฒƒ = โ‘ ํŽ˜ํŽ˜ ์œก์•ˆ โ‘กA6 ์‚ญ์ œ ์Šน์ธ โ‘ขPhase B RI ๊ตฌ๋งค.

๋ฐœ๋‹จ = ํŽ˜ํŽ˜ ์งˆ๋ฌธ "pfs ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ๋ฏธ๋‹ˆPC๋กœ ๋นผ๋ฉด ์–ด๋–ค๊ฐ€(AWS ๋น„์šฉ). ํ™˜๊ฒฝ์ด ๋‹ฌ๋ผ์ ธ ๊ด€๋ฆฌ๊ฐ€ ๋‹ฌ๋ผ์ง€๋‚˜?"

ํŒ์ • โ€” ๋ฏธ๋‹ˆPC ์ด์ „์€ ์ ‘์—ˆ๋‹ค(์‹ค์ต ๋Œ€๋น„ ๋ฆฌ์Šคํฌ ๊ณผ๋‹ค)

์‹คํ–‰ ๊ฒฐ๊ณผ (Phase A ยท 2026-08-06 ์™„๋ฃŒ๋ถ„)

๋‹จ๊ณ„ ๋‚ด์šฉ ๊ฒฐ๊ณผ
A1 RDS-test ํŒŒ๋ผ๋ฏธํ„ฐ ์ฑ„์ทจ ยท ์„œ๋น„์Šค๋ช… ํ™•์ • ยท MySQL 5.7 ์ •์ฒด ๊ทœ๋ช… ์™„๋ฃŒ
A1-b ์˜› MySQL 5.7 stop+disable (๋คํ”„ ๋ณด๊ด€ ํ›„) RAM 177MB ํšŒ์ˆ˜(786โ†’609MB)
A2 docker.io 20.10.21 ์„ค์น˜ + mysql:8.4.8 ์ปจํ…Œ์ด๋„ˆ 127.0.0.1:3307 ์ „์šฉ
A3 RDS-test โ†’ ์ปจํ…Œ์ด๋„ˆ ์ด๊ด€ 87ํ…Œ์ด๋ธ”ยท๋ทฐ1ยทํ•จ์ˆ˜2, ๋ฐ์ดํ„ฐ MD5 ์ผ์น˜
A4 pfs-test.env ์ „ํ™˜ + uwsgi ์žฌ์‹œ์ž‘ ์•ฑโ†’์ปจํ…Œ์ด๋„ˆ ์ ‘์† ํ™•์ •
A5 ๋Ÿฌ๋„ˆ + ์‹ค๋ธŒ๋ผ์šฐ์ € ๊ฒ€์ฆ 8 OK / 0 FAIL
A7 swap 2GB ยท ์žฌ๋ถ€ํŒ… ๋‚ด์„ฑ ยท ์ผ์ผ ๋ฐฑ์—… cron ์™„๋ฃŒ
A6 RDS-test ์ตœ์ข… ์Šค๋ƒ…์ƒท + ์‚ญ์ œ ์™„๋ฃŒ(2026-08-07) RDS 2๋Œ€โ†’1๋Œ€
A8 ๐Ÿ†•EBS ๋ฐฑ์—… ์‹ ์„ค(DLM ์ผ์ผ ์Šค๋ƒ…์ƒท + cron ์‹œ๊ฐ ์กฐ์ •) ์™„๋ฃŒ

โœ… A6 ์™„๋ฃŒ (2026-08-07) โ€” RDS-test ์‚ญ์ œ ยท ๊ทธ๋ฆฌ๊ณ  ๐Ÿ”ด๋ฐฑ์—… ๊ตฌ๋ฉ์„ ํ•˜๋‚˜ ๋ฉ”์› ๋‹ค

๐Ÿ†• A8 โ€” EBS ๋ฐฑ์—… ์‹ ์„ค (ํŽ˜ํŽ˜ ์งˆ๋ฌธ "๋ฐฑ์—…ยท์Šค๋ƒ…์ƒท ์„ค์ •๋๋‚˜?" ์—์„œ ๋ฐœ๊ฒฌ)

๐Ÿ”ด์‹ค์‚ฌ ๊ฒฐ๊ณผ EC2 ๋ฐฑ์—…์ด ์•„์˜ˆ ์—†์—ˆ๋‹ค โ€” ์›๋ž˜๋ถ€ํ„ฐ. DLM 0 ยท AWS Backup 0 ยท EBS ์Šค๋ƒ…์ƒท 0 ยท AMI 0. ์ง€๊ธˆ๊นŒ์ง€ ํ‹ฐ๊ฐ€ ์•ˆ ๋‚ฌ๋˜ ์ด์œ  = ์ค‘์š”ํ•œ ๊ฒŒ ์ „๋ถ€ RDS ์— ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ. ์ด๋ฒˆ ์ด์ „์œผ๋กœ ํ…Œ์ŠคํŠธ DB ๊ฐ€ ๊ทธ ๋ฌด๋ฐฉ๋น„ ์˜์—ญ์— ๋“ค์–ด์™”๊ณ , ๐Ÿ”ด์ผ์ผ ๋…ผ๋ฆฌ ๋ฐฑ์—…๋งˆ์ € ๋ฃจํŠธ์™€ ๊ฐ™์€ ๋ณผ๋ฅจ(stat device ๋™์ผ ์‹ค์ธก)์ด๋ผ ๋ณผ๋ฅจ ์‚ฌ๊ณ  ์‹œ DB์™€ ๋ฐฑ์—…์ด ๋™์‹œ์— ์‚ฌ๋ผ์ง€๋Š” ๊ตฌ์กฐ์˜€๋‹ค.

โณ ๋‹ค์Œ (์ธ๊ณ„)

  1. ํŽ˜ํŽ˜ ์œก์•ˆ โ€” pfs-test.poin.co.kr ๋กœ๊ทธ์ธ โ†’ ๋ฐœ์ฃผ์„œ์ •๋ฆฌยท๊ฒฌ์ ยทworklog ๊ฐ€ ํ‰์†Œ์™€ ๊ฐ™์€์ง€.
  2. ๋‚ด์ผ ํ™•์ธํ•  ๊ฒƒ = โ‘ DLM ์ฒซ ์Šค๋ƒ…์ƒท์ด ์‹ค์ œ๋กœ ์ƒ์„ฑ๋๋Š”์ง€(KST 8/8 03:00 ์ดํ›„ describe-snapshots) โ‘กcron ๋…ผ๋ฆฌ ๋ฐฑ์—… pfs_test_daily_2026-08-08.sql.gz ์ƒ์„ฑ ์—ฌ๋ถ€ โ‘ข๊ธฐ์ค€ ์Šค๋ƒ…์ƒท snap-0c40a5eabe84b0ab0 completed โ‘ฃRDS RI pfs-prod-rds-ri-2026-08 ์ด active ๋กœ ๋„˜์–ด๊ฐ”๋Š”์ง€ โ‘คCost Explorer ์— RI ํ• ์ธ ๋ฐ˜์˜(ํ•˜๋ฃจ ๋’ค๋ถ€ํ„ฐ ๋ณด์ธ๋‹ค).
  3. โœ…Phase B RI ๊ตฌ๋งค ์™„๋ฃŒ(2026-08-07 ยท ํŽ˜ํŽ˜๊ฐ€ CLI ๋กœ ์‹คํ–‰) โ€” ์ฝ”๋””๊ฐ€ offering ID ๋ฅผ ์กฐ๊ฑด๋ณ„ ์œ ์ผ ๋งค์น˜๋กœ ํŠน์ •ํ•ด์„œ ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์„ ์ผ๋‹ค(์˜ต์…˜ ์˜ค์„ ํƒ ์—ฌ์ง€ 0). B1 EC2 eccbe392-a683-43e3-b6f0-9ef4d3a9528e = t3.medium ยท Linux/UNIX ยท standard ยท Region ์Šค์ฝ”ํ”„ ยท No Upfront ยท ์ˆ˜๋Ÿ‰ 1 ยท state active ยท 2026-08-07~2027-08-07 ยท $0.0314/h. B2 RDS pfs-prod-rds-ri-2026-08 = db.t4g.micro ยท mysql ยท Single-AZ ยท No Upfront ยท ์ˆ˜๋Ÿ‰ 1 ยท $0.02/h(๊ตฌ๋งค ์งํ›„ payment-pending โ†’ active. ์„ ๊ฒฐ์ œ 0 ์ด์–ด๋„ ์ด ์ƒํƒœ๋ฅผ ๊ฑฐ์น˜๋ฉฐ ํ• ์ธ์€ StartTime ๋ถ€ํ„ฐ). ๋งค์นญ ์‹ค์ธก ๋Œ€์กฐ = EC2(t3.mediumยทLinux/UNIXยทtenancy defaultยท์˜จ๋””๋งจ๋“œยทrunning) / RDS(db.t4g.microยทmysqlยท MultiAZ falseยทavailable) ์ „ ํ•ญ๋ชฉ ์ผ์น˜ โ†’ ๋ณ„๋„ ์—ฐ๊ฒฐ ์ž‘์—… ์—†์ด ์ž๋™ ์ ์šฉ. Region ์Šค์ฝ”ํ”„๋ผ ์ธ์Šคํ„ด์Šค๊ฐ€ ap-northeast-2c ์—ฌ๋„ ๋ฌด๊ด€. โš B1 ์€ t3 ํŒจ๋ฐ€๋ฆฌ๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ๋ฌดํšจ(1๋…„ ๋‚ด Graviton ์ „ํ™˜ ๊ณ„ํš ์žˆ์œผ๋ฉด ์žฌ๊ฒ€ํ† ).
  4. ๊ณ๊ฐ€์ง€(์˜ค๋Š˜ ์ฃผ์ œ ๋ฐ–, ์‚ฌ์‹ค๋งŒ) = EC2 ๊ฐ€ Ubuntu 18.04 + Python 3.6.9(2023 EOL). ์–ธ์  ๊ฐ€ ๊ต์ฒด ํ•„์š” โ€” ๊ทธ๋•Œ๊ฐ€ ์ธ์Šคํ„ด์Šค ์žฌ์„ ์ • ๊ธฐํšŒ. apt ์ €์žฅ์†Œ๋Š” ์•„์ง ์‚ด์•„ ์žˆ๋‹ค(EC2 ๋ฏธ๋Ÿฌ + security ์ •์ƒ ์‘๋‹ต).

์ฝ”๋“œ ๋ณ€๊ฒฝ = pfs ๋ฆฌํฌ์— ๊ฒ€์ฆ ๋Ÿฌ๋„ˆ 1๊ฐœ ์‹ ๊ทœ(scripts/_db_migration_smoke_check.py, ๋ฏธ์ถ”์  ์œ ์ง€ โ€” ์ปค๋ฐ‹ ์—†์Œ). ์‚ฌ์ดํŠธ๋งต ์žฌ๋นŒ๋“œ ๋ถˆ์š”(ํŽ˜์ด์ง€ยท๋ผ์šฐํŠธ ๋ณ€ํ™” 0).

๐Ÿ†• (์ฐธ๊ณ ) ์› ๊ฒ€ํ†  ๋ฉ”๋ชจ โ€” ๋ฏธ๋‹ˆPC ์ด์ „ ํƒ€๋‹น์„ฑ

๐Ÿ†• NOW (2026-08-06) โ€” ๊ฒฌ์ ์„œ ์žฌ์ž‘์„ฑ + ํ˜„์žฅ ๋‹จ์œ„ ์ฐจ์ˆ˜ ์ด๋ ฅ โœ…์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

(ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„ ๊ธฐ๋ก) ๊ฒฌ์ ์„œ ์žฌ์ž‘์„ฑ(1์ฐจ ๋ณด๊ด€ + 2์ฐจ ๋ฉ”์ธ) + ์šด์˜ 708 ์ด๊ด€

ํŽ˜ํŽ˜ ์ง€์‹œ = "ํ•œ ํ˜„์žฅ ๊ฒฌ์ ์„œ๋ฅผ ์ƒˆ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค(๋„๋ฉด ๋””์ž์ธ์ด ์•„์˜ˆ ๋ฐ”๋€œ). ๊ธฐ์กด 1์ฐจ ์ž‘์„ฑ๋ถ„์€ ๋ณด๊ด€์ฒ˜๋ฆฌ, ์‹ ๊ทœ 2์ฐจ ์ž‘์„ฑ๋ถ„์„ ๋ณธ๊ฑด ๋ฉ”์ธ์œผ๋กœ ์•ž์—." โ†’ "ํ…Œ์ŠคํŠธ์„œ๋ฒ„ ์ž‘์—… ์ง„ํ–‰ํ•˜๊ณ  ์šด์˜์„œ๋ฒ„์˜ modify-v2/708 ํ˜„์žฅ ๊ฒฌ์ ์„œ๋ฅผ ์˜ฎ๊ฒจ์ค˜. 1์ฐจ ์›๋ณธ์œผ๋กœ ์‚ผ๊ณ  ํ…Œ์ŠคํŠธ."

๐Ÿ†• ํ˜„์žฅ ๋‹จ์œ„ ์ฐจ์ˆ˜ ์ด๋ ฅ์œผ๋กœ ๊ฐœํŽธ (ํŽ˜ํŽ˜ ์ง€์‹œ 26.8.6 ยท master 641ff82 ํ…Œ์ŠคํŠธ ๋ฐฐํฌ)

ํŽ˜ํŽ˜ ์ง€์‹œ = "๋ณด๊ด€ ํ•ญ๋ชฉ์€ ํ˜„์žฅ๋ณ„ ์ด๋ ฅ๊ด€๋ฆฌ๊ฐ€ ๋งž๋‹ค. ์ง€๊ธˆ์€ ๋ณด๊ด€ ํ•ญ๋ชฉ ์ฐพ๊ธฐ๊นŒ์ง€ ๊ณผ์ •์ด ๋ณต์žกํ•˜๊ณ  1์ฐจยท2์ฐจ ์œ„์น˜๊ฐ€ ์•ˆ ๋ถ™์–ด ์žˆ์–ด ๋น„๊ต๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ํ•œ ํ˜„์žฅ ๊ธฐ์ค€์œผ๋กœ ํ™•์ธยท๋ณต๊ตฌ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๊ฐœ๋ณ€. 1์ฐจ๋ฅผ ๋ณต๊ตฌํ•˜๋ฉด 2์ฐจ๋Š” ์‚ญ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ณด๊ด€. ํ•ญ์ƒ ๋ณด๊ด€ ์•ˆ ๋œ ํ•ญ๋ชฉ = ์„ ํƒ๋œ ์ฐจ์ˆ˜, ๋‚˜๋จธ์ง€๋Š” ๋ณด๊ด€."

๋ณด๊ด€๊ฑด ์—ด๋žŒยท๋ณต๊ตฌ ๊ฒฝ๋กœ (ํŽ˜ํŽ˜ ์งˆ๋ฌธ 26.8.6 ยท ์ฝ๊ธฐ์ „์šฉ ์‹ค์ธก 8ํ•ญ๋ชฉ ALL PASS ยท ใ€Œ๋ณด๊ด€ํ•ด์ œใ€๋Š” ์œ„ ๊ฐœํŽธ์œผ๋กœ ๋Œ€์ฒด๋จ)

(์ด์ „) ๊ณ„ํš ํ™•์ • ๊ธฐ๋ก

ํŽ˜ํŽ˜ ์ง€์‹œ = "ํ•œ ํ˜„์žฅ ๊ฒฌ์ ์„œ๋ฅผ ์ƒˆ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค(๋„๋ฉด ๋””์ž์ธ์ด ์•„์˜ˆ ๋ฐ”๋€œ). ๊ธฐ์กด 1์ฐจ ์ž‘์„ฑ๋ถ„์€ ๋ณด๊ด€์ฒ˜๋ฆฌ, ์‹ ๊ทœ 2์ฐจ ์ž‘์„ฑ๋ถ„์„ ๋ณธ๊ฑด ๋ฉ”์ธ์œผ๋กœ ์•ž์—. ๊ณ„ํš ๋จผ์ €."

๐Ÿ†• NOW (2026-08-06) โ€” ๋Œ€์šฐ ์šฉ์ธ ์˜ค์— ์”จ ํƒญ 1ํŽ˜์ด์ง€ ์ดˆ๊ธฐํ™” + ์žฌ์ž…๋ ฅ(์šด์˜ ๋ฐ์ดํ„ฐ, ์ฝ”๋“œ๋ณ€๊ฒฝ 0)

ํŽ˜ํŽ˜ ์ง€์‹œ = "\\192.168.0.101\๊ณต์œ ํด๋”\2026ํ˜„์žฅ\์›๋ถ€์ž์žฌ๋ฐœ์ฃผ์„œ\07์›”\์—๋„ฅ์Šค ๋Œ€์šฐ ์šฉ์ธ ํ‘ธ๋ฅด์ง€์˜ค MH ์›๋ถ€์ž์žฌ๋ฐœ์ฃผ์„œ.xlsx ์˜ ์˜ค์— ์”จ ํƒญ 1ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ๋ฐ”๊ฟจ๋‹ค. ํ–‰์ž์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜ ์ˆ˜์ •์„ ํ–ˆ์œผ๋‹ˆ ๊ธฐ์กด ๋™๊ธฐํ™” ๋‚ด์šฉ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ด ํƒญ๋งŒ PFS field/orderpaper ์— ์ƒˆ๋กœ ์ž…๋ ฅํ•ด์ค˜. ์šด์˜๋ฐฐํฌ."

๐Ÿ†• NOW (2026-08-06) โ€” ์นดํ†ก๊ด€๋ฆฌ ์ˆ˜์ •์ฐฝ ์ž๋™๋†’์ด + ํŽธ์ง‘ ์ค‘๋ณต ๋ฐฉ์ง€ 3์ค‘ ๊ฒŒ์ดํŠธ ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ(QA ๋ณด๊ณ  /field/worklog) = "์ˆ˜์ • ๋‚ด์šฉ์ด ๋งŽ์€๋ฐ ์ˆ˜์ •์ฐฝ ๋†’์ด๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ๋‹ค. ํ…์ŠคํŠธ ๋‚ด์šฉ์— ๋งž์ถฐ์„œ ์ˆ˜์ •์ฐฝ ๋†’์ด๋„ ๋Š˜๋ ค์ค˜. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์ง‘ํ•˜๋ฉด ๋‚ด์šฉ์ด ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ฝ”๋””๊ฐ€ ์ฒดํฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์„œ ๋ณด์™„ํ•ด์ค˜. ์šด์˜๋ฐฐํฌ."

๐Ÿ†• NOW (2026-08-05) โ€” ์นดํ†ก๊ด€๋ฆฌ ใ€Œ๋ณ€๋™ ๋ฐ˜์˜ ์ด๋ ฅใ€ โœ– = ์†Œํ”„ํŠธ๋”œ๋ฆฌํŠธ(์ˆจ๊น€ ์ด๋ ฅ) ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ = "์นดํ†ก๊ฒŒ์‹œ๊ธ€ ๊ด€๋ฆฌ์—์„œ ๋ณ€๋™ ๋ฐ˜์˜ ์ด๋ ฅ ํ•ญ๋ชฉ์€ ์‚ญ์ œ๊ฐ€ ์†Œํ”„ํŠธ๋”œ๋ฆฌํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ์‚ญ์ œ๋ผ๊ณ  ์•ˆ๋‚ด๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค. ์†Œํ”„ํŠธ๋”œ๋ฆฌํŠธ(์ˆจ๊น€ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™)๋กœ ์ˆ˜์ •ํ•ด์ค˜. ์šด์˜๋ฐฐํฌ."

๐Ÿ†• NOW (2026-08-05) โ€” ๊ฒฌ์ ์„œ ์—‘์…€ ์–‘์‹ ํŒŒ์ผ ์ฑ„์šฐ๊ธฐ ์ „ํ™˜ ยท ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ + ์šด์˜ ๋‹ค์šด๋กœ๋“œ E2E

ํŽ˜ํŽ˜ ํŒ๋‹จ = "โ‘ ใ€Œ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒฌ์ ํ•ฉ๋‹ˆ๋‹คใ€ ํƒ€์ž…๋ช… ์‚ด๋ฆฐ ์ƒํƒœ ์œ ์ง€ โ‘ก๊ฒฐ์žฌ์นธ ํ˜„์žฌ๋Œ€๋กœ ์œ ์ง€. ์ด ์–‘์‹์œผ๋กœ pfs ๊ฒฌ์ ์„œ ์ƒ์„ฑ ํŒŒ์ผ ๊ต์ฒดํ•ด๋ผ. ์šด์˜ ๋ฐฐํฌ. ์‹ค์ œ ๊ฒฌ์ ๊ฑด 1๊ฐœ playwright๋กœ ๋‹ค์šด๋ฐ›์•„์„œ ๋™์ผ test ํŒŒ์ผ์— ์ €์žฅ๊นŒ์ง€ ํ…Œ์ŠคํŠธ. ์šด์˜์„œ๋ฒ„์—์„œ ๋‹ค์šด๋กœ๋“œ ํ…Œ์ŠคํŠธ."

(1์ฐจ) ๊ฒฌ์ ์„œ ์—‘์…€์„ NAS ์–‘์‹ ํŒŒ์ผ ์ฑ„์šฐ๊ธฐ๋กœ ์ „ํ™˜ โ€” ๋ฐฐํฌ ์ „ ๊ฒฐ๊ณผ๋ฌผ ์ œ์ถœ

ํŽ˜ํŽ˜ ์ง€์‹œ = "์‹ค์ œ ๊ฒฐ๊ณผ๋ฌผ(07์›”\๋„ต์Šค\๋„ต์Šค ์Œ์šฉ ํ™์€๋™ MH ๊ฒฌ์ ์„œ.xlsx)ยท๊ธฐ๋ณธ ์–‘์‹(์–‘์‹ ๊ฒฌ์ ์„œ.xlsx) 2ํŒŒ์ผ ํ™•์ธํ•ด์„œ PFS ๊ฒฌ์ ์„œ ์—‘์…€ ์–‘์‹ ์ˆ˜์ •. ์„ ๊ตต๊ธฐยท์…€๋ฐฐ๊ฒฝ์ƒ‰ยท์ƒํ•˜์ขŒ์šฐ ์—ฌ๋ฐฑ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์ด ๋™์ผํ•ด์•ผ ํ•œ๋‹ค. ์–‘์‹ ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค ๊ธฐ์กด ํŒŒ์ผ์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜๋Š” ์ชฝ์œผ๋กœ. ๊ฒฐ๊ณผ๋ฌผ์€ ๊ฒฌ์ \TEST ํด๋”์— ์ž‘์—…์ˆœ๋ฒˆ."

๐Ÿ†• NOW (2026-08-05) โ€” ๋ฐฐ์ฐจ๋ชฉ๋ก ์ธ๋ผ์ธ ํ†ตํ•ฉ ๊ฒ€์ƒ‰์ฐฝ ์ถ”๊ฐ€ + ์ƒ๋‹จ ๊ธฐ์‚ฌ์นธ ์‚ญ์ œ ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜ ์ง€์‹œ = "๋ฐฐ์ฐจ๋ชฉ๋ก์— ๋ชจ๋“  ํ•ญ๋ชฉ ํ†ตํ•ฉ ๊ฒ€์ƒ‰์šฉ ์ธ๋ผ์ธ ๊ฒ€์ƒ‰์ฐฝ ์ถ”๊ฐ€. ์ถœ๋ฐœ๋„์ฐฉ ๊ฒ€์ƒ‰์ฐฝ ์ขŒ์ธก์œผ๋กœ ์•ฝ๊ฐ„์˜ ์—ฌ๋ฐฑ๋‘๊ณ . ์ƒ๋‹จ search filter์—์„œ ๊ธฐ์‚ฌ ๊ฒ€์ƒ‰์ฐฝ์€ ์‚ญ์ œ. ์šด์˜๋ฐฐํฌ."

๐Ÿ†• NOW (2026-07-30) โ€” ์‹ ์˜ ๊ด‘์ฃผ ์ฑ”ํ”ผ์–ธ์Šค์‹œํ‹ฐ MH ๊ฒฌ์ ์„œ ์šด์˜๋“ฑ๋ก ์™„๋ฃŒ (๋ณธ๊ฑด 740 ยท ์ถ”๊ฐ€1 741)

ํŽ˜ํŽ˜ ์ง€์‹œ = NAS ๊ฒฌ์ ์„œ xlsx๋ฅผ ์šด์˜์„œ๋ฒ„ ๋“ฑ๋ก, "๋ณธ๊ฑด ๊ฒฌ์  ์ƒ์„ฑ ํ›„์— ์ถ”๊ฐ€๊ฑด:์ถ”๊ฐ€1 ํ•ญ๋ชฉ์œผ๋กœ", ํ˜„์žฅ field_no 1973(=์‹ ์˜ ๊ด‘์ฃผ/๋„ฅ์„œ์Šค/MH), ์šด์˜๋ฐฐํฌ ์Šน์ธ.

๐Ÿ†• NOW (2026-07-29) โ€” ๋ฏธ๋ฐ˜์˜ AยทB ๊ทธ๋ฃน ์šด์˜๋ฐฐํฌ ์™„๋ฃŒ

ํŽ˜ํŽ˜: "๋ฏธ๋ฐฐํฌ๊ฑด์ด ์žˆ๋‹ค. A,B ๊ทธ๋ฃน ๋จผ์ € ์šด์˜๋ฐฐํฌํ•œ๋‹ค." (D005 ๋ฐฐ์ฐจ์‚ฌ์ง„ ๊ฒฝ๋กœ ๋ฒ„๊ทธ๋Š” "๋ฐฐํฌ๋งŒ, ๋ฒ„๊ทธ๋Š” P0์—์„œ")

๐Ÿ†• NOW (2026-07-29) โ€” AL๋ฐœ์ฃผ์„œ QA 8๊ฑด (ํ…Œ์ŠคํŠธ ๋ฐฐํฌ ยท ์šด์˜ ๋ฏธ๋ฐฐํฌ)

๐Ÿ†• NOW (2026-07-29) โ€” AL์„ค์ •(์—‘์…€ ์„ค์ •ํƒญ) ๊ด€๋ฆฌ ํŽ˜์ด์ง€ CRUD (์šด์˜ ๋ฐฐํฌ ์™„๋ฃŒ)

NOW (2026-07-28) โ€” ํ˜„์žฅ ๋‚ด์šฉ = ์นดํ†ก๊ด€๋ฆฌ(1ํƒญ) + ํ†ตํ™”๊ด€๋ฆฌ(2ํƒญ) (์šด์˜ ๋ฐฐํฌ ์™„๋ฃŒ)

NOW (2026-07-28) โ€” ์ƒ์‚ฐ ๋ฉ”๋ชจ ๋ชจ๋‹ฌ ํ†ตํ•ฉ: ๋‹จ์ผ ์ž…๋ ฅ์ฐฝ (์šด์˜ ๋ฐฐํฌ ์™„๋ฃŒ)

NOW (2026-07-27) โ€” field/worklog ๋…ธ์ถœ๊ธฐ๊ฐ„ 2์ฃผ ์ œํ•œ (์šด์˜ ๋ฐฐํฌ ์™„๋ฃŒ)

NOW (2026-07-27) โ€” ๋ฏธ๋ฐ˜์˜ ์ปค๋ฐ‹ ์„ ๋ณ„ ์šด์˜๋ฐฐํฌ(CยทDยทE) + devplan ๋ฐฐํฌ๊ด€๋ฆฌ ํŽ˜์ด์ง€

NOW (2026-07-26) โ€” ๋ฐฐ์ฐจ ใ€Œํ™”๋ฌผ์•ฑ ์ ‘์ˆ˜ใ€ ์—ฐ๋™ (ํ…Œ์ŠคํŠธ ์„œ๋ฒ„ ์ „์šฉ)

ํ•œ ์ค„ ๋งฅ๋ฝ

pfs(Flask/MySQL on EC2) ์›น์•ฑ์„ ๊ฒฌ์  v2 + OMC ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ์„ . ์ฑ„ํ‹ฐ ์ง„๋‹จยท.md ์ง€์‹œ๋ฌธ โ†’ ์ฝ”๋”” ์‹คํ–‰ยท๋ฐฐํฌ ๋ถ„์—….

ํ™•์ • ์‚ฌ์‹ค (์ธํ”„๋ผ ์ƒ์„ธ = memory.md ยง1)

์ง„ํ–‰ ์ค‘ / ์ตœ๊ทผ ์™„๋ฃŒ

์™„๋ฃŒยท๋ฐฐํฌ ๋๋‚œ ์ƒ์„ธ ์ด๋ ฅ์€ archive.md(์ „๊ฑด)์™€ sessions.md(์„ธ์…˜ ์ธ๋ฑ์Šค)๋กœ ์ด๊ด€ํ•จ. ์—ฌ๊ธฐ์—” NOWยท๋ฏธ๊ฒฐ๋งŒ.

โญ๏ธ ํ™œ์„ฑ / ๋ฏธ๊ฒฐ (2026-07-23 ๊ฐฑ์‹ )

โญ๏ธ ์ด์ „ ๋ฏธ๊ฒฐ (2026-07-20 ๊ฐฑ์‹ )

๐Ÿ”ถ ๋ฏธ๊ฒฐ(์šด์˜ ๋ฏธ๋ฐฐํฌยท์Šน์ธ ๋Œ€๊ธฐ) โ€” 06-20 ์ง„ํ–‰ ์ค‘ 2๊ฑด

์•„๋ž˜ 2๊ฑด์€ ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ๊นŒ์ง€ ๋๋‚ฌ์œผ๋‚˜ ํŽ˜ํŽ˜ ์šด์˜๋ฐฐํฌ ์ง€์‹œ ๋Œ€๊ธฐ ์ƒํƒœ. ์™„๋ฃŒ ์•„๋‹˜.

๐Ÿ”ถ ๋ฏธ๊ฒฐ(์ง„ํ–‰์ค‘, 2026-06-20) โ€” ์—…์ฒด ๊ด€๋ฆฌ ์—…์ฒด๋ชฉ๋ก ์ •๋ ฌ(์ตœ๊ทผ ๋ฐœ์ฃผ์ผ)+์œ ์‚ฌ์—…์ข… ํ•„ํ„ฐ (์ž์žฌ๊ด€๋ฆฌ ๋ฐœ์ฃผ์„œ ๊ธฐ๋ฐ˜) ํ…Œ์ŠคํŠธ ๋ฐฐํฌยท1์ฐจ ์ดˆ์•ˆ (master 5205da2, ?v=20260620e, ์šด์˜ ๋ฏธ๋ฐฐํฌ)

๐Ÿ”ถ ๋ฏธ๊ฒฐ(์ง„ํ–‰์ค‘, 2026-06-20) โ€” ์‚ฌ์ด๋“œ๋ฐ” 'ํ˜„์žฅ ๊ธฐ๋ก' ์ ‘์ด์‹ ํ•˜์œ„ ๊ทธ๋ฃน(ํ˜„์žฅ ๋‚ด์šฉ+๋Œ€ํ™”๋ฐฉ ์ˆ˜์ง‘๊ด€๋ฆฌ ๋ฌถ๊ธฐ) โ€” ํ…Œ์ŠคํŠธ ๊ฒ€์ฆ PASSยท์šด์˜ ์Šน์ธ ๋Œ€๊ธฐ

โœ… ์™„๋ฃŒ ์ด๋ ฅ โ†’ archive.md / sessions.md (2026-07-07 ์ •๋ฆฌ๋กœ NOW์—์„œ ์ด๊ด€)

๋ฏธ๊ฒฐ / ํ›„์†

๋ฏธ๊ฒฐ ยท ๋‹ค์Œ ๋‹จ๊ณ„

  1. ๊ฒฌ์  ํƒ€์ž…SSOT โ€” ์šด์˜ DB ์ž”์—ฌ 2๊ฑด(์œ„ํ—˜์ž‘์—…ยท๋ณ„๋„ ์Šน์ธ ๋Œ€๊ธฐ): โ‘ ํŽ˜์ด์ฆˆ A ์‹œ๋“œ โ€” ์šด์˜ DB ์ ์šฉ ์‹คํ–‰ ๊ธฐ๋ก ์—†์Œ(๋ฏธ์ ์šฉ ์ถ”์ •ยทํ™•์ธ ํ•„์š”) โ‘ก#7 ๋งˆ๊ฐ์žฌ ์ˆจ๊น€ E โ€” ์šด์˜DB ui_column_setting finish 1โ†’0(ํ…Œ์ŠคํŠธ D๋Š” ์™„๋ฃŒยทํŽ˜ํŽ˜ ํ™•์ธ๋จ). ์ฝ”๋“œ(ํŽ˜์ด์ฆˆ AยทB ๋ณธ์ฒด+ํ›„์† 5๊ฑด)๋Š” a523d39๋กœ ์šด์˜ ๋ฐ˜์˜ ์™„๋ฃŒ โ€” ์ด๋ ฅ = archive.md / session-2026-06-10-phaseB-*.md. ์ง€์‹œ๋ฌธ CODI_estimate_type_order_phaseA_integrated.md(์‹คํ–‰ ์™„๋ฃŒ)ยท๊ตฌ ..._fieldtype_seed.md๋Š” ํ๊ธฐยท์‹คํ–‰๊ธˆ์ง€.
  2. estimate 2/3์ฐจ โ€” ์ธ์‡„ํผ ์žฌ์ž‘์„ฑ, ๋‹จ๊ฐ€ํŽธ์ง‘ ํŽ˜์ด์ง€, ์ผ๋ ˆ๋ฒค ๊ฐ€๊ฒฉํ‘œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜.
  3. ์žฌ๋ฃŒ ์ง‘๊ณ„ product ํ…Œ์ด๋ธ” โ€” ๋ณด๋ฅ˜.
  4. ์ž”์—ฌ ์ •๋ฆฌ: ์šด์˜ ๊ฒ€์ฆ์šฉ ๊ฒฌ์  705 ์†Œํ”„ํŠธ ์‚ญ์ œ(์Šน์ธ ํ›„). ๋„์žฅ ์ด๋ฏธ์ง€๋ฅผ ๊ณต๊ธ‰์ž ์ •๋ณด ์ด๋ฏธ์ง€์— 1์žฅ ํ•ฉ์„ฑ(์›๋ณธ ๊ณ ํ•ด์ƒ๋„ ํ™•๋ณด ํ›„).

๊ธฐ๋ณธ ์ž‘์—… ์‹œ์Šคํ…œ (ํ•ญ์ƒ ์ ์šฉ)

โ‘  ์ง„๋‹จ(์ฑ„ํ‹ฐยท๋ถˆํ™•์‹ค์„ฑ0) โ†’ โ‘ก ํ™•์ •๋ณ€๊ฒฝ ๋ฌถ์Œ์œ„์ž„(์ฝ”๋”” .md, ๊ฒ€์ฆ ๋๋‚œ ๊ฒƒ๋งŒ) โ†’ โ‘ข ์œ„ํ—˜์ž‘์—… ๋ถ„๋ฆฌ์Šน์ธ. ์ฝ”๋”” ์ง€์‹œ๋ฌธ: .mdยท์ƒ๋‹จ ์ฒซ ์ค„ "โ€ฆํ™•์ธ ์—†์ด ๋ฐ”๋กœ ์ง„ํ–‰ํ•˜์„ธ์š”."ยท๋ณ€๊ฒฝ ์ „ ์ฝ”๋“œ+์ด์œ  ์ฃผ์„. ์œ„ํ—˜์ž‘์—…(๋Œ€๋Ÿ‰์‚ญ์ œยท์šด์˜๋ฐฐํฌยทDB๋ณ€๊ฒฝยท๊ถŒํ•œ๋ณ€๊ฒฝ)์€ ๋ณ„๋„ ์Šน์ธ. ์„ธ์…˜ ๊ธฐ๋ก: session-YYYY-MM-DD-<์Šฌ๋Ÿฌ๊ทธ>.md ๊ฐœ๋ณ„ ๋ฌธ์„œ(register_doc.py --category archive) + sessions.md ์ธ๋ฑ์Šค ๋งํฌ. ์ž‘์—… ํ•จ์ • = traps.md.


์ตœ์ข… ๊ฐฑ์‹ : 2026-07-27 (KST) โ€” handoff ์™„๋ฃŒ์ด๋ ฅ 2์ฐจ ์ด๊ด€(โœ… 11ํ•ญ๋ชฉ 8,167์ž โ†’ archive.md). ์—ฌ๊ธฐ์—” NOWยทํ™•์ •์‚ฌ์‹คยท๋ฏธ๊ฒฐ๋งŒ ๋‘”๋‹ค.