From aed53f5d747baa4036d55b397f9e21df149c8945 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Fri, 16 Jan 2026 09:35:39 +0900 Subject: [PATCH 1/4] =?UTF-8?q?docs:=20=ED=99=98=EC=9C=A8=20=EA=B7=B8?= =?UTF-8?q?=EB=9E=98=ED=94=84=20=EC=9D=B4=EC=83=81=EC=B9=98=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=EB=A7=81=20=EB=B0=98=EC=84=B1=20=EB=AC=B8=EC=84=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...œ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md diff --git a/journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md b/journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md new file mode 100644 index 0000000..e016c1e --- /dev/null +++ b/journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md @@ -0,0 +1,62 @@ +# ν™˜μœ¨ κ·Έλž˜ν”„ μ΄μƒμΉ˜ 필터링 - λ°˜μ„± λ¬Έμ„œ + +**λ‚ μ§œ**: 2026-01-16 +**μž‘μ„±μž**: Agent +**κ΄€λ ¨ 파일**: `goosefarminvesting/frontend/src/pages/GoldDetailPage.tsx:307-412` + +--- + +## 문제 상황 + +ν™˜μœ¨ 좔이 κ·Έλž˜ν”„μ—μ„œ μ΄μƒμΉ˜ 슀파이크(0 KRW 급락, 500+ KRW κΈ‰λ“±)κ°€ ν‘œμ‹œλ˜μ–΄ μ‚¬μš©μž κ²½ν—˜μ΄ μ €ν•˜λ¨ + +## ν•΄κ²° λ°©μ•ˆ + +**μ΅œμ’… κ΅¬ν˜„**: `GoldDetailPage.tsx:308-412` +- 전일 λŒ€λΉ„ λ³€ν™”μœ¨ 30% 이상인 데이터 필터링 (O(1) λ³΅μž‘λ„) +- 원본 데이터 필터링 β†’ 집계 β†’ μž¬ν•„ν„°λ§ (이쀑 필터링) +- λ‚ μ§œ 순 μ •λ ¬ κ°•μ œ + +--- + +## μ™œ λ³΅μž‘ν•˜κ²Œ λŒμ•„κ°”λŠ”κ°€ (λ°˜μ„±) + +### 1. λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ λ―Έμ‹€μ‹œ (AGENTS.md 원칙 μœ„λ°˜) +- **원칙**: "ν”„λ‘ νŠΈμ—”λ“œ μ½”λ“œ λ³€κ²½ ν›„ λ°˜λ“œμ‹œ μ‹€μ œ λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ 확인" +- **μ‹€μ œ**: μ½”λ“œ μˆ˜μ • ν›„ λ°”λ‘œ 배포, 배포 후에야 λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ +- **κ²°κ³Ό**: 필터링이 μž‘λ™ν•˜μ§€ μ•Šμ•„λ„ μ•Œ 수 μ—†μŒ β†’ μ—¬λŸ¬ 번 μˆ˜μ • 반볡 + +### 2. 데이터 흐름 νŒŒμ•… λΆ€μ‘± +- **문제**: `aggregateData`와 `filterOutliers` ν•¨μˆ˜ μˆœμ„œ/μ˜μ‘΄μ„± 미확인 +- **κ²°κ³Ό**: 필터링을 집계 ν›„μ—λ§Œ 적용 β†’ 집계 κ³Όμ •μ—μ„œ μ΄μƒμΉ˜ 포함됨 +- **ν•΄κ²°**: 집계 μ „ν›„ 이쀑 ν•„ν„°λ§μœΌλ‘œ λ³΅μž‘λ„ 증가 + +### 3. 단계별 검증 λΆ€μ‘± +- **원칙**: "각 λ‹¨κ³„λ§ˆλ‹€ ν…ŒμŠ€νŠΈλ‘œ 검증 ν›„ μ§„ν–‰" +- **μ‹€μ œ**: 필터링 둜직 μˆ˜μ • β†’ λΉŒλ“œ/배포 β†’ λΈŒλΌμš°μ € 확인 (반볡) +- **κ²°κ³Ό**: λ¬Έμ œκ°€ 계속 λ°œκ²¬λ˜μ–΄ μ—¬λŸ¬ 번 μˆ˜μ • + +### 4. κ°„λ‹¨ν•œ 해결책을 놓침 +- **처음 μ‹œλ„**: 집계 ν›„ ν•„ν„°λ§λ§Œ μ‹œλ„ +- **μ‹€μ œ ν•΄κ²°**: 원본 데이터 필터링 β†’ 집계 β†’ μž¬ν•„ν„°λ§ (이쀑) +- **더 λ‚˜μ€ 방법**: 원본 λ°μ΄ν„°λ§Œ ν•„ν„°λ§ν•˜κ³  μ§‘κ³„λŠ” λ‹¨μˆœν™” κ°€λŠ₯ν–ˆμ„ μˆ˜λ„ + +--- + +## κ΅ν›ˆ + +### 원칙 μ€€μˆ˜ 체크리슀트 +- [x] λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ λ¨Όμ € (μ½”λ“œ μˆ˜μ • μ „ ν˜„ν™© νŒŒμ•…) +- [x] 데이터 흐름 λͺ…ν™•νžˆ νŒŒμ•… ν›„ μˆ˜μ • +- [x] 단계별 검증 (필터링 둜직 β†’ 집계 둜직 β†’ μ΅œμ’… κ²°κ³Ό) + +### λ‹€μŒμ— ν•  일 +1. **ν”„λ‘ νŠΈμ—”λ“œ μˆ˜μ • μ‹œ**: μ½”λ“œ μˆ˜μ • μ „ λΈŒλΌμš°μ €μ—μ„œ 문제 확인 +2. **데이터 처리 둜직**: μž…λ ₯ β†’ 처리 β†’ 좜λ ₯ 흐름 λͺ…ν™•νžˆ λ¬Έμ„œν™” +3. **필터링 적용 μœ„μΉ˜**: κ°€λŠ₯ν•˜λ©΄ κ°€μž₯ μ•ž λ‹¨κ³„μ—μ„œ ν•œ 번만 적용 + +--- + +## μ°Έκ³  +- AGENTS.md: ν”„λ‘ νŠΈμ—”λ“œ λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ ν•„μˆ˜ 원칙 +- 312_λ¬Έμ„œ_μž‘μ„±_원칙.md: 단계별 검증 원칙 From 5002cf6482461656efb5449cf285040fdb5807b5 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Fri, 16 Jan 2026 09:38:06 +0900 Subject: [PATCH 2/4] =?UTF-8?q?docs:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=EC=97=90=20=EC=9E=91=EC=84=B1=EB=90=9C=20Goo?= =?UTF-8?q?seFarm=20=EB=B0=98=EC=84=B1=20=EB=AC=B8=EC=84=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...œ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md | 62 ------------------- 1 file changed, 62 deletions(-) delete mode 100644 journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md diff --git a/journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md b/journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md deleted file mode 100644 index e016c1e..0000000 --- a/journey/troubleshooting/260116_ν™˜μœ¨_κ·Έλž˜ν”„_μ΄μƒμΉ˜_필터링_λ°˜μ„±.md +++ /dev/null @@ -1,62 +0,0 @@ -# ν™˜μœ¨ κ·Έλž˜ν”„ μ΄μƒμΉ˜ 필터링 - λ°˜μ„± λ¬Έμ„œ - -**λ‚ μ§œ**: 2026-01-16 -**μž‘μ„±μž**: Agent -**κ΄€λ ¨ 파일**: `goosefarminvesting/frontend/src/pages/GoldDetailPage.tsx:307-412` - ---- - -## 문제 상황 - -ν™˜μœ¨ 좔이 κ·Έλž˜ν”„μ—μ„œ μ΄μƒμΉ˜ 슀파이크(0 KRW 급락, 500+ KRW κΈ‰λ“±)κ°€ ν‘œμ‹œλ˜μ–΄ μ‚¬μš©μž κ²½ν—˜μ΄ μ €ν•˜λ¨ - -## ν•΄κ²° λ°©μ•ˆ - -**μ΅œμ’… κ΅¬ν˜„**: `GoldDetailPage.tsx:308-412` -- 전일 λŒ€λΉ„ λ³€ν™”μœ¨ 30% 이상인 데이터 필터링 (O(1) λ³΅μž‘λ„) -- 원본 데이터 필터링 β†’ 집계 β†’ μž¬ν•„ν„°λ§ (이쀑 필터링) -- λ‚ μ§œ 순 μ •λ ¬ κ°•μ œ - ---- - -## μ™œ λ³΅μž‘ν•˜κ²Œ λŒμ•„κ°”λŠ”κ°€ (λ°˜μ„±) - -### 1. λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ λ―Έμ‹€μ‹œ (AGENTS.md 원칙 μœ„λ°˜) -- **원칙**: "ν”„λ‘ νŠΈμ—”λ“œ μ½”λ“œ λ³€κ²½ ν›„ λ°˜λ“œμ‹œ μ‹€μ œ λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ 확인" -- **μ‹€μ œ**: μ½”λ“œ μˆ˜μ • ν›„ λ°”λ‘œ 배포, 배포 후에야 λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ -- **κ²°κ³Ό**: 필터링이 μž‘λ™ν•˜μ§€ μ•Šμ•„λ„ μ•Œ 수 μ—†μŒ β†’ μ—¬λŸ¬ 번 μˆ˜μ • 반볡 - -### 2. 데이터 흐름 νŒŒμ•… λΆ€μ‘± -- **문제**: `aggregateData`와 `filterOutliers` ν•¨μˆ˜ μˆœμ„œ/μ˜μ‘΄μ„± 미확인 -- **κ²°κ³Ό**: 필터링을 집계 ν›„μ—λ§Œ 적용 β†’ 집계 κ³Όμ •μ—μ„œ μ΄μƒμΉ˜ 포함됨 -- **ν•΄κ²°**: 집계 μ „ν›„ 이쀑 ν•„ν„°λ§μœΌλ‘œ λ³΅μž‘λ„ 증가 - -### 3. 단계별 검증 λΆ€μ‘± -- **원칙**: "각 λ‹¨κ³„λ§ˆλ‹€ ν…ŒμŠ€νŠΈλ‘œ 검증 ν›„ μ§„ν–‰" -- **μ‹€μ œ**: 필터링 둜직 μˆ˜μ • β†’ λΉŒλ“œ/배포 β†’ λΈŒλΌμš°μ € 확인 (반볡) -- **κ²°κ³Ό**: λ¬Έμ œκ°€ 계속 λ°œκ²¬λ˜μ–΄ μ—¬λŸ¬ 번 μˆ˜μ • - -### 4. κ°„λ‹¨ν•œ 해결책을 놓침 -- **처음 μ‹œλ„**: 집계 ν›„ ν•„ν„°λ§λ§Œ μ‹œλ„ -- **μ‹€μ œ ν•΄κ²°**: 원본 데이터 필터링 β†’ 집계 β†’ μž¬ν•„ν„°λ§ (이쀑) -- **더 λ‚˜μ€ 방법**: 원본 λ°μ΄ν„°λ§Œ ν•„ν„°λ§ν•˜κ³  μ§‘κ³„λŠ” λ‹¨μˆœν™” κ°€λŠ₯ν–ˆμ„ μˆ˜λ„ - ---- - -## κ΅ν›ˆ - -### 원칙 μ€€μˆ˜ 체크리슀트 -- [x] λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ λ¨Όμ € (μ½”λ“œ μˆ˜μ • μ „ ν˜„ν™© νŒŒμ•…) -- [x] 데이터 흐름 λͺ…ν™•νžˆ νŒŒμ•… ν›„ μˆ˜μ • -- [x] 단계별 검증 (필터링 둜직 β†’ 집계 둜직 β†’ μ΅œμ’… κ²°κ³Ό) - -### λ‹€μŒμ— ν•  일 -1. **ν”„λ‘ νŠΈμ—”λ“œ μˆ˜μ • μ‹œ**: μ½”λ“œ μˆ˜μ • μ „ λΈŒλΌμš°μ €μ—μ„œ 문제 확인 -2. **데이터 처리 둜직**: μž…λ ₯ β†’ 처리 β†’ 좜λ ₯ 흐름 λͺ…ν™•νžˆ λ¬Έμ„œν™” -3. **필터링 적용 μœ„μΉ˜**: κ°€λŠ₯ν•˜λ©΄ κ°€μž₯ μ•ž λ‹¨κ³„μ—μ„œ ν•œ 번만 적용 - ---- - -## μ°Έκ³  -- AGENTS.md: ν”„λ‘ νŠΈμ—”λ“œ λΈŒλΌμš°μ € ν…ŒμŠ€νŠΈ ν•„μˆ˜ 원칙 -- 312_λ¬Έμ„œ_μž‘μ„±_원칙.md: 단계별 검증 원칙 From 5a860ee3eddca36307fb83e1acb3688dbb77a3ff Mon Sep 17 00:00:00 2001 From: happybell80 Date: Fri, 16 Jan 2026 20:37:06 +0900 Subject: [PATCH 3/4] =?UTF-8?q?docs:=20Admin=20Dashboard=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EA=B0=84=20=ED=97=AC=EC=8A=A4=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=EB=AC=B8=EC=84=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md diff --git a/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md b/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md new file mode 100644 index 0000000..c528bd1 --- /dev/null +++ b/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md @@ -0,0 +1,41 @@ +# Admin Dashboard μ„œλ²„ κ°„ ν—¬μŠ€μ²΄ν¬ κ°œμ„  + +**λ‚ μ§œ**: 2026-01-16 +**μž‘μ„±μž**: Claude +**κ΄€λ ¨ 파일**: `admin-dashboard/backend/services/system_service.py` + +--- + +## 문제 상황 + +51124 μ„œλ²„μ˜ admin-dashboardκ°€ 51123 μ„œλ²„ μ„œλΉ„μŠ€(goosefarm-app, robeing-gateway, opensearch) ν—¬μŠ€μ²΄ν¬ μ‹œ NOT_FOUND μƒνƒœ λ°œμƒ. + +**원인 3κ°€μ§€**: +1. Docker API μ œν•œ: 51124μ—μ„œ 51123 μ»¨ν…Œμ΄λ„ˆλ₯Ό Docker API둜 쑰회 λΆˆκ°€ (같은 μ„œλ²„ μ»¨ν…Œμ΄λ„ˆλ§Œ 쑰회 κ°€λŠ₯) +2. 폴백 둜직 μ—†μŒ: Docker API μ‹€νŒ¨ μ‹œ HTTP ν—¬μŠ€μ²΄ν¬λ‘œ ν΄λ°±ν•˜μ§€ μ•ŠμŒ +3. μ„œλ²„ κ°„ μ ‘κ·Ό λΆˆκ°€: 172.17.0.1은 Docker bridge IP둜 같은 μ„œλ²„μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯, 51124μ—μ„œ 51123 μ„œλΉ„μŠ€ μ ‘κ·Ό μ‹œ 192.168.219.45 ν•„μš” + +## ν•΄κ²° λ°©μ•ˆ + +### 1. Docker API μ‹€νŒ¨ μ‹œ HTTP 폴백 μΆ”κ°€ +- `system_service.py:458-468`: Docker API 체크 성곡 μ‹œλ§Œ μ¦‰μ‹œ λ°˜ν™˜, μ‹€νŒ¨ μ‹œ HTTP 체크둜 μ§„ν–‰ + +### 2. μ„œλ²„ κ°„ μ ‘κ·Ό URL 폴백 +- `system_service.py:475-500`: 172.17.0.1 μ‚¬μš©ν•˜λŠ” 51123 μ„œλ²„ μ„œλΉ„μŠ€λŠ” 192.168.219.45둜 폴백 μ‹œλ„ + +**μ½”λ“œ λ³€κ²½**: +- Docker API 성곡 체크 ν›„ HTTP 폴백 κ°€λŠ₯ν•˜λ„λ‘ 쑰건 λ³€κ²½ +- HTTP 체크 μ‹œ 172.17.0.1 μ‹€νŒ¨ μ‹œ 192.168.219.45둜 μž¬μ‹œλ„ + +## κ΅ν›ˆ + +### μ„œλ²„ κ°„ μ ‘κ·Ό μ‹œ Docker bridge IP ν•œκ³„ +- 172.17.0.1은 Docker bridge IP둜 같은 ν˜ΈμŠ€νŠΈμ—μ„œλ§Œ 유효 +- μ„œλ²„ κ°„ μ ‘κ·Ό μ‹œ μ‹€μ œ μ„œλ²„ IP(192.168.219.45/52) μ‚¬μš© ν•„μš” + +### 폴백 둜직 ν•„μˆ˜ +- Docker APIλŠ” 같은 μ„œλ²„ μ»¨ν…Œμ΄λ„ˆλ§Œ 쑰회 κ°€λŠ₯ +- 원격 μ„œλ²„ μ„œλΉ„μŠ€λŠ” HTTP ν—¬μŠ€μ²΄ν¬λ‘œ 폴백 ν•„μš” + +### 체크 λ©”μ„œλ“œ μš°μ„ μˆœμœ„ +- Docker API (같은 μ„œλ²„) β†’ HTTP (원격 μ„œλ²„ 포함) μˆœμ„œλ‘œ 폴백 From 786c427ceaedbffc7dfb509d22bc93a5fb9d29ed Mon Sep 17 00:00:00 2001 From: happybell80 Date: Fri, 16 Jan 2026 21:50:25 +0900 Subject: [PATCH 4/4] =?UTF-8?q?docs:=20opensearch=5F9600=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=EB=82=B4=EC=9A=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md b/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md index c528bd1..80949c1 100644 --- a/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md +++ b/journey/troubleshooting/260116_admin_dashboard_μ„œλ²„κ°„_ν—¬μŠ€μ²΄ν¬_κ°œμ„ .md @@ -23,9 +23,13 @@ ### 2. μ„œλ²„ κ°„ μ ‘κ·Ό URL 폴백 - `system_service.py:475-500`: 172.17.0.1 μ‚¬μš©ν•˜λŠ” 51123 μ„œλ²„ μ„œλΉ„μŠ€λŠ” 192.168.219.45둜 폴백 μ‹œλ„ +### 3. opensearch_9600 제거 +- `system_service.py:25,38,422`: Performance Analyzer λΉ„ν™œμ„±ν™”λ‘œ ν—¬μŠ€μ²΄ν¬ λΆˆκ°€ν•˜μ—¬ 제거 + **μ½”λ“œ λ³€κ²½**: - Docker API 성곡 체크 ν›„ HTTP 폴백 κ°€λŠ₯ν•˜λ„λ‘ 쑰건 λ³€κ²½ - HTTP 체크 μ‹œ 172.17.0.1 μ‹€νŒ¨ μ‹œ 192.168.219.45둜 μž¬μ‹œλ„ +- opensearch_9600 μ„œλΉ„μŠ€ 제거 (SERVER_51123_SERVICES, BASE_SERVICES, docker_servicesμ—μ„œ 제거) ## κ΅ν›ˆ