Skip to content

KSAhh/finance-pjt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

146 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° AlgoFiPo Project

μž¬ν…Œν¬λ₯Ό 효율적으둜 관리할 수 μžˆλŠ” μ„œλΉ„μŠ€
결혼 ν›„ μžκ°€ 마련과 μ‹ ν˜Όμ—¬ν–‰μ„ μ€€λΉ„ν•˜λŠ” μ‚¬μš©μžλ“€μ„ λŒ€μƒμœΌλ‘œ
예적금 κΈˆλ¦¬λΉ„κ΅, ν™˜μœ¨ 계산기, 근처 은행 검색, 그리고 μ‚¬μš©μž λ§žμΆ€ν˜• 금육 μƒν’ˆ μΆ”μ²œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.


πŸš€ ν”„λ‘œμ νŠΈ λͺ©ν‘œ

  • κΈˆμœ΅μƒν’ˆ 데이터 기반 예금 및 적금 금리 비ꡐ μ„œλΉ„μŠ€ ꡬ성
  • μœ μ €μ˜ λ§ˆμ΄λ°μ΄ν„° 기반 금육 μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜ ꡬ성
  • ν™˜μœ¨ 정보 APIλ₯Ό ν™œμš©ν•œ ν™˜μœ¨ 계산 μ„œλΉ„μŠ€ 및 차트 ꡬ성
  • 지도 APIλ₯Ό ν™œμš©ν•œ 은행 검색 μ„œλΉ„μŠ€ ꡬ성
  • 고객센터 μ„œλΉ„μŠ€λ‘œ μ‚¬μš©μ„± κ°œμ„ 

πŸ›  μ£Όμš” κΈ°λŠ₯

1. λ©”μΈνŽ˜μ΄μ§€ 및 νšŒμ›κΈ°λŠ₯

  • μ‚¬μš©μž 정보 및 λ§ˆμ΄λ°μ΄ν„° λ™μ˜μ—¬λΆ€λ₯Ό 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

image

2.μƒν’ˆκ°€μž… 및 κ°€μž…μƒν’ˆ 쑰회

  • 예적금 금리 비ꡐ
  • μ‚¬μš©μžκ°€ μ„ νƒν•œ κΈˆμœ΅μ‚¬, μƒν’ˆμ˜΅μ…˜μ— λ§žλŠ” μƒν’ˆμ„ μ‘°νšŒν•©λ‹ˆλ‹€.
_2024_11_27_03_26_41_82.mp4

3-1.λ§žμΆ€ν˜• 금육 μƒν’ˆ μΆ”μ²œ [λ§ˆμ΄λ°μ΄ν„° λ―Έλ™μ˜μž]

  • κΈˆμœ΅μƒν’ˆ 및 μ‚¬μš©μž 데이터λ₯Ό 기반으둜 개인의 μž¬μ • μƒνƒœμ— λ§žλŠ” 금육 μƒν’ˆμ„ μΆ”μ²œν•©λ‹ˆλ‹€.
  • 기본금리 κΈ°μ€€ μƒμœ„ 10κ°€μ§€ μƒν’ˆ

image

image

3-2. λ§žμΆ€ν˜• 금육 μƒν’ˆ μΆ”μ²œ [λ§ˆμ΄λ°μ΄ν„° λ™μ˜μž]

  • μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ μ™„λ£Œ

4. ν™˜μœ¨κ³„μ‚°κΈ°

  • μΆœκ΅­μ„ μœ„ν•΄ ν•„μš”ν•œ ν™˜μ „ κΈˆμ•‘μ„ κ³„μ‚°ν•©λ‹ˆλ‹€.

image

5. 근처 은행 지도

  • 검색 ν‚€μ›Œλ“œ 근처의 은행 지점을 κ²€μƒ‰ν•©λ‹ˆλ‹€.
_2024_11_27_03_28_46_331.mp4

6. 고객센터

  • μ‚¬μš©μž κ°„μ˜ 질문, 리뷰 등을 κ³΅μœ ν•  수 있으며, κ΄€λ¦¬μžμ˜ 닡변을 μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

6-1. 고객센터 κΈ€ μž‘μ„±

_2024_11_27_03_48_11_847.mp4

6-1. 고객객센터 κΈ€ μˆ˜μ •

_2024_11_27_03_41_22_460.mp4

6-2. 고객센터 λŒ“κΈ€μž‘μ„±

_2024_11_27_03_37_42_133.mp4

πŸ“… κ°œλ°œκΈ°κ°„

2024λ…„ 11μ›” 18일 ~ 2024λ…„ 11μ›” 27일


πŸ‘₯ Collaborators

KSAhh
KSAhh / κΉ€μˆ˜μ•„

Backend(Django), Frontend(Vue), Git κ·œμΉ™ μ§€μ •, API 섀계, ERD 섀계

sadtearcat
sadtearcat / 백지원

Frontend(Vue), UI λ””μžμΈ, μƒν’ˆ μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜ 개발


πŸ”§ 기술 μŠ€νƒ

Backend & Database

My Skills

Frontend

My Skills

  • Visualization: Chart.js
  • HTTP Client: Axios

ν˜‘μ—… Tools

My Skills

External APIs

  • ν•œκ΅­μˆ˜μΆœμž…μ€ν–‰ API
  • 카카였 API
  • κΈˆμœ΅κ°λ…μ› API

βš™ ERD

image


πŸ“‚ 디렉터리 ꡬ쑰

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: λŒ€μΆœ κ΄€λ ¨ μ„œλΉ„μŠ€

πŸ“ˆ 투자 μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜ 원리

  1. 예적금 데이터 μˆ˜μ§‘ (κΈˆμœ΅μƒν’ˆμ •λ³΄κ³΅μ‹œAPI)
  2. 각 μƒν’ˆλ³„ spcl_intr ν•„λ“œ μ „μ²˜λ¦¬
  3. λ§ˆμ΄λ°μ΄ν„° 기반 μ‚¬μš©μž κ·Έλ£Ήν™” (더미데이터 생성)
  • λ‚˜μ΄
  • 직업
  • μ›” 평균 μ†Œλ“
  • μ›” 평균 μ†ŒλΉ„
  • 총 μžμ‚°
  • λ§ˆμ΄λ°μ΄ν„° λ™μ˜ μ—¬λΆ€
  1. 금육 μƒν’ˆ μΆ”μ²œ
  • λ§ˆμ΄λ°μ΄ν„° ν™œμš© λ™μ˜ β†’ κ°œμΈμ •λ³΄ κ·Έλ£Ήν™”ν•˜μ—¬ μΆ”μ²œ
  • λ§ˆμ΄λ°μ΄ν„° ν™œμš© λΉ„λ™μ˜ β†’ 기본금리 기반 μƒμœ„ ν•­λͺ© μΆ”μ²œ

μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜ 섀계ꡬ쑰

핡심λͺ©ν‘œ : μ‹ λ’°μ„± μžˆλŠ” 과정을 거친 더미데이터 μƒμ„±μœΌλ‘œ 초기 μΆ”μ²œ λ˜ν•œ 논리적인 흐름을 λ”°λ₯Ό 수 μžˆλ„λ‘ ν•œλ‹€. κ°€μ • : λ³Έ μ‚¬μ΄νŠΈ κ°€μž…μœ μ € μƒν˜Έκ°„μ˜ μœ μ €λŠ” λ§ˆμ΄λ°μ΄ν„° 곡유 μ—¬λΆ€λ₯Ό 선택할 수 μžˆλ‹€, 더미데이터 μœ μ €λ“€μ€ λͺ¨λ‘ 합리적인 μ„ νƒμœΌλ‘œ μƒν’ˆμ„ μ„ νƒν•œλ‹€. λ³Έ μ‚¬μ΄νŠΈλŠ” 직μž₯인이 κ°€μž…ν•  ν™•λ₯ μ΄ λ†’λ‹€κ³  κ°€μ •ν•œλ‹€.

더미데이터 생성 κ°€μ • :

  1. 연령별 κ°€μž… μœ μ € λΉ„μœ¨ λ³Έ μ‚¬μ΄νŠΈλŠ” μ‚¬νšŒμ΄ˆλ…„μƒμ„ νƒ€κ²ŒνŒ…ν•œ μ‚¬μ΄νŠΈμ΄λ―€λ‘œ κ°€μž… μœ μ € λΉ„μœ¨ 쀑 20λŒ€κ°€ κ°€μž₯ λ§Žμ€ 것이라 κ°€μ •ν•˜λ©° 연령별 λΉ„μœ¨μ€ λ‹€μŒκ³Ό κ°™λ‹€. λžœλ€ν•¨μˆ˜λ‘œ μ„€μ •ν•΄ 전체 총합에 λŒ€ν•œ ν‚€ κ°’μ˜ λΉ„μœ¨λ‘œ 연령이 ν™•λ₯ μ μœΌλ‘œ μƒμ„±λœλ‹€. [20λŒ€ : 10, 30λŒ€ : 5, 40λŒ€ : 2, 50λŒ€ : 2, 60λŒ€ : 1] 각 값은 μž„μ˜λ‘œ μ„€μ •ν•œ 값이닀.

  2. 성별 λΉ„μœ¨ : 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. λ§ˆμ΄λ°μ΄ν„° ν—ˆμš© μ—¬λΆ€ λ§ˆμ΄λ°μ΄ν„° ν—ˆμš© μ—¬λΆ€λŠ” [1, 2, 3] 으둜 λ‚˜λ‰œλ‹€. 각 값에 λŒ€ν•œ μ„€λͺ…:
    2 = λ§ˆμ΄λ°μ΄ν„°λ₯Ό μ œκ³΅ν•˜κ³ , 였직 본인의 λ§ˆμ΄λ°μ΄ν„°λ₯Ό μ΄μš©ν•˜λ©° κΈˆμœ΅μ •λ³΄λ₯Ό κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€.
    3 = λ§ˆμ΄λ°μ΄ν„°λ₯Ό μ œκ³΅ν•˜μ§€ μ•ŠμœΌλ©° κΈ°λ³Έ 금육 μƒν’ˆ μΆ”μ²œμ„œλΉ„μŠ€ λ‘œμ§μ„ λ”°λ₯Έλ‹€.```
    
# λ§ˆμ΄λ°μ΄ν„° ν—ˆμš©μ—¬λΆ€ 생성 ν•¨μˆ˜
def generate_data_consent():
    return random.choices([1, 2, 3], weights=[6, 3, 1], k=1)[0]
  1. μ†Œλ“ 및 μ§€μΆœ 데이터 μ„€μ •(μ΅œμ‹ λ°μ΄ν„°κ°€ κ²½ν–₯성을 증거할 수 μ—†μœΌλ¦¬λž€ νŒλ‹¨μ— 졜근 1λ…„κ°„ λ°μ΄ν„°μ˜ 평균을 월평균 μ†Œλ“μ•‘μœΌλ‘œ νŒλ‹¨) 가ꡬ주_연령별_가ꡬ당_월평균_κ°€κ³„μˆ˜μ§€__μ „κ΅­_1인이상__2023_4.2~2024_4.2을 μ°Έκ³ ν•΄ μ—°λ ΉλŒ€λ³„ 12κ°œμ›” 평균 μ†Œλ“μ„ μ„€μ •, 쀑간값과 평균값을 μ΄μš©ν•΄ 식을 μ„€μ •ν•΄ ν‘œμ€€νŽΈμ°¨λ₯Ό μ„€μ •, λ™μΌν•œ κΈ°κ°„μ˜ 톡계청 자료인 κ°€κ΅¬νŠΉμ„±λ³„_λΉ„λͺ©λ³„_μ†ŒλΉ„μ§€μΆœκ³Ό κ°€κ΅¬νŠΉμ„±λ³„_λΉ„λͺ©λ³„_λΉ„μ†ŒλΉ„μ§€μΆœκ°’μ„ ν•©μ‚°ν•˜μ—¬ μ§€μΆœ λ°μ΄ν„°λ‘œ ν™œμš©

  2. 2023 κ°€κ³„κΈˆμœ΅λ³΅μ§€μ‘°μ‚¬ 데이터λ₯Ό μ°Έκ³ ν•΄ μ—°λ ΉλŒ€λ³„ μžμ‚° 데이터 μ„€μ •. ν•΄λ‹Ή λ°μ΄ν„°μ—μ„œ 뢀채여뢀에 따라 μˆœμžμ‚°μ˜ λ²”μœ„κ°€ 크게 μ€„μ–΄λ“œλŠ” 것을 κ³ λ €ν•΄μ„œ μ„€μ •.

  3. μ†Œλ“μ˜ 극단값 κ³ λ € μ†Œλ“ 극단값이 μ‘΄μž¬ν•  것이고 이것은 맀우 큰 편차둜 μžˆμ„ 것이라고 κ°€μ •ν•΄ 둜그 μ •κ·œλΆ„ν¬λ‘œ 평균 μ†Œλ“μ„ μƒμ„±ν•˜λŠ” λ‘œμ§μ„ μΆ”κ°€. λ˜ν•œ 첫 λ‹¬μ˜ μ†Œλ“μ΄ μ •ν•΄μ§€λ©΄ λ‚˜λ¨Έμ§€ 11κ°œμ›”μ— λŒ€ν•œ ν‘œμ€€νŽΈμ°¨κ°€ 쀄어듀도둝 ν•˜μ—¬ ν˜„μ‹€μ„±μ„ κ³ λ €ν•˜λ„λ‘ 함.

  4. μž‰μ—¬μžλ³Έμ΄ μžˆλŠ” μ‚¬λžŒλ“€μ΄ μ‚¬μ΄νŠΈλ₯Ό μ΄μš©ν•  κ²ƒμ΄λΌλŠ” κ°€μ •. μ§€μΆœμ€ μ†Œλ“μ˜ 90%λ₯Ό μ΄ˆκ³Όν•  수 없도둝 μ„€μ •ν•˜μ—¬ μž¬νƒœν¬λ₯Ό λͺ©μ μœΌλ‘œ ν•˜λŠ” μ‚¬μš©μžκ°€ 합리적인 선택을 μœ„ν•΄ κ°€μž…μ„ ν•œλ‹€κ³  μ „μ œ.

  5. κΈˆμœ΅κ°λ…μ› api κ΄€λ ¨ κ°€μ • join_denyκ°€ 1이 μ•„λ‹ˆλ©΄ κ°€μž… 쑰건이 μžˆλ‹€. 이에 따라 κ°€μž… μ œν•œμ— λŒ€ν•΄ μ„€λͺ…ν•˜λŠ” join_member 와 연관이 μžˆμ„ 것이라 κ°€μ •

더미데이터 생성 κ³Όμ •

더미데이터 초기 생성 양식

[
    {
        "age": 34,
        "gender": "μ—¬μ„±",
        "monthly_income": 3168874,
        "monthly_expense": 2752901,
        "total_assets": 430956,
        "κ°€μž…μƒν’ˆ": {
            "κ°€μž…μ˜ˆκΈˆ": "",
            "κ°€μž…μ •κΈ°μ˜ˆκΈˆ": "",
            "κ°€μž…μ κΈˆ": ""
        },
        "λ§ˆμ΄λ°μ΄ν„°ν—ˆμš©μ—¬λΆ€": 1
    },...{더 λ§Žμ€ μœ μ €λ“€}]

λ”λ―Έμœ μ €κ°€ μžμ‹ μ—κ²Œ 졜적의 μƒν’ˆμ„ 골라 빈 λ¬Έμžμ—΄λ‘œ μ„€μ •λœ κ°€μž… μƒν’ˆμ„ μΆ”κ°€ν•œλ‹€ ---μ΄ν•˜ κ°€μž… κ³Όμ •---

  1. join_deny와 join_memberλ₯Ό 톡해 userκ°€ κ°€μž… κ°€λŠ₯ν•œ 쑰건인지 νŒŒμ•…. 1-1. join_denyκ°€ 1이 μ•„λ‹ˆλ©΄ join_memberλ₯Ό 톡해 κ·Έ 쑰건이 각 μœ μ €μ— ν•΄λ‹Ήν•˜λŠ”μ§€ νŒŒμ•…ν•œλ‹€.

  2. 데이터 ꡬ쑰 νŒŒμ•…μœΌλ‘œ μ •κ·œν‘œν˜„μ‹μœΌλ‘œ 및 반볡문μž₯ ν˜Ήμ€ μ˜λ―Έμ—†λŠ” κ°’ 1μ°¨ μ „μ²˜λ¦¬. 2-1. μ „μ²˜λ¦¬ κ³Όμ •μ—μ„œ 토큰화λ₯Ό μ‚¬μš©ν•΄ λ™μΌν•œ λ‹¨μ–΄μ˜ 반볡 횟수λ₯Ό νŒŒμ•…ν•˜μ—¬ μ „μ²˜λ¦¬ μ§„ν–‰ 2-2. 처리된 λ°μ΄ν„°μ—μ„œ 3κ°€μ§€ 큰 μ˜μ—­μœΌλ‘œ 쑰건을 λ°˜ν™˜ 1 - μ—°λ Ή μ œν•œ 2 - 직μž₯인 μ—¬λΆ€ 3 - μ œν•œμ—†μŒ ν•΄λ‹Ή 과정은 μ μ ˆν•œ μžλ™ν™” κ·œμΉ™μ„ 찾을 수 μ—†μ–΄ μˆ˜λ™μœΌλ‘œ μ§„ν–‰.

  3. 직μž₯인이 κ°€μž…ν–ˆμ„κ±°λΌλŠ” κ°€μ •μœΌλ‘œ 2λŠ” 무쑰건 κ°€μž… κ°€λŠ₯ν•œ κ°’μœΌλ‘œ λ°˜ν™˜.

  4. 더미 μœ μ €μ˜ 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. 5-1μ—μ„œ λ°˜ν™˜λœ 값을 ν•΄λ‹Ή μœ μ €κ°€ μš΄μš©κ°€λŠ₯ν•œ μžμ‚°μœΌλ‘œ μ„€μ •. 6-1. μš΄μš©κ°€λŠ₯ν•œ μžμ‚° 값은 savingsμ—μ„œ ν™œμš©,

μ‚¬μš©μž denied_product μ—…λ°μ΄νŠΈ

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 μΆ”κ°€λ‘œ μ—…λ°μ΄νŠΈ*

λ³Έ μ‚¬μ΄νŠΈ μ‹ κ·œ κ°€μž… μœ μ €μ— λŒ€ν•œ μΆ”μ²œ 둜직 :

λ§ˆμ΄λ°μ΄ν„° ν™œμš© λ™μ˜μ‹œ: 각 μœ μ €μ— λŒ€ν•΄ λ§ˆμ΄λ°μ΄ν„° ν—ˆμš© μ—¬λΆ€λ₯Ό μ €μž₯ν•˜κ³ , ν—ˆμš© μœ μ € 간에 κ°€μž…ν•œ μƒν’ˆ

λ§ˆμ΄λ°μ΄ν„° ν™œμš© λΉ„λ™μ˜μ‹œ:

더미데이터 생성과정:


πŸ“… 개발 일지

1μ£Όμ°¨

2μ£Όμ°¨

  • μ£Όμš” κΈ°λŠ₯ κ΅¬ν˜„ 착수
    • API 연동: κΈˆμœ΅κ°λ…μ›, 카카였 λ§΅ API ν…ŒμŠ€νŠΈ
    • 예적금 금리 비ꡐ κΈ°λŠ₯
    • μ‚¬μš©μž ν”„λ‘œν•„ 관리 κΈ°λŠ₯
  • μ‹ ν˜Όμ—¬ν–‰ ν™˜μœ¨ 계산기 개발

3μ£Όμ°¨

  • 근처 은행 검색 및 금육 μƒν’ˆ μΆ”μ²œ κΈ°λŠ₯ μΆ”κ°€
    • 카카였 λ§΅ 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

About

web service

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors