μ¬ν ν¬λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μλ μλΉμ€
κ²°νΌ ν μκ° λ§λ ¨κ³Ό μ νΌμ¬νμ μ€λΉνλ μ¬μ©μλ€μ λμμΌλ‘
μμ κΈ κΈλ¦¬λΉκ΅, νμ¨ κ³μ°κΈ°, κ·Όμ² μν κ²μ, κ·Έλ¦¬κ³ μ¬μ©μ λ§μΆ€ν κΈμ΅ μν μΆμ² μλΉμ€λ₯Ό μ 곡ν©λλ€.
- κΈμ΅μν λ°μ΄ν° κΈ°λ° μκΈ λ° μ κΈ κΈλ¦¬ λΉκ΅ μλΉμ€ ꡬμ±
- μ μ μ λ§μ΄λ°μ΄ν° κΈ°λ° κΈμ΅ μΆμ² μκ³ λ¦¬μ¦ κ΅¬μ±
- νμ¨ μ 보 APIλ₯Ό νμ©ν νμ¨ κ³μ° μλΉμ€ λ° μ°¨νΈ κ΅¬μ±
- μ§λ APIλ₯Ό νμ©ν μν κ²μ μλΉμ€ ꡬμ±
- κ³ κ°μΌν° μλΉμ€λ‘ μ¬μ©μ± κ°μ
- μ¬μ©μ μ 보 λ° λ§μ΄λ°μ΄ν° λμμ¬λΆλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€.
- μμ κΈ κΈλ¦¬ λΉκ΅
- μ¬μ©μκ° μ νν κΈμ΅μ¬, μνμ΅μ μ λ§λ μνμ μ‘°νν©λλ€.
_2024_11_27_03_26_41_82.mp4
- κΈμ΅μν λ° μ¬μ©μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ κ°μΈμ μ¬μ μνμ λ§λ κΈμ΅ μνμ μΆμ²ν©λλ€.
- κΈ°λ³ΈκΈλ¦¬ κΈ°μ€ μμ 10κ°μ§ μν
- μκ³ λ¦¬μ¦ κ΅¬ν μλ£
- μΆκ΅μ μν΄ νμν νμ κΈμ‘μ κ³μ°ν©λλ€.
- κ²μ ν€μλ κ·Όμ²μ μν μ§μ μ κ²μν©λλ€.
_2024_11_27_03_28_46_331.mp4
- μ¬μ©μ κ°μ μ§λ¬Έ, 리뷰 λ±μ 곡μ ν μ μμΌλ©°, κ΄λ¦¬μμ λ΅λ³μ μ 곡λ°μ μ μμ΅λλ€.
_2024_11_27_03_48_11_847.mp4
_2024_11_27_03_41_22_460.mp4
_2024_11_27_03_37_42_133.mp4
2024λ 11μ 18μΌ ~ 2024λ 11μ 27μΌ
|
KSAhh / κΉμμ Backend(Django), Frontend(Vue), Git κ·μΉ μ§μ , API μ€κ³, ERD μ€κ³ |
sadtearcat / λ°±μ§μ Frontend(Vue), UI λμμΈ, μν μΆμ² μκ³ λ¦¬μ¦ κ°λ° |
- Visualization: Chart.js
- HTTP Client: Axios
- νκ΅μμΆμ μν API
- μΉ΄μΉ΄μ€ API
- κΈμ΅κ°λ μ API
finance-pjt/
βββ back/
β βββ accounts/ - νμκ΄λ¦¬
β βββ algofipo_pjt/ - νλ‘μ νΈ μ€μ
β βββ articles/ - κ³ κ°μΌν°
β βββ exchange/ - νμ¨ κ³μ°κΈ°
β βββ products/ - κΈμ΅μν
β βββ raw_data/ - κΈμ΅μν λ°μ΄ν°
β βββ requirements.txt - μμ‘΄μ± νμΌ
β βββ μΆμ²μκ³ λ¦¬μ¦ - μΆμ² μκ³ λ¦¬μ¦ μ μ²λ¦¬ (+ μμ±ν AI)
βββ front/
β βββ algo-fipo/
β β βββ src/
β β β βββ assets/ - μ μ νμΌ
β β β βββ components/- Vue μ»΄ν¬λνΈ
β β β βββ data/ - λ°μ΄ν° κ΄λ¦¬
β β β βββ router/ - Vue λΌμ°ν°
β β β βββ stores/ - μν κ΄λ¦¬
β β β βββ views/ - νμ΄μ§ μ»΄ν¬λνΈ
β β βββ App.vue
β β βββ main.js
β β βββ package.json
βββ README.md
- NavBar: λ€λΉκ²μ΄μ λ°
- BankMap: μ§λ κΈ°λ° μν κ²μ
- CustomerService: κ³ κ°μΌν°
- ExchangeRate: νμ¨ κ³μ°κΈ°
- Savings: μμ κΈ κΈλ¦¬ λΉκ΅
- LoanPage: λμΆ κ΄λ ¨ μλΉμ€
- μμ κΈ λ°μ΄ν° μμ§ (κΈμ΅μνμ 보곡μAPI)
- κ° μνλ³ spcl_intr νλ μ μ²λ¦¬
- λ§μ΄λ°μ΄ν° κΈ°λ° μ¬μ©μ κ·Έλ£Ήν (λλ―Έλ°μ΄ν° μμ±)
- λμ΄
- μ§μ
- μ νκ· μλ
- μ νκ· μλΉ
- μ΄ μμ°
- λ§μ΄λ°μ΄ν° λμ μ¬λΆ
- κΈμ΅ μν μΆμ²
- λ§μ΄λ°μ΄ν° νμ© λμ β κ°μΈμ 보 κ·Έλ£Ήννμ¬ μΆμ²
- λ§μ΄λ°μ΄ν° νμ© λΉλμ β κΈ°λ³ΈκΈλ¦¬ κΈ°λ° μμ νλͺ© μΆμ²
ν΅μ¬λͺ©ν : μ λ’°μ± μλ κ³Όμ μ κ±°μΉ λλ―Έλ°μ΄ν° μμ±μΌλ‘ μ΄κΈ° μΆμ² λν λ Όλ¦¬μ μΈ νλ¦μ λ°λ₯Ό μ μλλ‘ νλ€. κ°μ : λ³Έ μ¬μ΄νΈ κ°μ μ μ μνΈκ°μ μ μ λ λ§μ΄λ°μ΄ν° 곡μ μ¬λΆλ₯Ό μ νν μ μλ€, λλ―Έλ°μ΄ν° μ μ λ€μ λͺ¨λ ν©λ¦¬μ μΈ μ νμΌλ‘ μνμ μ ννλ€. λ³Έ μ¬μ΄νΈλ μ§μ₯μΈμ΄ κ°μ ν νλ₯ μ΄ λλ€κ³ κ°μ νλ€.
λλ―Έλ°μ΄ν° μμ± κ°μ :
-
μ°λ Ήλ³ κ°μ μ μ λΉμ¨ λ³Έ μ¬μ΄νΈλ μ¬νμ΄λ μμ νκ²ν ν μ¬μ΄νΈμ΄λ―λ‘ κ°μ μ μ λΉμ¨ μ€ 20λκ° κ°μ₯ λ§μ κ²μ΄λΌ κ°μ νλ©° μ°λ Ήλ³ λΉμ¨μ λ€μκ³Ό κ°λ€. λλ€ν¨μλ‘ μ€μ ν΄ μ 체 μ΄ν©μ λν ν€ κ°μ λΉμ¨λ‘ μ°λ Ήμ΄ νλ₯ μ μΌλ‘ μμ±λλ€. [20λ : 10, 30λ : 5, 40λ : 2, 50λ : 2, 60λ : 1] κ° κ°μ μμλ‘ μ€μ ν κ°μ΄λ€.
-
μ±λ³ λΉμ¨ : 5:5λ‘ μ€μ ν΄ λ¨λ κ°μ κ· νμ΄ μλλ‘ νλ€. μ΄λ μ κ· κ°μ μκ° μ±λ³μ λ°λΌ μΆμ² μμ€ν μ κΈ°λ₯μ λΆμ‘±νκ² μ΄μ©νμ§ μκ² νκΈ° μν¨μ΄λ€.
# λμ΄, μ±λ³ ν¨μ
def generate_user_age_gender():
age_group_weights = [10, 5, 2, 2, 1]
age_group = random.choices([20, 30, 40, 50, 60], weights=age_group_weights, k=1)[0]
user_age = random.randint(age_group, age_group + 9)
user_gender = random.choice(["male", "female"])
return user_age, user_gender- λ§μ΄λ°μ΄ν° νμ© μ¬λΆ
λ§μ΄λ°μ΄ν° νμ© μ¬λΆλ [1, 2, 3] μΌλ‘ λλλ€.
κ° κ°μ λν μ€λͺ
:
2 = λ§μ΄λ°μ΄ν°λ₯Ό μ 곡νκ³ , μ€μ§ λ³ΈμΈμ λ§μ΄λ°μ΄ν°λ₯Ό μ΄μ©νλ©° κΈμ΅μ 보λ₯Ό 곡μ νμ§ μλλ€. 3 = λ§μ΄λ°μ΄ν°λ₯Ό μ 곡νμ§ μμΌλ©° κΈ°λ³Έ κΈμ΅ μν μΆμ²μλΉμ€ λ‘μ§μ λ°λ₯Έλ€.```
# λ§μ΄λ°μ΄ν° νμ©μ¬λΆ μμ± ν¨μ
def generate_data_consent():
return random.choices([1, 2, 3], weights=[6, 3, 1], k=1)[0]-
μλ λ° μ§μΆ λ°μ΄ν° μ€μ (μ΅μ λ°μ΄ν°κ° κ²½ν₯μ±μ μ¦κ±°ν μ μμΌλ¦¬λ νλ¨μ μ΅κ·Ό 1λ κ° λ°μ΄ν°μ νκ· μ μνκ· μλμ‘μΌλ‘ νλ¨) κ°κ΅¬μ£Ό_μ°λ Ήλ³_κ°κ΅¬λΉ_μνκ· _κ°κ³μμ§__μ κ΅_1μΈμ΄μ__2023_4.2~2024_4.2μ μ°Έκ³ ν΄ μ°λ Ήλλ³ 12κ°μ νκ· μλμ μ€μ , μ€κ°κ°κ³Ό νκ· κ°μ μ΄μ©ν΄ μμ μ€μ ν΄ νμ€νΈμ°¨λ₯Ό μ€μ , λμΌν κΈ°κ°μ ν΅κ³μ² μλ£μΈ κ°κ΅¬νΉμ±λ³_λΉλͺ©λ³_μλΉμ§μΆκ³Ό κ°κ΅¬νΉμ±λ³_λΉλͺ©λ³_λΉμλΉμ§μΆκ°μ ν©μ°νμ¬ μ§μΆ λ°μ΄ν°λ‘ νμ©
-
2023 κ°κ³κΈμ΅λ³΅μ§μ‘°μ¬ λ°μ΄ν°λ₯Ό μ°Έκ³ ν΄ μ°λ Ήλλ³ μμ° λ°μ΄ν° μ€μ . ν΄λΉ λ°μ΄ν°μμ λΆμ±
μ¬λΆμ λ°λΌ μμμ°μ λ²μκ° ν¬κ² μ€μ΄λλ κ²μ κ³ λ €ν΄μ μ€μ . -
μλμ κ·Ήλ¨κ° κ³ λ € μλ κ·Ήλ¨κ°μ΄ μ‘΄μ¬ν κ²μ΄κ³ μ΄κ²μ λ§€μ° ν° νΈμ°¨λ‘ μμ κ²μ΄λΌκ³ κ°μ ν΄ λ‘κ·Έ μ κ·λΆν¬λ‘ νκ· μλμ μμ±νλ λ‘μ§μ μΆκ°. λν 첫 λ¬μ μλμ΄ μ ν΄μ§λ©΄ λλ¨Έμ§ 11κ°μμ λν νμ€νΈμ°¨κ° μ€μ΄λ€λλ‘ νμ¬ νμ€μ±μ κ³ λ €νλλ‘ ν¨.
-
μμ¬μλ³Έμ΄ μλ μ¬λλ€μ΄ μ¬μ΄νΈλ₯Ό μ΄μ©ν κ²μ΄λΌλ κ°μ . μ§μΆμ μλμ 90%λ₯Ό μ΄κ³Όν μ μλλ‘ μ€μ νμ¬
μ¬νν¬λ₯Ό λͺ©μ μΌλ‘ νλ μ¬μ©μκ° ν©λ¦¬μ μΈ μ νμ μν΄ κ°μ μ νλ€κ³ μ μ . -
κΈμ΅κ°λ μ api κ΄λ ¨ κ°μ
join_denyκ° 1μ΄ μλλ©΄ κ°μ μ‘°κ±΄μ΄ μλ€. μ΄μ λ°λΌκ°μ μ νμ λν΄ μ€λͺ νλjoin_memberμ μ°κ΄μ΄ μμ κ²μ΄λΌ κ°μ
λλ―Έλ°μ΄ν° μ΄κΈ° μμ± μμ
[
{
"age": 34,
"gender": "μ¬μ±",
"monthly_income": 3168874,
"monthly_expense": 2752901,
"total_assets": 430956,
"κ°μ
μν": {
"κ°μ
μκΈ": "",
"κ°μ
μ κΈ°μκΈ": "",
"κ°μ
μ κΈ": ""
},
"λ§μ΄λ°μ΄ν°νμ©μ¬λΆ": 1
},...{λ λ§μ μ μ λ€}]λλ―Έμ μ κ° μμ μκ² μ΅μ μ μνμ κ³¨λΌ λΉ λ¬Έμμ΄λ‘ μ€μ λ κ°μ μνμ μΆκ°νλ€ ---μ΄ν κ°μ κ³Όμ ---
-
join_denyμ join_memberλ₯Ό ν΅ν΄ userκ° κ°μ κ°λ₯ν 쑰건μΈμ§ νμ . 1-1. join_denyκ° 1μ΄ μλλ©΄ join_memberλ₯Ό ν΅ν΄ κ·Έ μ‘°κ±΄μ΄ κ° μ μ μ ν΄λΉνλμ§ νμ νλ€.
-
λ°μ΄ν° ꡬ쑰 νμ μΌλ‘ μ κ·ννμμΌλ‘ λ° λ°λ³΅λ¬Έμ₯ νΉμ μλ―Έμλ κ° 1μ°¨ μ μ²λ¦¬. 2-1. μ μ²λ¦¬ κ³Όμ μμ
ν ν°νλ₯Ό μ¬μ©ν΄ λμΌν λ¨μ΄μ λ°λ³΅ νμλ₯Ό νμ νμ¬ μ μ²λ¦¬ μ§ν 2-2. μ²λ¦¬λ λ°μ΄ν°μμ 3κ°μ§ ν° μμμΌλ‘ 쑰건μ λ°ν 1 - μ°λ Ή μ ν 2 - μ§μ₯μΈ μ¬λΆ 3 - μ νμμν΄λΉ κ³Όμ μ μ μ ν μλν κ·μΉμ μ°Ύμ μ μμ΄ μλμΌλ‘ μ§ν. -
μ§μ₯μΈμ΄ κ°μ νμκ±°λΌλ κ°μ μΌλ‘ 2λ 무쑰건 κ°μ κ°λ₯ν κ°μΌλ‘ λ°ν.
-
λλ―Έ μ μ μ ageκ° μ°λ Ή μ νμ ν΅κ³Όνλμ§ νμΈνκ³ , ν΅κ³Όνμ§ λͺ»νλ€λ©΄ ν΄λΉ μνμ denyed_user νλλ₯Ό μμ±νκ³ , νλ κ°μ λλ―Έμ μ μ id κ°μ μΆκ°. 5.
ect_noteκ°μΌλ‘ λλ―Έμ μ κ° κ°μ κ°λ₯ν μνμΈμ§ νλ¨. 5-1. λλ€ μμ±λ μνκ· μλμ κ· λ±ννκ· μλμΌλ‘ λ³κ²½(κ°κ΅¬μ μλ₯Ό κ³ λ €ν λ³κ²½)νκ³ μ§μΆμ λΊμ . 5-2. ν΄λΉ κ·μΉμ λν΄ groq APIλ₯Ό νμ©ν΄ ν둬ννΈλ₯Ό μμ±ν΄κΈμ‘κ΄λ ¨ κ°λ§ λ¨κΈ°λλ‘ ν¨. 5-3. κΈμ‘ κ΄λ ¨ λ¨μ λν λ§μΆλλ‘ μμ². savingsμ λν΄ = "μ΅μ μ λ©μ κΈμ‘" depositsμ λν΄ = "μ΅μ κ°μ κΈμ‘"κΈ°λ³Έμ μΈ μ μ²λ¦¬κ° λ λ°μ΄ν°λ₯Ό λ³΄λ΄ μλ΅μ μ νμ±μ λμ΄λλ‘νλ€.json νμΌμ μ²ν¬λ¨μλ‘ groq APIμ μ μ‘ν΄ μλ΅μ μ μ₯.ν둬ννΈ: λΉμ μ κΈμ΅ λ°μ΄ν°λ₯Ό λΆμνλ μ λ¬Έκ°μ λλ€. λ°μ΄ν° νμ : '{data_type}' μ΄ λ©μμ§λ μ΄ {total_chunks}κ°λ‘ λλ μ²ν¬ μ€ {current_index + 1}λ²μ§Έμ λλ€.μ§μΉ¨: 1. λ°μ΄ν° ꡬ쑰λ₯Ό λ°λμ μ£Όμ΄μ§ νμ(depositsμ savings)μΌλ‘ μ μ§νμΈμ. 2. '{data_type}' λ°μ΄ν° μ²λ¦¬ λ°©λ²: - μ΅μ λ©μ κΈμ‘μ 'μ΅μ λ©μ κΈμ‘' ν€μ κΈ°λ‘νμΈμ. - μΆκ°λ‘ μ€μν μ 보λ 'μΆκ° μ 보' ν€μ μμ½ν΄μ κΈ°λ‘νμΈμ. 3. "κΈμ‘"μ΄λΌλ λ¨μ΄λ₯Ό ν΄μν λ μ£ΌμνμΈμ: - "μ΅μ"(minimum)λ "μ΅λ"(maximum)μ κ°μ μμμ΄κ° μμ κ²½μ°, "μ΄μ"(at least) λλ "μ΄ν"(at most)μ κ°μ λ¬Έλ§₯μ μ¬μ©νμ¬ νλ¨νμΈμ. - λͺ¨λ κΈμ‘μ λ°λμ λνλ―Όκ΅ μ(β©) λ¨μλ‘ κΈ°λ‘νμΈμ. 4. κ²°κ³Όλ μλ JSON νμμΌλ‘ λ°νν΄μΌ ν©λλ€: {{ "{data_type}": [ {{ "id": "int", "μ΅μ λ©μ κΈμ‘": "int", "μ΅λ λ©μ κΈμ‘": "int (optional)", "μΆκ° μ 보": "string (optional)" }} ] }} JSON νμλ§ λ°ννμΈμ. μΆκ° μ€λͺ μ΄λ μ£Όμμ ν¬ν¨νμ§ λ§μΈμ. """ -
5-1μμ λ°νλ κ°μ ν΄λΉ μ μ κ°μ΄μ©κ°λ₯ν μμ°μΌλ‘ μ€μ . 6-1. μ΄μ©κ°λ₯ν μμ° κ°μ savingsμμ νμ©,
def update_user_denied_products(user_test, ect_note_file, user_denied_products): for user_id, user_data in enumerate(user_test, start=1): user_monthly_disposable_income = user_data["monthly_income"] - user_data["monthly_expense"] user_total_assets = int(user_data["total_assets"] * 1000 * random.uniform(0.7, 0.9)) # μ΄μμ°μ λλ€ λΉμ¨ μ μ©
# μ κ·Ό λΆκ° μν μ
λ°μ΄νΈ
for category in ["savings", "deposits"]:
denied_ids = {prod_id for prod_id in user_denied_products[user_id - 1]["deny_product_id"].get(category, [])}
for product in ect_note_file[category]:
product_id = product["id"]
# μ΄λ―Έ μ κ·Ό λΆκ° μνμ ν¬ν¨λ κ²½μ° μ€ν΅
if product_id in denied_ids:
continue
# "μ΅μ μ λ©μ
κΈμ‘" 쑰건 νμΈ (savings)
if category == "savings" and "μ΅μ μ λ©μ
κΈμ‘" in product and product["μ΅μ μ λ©μ
κΈμ‘"] is not None:
if user_monthly_disposable_income < product["μ΅μ μ λ©μ
κΈμ‘"]:
denied_ids.add(product_id)
# "μ΅μ λ©μ
κΈμ‘" 쑰건 νμΈ (deposits)
if category == "deposits" and "μ΅μ λ©μ
κΈμ‘" in product and product["μ΅μ λ©μ
κΈμ‘"] is not None:
if user_total_assets < product["μ΅μ λ©μ
κΈμ‘"]:
denied_ids.add(product_id)
# μ
λ°μ΄νΈλ denied_ids μ μ₯
user_denied_products[user_id - 1]["deny_product_id"][category] = list(denied_ids)
return user_denied_products```
*ν΄λΉ ν¨μμ λ°λΌ μν λ°μ΄ν°μ μ κ·Ό λΆκ°λ₯ν λλ―Έμ μ id μΆκ°λ‘ μ
λ°μ΄νΈ*
λ³Έ μ¬μ΄νΈ μ κ· κ°μ μ μ μ λν μΆμ² λ‘μ§ :
λ§μ΄λ°μ΄ν° νμ© λμμ: κ° μ μ μ λν΄ λ§μ΄λ°μ΄ν° νμ© μ¬λΆλ₯Ό μ μ₯νκ³ , νμ© μ μ κ°μ κ°μ ν μν
λ§μ΄λ°μ΄ν° νμ© λΉλμμ:
λλ―Έλ°μ΄ν° μμ±κ³Όμ :
- νλ‘μ νΈ κ΅¬μ‘° μ€κ³ λ° μ΄κΈ° μΈν
- Django REST Frameworkμ Vue3λ₯Ό κΈ°λ°μΌλ‘ λ°±μλμ νλ‘ νΈμλ λΆλ¦¬
- μ΄κΈ° λλ ν°λ¦¬ ꡬ쑰 ꡬμ±
- 24-11-11 μΌμ§ (https://github.com/users/KSAhh/projects/3/views/1?pane=info&statusUpdateId=63641)
- 24-11-12 μΌμ§ (https://github.com/users/KSAhh/projects/3/views/1?pane=info&statusUpdateId=63645)
- 24-11-13 μΌμ§ (https://github.com/users/KSAhh/projects/3/views/1?pane=info&statusUpdateId=63662)
- 24-11-14 μΌμ§ (https://github.com/users/KSAhh/projects/3/views/1?pane=info&statusUpdateId=64087)
- 24-11-15 μΌμ§ (https://github.com/users/KSAhh/projects/3/views/1?pane=info&statusUpdateId=64444)
- μ£Όμ κΈ°λ₯ ꡬν μ°©μ
- API μ°λ: κΈμ΅κ°λ μ, μΉ΄μΉ΄μ€ λ§΅ API ν μ€νΈ
- μμ κΈ κΈλ¦¬ λΉκ΅ κΈ°λ₯
- μ¬μ©μ νλ‘ν κ΄λ¦¬ κΈ°λ₯
- μ νΌμ¬ν νμ¨ κ³μ°κΈ° κ°λ°
- νκ΅μμΆμ μν νμ¨ μ 보 API μ°λ
- νμ¨ κ³μ° λ‘μ§ κ΅¬ν
- μκ³ λ¦¬μ¦ λ‘μ§ μ€κ³
- 24-11-17 μΌμ§ (https://github.com/users/KSAhh/projects/3/views/1?pane=info&statusUpdateId=64478)
- κ·Όμ² μν κ²μ λ° κΈμ΅ μν μΆμ² κΈ°λ₯ μΆκ°
- μΉ΄μΉ΄μ€ λ§΅ APIλ₯Ό νμ©νμ¬ μ¬μ©μ μμΉ κΈ°λ° μν κ²μ
- μκ³ λ¦¬μ¦ κΈ°λ° κΈμ΅ μν μΆμ² λ‘μ§ κ°λ°
- λμμΈ μ μ©
- νλ‘ νΈ μ μ©
μ΄κΈ° μ€μ λ¬Έμ : Vue3μ Tailwind CSS μ°λ μ μ€νμΌ μ μ© λ¬Έμ ν΄κ²° API νΈμΆ μ΅μ ν: λ€μ€ νΈμΆ λ¬Έμ λ₯Ό Axios μΈν°μ ν°λ‘ ν΄κ²°
κΉμμ
DB λ° API μ€κ³ ν Django REST Frameworkλ‘ μ λ¬ν λ°μ΄ν°λ₯Ό κ²°μ ν μ΄νμ, μ€μ νλ‘ νΈμμ μ¬μ©ν λ νμν λ°μ΄ν°μ μμ΄ν λ©΄μ΄ μμ΄μ μμ μ λ°λ³΅νμμ΅λλ€. μ€κ³, κ°λ°, λΆμμ λ°λ³΅νλ©° μ μμΌ λ°©λ²λ‘ μ λν΄ μ΄ν΄νκ² λμμ΅λλ€. μ¬κΈ°μ ν¨μ¨μ μΈ μμ κ΄λ¦¬λ₯Ό μν΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ κ·ννλ κ²μ νμμ±μ λλ μ μμμ΅λλ€. λν μ΄λ©μΌ μ κ·ν, λΉλ°λ²νΈ ν΄μν λ± μ»€μ€ν νμμ΅λλ€. νλ‘ νΈ μμ μ μννλ©΄μ μ μ λ‘κ·ΈμΈ μ λλ€μ νλλ₯Ό μΆλ ₯νκ±°λ, κΈ μμ μ΄ν λ°λ‘ κΈ λͺ©λ‘μμ μμ λ κΈ°λ₯ λ± JavaScriptμμ λΉλκΈ°μ μΌλ‘ μνκ΄λ¦¬νλ λ°©λ²μ λν΄ λ°°μ μ΅λλ€. νμκ³Ό ν¨κ» μ§νν΄λκ°λ©΄μ μνκ΄λ¦¬ μΈ‘λ©΄μμ λΆμ‘±ν μ μ λκΌμ΅λλ€. μ 무μμ κ°μ₯ μ€μν μ μ λ©κΈ° λ° κ³ κ°μκ² λ³΄μ¬μ€ μ μλ 70%μ΄μμ ν리ν°λΌκ³ μκ°νλλ° κ΅¬ννλ κ²°κ³Όλ¬Όμ λΉν΄ ννμ΄ μμ¬μμ μΆ©λΆν μ΄ννμ§ λͺ»νμλ€κ³ μκ°ν©λλ€. ν΄μ μμ¬μ λ μ λ€μ 보μν μμ μ λλ€.
λ°±μ§μ
Vue3μ Chart.jsλ₯Ό μ¬μ©ν λ°μ΄ν° μκ°ν κ²½νμ μμ μ μμμ΅λλ€
- Frontend
# Frontend
$ cd front/algo-fipo
$ npm install
$ npm run dev
# Backend
$ cd back
$ pip install -r requirements.txt
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py loaddata exchange.json products.json
$ python manage.py runserver




