Skip to content

Commit 1c9e583

Browse files
committed
docs: 添加 UV 迁移检查清单
- 记录完整的迁移步骤和验证结果 - 提供常用命令速查表 - 包含后续改进建议
1 parent 1aaabbd commit 1c9e583

1 file changed

Lines changed: 280 additions & 0 deletions

File tree

docs/migration-checklist.md

Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,280 @@
1+
# UV 迁移检查清单
2+
3+
> **迁移日期**: 2026-01-18
4+
> **迁移类型**: 渐进式迁移(pip → uv)
5+
> **项目**: GLM-ASR-WebUI
6+
7+
---
8+
9+
## ✅ 阶段 1:基础配置
10+
11+
### pyproject.toml 创建
12+
13+
- [x] 创建 `pyproject.toml` 文件
14+
- [x] 配置 `build-system`(hatchling)
15+
- [x] 添加项目元数据(name, version, description)
16+
- [x] 配置 `dependencies`(从 requirements.txt 迁移)
17+
- [x] 配置 `dev-dependencies`(开发依赖)
18+
- [x] 配置工具设置(pytest, ruff, coverage)
19+
- [x] 设置 `allow-direct-references = true`(支持 git+https 依赖)
20+
21+
**关键依赖**:
22+
```toml
23+
torch>=2.9.1
24+
torchaudio>=2.9.1
25+
transformers @ git+https://github.com/huggingface/transformers.git
26+
fastapi>=0.100.0
27+
uvicorn[standard]>=0.30.0
28+
```
29+
30+
### UV 初始化
31+
32+
- [x] 运行 `uv sync` 同步依赖
33+
- [x] 生成 `uv.lock` 锁文件
34+
- [x] 创建 `.venv` 虚拟环境
35+
- [x] 验证依赖安装成功
36+
37+
### requirements.txt 同步
38+
39+
- [x] 创建 `scripts/export-requirements.sh`
40+
- [x] 运行 `uv pip compile pyproject.toml -o requirements.txt`
41+
- [x] 验证 requirements.txt 与 pyproject.toml 一致
42+
43+
---
44+
45+
## ✅ 阶段 2:项目结构重构
46+
47+
### src 布局创建
48+
49+
- [x] 创建 `src/glm_asr/` 目录
50+
- [x] 创建 `src/glm_asr/__init__.py`
51+
- [x] 创建 `src/glm_asr/models.py`(Pydantic 模型)
52+
- [x] 创建 `src/glm_asr/services/asr.py`(ASR 服务)
53+
- [x] 创建 `src/glm_asr/utils/audio.py`(音频工具)
54+
55+
### 代码模块化
56+
57+
**models.py** - 数据模型:
58+
- [x] `TranscriptionResponse`
59+
- [x] `HealthResponse`
60+
- [x] `ModelInfoResponse`
61+
- [x] `ServiceInfoResponse`
62+
63+
**services/asr.py** - ASR 服务:
64+
- [x] `load_model()` - 模型加载
65+
- [x] `transcribe_chunk()` - 音频转录
66+
- [x] 全局配置:DEVICE, MODEL_ID
67+
68+
**utils/audio.py** - 音频处理:
69+
- [x] `get_audio_duration()` - 获取时长
70+
- [x] `get_audio_duration_ffmpeg()` - FFmpeg 时长
71+
- [x] `split_audio()` - 音频分割
72+
73+
### 主应用重构
74+
75+
- [x] 移动 `app.py``src/glm_asr/app.py`
76+
- [x] 更新导入路径(使用新的模块结构)
77+
- [x] 配置 `PROJECT_ROOT` 路径计算
78+
- [x] 配置 Jinja2 模板路径
79+
- [x] 删除根目录旧的 `app.py`
80+
81+
---
82+
83+
## ✅ 阶段 3:开发工具链
84+
85+
### 测试配置
86+
87+
- [x] 创建 `tests/` 目录
88+
- [x] 创建 `tests/__init__.py`
89+
- [x] 创建 `tests/conftest.py`(pytest fixtures)
90+
- [x] 创建 `tests/test_api.py`(API 测试)
91+
- [x] 创建 `tests/test_asr_service.py`(服务测试)
92+
- [x] 配置 `[tool.pytest.ini_options]`(pytest 设置)
93+
94+
**测试覆盖**:
95+
- [x] 根路径测试
96+
- [x] 健康检查测试
97+
- [x] API 信息测试
98+
- [x] 模型信息测试
99+
- [x] ASR 服务配置测试
100+
101+
### 代码质量工具
102+
103+
**Ruff 配置** (`[tool.ruff]`):
104+
- [x] 行长度:100
105+
- [x] 目标 Python 版本:py312
106+
- [x] 启用规则:F, E, W, I, N, UP, B, C4, DTZ, T10, EM, ISC, ICN, G, PIE, PYI, RSE, RET, SIM, TID, TCH, ARG, PTH, PL, TRY, NPY, RUF
107+
- [x] 忽略:E501(行长度由 formatter 处理)
108+
109+
**Ruff Format**:
110+
- [x] 配置 `[tool.ruff.format]`
111+
- [x] 设置 `quote-style = "double"`
112+
- [x] 设置 `indent-style = "space"`
113+
114+
### Pre-commit 钩子
115+
116+
- [x] 创建 `.pre-commit-config.yaml`
117+
- [x] 配置 ruff(自动修复)
118+
- [x] 配置 ruff-format
119+
- [x] 配置 pre-commit-hooks(trailing-whitespace, end-of-file-fixer, yaml, toml, merge-conflict, debug-statements)
120+
- [x] 配置 pytest(自动运行测试)
121+
122+
### 文档更新
123+
124+
- [x] 更新 `README.md`
125+
- [x] 添加 uv 安装说明
126+
- [x] 更新启动命令(`glm_asr.app:app`
127+
- [x] 添加 uv 和 pip 两种安装方式
128+
129+
---
130+
131+
## ✅ 阶段 4:验证与清理
132+
133+
### 功能验证
134+
135+
- [x] 运行所有测试:`uv run pytest tests/ -v --cov`
136+
- [x] 运行 pre-commit:`uv run pre-commit run --all-files`
137+
- [x] 测试应用启动:`uv run uvicorn glm_asr.app:app`
138+
- [x] 测试 API 端点:`/health`, `/api/info`
139+
140+
### 代码质量验证
141+
142+
- [x] 所有测试通过(7/7)
143+
- [x] Pre-commit 检查通过(自动修复 23 个问题)
144+
- [x] 代码格式化完成(8 个文件)
145+
146+
### Git 提交
147+
148+
- [x] 创建功能分支:`feature/uv-migration`
149+
- [x] 提交阶段 1 变更
150+
- [x] 提交阶段 2 变更
151+
- [x] 提交阶段 3 变更
152+
- [x] 提交 pre-commit 修复
153+
- [x] 合并到 main 分支
154+
- [x] 清理功能分支和工作树
155+
156+
---
157+
158+
## 📊 迁移统计
159+
160+
| 指标 | 迁移前 | 迁移后 |
161+
|------|--------|--------|
162+
| 依赖管理 | requirements.txt | pyproject.toml + uv.lock |
163+
| 项目结构 | 平铺布局 | src 布局 |
164+
| 测试框架 || pytest + coverage |
165+
| 代码质量 || ruff + pre-commit |
166+
| 开发工具 | pip | uv run |
167+
| 模块数量 | 1 个文件 | 5 个模块 |
168+
| 测试数量 | 0 | 7 个测试 |
169+
170+
---
171+
172+
## 🎯 后续建议
173+
174+
### 短期(立即)
175+
176+
1. **安装 pre-commit**(开发者本地):
177+
```bash
178+
pre-commit install
179+
```
180+
181+
2. **验证 CUDA 环境**(如果使用 GPU):
182+
```bash
183+
python -c "import torch; print(torch.cuda.is_available())"
184+
```
185+
186+
### 中期(1-2 周)
187+
188+
1. **增加测试覆盖率**
189+
- 当前 34%,目标 80%+
190+
- 添加音频处理测试
191+
- 添加流式 API 测试
192+
193+
2. **替换 FastAPI on_event**
194+
- `@app.on_event("startup")` 已弃用
195+
- 迁移到 `lifespan` 事件处理器
196+
197+
### 长期(1-3 月)
198+
199+
1. **添加 CI/CD**
200+
- GitHub Actions 自动化测试
201+
- 自动化代码质量检查
202+
203+
2. **添加 Docker 支持**
204+
- 创建 Dockerfile
205+
- 支持 Docker Compose 部署
206+
207+
---
208+
209+
## 🚀 常用命令速查
210+
211+
### 开发命令
212+
213+
```bash
214+
# 安装依赖
215+
uv sync
216+
217+
# 运行服务(开发模式)
218+
uv run uvicorn glm_asr.app:app --reload
219+
220+
# 运行服务(生产模式)
221+
uv run uvicorn glm_asr.app:app --host 0.0.0.0 --port 8000 --workers 4
222+
223+
# 运行测试
224+
uv run pytest tests/ -v --cov
225+
226+
# 代码检查
227+
uv run ruff check .
228+
uv run ruff format .
229+
230+
# 运行 pre-commit
231+
uv run pre-commit run --all-files
232+
233+
# 同步 requirements.txt
234+
./scripts/export-requirements.sh
235+
```
236+
237+
### 验证命令
238+
239+
```bash
240+
# 健康检查
241+
curl http://localhost:8000/health
242+
243+
# API 信息
244+
curl http://localhost:8000/api/info
245+
246+
# 模型信息
247+
curl http://localhost:8000/api/v1/model/info
248+
```
249+
250+
---
251+
252+
## ✍️ 迁移记录
253+
254+
**日期**: 2026-01-18
255+
**执行者**: Claude (subagent-driven-development)
256+
**审查方式**: 两阶段审查(规范合规 → 代码质量)
257+
**迁移模式**: 渐进式(4 个阶段)
258+
259+
**合并记录**:
260+
- 特性分支:`feature/uv-migration`
261+
- 合并提交:`1aaabbd`(style: 通过 pre-commit 自动修复代码格式和 lint 问题)
262+
263+
---
264+
265+
## ✅ 验收标准
266+
267+
所有验收标准已达成:
268+
269+
- [x] pyproject.toml 配置完整
270+
- [x] uv.lock 锁文件生成
271+
- [x] src 布局重构完成
272+
- [x] 代码模块化完成
273+
- [x] 测试框架集成(pytest)
274+
- [x] 代码质量工具集成(ruff, pre-commit)
275+
- [x] requirements.txt 保持同步
276+
- [x] 所有测试通过
277+
- [x] 文档更新完成
278+
- [x] 功能验证通过
279+
280+
**迁移状态**: ✅ 完成

0 commit comments

Comments
 (0)