| Files | Last commit | Last update |
|---|---|---|
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago | ||
| 5 months ago |
算子开发效率平台 - 协作服务器
支持多用户实时协作的后端服务器。
功能特性
✨ 核心功能
- 🔐 用户认证系统 - 会话管理和用户识别
- 📡 实时协作 - WebSocket 支持多用户同步
- 💾 数据持久化 - 服务器端数据存储
- 🔌 RESTful API - 完整的 CRUD 操作
- 📡 自动同步 - 数据变更实时推送
📦 支持的模块
- 环境部署 - 一键配置开发环境
- 学习共享 - 知识库和文档管理
- 材料查询 - API 文档和问题解决方案
快速开始
1. 安装依赖
cd server
pip install -r requirements.txt
2. 启动服务器
python app.py
服务器将在 http://0.0.0.0:5000 启动。
3. 配置前端连接
在前端页面的 js/api.js 中修改 API 基础 URL:
const API_CONFIG = {
baseURL: 'http://localhost:5000/api', // 开发环境
timeout: 30000,
headers: {
'Content-Type': 'application/json'
}
};
API 接口文档
用户管理
POST /api/user/login
用户登录/创建会话
请求体:
{
"username": "张三"
}
响应:
{
"success": true,
"sessionId": "abc123...",
"user": {
"username": "张三",
"color": "#1a2b3c"
}
}
GET /api/user/active
获取当前在线用户列表
响应:
{
"users": [
{
"sessionId": "abc123...",
"username": "张三",
"color": "#1a2b3c"
}
]
}
模块管理
GET /api/modules
获取所有模块
POST /api/modules
创建新模块(需要认证)
请求头:
X-Session-ID: <你的会话ID>
学习共享
GET /api/learning/categories
获取所有学习分类
POST /api/learning/categories
创建新分类
请求体:
{
"name": "新分类",
"icon": "📁",
"parentId": 1 // 可选,如果提供则创建为子分类
}
PUT /api/learning/categories/{id}
更新分类
DELETE /api/learning/categories/{id}
删除分类
GET /api/learning/categories/{id}/items
获取分类下的文档列表
POST /api/learning/categories/{id}/items
创建新文档
请求体:
{
"title": "文档标题",
"desc": "文档描述",
"wiki": "https://wiki.example.com/doc"
}
材料查询
GET /api/query/categories
获取所有查询分类
GET /api/query/search?q={keyword}
搜索查询内容
WebSocket 事件
连接事件
客户端 → 服务器
socket.emit('join', { room: 'learning' });
socket.emit('update_presence', { sessionId: 'xxx' });
服务器 → 客户端
// 连接成功
socket.on('connected', (data) => {
console.log(data.message);
});
// 用户列表更新
socket.on('users_list', (data) => {
updateOnlineUsers(data.users);
});
// 初始数据
socket.on('init_data', (data) => {
if (data.type === 'learning') {
renderCategories(data.data);
}
});
// 数据更新
socket.on('learning_updated', (data) => {
handleUpdate(data); // { type, action, data/id }
});
// 模块更新
socket.on('modules_updated', (data) => {
handleModuleUpdate(data);
});
数据存储
数据结构
server/data/
├── modules.json # 模块配置
├── learningCategories.json # 学习共享数据
├── queryCategories.json # 材料查询数据
└── deploymentHistory.json # 部署历史记录
数据格式
所有数据以 JSON 格式存储,包含完整的结构和所有用户创建的内容。
部署
开发环境
python app.py
生产环境
使用 Gunicorn 或 uWSGI:
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app
Docker 部署
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
配置选项
在 app.py 中修改 Config 类:
class Config:
SECRET_KEY = 'your-secret-key' # 生产环境必须修改
DATA_DIR = './data' # 数据存储目录
MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 最大上传 16MB
多用户协作流程
- 用户连接 → 创建会话,分配唯一颜色
- 加入房间 → 选择功能模块(学习/查询)
- 实时同步 → 任一用户修改数据,广播给所有在线用户
- 冲突解决 → 后写入策略,最后写入生效
安全说明
⚠️ 生产环境注意事项:
-
修改 SECRET_KEY
SECRET_KEY = os.environ.get('SECRET_KEY', secrets.token_hex(32)) -
启用 HTTPS 配置反向代理(Nginx)处理 SSL
-
添加认证 实现真实的用户登录系统
-
限流 添加 API 请求频率限制
-
数据备份 定期备份
data/目录
故障排查
端口被占用
# 查找占用 5000 端口的进程
netstat -ano | findstr :5000
# 或修改端口
python app.py # 修改 app.py 中的端口
CORS 问题
已在开发环境允许所有来源,生产环境需配置:
CORS(app, resources={r"/*": {"origins": "https://yourdomain.com"}})
WebSocket 连接失败
确认防火墙允许 WebSocket 连接,检查 socketio 版本兼容性。
性能优化
- 使用 Redis 替代内存存储会话
- 添加数据库(PostgreSQL/MongoDB)
- 实现数据分页
- 启用 gzip 压缩
许可证
MIT License
联系方式
- 项目地址: https://gitcode.com/zl_hw/myOpen
- 问题反馈: 提交 Issue 到仓库