Skip to content

KnittingGirls/BackEnd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

73 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ› οΈ Knitting Girls Backend

Knitting Girls ν”„λ‘œμ νŠΈ 쀑 λ°±μ—”λ“œ(λͺ¨λΈ μ„œλ²„ API & CRUD API 및 μ„œλ²„) λͺ¨λ“ˆμ˜ μ‚¬μš©λ²•κ³Ό ꡬ쑰λ₯Ό μ •λ¦¬ν•œ READMEμž…λ‹ˆλ‹€.

Backend μ„œλ²„: http://43.201.186.153:8080
ML μ„œλ²„: http://43.201.186.153:8000


λͺ©μ°¨

  1. 리포지토리 κ°œμš”
  2. μ£Όμš” κΈ°λŠ₯
  3. μš”κ΅¬μ‚¬ν•­
  4. μ„€μΉ˜ 및 λΉŒλ“œ
  5. ML server μ½”λ“œ κ°œμš”
  6. BE Java 클래슀 κ°œμš”
  7. API μ‚¬μš© μ˜ˆμ‹œ
  8. DB μŠ€ν‚€λ§ˆ 및 덀프

리포지토리 κ°œμš”

  • κΈ°λŠ₯

    • 이미지 μ—…λ‘œλ“œ β†’ μ €μž₯ β†’ URL λ°˜ν™˜
    • κ²Œμ‹œκΈ€Β·λŒ“κΈ€Β·λΆλ§ˆν¬ CRUD
    • 카카였 OAuth2 기반 둜그인 β†’ JWT 토큰 λ°œκΈ‰
    • ν•΄μ‹œνƒœκ·Έ 검색, μž‘μ„±μžλ³„ 쑰회 λ“±
  • ꡬ성

    • backend/ : Spring Boot 기반 REST API μ„œλ²„
    • ml_server/ : Python FastAPI 기반 ML μ„œλ²„ (별도 배포)

μ£Όμš” κΈ°λŠ₯

  1. 인증(Authentication & Authorization)
  2. κ²Œμ‹œκΈ€(Post) 관리
  3. λŒ“κΈ€(Comment) 관리
  4. 뢁마크(Bookmark) & μ’‹μ•„μš”(Like) ν† κΈ€
  5. ν•΄μ‹œνƒœκ·Έ 검색 & μž‘μ„±μžλ³„ κ²Œμ‹œκΈ€ 쑰회
  6. λͺ¨λΈ μ„œλ²„ 연동 β†’ PDF λ„μ•ˆ 생성

μš”κ΅¬μ‚¬ν•­

  • Java β‰₯ 17
  • Spring Boot 2.5.x 이상
  • Maven λ˜λŠ” Gradle
  • MySQL 8.0 이상 (이미 μ„œλ²„μ— λ°°ν¬λ˜μ–΄ μžˆμœΌλ―€λ‘œ 별도 μ‹€ν–‰ λΆˆν•„μš”)
  • Python 3.8 이상 (이미 μ„œλ²„μ— λ°°ν¬λ˜μ–΄ μžˆμœΌλ―€λ‘œ 별도 μ‹€ν–‰ λΆˆν•„μš”)

μ„€μΉ˜ 및 λΉŒλ“œ

1) 리포지토리 클둠
git clone https://github.com/KnittingGirls/BackEnd.git

2) ν™˜κ²½ μ„€μ •
src/main/resources/application.properties 볡사 및
- MySQL 접속 정보(JDBC URL, μ‚¬μš©μž/λΉ„λ°€λ²ˆν˜Έ)
- JWT μ‹œν¬λ¦ΏΒ·ν† ν° 만료 μ‹œκ°„
- CORS ν—ˆμš© 도메인 λ“± μˆ˜μ •

best_model.pth, pascal.pth, lip.pth, atr.pthλŠ” ml_server ν•˜μœ„μ— 이동

# 3) 둜컬 μ‹€ν–‰ 방법 (ν…ŒμŠ€νŠΈμš©)
**주의: EC2 μ„œλ²„(43.201.186.153)에 이미 λ°°ν¬λ˜μ–΄ μžˆμœΌλ―€λ‘œ, 둜컬 μ‹€ν–‰ 없이 API 호좜만으둜 μΆ©λΆ„ν•©λ‹ˆλ‹€.**

1. λ°±μ—”λ“œ μ„œλ²„ μ‹€ν–‰
- IDE(IntelliJ λ“±)μ—μ„œ Application.java 파일 쒌츑의 ▢️ μ•„μ΄μ½˜ 클릭
- λ˜λŠ” gradle bootjar ν›„, ν„°λ―Έλ„μ—μ„œ java -jar build/libs/knitting-girls-0.0.1-SNAPSHOT.jar

2. λͺ¨λΈ μ„œλ²„ μ‹€ν–‰ (터미널)
cd ml_server
source venv/bin/activate
uvicorn final_model_server:app --host 0.0.0.0 --port 8000 --reload

ML server μ½”λ“œ κ°œμš”

ml_server/ 디렉터리에 ν¬ν•¨λœ μ£Όμš” 슀크립트 및 μ„œλ²„ μ½”λ“œ

final_model_server.py

  • FastAPI 기반 μ—”λ“œν¬μΈνŠΈ(/predict, /pdfs/{filename})
  • DeepLabV3+ λͺ¨λΈ 예츑 β†’ 마슀크 생성
  • SCHP(extractor) 호좜 β†’ νŒŒνŠΈλ³„ 아웃라인
  • fin_fin.py μ‹€ν–‰ β†’ PDF λ„μ•ˆ 생성
  • 처리 μ‹œκ°„ λ‘œκΉ… λ°˜ν™˜

model_server.py

  • ꡬ버전 FastAPI μ„œλ²„
  • patch_single_pdf.pyλ₯Ό μ΄μš©ν•΄ segmentation κ²°κ³Όλ₯Ό ν…μŠ€νŠΈ κ·Έλ¦¬λ“œ ν˜•νƒœ PDF둜 λ³€ν™˜

simple_extractor.py

  • SCHP(Self-Correction Human Parsing) λͺ¨λΈ 호좜 CLI
  • --dataset, --model-restore λ“± μ˜΅μ…˜μœΌλ‘œ λ‹€μ–‘ν•œ 데이터셋 지원
  • μž…λ ₯ 폴더 λ‚΄ λͺ¨λ“  이미지에 λŒ€ν•΄ νŒŒνŠΈλ³„ 마슀크(.png) 생성

fin_fin.py

  • DeepLab κ²°κ³Ό 이미지 + SCHP κ²°κ³Ό 이미지 β†’ dominant symbol μΆ”μΆœ
  • 심볼 νŒ¨ν„΄(symbol_patterns)으둜 λ³€ν™˜ β†’ matplotlib κ·Έλ¦¬λ“œμ— λ Œλ”λ§
  • κ²°κ³Ό front & sleeve νŽ˜μ΄μ§€λ₯Ό ν•˜λ‚˜μ˜ PDF둜 μ €μž₯

patch_single_pdf.py

  • RGB 라벨 이미지λ₯Ό 3Γ—3 문자 기호 νŒ¨ν„΄(symbol_patterns)으둜 λ³€ν™˜
  • matplotlib β†’ PDF 좜λ ₯ (model_server.py와 연동 μ‚¬μš©)

make_grid.py

  • λ”₯랩 & SCHP κ²°κ³Ό 이미지λ₯Ό μ„Έλ‘œλ‘œ 합쳐 λ‹¨μˆœ PDF μ €μž₯
  • κ°„λ‹¨ν•œ λΉ„κ΅μš© 초기 ν…ŒμŠ€νŠΈ 슀크립트

BE Java 클래슀 κ°œμš”

configuration

  • MultipartConfig
    파일 μ—…λ‘œλ“œ(μ΅œλŒ€ 크기, μž„μ‹œ μ €μž₯μ†Œ) μ„€μ •
  • SecurityConfig
    JWT ν•„ν„°, 인증·인가 μ •μ±… μ„€μ •
  • WebConfig
    CORS, λ©”μ‹œμ§€ λ³€ν™˜, 인터셉터 μ„€μ •

controller

  • AuthController
    • /api/auth/login (카카였 OAuth2 β†’ JWT λ°œκΈ‰)
  • PostController
    • /posts (κ²Œμ‹œκΈ€ CRUD, ν•΄μ‹œνƒœκ·ΈΒ·μž‘μ„±μžλ³„ 쑰회)
  • CommentController
    • /posts/{postId}/comment (λŒ“κΈ€ CRUD)
  • ImageController
    • /images/upload (MultipartFile μ €μž₯ β†’ URL λ°˜ν™˜)
  • ModelServerController
    • /predict (ML μ„œλ²„ 연동 β†’ PDF λ„μ•ˆ 생성)

dto

  • PostDto : content, hashtags
  • CommentDto : content
  • ImageDto : url

entity

  • User, Post, Comment, Image, Bookmark
    JPA @Entity 클래슀

repository

  • UserRepository, PostRepository, CommentRepository, ImageRepository, BookmarkRepository
    Spring Data JPA μΈν„°νŽ˜μ΄μŠ€

security

  • JwtTokenProvider
    JWT μƒμ„±Β·νŒŒμ‹±Β·μœ νš¨μ„± 검사 λ©”μ„œλ“œ

service

  • AuthService : 둜그인 둜직, μ‚¬μš©μž 쑰회 및 JWT 생성
  • PostService : κ²Œμ‹œκΈ€ CRUD, ν•΄μ‹œνƒœκ·Έ νŒŒμ‹±Β·κ²€μƒ‰
  • ImageService : 파일 μ €μž₯ 경둜 κ²°μ •, URL 생성

utils

  • MultipartInputStreamFileResource
    MultipartFile β†’ InputStreamResource λ³€ν™˜ μœ ν‹Έ

API μ‚¬μš© μ˜ˆμ‹œ (Postman / cURL)

Backend μ„œλ²„: http://43.201.186.153:8080
ML μ„œλ²„: http://43.201.186.153:8000

Method Path μ„€λͺ… μ˜ˆμ‹œ 호좜
GET /posts 전체 κ²Œμ‹œκΈ€ 쑰회 GET http://43.201.186.153:8080/posts
GET /posts/{postId} νŠΉμ • κ²Œμ‹œκΈ€ 쑰회 GET http://43.201.186.153:8080/posts/27
POST /posts?nickname={λ‹‰λ„€μž„} κ²Œμ‹œκΈ€ μž‘μ„± URL
POST http://43.201.186.153:8080/posts?nickname=이화연
Headers
Content-Type: multipart/form-data
Body (form-data)
- postDto (Text):
json<br> { "content": "κ²Œμ‹œκΈ€1", "hashtags": ["#tag"] }
- images (File)
- nickname (Text)
PUT /posts/{postId}?nickname={λ‹‰λ„€μž„} κ²Œμ‹œκΈ€ μˆ˜μ • URL
PUT http://43.201.186.153:8080/posts/13?nickname=이화연
Body (raw JSON)
json<br>{ "content": "κ²Œμ‹œκΈ€2", "hashtags": ["#tag2"] }
DELETE /posts/{postId}?nickname={λ‹‰λ„€μž„} κ²Œμ‹œκΈ€ μ‚­μ œ DELETE http://43.201.186.153:8080/posts/15?nickname=이화연
GET /posts/search?tag={μΈμ½”λ”©λœν•΄μ‹œνƒœκ·Έ} ν•΄μ‹œνƒœκ·Έ 검색 GET http://43.201.186.153:8080/posts/search?tag=%23JPA (%23= #)
GET /posts/user?nickname={λ‹‰λ„€μž„} μž‘μ„±μžλ³„ κ²Œμ‹œκΈ€ 쑰회 GET http://43.201.186.153:8080/posts/user?nickname=이화연
POST /posts/{postId}/comment?nickname={λ‹‰λ„€μž„}&content={λŒ“κΈ€} λŒ“κΈ€ μž‘μ„± POST http://43.201.186.153:8080/posts/1/comment?nickname=이화연&content=ν…ŒμŠ€νŠΈ
POST /posts/{postId}/bookmark?nickname={λ‹‰λ„€μž„} 뢁마크 ν† κΈ€ (등둝/ν•΄μ œ) POST http://43.201.186.153:8080/posts/5/bookmark?nickname=이화연
GET /posts/{postId}/like?nickname={λ‹‰λ„€μž„} μ’‹μ•„μš” ν† κΈ€ (쑰회 ν›„ ν† κΈ€) GET http://43.201.186.153:8080/posts/5/like?nickname=이화연
GET /posts/bookmarks?nickname={λ‹‰λ„€μž„} μ‚¬μš©μž 뢁마크 λͺ©λ‘ 쑰회 GET http://43.201.186.153:8080/posts/bookmarks?nickname=이화연
POST /predict (ML μ„œλ²„) 이미지 μ—…λ‘œλ“œ β†’ PDF λ„μ•ˆ 생성 URL
POST http://43.201.186.153:8000/predict
Headers
Content-Type: multipart/form-data
Body (form-data)
- file (File)
GET /pdfs/{filename}.pdf (ML μ„œλ²„) μƒμ„±λœ PDF λ‹€μš΄λ‘œλ“œ / 확인 GET http://43.201.186.153:8000/pdfs/'PDF파일λͺ….pdf'

DB μŠ€ν‚€λ§ˆ 및 덀프

ν˜„μž¬ MySQL μΈμŠ€ν„΄μŠ€λŠ” 이미 EC2(43.201.186.153)에 λ°°ν¬λ˜μ–΄ μžˆμ–΄ λ”°λ‘œ μ‹€ν–‰ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
ν•„μš” μ‹œ, μ•„λž˜ backend/db/ 디렉터리에 ν¬ν•¨λœ dump νŒŒμΌλ“€μ„ μ‚¬μš©ν•˜μ„Έμš”:

  • knitting_girls_users.sql

    μ‚¬μš©μž 정보(users ν…Œμ΄λΈ”) 덀프

  • knitting_girls_posts.sql

    κ²Œμ‹œκΈ€ 메타데이터(posts ν…Œμ΄λΈ”) 덀프

  • knitting_girls_post_hashtags.sql

    κ²Œμ‹œκΈ€β€“ν•΄μ‹œνƒœκ·Έ λ§€ν•‘(post_hashtags ν…Œμ΄λΈ”) 덀프

  • knitting_girls_post_image.sql

    κ²Œμ‹œκΈ€λ³„ 이미지 μ—°κ²°(post_image ν…Œμ΄λΈ”) 덀프

  • knitting_girls_post_likes.sql

    μ’‹μ•„μš” 기둝(post_likes ν…Œμ΄λΈ”) 덀프

  • knitting_girls_comments.sql

    λŒ“κΈ€ 정보(comments ν…Œμ΄λΈ”) 덀프

  • knitting_girls_images.sql

    μ—…λ‘œλ“œλœ 이미지 메타데이터(images ν…Œμ΄λΈ”) 덀프

  • knitting_girls_bookmarks.sql

    뢁마크 기둝(bookmarks ν…Œμ΄λΈ”) 덀프

  1. μŠ€ν‚€λ§ˆ 생성 (schema.sql)
    CREATE DATABASE IF NOT EXISTS knitting_girls;
    USE knitting_girls;
    -- users, posts, post_hashtags, post_image, post_likes, comments, images, bookmarks ν…Œμ΄λΈ” DDL…
    
  2. 덀프 Import
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_users.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_posts.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_post_hashtags.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_post_image.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_post_likes.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_comments.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_images.sql
    mysql -u <user> -p knitting_girls < backend/db/knitting_girls_bookmarks.sql
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published