TraceStudio-dev/docs/server1.2/DIRECTORY_STRUCTURE.md

252 lines
6.1 KiB
Markdown
Raw Normal View History

# TraceStudio 目录结构说明
## 📁 项目根目录结构
```
TraceStudio/ # 项目根目录
├── cloud/ # ✅ 云存储根目录(所有用户共享)
│ ├── shared/ # 共享文件目录
│ ├── temp/ # 临时文件目录
│ └── users/ # 用户私有目录
│ ├── guest/ # guest用户目录
│ │ ├── data/ # 数据文件
│ │ ├── workflows/ # 工作流文件
│ │ ├── results/ # 结果文件
│ │ └── cache/ # 缓存文件
│ └── ouczbs/ # ouczbs用户目录
│ └── ...
├── custom_nodes/ # ✅ 自定义节点目录(所有用户共享)
│ ├── __init__.py # Python包标识
│ └── example_nodes.py # 示例节点(如有)
├── server/ # 后端服务器代码
│ ├── app/ # 应用代码
│ ├── main.py # 启动入口
│ ├── system_config.yaml # ✅ 系统配置文件
│ └── users.json # 用户数据库
├── web/ # 前端代码
│ ├── src/
│ └── ...
└── docs/ # 文档目录
└── ...
```
## ⚙️ 配置文件说明
### system_config.yaml
```yaml
storage:
# 云存储根目录(相对于项目根目录 TraceStudio/
cloud_root: "./cloud"
# 自定义节点目录(相对于项目根目录 TraceStudio/
custom_nodes_dir: "./custom_nodes"
# 用户目录结构
user_dirs:
- "data" # 数据文件
- "workflows" # 工作流文件
- "results" # 结果文件
- "cache" # 缓存文件
```
## 🔍 路径解析逻辑
### 1. 项目根目录识别
```python
# server/app/core/user_manager.py
# 项目根目录 = server/ 的上一级目录
project_root = Path(__file__).parent.parent.parent.parent
# 示例: D:\XGame\TraceStudio
```
### 2. cloud_root 路径
```python
# 从配置文件读取相对路径
cloud_root_rel = config['storage']['cloud_root'] # "./cloud"
# 解析为绝对路径
CLOUD_ROOT = (project_root / cloud_root_rel).resolve()
# 结果: D:\XGame\TraceStudio\cloud
```
### 3. custom_nodes 路径
```python
# 从配置文件读取相对路径
custom_nodes_rel = config['storage']['custom_nodes_dir'] # "./custom_nodes"
# 解析为绝对路径
custom_nodes_dir = (project_root / custom_nodes_rel).resolve()
# 结果: D:\XGame\TraceStudio\custom_nodes
```
## 🚫 注意事项
### ❌ 不要创建以下目录
-`server/cloud/` - 错误位置
-`server/custom_nodes/` - 错误位置
-`web/cloud/` - 错误位置
### ✅ 正确的目录位置
-`TraceStudio/cloud/` - 正确
-`TraceStudio/custom_nodes/` - 正确
## 📝 目录用途说明
### cloud/ 目录
**用途**: 云存储文件系统根目录
**访问权限**:
- `shared/` - 所有用户可读写
- `temp/` - 所有用户可读写(临时文件)
- `users/{username}/` - 仅对应用户可访问
**特点**:
- 文件管理器展示的根目录
- 所有上传的数据文件存储在此
- 支持多级子目录
**示例路径**:
```
cloud/shared/datasets/data.csv # 共享数据集
cloud/users/guest/workflows/flow.json # 用户工作流
cloud/temp/upload_12345.tmp # 临时文件
```
### custom_nodes/ 目录
**用途**: 自定义节点代码存储
**访问权限**:
- 所有用户共享(读取)
- 需要验证+确认(修改/删除)
**特点**:
- 仅存储 `.py` 文件
- 代码会被动态加载到系统
- 必须通过安全验证
**示例文件**:
```
custom_nodes/__init__.py # Python包标识
custom_nodes/data_filter.py # 数据过滤节点
custom_nodes/text_processor.py # 文本处理节点
```
## 🔄 迁移指南
如果之前在错误位置创建了目录,请按以下步骤迁移:
### 1. 备份数据
```powershell
# 如果 server/cloud 存在
Copy-Item -Recurse server\cloud TraceStudio_cloud_backup
# 如果 server/custom_nodes 存在
Copy-Item -Recurse server\custom_nodes TraceStudio_nodes_backup
```
### 2. 移动到正确位置
```powershell
# 移动 cloud 内容
if (Test-Path server\cloud\users) {
Copy-Item -Recurse server\cloud\* cloud\
}
# 移动 custom_nodes 内容
if (Test-Path server\custom_nodes\*.py) {
Copy-Item server\custom_nodes\*.py custom_nodes\
}
```
### 3. 删除错误目录
```powershell
Remove-Item -Recurse -Force server\cloud
Remove-Item -Recurse -Force server\custom_nodes
```
### 4. 重启服务器验证
```powershell
cd server
python -m uvicorn server.main:app --reload
```
查看启动日志:
```
✅ 文件系统初始化完成: D:\XGame\TraceStudio\cloud
🔌 自定义节点: 2/2 个已加载
```
## 🐛 故障排查
### 问题1: 找不到 cloud 目录
**症状**: `FileNotFoundError: cloud/`
**解决**:
```powershell
# 检查是否在正确位置
cd D:\XGame\TraceStudio
if (!(Test-Path cloud)) { mkdir cloud }
```
### 问题2: 路径显示 server/cloud
**症状**: 日志显示 `D:\XGame\TraceStudio\server\cloud`
**解决**: 检查 `system_config.yaml` 配置是否正确:
```yaml
storage:
cloud_root: "./cloud" # ✅ 正确
# cloud_root: "../cloud" # ❌ 错误(会指向 server/../cloud = 根目录/cloud
```
### 问题3: custom_nodes 未加载
**症状**: `🔌 自定义节点: 0/0 个已加载`
**检查清单**:
1. 确认 `custom_nodes/` 在根目录
2. 确认有 `__init__.py` 文件
3. 确认 `.py` 文件语法正确
4. 查看详细错误日志
## 📊 验证命令
```powershell
# 验证目录结构
cd D:\XGame\TraceStudio
Get-ChildItem -Directory | Where-Object { $_.Name -in 'cloud', 'custom_nodes', 'server', 'web' }
# 预期输出:
# cloud
# custom_nodes
# server
# web
# 验证配置文件
Get-Content server\system_config.yaml | Select-String "cloud_root|custom_nodes_dir"
# 预期输出:
# cloud_root: "./cloud"
# custom_nodes_dir: "./custom_nodes"
```
---
**重要提示**: 修改目录结构后,必须重启服务器才能生效!