Dự án Cherry được chia thành 4 giai đoạn phát triển (phases) để quản lý tốt hơn quá trình phát triển, kiểm thử và triển khai.
- Phát triển từng bước, dễ kiểm soát
- Mỗi phase có thể build và deploy độc lập
- Dễ dàng kiểm thử và demo
- Phù hợp cho môn Kiểm thử phần mềm
| Giai đoạn | Mục tiêu | Services | Docker Tag | Git Branch |
|---|---|---|---|---|
| Phase 1 | Quản lý sản phẩm | ProductAPI + Database | v1.x-phase1 |
phase1-product-management |
| Phase 2 | Giỏ hàng & Mã giảm giá | Phase 1 + CouponAPI + ShoppingCartAPI | v2.x-phase2 |
phase2-cart-coupons |
| Phase 3 | Xác thực & Đặt hàng | Phase 2 + AuthAPI + OrderAPI | v3.x-phase3 |
phase3-auth-orders |
| Phase 4 | Hệ thống hoàn chỉnh | All services + Gateway + Web | v4.x-phase4 |
phase4-complete-system |
FastFoodOrder/
├── Cherry.Services.AuthAPI/
├── Cherry.Services.ProductAPI/
├── Cherry.Services.CouponAPI/
├── Cherry.Services.ShoppingCartAPI/
├── Cherry.Services.OrderAPI/
├── Cherry.Services.EmailAPI/
├── Cherry.Services.RewardAPI/
├── Cherry.GatewaySolution/
├── Cherry.Web/
├── docker/
│ └── phases/
│ ├── docker-compose.phase1.yml
│ ├── docker-compose.phase2.yml
│ ├── docker-compose.phase3.yml
│ └── docker-compose.phase4.yml
├── scripts/
│ ├── build-phase.sh
│ ├── run-phase.sh
│ ├── stop-phase.sh
│ ├── run-tests.sh
│ └── deploy-phase.sh
├── .github/
│ └── workflows/
│ ├── phase1-ci.yml
│ ├── phase2-ci.yml
│ ├── phase3-ci.yml
│ └── phase4-ci.yml
└── docs/
└── phases/
├── phase1/
├── phase2/
├── phase3/
└── phase4/
./scripts/build-phase.sh <phase_number> <version>
# Ví dụ:
./scripts/build-phase.sh 1 v1.0./scripts/run-phase.sh <phase_number>
# Ví dụ:
./scripts/run-phase.sh 1./scripts/run-tests.sh <phase_number> [test_type]
# Ví dụ:
./scripts/run-tests.sh 1 unit
./scripts/run-tests.sh 2 all./scripts/stop-phase.sh <phase_number>
# Ví dụ:
./scripts/stop-phase.sh 1./scripts/deploy-phase.sh <phase_number> <version> [environment]
# Ví dụ:
./scripts/deploy-phase.sh 1 v1.0 production-
Tạo branch mới
git checkout -b phase1-product-management
-
Phát triển features
- Viết code
- Viết tests
- Commit thường xuyên
-
Build và test local
./scripts/build-phase.sh 1 v1.0-beta ./scripts/run-tests.sh 1 all ./scripts/run-phase.sh 1
-
Push lên GitHub
git push origin phase1-product-management
-
CI/CD tự động chạy
- GitHub Actions sẽ build
- Chạy tests
- Build Docker images
-
Merge vào main và tag
git checkout main git merge phase1-product-management git tag -a v1.0-phase1 -m "Phase 1: Product Management completed" git push origin main git push origin v1.0-phase1
- Unit Tests: ProductService CRUD operations
- Integration Tests: Product API endpoints + Database
- Coverage Target: ≥ 70%
- Unit Tests: Cart logic, Coupon validation
- Integration Tests: Cart + Coupon workflow
- Coverage Target: ≥ 75%
- Unit Tests: JWT, Password hashing, Order creation
- Integration Tests: Auth flow, Order processing
- Security Tests: SQL injection, XSS, CSRF
- Coverage Target: ≥ 80%
- Unit Tests: All services
- Integration Tests: Service-to-service communication
- E2E Tests: Complete user journeys
- Performance Tests: Load testing
- Coverage Target: ≥ 80%
docker-compose -f docker/phases/docker-compose.phase1.yml builddocker-compose -f docker/phases/docker-compose.phase1.yml up -ddocker-compose -f docker/phases/docker-compose.phase1.yml logs -fdocker-compose -f docker/phases/docker-compose.phase1.yml down
docker-compose -f docker/phases/docker-compose.phase1.yml down -v # Xóa cả volumesphase1-product-managementphase2-cart-couponsphase3-auth-ordersphase4-complete-system
v1.0-phase1,v1.1-phase1v2.0-phase2,v2.1-phase2v3.0-phase3,v3.1-phase3v4.0-phase4,v4.1-phase4
feat: add Product CRUD API
test: add unit tests for ProductService
docker: update Dockerfile for Phase 1
docs: add Phase 1 documentation
fix: resolve Product API bug
# Kiểm tra process đang dùng port
lsof -i :5002
# Dừng tất cả containers
docker-compose -f docker/phases/docker-compose.phase1.yml down# Kiểm tra database đã chạy chưa
docker ps | grep cherry-db
# Restart database
docker-compose -f docker/phases/docker-compose.phase1.yml restart cherry-db# Xóa build cache
docker builder prune
# Build lại từ đầu
docker-compose -f docker/phases/docker-compose.phase1.yml build --no-cache- Phase 1 Documentation
- Phase 2 Documentation
- Phase 3 Documentation
- Phase 4 Documentation
- Testing Guidelines
- Deployment Guide
- Luôn chạy tests trước khi commit
- Sử dụng Docker volumes cho development để tránh mất data
- Commit nhỏ, commit thường xuyên
- Viết commit message rõ ràng
- Document mọi thứ trong code comments
- Review code trước khi merge
Nếu gặp vấn đề, vui lòng:
- Kiểm tra logs:
docker-compose logs - Kiểm tra GitHub Issues
- Liên hệ team lead
Happy Coding! 🚀