zizi f76c3cd04a docs(架构): 归档R2历史留痕并清理过程计划与实施分期标签
- 归档并收敛 R2 历史留痕至 docs/实现回顾/R2改造历史留痕.md,删除已退出生命周期的改造计划、旧文件处置及验证过程文档
- 现行测试用例身份收敛至 tests/用例清单.json(1358条扁平登记),适配 conftest、索引维护与测试执行验证
- 清理源码、配置、SQL迁移头、测试夹具及规则文档中的 Wxx 实施分期标签与过时过程描述
- 同步重新打包构建资源清单,通过全量离线测试、模块边界、类型检查与索引双向强核验
2026-09-16 19:09:14 +08:00

83 lines
3.8 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 安装、生成、检查、测试和构建入口。
# 每个声明命令都必须真实可执行(见 .agent/rules/文档与资源生成.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/端到端 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 宿主 and not 真实模型"
真实模型测试:
@test -n "$$MUSE_TEST_DATABASE_URL" -a -n "$$MUSE_REAL_MODEL_URL" -a -n "$$MUSE_REAL_MODEL_KEY_FILE" || { echo "缺少隔离库或真实模型地址/凭据文件"; exit 1; }
uv run pytest --外部环境 -m 真实模型 --timeout=300
宿主测试:
@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['资源']))"