์•ˆ๋…•ํ•˜์„ธ์š” JK ์ž…๋‹ˆ๋‹ค.

JATS ์˜ PRD V403051 ๋ฒ„์ „ ์ž…๋‹ˆ๋‹ค. ( 2024๋…„ 03์›” 05์ผ 1๋ฒˆ์งธ ์‹œ๋„ ๋ฒ„์ „ )

V403051


Product Requirements Document (PRD)

1. ๊ฐœ์š” (Introduction)

1.1 ๋ฌธ์„œ ๋ชฉ์ 

๋ณธ ๋ฌธ์„œ๋Š” ๋น„ํŠธ์ฝ”์ธ ์ž๋™ ๋งค๋งค ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์ œํ’ˆ ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ(Product Requirements Document, PRD)์ด๋‹ค.

1.2 ๋ฐฐ๊ฒฝ

๋น„ํŠธ์ฝ”์ธ ๋ฐ ์•”ํ˜ธํ™”ํ ์‹œ์žฅ์€ 24์‹œ๊ฐ„ ์šด์˜๋˜๋ฉฐ ๋†’์€ ๋ณ€๋™์„ฑ์„ ๊ฐ–๋Š”๋‹ค. ์ˆ˜๋™ ๋งค๋งค ๋ฐฉ์‹์€ ํ”ผ๋กœ๋„๊ฐ€ ๋†’๊ณ , ์ตœ์ ์˜ ๋งค๋งค ํƒ€์ด๋ฐ์„ ๋†“์น  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Python์„ ํ™œ์šฉํ•œ ์ž๋™ ๋งค๋งค ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜์—ฌ ์‹œ์žฅ ๊ธฐํšŒ๋ฅผ ํฌ์ฐฉํ•˜๊ณ  ์ง€์†์ ์ธ ๋งค๋งค ์ „๋žต์„ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•œ๋‹ค.

1.3 ๋ชฉํ‘œ

  • ๋‡Œ๋™๋งค๋งค ๋ฐฉ์ง€: ๊ฐ์ • ๊ฐœ์ž… ์—†์ด ๊ทœ์น™ ๊ธฐ๋ฐ˜ ๋งค๋งค ์‹คํ–‰
  • ์›์น™ ์ค€์ˆ˜: ์„ค์ •๋œ ์ „๋žต๊ณผ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์—„๊ฒฉํ•œ ๋งค๋งค ์ˆ˜ํ–‰
  • ์—…๋ฌด ์ง‘์ค‘: ์ž๋™ํ™”๋œ ๋งค๋งค๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์—…๋ฌด์— ์ง‘์ค‘ ๊ฐ€๋Šฅ
  • ์ž๋™ ๋งค๋งค: ์‚ฌ์ „์— ์ •์˜๋œ ๋งค๋งค ์ „๋žต์„ ์ž๋™์œผ๋กœ ์‹คํ–‰
  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง: ํ˜„์žฌ ์‹œ์žฅ ์ƒํ™ฉ์„ ๋ฐ˜์˜ํ•œ ์ฆ‰๊ฐ์ ์ธ ์˜์‚ฌ๊ฒฐ์ •

2. ์ œํ’ˆ ๊ฐœ์š” (Product Overview)

2.1 ํ•ต์‹ฌ ๊ธฐ๋Šฅ

  • ์ฃผ๋ฌธ ์ž๋™ํ™”: ์ง€์ •๋œ ์กฐ๊ฑด(๊ฐ€๊ฒฉ, ์ด๋™ ํ‰๊ท , ๊ฑฐ๋ž˜๋Ÿ‰ ๋“ฑ)์— ๋”ฐ๋ฅธ ๋งค์ˆ˜/๋งค๋„ ์ž๋™ ์‹คํ–‰
  • ์‹ค์‹œ๊ฐ„ ์‹œ์„ธ ์กฐํšŒ: ๊ฑฐ๋ž˜์†Œ API๋ฅผ ํ†ตํ•ด ์‹œ์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„
  • ๋กœ๊ทธ ๋ฐ ์•Œ๋ฆผ ์‹œ์Šคํ…œ: ๋งค๋งค ์‹คํ–‰ ๋‚ด์—ญ์„ ๊ธฐ๋กํ•˜๊ณ  ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ ์ œ๊ณต
  • ์—‘์…€ ๋ฆฌํฌํŠธ ์ƒ์„ฑ: ๋งค๋งค ๊ฒฐ๊ณผ๋ฅผ ์—‘์…€ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์—ฌ ๋ถ„์„ ๊ฐ€๋Šฅ

3. ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ (Feature Requirements)

๊ธฐ๋Šฅ์„ค๋ช…
์‹œ์„ธ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์‹ค์‹œ๊ฐ„์œผ๋กœ Upbit API๋ฅผ ํ†ตํ•ด ๊ฐ€๊ฒฉ, ๊ฑฐ๋ž˜๋Ÿ‰, ํ˜ธ๊ฐ€ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
์ž๋™ ๋งค๋งค ์ „๋žต ์‹คํ–‰ํŠน์ • ์กฐ๊ฑด(์˜ˆ: ์ด๋™ ํ‰๊ท  ๊ต์ฐจ, RSI ์ง€ํ‘œ ๋“ฑ)์— ๋”ฐ๋ผ ๋งค์ˆ˜/๋งค๋„ ์‹คํ–‰
์ฃผ๋ฌธ ๊ด€๋ฆฌ์‹œ์žฅ๊ฐ€, ์†์ ˆ๋งค ๋ฐ ์ด์ต ์‹คํ˜„ ์ฃผ๋ฌธ ์ง€์›
๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ์ตœ๋Œ€ ์†์‹ค ํ•œ๋„ ์„ค์ •
๋กœ๊ทธ ๋ฐ ์•Œ๋ฆผ๋งค๋งค ๋‚ด์—ญ์„ ๋กœ๊น…ํ•˜๊ณ  ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ ์ œ๊ณต
์—‘์…€ ๋ฆฌํฌํŠธ ์ƒ์„ฑ๋งค๋งค ๋‚ด์—ญ์„ ์—‘์…€ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์—ฌ ๋ถ„์„
๋ชจ๋‹ˆํ„ฐ๋ง ์›น ์ œ๊ณตstreamlit ์„ ์ด์šฉํ•œ ๋ฐ์‹œ ๋ณด๋“œ ์ œ๊ณต

4. ๊ธฐ์ˆ  ์š”๊ตฌ์‚ฌํ•ญ (Technical Requirements)

4.1 ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

  • Python ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ: Upbit API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ฃผ๋ฌธ ์‹คํ–‰
  • ๋กœ๊ทธ ์‹œ์Šคํ…œ: logging ๋ชจ๋“ˆ
  • ์•Œ๋ฆผ ์‹œ์Šคํ…œ: ํ…”๋ ˆ๊ทธ๋žจ ์—ฐ๋™
  • ์—˜์…€ ๋ฆฌํฌํŒ…: ์—‘์…€ ํŒŒ์ผ ๋ฆฌํฌํŒ…
  • ์ž๋™ ๋ฐฐํฌ: Git action ๊ธฐ๋ฐ˜์œผ๋กœ AWS EC2 VM์— ๋ฐฐํฌ
  • ๋ชจ๋‹ˆํ„ฐ๋ง: AWS EC2 VM ์—์„œ streamlit ์ด์šฉํ•˜์—ฌ ๋ฐ์‹œ ๋ณด๋“œ ์ œ๊ณต

4.2 API ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„

  1. Upbit API์—์„œ ์‹œ์„ธ ๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ ์ˆ˜์ง‘
  2. ๋งค๋งค ์ „๋žต ๋ชจ๋“ˆ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ฃผ๋ฌธ ๊ฒฐ์ •
  3. ์ฃผ๋ฌธ ์‹คํ–‰ ๋ฐ ์ฒด๊ฒฐ ์—ฌ๋ถ€ ํ™•์ธ
  4. ๊ฒฐ๊ณผ๋ฅผ ์—‘์…€ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ  ํ…”๋ ˆ๊ทธ๋žจ์œผ๋กœ ์•Œ๋ฆผ ์ „์†ก

5. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ (Project Structure)

โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ config
โ”‚   โ”œโ”€โ”€ dev_config.yaml
โ”‚   โ”œโ”€โ”€ prod_config.yaml
โ”‚   โ””โ”€โ”€ sample_config.yaml
โ”œโ”€โ”€ log
โ”œโ”€โ”€ main.py
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ upbit
โ”‚   โ”œโ”€โ”€ analyzer.py
โ”‚   โ”œโ”€โ”€ api.py
โ”‚   โ”œโ”€โ”€ trader.py
โ””โ”€โ”€ util
    โ”œโ”€โ”€ config.py
    โ”œโ”€โ”€ logger.py
    โ”œโ”€โ”€ telegram_bot.py
    โ”œโ”€โ”€ report_generator.py
  • config/: ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ํŒŒ์ผ ์ €์žฅ (๊ฐœ๋ฐœ, ์šด์˜, ์ƒ˜ํ”Œ)
  • upbit/: ๋งค๋งค ๋กœ์ง ๊ด€๋ จ ๋ชจ๋“ˆ
  • util/:
    • config.py: YAML ์„ค์ • ํŒŒ์ผ ๋กœ๋“œ
    • logger.py: ๋กœ๊ทธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • telegram_bot.py: ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ ๊ธฐ๋Šฅ
    • report_generator.py: ์—‘์…€ ๋ฆฌํฌํŠธ ์ƒ์„ฑ ๊ธฐ๋Šฅ
  • ๊ธฐํƒ€
    • main.py: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ
    • requirements.txt: ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ๋ชฉ๋ก (pip ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ)

6. ์ œ์•ฝ์‚ฌํ•ญ (Constraints)

  • ๊ฐ€์ƒํ™˜๊ฒฝ์€ jact_venv ๋กœ ๋ช…๋ช… ํ•œ๋‹ค.
  • upbit api ์š”์ฒญ์€ pyupbit ์‚ฌ์šฉ ํ•˜์ง€ ๋ง๊ณ  docs.upbit.com ์‚ฌ์ดํŠธ ์ฐธ๊ณ  ํ•ด์„œ request ๋กœ ๊ตฌํ˜„
  • API Rate Limit ์ค€์ˆ˜: ๊ฑฐ๋ž˜์†Œ API ํ˜ธ์ถœ ๋นˆ๋„ ์ œํ•œ์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•จ
  • ๋ฒ•์  ์ด์Šˆ: ํŠน์ • ๊ตญ๊ฐ€์—์„œ๋Š” ์ž๋™ ๋งค๋งค๊ฐ€ ๋ฒ•์ ์œผ๋กœ ์ œํ•œ๋  ์ˆ˜ ์žˆ์Œ
  • ๋ณด์•ˆ: API Key ๋ฐ ๊ฑฐ๋ž˜ ๋‚ด์—ญ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ

7. ์ฐธ๊ณ  ์ž๋ฃŒ (References)


REULST

cursor ( v0.46.8)

  • agent : @prd.mdc ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด์ค˜
    • ์ „์ฒด 1576 ์ค„์˜ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ ๋˜์—ˆ๋‹ค.
    • streamlit ์œผ๋กœ ์ƒ์„ฑ๋œ ๋Œ€์‹œ๋ณด๋“œ๋Š” ๋งค์šฐ ํ›Œ๋ฅญํ•˜๋‹ค.

๋ฌธ์ œ

  • ๋‚ด๊ฐ€ ์†Œ์Šค๋ฅผ ๋‹ค ์ดํ•ด ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค์–ด๊ฐ”๋‹ค.
  • ์„ธ๋ถ€์ ์ธ ์‚ฌํ•ญ์ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ๋งŽ๋‹ค.

๊ฐœ์„  ์‚ฌํ•ญ

  • MVP : ์ตœ์†Œ ๊ธฐ๋Šฅ ๋ถ€ํ„ฐ ์ ์ง„์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ๋ถ™์—ฌ ๋‚˜๊ฐ€์ž.
  • PRD ๋ฅผ ๊ธฐ๋Šฅ๋ณ„๋กœ ์„ธ๋ถ„ํ™” ํ•˜๊ณ  ์ž์„ธํžˆ ์“ฐ์ž.
-EOF-