添加 CLAUDE.md 开发指导文档

- 为 Claude Code 提供项目架构和开发命令指导
- 包含 Python 后端和 Angular 前端的构建说明
- 详细的浏览器测试指南,要求所有测试通过真实用户操作完成
- 配置 MCP 服务支持(文件系统、GitHub、浏览器自动化)
- 定义 Git 工作流程和开发最佳实践
This commit is contained in:
柯孟凯 2025-09-23 09:34:56 +08:00
parent 33c69087ce
commit 3f333b1626

282
CLAUDE.md Normal file
View file

@ -0,0 +1,282 @@
# CLAUDE.md
本文件为在此仓库中工作的 Claude Code (claude.ai/code) 提供指导。
## 开发命令
### 构建和运行
```bash
# 构建 Angular UI
cd ui
npm install
node_modules/.bin/ng build
# 安装 Python 依赖
cd ..
pip3 install pipenv
pipenv install
# 本地运行应用
pipenv run python3 app/main.py
```
### 前端开发
```bash
cd ui
npm run start # 开发服务器
npm run build # 生产构建
npm run lint # TypeScript 代码检查
```
### Python 开发
```bash
pipenv install --dev # 安装开发依赖(包含 pylint
pipenv run pylint app/ # Python 代码检查
```
### Docker
```bash
# 构建 Docker 镜像
docker build -t metube .
# 使用 Docker 运行
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads metube
```
## 项目架构
MeTube 是 yt-dlp 的 Web GUI具有以下架构
### 后端 (Python)
- **框架**: aiohttp + Socket.IO 实现实时通信
- **主入口**: `app/main.py` - Web 服务器、API 路由和 Socket.IO 处理器
- **下载引擎**: `app/ytdl.py` - 管理下载队列、yt-dlp 集成和后台任务
- **格式处理**: `app/dl_formats.py` - 视频/音频格式定义和选项
### 前端 (Angular)
- **位置**: `ui/` 目录
- **主组件**: `ui/src/app/app.component.ts`
- **服务**:
- `downloads.service.ts` - 管理下载操作
- `metube-socket.ts` - Socket.IO 客户端封装
- `speed.service.ts` - 下载速度计算
- **构建输出**: `ui/dist/metube/browser/` (由 Python 后端提供)
### 关键集成点
- Socket.IO 在前后端之间的实时更新
- REST API 端点 (`/add`, `/delete`, `/start`, `/history`)
- 下载文件和 UI 资源的静态文件服务
- 通过 `Config` 类加载的环境变量配置
### 下载流程
1. 前端向 `/add` 端点发送下载请求
2. 后端创建 `DownloadInfo` 对象并加入队列
3. `DownloadQueue` 使用 yt-dlp 管理并发下载
4. 通过 Socket.IO 发送实时进度更新
5. 完成的下载存储在持久化队列状态中
### 状态管理
- 使用 Python `shelve` 模块在 `STATE_DIR` 中持久化下载
- 三种下载状态queue (活动)、done (完成)、pending (未开始)
- 配置从环境变量加载,支持文件监控
## MCP 服务配置
### 文件系统 MCP 服务
```json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/kemengkai/Documents/代码项目/python/metube"],
"env": {}
}
}
}
```
### GitHub MCP 服务
```json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_token_here"
}
}
}
}
```
### Browser MCP 服务(用于 Web 自动化测试)
```json
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["@browsermcp/mcp@latest"],
"env": {}
}
}
}
```
## Agents 配置
### 代码审查 Agent
- **用途**: 自动代码审查和质量检查
- **触发条件**: 完成重要代码编写后
- **关注点**: Python 代码规范、TypeScript 最佳实践、安全性检查
### 测试 Agent
- **用途**: 通过浏览器进行用户行为测试和功能验证
- **触发条件**: 代码变更后或功能实现完成后
- **测试方式**: 使用 Browser MCP 工具模拟真实用户操作
- **覆盖范围**:
- Web UI 功能测试
- 下载流程验证
- 实时状态更新测试
- 跨浏览器兼容性验证
### 部署 Agent
- **用途**: 自动化 Docker 构建和部署流程
- **触发条件**: 代码合并到主分支
- **功能**: 镜像构建、依赖检查、部署验证
### 依赖管理 Agent
- **用途**: 监控和更新项目依赖
- **关注点**:
- Python: Pipfile 中的包更新
- Node.js: package.json 中的包更新
- 安全漏洞检测
## 开发最佳实践
### Git 工作流程
- **分支管理**: 每次有修改或新需求时,必须创建新的功能分支
- **提交规范**: 对所有操作、修改和总结都要进行详细的 Git 提交
- **审核流程**: 分支完成后创建 Pull Request方便审核者查看所有变更
- **分支命名**: 使用描述性名称,如 `feature/download-queue-optimization``fix/socket-connection-issue`
- **提交信息**: 使用清晰的中文提交信息,说明修改内容和原因
### 环境变量管理
- 本地开发使用 `.env` 文件
- Docker 部署使用环境变量注入
- 敏感配置(如 API 密钥)不要提交到代码库
### 实时通信调试
- 使用浏览器开发者工具监控 Socket.IO 消息
- 后端日志级别设置为 `DEBUG` 查看详细信息
- 测试并发下载时注意内存和 CPU 使用
### 前后端联调
- 前端开发服务器默认代理到 `localhost:8081`
- 后端 CORS 配置允许开发环境跨域请求
- Socket.IO 连接确保在两端都正确配置
## 测试指南
### 重要原则
**所有测试必须通过浏览器进行真实用户操作禁止使用命令行、Python、bash等脚本进行代码测试。**
### 测试环境准备
1. 启动本地开发服务器:`pipenv run python3 app/main.py`
2. 使用 Browser MCP 工具打开 `http://localhost:8081`
3. 确保网络连接正常,可访问视频网站或音频网站
### 基础功能测试
#### 1. 界面加载测试
- 访问 `http://localhost:8081`
- 验证页面完整加载,所有元素显示正常
- 检查主题切换功能light/dark/auto
- 验证响应式设计在不同屏幕尺寸下的表现
#### 2. 下载功能测试
- **单个视频下载**
1. 在 URL 输入框中输入需要测试的视频链接或音频连接
2. 选择质量选项Best, 720p, 480p等
3. 选择格式MP4, WEBM, MP3等
4. 点击"Add"按钮
5. 观察下载任务是否正确添加到队列
6. 监控下载进度实时更新
7. 验证下载完成后状态变化
- **播放列表下载**
1. 输入需要测试的视频或音频播放列表链接
2. 测试"Strict Playlist mode"开关
3. 设置播放列表项目限制
4. 验证批量下载功能
- **音频下载测试**
1. 选择音频格式MP3, M4A等
2. 测试音频质量选项
3. 验证音频文件下载
#### 3. 实时更新测试
- 观察下载进度条实时更新
- 检查下载速度显示
- 验证 ETA预计完成时间计算
- 测试多个并发下载的状态更新
#### 4. 队列管理测试
- **队列操作**
1. 添加多个下载任务
2. 测试暂停/恢复功能
3. 测试删除功能
4. 测试清空队列功能
- **状态切换**
1. 验证任务状态pending → downloading → completed
2. 测试错误状态处理
3. 测试重试机制
#### 5. 文件管理测试
- 测试自定义下载目录功能
- 验证文件名模板设置
- 测试下载文件的访问和播放
### 高级功能测试
#### 1. 配置选项测试
- 测试各种 YTDL_OPTIONS 设置
- 验证输出模板自定义
- 测试并发下载限制
#### 2. 错误处理测试
- 输入无效 URL
- 测试网络断开情况
- 验证不支持网站的处理
- 测试存储空间不足的情况
#### 3. 浏览器兼容性测试
- Chrome/Chromium 测试
- Firefox 测试
- Safari 测试
- 移动端浏览器测试
### 性能测试
- 大文件下载测试
- 高并发下载测试
- 长时间运行稳定性测试
- 内存使用监控
### 测试数据准备
推荐使用以下类型的测试链接:
- YouTube 短视频(<5分钟
- YouTube 长视频(>30分钟
- YouTube 播放列表10-20个视频
- 其他支持的网站链接
- 4K/8K 高清视频
- 直播流链接
- 用户提供的测试连接
### 测试报告
每次测试完成后记录:
- 测试环境信息
- 测试场景和步骤
- 发现的问题和错误
- 性能表现数据
- 浏览器兼容性情况