TraceStudio-dev/docs/server1.2/DIRECTORY_STRUCTURE.md
2026-01-09 21:37:02 +08:00

6.1 KiB
Raw Blame 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

storage:
  # 云存储根目录(相对于项目根目录 TraceStudio/
  cloud_root: "./cloud"
  
  # 自定义节点目录(相对于项目根目录 TraceStudio/
  custom_nodes_dir: "./custom_nodes"
  
  # 用户目录结构
  user_dirs:
    - "data"         # 数据文件
    - "workflows"    # 工作流文件
    - "results"      # 结果文件
    - "cache"        # 缓存文件

🔍 路径解析逻辑

1. 项目根目录识别

# server/app/core/user_manager.py
# 项目根目录 = server/ 的上一级目录
project_root = Path(__file__).parent.parent.parent.parent
# 示例: D:\XGame\TraceStudio

2. cloud_root 路径

# 从配置文件读取相对路径
cloud_root_rel = config['storage']['cloud_root']  # "./cloud"

# 解析为绝对路径
CLOUD_ROOT = (project_root / cloud_root_rel).resolve()
# 结果: D:\XGame\TraceStudio\cloud

3. custom_nodes 路径

# 从配置文件读取相对路径
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. 备份数据

# 如果 server/cloud 存在
Copy-Item -Recurse server\cloud TraceStudio_cloud_backup

# 如果 server/custom_nodes 存在
Copy-Item -Recurse server\custom_nodes TraceStudio_nodes_backup

2. 移动到正确位置

# 移动 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. 删除错误目录

Remove-Item -Recurse -Force server\cloud
Remove-Item -Recurse -Force server\custom_nodes

4. 重启服务器验证

cd server
python -m uvicorn server.main:app --reload

查看启动日志:

✅ 文件系统初始化完成: D:\XGame\TraceStudio\cloud
🔌 自定义节点: 2/2 个已加载

🐛 故障排查

问题1: 找不到 cloud 目录

症状: FileNotFoundError: cloud/

解决:

# 检查是否在正确位置
cd D:\XGame\TraceStudio
if (!(Test-Path cloud)) { mkdir cloud }

问题2: 路径显示 server/cloud

症状: 日志显示 D:\XGame\TraceStudio\server\cloud

解决: 检查 system_config.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. 查看详细错误日志

📊 验证命令

# 验证目录结构
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"

重要提示: 修改目录结构后,必须重启服务器才能生效!