Spaces:
Sleeping
Sleeping
# RAG ์ฑ๋ด + LocalPCAgent ํตํฉ ํ๋ก์ ํธ ๊ณํ | |
## ํ๋ก์ ํธ ๊ฐ์ | |
๊ธฐ์กด RAG ์ฑ๋ด(Flask ๊ธฐ๋ฐ)์ LocalPCAgent ์ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ํตํฉ ์์ ์ ๋๋ค. Gradio UI ์ฝ๋์ ๊ธฐ๋ฅ์ Flask+HTML/JS ๊ตฌ์กฐ์ ์ด์ํฉ๋๋ค. | |
## ์๋ฃ๋ ์์ | |
- [x] ๊ธฐ๋ณธ Flask ๊ธฐ๋ฐ RAG ์ฑ๋ด ๋ฐฑ์๋ ๊ตฌํ | |
- [x] LocalPCAgent ์ ์ด๋ฅผ ์ํ API ์๋ํฌ์ธํธ ์ถ๊ฐ (`app_device_routes.py`) | |
- [x] Flask ๋ฐฑ์๋์ LocalPCAgent ๊ฐ ํต์ ๋ก์ง ๊ตฌํ | |
- [x] ์น UI์ LocalPCAgent ์ ์ด ํ๋ฉด ์ถ๊ฐ (HTML/CSS) | |
- [x] ์น UI์์ LocalPCAgent ์ ์ด ๊ธฐ๋ฅ์ ์ํ JavaScript ๋ก์ง ๊ตฌํ | |
- [x] ํ๋ก์ ํธ ์ฝ๋ ์ ๋ฆฌ ๋ฐ ์ต์ ํ | |
- ๋ถํ์ํ ํ์ผ ๋ฐ ์ฝ๋ ์ ๊ฑฐ | |
- ๋ชจ๋ํ๋ ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ | |
## ํ๋ก์ ํธ ๊ตฌ์กฐ ์ ๋ฆฌ | |
- ์ฃผ์ ์คํ ํ์ผ์ ํ์ธํ๊ณ `app_revised.py`๋ฅผ ์ฃผ ํ์ผ๋ก ์ ํ | |
- ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ 'app' ํจํค์ง๋ก ๋ชจ๋ํ: | |
- ์ฅ์น ์ ์ด ๋ผ์ฐํฐ: `app/app_device_routes.py` | |
- ๊ธฐ๋ณธ API ๋ผ์ฐํฐ: `app/app_routes.py` | |
- ๊ฒ์๊ธฐ ์ด๊ธฐํ: `app/init_retriever.py` | |
- ํ๋ฐํธ์๋ ์ฝ๋ ํตํฉ: | |
- `templates/index.html`์ ์ฅ์น ์ ์ด UI ์น์ | |
- `static/js/app-device.js`์ ์ฅ์น ์ ์ด JavaScript ์ฝ๋ | |
- `static/css/device-style.css`์ ์ฅ์น ์ ์ด ์คํ์ผ | |
## ํ์ฌ ์ํ | |
์ฝ๋ ๊ฒํ ๊ฒฐ๊ณผ ๋๋ถ๋ถ์ ํตํฉ ์์ ์ด ์ด๋ฏธ ์๋ฃ๋ ์ํ์ ๋๋ค: | |
- Flask ๋ฐฑ์๋์ LocalPCAgent API ์๋ํฌ์ธํธ๊ฐ ๊ตฌํ๋์ด ์์ต๋๋ค (`app_device_routes.py`) | |
- ํ๋ก ํธ์๋ UI์ ์ฅ์น ์ ์ด ํญ์ด ์ถ๊ฐ๋์ด ์์ต๋๋ค (`index.html`) | |
- ์ฅ์น ์ ์ด๋ฅผ ์ํ JavaScript ๋ก์ง์ด ๊ตฌํ๋์ด ์์ต๋๋ค (`app-device.js`) | |
- ๊ธฐ๋ณธ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ์ ์ ์ ๋ช ๋ น์ด ์คํ ๊ธฐ๋ฅ์ด ๋ชจ๋ ๊ตฌํ๋์ด ์์ต๋๋ค | |
## ์ถ๊ฐ ๊ฐ๋ฐ ๊ณํ: ์ฅ์น ๋ชฉ๋ก ์กฐํ ๊ธฐ๋ฅ ์ถ๊ฐ | |
### ๊ฐ๋ฐ ๋ชฉํ | |
๋ก์ปฌPC์ ์ฐ๊ฒฐ๋ ์ฅ์น(ํนํ COM ํฌํธ์ USB ์ฅ์น)๋ฅผ ์กฐํํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค. | |
### ๊ตฌํ ์๊ตฌ์ฌํญ | |
1. **๋ก์ปฌPC ์ฅ์น ์กฐํ Python ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ** | |
- COM ํฌํธ ๋ฐ USB ์ฅ์น ๋ชฉ๋ก ์กฐํ | |
- ์ฅ์น๋ณ ์์ธ ์ ๋ณด(์ ์กฐ์ฌ, ์ ํ๋ช , ์๋ฆฌ์ผ ๋ฒํธ ๋ฑ) ์์ง | |
- ๋ฉํฐ ํ๋ซํผ ์ง์(Windows, Linux, macOS) | |
2. **LocalPCAgent API ํ์ฅ** | |
- ์ฅ์น ๋ชฉ๋ก ์กฐํ API ์๋ํฌ์ธํธ ์ถ๊ฐ | |
- ์กฐํ ๊ฒฐ๊ณผ ํจ์จ์ ์ธ ์ ์ก ๋ฐฉ์ ๊ตฌํ | |
3. **UI ํ์ฅ** | |
- ์ฅ์น ์ ์ด ํญ์ ์ฅ์น ๋ชฉ๋ก ์กฐํ ์น์ ์ถ๊ฐ | |
- ์กฐํ ๊ฒฐ๊ณผ ํ์ UI ๊ตฌํ | |
- ์ฅ์น ํ์ ๋ณ ํํฐ๋ง ๊ธฐ๋ฅ ๊ตฌํ | |
### ๊ธฐ์ ์คํ | |
- ๋ฐฑ์๋: Python(`pyserial`, `pyusb`), Flask | |
- ํ๋ก ํธ์๋: HTML, CSS, JavaScript | |
- ํต์ : REST API, JSON ํฌ๋งท | |
### ๊ตฌํ ๊ณํ | |
1. **๋ก์ปฌPC ์ฅ์น ์กฐํ Python ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ** | |
- `scan_devices.py` ์คํฌ๋ฆฝํธ ์์ฑ | |
- ํ ์คํธ ๋ฐ ๋๋ฒ๊น | |
2. **LocalPCAgent์ ํตํฉ** | |
- LocalPCAgent ํ๋ก๊ทธ๋จ ๋ชฉ๋ก์ ๋ฑ๋ก | |
- API ์๋ํฌ์ธํธ ํ ์คํธ | |
3. **Flask ๋ฐฑ์๋ API ํ์ฅ** | |
- `app_device_routes.py`์ ์ฅ์น ์กฐํ API ์ถ๊ฐ | |
- ๋ฐ์ดํฐ ํฌ๋งท ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ ๊ตฌํ | |
4. **ํ๋ก ํธ์๋ UI ๊ฐ๋ฐ** | |
- `index.html`์ ์ฅ์น ๋ชฉ๋ก ์กฐํ ์น์ ์ถ๊ฐ | |
- `app-device.js`์ ์ฅ์น ์กฐํ ๊ด๋ จ ํจ์ ์ถ๊ฐ | |
- ํ์์ CSS ์คํ์ผ ์ถ๊ฐ | |
## ๋จ์ ์์ | |
- [ ] ๋ก์ปฌPC ์ฅ์น ์กฐํ Python ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ | |
- [ ] LocalPCAgent ์๋ฒ์ ์ฅ์น ์กฐํ ๊ธฐ๋ฅ ํตํฉ | |
- [ ] Flask ๋ฐฑ์๋ ์ฅ์น ์กฐํ API ๊ตฌํ | |
- [ ] ํ๋ก ํธ์๋ UI ํ์ฅ | |
- [ ] ์ ์ฒด ์์คํ ํ ์คํธ ๋ฐ ๋๋ฒ๊น | |
- [ ] ์ต์ข ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ ๋ฌธ์ํ ๋ณด์ | |
## ํ์ผ ๊ตฌ์กฐ | |
- `app_revised.py`: ๋ฉ์ธ Flask ์ ํ๋ฆฌ์ผ์ด์ | |
- `app.py`: ๋จ์ํ๋ ์ง์ ์ (app_revised.py ํธ์ถ) | |
- `app/`: ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ | |
- `__init__.py`: ํจํค์ง ์ด๊ธฐํ | |
- `app_device_routes.py`: LocalPCAgent ์ ์ด API ๋ผ์ฐํธ | |
- `app_routes.py`: ๊ธฐ๋ณธ RAG ์ฑ๋ด API ๋ผ์ฐํธ | |
- `init_retriever.py`: RAG ๋ชจ๋ธ ์ด๊ธฐํ ์ฝ๋ | |
- `static/`: ์ ์ ํ์ผ | |
- `css/`: ์คํ์ผ์ํธ | |
- `style.css`: ๊ธฐ๋ณธ ์คํ์ผ | |
- `device-style.css`: ์ฅ์น ์ ์ด ์คํ์ผ | |
- `js/`: JavaScript ํ์ผ | |
- `app.js`: ๋ฉ์ธ JavaScript | |
- `app-core.js`: ํต์ฌ ๊ธฐ๋ฅ | |
- `app-device.js`: ์ฅ์น ์ ์ด ๊ธฐ๋ฅ | |
- `app-docs.js`: ๋ฌธ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ | |
- `app-llm.js`: LLM ๊ด๋ จ ๊ธฐ๋ฅ | |
- `templates/`: HTML ํ ํ๋ฆฟ | |
- `index.html`: ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์ ํ์ด์ง | |
- `login.html`: ๋ก๊ทธ์ธ ํ์ด์ง | |
- `loading.html`: ๋ก๋ฉ ํ์ด์ง | |
- `docs/`: ํ๋ก์ ํธ ๋ฌธ์ | |
- `project_plan.md`: ํ๋ก์ ํธ ๊ณํ ๋ฌธ์ | |
- `cleanup_plan.md`: ์ฝ๋ ์ ๋ฆฌ ๊ณํ ๋ฌธ์ | |
- **์ ๊ท ํ์ผ:** | |
- `LocalPCAgent/programs/scan_devices.py`: ์ฅ์น ์กฐํ Python ์คํฌ๋ฆฝํธ | |
## LocalPCAgent ํตํฉ ์์ฝ | |
- **๋ฐฑ์๋ API**: `app/app_device_routes.py`์ ๊ตฌํ | |
- `/api/device/status`: ์ฅ์น ์๋ฒ ์ํ ํ์ธ | |
- `/api/device/connect`: ์ฌ์ฉ์ ์ง์ URL ์ฐ๊ฒฐ | |
- `/api/device/list`: ์ฅ์น ๋ชฉ๋ก ์กฐํ | |
- `/api/device/programs`: ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ ๋ชฉ๋ก ์กฐํ | |
- `/api/device/programs/<program_id>/execute`: ๋ฑ๋ก๋ ํ๋ก๊ทธ๋จ ์คํ | |
- `/api/device/execute-custom`: ์ฌ์ฉ์ ์ ์ ํ๋ก๊ทธ๋จ ์คํ | |
- **์ถ๊ฐ ์์ :** `/api/device/scan-ports`: COM ํฌํธ ๋ฐ USB ์ฅ์น ๋ชฉ๋ก ์กฐํ | |
- **ํ๋ฐํธ์๋**: ๊ธฐ๋ฅ ์์ฑ | |
- ์ฅ์น ์ ์ด ํญ UI: `templates/index.html`์ ๊ตฌํ | |
- JavaScript ๋ก์ง: `static/js/app-device.js`์ ๊ตฌํ | |
- ์คํ์ผ: `static/css/device-style.css`์ ๊ตฌํ | |
## ์ฃผ์์ฌํญ | |
- JavaScript๋ ์ง์ LocalPCAgent์ ํต์ ํ์ง ์๊ณ Flask ๋ฐฑ์๋๋ฅผ ํตํด ํต์ | |
- ๋ชจ๋ ์ฅ์น ๊ด๋ จ API๋ ์ธ์ฆ๋ ์ฌ์ฉ์๋ง ์ ๊ทผ ๊ฐ๋ฅ (`login_required` ๋ฐ์ฝ๋ ์ดํฐ ์ ์ฉ) | |
- ๋ก๊น ์ฝ๋ ์ ์งํ์ฌ ๋๋ฒ๊น ์ฉ์ดํ๊ฒ ํจ | |