接续 88dd570,保存 W20–W24 已实现的共享接口、业务入口、迁移、工作台、测试与文档。 W20/W22/W23 保持 in_progress,W21/W24 保持 verified;此提交不宣称方法或规则正式启用、多轮返修、真实角色评测完成。 W25 新增实验、标定、逐调用交付与角色执行及其迁移/测试/索引留在实施工作树,原有私人和旧实现保留项不纳入。 验证:离线 571、前端 33 通过;PG 469 项通过、2 项浏览器未启用,2 项误带入的 W25 用例已移出本提交;最终任务与交付边界 37 项通过。make 检查、最终类型、84 项资源及 diff 检查通过。未重跑浏览器或 Pi 宿主,不以合成调用认证外部模型效果。 独立整体审查四维通过;证据保存在 R2-20260909/提交W20-W24。
79 lines
3.5 KiB
Makefile
79 lines
3.5 KiB
Makefile
# 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/架构 tests/迁移 tests/端到端; do [ -d "$$d" ] && printf '%s ' "$$d"; done)
|
||
新工具目录 := 工具 $(wildcard 数据库/旧库迁移)
|
||
格式:
|
||
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
|
||
|
||
# 模块边界:固定执行架构门禁,不继承调用者的 pytest 筛选条件。
|
||
模块边界:
|
||
PYTEST_ADDOPTS= uv run pytest tests/架构/test_模块依赖.py -q
|
||
|
||
# 检查:格式 + 类型 + 模块边界 + 索引核对的统一入口
|
||
检查: 格式 类型 模块边界
|
||
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['资源']))"
|