|
1 | | -.PHONY: help setup-backend dev-api dev-web build test test-notify doctor install-hooks clean-venv |
| 1 | +.PHONY: help setup-backend dev-api dev-web build test test-notify eval doctor install-hooks clean-venv |
2 | 2 |
|
3 | 3 | # 端口约定: |
4 | 4 | # - 后端::8000(Docker / 本地 dev 统一,避免存量用户升级困惑) |
5 | 5 | # - 前端::5183(与 BeeCount-Cloud 的 :5173 错开避免冲突) |
6 | 6 |
|
| 7 | +ifneq ($(filter Windows_NT,$(OS)),) |
| 8 | +WINDOWS := 1 |
| 9 | +else ifneq (,$(findstring cmd.exe,$(ComSpec))) |
| 10 | +WINDOWS := 1 |
| 11 | +endif |
| 12 | + |
| 13 | +ifeq ($(WINDOWS),1) |
| 14 | +SHELL := cmd.exe |
| 15 | +.SHELLFLAGS := /C |
| 16 | +PYTHON := python |
| 17 | +VENV_PYTHON := .venv\Scripts\python.exe |
| 18 | +else |
| 19 | +PYTHON := python3 |
| 20 | +VENV_PYTHON := .venv/bin/python |
| 21 | +endif |
| 22 | + |
7 | 23 | help: |
8 | 24 | @echo "PanWatch 开发命令:" |
9 | 25 | @echo " make setup-backend 创建 venv 并安装后端依赖" |
10 | 26 | @echo " make dev-api 启动后端(:8000,自动 setup-backend)" |
11 | 27 | @echo " make dev-web 启动前端(:5183,自动 pnpm install)" |
12 | 28 | @echo " make test 跑全部单测(默认不发通知)" |
13 | 29 | @echo " make test-notify 跑全部单测(实际发送通知)" |
| 30 | + @echo " make eval 跑 Agent 过程评测集(chat 用例需 EVAL_AI_* 环境变量)" |
14 | 31 | @echo " make doctor 系统自检(数据源/AI/通知/DB/磁盘/调度)" |
15 | 32 | @echo " make build VERSION=x 构建前端 + Docker 镜像" |
16 | 33 | @echo " make install-hooks 安装 git pre-push hook" |
17 | 34 | @echo " make clean-venv 删除本地 venv" |
18 | 35 |
|
19 | 36 | setup-backend: |
| 37 | +ifeq ($(WINDOWS),1) |
| 38 | + @if not exist .venv ( echo [setup] 创建 venv & $(PYTHON) -m venv .venv ) |
| 39 | + @$(VENV_PYTHON) -m pip install -q -r requirements.txt |
| 40 | + @if not exist .env if exist .env.example copy /Y .env.example .env >nul |
| 41 | +else |
20 | 42 | @if [ ! -d .venv ]; then \ |
21 | 43 | echo ">>> 创建 venv"; \ |
22 | 44 | python3 -m venv .venv; \ |
23 | 45 | fi |
24 | | - @. .venv/bin/activate && pip install -q -r requirements.txt |
| 46 | + @$(VENV_PYTHON) -m pip install -q -r requirements.txt |
25 | 47 | @if [ ! -f .env ] && [ -f .env.example ]; then cp .env.example .env; fi |
| 48 | +endif |
26 | 49 |
|
27 | 50 | # server.py 内部已经用 uvicorn.run(host=0.0.0.0, port=8000, reload=True) 启动。 |
28 | 51 | dev-api: setup-backend |
29 | | - . .venv/bin/activate && python server.py |
| 52 | +ifeq ($(WINDOWS),1) |
| 53 | + @set "DEV_RELOAD=1" && $(VENV_PYTHON) server.py |
| 54 | +else |
| 55 | + @DEV_RELOAD=1 $(VENV_PYTHON) server.py |
| 56 | +endif |
30 | 57 |
|
31 | 58 | dev-web: |
| 59 | +ifeq ($(WINDOWS),1) |
| 60 | + @where pnpm >nul 2>&1 || ( echo pnpm 未安装,请先 npm install -g pnpm & exit /b 1 ) |
| 61 | + @cd frontend && pnpm install --no-frozen-lockfile && pnpm dev |
| 62 | +else |
32 | 63 | @if ! command -v pnpm >/dev/null 2>&1; then \ |
33 | 64 | echo "pnpm 未安装,请先 npm install -g pnpm"; \ |
34 | 65 | exit 1; \ |
35 | 66 | fi |
36 | 67 | cd frontend && pnpm install --no-frozen-lockfile && pnpm dev |
| 68 | +endif |
37 | 69 |
|
38 | 70 | test: |
39 | | - . .venv/bin/activate && python -m pytest tests/ -v |
| 71 | + @$(VENV_PYTHON) -m pytest tests/ -v |
40 | 72 |
|
41 | 73 | test-notify: |
42 | | - . .venv/bin/activate && python -m pytest tests/ -v --notify |
| 74 | + @$(VENV_PYTHON) -m pytest tests/ -v --notify |
| 75 | + |
| 76 | +# Agent 过程评测(工具选择/参数/有据性/结构化输出/动作白名单): |
| 77 | +# - 结构化解析用例纯规则,直接跑 |
| 78 | +# - chat 工具循环用例需被测模型: EVAL_AI_BASE_URL / EVAL_AI_API_KEY / EVAL_AI_MODEL |
| 79 | +# - 追加 LLM-as-judge: EVAL_JUDGE_* 环境变量 + EVAL_ARGS=--judge |
| 80 | +# - 建议在改动 prompts/*.txt 或工具 schema 后运行,低于阈值(EVAL_PASS_THRESHOLD)退出码非 0 |
| 81 | +eval: |
| 82 | + @$(VENV_PYTHON) tests/eval/run_eval.py $(EVAL_ARGS) |
43 | 83 |
|
44 | 84 | # 命令行系统自检:跑一遍数据源/AI/通知 + DB/磁盘/调度,打印结果与修复建议 |
45 | 85 | doctor: |
46 | | - . .venv/bin/activate && python -m src.core.doctor |
| 86 | + @$(VENV_PYTHON) -m src.core.doctor |
47 | 87 |
|
48 | 88 | # 用法: make build VERSION=0.3.0 |
49 | 89 | build: |
| 90 | +ifeq ($(WINDOWS),1) |
| 91 | + @if "$(VERSION)"=="" ( echo Usage: make build VERSION=^<version^> & exit /b 1 ) |
| 92 | + @powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\build.ps1 -Version "$(VERSION)" |
| 93 | +else |
50 | 94 | @if [ -z "$(VERSION)" ]; then \ |
51 | 95 | echo "Usage: make build VERSION=<version>"; \ |
52 | 96 | exit 1; \ |
53 | 97 | fi |
54 | 98 | ./build.sh $(VERSION) |
| 99 | +endif |
55 | 100 |
|
56 | 101 | install-hooks: |
57 | 102 | bash scripts/install-hooks.sh |
58 | 103 |
|
59 | 104 | clean-venv: |
| 105 | +ifeq ($(WINDOWS),1) |
| 106 | + @if exist .venv rmdir /S /Q .venv |
| 107 | +else |
60 | 108 | rm -rf .venv |
| 109 | +endif |
0 commit comments