RAG_AgenticServer_Small / docs /project_plan.md
jeongsoo's picture
init
1c2d73c

A newer version of the Gradio SDK is available: 5.42.0

Upgrade

RAG ์ฑ—๋ด‡ + LocalPCAgent ํ†ตํ•ฉ ํ”„๋กœ์ ํŠธ ๊ณ„ํš

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๊ธฐ์กด RAG ์ฑ—๋ด‡(Flask ๊ธฐ๋ฐ˜)์— LocalPCAgent ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ†ตํ•ฉ ์ž‘์—…์ž…๋‹ˆ๋‹ค. Gradio UI ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ์„ Flask+HTML/JS ๊ตฌ์กฐ์— ์ด์‹ํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ๋œ ์ž‘์—…

  • ๊ธฐ๋ณธ Flask ๊ธฐ๋ฐ˜ RAG ์ฑ—๋ด‡ ๋ฐฑ์—”๋“œ ๊ตฌํ˜„
  • LocalPCAgent ์ œ์–ด๋ฅผ ์œ„ํ•œ API ์—”๋“œํฌ์ธํŠธ ์ถ”๊ฐ€ (app_device_routes.py)
  • Flask ๋ฐฑ์—”๋“œ์™€ LocalPCAgent ๊ฐ„ ํ†ต์‹  ๋กœ์ง ๊ตฌํ˜„
  • ์›น UI์— LocalPCAgent ์ œ์–ด ํ™”๋ฉด ์ถ”๊ฐ€ (HTML/CSS)
  • ์›น UI์—์„œ LocalPCAgent ์ œ์–ด ๊ธฐ๋Šฅ์„ ์œ„ํ•œ JavaScript ๋กœ์ง ๊ตฌํ˜„
  • ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ์ •๋ฆฌ ๋ฐ ์ตœ์ ํ™”
    • ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ ์ œ๊ฑฐ
    • ๋ชจ๋“ˆํ™”๋œ ์ฝ”๋“œ ๊ตฌ์กฐ ๊ฐœ์„ 

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์ •๋ฆฌ

  • ์ฃผ์š” ์‹คํ–‰ ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ณ  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 ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ ์šฉ)
  • ๋กœ๊น… ์ฝ”๋“œ ์œ ์ง€ํ•˜์—ฌ ๋””๋ฒ„๊น… ์šฉ์ดํ•˜๊ฒŒ ํ•จ