refactor: clean up root directory by removing cache, old data, and moving scripts
Browse files- .github/workflows/ci.yml +2 -2
- bugfix_report_20260519.md +0 -73
- delete_zero_rel_articles.py β scripts/delete_zero_rel_articles.py +0 -0
- inject_fintech_gold_data.py β scripts/inject_fintech_gold_data.py +0 -0
- plot_keywords.py β scripts/plot_keywords.py +0 -0
- reset_db.py β scripts/reset_db.py +0 -0
- run_pipeline.py β scripts/run_pipeline.py +0 -0
.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
|