Skip to content

Team-Haruchi/HARUCHI_SPRING

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HARUCHI (ν•˜λ£¨μΉ˜) Spring

0  썸넀일

1. 아이디어 μ†Œκ°œ

μ§€μΆœν†΅μ œ λ„μš°λ―Έ.

ν•˜λ£¨ μ˜ˆμ‚°μ„ κΈ°μ€€μœΌλ‘œ μœ λ™μ μœΌλ‘œ μ†ŒλΉ„ν•˜μ„Έμš”.
μ§€μ •ν•œ ν•œλ„ λ‚΄μ—μ„œ μ†ŒλΉ„ν•  수 μžˆλ„λ‘ λ„μ™€λ“œλ¦½λ‹ˆλ‹€.


μ˜ˆμ‚°μ„ μ„€μ •ν•˜μ‹œλ©΄ ν•˜λ£¨μ— μ–Όλ§ˆλ‚˜ μ“Έ 수 μžˆλŠ”μ§€ μ•Œλ €λ“œλ €μš”. λ‹ΉμΌμ˜ μ§€μΆœμ— 따라 κ·Έλ‚ κ·Έλ‚ μ˜ μ˜ˆμ‚°μ„ μž¬λΆ„λ°°ν•  μˆ˜λ„ μžˆμ–΄μš”.


이번 달 μƒν™œλΉ„κ°€ 뢀쑱해… 긴좕에 λ“€μ–΄κ°ˆ λ•Œ

  • μ•„ 였늘 μ™Έμ‹ν•˜κ³  μ‹Άμ€λ°β€¦μ§€κΈˆ 이거 먹으면 μ•žμœΌλ‘œ μ–Όλ§ˆλ‚˜ 써야 ν•˜μ§€?
  • 이거 λ„ˆλ¬΄ 사고 싢닀…어차피 μ΄λ²ˆλ‹¬ μ›”κΈ‰ 이미 많이 μ“΄ 것 같은데, λ‹€μŒλ‹¬ μ›”κΈ‰ λ“€μ–΄μ˜€λ©΄ μ§„μ§œ 가계뢀 써야지!
  • (μž”μ•‘λΆ€μ‘±) λΆ„λͺ…νžˆ 150λ§Œμ›μ΄ μžˆμ—ˆλŠ”λ°β€¦? μ–Έμ œ λ‹€ 썼지?

πŸ“Œ 가계뢀 μ•±μ˜ 문제점

  • βœ… 가계뢀λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ©μ :
    μ§€λ‚œ μ†ŒλΉ„λ₯Ό λŒμ•„λ³΄κ³  ν–₯ν›„ μ§€μΆœμ„ μ λ‹Ήν•œ μˆ˜μ€€μœΌλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•¨μž„. κ·ΈλŸ¬λ‚˜,

1️⃣ μ§€μΆœ ν†΅μ œκ°€ μ•„λ‹Œ 기둝에 더 초점이 맞좰져 μžˆλ‹€.

항상 사후적인 뢄석을 거쳐 이뀄지기 λ•Œλ¬Έμ— (즉, 회고적이기 λ•Œλ¬Έμ—)

맀 긴좕사이클/상황에 맞좘 κ³„νšμ μΈ μ§€μΆœ ν†΅μ œλž€ λΆˆκ°€λŠ₯함

  • μ˜ˆμ‚° μ„€μ • κΈ°λŠ₯이 μžˆλŠ” κ²½μš°λ„ μžˆμ§€λ§Œ λ³΅μž‘ν•˜κ±°λ‚˜ λ²ˆκ±°λ‘­λ‹€.
  • λ‹Ήμž₯ μ§€μΆœμ„ 쀄여야 ν•  λ•Œ, μ§€κΈˆκΉŒμ§€ μ–Όλ§ˆλ‚˜ μΌλŠ”μ§€λ₯Ό μ•Œμ•„μ„œλŠ” λΆ€μ‘±ν•˜λ‹€.
  • 월별 톡계가 λ‚˜μ˜€κ³  λ‚˜μ„œμ•Ό μ‚¬ν›„μ μœΌλ‘œ, 그리고 κ°„μ ‘μ μœΌλ‘œ μ§€μΆœμ„ 관리할 수 μžˆλ‹€.

∴ λͺ©μ μ— λΆ€ν•©ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€

2️⃣ ν†΅κ³„λ§Œμ„ 보여쀀닀

  • 뢄석(μ–΄λ””μ„œ 쀄여야 ν•˜κ³ )κ³Ό λŒ€μ‘(μ–΄λ–»κ²Œ 쀄일 건지)은 이용자의 λͺ«

β†’ μ§€μΆœ ν†΅μ œλŠ” 사후적이 μ•„λ‹Œ, μ†ŒλΉ„μ™€ λ™μ‹œμ μœΌλ‘œ 이루어져야 ν•œλ‹€. (μ˜ˆμΈ‘κΉŒμ§€ κ°€λŠ₯ν•˜λ‹€λ©΄ λ”μš± λ°”λžŒμ§)

3️⃣ ν•˜λ£¨μ— μ–Όλ§ˆλ‚˜ 써야 할지 λͺ°λΌμ„œ μ§€μΆœμ˜ 기쀀을 μ„Έμš°κΈ° μ–΄λ ΅λ‹€.

  • κ·Έλž˜μ„œ μ΄μ˜ˆμ‚°μ„ λ‹¨μˆœ 일할 κ³„μ‚°ν•˜λ©΄?

     β†’ ν•˜λ£¨ μ˜ˆμ‚°μ„ μ•Œλ”λΌλ„ 맀일 씀씀이가 λ‹€λ₯Έλ°β€¦
    

였늘 μ΄λ ‡κ²Œ 썼을 λ•Œ μ•žμœΌλ‘œ

  • ν•˜λ£¨λ‹Ή μ–Όλ§ˆλ‚˜ 덜/더 써야 ν•˜λŠ”μ§€
  • 맀일 λ‹€λ₯Έ μΌμ •λ§ˆλ‹€ μ˜ˆμ‚°μ„ μ–΄λ–»κ²Œ λ°°λΆ„ν•΄μ•Ό 할지 μ•ŒκΈ° μ–΄λ ΅λ‹€.

▫️ βœ… κ²°λ‘ :
λˆμ„ μ•„κ»΄μ•Ό ν•˜λŠ” μ‚¬λžŒμ€
μ–Όλ§ˆλ‚˜ μΌλŠ”μ§€κ°€ μ€‘μš”ν•œ 게 μ•„λ‹ˆλΌ
μ•žμœΌλ‘œ μ–Όλ§ˆλ₯Ό μ“Έ 수 μžˆλŠ”μ§€(ν•œλ„ λ‚΄ μ†ŒλΉ„λ₯Ό μœ„ν•œ 미래의 μ§€μΆœκΈ°μ€€)κ°€ 더 μ€‘μš”ν•˜λ‹€.

β‡’ 이λ₯Ό μœ„ν•œ 기쀀을 μ œμ‹œν•˜κ³ μž ν•˜λŠ” 것


🚧 κ·Έλž˜μ„œ,

  • 직관적인 μ†ŒλΉ„ 기쀀이 μ œμ‹œλ˜κ³ 

  • ν•˜λ£¨μ— μ–Όλ§ˆλ‚˜ 써야 할지 ν•œλˆˆμ— 보여 μ§€μΆœμ„ 관리할 수 μžˆμœΌλ©΄μ„œλ„

  • μ΄μ˜ˆμ‚° λ‚΄μ—μ„œ κ·Έλ‚ κ·Έλ‚  μœ λ™μ μœΌλ‘œ μ†ŒλΉ„ν•  수 μžˆλ„λ‘ λ•λŠ” 앱을 κΈ°νšν–ˆμŠ΅λ‹ˆλ‹€.

  • 였늘 κ³Όμ†ŒλΉ„ν–ˆλ”λΌλ„, μ˜ˆμ‚° 재배치λ₯Ό 톡해 κΈ΄μΆ• λͺ©ν‘œλ₯Ό μžƒμ§€ μ•Šκ²Œ 해쀄 수 μžˆμŠ΅λ‹ˆλ‹€.

β†’ λͺ©ν‘œ: ν•˜λ£¨μΉ˜ μ˜ˆμ‚°μ„ κ°€μ΄λ“œλΌμΈμœΌλ‘œ ν•˜μ—¬ μ†ŒλΉ„ν•˜λ˜, 덜 μ“°λ“  더 μ“°λ“  μ˜ˆμ‚° μž¬λΆ„λ°°λ₯Ό 톡해 μ΄μ˜ˆμ‚° λ‚΄μ—μ„œ μœ λ™μ μΈ μ†ŒλΉ„κ°€ κ°€λŠ₯ν•˜λ„λ‘

μ΄μ˜ˆμ‚° ν•œλ„ λ‚΄μ—μ„œ μ†ŒλΉ„μ™€ μ˜ˆμ‚° κ³„νšμ— 따라, 맀일의 μ§€μΆœ κ°€μ΄λ“œλΌμΈμ΄ μ μ‘μ μœΌλ‘œ μƒˆλ‘­κ²Œ μ œμ‹œλ©λ‹ˆλ‹€.


2. 개발 κΈ°κ°„

전체 개발 κΈ°κ°„ : 24.07.13 - 24.08.21

κΈ°λŠ₯ κ΅¬ν˜„ : 24.07.18 - 24.08.21


3. νŒ€μ› μ†Œκ°œ

μž„μ§€λ―Ό/μ œμ•„ μ •λͺ…μ„œ/루베 김은지/리버 솑민아/μ•€λ“œ
@jimmy0524 @ohu-star @hcg0127 @ssongmina
μ„œλ²„ 배포 및 AWS DB μ—°κ²°, 당겨쓰기 및 λ„˜κ²¨μ“°κΈ° κ΄€λ ¨ κΈ°λŠ₯, μ§€μΆœ 마감 κ΄€λ ¨ κΈ°λŠ₯ μ΄ˆκΈ°μ„ΈνŒ…, ν•œλ‹¬ μ˜ˆμ‚° κ΄€λ ¨ κΈ°λŠ₯, ν•œμ£Ό μ˜ˆμ‚° 및 남은 일정 및 κΈˆμ•‘ 쑰회 κΈ°λŠ₯ API λͺ…μ„Έμ„œ, ERD 섀계, νšŒμ›κ°€μž… 및 둜그인, 이메일 인증, νšŒμ› κ΄€λ ¨ κΈ°λŠ₯ API λͺ…μ„Έμ„œ, ERD 섀계, ν•˜λ£¨ 및 λ‚ μ§œλ³„ μ˜ˆμ‚° 쑰회, μˆ˜μž…/μ§€μΆœ 등둝 및 μ‚­μ œ κΈ°λŠ₯




4. 개발 ν™˜κ²½

  • Java 17
  • JDK 17.0.6
  • IDEΒ : IntelliJ IDEA 2024.1
  • FrameworkΒ : Springboot(3.3.1)
  • DatabaseΒ : MySQL(AWS RDS), redis(AWS ElastiCache)
  • ORMΒ : Spring Data JPA
  • 배포 : GitHub Actionsλ₯Ό μ‚¬μš©ν•˜μ—¬ AWS Elastic Beanstalk에 개발용 μ„œλ²„ 배포
  • API 툴 : Swagger


5. 브랜치 μ „λž΅ 및 ν˜‘μ—… κ·œμΉ™

  • main, develop, feat 브랜치둜 λ‚˜λˆ„μ–΄ κ°œλ°œμ„ μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
    • mainΒ λΈŒλžœμΉ˜λŠ” μ΅œμ’… 개발 μ™„λ£ŒλœΒ develop 브랜치의 λ‚΄μš©μ„ mergeν•˜λŠ” λΈŒλžœμΉ˜μž…λ‹ˆλ‹€.
    • developΒ λΈŒλžœμΉ˜λŠ” 개발 λ‹¨κ³„μ—μ„œ λͺ¨λ“  κΈ°λŠ₯이 이곳에 mergeλ˜λŠ” λΈŒλžœμΉ˜μž…λ‹ˆλ‹€.
    • featΒ λΈŒλžœμΉ˜λŠ” 각 κΈ°λŠ₯λ³„λ‘œ 이슈λ₯Ό μƒμ„±ν•˜κ³ , ν•΄λ‹Ή μ΄μŠˆμ— λŒ€ν•΄ κ°œλ°œμ„ μ§„ν–‰ν•œ ν›„, μ™„λ£Œλœ κΈ°λŠ₯을 developΒ λΈŒλžœμΉ˜μ— Pull Request(PR)ν•˜μ—¬ mergeν•˜λŠ” κ³Όμ •μœΌλ‘œ μš΄μ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • Pull Request(PR)은 μ΅œμ†Œ 2λͺ…이 μˆ˜λ½ν•΄μ•Ό mergeν•  수 μžˆλ„λ‘ μ œν•œν•˜μ˜€μŠ΅λ‹ˆλ‹€.


6. ν”„λ‘œμ νŠΈ ꡬ쑰

src
β”œβ”€main
β”‚  β”œβ”€java
β”‚  β”‚  └─umc
β”‚  β”‚      └─haruchi
β”‚  β”‚          β”‚  HaruchiApplication.java
β”‚  β”‚          β”‚
β”‚  β”‚          β”œβ”€apiPayload
β”‚  β”‚          β”‚  β”‚  ApiResponse.java
β”‚  β”‚          β”‚  β”‚
β”‚  β”‚          β”‚  β”œβ”€code
β”‚  β”‚          β”‚  β”‚  β”‚  BaseCode.java
β”‚  β”‚          β”‚  β”‚  β”‚  BaseErrorCode.java
β”‚  β”‚          β”‚  β”‚  β”‚  ErrorReasonDTO.java
β”‚  β”‚          β”‚  β”‚  β”‚  ReasonDTO.java
β”‚  β”‚          β”‚  β”‚  β”‚
β”‚  β”‚          β”‚  β”‚  └─status
β”‚  β”‚          β”‚  β”‚          ErrorStatus.java
β”‚  β”‚          β”‚  β”‚          SuccessStatus.java
β”‚  β”‚          β”‚  β”‚
β”‚  β”‚          β”‚  └─exception
β”‚  β”‚          β”‚      β”‚  ExceptionAdvice.java
β”‚  β”‚          β”‚      β”‚  GeneralException.java
β”‚  β”‚          β”‚      β”‚
β”‚  β”‚          β”‚      └─handler
β”‚  β”‚          β”‚              BudgetRedistributionHandler.java
β”‚  β”‚          β”‚              DayBudgetHandler.java
β”‚  β”‚          β”‚              ExpenditureHandler.java
β”‚  β”‚          β”‚              IncomeHandler.java
β”‚  β”‚          β”‚              JwtExceptionHandler.java
β”‚  β”‚          β”‚              MemberHandler.java
β”‚  β”‚          β”‚              MonthBudgetHandler.java
β”‚  β”‚          β”‚
β”‚  β”‚          β”œβ”€config
β”‚  β”‚          β”‚  β”‚  EmailConfig.java
β”‚  β”‚          β”‚  β”‚  SwaggerConfig.java
β”‚  β”‚          β”‚  β”‚
β”‚  β”‚          β”‚  β”œβ”€login
β”‚  β”‚          β”‚  β”‚  β”‚  SecurityConfig.java
β”‚  β”‚          β”‚  β”‚  β”‚
β”‚  β”‚          β”‚  β”‚  β”œβ”€auth
β”‚  β”‚          β”‚  β”‚  β”‚      MemberDetail.java
β”‚  β”‚          β”‚  β”‚  β”‚      MemberDetailService.java
β”‚  β”‚          β”‚  β”‚  β”‚
β”‚  β”‚          β”‚  β”‚  └─jwt
β”‚  β”‚          β”‚  β”‚          JwtAccessDeniedHandler.java
β”‚  β”‚          β”‚  β”‚          JwtAuthenticationEntryPoint.java
β”‚  β”‚          β”‚  β”‚          JwtAuthenticationFilter.java
β”‚  β”‚          β”‚  β”‚          JwtExceptionHandlerFilter.java
β”‚  β”‚          β”‚  β”‚          JwtUtil.java
β”‚  β”‚          β”‚  β”‚
β”‚  β”‚          β”‚  └─redis
β”‚  β”‚          β”‚          RedisConfig.java
β”‚  β”‚          β”‚
β”‚  β”‚          β”œβ”€converter
β”‚  β”‚          β”‚      BudgetRedistributionConverter.java
β”‚  β”‚          β”‚      DayBudgetConverter.java
β”‚  β”‚          β”‚      MemberConverter.java
β”‚  β”‚          β”‚      MonthBudgetConverter.java
β”‚  β”‚          β”‚
β”‚  β”‚          β”œβ”€domain
β”‚  β”‚          β”‚  β”‚  DayBudget.java
β”‚  β”‚          β”‚  β”‚  Expenditure.java
β”‚  β”‚          β”‚  β”‚  Income.java
β”‚  β”‚          β”‚  β”‚  Member.java
β”‚  β”‚          β”‚  β”‚  MonthBudget.java
β”‚  β”‚          β”‚  β”‚  PullMinusClosing.java
β”‚  β”‚          β”‚  β”‚  PushPlusClosing.java
β”‚  β”‚          β”‚  β”‚  Withdrawer.java
β”‚  β”‚          β”‚  β”‚
β”‚  β”‚          β”‚  β”œβ”€common
β”‚  β”‚          β”‚  β”‚      BaseEntity.java
β”‚  β”‚          β”‚  β”‚
β”‚  β”‚          β”‚  └─enums
β”‚  β”‚          β”‚          ClosingStatus.java
β”‚  β”‚          β”‚          DayBudgetStatus.java
β”‚  β”‚          β”‚          ExpenditureCategory.java
β”‚  β”‚          β”‚          IncomeCategory.java
β”‚  β”‚          β”‚          RedistributionOption.java
β”‚  β”‚          β”‚
β”‚  β”‚          β”œβ”€repository
β”‚  β”‚          β”‚      DayBudgetRepository.java
β”‚  β”‚          β”‚      ExpenditureRepository.java
β”‚  β”‚          β”‚      IncomeRepository.java
β”‚  β”‚          β”‚      MemberRepository.java
β”‚  β”‚          β”‚      MonthBudgetRepository.java
β”‚  β”‚          β”‚      PullMinusClosingRepository.java
β”‚  β”‚          β”‚      PushPlusClosingRepository.java
β”‚  β”‚          β”‚      WithdrawerRepository.java
β”‚  β”‚          β”‚
β”‚  β”‚          β”œβ”€service
β”‚  β”‚          β”‚      BudgetRedistributionService.java
β”‚  β”‚          β”‚      DayBudgetService.java
β”‚  β”‚          β”‚      MemberService.java
β”‚  β”‚          β”‚      MonthBudgetService.java
β”‚  β”‚          β”‚
β”‚  β”‚          └─web
β”‚  β”‚              β”œβ”€controller
β”‚  β”‚              β”‚      BudgetRedistributionController.java
β”‚  β”‚              β”‚      DayBudgetController.java
β”‚  β”‚              β”‚      MemberApiController.java
β”‚  β”‚              β”‚      MonthBudgetController.java
β”‚  β”‚              β”‚      RootController.java
β”‚  β”‚              β”‚
β”‚  β”‚              └─dto
β”‚  β”‚                      BudgetRedistributionRequestDTO.java
β”‚  β”‚                      BudgetRedistributionResponseDTO.java
β”‚  β”‚                      DayBudgetRequestDTO.java
β”‚  β”‚                      DayBudgetResponseDTO.java
β”‚  β”‚                      MemberRequestDTO.java
β”‚  β”‚                      MemberResponseDTO.java
β”‚  β”‚                      MonthBudgetRequestDTO.java
β”‚  β”‚                      MonthBudgetResponseDTO.java
β”‚  β”‚
β”‚  └─resources
β”‚          application-secret.yml
β”‚          application.yml
β”‚
└─test
└─java
└─umc
└─haruchi
HaruchiApplicationTests.java




7. API λͺ…μ„Έμ„œ

ν•˜λ£¨μΉ˜api


8. μ„ΈλΆ€ κΈ°λŠ₯(Member, MonthBudget, DayBudget, BudgetRedistribution)

ν•˜λ£¨μΉ˜3번째

Member

  • 둜그인(일반) : Spring Security와 JWTλ₯Ό μ΄μš©ν•΄ μ‚¬μš©μž 인가/인증 κΈ°λŠ₯ κ΅¬ν˜„
  • 이메일 인증 기반 νšŒμ›κ°€μž… : Gmail SMTPλ₯Ό μ‚¬μš©ν•΄ Spring Bootμ—μ„œ 인증 μ½”λ“œλ₯Ό λ©”μΌλ‘œ 보내고 Redis에 μΊμ‹±ν•˜λŠ” 방식을 μ‚¬μš©ν•΄ κ΅¬ν˜„
  • λ‘œκ·Έμ•„μ›ƒ 및 νšŒμ›νƒˆν‡΄: λ°œκΈ‰λœ 토큰을 λΈ”λž™λ¦¬μŠ€νŠΈν™”ν•˜λŠ” 방식을 μ‚¬μš©ν•΄ κ΅¬ν˜„
  • νšŒμ› 정보 쑰회: ν† ν°μ—μ„œ 뽑아낸 μœ μ €μ— λŒ€ν•œ 정보 쑰회 κΈ°λŠ₯ κ΅¬ν˜„

MonthBudget

  • ν•œ 달 μ˜ˆμ‚° μˆ˜μ •: ν•œ 달 μ˜ˆμ‚°μ„ μˆ˜μ •ν•˜κ³  ν•˜λ£¨ μ˜ˆμ‚°μ„ μž¬λΆ„λ°°ν•˜λŠ” κΈ°λŠ₯ κ΅¬ν˜„
    • ν•˜λ£¨ μ˜ˆμ‚° μž¬λΆ„λ°°: ν•œ 달 쀑 남은 μΌμžμ— μ˜ˆμ‚°μ„ κ³ λ₯΄κ²Œ λΆ„λ°°, λ‚˜λˆ„μ–΄μ§€μ§€ μ•ŠλŠ” κΈˆμ•‘μ€ 세이프 λ°•μŠ€μ— μ €μž₯ν•˜λ„λ‘ κ΅¬ν˜„
  • ν•œ 달 μ˜ˆμ‚° κΈˆμ•‘ 쑰회: 이번 λ‹¬μ˜ μ˜ˆμ‚° κΈˆμ•‘μ„ λ°˜ν™˜ν•˜λ„λ‘ κ΅¬ν˜„
  • ν•œ 달 μ§€μΆœλ₯  쑰회: 이번 λ‹¬μ˜ μ§€μΆœλ₯ (ν•œ 달 μ˜ˆμ‚° λŒ€λΉ„ μ‚¬μš©ν•œ κΈˆμ•‘)을 λ°˜ν™˜ν•˜λ„λ‘ κ΅¬ν˜„
  • ν•œ μ£Ό μ˜ˆμ‚° κΈˆμ•‘ 쑰회: 이번 주의 ν•˜λ£¨ μ˜ˆμ‚° 리슀트, ν˜„μž¬ 달과 μ£Όμ°¨λ₯Ό DTO둜 λ³€ν™˜ν•˜μ—¬ 데이터 전달
  • 남은 일정 및 κΈˆμ•‘ 쑰회: μ˜€λŠ˜λΆ€ν„° λ§μΌκΉŒμ§€μ˜ 남은 μΌμˆ˜μ™€ 남은 μ˜ˆμ‚°μ„ DTO둜 λ³€ν™˜ν•˜μ—¬ 데이터 전달

DayBudget

  • ν•˜λ£¨ μ˜ˆμ‚° κΈˆμ•‘ 쑰회 : 였늘 μ‚¬μš© κ°€λŠ₯ν•œ κΈˆμ•‘μ„ μ—…λ°μ΄νŠΈν•˜μ—¬ λ°˜ν™˜ν•˜λ„λ‘ κ΅¬ν˜„
  • λ‚ μ§œλ³„ μ˜ˆμ‚° κΈˆμ•‘ 쑰회 : μ˜€λŠ˜λΆ€ν„° λ§μΌκΉŒμ§€μ˜ μ˜ˆμ‚° κΈˆμ•‘ 리슀트DTOλ₯Ό μƒμ„±ν•˜μ—¬ 데이터 전달
  • μˆ˜μž… 등둝 / μ‚­μ œ : 였늘의 μˆ˜μž…μ„ λ“±λ‘ν•˜κ³  μ‚­μ œν•˜λŠ” 둜직 κ΅¬ν˜„
  • μ§€μΆœ 등둝 / μ‚­μ œ : 였늘의 μ§€μΆœμ„ λ“±λ‘ν•˜κ³  μ‚­μ œν•˜λŠ” 둜직 κ΅¬ν˜„

BudgetRedistribution

  • 당겨쓰기 및 λ„˜κ²¨μ“°κΈ° : κ³ λ₯΄κ²Œ, μ„Έμ΄ν”„λ°•μŠ€, νŠΉμ •μΌμ˜ μž¬λΆ„λ°° μ˜΅μ…˜μ„ ENUM으둜 κ΅¬λΆ„ν•˜μ—¬ 각 둜직 κ΅¬ν˜„ (λͺ¨λ“  κ³Όμ •μ—λŠ” 10의 자리 μ΄ν•˜ μ ˆμ‚¬ 둜직 포함)

  • μ§€μΆœ λ§ˆκ°ν•˜κΈ° : ν•˜λ£¨ μ§€μΆœ(DayBudget)의 μ–‘μˆ˜/음수/0 νŒλ‹¨ν•˜μ—¬

    • μ–‘μˆ˜μΈ 경우 : κ³ λ₯΄κ²Œ λΆ„λ°° or μ„Έμ΄ν”„λ°•μŠ€ ENUM으둜 κ΅¬λΆ„ν•˜μ—¬ 둜직 κ΅¬ν˜„

    • 음수인 경우 : κ³ λ₯΄κ²Œ κ°€μ Έμ˜€κΈ° or μ„Έμ΄ν”„λ°•μŠ€ ENUM으둜 κ΅¬λΆ„ν•˜μ—¬ 둜직 κ΅¬ν˜„

    • 0인 경우 : μž¬λΆ„λ°° μ˜΅μ…˜μ„ ZERO둜 지정 ν›„ λ°”λ‘œ μ§€μΆœ 마감

      (λͺ¨λ“  κ³Όμ •μ—λŠ” 10의 자리 μ΄ν•˜ μ ˆμ‚¬ 둜직 포함)

  • μ§€μΆœ 영수증 쑰회 : μˆ˜μž…, μ§€μΆœ, 당겨쓰기 및 λ„˜κ²¨μ“°κΈ°μ˜ 각 리슀트λ₯Ό DTO둜 λ³€ν™˜ν•˜μ—¬ μ΅œμ’…μ μœΌλ‘œ 영수증 리슀트 DTOλ₯Ό μƒμ„±ν•˜μ—¬ 데이터 전달


9. ERD

ν•˜λ£¨μΉ˜ (HARUCHI) erd


10. ν”„λ‘œμ νŠΈ ν›„κΈ°

πŸ™Šμž„μ§€λ―Ό/μ œμ•„

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λŠ” λ™μ•ˆ 정말 λ§Žμ€ 것을 배울 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν˜‘μ—… κ·œμΉ™μ„ μ²΄κ³„μ μœΌλ‘œ μ •ν•˜κ³  μ§„ν–‰ν•œ ν”„λ‘œμ νŠΈλŠ” 거의 처음이라, ν…œν”Œλ¦Ώ μž‘μ„±λΆ€ν„° ν•¨κ»˜ μ˜λ…Όν•˜μ—¬ μ™„μ„±ν•˜λŠ” 과정이 정말 μ†Œμ€‘ν–ˆμŠ΅λ‹ˆλ‹€. 특히 PR을 톡해 μ„œλ‘œ μ½”λ“œ 리뷰λ₯Ό μ§„ν–‰ν•˜μ—¬ 더 쒋은 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. UMC μŠ€ν„°λ””μ—μ„œ 배운 λ‚΄μš©μ„ μ‹€μ œλ‘œ 많이 μ μš©ν•΄ λ³Ό 수 μžˆμ–΄μ„œ μ’‹μ•˜κ³ , μˆ˜μƒκΉŒμ§€ ν•˜κ²Œ λ˜μ–΄ μ €μ—κ²ŒλŠ” 정말 λœ»κΉŠμ€ ν”„λ‘œμ νŠΈλ‘œ 기얡될 것 κ°™μŠ΅λ‹ˆλ‹€. 우리 μžλž‘μŠ€λŸ¬μš΄ νŒ€μ›λ“€ 정말 고생 λ§Žμ•˜μŠ΅λ‹ˆλ‹€! πŸŽ‰

πŸ‡μ •λͺ…μ„œ/루베

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° UMC μŠ€ν„°λ””μ—μ„œ 배운 지식듀을 μ‹€μ œλ‘œ μ μš©ν•΄λ³Ό 수 μžˆμ—ˆκ³ , 이λ₯Ό 톡해 더 κ²¬κ³ ν•˜κ²Œ 읡힐 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ λ‚˜μ˜ λΆ€μ‘±ν•œ 뢀뢄이 무엇인지 μ•Œκ²Œ λ˜μ—ˆκ³ , 이λ₯Ό λ°”νƒ•μœΌλ‘œ μ–΄λ–€ 것을 μΆ”κ°€μ μœΌλ‘œ 곡뢀해야 ν•˜λŠ” 지 νŒŒμ•…ν•˜μ—¬ λ”μš± μ„±μž₯ν•  수 μžˆλŠ” 계기가 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κΉƒν—ˆλΈŒ PR을 ν†΅ν•΄μ„œ μ œλŒ€λ‘œ 된 μ½”λ“œ 리뷰λ₯Ό μ§„ν–‰ν•œ ν”„λ‘œμ νŠΈκ°€ 거의 μ²˜μŒμ΄μ—ˆκΈ° λ•Œλ¬Έμ— μ²˜μŒμ—” λ‚―μ„€μ—ˆμ§€λ§Œ, μ½”λ“œ 리뷰 κ³Όμ •μ—μ„œ λ‚΄κ°€ μž‘μ„±ν•œ μ½”λ“œλ₯Ό λ‹€μ‹œ λŒμ•„λ³΄κ³  κ°œμ„ ν•  수 μžˆμ—ˆκ³ , νŒ€μ›λ“€μ˜ μ½”λ“œλ₯Ό λ¦¬λ·°ν•˜λ©° μ„œλ‘œ 배우고 ν•¨κ»˜ μ„±μž₯ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•˜λ£¨μΉ˜ ν”„λ‘œμ νŠΈλŠ” ν›Œλ₯­ν•œ νŒ€μ›λ“€κ³Ό ν˜‘μ—…ν•˜λ©° λ§Žμ€ 것을 μ–»μ–΄κ°ˆ 수 μžˆμ—ˆλ˜ 값진 κ²½ν—˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λκΉŒμ§€ ν•¨κ»˜ κ³ μƒν•˜λ©° ν”„λ‘œμ νŠΈ μ™„λ£ŒκΉŒμ§€ λ‹¬λ €μ˜¨ νŒ€μ›λ“€μ—κ²Œ μ§„μ‹¬μœΌλ‘œ κ°μ‚¬μ˜ 인사λ₯Ό μ „ν•©λ‹ˆλ‹€!

πŸΆκΉ€μ€μ§€/리버

컀밋 μ»¨λ²€μ…˜λΆ€ν„° μ΄μŠˆμ™€ PR κ΄€λ¦¬κΉŒμ§€ ν˜‘μ—…μ˜ λͺ¨λ“  과정을 μ œλŒ€λ‘œ κ²½ν—˜ν•œ 첫 ν”„λ‘œμ νŠΈμ˜€μŠ΅λ‹ˆλ‹€! 특히 Spring Securityλ₯Ό ν™œμš©ν•œ μ‚¬μš©μž 인증/인가 κ΅¬ν˜„μ„ 처음으둜 κ΅¬ν˜„ν•΄ λ³Ό 수 μžˆμ—ˆκ³ , νŒ€μ›λ“€μ˜ λ„μ›€μœΌλ‘œ μ œλŒ€λ‘œ ν•΄λ‚Ό 수 μžˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. μ‹œκ°„μ— μ«“κΈ°λ©° μ§„ν–‰λœ 뢀뢄도 μžˆμ—ˆμ§€λ§Œ, 그만큼 μ–΄λ–€ 뢀뢄이 λΆ€μ‘±ν•œμ§€ μ•Œ 수 μžˆμ—ˆλ˜ κΈ°νšŒμ˜€λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. ν•¨κ»˜ κ³ μƒν•œ νŒ€μ›λ“€ λͺ¨λ‘μ—κ²Œ κ°μ‚¬μ˜ 인사λ₯Ό μ „ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œλ„ 이 κ²½ν—˜μ„ λ°”νƒ•μœΌλ‘œ 더 체계적이고 효율적으둜 κ°œλ°œν•˜λŠ”, 더 λ‚˜μ€ 개발자둜 μ„±μž₯ν•΄ λ‚˜κ°€κ³  μ‹ΆμŠ΅λ‹ˆλ‹€!

πŸ€μ†‘λ―Όμ•„/μ•€λ“œ

ν•œ 달 λ°˜λ™μ•ˆ νŒ€ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ λ§Žμ€ 점듀을 λŠλ‚„ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. κ°œμΈμ μœΌλ‘œλŠ” UMC μŠ€ν„°λ””λ₯Ό ν•˜λ©΄μ„œ λ°°μ› λ˜ 지식을 기반으둜 ν”„λ‘œμ νŠΈ 섀계뢀터 μ½”λ“œ μž‘μ„±κΉŒμ§€ μ „ 과정듀을 직접 μ‹œν–‰μ°©μ˜€λ₯Ό κ±°μΉ˜λ©΄μ„œ κ΅¬ν˜„ν•΄ λƒˆλ‹€λŠ” μ μ—μ„œ λΏŒλ“―ν•˜κ³  μ¦κ±°μ› μŠ΅λ‹ˆλ‹€. λ˜ν•œ PR을 톡해 μ½”λ“œ 리뷰λ₯Ό μž‘μ„±ν•˜μ—¬ ν΄λ¦°ν•œ μ½”λ“œλ“€μ„ μž‘μ„±ν•  수 μžˆμ–΄μ„œ λ„ˆλ¬΄λ‚˜ μ’‹μ•˜μŠ΅λ‹ˆλ‹€. 첫 νŒ€ ν”„λ‘œμ νŠΈμ˜€κΈ° λ•Œλ¬Έμ— λΆ€μ‘±ν•œ 점도 λ§Žμ•˜μ§€λ§Œ νŒ€μ›λ“€ 덕뢄에 μ„±κ³΅μ μœΌλ‘œ λ§ˆλ¬΄λ¦¬ν•  수 μžˆμ–΄μ„œ κ°μ‚¬ν•˜κ³ , 쒋은 κΈ°μ–΅μœΌλ‘œ 남을 것 κ°™μŠ΅λ‹ˆλ‹€! λͺ¨λ‘λ“€ μˆ˜κ³ ν•˜μ…¨κ³ , μ•žμœΌλ‘œλ„ ν™”μ΄νŒ…μž…λ‹ˆλ‹€!!

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages