# pg4ml-studio
**Repository Path**: rain-scott/pg4ml-studio
## Basic Information
- **Project Name**: pg4ml-studio
- **Description**: pg4ml任务管理和可视化
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-07-17
- **Last Updated**: 2025-08-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# pg4ml-studio




**一个基于 FastAPI 的机器学习任务管理和可视化平台**
[快速开始](#快速开始) • [文档](#文档) • [API 参考](#api-参考) • [贡献指南](CONTRIBUTING.md)
---
## 📖 项目介绍
pg4ml-studio 是一个现代化的机器学习任务管理和可视化平台,基于 FastAPI 框架构建。该平台提供了完整的用户管理系统、任务调度、数据存储和监控功能,支持分布式部署和容器化运行。
### ✨ 主要特性
- 🚀 **高性能**: 基于 FastAPI 和异步编程,提供高性能的 API 服务
- 🔐 **用户管理**: 完整的用户认证、授权和角色管理系统
- 📊 **任务管理**: 支持机器学习任务的创建、调度和监控
- 🗄️ **数据存储**: 集成 PostgreSQL 数据库和 Redis 缓存
- 📈 **监控系统**: 集成 Prometheus、Grafana 和 Node Exporter
- 🐳 **容器化**: 支持 Docker 和 Docker Compose 部署
- 📝 **API 文档**: 自动生成的 Swagger 和 ReDoc API 文档
- 🔧 **开发友好**: 完整的开发工具链和代码质量检查
## 🏗️ 技术架构
### 核心技术栈
| 组件 | 技术选型 | 版本 |
|------|----------|------|
| **后端框架** | FastAPI | 0.101.1 |
| **数据库** | PostgreSQL + Tortoise ORM | 0.19.3 |
| **缓存** | Redis + Redis Sentinel | 5.0.0b1 |
| **任务调度** | APScheduler | 3.10.4 |
| **文件存储** | MinIO | 7.1.16 |
| **监控** | Prometheus + Grafana + Node Exporter | - |
| **容器化** | Docker + Docker Compose | - |
| **Web服务器** | Nginx + Gunicorn | - |
### 系统架构图
```mermaid
graph TB
subgraph "前端/客户端"
A[Web UI]
B[Mobile App]
C[API Client]
end
subgraph "负载均衡"
D[Nginx]
end
subgraph "应用层"
E[FastAPI]
F[Gunicorn]
end
subgraph "数据层"
G[PostgreSQL]
H[Redis]
I[MinIO]
end
subgraph "监控层"
J[Prometheus]
K[Grafana]
L[Node Exporter]
end
A --> D
B --> D
C --> D
D --> E
E --> F
E --> G
E --> H
E --> I
E --> J
J --> K
L --> J
```
## 🚀 快速开始
### 环境要求
- **Python**: 3.11+
- **Docker**: 20.10+
- **Docker Compose**: 2.0+
- **内存**: 至少 4GB
- **磁盘**: 至少 20GB
### 方式一:Docker 快速启动(推荐)
```bash
# 1. 克隆项目
git clone
cd pg4ml-studio
# 2. 使用启动脚本
./start.sh docker
# 3. 访问服务
# API 文档: http://localhost/apidocs
# ReDoc 文档: http://localhost/apiredoc
# Grafana 监控: http://localhost:3000
# Prometheus: http://localhost:9090
```
### 方式二:本地开发环境
```bash
# 1. 克隆项目
git clone
cd pg4ml-studio
# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
# 3. 安装依赖
pip install -r working/requirements.txt
# 4. 配置环境变量
cp config/env.example config/.env
# 编辑 config/.env 文件,配置数据库等信息
# 5. 启动开发服务器
./start.sh dev
```
### 方式三:生产环境部署
```bash
# 1. 安装依赖
./start.sh install
# 2. 检查环境
./start.sh check
# 3. 启动生产服务
./start.sh prod
```
## 📚 文档
### 核心文档
- [📖 用户指南](docs/user-guide.md) - 详细的使用说明
- [🔧 API 参考](docs/api-reference.md) - 完整的 API 文档
- [🏗️ 架构设计](docs/architecture.md) - 系统架构详解
- [🚀 部署指南](docs/deployment.md) - 部署和运维指南
### 开发文档
- [👥 贡献指南](CONTRIBUTING.md) - 如何参与项目开发
- [🧪 测试指南](docs/testing.md) - 测试用例编写和运行
- [🔍 代码规范](docs/coding-standards.md) - 代码风格和规范
## 🔌 API 参考
### 用户管理模块 (`/api/user`)
| 方法 | 路径 | 描述 | 状态 |
|------|------|------|------|
| `GET` | `/api/user/role/all` | 查询所有角色列表 | ✅ |
| `POST` | `/api/user/login` | 用户登录 | ✅ |
| `DELETE` | `/api/user/logout` | 退出登录 | ✅ |
| `GET` | `/api/user/info/list` | 获取用户信息列表 | ✅ |
| `GET` | `/api/user/info` | 获取个人用户信息 | ✅ |
| `POST` | `/api/user/info` | 新增用户 | ✅ |
| `PUT` | `/api/user/info` | 修改用户信息 | ✅ |
| `DELETE` | `/api/user/info` | 删除用户 | ✅ |
### 快速测试
```bash
# 使用 curl 测试 API
curl -X GET "http://localhost:8000/api/user/role/all" \
-H "accept: application/json"
# 使用 httpie 测试 API
http GET localhost:8000/api/user/role/all
```
## 🏗️ 项目结构
```
pg4ml-studio/
├── 📁 app/ # 应用主目录
│ ├── 📁 user_module/ # 用户管理模块
│ │ ├── __init__.py # 模块初始化
│ │ ├── service.py # 业务逻辑
│ │ ├── schemas.py # 数据模型
│ │ └── operate_log.py # 操作日志
│ ├── route.py # 路由配置
│ ├── schemas.py # 通用数据模型
│ └── utils.py # 工具函数
├── 📁 config/ # 配置文件
│ ├── __init__.py # 配置初始化
│ ├── settings.py # 应用配置
│ ├── db.py # 数据库配置
│ └── env.example # 环境变量示例
├── 📁 model/ # 数据模型
│ ├── __init__.py # 模型初始化
│ ├── base.py # 基础模型
│ └── user.py # 用户模型
├── 📁 working/ # 部署相关文件
│ ├── compose.yaml # Docker Compose 配置
│ ├── Dockerfile # Docker 镜像配置
│ ├── requirements.txt # Python 依赖
│ └── gunicorn_conf.py # Gunicorn 配置
├── 📁 swagger/ # API 文档静态文件
├── main.py # 应用入口
├── start.sh # 启动脚本
├── .gitignore # Git 忽略文件
├── pyproject.toml # 项目配置
├── README.md # 项目说明
├── CONTRIBUTING.md # 贡献指南
├── CHANGELOG.md # 更新日志
└── LICENSE # 许可证
```
## 🔧 配置说明
### 环境变量配置
主要配置文件位于 `config/.env`:
```ini
[development]
# 数据库配置
POSTGRESQL_HOST = localhost
POSTGRESQL_USER = postgres
POSTGRESQL_PASSWORD = postgresql_admin
POSTGRESQL_PORT = 5432
POSTGRESQL_DB = pg4ml_studio
# Redis 配置
REDIS_SENTINEL_HOST_LIST = localhost,localhost,localhost
REDIS_PASSWORD = redis_password
REDIS_SENTINEL_SERVICE_NAME = mymaster
# MinIO 配置
MINIO_HOST = localhost
MINIO_PORT = 9000
MINIO_ACCESS_KEY = minioadmin
MINIO_SECRET_KEY = minioadmin
MINIO_BUCKET = pg4ml-studio
```
### 启动脚本使用
```bash
# 查看帮助
./start.sh help
# 启动开发环境
./start.sh dev
# 启动生产环境
./start.sh prod
# 使用 Docker 启动
./start.sh docker
# 停止 Docker 服务
./start.sh stop
# 安装依赖
./start.sh install
# 检查环境
./start.sh check
```
## 🧪 测试
### 运行测试
```bash
# 运行所有测试
pytest
# 运行特定测试文件
pytest tests/test_user.py
# 运行带覆盖率报告的测试
pytest --cov=app tests/
# 运行性能测试
pytest tests/test_performance.py -m performance
```
### 测试覆盖率
```bash
# 生成覆盖率报告
pytest --cov=app --cov-report=html tests/
# 查看覆盖率报告
open htmlcov/index.html
```
## 📊 监控和日志
### 系统监控
- **Prometheus**: 收集系统指标和业务指标
- **Grafana**: 可视化监控数据和告警
- **Node Exporter**: 系统级指标收集
### 日志管理
- **应用日志**: 记录业务操作和错误信息
- **访问日志**: 记录 API 访问情况
- **性能日志**: 记录系统性能指标
### 告警配置
```yaml
# Grafana 告警规则示例
groups:
- name: pg4ml-studio
rules:
- alert: HighCPUUsage
expr: cpu_usage > 80
for: 5m
labels:
severity: warning
annotations:
summary: "CPU 使用率过高"
```
## 🚀 性能优化
### 数据库优化
- 使用连接池管理数据库连接
- 实现查询缓存机制
- 优化数据库索引
### 缓存策略
- Redis 缓存热点数据
- 实现缓存预热机制
- 设置合理的缓存过期时间
### 异步处理
- 使用异步 I/O 处理请求
- 实现任务队列处理耗时操作
- 优化并发处理能力
## 🔒 安全特性
### 认证授权
- JWT Token 认证
- 基于角色的访问控制 (RBAC)
- API 访问频率限制
### 数据安全
- 敏感数据加密存储
- SQL 注入防护
- XSS 攻击防护
### 网络安全
- HTTPS 传输加密
- CORS 跨域配置
- 请求签名验证
## 🤝 参与贡献
我们欢迎所有形式的贡献!请查看 [贡献指南](CONTRIBUTING.md) 了解详细信息。
### 贡献方式
1. 🐛 **报告 Bug**: 在 [Issues](https://github.com/your-org/pg4ml-studio/issues) 中报告问题
2. 💡 **功能建议**: 提出新功能建议和改进意见
3. 📝 **文档改进**: 完善项目文档和示例
4. 🔧 **代码贡献**: 提交代码修复和新功能
5. 🧪 **测试用例**: 编写和优化测试用例
### 开发流程
```bash
# 1. Fork 项目
# 2. 克隆到本地
git clone
cd pg4ml-studio
# 3. 创建功能分支
git checkout -b feature/amazing-feature
# 4. 提交更改
git commit -m "feat: 添加新功能"
# 5. 推送到分支
git push origin feature/amazing-feature
# 6. 创建 Pull Request
```
## 📄 许可证
本项目采用 [MIT 许可证](LICENSE) - 查看 LICENSE 文件了解详情。
## 🙏 致谢
感谢所有为项目做出贡献的开发者!
### 主要贡献者
- [@your-username](https://github.com/your-username) - 项目维护者
- [@contributor1](https://github.com/contributor1) - 核心功能开发
- [@contributor2](https://github.com/contributor2) - 文档和测试
### 开源项目
感谢以下开源项目的支持:
- [FastAPI](https://fastapi.tiangolo.com/) - 现代、快速的 Web 框架
- [PostgreSQL](https://www.postgresql.org/) - 强大的开源数据库
- [Redis](https://redis.io/) - 高性能的缓存数据库
- [Docker](https://www.docker.com/) - 容器化平台
## 📞 联系我们
- 📧 **邮箱**: team@pg4ml-studio.com
- 🐛 **问题反馈**: [GitHub Issues](https://github.com/your-org/pg4ml-studio/issues)
- 💬 **讨论区**: [GitHub Discussions](https://github.com/your-org/pg4ml-studio/discussions)
- 📖 **文档**: [项目文档](https://pg4ml-studio.readthedocs.io/)
## ⭐ 支持项目
如果这个项目对您有帮助,请给我们一个 ⭐ Star!
---
**pg4ml-studio** - 让机器学习任务管理更简单
[快速开始](#快速开始) • [文档](#文档) • [贡献](#参与贡献) • [许可证](LICENSE)