Skip to content

common207/BackEnd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

120 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Smart Locker System ๐Ÿ”

๋กœ๋ด‡์„ ํ™œ์šฉํ•œ ์ž๋™ํ™”๋œ ๋ฌผํ’ˆ ๋ณด๊ด€/์ˆ˜๋ น ์‹œ์Šคํ…œ

๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์Šค๋งˆํŠธ ๋ผ์ปค ์‹œ์Šคํ…œ์€ ๋กœ๋ด‡์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌผํ’ˆ์˜ ๋ณด๊ด€๊ณผ ์ˆ˜๋ น์„ ์ž๋™ํ™”ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๋Œ€๊ธฐ์—ด ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ž‘์—…์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋กœ๋ด‡ ์ œ์–ด ์‹œ์Šคํ…œ๊ณผ์˜ ์—ฐ๋™์„ ํ†ตํ•ด ์ž๋™ํ™”๋œ ๋ฌผํ’ˆ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ

Spring Boot PostgreSQL Docker GitHub Actions

๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

์ฃผ์š” ์ปดํฌ๋„ŒํŠธ

  1. API ์„œ๋ฒ„ (Spring Boot)

    • REST API ์ œ๊ณต
    • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
    • ์ž‘์—… ๋Œ€๊ธฐ์—ด ๊ด€๋ฆฌ
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (PostgreSQL)

    • ๋ฌผํ’ˆ ๋ณด๊ด€ ์ •๋ณด
    • ์‚ฌ์šฉ์ž ์ •๋ณด
    • ๋กœ๋ด‡ ์ƒํƒœ ๊ด€๋ฆฌ
    • ์ž‘์—… ๋Œ€๊ธฐ์—ด ๊ด€๋ฆฌ
  3. ๋กœ๋ด‡ ์ œ์–ด ์‹œ์Šคํ…œ

    • HTTP ๊ธฐ๋ฐ˜ ํ†ต์‹  (URL: http://70.12.245.25:5001/rasp)
    • ์‹ค์‹œ๊ฐ„ ๋กœ๋ด‡ ์ƒํƒœ ๊ด€๋ฆฌ

๐Ÿ’พ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

ํ•ต์‹ฌ ํ…Œ์ด๋ธ”

  1. locker_usage_logs

    • ๋ณด๊ด€/์ˆ˜๋ น ์ด๋ ฅ ๊ด€๋ฆฌ
    • ๋กœ๋ด‡ ์ž‘์—… ์ถ”์ 
    • ์‹œ๊ฐ„๋ณ„ ์‚ฌ์šฉ ํ˜„ํ™ฉ
  2. lockers

    • ๋ณด๊ด€ํ•จ ์ƒํƒœ ๊ด€๋ฆฌ
    • ์œ„์น˜ ์ •๋ณด ์—ฐ๋™
    • ํ† ํฐ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด
  3. robots

    • ๋กœ๋ด‡ ์ƒํƒœ ๊ด€๋ฆฌ (๋Œ€๊ธฐ์ค‘/์‚ฌ์šฉ์ค‘/์ˆ˜๋ฆฌ์ค‘)
    • ์ž‘์—… ์ด๋ ฅ ์ถ”์ 
    • ์œ ์ง€๋ณด์ˆ˜ ์ผ์ • ๊ด€๋ฆฌ
  4. locker_queue

    • ์ž‘์—… ๋Œ€๊ธฐ์—ด ๊ด€๋ฆฌ
    • ์š”์ฒญ ์œ ํ˜• ๊ตฌ๋ถ„ (๋ณด๊ด€/์ˆ˜๋ น)
    • FIFO ๋ฐฉ์‹์˜ ์ž‘์—… ์ฒ˜๋ฆฌ

๋ณด์กฐ ํ…Œ์ด๋ธ”

  • locker_status: ๋ณด๊ด€ํ•จ ์ƒํƒœ ์ฝ”๋“œ (์‚ฌ์šฉ๊ฐ€๋Šฅ/์‚ฌ์šฉ์ค‘/์ˆ˜๋ฆฌ์ค‘)
  • locker_locations: ์œ„์น˜ ์ •๋ณด (A/B/C)
  • access_tokens: ์ธ์ฆ ํ† ํฐ (6์ž๋ฆฌ ๋‚œ์ˆ˜)
  • robot_status: ๋กœ๋ด‡ ์ƒํƒœ ์ฝ”๋“œ
  • users: ์‚ฌ์šฉ์ž ์ •๋ณด (์ „ํ™”๋ฒˆํ˜ธ)

๐Ÿ“ฆ ์ž‘์—… ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค

๋ฌผํ’ˆ ๋ณด๊ด€ ํ”„๋กœ์„ธ์Šค

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ด€ ์š”์ฒญ
  2. ํ† ํฐ ์ƒ์„ฑ ๋ฐ ๋ฐœ๊ธ‰
  3. LockerQueue์— ๋ณด๊ด€ ์ž‘์—… ๋“ฑ๋ก
  4. RobotTaskService๊ฐ€ ๋Œ€๊ธฐ์—ด์—์„œ ์ž‘์—… ์ฒ˜๋ฆฌ
  5. ๋กœ๋ด‡์ด ๋ฌผํ’ˆ ๋ณด๊ด€ ์ˆ˜ํ–‰

๋ฌผํ’ˆ ์ˆ˜๋ น ํ”„๋กœ์„ธ์Šค

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํ† ํฐ๊ณผ ํ•จ๊ป˜ ์ˆ˜๋ น ์š”์ฒญ
  2. ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
  3. LockerQueue์— ์ˆ˜๋ น ์ž‘์—… ๋“ฑ๋ก
  4. RobotTaskService๊ฐ€ ๋Œ€๊ธฐ์—ด์—์„œ ์ž‘์—… ์ฒ˜๋ฆฌ
  5. ๋กœ๋ด‡์ด ๋ฌผํ’ˆ ์ „๋‹ฌ ์ˆ˜ํ–‰

๐ŸŒ API ๋ช…์„ธ

1. ๋ฌผํ’ˆ ๋ณด๊ด€ API

POST /api/locker/store

Request Body:

{
    "lockerId": "integer",
    "phoneNumber": "string"
}

Response:

{
    "lockerId": "integer",
    "tokenValue": "integer",
    "message": "string"
}

2. ๋ฌผํ’ˆ ์ˆ˜๋ น API

POST /api/locker/retrieve

Request Body:

{
    "lockerId": "integer",
    "tokenValue": "integer"
}

Response:

{
    "lockerId": "integer",
    "message": "string"
}

3. ๋กœ๋ด‡ ์ž‘์—… ์ฒ˜๋ฆฌ API

POST /api/robot-tasks/process

Response:

{
    "success": "boolean",
    "message": "string"
}

๐Ÿš€ ํ”„๋กœ์ ํŠธ ์‹คํ–‰

๋กœ์ปฌ ํ™˜๊ฒฝ

# PostgreSQL ์‹คํ–‰
docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=1 postgres:13

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
./mvnw spring-boot:run -Dspring.profiles.active=default

Docker ํ™˜๊ฒฝ

# Docker Compose๋กœ ์‹คํ–‰
docker-compose up -d

๐Ÿ”„ CI/CD ํŒŒ์ดํ”„๋ผ์ธ

GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ

  1. PR ๊ฒ€์ฆ (Pull Request)

    on: pull_request:
      branches: [ main ]
    • JDK 17 ์„ค์ •
    • Maven ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ
    • ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์ฆ
  2. ๋ฐฐํฌ ์ž๋™ํ™” (Push to Main)

    on: push:
      branches: [ "main" ]
    • EC2 ์ž๋™ ๋ฐฐํฌ
    • Docker ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ
    • ๋กค๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜

๐Ÿ’ก ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๋ฌผํ’ˆ ์ž๋™ ๋ณด๊ด€/์ˆ˜๋ น
  • ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ
  • ๋Œ€๊ธฐ์—ด ๊ธฐ๋ฐ˜ ์ž‘์—… ๊ด€๋ฆฌ
  • ๋กœ๋ด‡ ์ž๋™ํ™” ์ œ์–ด
  • ์‹ค์‹œ๊ฐ„ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง

โš ๏ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • NotFoundException: ๋ฆฌ์†Œ์Šค ๋ฏธ์กด์žฌ
  • UnauthorizedException: ์ธ์ฆ ์‹คํŒจ
  • RobotControlException: ๋กœ๋ด‡ ์ œ์–ด ์‹คํŒจ
  • InvalidTokenException: ์ž˜๋ชป๋œ ํ† ํฐ
  • NoAvailableRobotException: ๊ฐ€์šฉ ๋กœ๋ด‡ ๋ถ€์žฌ

๐Ÿ“„ ๋ผ์ด์„ ์Šค

Copyright ยฉ 2024 SSAFY A207

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors