zizi b86516505f W02 安装工程、启动骨架与验证环境:pyproject/uv 安装工程、启动装配骨架、conftest 用例身份与 OS 离线隔离。
按 R2 串行阶段整理提交;包内文件为该阶段交付(含后续小增量),状态以工作包清单为准。
2026-09-10 19:25:40 +08:00

74 lines
3.2 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Muse 安装、生成、检查、测试和构建入口。
# 每个声明命令都必须真实可执行(执行与验收.md:声明命令前验证它真实可执行)。
.PHONY: 安装 格式 格式写入 类型 检查 测试 数据库测试 宿主测试 前端安装 前端检查 前端测试 生成 构建 资源核对
# 安装:建立并锁定 Python 依赖环境
安装:
uv sync --group dev
前端安装:
pnpm --dir web install --frozen-lockfile
前端检查:
pnpm --dir web run lint
pnpm --dir web run typecheck
pnpm --dir web exec tsc --noEmit --module esnext --moduleResolution bundler --target es2022 --skipLibCheck --typeRoots node_modules/@types --types node ../src/muse/基础设施/宿主/Pi工具桥.ts
前端测试:
pnpm --dir web run test
# 格式:静态检查(ruff lint + 格式校验;旧测试树由旧环境维护,不进入范围)
新测试目录 := $(shell for d in tests/单元 tests/契约 tests/集成 tests/架构; do [ -d "$$d" ] && printf '%s ' "$$d"; done)
格式:
uv run ruff check src $(新测试目录) tests/conftest.py 工具
uv run ruff format --check src $(新测试目录) tests/conftest.py 工具
# 格式写入:按项目规则实际格式化
格式写入:
uv run ruff check --fix src $(新测试目录) tests/conftest.py 工具
uv run ruff format src $(新测试目录) tests/conftest.py 工具
# 类型:pyright 类型检查
类型:
uv run pyright
# 检查:格式 + 类型 + 索引核对的统一入口
检查: 格式 类型
uv run python 工具/维护索引.py --检查
# 测试:默认离线(按标记剔除外部环境用例;未标记用例在 socket 防护下运行)
# 用法:make 测试 全部离线用例
# make 测试 用例=TC-a5c7d4adafe3 按稳定用例 ID 选择
测试:
uv run pytest -m "not 数据库 and not 网络 and not 真实模型 and not 浏览器 and not 宿主" $(if $(用例),--case $(用例),)
# 数据库测试:需要 MUSE_TEST_DATABASE_URL;缺失即失败,不静默跳过
数据库测试:
@test -n "$$MUSE_TEST_DATABASE_URL" || { echo "缺少 MUSE_TEST_DATABASE_URL(隔离库连接串);拒绝静默跳过" >&2; exit 1; }
uv run pytest --外部环境 -m "数据库 and not 宿主"
宿主测试:
@test -n "$$MUSE_TEST_DATABASE_URL" -a -n "$$MUSE_PI_NODE" -a -n "$$MUSE_PI_PACKAGE" || { echo "缺少隔离库或固定Pi/Node路径"; exit 1; }
uv run pytest --外部环境 -m 宿主
# 迁移:对配置指向的目标库执行显式迁移(维护命令,不在启动时自动执行)
迁移:
uv run python -m muse 迁移 $(配置)
# 生成:资源包、接口合同与索引(生成物只由登记输入产生)
生成:
uv run python 工具/生成接口.py
cd web && pnpm exec openapi-typescript ../docs/接口契约/生成/openapi.generated.json -o src/接口/生成/类型.ts
pnpm --dir web run build
uv run python 工具/构建资源包.py
uv run python 工具/维护索引.py --写入
# 构建:先保证生成物最新,再做可安装包
构建: 生成
uv build
# 资源核对:安装包内资源与清单哈希一致
资源核对:
uv run python -c "from muse.资源加载 import 核对资源; m = 核对资源(); print('资源清单发布身份:', m['发布身份'], '条目数:', len(m['资源']))"