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` ๋ฐ์ฝ๋ ์ดํฐ ์ ์ฉ) | |
| - ๋ก๊น ์ฝ๋ ์ ์งํ์ฌ ๋๋ฒ๊น ์ฉ์ดํ๊ฒ ํจ | |