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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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