|
|
.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"
|