Files
gaoandClaude 9c7dc6250b Initial commit: Robot project setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 07:24:45 +08:00

226 lines
6.5 KiB
Makefile

# 康养机器人项目Makefile
.PHONY: help setup clean test run-dev run-prod build deploy monitor
PYTHON := python3
DOCKER := docker
KUBECTL := kubectl
ENV ?= dev
# 默认目标
help:
@echo "康养机器人项目 Makefile 命令:"
@echo ""
@echo " setup - 初始化项目环境"
@echo " run-dev - 启动开发环境"
@echo " run-tests - 运行所有测试"
@echo " test-unit - 运行单元测试"
@echo " test-integration - 运行集成测试"
@echo " test-e2e - 运行端到端测试"
@echo " test-performance - 运行性能测试"
@echo " lint - 运行代码检查"
@echo " format - 格式化代码"
@echo " build - 构建Docker镜像"
@echo " deploy - 部署到Kubernetes"
@echo " monitor - 启动监控面板"
@echo " clean - 清理临时文件"
@echo " docs - 生成文档"
# 环境设置
setup:
@echo "初始化项目环境..."
@chmod +x scripts/setup.sh
@./scripts/setup.sh $(ENV)
# 开发环境
run-dev:
@echo "启动开发环境..."
@docker-compose -f infrastructure/docker/docker-compose.dev.yml up -d
@echo "等待服务启动..."
@sleep 10
@echo ""
@echo "服务已启动:"
@echo " - 健康监测服务: http://localhost:8001"
@echo " - 陪伴服务: http://localhost:8002"
@echo " - 康复训练服务: http://localhost:8003"
@echo " - API网关: http://localhost:8000"
@echo " - Web管理端: http://localhost:3000"
@echo " - Prometheus: http://localhost:9090"
@echo " - Grafana: http://localhost:3001"
# 测试相关
run-tests: test-unit test-integration
test-unit:
@echo "运行单元测试..."
@$(PYTHON) -m pytest tests/unit -v --cov=services --cov-report=html --cov-report=term
test-integration:
@echo "运行集成测试..."
@docker-compose -f infrastructure/docker/docker-compose.test.yml up -d
@$(PYTHON) -m pytest tests/integration -v
@docker-compose -f infrastructure/docker/docker-compose.test.yml down
test-e2e:
@echo "运行端到端测试..."
@npm run test:e2e --prefix frontend/web-admin
test-performance:
@echo "运行性能测试..."
@locust -f tests/performance/locustfile.py --headless -u 100 -r 10 --run-time 60s --host http://localhost:8000
test-ai-models:
@echo "测试AI模型..."
@$(PYTHON) tests/models/test_all_models.py
# 代码质量
lint:
@echo "运行代码检查..."
@$(PYTHON) -m flake8 services/
@$(PYTHON) -m mypy services/
@$(PYTHON) -m bandit -r services/
@npm run lint --prefix frontend/web-admin
format:
@echo "格式化代码..."
@$(PYTHON) -m black services/
@$(PYTHON) -m isort services/
@npm run format --prefix frontend/web-admin
security-scan:
@echo "运行安全扫描..."
@$(PYTHON) -m safety check
@trivy image --severity HIGH,CRITICAL registry.example.com/health-monitoring:latest
# 构建相关
build:
@echo "构建Docker镜像..."
@$(DOCKER) build -t kangyang/health-monitoring:$(VERSION) services/health-monitoring
@$(DOCKER) build -t kangyang/companion-service:$(VERSION) services/companion-service
@$(DOCKER) build -t kangyang/rehabilitation-service:$(VERSION) services/rehabilitation-service
@echo "构建完成!"
build-frontend:
@echo "构建前端应用..."
@npm run build --prefix frontend/web-admin
@cd frontend/mobile-app && flutter build apk
push:
@echo "推送Docker镜像..."
@$(DOCKER) push kangyang/health-monitoring:$(VERSION)
@$(DOCKER) push kangyang/companion-service:$(VERSION)
@$(DOCKER) push kangyang/rehabilitation-service:$(VERSION)
# 部署相关
deploy-staging:
@echo "部署到测试环境..."
@$(KUBECTL) apply -f infrastructure/k8s/staging/ -n kangyang-robot-staging
@$(KUBECTL) rollout status deployment --timeout=300s -n kangyang-robot-staging
deploy-production:
@echo "部署到生产环境..."
@echo "⚠️ 警告: 即将部署到生产环境,请确认 (yes/no):"
@read confirm && [ "$$confirm" = "yes" ] || exit 1
@$(KUBECTL) apply -f infrastructure/k8s/production/ -n kangyang-robot
@$(KUBECTL) rollout status deployment --timeout=600s -n kangyang-robot
rollback:
@echo "回滚部署..."
@$(KUBECTL) rollout undo deployment/health-monitoring -n kangyang-robot
@$(KUBECTL) rollout undo deployment/companion-service -n kangyang-robot
@$(KUBECTL) rollout undo deployment/rehabilitation-service -n kangyang-robot
# 监控相关
monitor:
@echo "启动监控面板..."
@open http://localhost:3001
@open http://localhost:9090
logs:
@echo "查看服务日志..."
@$(KUBECTL) logs -f deployment/health-monitoring -n kangyang-robot
metrics:
@echo "查看服务指标..."
@curl -s http://localhost:8001/metrics | grep -E "^kangyang_"
# 数据库相关
db-migrate:
@echo "运行数据库迁移..."
@$(PYTHON) scripts/migrate_database.py
db-seed:
@echo "导入测试数据..."
@$(PYTHON) scripts/seed_database.py
db-backup:
@echo "备份数据库..."
@$(DOCKER) exec mysql mysqldump -u root -p kangyang > backup/kangyang_$(shell date +%Y%m%d_%H%M%S).sql
# 文档相关
docs:
@echo "生成API文档..."
@$(PYTHON) scripts/generate_api_docs.py
@echo "生成架构图..."
@$(PYTHON) scripts/generate_architecture_diagrams.py
@echo "文档已生成到 docs/api/ 目录"
# 清理
clean:
@echo "清理临时文件..."
@find . -type f -name '*.pyc' -delete
@find . -type d -name '__pycache__' -delete
@find . -type d -name '.pytest_cache' -delete
@rm -rf htmlcov/
@rm -rf .coverage
@rm -rf node_modules/
@rm -rf dist/
@echo "清理完成!"
# CI/CD相关
ci-pipeline:
@echo "运行CI流水线..."
@make lint
@make test-unit
@make security-scan
@make build
cd-pipeline:
@echo "运行CD流水线..."
@make build
@make push
@make deploy-$(ENV)
# 开发工具
dev-shell:
@echo "进入开发Shell..."
@$(DOCKER) exec -it kangyang-dev-env /bin/bash
port-forward:
@echo "端口转发..."
@$(KUBECTL) port-forward service/health-monitoring-service 8001:80 -n kangyang-robot &
@$(KUBECTL) port-forward service/companion-service 8002:80 -n kangyang-robot &
@$(KUBECTL) port-forward service/rehabilitation-service 8003:80 -n kangyang-robot &
# 性能分析
profile:
@echo "运行性能分析..."
@$(PYTHON) -m cProfile -o profile.stats services/health-monitoring/main.py
@$(PYTHON) -m pstats profile.stats
# 版本管理
VERSION ?= latest
tag:
@echo "创建版本标签..."
@git tag -a v$(VERSION) -m "Release version $(VERSION)"
@git push origin v$(VERSION)
release:
@echo "发布新版本..."
@make test-unit
@make build VERSION=$(VERSION)
@make push VERSION=$(VERSION)
@make tag VERSION=$(VERSION)
.DEFAULT_GOAL := help