-
Notifications
You must be signed in to change notification settings - Fork 67
Expand file tree
/
Copy pathMakefile
More file actions
117 lines (97 loc) · 3.79 KB
/
Makefile
File metadata and controls
117 lines (97 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
.PHONY: help db-init db-upgrade db-downgrade db-check db-current db-history db-reset install install-uv run quick-start rag-init rag-test rag-demo uv-sync uv-lock
# 获取 Makefile 所在目录作为项目根目录
# 使用 abspath 确保兼容性,适用于 GNU Make 3.81+
# 去掉尾部斜杠
ROOT_DIR := $(patsubst %/,%,$(dir $(abspath $(firstword $(MAKEFILE_LIST)))))
# 检测是否安装了 uv
UV := $(shell command -v uv 2> /dev/null)
help:
@echo "可用的命令:"
@echo ""
@echo "基础命令:"
@echo " make install - 安装依赖(使用 pip)"
@echo " make install-uv - 安装依赖(使用 uv,推荐,更快)"
@echo " make run - 运行后端服务(自动构建知识库和RAG)"
@echo " make quick-start - 快速启动(推荐,可选)"
@echo ""
@echo "uv 命令(推荐):"
@echo " make uv-sync - 同步依赖(从 pyproject.toml 安装)"
@echo " make uv-lock - 生成 uv.lock 锁定文件"
@echo ""
@echo "数据库命令:"
@echo " make db-init - 初始化数据库"
@echo " make db-upgrade - 升级数据库到最新版本"
@echo " make db-downgrade - 降级数据库一个版本"
@echo " make db-check - 检查数据库连接"
@echo " make db-current - 查看当前数据库版本"
@echo " make db-history - 查看迁移历史"
@echo " make db-reset - 重置数据库(危险!)"
@echo ""
@echo "RAG知识库命令:"
@echo " make rag-init - 初始化RAG知识库"
@echo " make rag-test - 测试RAG系统"
@echo " make rag-demo - 演示RAG效果"
# 传统 pip 安装方式(兼容性保留)
install:
@echo "📦 安装 Python 依赖..."
cd $(ROOT_DIR) && pip install -r requirements.txt
@echo ""
@echo "💡 提示: pysqlite3-binary 是可选的(已从 requirements.txt 中移除)"
@echo " 如果遇到 SQLite3 兼容性问题,可以尝试: pip install pysqlite3-binary"
@echo " 如果安装失败,代码会自动使用内置 sqlite3,不影响使用"
# uv 安装方式(推荐,更快)
install-uv:
@if [ -z "$(UV)" ]; then \
echo "⚠️ uv 未安装,正在安装..."; \
curl -LsSf https://astral.sh/uv/install.sh | sh; \
echo "✅ uv 安装完成,请重新运行 make install-uv"; \
else \
echo "✅ 使用 uv 安装依赖..."; \
cd $(ROOT_DIR) && uv sync; \
fi
# uv 同步依赖(从 pyproject.toml)
uv-sync:
@if [ -z "$(UV)" ]; then \
echo "❌ 错误: uv 未安装"; \
echo "安装方法: curl -LsSf https://astral.sh/uv/install.sh | sh"; \
exit 1; \
fi
cd $(ROOT_DIR) && uv sync
# uv 生成锁定文件
uv-lock:
@if [ -z "$(UV)" ]; then \
echo "❌ 错误: uv 未安装"; \
echo "安装方法: curl -LsSf https://astral.sh/uv/install.sh | sh"; \
exit 1; \
fi
cd $(ROOT_DIR) && uv lock
db-init:
cd $(ROOT_DIR) && python db_manager.py init
db-upgrade:
cd $(ROOT_DIR) && python db_manager.py upgrade
db-downgrade:
cd $(ROOT_DIR) && python db_manager.py downgrade
db-check:
cd $(ROOT_DIR) && python db_manager.py check
db-current:
cd $(ROOT_DIR) && python db_manager.py current
db-history:
cd $(ROOT_DIR) && python db_manager.py history
db-reset:
cd $(ROOT_DIR) && python db_manager.py reset
run:
cd $(ROOT_DIR) && python run_backend.py
quick-start:
cd $(ROOT_DIR) && python quick_start.py
rag-init:
cd $(ROOT_DIR) && python init_rag_knowledge.py
rag-test:
@echo "测试RAG系统..."
@echo "检查RAG API端点: http://localhost:8000/api/rag/test"
@curl -s http://localhost:8000/api/rag/test || echo "⚠️ 请确保后端服务正在运行 (make run)"
rag-demo:
@echo "演示RAG效果对比..."
@echo "测试问题: 失眠怎么办?"
@curl -s -X POST http://localhost:8000/api/rag/ask \
-H "Content-Type: application/json" \
-d '{"question": "失眠怎么办?"}' || echo "⚠️ 请确保后端服务正在运行 (make run)"