Skip to content

πŸ‘¨β€πŸ‘©β€πŸ‘¦λ³΄ν˜ΈμžλŠ” κ°€μ‘±μ˜ μƒνƒœλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ, πŸ‘©β€βš•οΈμš”μ–‘λ³΄ν˜Έμ‚¬λŠ” 손쉽고 κ°„νŽΈν•˜κ²Œ κΈ°λ‘ν•˜λŠ” "λŒλ΄„λ‹€λ¦¬"

Notifications You must be signed in to change notification settings

kakao-tech-campus-2nd-step3/Team13_BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🀝 [Team 13] λŒλ΄„λ‹€λ¦¬ - μš”μ–‘μ› 관리 μ„œλΉ„μŠ€

care_bridge_logo



λͺ©μ°¨

πŸ§‘β€πŸ’» Collaborators

πŸ—“οΈ 개발 κΈ°κ°„

2024.09 ~ 2024.11 (카카였 ν…Œν¬ 캠퍼슀 2κΈ° - Step3)



Backend

ν…Œν¬ 리더 기획 리더 λ¦¬μ•‘μ…”λ„ˆ λ¦¬λ§ˆμΈλ” λ¦¬λ§ˆμΈλ”

Frontend

μ‘°μž₯ νƒ€μž„ 킀퍼



βš™οΈ 개발 μŠ€νƒ

java 17 spring boot 3.3 spring security mysql 8.0

Redis AWS S3 AWS EC2 Amazon sqs

Naver cloud openAI poi line api coolSms

React Vite TypeScript

Chakra UI Emotion Styled Components

React Query Axios

Tesseract.js



πŸ”— ν”„λ‘œμ νŠΈ κ΄€λ ¨ μ£Όμ†Œ




🀩 μƒ˜ν”Œ 아이디 & λΉ„λ°€λ²ˆν˜Έ

κ΄€λ¦¬μž

  • 둜그인 아이디 : string
  • 둜그인 λΉ„λ°€λ²ˆν˜Έ : string

μš”μ–‘μ›

  • 둜그인 아이디 : love
  • 둜그인 λΉ„λ°€λ²ˆν˜Έ : 1234

μš”μ–‘λ³΄ν˜Έμ‚¬

  • 둜그인 아이디 : 01012341234
  • 둜그인 λΉ„λ°€λ²ˆν˜Έ : 1

보호자

  • 둜그인 아이디 : 01022223333
  • 둜그인 λΉ„λ°€λ²ˆν˜Έ : 1234

🌟 λŒλ΄„λ‹€λ¦¬λž€?

μš”μ–‘λ³΄ν˜Έμ‚¬λŠ” κ°„νŽΈν•˜κ²Œ 차트λ₯Ό μž‘μ„±ν•˜κ³ ,
λ³΄ν˜ΈμžλŠ” 이λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 μžˆλŠ” 디지털 차트 μ„œλΉ„μŠ€

  • λ³΄ν˜ΈμžλŠ” μ–Έμ œ μ–΄λ””μ„œλ‚˜ κ°€μ‘±μ˜ μƒνƒœλ₯Ό 확인
  • μš”μ–‘λ³΄ν˜Έμ‚¬λŠ” λ³΅μž‘ν•¨ 없이 기둝을 관리

➑️ 신뒰와 νŽΈλ¦¬μ„±μ„ μ œκ³΅ν•˜λŠ” μ†Œν†΅ ν”Œλž«νΌ



🧐 μ„œλΉ„μŠ€μ˜ ν•„μš”μ„±

πŸ“ 문제 상황 1. 정보 곡유의 λ‹¨μ ˆ

  • λ³΄ν˜ΈμžλŠ” κ°€μ‘±μ˜ μƒνƒœλ₯Ό 자주 ν™•μΈν•˜κ³  μ‹Άμ§€λ§Œ, μš”μ–‘μ›μ— 일일이 연락해야 ν•˜λŠ” λ²ˆκ±°λ‘œμ›€κ³Ό μ œν•œλœ μ •λ³΄λ‘œ 인해 λΆˆνŽΈμ„ κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€.
  • μ‹€μ‹œκ°„ μƒνƒœ 확인이 μ–΄λ ΅κΈ° λ•Œλ¬Έμ—, λ³΄ν˜ΈμžλŠ” κ°€μ‘±μ˜ 건강 μƒνƒœμ— λŒ€ν•΄ 지속적인 λΆˆμ•ˆκ°μ„ λŠλ‚„ 수 μžˆμŠ΅λ‹ˆλ‹€.
보호자의 μš”κ΅¬ - κ°€μ‘±μ˜ μƒνƒœλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ 확인할 수 μžˆλŠ” κ°„νŽΈν•œ 정보 μ ‘κ·Ό λ°©μ•ˆμ΄ ν•„μš”ν•˜λ‹€.

➑️ λ³΄ν˜Έμžκ°€ μ–΄λ””μ„œλ“  κ°€μ‘±μ˜ μƒνƒœλ₯Ό μ‰½κ²Œ 확인할 수 μžˆλŠ” μ‹œμŠ€ν…œμ΄ ν•„μš”ν•˜λ‹€!

🎯 ν•΄κ²° λ°©μ•ˆ

  • μ‹€μ‹œκ°„ 정보 곡유 κΈ°λŠ₯을 톡해 λ³΄ν˜Έμžκ°€ μ–Έμ œ μ–΄λ””μ„œλ‚˜ κ°€μ‘±μ˜ μ΅œμ‹  μƒνƒœλ₯Ό 확인할 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
  • λ³΄ν˜Έμžμ™€ μš”μ–‘λ³΄ν˜Έμ‚¬ κ°„μ˜ μ†Œν†΅μ„ μ›ν™œν•˜κ²Œ ν•˜μ—¬ λΆˆμ•ˆκ°μ„ 쀄이고, μ‹ λ’°λ₯Ό κ°•ν™”ν•©λ‹ˆλ‹€.

πŸ“ 문제 상황 2. μš”μ–‘λ³΄ν˜Έμ‚¬μ˜ 차트 μž‘μ„± 어렀움

  • μš”μ–‘λ³΄ν˜Έμ‚¬λŠ” λ³΅μž‘ν•œ 디지털 기둝 μ‹œμŠ€ν…œμ— μ΅μˆ™ν•˜μ§€ μ•Šμ•„ ν•Έλ“œν°μœΌλ‘œ 차트λ₯Ό μž‘μ„±ν•˜λŠ” 과정이 번거둭고 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.
  • μ΄λŸ¬ν•œ 어렀움은 기둝의 μ •ν™•μ„±κ³Ό 신속성을 μ €ν•΄ν•˜κ³ , μš”μ–‘λ³΄ν˜Έμ‚¬μ˜ 업무 νš¨μœ¨μ„±μ—λ„ 뢀정적인 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

caregiver_difficulty

μš”μ–‘λ³΄ν˜Έμ‚¬μ˜ μš”κ΅¬ - λ³΅μž‘ν•˜μ§€ μ•Šκ³  κ°„λ‹¨ν•œ 차트 μž‘μ„± 방식이 ν•„μš”ν•˜λ‹€.

➑️ μš”μ–‘λ³΄ν˜Έμ‚¬κ°€ μ‰½κ²Œ 차트λ₯Ό μž‘μ„±ν•  수 μžˆλ„λ‘ ν•˜λŠ” κ°„νŽΈν•œ 기둝 μ‹œμŠ€ν…œμ΄ ν•„μš”ν•˜λ‹€!

🎯 ν•΄κ²° λ°©μ•ˆ

  • μŒμ„± 인식 및 손글씨 인식 κΈ°λŠ₯을 톡해 μš”μ–‘λ³΄ν˜Έμ‚¬κ°€ λ³΅μž‘ν•œ 절차 없이 차트λ₯Ό μ‰½κ²Œ μž‘μ„±ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
  • 기둝 μž‘μ„±μ˜ κ°„μ†Œν™”λ₯Ό 톡해 μš”μ–‘λ³΄ν˜Έμ‚¬μ˜ 뢀담을 쀄이고, ν™˜μžμ˜ μƒνƒœλ₯Ό μ‹ μ†ν•˜κ³  μ •ν™•ν•˜κ²Œ 기둝할 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.



🧩 μ„œλΉ„μŠ€ 핡심 κΈ°λŠ₯

보호자

πŸ“ λŒλ΄„λŒ€μƒμž 차트 확인 πŸ“ 차트 μš”μ•½
ν•˜λ£¨ μƒνƒœ 기둝 확인
사진과 차트 μž‘μ„± μ‹œ μ•Œλ¦Ό μˆ˜μ‹ 
κΈ΄ 차트λ₯Ό 핡심 λ‚΄μš© μš”μ•½
μ£Όμš” 사항을 κ°„κ²°ν•˜κ²Œ 확인
recipient_today chart_summary_feature

μš”μ–‘λ³΄ν˜Έμ‚¬

πŸ–‹οΈ μš”μ–‘ 일지 μž‘μ„± πŸŽ™οΈ μŒμ„± 인식 차트 μž‘μ„±
μŒμ„±/사진 인식, 직접 μž‘μ„± 지원
λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ κ°„νŽΈ μž‘μ„±
μŒμ„± 인식을 톡해 주관식 μž…λ ₯
μŒμ„±μ„ ν…μŠ€νŠΈλ‘œ μžλ™ λ³€ν™˜
create_chart voice_recognition
πŸ“· OCR 차트 μž‘μ„± πŸ“‘ 차트 μš”μ•½ κΈ°λŠ₯ πŸ”” μ•Œλ¦Ό κΈ°λŠ₯
차트 양식 ν”„λ¦°νŠΈ ν›„ 사진 인식
사진 ν•œ μž₯으둜 μžλ™ 기둝 μ™„μ„±
ν™˜μž μƒνƒœ μš”μ•½ 제곡
μ—¬λŸ¬ ν™˜μžμ˜ ν•˜λ£¨ μƒνƒœ κ°„νŽΈ 확인
μ‚¬μš©μžκ°€ μ˜ˆμ•½ν•œ μ‹œκ°„λ§ˆλ‹€
문자/라인 λ©”μ‹œμ§€λ‘œ 차트 μž‘μ„± μ•Œλ¦Ό
ocr_chart chart_summary_feature care_message

μš”μ–‘μ›

πŸ–₯️ μš”μ–‘μ‚¬, 보호자, λŒλ΄„λŒ€μƒμž 관리 πŸ“Š μ—‘μ…€ μ—…λ‘œλ“œ
μ›Ήμ‚¬μ΄νŠΈλ‘œ 정보 관리
μš”μ–‘μ‚¬, 보호자, λŒ€μƒμž 정보 μˆ˜μ • κ°€λŠ₯
μ—‘μ…€ 파일둜 λŒ€λŸ‰ 데이터 μ—…λ‘œλ“œ
제곡된 ν…œν”Œλ¦Ώ 파일둜 κ°„νŽΈ 등둝
admin_management excel_upload



πŸ”§ 곡톡 핡심 개발 μ˜μ—­

πŸ™†β€ νšŒμ›κ°€μž…

  • μ‚¬μš©μžμ˜ 연령측을 κ³ λ €ν•  λ•Œ, 직접 νšŒμ›κ°€μž…ν•˜κ³  정보λ₯Ό λ“±λ‘ν•˜λŠ” 것이 μ–΄λ €μšΈ 것이라 μƒκ°ν•˜μ—¬ μš”μ–‘μ›μ΄λ‚˜ κ΄€λ¦¬μžκ°€ λŒλ΄„λŒ€μƒμžλ‚˜ 보호자의 아이디, λΉ„λ°€λ²ˆν˜Έλ₯Ό μƒμ„±ν•΄μ€λ‹ˆλ‹€.
  • λŒλ΄„λŒ€μƒμžμ™€ λ³΄ν˜ΈμžλŠ” λΉ„λ°€λ²ˆν˜Έλ§Œ κΈ°μ–΅ν•˜λ©΄ μ„œλΉ„μŠ€ 이용이 κ°€λŠ₯ν•˜λ„λ‘ μ•„μ΄λ””λŠ” 본인의 μ „ν™”λ²ˆν˜Έλ‘œ λ“±λ‘ν•˜λ„λ‘ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • κ΄€λ¦¬μžλŠ” μš”μ–‘μ›, 보호자, λŒλ΄„λŒ€μƒμž, μš”μ–‘λ³΄ν˜Έμ‚¬λ₯Ό 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μš”μ–‘μ›μ€ 보호자, λŒλ΄„λŒ€μƒμž, μš”μ–‘λ³΄ν˜Έμ‚¬λ₯Ό ν•΄λ‹Ή μš”μ–‘μ›μ— 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • κ΄€λ¦¬μžμ˜ 경우 λžœλ”© νŽ˜μ΄μ§€μ— 적힌 μ΄λ©”μΌλ‘œ contactν•˜μ—¬ μ‹ λΆ„κ³Ό λͺ©μ μ„ μΈμ¦ν•œ λ’€ λ³Έ μ„œλΉ„μŠ€ λ‹΄λ‹Ήμžκ°€ 아이디 λΉ„λ°€λ²ˆν˜Έλ₯Ό λΆ€μ—¬ν•΄μ€λ‹ˆλ‹€.

πŸ”§ BE 핡심 개발 μ˜μ—­

πŸ”“ 둜그인 / νšŒμ›κ°€μž…

Β  spring security와 JWTλ₯Ό ν™œμš©ν•˜μ—¬ statelessν•œ 인증방식을 μ„ νƒν•˜μ—¬ μ„œλ²„ ν™•μž₯성에 이점을 κ°€μ§€κ³ μž ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ˜ν•œ κΆŒν•œ 검사λ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•œ μ»€μŠ€ν…€ λ©”μ†Œλ“œ μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 κΆŒν•œ 검사뢀뢄을 λΆ„λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ€‘μ μ μœΌλ‘œ μƒκ°ν•œ 뢀뢄은 μ„œλ‘œ λ‹€λ₯Έ table에 μ†ν•΄μžˆλŠ” νšŒμ›λ“€μ„ λŒ€μƒμœΌλ‘œ 인증과 인가가 ν•„μš”ν•œ μƒν™©μ΄μ˜€μœΌλ©°, 이λ₯Ό μœ„ν•΄ μ„œλΉ„μŠ€μ— μ•Œλ§žμ€ AuthenticationProvider와 UserDetails, UserDetailsServiceλ₯Ό κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸͺ™ λ¦¬ν”„λ ˆμ‹œ 토큰

Β  저희 μ„œλΉ„μŠ€λŠ” λ―Όκ°ν•œ 의료 데이터λ₯Ό 닀루기에, 토큰 λ³΄μ•ˆμ΄ μ€‘μš”ν–ˆμŠ΅λ‹ˆλ‹€. 둜그인 μ‹œ μ•‘μ„ΈμŠ€ 토큰과 λ¦¬ν”„λ ˆμ‹œ 토큰을 λ°œκΈ‰ν•˜κ³ , λ¦¬ν”„λ ˆμ‹œ ν† ν°μœΌλ‘œ μž¬λ°œκΈ‰ μ‹œ 두 토큰을 λͺ¨λ‘ μƒˆλ‘œ λ°œκΈ‰ν•˜λŠ” RTR 방식을 μ μš©ν•΄ λ³΄μ•ˆμ„ κ°•ν™”ν–ˆμŠ΅λ‹ˆλ‹€. λ‘œκ·Έμ•„μ›ƒ μ‹œμ—λŠ” Redis에 μ €μž₯된 λ¦¬ν”„λ ˆμ‹œ 토큰을 μ‚­μ œν•˜κ³ , μ•‘μ„ΈμŠ€ 토큰은 λΈ”λž™λ¦¬μŠ€νŠΈμ— 등둝해 μœ νš¨μ„±μ„ μ°¨λ‹¨ν–ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‘œκ·Έμ•„μ›ƒ μ‹œ μ‹€μ‹œκ°„μœΌλ‘œ 토큰 만료λ₯Ό 효과적으둜 μ²˜λ¦¬ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

πŸ“· OCR κΈ°λŠ₯

Β  μš”μ–‘λ³΄ν˜Έμ‚¬κ°€ μž‘μ„±ν•œ λŒλ΄„ λŒ€μƒμž 차트λ₯Ό 효율적으둜 λ””μ§€ν„Έν™”ν•˜κΈ° μœ„ν•΄ Naver Clova OCR API와 AWS S3의 presigned URL을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

Β  presigned URL을 톡해 이미지 νŒŒμΌμ„ S3에 μ—…λ‘œλ“œν•˜κ³ , λ°±μ—”λ“œ μ„œλ²„μ—λŠ” objectKey κ°’λ§Œ μ „λ‹¬ν•˜μ—¬ OCR을 μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ„œλ²„ κ³ΌλΆ€ν•˜λ₯Ό λ°©μ§€ν•˜κ³  μ„±λŠ₯을 μ΅œμ ν™”ν–ˆμŠ΅λ‹ˆλ‹€. 이둜써 μ„œλ²„ λ¦¬μ†ŒμŠ€λ₯Ό μ ˆμ•½ν•˜λ©΄μ„œλ„ λ³΄μ•ˆμ„±μ„ μœ μ§€ν•œ μƒνƒœμ—μ„œ 차트λ₯Ό μ•ˆμ „ν•˜κ²Œ OCR μ²˜λ¦¬ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

care_bridge_logo

πŸ€– AI μš”μ•½ κΈ°λŠ₯ - 파인 νŠœλ‹

  1. κ³ λ € 사항

    • λ³΄ν˜Έμžλ“€μ΄ 차트 정보λ₯Ό λͺ¨λ‘ 보면 λ„ˆλ¬΄ λ§Žμ€ μ •λ³΄λ‘œ 인해 λŒλ΄„ λŒ€μƒμžμ˜ μƒνƒœλ₯Ό νŒŒμ•…ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 차트 정보λ₯Ό κ°„κ²°ν•˜κ²Œ μš”μ•½ν•˜μ—¬ λ³΄μ—¬μ£ΌλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  2. 기술 선택 이유(νŒŒμΈνŠœλ‹)

    • λͺ¨λΈ νŒŒμΈνŠœλ‹: 기쑴의 ChatGPTλ₯Ό μ‚¬μš©ν•  λ•Œ μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ κ²°κ³Όκ°€ λ‚˜μ˜€μ§€ μ•Šκ±°λ‚˜ λΆˆν•„μš”ν•œ 정보가 ν¬ν•¨λ˜λŠ” κ²½μš°κ°€ μžˆμ–΄, λͺ¨λΈμ„ νŒŒμΈνŠœλ‹ν•˜λŠ” 방법을 μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€. νŒŒμΈνŠœλ‹μ„ ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ 맀번 JSON ν˜•μ‹μœΌλ‘œ νŠΉμ • λ°©μ‹μ˜ 값을 μš”κ΅¬ν•΄μ•Ό ν–ˆκ² μ§€λ§Œ, μ΄μ œλŠ” 차트 데이터λ₯Ό JSON ν˜•μ‹μœΌλ‘œ μž…λ ₯ν•˜λ©΄ μ›ν•˜λŠ” ν˜•μ‹μ˜ κ²°κ³Όλ₯Ό λ°”λ‘œ 받을 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. κ΅¬ν˜„ 방식

    • νŒŒμΈνŠœλ‹: 차트 μš”μ•½κ³Ό κ΄€λ ¨λœ 데이터셋이 μ—†μ–΄ AI-Hub의 ν•œκ΅­μ–΄ λŒ€ν™” μš”μ•½ 데이터셋을 ν™œμš©ν•˜μ—¬ νŒŒμΈνŠœλ‹μ„ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. conditionDisease, bodyManagement, nursingManagement, recoveryTraining, cognitiveManagement와 같은 ν•­λͺ©λ³„λ‘œ μš”μ•½ν•˜λ„λ‘ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

    • νƒœκ·Έ μš”μ•½ 적용: ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ μ‚¬μš©ν•  μ„Έ 가지 νƒœκ·Έλ₯Ό μš”μ•½ν•˜λ„λ‘ νŒŒμΈνŠœλ‹μ„ μΆ”κ°€λ‘œ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. ν”„λ‘ νŠΈμ—”λ“œμ™€μ˜ 연동 κ³Όμ •μ—μ„œ νƒœκ·Έλ₯Ό μΆ”κ°€ν•˜λŠ” 것이 μœ μš©ν•  κ²ƒμ΄λΌλŠ” μ˜κ²¬μ„ λ°˜μ˜ν•˜μ—¬ 이λ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. 차트 데이터λ₯Ό μ€€λΉ„ν•˜λŠ” 데 μ‹œκ°„μ΄ 많이 μ†Œμš”λ˜μ—ˆκΈ° λ•Œλ¬Έμ— νƒœκ·Έλ₯Ό μΆ”κ°€ν•˜μ—¬ λ‹€μ‹œ νŒŒμΈνŠœλ‹ν•˜λŠ” 것이 μ–΄λ ΅λ‹€κ³  νŒλ‹¨ν–ˆκ³ , λŒ€μ‹  νƒœκ·Έλ₯Ό μœ„ν•œ νŒŒμΈνŠœλ‹μ„ λ³„λ„λ‘œ μ§„ν–‰ν•˜λŠ” κ²ƒμœΌλ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

  4. 문제 ν•΄κ²°

    • 가끔 AIκ°€ null 값을 λ°˜ν™˜ν•˜λŠ” λ¬Έμ œκ°€ μžˆμ—ˆμ§€λ§Œ, λŒ€λΆ€λΆ„ ν•œ 번 더 μ‹œλ„ν•˜λ©΄ μ •μƒμ μœΌλ‘œ λ™μž‘ν–ˆμŠ΅λ‹ˆλ‹€. 이에 따라 λ°±μ—”λ“œ μ„œλΉ„μŠ€μ—μ„œ 첫 번째 μ‹œλ„μ— μ„±κ³΅ν•˜μ§€ μ•Šμ„ 경우 μ΅œλŒ€ μ„Έ λ²ˆκΉŒμ§€ μž¬μ‹œλ„ν•˜λ„λ‘ μˆ˜μ •ν•˜μ˜€κ³ , μ„Έ 번 μ‹œλ„ 후에도 응닡이 없을 경우 κ·Έλ•Œ ν”„λ‘ νŠΈμ—”λ“œμ— μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 보내도둝 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

⏰ μ•Œλ¦Ό μ„œλΉ„μŠ€

  1. κ΅¬ν˜„ 방법
  • Spring μŠ€μΌ€μ€„λŸ¬λ₯Ό ν™œμš©ν•˜μ—¬ λ§€λΆ„λ§ˆλ‹€ μ•Œλ¦Ό μ‹œκ°„μ΄ λ„λž˜ν•œ μš”μ–‘λ³΄ν˜Έμ‚¬μ™€ 보호자λ₯Ό μ°Ύμ•„ ν•„μš”ν•œ μ•Œλ¦Ό λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€.
  • μ•Œλ¦Ό λ©”μ‹œμ§€λŠ” 미리 μ •μ˜λœ ν…œν”Œλ¦Ώμ„ 기반으둜 κ΅¬μ„±ν•˜λ©°, μ‚¬μš©μžκ°€ μ„ νƒν•œ μ•Œλ¦Ό μˆ˜λ‹¨(Line λ˜λŠ” SMS)에 맞좰 λ°œμ†‘λ©λ‹ˆλ‹€.
  • μ‚¬μš©μž 편의λ₯Ό μœ„ν•΄ β€˜λ§ˆμ΄νŽ˜μ΄μ§€β€™μ—μ„œ Line μ•Œλ¦Ό μ„œλΉ„μŠ€μ™€ SMS μ•Œλ¦Ό μ„œλΉ„μŠ€λ₯Ό 선택할 수 μžˆλŠ” μ˜΅μ…˜μ„ μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€.
  1. 문제 ν•΄κ²°
  • λ©”μ‹œμ§€ 전솑 쀑볡 및 전솑 μ‹€νŒ¨ μ‹œ 였λ₯˜ μ²˜λ¦¬κ°€ μ–΄λ €μ› λ˜ 뢀뢄은 Amazon SQSλ₯Ό 톡해 λ©”μ‹œμ§€ 큐 관리 κΈ°λŠ₯을 μΆ”κ°€ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
  • 카카였 λΉ„μ¦ˆλ‹ˆμŠ€ 채널 κ°€μž…μ— ν•„μš”ν•œ μ„œλ₯˜ μ‹¬μ‚¬μ—μ„œ λ°˜λ €λ˜μ—ˆμœΌλ‚˜, μž₯기적으둜 카카였 μ•Œλ¦Όν†‘ λ„μž… κ°€λŠ₯성을 염두에 두고, ν˜„μž¬λŠ” Lineκ³Ό SMS APIλ₯Ό λŒ€μ²΄ μˆ˜λ‹¨μœΌλ‘œ ν™œμš©ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ“Š μ—‘μ…€ 파일 관리 κΈ°λŠ₯

Β  μ—‘μ…€ 파일 관리 κΈ°λŠ₯을 톡해 μš”μ–‘μ›μ—μ„œ λ‹€μˆ˜μ˜ μš”μ–‘λ³΄ν˜Έμ‚¬, 보호자, λŒλ΄„λŒ€μƒμž 정보λ₯Ό ν•œ λ²ˆμ— 효율적으둜 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€. μš”μ–‘μ›μ€ 제곡된 μ—‘μ…€ ν…œν”Œλ¦Ώ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•΄ 데이터λ₯Ό μΌκ΄„μ μœΌλ‘œ μž…λ ₯ν•˜κ³  μ—…λ‘œλ“œν•˜μ—¬ κ°œλ³„ μž…λ ₯보닀 μ‹œκ°„μ„ μ ˆκ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Β  μ—…λ‘œλ“œλœ νŒŒμΌμ€ μ„œλ²„μ—μ„œ μœ νš¨μ„± 검사와 쀑볡 검사λ₯Ό 거쳐 ν˜•μ‹μ΄ λ§žμ§€ μ•Šκ±°λ‚˜ μ€‘λ³΅λœ λ°μ΄ν„°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 검사λ₯Ό ν†΅κ³Όν•œ λ°μ΄ν„°λ§Œ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯되며, 검사에 ν†΅κ³Όν•˜μ§€ λͺ»ν•œ 였λ₯˜ λ°μ΄ν„°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜μ§€ μ•Šμ•„, 정상 λ°μ΄ν„°λ§Œ μ•ˆμ „ν•˜κ²Œ κ΄€λ¦¬λ©λ‹ˆλ‹€.

🧩 ERD

caregiver_difficulty



🌌 λ°±μ—”λ“œ 전체 ꡬ상도

caregiver_difficulty



πŸ“„ νŒ€ κ·ΈλΌμš΄λ“œ κ·œμΉ™ μ„€λͺ…

πŸ›οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

β””β”€β”€β”€πŸ“‚src
    β”œβ”€β”€β”€πŸ“‚main
    β”‚   β”œβ”€β”€β”€πŸ“‚java.dbdr
    β”‚   β”‚               β”œβ”€β”€β”€ πŸ“domain 
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“admin
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“careworker
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“chart
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“core
    β”‚   β”‚               β”‚    β”‚   β”œβ”€β”€β”€πŸ“alarm
    β”‚   β”‚               β”‚    β”‚   β”œβ”€β”€β”€πŸ“base
    β”‚   β”‚               β”‚    β”‚   β”œβ”€β”€β”€πŸ“messaging
    β”‚   β”‚               β”‚    β”‚   β”œβ”€β”€β”€πŸ“ocr
    β”‚   β”‚               β”‚    β”‚   β””β”€β”€β”€πŸ“s3
    β”‚   β”‚               β”‚    β”‚
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“excel
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“guardian
    β”‚   β”‚               β”‚    β”œβ”€β”€β”€πŸ“institution
    β”‚   β”‚               β”‚    β””β”€β”€β”€πŸ“recipient
    β”‚   β”‚               β”œβ”€β”€β”€πŸ“global
    β”‚   β”‚               β”‚   β”œβ”€β”€β”€πŸ“configuration
    β”‚   β”‚               β”‚   β”œβ”€β”€β”€πŸ“exception
    β”‚   β”‚               β”‚   β””β”€β”€β”€πŸ“util
    β”‚   β”‚               β”œβ”€β”€β”€πŸ“openai
    β”‚   β”‚               β””β”€β”€β”€πŸ“security
    β”‚   β””β”€β”€β”€πŸ“‚resources
    β”‚       
    β””β”€β”€β”€πŸ“‚test
        β”œβ”€β”€β”€πŸ“‚java.dbdr
        β”‚     β”œβ”€β”€β”€πŸ“careworker
        β”‚     β”œβ”€β”€β”€πŸ“chart
        β”‚     β”œβ”€β”€β”€πŸ“e2etest
        β”‚     β”œβ”€β”€β”€πŸ“global
        β”‚     β”œβ”€β”€β”€πŸ“messaging
        β”‚     β”œβ”€β”€β”€πŸ“openAi
        β”‚     β”œβ”€β”€β”€πŸ“security
        β”‚     β””β”€β”€β”€πŸ“testhelper
        β””β”€β”€β”€πŸ“‚resources

πŸ•ΉοΈ How to start

  1. ν”„λ‘œμ νŠΈλ₯Ό ν΄λ‘ ν•©λ‹ˆλ‹€.

    $ git clone https://github.com/kakao-tech-campus-2nd-step3/Team13_BE.git
    
  2. Temp13_BE/src/resources νŒŒμΌμ— application-secret.yml을 λ„£μ–΄μ€λ‹ˆλ‹€.

    $ cd Team13_BE/src/resources                        # 디렉토리 이동
    $ vi application-seceret.yml                       # application-secret.yml 파일 μˆ˜μ • 및 μ €μž₯ μ§„ν–‰ν•˜κΈ°
    

    λ‹€μŒκ³Ό 같은 ꡬ쑰에 ν‚€ 값듀을 κΌ­ λ„£μ–΄μ£ΌκΈ°!! (단, port의 경우 localκ³Ό 배포 μ„œλ²„μ— μ„€μ •λ˜λŠ” 값이 λ‹€λ¦…λ‹ˆλ‹€)

      data: 
          redis:
              port: # redis port
              host: # redis host
      datasoruce:
          url: # mysql rds url
          username: # mysql username
          password: # mysql password 
          driver-class-name: # mysql driver class name
      secret:  # jwt secret key
      line:
        channelAccessToken: # line channel access token
        channelSecret: # line channel secret
      aws:
          accessKey: # aws access key
          secretKey: # aws secret key
          region: # aws region
      openai: 
          apiKey: # openai api key
      naver:
          api-url: # naver clova api url
          secret-key: # naver clova secret key
      ```
    
    
  3. 2.의 방법과 λ™μΌν•˜κ²Œ ν…ŒμŠ€νŠΈ ν™˜κ²½μ— λ§žλŠ” application-test.yml도 λ„£μ–΄μ€λ‹ˆλ‹€.

  4. ci/cd ν˜Ήμ€ scriptλ₯Ό 톡해 배포λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.

About

πŸ‘¨β€πŸ‘©β€πŸ‘¦λ³΄ν˜ΈμžλŠ” κ°€μ‘±μ˜ μƒνƒœλ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ, πŸ‘©β€βš•οΈμš”μ–‘λ³΄ν˜Έμ‚¬λŠ” 손쉽고 κ°„νŽΈν•˜κ²Œ κΈ°λ‘ν•˜λŠ” "λŒλ΄„λ‹€λ¦¬"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages