Skip to content

twodo0/RentGuard-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CarGuard-backend

์ฐจ๋Ÿ‰ ๋Œ€์—ฌ/๋ฐ˜๋‚ฉ ๊ณผ์ •์—์„œ ์ฐจ๋Ÿ‰ ์†์ƒ์„ ์ž๋™์œผ๋กœ ํƒ์ง€ํ•˜๊ณ , ๋ Œํƒˆ ์„ธ์…˜ ๋‹จ์œ„๋กœ ์†์ƒ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•˜๋Š” Spring Boot ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. โ€ข ์ฐจ๋Ÿ‰ ๋ Œํƒˆ ์„ธ์…˜ ๊ด€๋ฆฌ โ€ข ๋‹จ์ผ / 4์žฅ ๋ฐฐ์น˜ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ โ€ข YOLO โ†’ ViT ๊ธฐ๋ฐ˜ ์†์ƒ ํƒ์ง€ (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ) โ€ข ๋ ŒํŠธ ์‹œ์ž‘/๋ฐ˜๋‚ฉ ์‹œ ์†์ƒ ์š”์•ฝ ๋ฐ ์ถ”๊ฐ€ ์†์ƒ ๊ณ„์‚ฐ

โธป

  1. ์ฃผ์š” ๊ธฐ๋Šฅ

1.1 ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ โ€ข POST /api/images โ€ข ๋‹จ์ผ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ โ€ข MinIO์— ์ €์žฅ ํ›„ imageId, rawUrl, width, height ๋ฐ˜ํ™˜ โ€ข POST /api/images/batch โ€ข ์ตœ๋Œ€ 4์žฅ ์ด๋ฏธ์ง€ ๋ฐฐ์น˜ ์—…๋กœ๋“œ โ€ข ์š”์ฒญ: โ€ข files: ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ (1~4์žฅ) โ€ข slots: ์ดฌ์˜ ์œ„์น˜ (FRONT, REAR, LEFT, RIGHT) โ€ข ์‘๋‹ต: โ€ข images: [{ slot, imageId }] โ€ข ์ดํ›„ ๋ ŒํŠธ ์‹œ์ž‘/์ข…๋ฃŒ ๋ฐฐ์น˜ API์—์„œ ์‚ฌ์šฉ

โธป

1.2 ๋‹จ์ผ ์ด๋ฏธ์ง€ ์†์ƒ ํƒ์ง€ (๋น„๋™๊ธฐ) โ€ข POST /api/predictions/by-image/{imageId} โ€ข ๋‹จ์ผ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์™ธ๋ถ€ FastAPI ์„œ๋ฒ„๋กœ ์†์ƒ ํƒ์ง€ ์š”์ฒญ โ€ข ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ: โ€ข yoloThreshold (์„ ํƒ) โ€ข ์‘๋‹ต: โ€ข jobId, status๋ฅผ ํฌํ•จํ•œ ๋น„๋™๊ธฐ ์ž‘์—… ์ •๋ณด โ€ข GET /api/predictions/jobs/{jobId} โ€ข ์†์ƒ ํƒ์ง€ ์ž‘์—… ์ƒํƒœ ์กฐํšŒ โ€ข ์‘๋‹ต: โ€ข ์ง„ํ–‰ ์ค‘: 202 Accepted โ€ข ์‹คํŒจ: 422 Unprocessable Entity โ€ข ์™„๋ฃŒ: 200 OK + ํƒ์ง€ ๊ฒฐ๊ณผ โ€ข bounding box ์ขŒํ‘œ โ€ข ์†์ƒ ํด๋ž˜์Šค๋ณ„ ํ™•๋ฅ  โ€ข ์ด๋ฏธ์ง€ ์›๋ณธ ํฌ๊ธฐ ์ •๋ณด

โธป

1.3 ๋ ŒํŠธ ์‹œ์ž‘ / ์ข…๋ฃŒ (4์žฅ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ)

๋ ŒํŠธ ์‹œ์ž‘ ๋ฐ ๋ฐ˜๋‚ฉ ์‹œ ์•ž/๋’ค/์ขŒ/์šฐ 4์žฅ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ธ์…˜ ๋‹จ์œ„์˜ ์†์ƒ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1.3.1 ๋ ŒํŠธ ์‹œ์ž‘ โ€ข POST /api/rentals/batch/start/upload โ€ข ์š”์ฒญ: โ€ข vehicleNo โ€ข yoloThreshold โ€ข images: [{ slot, imageId }] โ€ข ์ฒ˜๋ฆฌ: โ€ข ๊ฐ ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ์†์ƒ ํƒ์ง€ ์ˆ˜ํ–‰ โ€ข ์†์ƒ ํƒ€์ž…๋ณ„ ๊ฐœ์ˆ˜ ์ง‘๊ณ„ (startSummary) โ€ข ์„ธ์…˜ ์ „์ฒด ์†์ƒ ๊ฐœ์ˆ˜(startTotal) ๊ณ„์‚ฐ โ€ข ๋ Œํƒˆ ์„ธ์…˜ ์ƒ์„ฑ (IN_RENT) โ€ข ์‘๋‹ต: โ€ข rentalId โ€ข startSummary โ€ข startTotal

1.3.2 ๋ ŒํŠธ ์ข…๋ฃŒ (๋ฐ˜๋‚ฉ) โ€ข POST /api/rentals/batch/end/upload โ€ข ์š”์ฒญ: โ€ข rentalId โ€ข vehicleNo โ€ข yoloThreshold โ€ข images: [{ slot, imageId }] โ€ข ์ฒ˜๋ฆฌ: โ€ข ๋ฐ˜๋‚ฉ ์‹œ ์†์ƒ ์š”์•ฝ(finishSummary) ๊ณ„์‚ฐ โ€ข ๋ ŒํŠธ ์‹œ์ž‘ ๋Œ€๋น„ ์ฆ๊ฐ€๋ถ„(deltaSummary) ์‚ฐ์ถœ โ€ข ์ถ”๊ฐ€ ์†์ƒ ๊ฐœ์ˆ˜(newDamageTotal) ๊ณ„์‚ฐ โ€ข ์„ธ์…˜ ์ƒํƒœ RETURNED๋กœ ๋ณ€๊ฒฝ โ€ข ์‘๋‹ต: โ€ข finishSummary โ€ข deltaSummary โ€ข newDamageTotal

โธป

1.4 ๋ Œํƒˆ ์„ธ์…˜ ์กฐํšŒ โ€ข GET /api/rentals/recent โ€ข ์ตœ๊ทผ ๋ Œํƒˆ ์„ธ์…˜ ๋ชฉ๋ก ์กฐํšŒ (ํŽ˜์ด์ง€๋„ค์ด์…˜) โ€ข ์ฃผ์š” ํ•„๋“œ: โ€ข rentalId, vehicleNo, status โ€ข startedAt, finishedAt โ€ข newDamageTotal โ€ข GET /api/rentals/{rentalId} โ€ข ๋‹จ์ผ ๋ Œํƒˆ ์„ธ์…˜ ์ƒ์„ธ ์กฐํšŒ โ€ข ํฌํ•จ ์ •๋ณด: โ€ข ๋ ŒํŠธ ์‹œ์ž‘/์ข…๋ฃŒ ์†์ƒ ์š”์•ฝ โ€ข ์ถ”๊ฐ€ ์†์ƒ ๊ฐœ์ˆ˜ โ€ข ์ด๋ฏธ์ง€๋ณ„ ํƒ์ง€ ๊ฒฐ๊ณผ (bbox + ์†์ƒ ํ™•๋ฅ )

โธป

  1. ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

2.1 ๊ตฌ์„ฑ ์š”์†Œ โ€ข Frontend: React (๋ณ„๋„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ) โ€ข Backend: Spring Boot โ€ข Inference: FastAPI + YOLO + ViT (๋ณ„๋„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ) โ€ข Storage: MinIO (S3 ํ˜ธํ™˜) โ€ข Database: MySQL

2.2 ์ฒ˜๋ฆฌ ํ๋ฆ„ 1. ํ”„๋ก ํŠธ์—์„œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ โ†’ Spring โ†’ MinIO ์ €์žฅ 2. ํ•„์š” ์‹œ ๋‹จ์ผ ์ด๋ฏธ์ง€ ์†์ƒ ํƒ์ง€ ์š”์ฒญ (๋น„๋™๊ธฐ) 3. ๋ ŒํŠธ ์‹œ์ž‘: โ€ข 4์žฅ ์ด๋ฏธ์ง€ ๊ธฐ์ค€ ์†์ƒ ์š”์•ฝ ์ €์žฅ 4. ๋ ŒํŠธ ์ข…๋ฃŒ: โ€ข ์‹œ์ž‘ ๋Œ€๋น„ ์ถ”๊ฐ€ ์†์ƒ ๊ณ„์‚ฐ 5. ๋ Œํƒˆ ์„ธ์…˜ ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ์กฐํšŒ

โธป

  1. ๊ธฐ์ˆ  ์Šคํƒ โ€ข Java 17 โ€ข Spring Boot โ€ข Spring Web โ€ข Spring Data JPA โ€ข MySQL โ€ข MinIO (S3 ํ˜ธํ™˜ ์Šคํ† ๋ฆฌ์ง€) โ€ข FastAPI (์™ธ๋ถ€ ์ถ”๋ก  ์„œ๋ฒ„)

โธป

  1. ๋„๋ฉ”์ธ ๋ชจ๋ธ ์š”์•ฝ

RentalSession โ€ข ์ฐจ๋Ÿ‰ ๋ Œํƒˆ ๋‹จ์œ„ ์„ธ์…˜ โ€ข ์ƒํƒœ: IN_RENT, RETURNED โ€ข ์†์ƒ ์š”์•ฝ ์ •๋ณด ๋ฐ ์ด๋ฏธ์ง€ ์—ฐ๊ด€ ๊ด€๊ณ„ ๋ณด์œ 

RentalImage โ€ข ๋ ŒํŠธ ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ ์ดฌ์˜๋œ ์ด๋ฏธ์ง€ โ€ข ์œ„์น˜(FRONT, REAR, LEFT, RIGHT) ๊ธฐ์ค€ ๊ด€๋ฆฌ โ€ข ์†์ƒ ํƒ์ง€ ๊ฒฐ๊ณผ์™€ ์—ฐ๊ฒฐ

Prediction / PredictionJob โ€ข ์ด๋ฏธ์ง€ ์†์ƒ ํƒ์ง€ ๊ฒฐ๊ณผ ๋ฐ ๋น„๋™๊ธฐ ์ž‘์—… ๊ด€๋ฆฌ โ€ข bounding box, ์†์ƒ ํ™•๋ฅ  ์ •๋ณด ํฌํ•จ

๊ณตํ†ต Enum โ€ข DamageType: ์†์ƒ ์œ ํ˜• โ€ข RentalStatus: ์„ธ์…˜ ์ƒํƒœ โ€ข Phase: ๋ ŒํŠธ ์‹œ์ž‘/์ข…๋ฃŒ โ€ข ImageSlot: ์ดฌ์˜ ์œ„์น˜

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages