# MySQL备份示例
mysqldump -u root -p webcode > webcode_backup_$(date +%Y%m%d).sql执行SQL脚本:docs/workspace-database-migration.sql
mysql -u root -p webcode < docs/workspace-database-migration.sql执行PowerShell脚本迁移现有会话数据:
# 先模拟执行,查看迁移效果
.\docs\workspace-data-migration.ps1 -ConnectionString "server=localhost;database=webcode;uid=root;pwd=your_password;" -DryRun
# 确认无误后执行实际迁移
.\docs\workspace-data-migration.ps1 -ConnectionString "server=localhost;database=webcode;uid=root;pwd=your_password;"在 Program.cs 中添加后台清理服务:
// 工作区清理后台服务
builder.Services.AddHostedService<WorkspaceCleanupBackgroundService>();确保以下服务已正确注册(通常会被自动扫描):
- WorkspaceRegistryService
- WorkspaceAuthorizationService
- SessionDirectoryService
- WorkspaceCleanupBackgroundService
-
Web端测试:
- 新建会话时可以看到目录选择选项
- 会话列表显示目录信息
- 可以切换会话的工作目录
- 目录授权功能正常工作
-
飞书端测试:
- 新建会话时可以选择已有目录
- 会话管理卡片显示目录信息
- 飞书端和Web端目录数据同步
查看日志确认清理服务正常启动:
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
工作区清理后台服务已启动
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
下一次工作区清理时间: 2026-03-13 02:00:00
可以通过API手动触发清理任务:
POST /api/workspace/cleanup
Authorization: Bearer <token>清理任务执行后会输出详细日志:
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
=== 开始执行工作区清理任务 ===
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
1. 清理过期目录授权...
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
✅ 已清理过期授权记录数: 5
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
2. 清理孤立会话目录映射...
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
✅ 已清理孤立映射记录数: 2
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
3. 清理无效目录记录...
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
✅ 已清理无效目录记录数: 0
信息: WebCodeCli.Domain.Domain.Service.WorkspaceCleanupBackgroundService[0]
=== 工作区清理任务完成 ===
如果迁移出现问题,使用备份的数据库文件恢复:
mysql -u root -p webcode < webcode_backup_20260312.sql如果新版本出现问题,回滚到上一个版本即可,新功能不影响原有业务逻辑。
A: 不会。迁移过程只是将现有工作区路径注册到目录表中,不会修改实际文件路径。
A: 是的。目录按用户隔离,不同用户之间看不到对方的目录,除非被授权。
A: 不会。清理任务只会清理数据库中的过期记录,不会删除实际的文件目录。
A: 可以。修改 WorkspaceCleanupBackgroundService.cs 中的 _runTime 字段即可,默认是每日凌晨2点。