Spaces:
Running
Running
File size: 3,561 Bytes
21bdc64 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | ---
title: IntentFinder API
emoji: ๐
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false
---
> **HuggingFace Space ๋ฐฐํฌ ๋ฉ๋ชจ**
> - SDK: Docker (์ ๋ฉํ). ์ง์
์ `api:app`, ํฌํธ 7860.
> - **Space Settings โ Secrets ์ ์
๋ ฅ**(์ฝ๋/๋ ํฌ์ ๋์ง ์์):
> `NAVER_CLIENT_ID`, `NAVER_CLIENT_SECRET`, `NAVER_API_KEY`, `NAVER_SECRET_KEY`, `NAVER_CUSTOMER_ID`,
> `ANTHROPIC_API_KEY`, `SUPABASE_URL`, `SUPABASE_SERVICE_KEY`
> - **๋ฐฐํฌ ๋ณดํธ ์ํฌ๋ฆฟ**(๊ถ์ฅ): `ALLOWED_ORIGINS`(๋์๋ณด๋ ๋๋ฉ์ธ), `DT_API_KEY`(๋์๋ณด๋์ ๊ณต์ ), `RATE_MAX_PER_MIN`
> - ํฌ์ค์ฒดํฌ: `GET /health` ยท ๋ถ์: `GET /analyze?keyword=...` (`DT_API_KEY` ์ค์ ์ `X-DT-Key` ํค๋ ํ์)
# IntentFinder โ ๊ฒ์ ์ธํ
ํธ ๋ถ์ ๋์๋ณด๋
ํค์๋๋ฅผ ์
๋ ฅํ๋ฉด ๋ค์ด๋ฒ ์ค์๊ฐ ๊ฒ์ ๋ฐ์ดํฐ + AI ํด๋ฌ์คํฐ๋ง์ผ๋ก ๊ฒ์ ์๋ยทํ๊นยท์ฐ๊ด ๊ฒฝ๋ก๋ฅผ ๋ถ์ํ๋ SMB์ฉ ๋์๋ณด๋.
## ๊ตฌ์ฑ
```
[dashboard.html] React ๋จ์ผ ํ์ผ ํ๋ก ํธ (๋น๋ ๋ถํ์)
โ fetch /analyze?keyword=
โผ
[api.py] FastAPI ๋ฐฑ์๋ (ํฌํธ 8000)
โโ naver_collector.py ๋ค์ด๋ฒ ๊ฒ์๊ด๊ณ ํค์๋๋๊ตฌ (๊ฒ์๋ยท๊ฒฝ์)
โโ clusterer.py ๊ด๋ จ์ฑ ํํฐ + S-BERTโUMAPโHDBSCAN ํด๋ฌ์คํฐ๋ง
โโ analyzer.py Overview ์นด๋ ์ง๊ณ
โโ intent_classifier.py Claude Haiku ์๋๋ถ๋ฅยทํ
๋ง๋ช
ยท๋ง์ผํ
์ ์
โโ autocomplete.py ๋ค์ด๋ฒ ์๋์์ฑ ๊ธฐ๋ฐ ๊ฒ์ ๊ฒฝ๋ก
โโ search_path.py ์๋ฒ ๋ฉ ๊ธฐ๋ฐ ๊ฒ์ ๊ฒฝ๋ก(ํด๋ฐฑ)
โโ datalab.py ๋ฐ์ดํฐ๋ฉ ์ฑ๋ณร์ฐ๋ น ์ถ์ ๋น์ค
โโ cache.py SQLite ๋น ๋ฅธ ์ฌ์กฐํ ์บ์
โโ supabase_store.py Supabase ์ ์ฌ(ํตํฉ BI ์ ์ฅ์)
```
## ์ค์น ๋ฐ ์คํ
```bash
# 1. ์์กด์ฑ ์ค์น (torch ํฌํจ, ์๋ฐฑ MB)
pip install -r requirements.txt
# 2. ์๊ฒฉ์ฆ๋ช
์ค์ : .env.example์ .env๋ก ๋ณต์ฌ ํ ๊ฐ ์ฑ์ฐ๊ธฐ
# - ๋ค์ด๋ฒ ๊ฒ์๊ด๊ณ (searchad.naver.com > ๋๊ตฌ > API)
# - ANTHROPIC_API_KEY (platform.claude.com)
# - ๋ค์ด๋ฒ ๋ฐ์ดํฐ๋ฉ (developers.naver.com)
# - SUPABASE_URL / SUPABASE_SERVICE_KEY (Supabase > Settings > API)
# 3. Supabase ํ
์ด๋ธ ์์ฑ: supabase_schema.sql์ SQL Editor์ ๋ถ์ฌ Run
# 4. ์คํ
python -m uvicorn api:app --port 8000 # ๋ฐฑ์๋
python -m http.server 5500 # ํ๋ก ํธ
# โ http://127.0.0.1:5500/dashboard.html
```
## ์๊ฒฉ์ฆ๋ช
ํค (.env)
| ๋ณ์ | ๋ฐ๊ธ์ฒ | ์ฉ๋ |
|---|---|---|
| `NAVER_API_KEY` / `NAVER_SECRET_KEY` / `NAVER_CUSTOMER_ID` | searchad.naver.com | ๊ฒ์๋ยท๊ฒฝ์ |
| `ANTHROPIC_API_KEY` | platform.claude.com | ์๋๋ถ๋ฅยท๋ง์ผํ
์ ์ |
| `NAVER_CLIENT_ID` / `NAVER_CLIENT_SECRET` | developers.naver.com | ์ธ๊ตฌํต๊ณ |
| `SUPABASE_URL` / `SUPABASE_SERVICE_KEY` | Supabase | ํตํฉ ์ ์ฅ์ ์ ์ฌ |
ํค๊ฐ ์๋ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ๋นํ์ฑ(placeholder)๋๊ณ ๋๋จธ์ง๋ ์ ์ ๋์ํ๋ค.
## ์ฃผ์
- `.env`(์ค์ ํค)๋ **์ ๋ ๊ณต์ ยท์ปค๋ฐ ๊ธ์ง**. ๊ณต์ ๋ `.env.example`๋ง.
- `service_role` ํค๋ RLS ์ฐํ ํค โ ์๋ฒ์์๋ง ์ฌ์ฉ, ํ๋ก ํธ ๋
ธ์ถ ๊ธ์ง.
- ๋ค์ด๋ฒ ์๋์์ฑยท๋ฐ์ดํฐ๋ฉ์ ๋น๊ณต์/์๋์ง์ ๊ธฐ๋ฐ โ "์ถ์ " ๋ผ๋ฒจ ์ ์ง.
- CDN(BabelยทTailwind)์ ๋ฐ๋ชจ์ฉ โ ์ค์๋น์ค๋ Vite ๋น๋ ๊ถ์ฅ.
## ์งํ ๊ธฐ๋ก
- `checklist.md` โ ๋จ๊ณ๋ณ ์๋ฃ ํํฉ
- `context-notes.md` โ ์ค๊ณ ๊ฒฐ์ ๊ณผ ๊ทผ๊ฑฐ
- `data-requirements.md` โ ๋ฐ์ดํฐ ์์คยทํ๊ณ ๋ถ์
|