You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
变更日志:文件夹分类系统前端实现
日期: 2026-01-21
版本: v1.0.0
类型: 功能实现
概述
完成文件夹分类系统的前端实现,使用虚拟根节点方式展示"我的项目"和"协作项目",对接后端 folder_category 字段。
新增功能
1. 虚拟根节点系统
- 定义虚拟根 ID:
virtual-mine(我的项目)、virtual-collab(协作项目) - 提供工具函数:
isVirtualRoot(),getVirtualRootCategory(),getVirtualRootById() - 虚拟根不对应数据库记录,仅用于前端导航
2. 文件夹分类类型
- 新增
FolderCategory常量对象(兼容erasableSyntaxOnly配置) - 值:
MY_PROJECTS = 1,COLLABORATIVE_PROJECTS = 2 - 对应后端 SMALLINT 字段
3. API 层增强
folderApi.getAll()支持folderCategory查询参数- 创建文件夹时自动处理虚拟根 ID 转换
4. 创建文件夹逻辑
- 在虚拟根下创建:
parentFolderId = undefined, 指定folderCategory - 在真实文件夹下创建:指定
parentFolderId,自动继承分类
文件变更
新增
client/src/types/folder.ts- 文件夹类型定义
修改
client/src/services/api/folders.ts- API 层更新client/src/hooks/api/useFolders.ts- Hooks 更新client/src/pages/ProjectsPage.tsx- 使用虚拟根 IDclient/src/components/features/project/CreateFolderModal.tsx- 创建逻辑更新client/src/types/project-view.ts- 废弃旧常量
文档
docs/client/rfcs/124-folder-category-frontend.md- 实现 RFCdocs/client/changelogs/2026-01-21-folder-category.md- 本变更日志
Breaking Changes
无。旧的 ROOT_ID_MINE 和 ROOT_ID_COLLAB 已标记为废弃但未删除,保持向后兼容。
迁移指南
如果其他组件使用了旧的根 ID 常量:
// 旧代码
import { ROOT_ID_MINE, ROOT_ID_COLLAB } from '@/types/project-view';
// 新代码
import { VIRTUAL_ROOTS } from '@/types/folder';
const mineId = VIRTUAL_ROOTS.mine.id;
const collabId = VIRTUAL_ROOTS.collab.id;
测试建议
- 测试在"我的项目"下创建文件夹
- 测试在"协作项目"下创建文件夹
- 测试在子文件夹下创建文件夹
- 验证面包屑导航
- 验证搜索功能限定在当前分类