Skip to content

Latest commit

ย 

History

History
351 lines (300 loc) ยท 11 KB

File metadata and controls

351 lines (300 loc) ยท 11 KB

๐Ÿจ CodoC-Analysis-AI

ํ•™์Šต์ž์˜ ํ’€์ด ์ด๋ ฅ๊ณผ ์˜ค๋‹ต ํŒจํ„ด์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ์ถ”์ฒœํ•˜๊ณ , ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด ๊ฐœ์ธํ™” ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” FastAPI ๊ธฐ๋ฐ˜ AI ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ ์ถ”์ฒœ : ์‚ฌ์šฉ์ž ์ƒํƒœ์™€ ํ’€์ด ์ด๋ ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์Œ ๋ฌธ์ œ ์ถ”์ฒœ
  • ๋ถ„์„ ๋ฆฌํฌํŠธ : ์ฃผ๊ฐ„ ํ•™์Šต ๋กœ๊ทธ์™€ ์ทจ์•ฝ ํŒจํ„ด์„ ๋ฐ”ํƒ•์œผ๋กœ ์„ฑ์žฅ ๋ฆฌํฌํŠธ ์ƒ์„ฑ
  • ๋‚˜๋งŒ์˜ ๋ฌธ์ œ ๋งŒ๋“ค๊ธฐ : ์—…๋กœ๋“œ๋œ ๋ฌธ์ œ ์ด๋ฏธ์ง€์—์„œ ๋ฌธ์ œ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์š”์•ฝ์นด๋“œ/ํ€ด์ฆˆ ์ƒ์„ฑ

ย 

1. ํด๋” ๊ตฌ์กฐ

.
โ”œโ”€โ”€ app                              # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ธ ์†Œ์Šค
โ”‚   โ”œโ”€โ”€ main.py
โ”‚   โ”œโ”€โ”€ core                         # ์ „์—ญ ์„ค์ •/ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ด€๋ฆฌ
โ”‚   โ”‚   โ””โ”€โ”€ config.py
โ”‚   โ”œโ”€โ”€ common                       # ๊ณตํ†ต ์‘๋‹ต/์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ api_response.py
โ”‚   โ”‚   โ”œโ”€โ”€ exceptions                    # ์ปค์Šคํ…€ ์˜ˆ์™ธ ๋ฐ ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ base_exception.py
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ custom_exception.py
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ exception_handler.py
โ”‚   โ”‚   โ””โ”€โ”€ observability                 # ๋กœ๊น…/๋ฉ”ํŠธ๋ฆญ/ํŠธ๋ ˆ์ด์‹ฑ
โ”‚   โ”‚       โ”œโ”€โ”€ logging_config.py
โ”‚   โ”‚       โ”œโ”€โ”€ metrics.py
โ”‚   โ”‚       โ””โ”€โ”€ tracing.py
โ”‚   โ”œโ”€โ”€ domain                       # ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๋กœ์ง
โ”‚   โ”‚   โ”œโ”€โ”€ recommend                # ๋ฌธ์ œ ์ถ”์ฒœ ๋„๋ฉ”์ธ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ recommend_router.py        # ์ถ”์ฒœ API ๋ผ์šฐํ„ฐ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ recommendation_schemas.py  # ์ถ”์ฒœ ์š”์ฒญ/์‘๋‹ต ์Šคํ‚ค๋งˆ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ recommend_usecase.py       # ์ถ”์ฒœ ํ๋ฆ„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ recommend_service.py       # ์ •์ /ํ˜‘์—… ์ถ”์ฒœ ๊ณ„์‚ฐ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ recommend_llm_service.py   # ์ถ”์ฒœ ์‚ฌ์œ  LLM ์ƒ์„ฑ
โ”‚   โ”‚   โ”œโ”€โ”€ report                   # ๋ถ„์„ ๋ฆฌํฌํŠธ ๋„๋ฉ”์ธ
โ”‚   โ”‚   |   โ”œโ”€โ”€ report_router.py           # ๋ฆฌํฌํŠธ API ๋ผ์šฐํ„ฐ
โ”‚   โ”‚   |   โ”œโ”€โ”€ report_schemas.py          # ๋ฆฌํฌํŠธ ์š”์ฒญ/์‘๋‹ต ์Šคํ‚ค๋งˆ
โ”‚   โ”‚   |   โ”œโ”€โ”€ report_service.py          # ์ง€ํ‘œ ๊ณ„์‚ฐ/๋ฆฌํฌํŠธ ์กฐ๋ฆฝ
โ”‚   โ”‚   |   โ”œโ”€โ”€ report_rag_service.py      # RAG ๊ทผ๊ฑฐ ์กฐํšŒ
โ”‚   โ”‚   |   โ”œโ”€โ”€ report_llm_service.py      # ๋ฆฌํฌํŠธ ๋ฌธ๊ตฌ LLM ์ƒ์„ฑ
โ”‚   โ”‚   โ””โ”€โ”€ workbook                  # ์›Œํฌ๋ถ OCR/์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๋„๋ฉ”์ธ
โ”‚   โ”‚       โ”œโ”€โ”€ workbook_service.py
โ”‚   โ”‚       โ”œโ”€โ”€ workbook_llm_service.py
โ”‚   โ”‚       โ”œโ”€โ”€ workbook_prompts.py
โ”‚   โ”‚       โ””โ”€โ”€ workbook_schemas.py
โ”‚   โ”œโ”€โ”€ database                     # DB ํด๋ผ์ด์–ธํŠธ/๋ฐ์ดํ„ฐ์…‹
โ”‚   โ”‚   โ”œโ”€โ”€ vector_db.py
โ”‚   โ”‚   โ”œโ”€โ”€ problem_dataset          # ๋ฌธ์ œ ๋ฉ”ํƒ€/๊ฐ€์ด๋“œ ์›์ฒœ ๋ฐ์ดํ„ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ algo_concepts            # ๋ฆฌํฌํŠธ RAG ๊ทผ๊ฑฐ ๋ฐ์ดํ„ฐ
โ”‚   โ”‚   โ””โ”€โ”€ user_dataset             # ํ˜‘์—… ์ถ”์ฒœ์šฉ ์œ ์ € ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ
โ”‚   โ”œโ”€โ”€ services                     # ๊ณต์šฉ ์„œ๋น„์Šค ๋ ˆ์ด์–ด
โ”‚   โ”‚   โ””โ”€โ”€ embedding_service.py
โ”‚   โ”œโ”€โ”€ queue                        
โ”‚   โ”‚   โ”œโ”€โ”€ constants.py             # ํ/์ต์Šค์ฒด์ธ์ง€ ์ด๋ฆ„ ์ •์˜
โ”‚   โ”‚   โ””โ”€โ”€ rabbitmq.py              # RabbitMQ ์—ฐ๊ฒฐ ๊ด€๋ฆฌ
โ”‚   โ””โ”€โ”€ workers                      # ๋น„๋™๊ธฐ ์ž‘์—… ์†Œ๋น„์ž
โ”‚       โ”œโ”€โ”€ ai_worker.py                  # ์ถ”์ฒœ/๋ฆฌํฌํŠธ ๋น„๋™๊ธฐ ์›Œ์ปค
โ”‚       โ””โ”€โ”€ ocr_worker.py                 # ์›Œํฌ๋ถ OCR ๋น„๋™๊ธฐ ์›Œ์ปค
โ”œโ”€โ”€ scripts                          # ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์ ์žฌ/์…‹์—… ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ”œโ”€โ”€ load_problem_dataset.py
โ”‚   โ”œโ”€โ”€ load_algo_dataset.py
โ”‚   โ”œโ”€โ”€ load_user_dataset.py
โ”‚   โ”œโ”€โ”€ run_api_and_worker.sh             # API + worker ๋™์‹œ ์‹คํ–‰
โ”‚   โ””โ”€โ”€ monitoring
โ”‚       โ”œโ”€โ”€ start_analysis_exporters.sh   # analysis ์„œ๋ฒ„ exporter ์‹คํ–‰
โ”‚       โ””โ”€โ”€ stop_analysis_exporters.sh    # analysis ์„œ๋ฒ„ exporter ์ค‘์ง€
โ”œโ”€โ”€ monitoring                            # Prometheus/Grafana/Loki/Tempo/Alertmanager ๊ตฌ์„ฑ
โ”‚   โ”œโ”€โ”€ docker-compose.monitoring.yml
โ”‚   โ”œโ”€โ”€ analysis-exporters.compose.yml
โ”‚   โ”œโ”€โ”€ prometheus
โ”‚   โ”œโ”€โ”€ alertmanager
โ”‚   โ”œโ”€โ”€ loki
โ”‚   โ”œโ”€โ”€ tempo
โ”‚   โ””โ”€โ”€ deploy-scripts
โ”œโ”€โ”€ codedeploy                       # CodeDeploy ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ docker-compose.yml               # API ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์ •์˜
โ”œโ”€โ”€ Dockerfile                       # API ์ด๋ฏธ์ง€ ๋นŒ๋“œ ์ •์˜
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ requirements.txt                 # ํŒŒ์ด์ฌ ์˜์กด์„ฑ ๋ชฉ๋ก
โ””โ”€โ”€ README.md

ย 

2. ์ƒ์„ธ ๊ธฐ๋Šฅ ์„ค๋ช…

๋ฌธ์ œ ์ถ”์ฒœ/ ๋ถ„์„ ๋ฆฌํฌํŠธ๋Š” HTTP ๋ผ์šฐํ„ฐ๊ฐ€ ๋…ธ์ถœ ๋˜์–ด์žˆ์ง€๋งŒ RabbitMQ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์›Œ์ปค ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๋™์ž‘


2-1. ๋ฌธ์ œ ์ถ”์ฒœ (/api/v2/recommend)

  • ์‚ฌ์šฉ์ž ๋ ˆ๋ฒจ, ์‹œ๋‚˜๋ฆฌ์˜ค, ์ด๋ฏธ ํ‘ผ ๋ฌธ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ถ”์ฒœ
  • ์ถ”์ฒœ ๊ฒฐ๊ณผ์—๋Š” ๋‹จ์ˆœ ๋ฌธ์ œ ID๋งŒ์ด ์•„๋‹ˆ๋ผ ์™œ ์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ํ’€์–ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช… ํฌํ•จ

์ถ”์ฒœ ํ๋ฆ„ ์š”์•ฝ:

  1. NEW ์‹œ๋‚˜๋ฆฌ์˜ค: ๋ ˆ๋ฒจ๋ณ„ ์ •์  ์ถ”์ฒœ ํ’€์—์„œ 5๊ฐœ ์ถ”์ฒœ
  2. DAILY, ON_DEMAND: Qdrant User_memories ๊ธฐ๋ฐ˜ ํ˜‘์—… ์ถ”์ฒœ
  3. ํ˜‘์—… ์ถ”์ฒœ ๊ฒฐ๊ณผ๊ฐ€ 5๊ฐœ ๋ฏธ๋งŒ์ด๋ฉด ์ •์  ์ถ”์ฒœ์œผ๋กœ ๋ถ€์กฑ๋ถ„ ๋ณด์™„
  4. ๊ฐ ๋ฌธ์ œ์— ๋Œ€ํ•ด LLM์œผ๋กœ reason_msg ์ƒ์„ฑ

2-2. ๋ถ„์„ ๋ฆฌํฌํŠธ (/api/v2/reports)

  • ์ฃผ๊ฐ„ ํ•™์Šต ๋กœ๊ทธ์™€ ์ •๋‹ต/์˜ค๋‹ต ํ†ต๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ฑ์žฅ ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑ
  • ๋ฆฌํฌํŠธ๋Š” 'ํ˜„์žฌ ํ•™์Šต ์ƒํƒœ ์š”์•ฝ', '์ตœ๊ทผ ์ทจ์•ฝ ์ง€์  ๋ถ„์„', '์„ฑ์žฅ ํฌ์ธํŠธ ์ง„๋‹จ', '๋‹ค์Œ ํ•™์Šต ๋ฐฉํ–ฅ ์ œ์•ˆ'๊ณผ ๊ฐ™์€ ๋‚ด์šฉ ํฌํ•จ

๋ฆฌํฌํŠธ ํ๋ฆ„ ์š”์•ฝ:

  1. solved_problems_weekly < 3์ด๋ฉด WARM_UP
  2. ์ •ํ™•๋„/๋…๋ฆฝ์„ฑ/ํšจ์œจ์„ฑ/์ผ๊ด€์„ฑ ์ง€ํ‘œ ๊ณ„์‚ฐ
  3. ์ทจ์•ฝ ํ•ญ๋ชฉ์— ๋งž๋Š” ๊ทผ๊ฑฐ ๋ฌธ์„œ๋ฅผ RAG๋กœ ์กฐํšŒ
  4. ๊ทผ๊ฑฐ + ์ง€ํ‘œ๋ฅผ LLM์— ์ „๋‹ฌํ•ด ์ตœ์ข… ๋ฆฌํฌํŠธ ๋ฌธ๊ตฌ ์ƒ์„ฑ

2-3. ๋‚˜๋งŒ์˜ ๋ฌธ์ œ ๋งŒ๋“ค๊ธฐ(์›Œํฌ๋ถ) OCR (api/v2/ocr)

  1. ์ด๋ฏธ์ง€ URL ๋ชฉ๋ก์„ ์ž…๋ ฅ์œผ๋กœ ์ˆ˜์‹ 
  2. vLM์œผ๋กœ ์ด๋ฏธ์ง€์—์„œ ์›๋ฌธ ํ…์ŠคํŠธ ์ถ”์ถœ
  3. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ์—ฌ๋ถ€ ํŒ๋‹จ ๋ฐ ๋ฌธ์ œ ๋ณธ๋ฌธ ๊ตฌ์กฐํ™”
  4. Gemini ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์•ฝ ์นด๋“œ์™€ ํ€ด์ฆˆ ์ƒ์„ฑ
  5. ๊ฒฐ๊ณผ๋ฅผ MQ ์‘๋‹ต ๋ฉ”์‹œ์ง€๋กœ ๋ฐœํ–‰

2-4. ๋น„๋™๊ธฐ ์›Œ์ปค (app/workers/ai_worker.py)

  • RabbitMQ ์š”์ฒญ ํ๋ฅผ ์†Œ๋น„ํ•ด ์ถ”์ฒœ/๋ฆฌํฌํŠธ/OCR์„ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์ฒญ ํ : recommend.request.q, report.request.q, custom.problem.request
  • ์‘๋‹ต ํ : recommend.response.q, report.response.q, custom.problem.response
  • custom.problem.exchange

ย 

3. ๊ธฐ์ˆ  ์Šคํƒ

  • Backend : FastAPI, Uvicorn
  • Queue : RabbitMQ, aio-pika
  • Vector DB : Qdrant
  • Embedding : BAAI/bge-m3 (FlagEmbedding)
  • LLM :
    • ์ถ”์ฒœ/๋ฆฌํฌํŠธ : Qwen-2.5-32B-Instruct
    • OCR : Qwen2.5-VL-7B-Instruct
    • ์›Œํฌ๋ถ ์นด๋“œ/ํ€ด์ฆˆ ์ƒ์„ฑ : gemini-2.0-flash
  • Observability :
    • Prometheus, Grafana, Alertmanager, Loki, Tempo, OpenTelemetry

ย 

4. ๋น ๋ฅธ ์‹คํ–‰ ๊ฐ€์ด๋“œ (๋กœ์ปฌ)

4-1. ์‚ฌ์ „ ์ค€๋น„

  • Python 3.12
  • Qdrant, RabbitMQ, ์ถ”์ฒœ/๋ฆฌํฌํŠธ์šฉ LLM endpoint, OCR์šฉ Vision LLM endpoint, Gemini API Key

ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋„์šธ ๋•Œ:

# Qdrant (์•ฑ ๊ธฐ๋ณธ ํฌํŠธ 6444์— ๋งž์ถฐ ๋งคํ•‘)
docker run -d --name qdrant -p 6444:6333 -v "$(pwd)/qdrant_storage:/qdrant/storage" qdrant/qdrant

# RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

4-2. ์„ค์น˜

python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

4-3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (.env)

.env.template ์ฐธ๊ณ 

4-4. ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์ ์žฌ (์ตœ์ดˆ 1ํšŒ ๊ถŒ์žฅ)

๋ฐ์ดํ„ฐ์…‹์€ ๋ณ„๋„๋กœ ํ•„์š”

python -m scripts.load_problem_dataset
python -m scripts.load_algo_dataset
python -m scripts.load_user_dataset

4-5. ์„œ๋ฒ„ ์‹คํ–‰

uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

4-6. ์›Œ์ปค ์‹คํ–‰ (์„ ํƒ)

python -m app.workers.ai_worker
python -m app.workers.ocr_worker

ํ•œ ๋ฒˆ์— ์‹คํ–‰

sh scripts/run_api_and_worker.sh

4-7. ํ—ฌ์Šค์ฒดํฌ

  • GET / : ์„œ๋ฒ„ ์ƒํƒœ
  • GET /health/db : qdrant ์„œ๋ฒ„ ์—ฐ๊ฒฐ ์ƒํƒœ

4-8. Docker Compose ์‹คํ–‰

docker compose up --build

ย 

5. API ์š”์•ฝ

๊ธฐ๋ณธ ์—”๋“œํฌ์ธํŠธ

  • GET / : ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ
  • GET /health/db : Qdrant ์—ฐ๊ฒฐ ์ƒํƒœ ํ™•์ธ
  • GET /metrics : Prometheus ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ์—”๋“œํฌ์ธํŠธ

๊ณตํ†ต ์‘๋‹ต ํฌ๋งท:

{
  "code": "SUCCESS",
  "message": "OK",
  "data": {}
}

5-1. ์ถ”์ฒœ API

  • POST /api/v2/recommend

์š”์ฒญ ์˜ˆ์‹œ:

{
  "user_id": 1,
  "user_level": "newbie",
  "scenario": "NEW",
  "filter_info": {
    "solved_problem_ids": [1, 2],
    "challenge_problem_ids": [3]
  }
}

์‘๋‹ต ์˜ˆ์‹œ:

{
  "code": "SUCCESS",
  "message": "OK",
  "data": {
    "user_id": 1,
    "scenario": "NEW",
    "recommendations": [
      {
        "problem_id": 22,
        "reason_msg": "..."
      }
    ]
  }
}

์ฃผ์˜:

  • scenario=NEW๋Š” solved_problem_ids ๊ฐœ์ˆ˜ 3 ๋ฏธ๋งŒ์ผ ๋•Œ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

5-2. ๋ฆฌํฌํŠธ API

  • POST /api/v2/reports

์š”์ฒญ ์˜ˆ์‹œ:

{
  "user_id": 1,
  "user_level": "newbie",
  "analysis_period": {
    "start_date": "2026-03-01",
    "end_date": "2026-03-07"
  },
  "raw_metrics": {
    "chatbot_msg_history": [],
    "total_chatbot_requests": 5,
    "solve_duration_sec": 1800,
    "solved_problems_weekly": 4
  },
  "paragraph_fail_stats": {
    "GOAL": 2,
    "CONSTRAINT": 1
  },
  "quiz_fail_stats": {
    "TIME_COMPLEXITY": 2
  }
}

5-3. ์›Œํฌ๋ถ OCR API

์š”์ฒญ ์˜ˆ์‹œ:

{
  "customProblemId": 123,
  "images": [
    {
      "order": 1,
      "url": "https://example.com/problem-page-1.png"
    },
    {
      "order": 2,
      "url": "https://example.com/problem-page-2.png"
    }
  ]
}

์‘๋‹ต ์˜ˆ์‹œ:

{
  "customProblemId": 123,
  "response": {
    "code": "SUCCESS",
    "message": "๋ฌธ์ œ ๋ถ„์„์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
    "data": {
      "problem_detail": {
        "title": "๋ฌธ์ œ ์ œ๋ชฉ",
        "content": "## ๋ฌธ์ œ\n..."
      },
      "summary_card": [],
      "quiz": []
    }
  }
}

6. ๋ชจ๋‹ˆํ„ฐ๋ง

<๊ตฌ์„ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ>

  • monitoring/ : ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„์šฉ compose ๋ฐ ์„ค์ •
  • scripts/monitoring/ : analysis ์„œ๋ฒ„ exporter ์‹คํ–‰/์ค‘์ง€ ์Šคํฌ๋ฆฝํŠธ
  • codedeploy/monitoring/ : ๋ฐฐํฌ ๋ฒˆ๋“ค์šฉ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ •

๋กœ์ปฌ์—์„œ exporter ์‹คํ–‰

./scripts/monitoring/start_analysis_exporters.sh

GPU ์„œ๋ฒ„๋ผ๋ฉด

./scripts/monitoring/start_analysis_exporters.sh --gpu

์ค‘์ง€

./scripts/monitoring/stop_analysis_exporters.sh

7. ์ฐธ๊ณ ์‚ฌํ•ญ

  • ์ถ”์ฒœ/๋ฆฌํฌํŠธ๋Š” FastAPI API๋กœ ๋…ธ์ถœ๋˜์–ด ์žˆ์Œ
  • workbook ๊ธฐ๋Šฅ์€ ํ˜„์žฌ ocr_worker ์ค‘์‹ฌ์˜ ๋น„๋™๊ธฐ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ๋งŒ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ
  • main.py์— workbook ๋ผ์šฐํ„ฐ ์—ฐ๊ฒฐ ํ”์ ์€ ์žˆ์ง€๋งŒ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋Š” ์•Š์Œ
โšก