dev-yuje commited on
Commit
080ff86
Β·
1 Parent(s): aff570a

refactor: clean up root directory by removing cache, old data, and moving scripts

Browse files
.github/workflows/ci.yml CHANGED
@@ -9,14 +9,14 @@ jobs:
9
  runs-on: ubuntu-latest
10
 
11
  steps:
12
- - name: μ†ŒμŠ€μ½”λ“œ 체크아웃
13
  uses: actions/checkout@v4
14
 
15
  - name: Python 3.10 ν™˜κ²½ ꡬ성
16
  uses: actions/setup-python@v5
17
  with:
18
  python-version: "3.10"
19
- cache: "pip" # μ˜μ‘΄μ„± μ„€μΉ˜ 속도 가속
20
 
21
  - name: μ˜μ‘΄μ„± 및 개발 도ꡬ μ„€μΉ˜
22
  run: |
 
9
  runs-on: ubuntu-latest
10
 
11
  steps:
12
+ - name: checkout
13
  uses: actions/checkout@v4
14
 
15
  - name: Python 3.10 ν™˜κ²½ ꡬ성
16
  uses: actions/setup-python@v5
17
  with:
18
  python-version: "3.10"
19
+ cache: "pip"
20
 
21
  - name: μ˜μ‘΄μ„± 및 개발 도ꡬ μ„€μΉ˜
22
  run: |
bugfix_report_20260519.md DELETED
@@ -1,73 +0,0 @@
1
- # πŸ•ΈοΈ Hugging Face Spaces λŸ°νƒ€μž„ μ—λŸ¬ μ΅œμ’… ν•΄κ²° 기술 λ³΄κ³ μ„œ
2
- > **μ΅œμ’… μˆ˜μ • 일자:** 2026λ…„ 5μ›” 19일
3
- > **λŒ€μƒ ν”Œλž«νΌ:** Hugging Face Spaces (FinGraph Chatbot UI)
4
- > **원격 μ„œλ²„ μ΅œμ’… 가동 μƒνƒœ:** 🟒 200 OK (정상 ꡬ동 및 μ„œλΉ„μŠ€ 제곡 쀑)
5
-
6
- μ•ˆλ…•ν•˜μ„Έμš”, κ°œλ°œμžλ‹˜.
7
- Hugging Face Spaces ν™˜κ²½μ—μ„œ λ°œμƒν•˜μ˜€λ˜ **ValueError 및 TypeError(unhashable type: 'dict')** 이슈λ₯Ό 전격 μ‘°μΉ˜ν•˜κ³ , 원격 μ„œλ²„μ˜ **Gradio 6.14.0 무였λ₯˜ 기동(HTTP 200 OK)** μƒνƒœκΉŒμ§€ μ‹€μ‹œκ°„ 검증을 μ™„λ£Œν•˜μ˜€μŠ΅λ‹ˆλ‹€!
8
-
9
- λ³Έ λ³΄κ³ μ„œλŠ” μ΅œμ’… ν•΄κ²° λ‚΄μ—­κ³Ό κ·Όλ³Έ μž₯μ•  μš”μΈμ˜ 뢄석 및 μžλ™ν™” 검증 이λ ₯을 μƒμ„Ένžˆ μ œκ³΅ν•©λ‹ˆλ‹€.
10
-
11
- ---
12
-
13
- ## 1. 🚨 치λͺ…적 μž₯μ•  μš”μΈ 뢄석 (Root Cause Analysis)
14
-
15
- ### 1.1 `TypeError: unhashable type: 'dict'` (Jinja2 / Starlette μΊμ‹œ ν•΄μ‹œ 좩돌)
16
- * **원인:** Hugging Face Spaces의 ꡬ버전 `Gradio 4.44.0` ν™˜κ²½μ—μ„œ Starlette의 `TemplateResponse`λ₯Ό λ‘œλ“œν•  λ•Œ λ°œμƒν•œ 치λͺ…적인 ν”„λ ˆμž„μ›Œν¬ μˆ˜μ€€μ˜ λ²„κ·Έμž…λ‹ˆλ‹€.
17
- * Gradio 4.x λ‚΄λΆ€μ—μ„œ ν…Œλ§ˆ μ„€μ •(`"soft"`) νŒŒλΌλ―Έν„°κ°€ νŒŒμ‹±λ˜λ©΄μ„œ ν…œν”Œλ¦Ώ 직렬화 캐싱 ν™˜κ²½(`Jinja2 cache_key`)에 `dict` 객체가 ν‚€λ‘œ μ„žμ—¬ λ“€μ–΄κ°”μŠ΅λ‹ˆλ‹€. `dict`λŠ” λ³€κ²½ κ°€λŠ₯(Mutable)ν•˜μ—¬ ν•΄μ‹œκ°€ λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ, `jinja2/utils.py` μΊμ‹œ λ§΅ν•‘ 호좜 μ‹œ `TypeError`κ°€ λ˜μ Έμ§€λ©° μ›Ή λΌμš°ν„° μžμ²΄κ°€ λΆ•κ΄΄(500)λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
18
- * **ν•΄κ²°μ±…:** ν…Œλ§ˆ λ Œλ”λ§ 무결성이 ν™•λ³΄λ˜κ³  Jinja2 ν˜Έν™˜ μ—λŸ¬κ°€ 영ꡬ λ³΄μ™„λœ **`Gradio 6.14.0` (둜컬 κ°€μƒν™˜κ²½μ—μ„œ 검증이 λλ‚œ μ΅œμ‹  버전)**으둜 ν”„λ‘œλ•μ…˜ 버전을 ν†΅μΌν•˜μ—¬ μ—λŸ¬λ₯Ό μ›μ²œ μ†Œλ©Έμ‹œμΌ°μŠ΅λ‹ˆλ‹€.
19
-
20
- ### 1.2 `ValueError: When localhost is not accessible...` (루프백 바인딩 였λ₯˜)
21
- * **원인:** 가상 λ¨Έμ‹ /μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ 포트 바인딩 λ§€κ°œλ³€μˆ˜ 없이 `demo.launch()`κ°€ μ‹€ν–‰λ˜λ©΄ 루프백 `127.0.0.1`에 μ’…μ†λ˜μ–΄ μ»¨ν…Œμ΄λ„ˆ μ™ΈλΆ€λ‘œ νŠΈλž˜ν”½ 전달이 λΆˆκ°€ν•΄μ§‘λ‹ˆλ‹€.
22
- * **ν•΄κ²°μ±…:** `app.py` ꡬ동 λ§€κ°œλ³€μˆ˜λ₯Ό `"server_name": "0.0.0.0"`, `"server_port": 7860`으둜 μƒμ‹œ λ°”μΈλ”©ν•˜μ—¬ ν•΄κ²° μ™„λ£Œν–ˆμŠ΅λ‹ˆλ‹€.
23
-
24
- ---
25
-
26
- ## 2. πŸ› οΈ μ’…ν•© 쑰치 λ‚΄μ—­ (Applied Changes)
27
-
28
- ### 2.1 νŒ¨ν‚€μ§€ 버전 μ •ν•©μ„± 100% 일치 쑰치
29
- 둜컬 κ°€μƒν™˜κ²½μ˜ μ•ˆμ •μ μΈ 검증 사양을 ν”„λ‘œλ•μ…˜(Hugging Face) ν™˜κ²½κ³Ό μ™„λ²½νžˆ λ™κΈ°ν™”ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
30
-
31
- * **`README.md` ν”„λ‘ νŠΈλ§€ν„° μˆ˜μ •:**
32
- ```yaml
33
- sdk: gradio
34
- sdk_version: 6.14.0 # (κΈ°μ‘΄: 4.44.0) 둜컬 규격과 동기화
35
- ```
36
-
37
- * **`requirements.txt` μ˜μ‘΄μ„± 상ν–₯ μ‘°μ •:**
38
- ```text
39
- # Gradio UI
40
- gradio>=6.0.0 # (κΈ°μ‘΄: >=4.0.0)
41
- huggingface_hub>=0.20.0 # (κΈ°μ‘΄: <1.0.0 ꡬ버전 μ œμ•½ 제거둜 ν˜Έν™˜μ„± 보μž₯)
42
- ```
43
-
44
- * **`app.py` μ‹€ν–‰ νŒŒλΌλ―Έν„° μ •λΉ„:**
45
- ```python
46
- launch_kwargs = {
47
- "server_name": "0.0.0.0",
48
- "server_port": 7860,
49
- }
50
- ```
51
-
52
- ---
53
-
54
- ## 3. πŸ§ͺ 100% μžλ™ 검증 및 μ‹€μ‹œκ°„ 가동 μƒνƒœ κ²°κ³Ό
55
-
56
- ### 3.1 5λŒ€ λ°©μ–΄ 및 둜컬 ν˜„μž₯ ν…ŒμŠ€νŠΈ μ™„μ „ 톡과
57
- * **Import-Time DB μ—°κ²° λ°©μ§€:** `0.0초` λ§Œμ— μ•ˆμ „ν•˜κ²Œ 둜컬 점검을 마쳐 CI/CD μˆ˜μ§‘ ν¬λž˜μ‹œ μ›μ²œ 차단.
58
- * **린트 및 νƒ€μž… 검사 무결성:** `ruff` 및 `mypy` 검증 무경고 μ™„μ „ 톡과.
59
- * **RAG 3λŒ€ κ³¨λ“œ μ‹œλ‚˜λ¦¬μ˜€ 검증 (`smoke_test_rag.py`):** **3/3개 μ‹œλ‚˜λ¦¬μ˜€ μ™„μ „ PASS!**
60
-
61
- ### 3.2 πŸš€ 원격 배포 동기화 및 200 OK μ‹€μ‹œκ°„ 검증 μ™„λ£Œ
62
- - 컀밋(`fix: upgrade Gradio to 6.14.0...`) μ™„λ£Œ ν›„ `origin main` ν‘Έμ‹œκ°€ μ™„λ²½ν•˜κ²Œ μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€.
63
- - 원격 Spaces μ»¨ν…Œμ΄λ„ˆκ°€ Gradio 6.14.0 λΆ€νŒ… 및 λ„€νŠΈμ›Œν¬ ν”„λ‘μ‹œ 동기화(Warm-up) 과정을 λ¬΄μ‚¬νžˆ λ§ˆμ³€μŠ΅λ‹ˆλ‹€.
64
- - **μ‹€μ‹œκ°„ HTTP 응닡 μ½”λ“œ 쑰회 검증:**
65
- ```bash
66
- $ curl -s -o /dev/null -w "%{http_code}" https://dev-yuje-fingraph.hf.space/
67
- ➑️ μ΅œμ’… 응닡: 200 (OK) πŸŽ‰
68
- ```
69
- ν˜„μž¬ ν—ˆκΉ…νŽ˜μ΄μŠ€ 원격 μ„œλΉ„μŠ€κ°€ 무였λ₯˜ 가동 λͺ¨λ“œλ‘œ μ„±κ³΅μ μœΌλ‘œ μ „ν™˜λ˜μ—ˆμŒμ„ 직접 검증해 λ‚΄μ—ˆμŠ΅λ‹ˆλ‹€.
70
-
71
- ---
72
- > **Developer Note:**
73
- > ν”„λ‘œλ•μ…˜ μ„œλ²„μ˜ λ¬΄κ²°ν•œ ꡬ동 μƒνƒœκΉŒμ§€ μ‹€μ‹œκ°„ μ²΄ν¬ν•˜μ—¬ `200 OK` 가동 μƒνƒœλ₯Ό ν™•μ‹€νžˆ ν™•λ³΄ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ˜€νƒ€κ°€ μ—†λŠ” 정식 배포 μ£Όμ†ŒμΈ **[https://huggingface.co/spaces/dev-yuje/FinGraph](https://huggingface.co/spaces/dev-yuje/FinGraph)**μ—μ„œ μ™„μ „ν•˜κ²Œ 치유된 RAG 챗봇 μ„œλΉ„μŠ€λ₯Ό μ§€κΈˆ λ°”λ‘œ λ§Œλ‚˜λ³΄μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œλ„ κ°œλ°œμžλ‹˜μ˜ λ“ λ“ ν•˜κ³  주도적인 νŒŒνŠΈλ„ˆλ‘œμ„œ 졜고의 완성도λ₯Ό μœ μ§€ν•˜κ² μŠ΅λ‹ˆλ‹€!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
delete_zero_rel_articles.py β†’ scripts/delete_zero_rel_articles.py RENAMED
File without changes
inject_fintech_gold_data.py β†’ scripts/inject_fintech_gold_data.py RENAMED
File without changes
plot_keywords.py β†’ scripts/plot_keywords.py RENAMED
File without changes
reset_db.py β†’ scripts/reset_db.py RENAMED
File without changes
run_pipeline.py β†’ scripts/run_pipeline.py RENAMED
File without changes