From 6362bc13c6b75312820408cc404ab1d0ec34a8a2 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Sat, 17 Jan 2026 10:32:34 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EB=AC=B8=EC=84=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ΅¬ν˜„.md | 120 ------------------ 1 file changed, 120 deletions(-) delete mode 100644 journey/troubleshooting/260117_λ°°λ‹Ή_κ·€μ‘±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ΅¬ν˜„.md diff --git a/journey/troubleshooting/260117_λ°°λ‹Ή_κ·€μ‘±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ΅¬ν˜„.md b/journey/troubleshooting/260117_λ°°λ‹Ή_κ·€μ‘±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ΅¬ν˜„.md deleted file mode 100644 index 4a38fb5..0000000 --- a/journey/troubleshooting/260117_λ°°λ‹Ή_κ·€μ‘±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ΅¬ν˜„.md +++ /dev/null @@ -1,120 +0,0 @@ -# λ°°λ‹Ή κ·€μ‘±μ£Ό μžλ™ μˆ˜μ§‘ λ‘œλΉ™ 톡합 κ΅¬ν˜„ - -**λ‚ μ§œ**: 2026-01-17 -**μž‘μ„±μž**: Agent -**κ΄€λ ¨ 파일**: `rb8001/app/services/dividend/dividend_collector_service.py`, `rb8001/app/scheduler/jobs/dividend_collector.py`, `rb8001/app/scheduler/db_loader.py` - -**μ°Έκ³  λ¬Έμ„œ**: `plans/260116_λ°°λ‹Ή_κ·€μ‘±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ³„νš.md` - ---- - -## ν…ŒμŠ€νŠΈ μ‹œλ‚˜λ¦¬μ˜€ (TDD Red) - -### μ‹œλ‚˜λ¦¬μ˜€ 1: μŠ€μΌ€μ€„λŸ¬ μž‘μ—… 생성 및 μ‹€ν–‰ - -**κΈ°λŒ€ λ™μž‘**: -1. `_run_dividend_collector_with_logging()` ν•¨μˆ˜ 호좜 μ‹œ `collect_all_dividends()` μ„œλΉ„μŠ€ μ‹€ν–‰ -2. λ‘œκΉ…: μ‹œμž‘/μ™„λ£Œ/μ—λŸ¬ 기둝 -3. Supabase 데이터 μ €μž₯ 확인: `dividend_history` ν…Œμ΄λΈ”μ— μ΅œμ‹  λ°°λ‹Ή 데이터 μ €μž₯ - -**검증 ν•­λͺ©**: -- ν•¨μˆ˜ μ‹€ν–‰ 성곡 (μ—λŸ¬ μ—†μŒ) -- λ‘œκ·Έμ— μ‹œμž‘/μ™„λ£Œ λ©”μ‹œμ§€ 기둝 -- DB에 μ΅œμ‹  λ°°λ‹Ή 데이터 μ €μž₯ (였늘 λ‚ μ§œ κΈ°μ€€) - -### μ‹œλ‚˜λ¦¬μ˜€ 2: DB μŠ€μΌ€μ€„ 등둝 및 μžλ™ λ‘œλ“œ - -**κΈ°λŒ€ λ™μž‘**: -1. `scheduled_jobs` ν…Œμ΄λΈ”μ— `dividend_collector` λ ˆμ½”λ“œ μΆ”κ°€ -2. `JOB_TYPE_MAP`에 λ§€ν•‘ μΆ”κ°€ -3. rb8001 μ„œλ²„ μž¬μ‹œμž‘ ν›„ μŠ€μΌ€μ€„ μžλ™ λ‘œλ“œ 확인 - -**검증 ν•­λͺ©**: -- `scheduled_jobs` ν…Œμ΄λΈ”μ— λ ˆμ½”λ“œ 쑴재 -- `JOB_TYPE_MAP`에 `'dividend_collector'` ν‚€ 쑴재 -- μ„œλ²„ μž¬μ‹œμž‘ ν›„ μŠ€μΌ€μ€„ 등둝 확인 - -### μ‹œλ‚˜λ¦¬μ˜€ 3: μˆ˜λ™ μ‹€ν–‰ 및 μžλ™ μ‹€ν–‰ - -**κΈ°λŒ€ λ™μž‘**: -1. `POST /api/scheduler/jobs/dividend_collector/run` μ—”λ“œν¬μΈνŠΈλ‘œ μˆ˜λ™ μ‹€ν–‰ -2. λ§€μ£Ό μΌμš”μΌ μƒˆλ²½ 3μ‹œ μžλ™ μ‹€ν–‰ (cron ν‘œν˜„μ‹) - -**검증 ν•­λͺ©**: -- API μ—”λ“œν¬μΈνŠΈλ‘œ μˆ˜λ™ μ‹€ν–‰ 성곡 -- λ‘œκ·Έμ—μ„œ μ‹€ν–‰ κ²°κ³Ό 확인 -- DB에 μ΅œμ‹  데이터 μ €μž₯ 확인 - ---- - -## κ΅¬ν˜„ κ°€μ΄λ“œ - -### Phase 1: μ„œλΉ„μŠ€ 및 μŠ€μΌ€μ€„λŸ¬ μž‘μ—… 생성 - -**1-1. μ„œλΉ„μŠ€ 생성**: `rb8001/app/services/dividend/dividend_collector_service.py` - -```python -async def collect_all_dividends() -> None: - """λ°°λ‹Ή κ·€μ‘±μ£Ό 전체 데이터 μˆ˜μ§‘""" - # collect_dividends.py의 메인 λ‘œμ§μ„ μ„œλΉ„μŠ€λ‘œ μ΄λ™ν•˜κ±°λ‚˜ import - # λ‘œκΉ… 포함 - pass -``` - -**1-2. μŠ€μΌ€μ€„λŸ¬ μž‘μ—… 생성**: `rb8001/app/scheduler/jobs/dividend_collector.py` - -```python -def _run_dividend_collector_with_logging() -> None: - """λ°°λ‹Ή κ·€μ‘±μ£Ό μˆ˜μ§‘ μŠ€μΌ€μ€„λŸ¬ μž‘μ—… (sync 래퍼)""" - # asyncio.run()으둜 μ„œλΉ„μŠ€ ν•¨μˆ˜ μ‹€ν–‰ - # λ‘œκΉ… 포함 - pass -``` - -**μ°Έκ³  파일**: -- `rb8001/app/scheduler/jobs/diary_generator.py`: κΈ°μ‘΄ νŒ¨ν„΄ μ°Έκ³  -- `goosefarminvesting/backend/scripts/collect_dividends.py`: μˆ˜μ§‘ 둜직 μ°Έκ³  - -### Phase 2: DB μŠ€μΌ€μ€„ 등둝 - -**2-1. `scheduled_jobs` ν…Œμ΄λΈ”μ— λ ˆμ½”λ“œ μΆ”κ°€** - -```sql -INSERT INTO scheduled_jobs (name, job_type, cron_expression, enabled, config) -VALUES ('dividend_collector', 'dividend_collector', '0 3 * * 0', true, '{}'); -``` - -**2-2. `rb8001/app/scheduler/db_loader.py`의 `JOB_TYPE_MAP`에 λ§€ν•‘ μΆ”κ°€** - -```python -JOB_TYPE_MAP = { - # ... κΈ°μ‘΄ λ§€ν•‘ ... - "dividend_collector": { - "func": "_run_dividend_collector_with_logging", - "module": "app.scheduler.jobs.dividend_collector" - } -} -``` - -### Phase 3: ν…ŒμŠ€νŠΈ 및 검증 - -**3-1. μ„œλ²„ μž¬μ‹œμž‘ ν›„ μŠ€μΌ€μ€„ λ‘œλ“œ 확인** -**3-2. API μ—”λ“œν¬μΈνŠΈλ‘œ μˆ˜λ™ μ‹€ν–‰ ν…ŒμŠ€νŠΈ** -**3-3. DB 데이터 확인** - ---- - -## 파일 μ°Έμ‘° - -- `rb8001/app/scheduler/jobs/diary_generator.py`: μŠ€μΌ€μ€„λŸ¬ μž‘μ—… μ˜ˆμ‹œ -- `rb8001/app/scheduler/db_loader.py`: `JOB_TYPE_MAP` ꡬ쑰 -- `goosefarminvesting/backend/scripts/collect_dividends.py`: μˆ˜μ§‘ 둜직 -- `DOCS/journey/plans/260116_λ°°λ‹Ή_κ·€μ‘±μ£Ό_μžλ™_μˆ˜μ§‘_λ‘œλΉ™_톡합_κ³„νš.md`: 전체 κ³„νš - ---- - -## λ‹€μŒ 단계 - -1. Phase 1 κ΅¬ν˜„: μ„œλΉ„μŠ€ 및 μŠ€μΌ€μ€„λŸ¬ μž‘μ—… 생성 -2. Phase 2 κ΅¬ν˜„: DB μŠ€μΌ€μ€„ 등둝 -3. Phase 3 μ‹€ν–‰: ν…ŒμŠ€νŠΈ 및 검증