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

变更日志:文件夹分类系统前端实现

日期: 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 - 使用虚拟根 ID
  • client/src/components/features/project/CreateFolderModal.tsx - 创建逻辑更新
  • client/src/types/project-view.ts - 废弃旧常量

文档

  • docs/client/rfcs/124-folder-category-frontend.md - 实现 RFC
  • docs/client/changelogs/2026-01-21-folder-category.md - 本变更日志

Breaking Changes

无。旧的 ROOT_ID_MINEROOT_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;

测试建议

  1. 测试在"我的项目"下创建文件夹
  2. 测试在"协作项目"下创建文件夹
  3. 测试在子文件夹下创建文件夹
  4. 验证面包屑导航
  5. 验证搜索功能限定在当前分类

相关文档