Skip to content

πŸ”₯ 3일 μ „νˆ¬λ ₯ μΈ‘μ •κΈ°

License

Notifications You must be signed in to change notification settings

HongJungWan/commerce-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

commerce-system


μ‹€ν–‰ 방법

  1. compose.yml 파일이 μ‘΄μž¬ν•˜λŠ” 경둜둜 μ΄λ™ν•©λ‹ˆλ‹€.

  2. docker-compose up --build -d λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

  3. Docker Desktopμ—μ„œ μ•„λž˜ 이미지와 같이 μ»¨ν…Œμ΄λ„ˆκ°€ 잘 μ‹€ν–‰ 쀑인지 ν™•μΈν•©λ‹ˆλ‹€.




ν…ŒμŠ€νŠΈ μ½”λ“œ μ‹€ν–‰ μ‹œν‚€κΈ° (Windows Powershell κΈ°μ€€)

πŸ“Œ λͺ¨λ“  ν…ŒμŠ€νŠΈ μ½”λ“œ 확인 λͺ…λ Ήμ–΄

go test ./internal/...



πŸ“Œ μ„±κ³΅ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œ 확인 λͺ…λ Ήμ–΄

go test ./internal/... -json | Select-String -Pattern '"Action":"pass"' | Measure-Object



πŸ“Œ μ‹€νŒ¨ν•œ ν…ŒμŠ€νŠΈ μ½”λ“œ 확인 λͺ…λ Ήμ–΄

go test ./internal/... -json | Select-String -Pattern '"Action":"fail"' | Measure-Object




API Endpoint

HTTP Method URI Description Authentication Authorization ETC
GET /api/health μ„œλΉ„μŠ€ μƒνƒœ 확인 ❌ (No) ❌ (No)
POST /api/login μ‚¬μš©μž 둜그인 ❌ (No) ❌ (No)
POST /api/members νšŒμ› κ°€μž… ❌ (No) ❌ (No)
GET /api/members/me λ‚΄ 정보 쑰회 βœ… (Yes) ❌ (No)
PUT /api/members/me λ‚΄ 정보 μˆ˜μ • βœ… (Yes) ❌ (No)
DELETE /api/members/me νšŒμ› νƒˆν‡΄ βœ… (Yes) ❌ (No)
GET /api/members νšŒμ› λͺ©λ‘ 쑰회 βœ… (Yes) βœ… (Yes) κΆŒν•œ λ³€κ²½ ν›„, 재 둜그인 ν•„μš”
GET /api/members/stats νšŒμ› 톡계 쑰회 βœ… (Yes) βœ… (Yes) κΆŒν•œ λ³€κ²½ ν›„, 재 둜그인 ν•„μš”
GET /api/products μƒν’ˆ λͺ©λ‘ 쑰회 βœ… (Yes) ❌ (No)
POST /api/products μƒν’ˆ 생성 βœ… (Yes) βœ… (Yes) κΆŒν•œ λ³€κ²½ ν›„, 재 둜그인 ν•„μš”
PUT /api/products/:product_number/stock μƒν’ˆ 재고 μˆ˜μ • βœ… (Yes) βœ… (Yes) κΆŒν•œ λ³€κ²½ ν›„, 재 둜그인 ν•„μš”
DELETE /api/products/:product_number μƒν’ˆ μ‚­μ œ βœ… (Yes) βœ… (Yes) κΆŒν•œ λ³€κ²½ ν›„, 재 둜그인 ν•„μš”
POST /api/orders μ£Όλ¬Έ 생성 βœ… (Yes) ❌ (No)
GET /api/orders/me λ‚΄ μ£Όλ¬Έ 쑰회 βœ… (Yes) ❌ (No)
PUT /api/orders/:order_number/cancel μ£Όλ¬Έ μ·¨μ†Œ βœ… (Yes) ❌ (No)
GET /api/orders/stats μ£Όλ¬Έ 톡계 쑰회 βœ… (Yes) βœ… (Yes) κΆŒν•œ λ³€κ²½ ν›„, 재 둜그인 ν•„μš”




Swagger ν…ŒμŠ€νŠΈ

swag init

go-server μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ 확인 ν›„, `http://localhost:3031/docs/index.html` μ ‘κ·Ό



인증이 ν•„μš”ν•œ κΈ°λŠ₯을 ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ Swagger 우츑 상단 Authorize λ²„νŠΌμ„ 클릭해 둜그인 ν›„, λ°œκΈ‰λ°›μ€ 토근을 Bearer Token ν˜•μ‹μœΌλ‘œ μž…λ ₯ν•©λ‹ˆλ‹€.







Application Server Architecture

Application Server Architecture

πŸ“Œ μ°Έκ³  Link




폴더 ꡬ쑰

4개의 핡심 도메인 계측이 μžˆμŠ΅λ‹ˆλ‹€.

  • Models Layer
  • Infrastructure Layer
  • Usecase Layer
  • Controller Layer

β”œβ”€β”€ database
β”œβ”€β”€ deploy
β”œβ”€β”€ docs
β”‚   β”œβ”€β”€ docs.go
β”‚   β”œβ”€β”€ swagger.json
β”‚   └── swagger.yaml
β”‚
β”œβ”€β”€ internal
β”‚   β”œβ”€β”€ domain
β”‚   β”‚   │── repository (interface)
β”‚   β”‚   β”‚   │── member_repository.go
β”‚   β”‚   β”‚
β”‚   β”‚   │── member.go
β”‚   β”‚   │── member_test.go
β”‚   β”‚   │── ...
β”‚   β”‚
β”‚   β”œβ”€β”€ infrastructure
β”‚   β”‚   β”œβ”€β”€ configs
β”‚   β”‚   β”œβ”€β”€ repository (impl)
β”‚   β”‚   β”‚   │── member_repository_impl.go
β”‚   β”‚   β”‚
β”‚   β”‚   └── router
β”‚   β”‚
β”‚   β”œβ”€β”€ interfaces
β”‚   β”‚   β”œβ”€β”€ controller
β”‚   β”‚   β”œβ”€β”€ dto
β”‚   β”‚   └── middleware
β”‚   β”‚
β”‚   └── usecases
β”‚
β”œβ”€β”€ test
β”‚   └── fixtures
β”‚
β”œβ”€β”€ compose.yml
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ go.mod




ERD(Entity Relationship Diagram)




Git 컀밋 λ©”μ‹œμ§€ κ·œμΉ™

Tag Description
feat μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
fix 버그λ₯Ό μˆ˜μ •ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
refactor μ½”λ“œ λ¦¬νŒ©ν† λ§ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
style μ½”λ“œ ν˜•μ‹, μ •λ ¬, 주석 λ“±μ˜ λ³€κ²½(λ™μž‘μ— 영ν–₯을 μ£ΌλŠ” μ½”λ“œ λ³€κ²½ μ—†μŒ)ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
test ν…ŒμŠ€νŠΈ μΆ”κ°€, ν…ŒμŠ€νŠΈ λ¦¬νŒ©ν† λ§(μ œν’ˆ μ½”λ“œ μˆ˜μ • μ—†μŒ, ν…ŒμŠ€νŠΈ μ½”λ“œμ— κ΄€λ ¨λœ λͺ¨λ“  변경에 ν•΄λ‹Ή)ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
docs λ¬Έμ„œλ₯Ό μˆ˜μ •(μ œν’ˆ μ½”λ“œ μˆ˜μ • μ—†μŒ)ν•œ 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.
chore λΉŒλ“œ 업무 μˆ˜μ •, νŒ¨ν‚€μ§€ λ§€λ‹ˆμ € μ„€μ • λ“± μœ„μ— ν•΄λ‹Ήλ˜μ§€ μ•ŠλŠ” λͺ¨λ“  λ³€κ²½(μ œν’ˆ μ½”λ“œ μˆ˜μ • μ—†μŒ)일 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.