You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
6.4 KiB

.PHONY: all build run test clean help
# 变量
BINARY_NAME=market-data-service
SYNC_BINARY=market-data-sync
DOCKER_IMAGE=market-data-service:latest
# Python项目路径
PYTHON_DIR=python_market_data_service
VENV_PATH=$(PYTHON_DIR)/venv
PYTHON_BIN=$(VENV_PATH)/bin/python
# Windows下使用不同的路径
ifeq ($(OS),Windows_NT)
PYTHON_BIN=$(VENV_PATH)/Scripts/python
endif
# 默认目标
all: build
# ==================== Go 命令 ====================
# 构建服务
build:
go build -o bin/$(BINARY_NAME) ./cmd/server
# 构建同步工具
build-sync:
go build -o bin/$(SYNC_BINARY) ./cmd/sync
# 构建全部
build-all: build build-sync
# 运行服务Go
run:
go run ./cmd/server
# 运行同步工具 - 同步股票列表
sync-stocks:
go run ./cmd/sync -type stocks
# 运行同步工具 - 同步期货列表
sync-futures:
go run ./cmd/sync -type futures
# 运行同步工具 - 同步交易日历
sync-calendar:
go run ./cmd/sync -type calendar -start 20240101 -end 20241231
# 运行同步工具 - 同步K线数据
sync-klines:
go run ./cmd/sync -type klines -symbol 000001.SZ -start 20240301 -end 20240307 -freq 1d
# Go测试
test:
go test -v ./...
# 下载Go依赖
deps:
go mod download
go mod tidy
# ==================== Python 命令 ====================
# 创建Python虚拟环境
py-venv:
cd $(PYTHON_DIR) && python -m venv venv
@echo "虚拟环境已创建,请激活:"
@echo " Windows: $(PYTHON_DIR)\venv\Scripts\activate"
@echo " Linux/Mac: source $(PYTHON_DIR)/venv/bin/activate"
# 安装Python依赖
py-deps:
$(PYTHON_BIN) -m pip install --upgrade pip
$(PYTHON_BIN) -m pip install -r $(PYTHON_DIR)/requirements.txt
$(PYTHON_BIN) -m pip install tushare
# 运行Python服务开发模式
py-run:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -m app.main
# 运行Python服务Uvicorn热重载
py-run-uvicorn:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -m uvicorn app.main:app --reload --port 8080
# 运行Python服务生产模式
py-run-prod:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -m uvicorn app.main:app --host 0.0.0.0 --port 8080 --workers 4
# Python数据同步 - 股票
py-sync-stocks:
cd $(PYTHON_DIR) && $(PYTHON_BIN) scripts/sync_data.py --type stocks
# Python数据同步 - 期货
py-sync-futures:
cd $(PYTHON_DIR) && $(PYTHON_BIN) scripts/sync_data.py --type futures
# Python数据同步 - 交易日历
py-sync-calendar:
cd $(PYTHON_DIR) && $(PYTHON_BIN) scripts/sync_data.py --type calendar --start 20240101 --end 20241231
# Python数据同步 - K线
py-sync-klines:
cd $(PYTHON_DIR) && $(PYTHON_BIN) scripts/sync_data.py --type klines --symbol 000001.SZ --start 20240301 --end 20240307 --freq 1d
# Python测试
py-test:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -m pytest tests/ -v
# Python代码格式化
py-fmt:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -m black app/ --line-length 100
# Python类型检查
py-lint:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -m mypy app/ --ignore-missing-imports
# ==================== 数据库命令 ====================
# 初始化数据库Go方式使用SQL脚本
db-init:
psql $(DATABASE_URL) -f memory/2026-03-07-database-schema.sql
# 初始化数据库Python方式使用SQLAlchemy
db-init-py:
cd $(PYTHON_DIR) && $(PYTHON_BIN) -c "from app.repositories.database import init_db; init_db()"
# ==================== Docker 命令 ====================
# Docker构建Go版本
docker-build:
docker build -t $(DOCKER_IMAGE) .
# Docker构建Python版本
docker-build-py:
docker build -t $(DOCKER_IMAGE)-python -f $(PYTHON_DIR)/Dockerfile $(PYTHON_DIR)
# Docker运行
docker-run:
docker run -d -p 8080:8080 --name market-data $(DOCKER_IMAGE)
# ==================== 其他命令 ====================
# 格式化Go代码
fmt:
go fmt ./...
# Go代码检查
lint:
golangci-lint run
# 清理构建产物
clean:
rm -rf bin/
rm -rf $(PYTHON_DIR)/__pycache__
rm -rf $(PYTHON_DIR)/app/__pycache__
find $(PYTHON_DIR) -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
# 查看帮助
help:
@echo "╔════════════════════════════════════════════════════════════════╗"
@echo "║ 统一行情数据服务 - Makefile 命令帮助 ║"
@echo "╚════════════════════════════════════════════════════════════════╝"
@echo ""
@echo "【Go 命令】"
@echo " make build - 构建 Go 服务二进制文件"
@echo " make build-sync - 构建 Go 数据同步工具"
@echo " make build-all - 构建所有 Go 二进制文件"
@echo " make run - 运行 Go 服务(开发模式)"
@echo " make deps - 下载 Go 依赖"
@echo " make test - 运行 Go 测试"
@echo ""
@echo "【Python 命令】"
@echo " make py-venv - 创建 Python 虚拟环境"
@echo " make py-deps - 安装 Python 依赖"
@echo " make py-run - 运行 Python 服务(直接)"
@echo " make py-run-uvicorn - 运行 Python 服务Uvicorn热重载"
@echo " make py-run-prod - 运行 Python 服务(生产模式)"
@echo " make py-test - 运行 Python 测试"
@echo ""
@echo "【数据同步 - Go】"
@echo " make sync-stocks - 同步股票列表"
@echo " make sync-futures - 同步期货列表"
@echo " make sync-calendar - 同步交易日历"
@echo " make sync-klines - 同步K线数据"
@echo ""
@echo "【数据同步 - Python】"
@echo " make py-sync-stocks - 同步股票列表"
@echo " make py-sync-futures - 同步期货列表"
@echo " make py-sync-calendar - 同步交易日历"
@echo " make py-sync-klines - 同步K线数据"
@echo ""
@echo "【数据库】"
@echo " make db-init - 初始化数据库Go SQL脚本"
@echo " make db-init-py - 初始化数据库Python SQLAlchemy"
@echo ""
@echo "【Docker】"
@echo " make docker-build - 构建 Docker 镜像Go"
@echo " make docker-build-py - 构建 Docker 镜像Python"
@echo ""
@echo "【其他】"
@echo " make clean - 清理构建产物"
@echo " make fmt - 格式化 Go 代码"
@echo " make py-fmt - 格式化 Python 代码black"
@echo " make help - 显示本帮助"
@echo ""
@echo "【快速开始】"
@echo " 1. Go实现: make deps && make run"
@echo " 2. Python实现: make py-venv && make py-deps && make py-run-uvicorn"