# RFC 127: 修复文件夹分类查询参数 **状态**: ✅ 已完成 **创建时间**: 2026-01-20 **作者**: System **类型**: Bug 修复 ## 问题描述 文件夹创建成功但页面不显示,前端报 CORS 错误。经调试发现: 1. **后端代码 Bug**:`FolderRepository.get_by_parent()` 方法缺少 `folder_category` 参数 2. **Docker 配置问题**:容器未正确加载 `.env` 文件中的 CORS 配置 ## 错误信息 ``` TypeError: FolderRepository.get_by_parent() takes from 3 to 5 positional arguments but 6 were given ``` ## 根本原因 `FolderService.get_folders()` 调用 `repository.get_by_parent()` 时传递了 5 个参数: ```python folders = await self.repository.get_by_parent( parent_id, user_id, folder_category, page, page_size ) ``` 但 `FolderRepository.get_by_parent()` 只接受 4 个参数: ```python async def get_by_parent( self, parent_id: Optional[str], owner_id: str, page: int = 1, page_size: int = 20 ) -> List[Folder]: ``` ## 解决方案 ### 1. 修复 Repository 方法签名 **文件**: `server/app/repositories/folder_repository.py` ```python async def get_by_parent( self, parent_id: Optional[str], owner_id: str, folder_category: Optional[int] = None, # 新增参数 page: int = 1, page_size: int = 20 ) -> List[Folder]: """获取指定父文件夹下的子文件夹""" conditions = [ Folder.parent_folder_id == parent_id, Folder.owner_id == owner_id, Folder.deleted_at.is_(None) ] # 如果指定了 folder_category,添加过滤条件 if folder_category is not None: conditions.append(Folder.folder_category == folder_category) statement = select(Folder).where( and_(*conditions) ).order_by(Folder.sort_order, Folder.created_at).offset((page - 1) * page_size).limit(page_size) result = await self.session.exec(statement) return list(result.all()) ``` 同样修复 `count_by_parent()` 方法: ```python async def count_by_parent( self, parent_id: Optional[str], owner_id: str, folder_category: Optional[int] = None # 新增参数 ) -> int: """统计指定父文件夹下的子文件夹数量""" conditions = [ Folder.parent_folder_id == parent_id, Folder.owner_id == owner_id, Folder.deleted_at.is_(None) ] # 如果指定了 folder_category,添加过滤条件 if folder_category is not None: conditions.append(Folder.folder_category == folder_category) statement = select(func.count(Folder.id)).where(and_(*conditions)) result = await self.session.exec(statement) return result.one() ``` ### 2. 修复 Docker Compose 配置 **文件**: `server/docker-compose.yml` ```yaml app: build: context: . dockerfile: Dockerfile container_name: jointo-server-app ports: - "6170:6170" volumes: - .:/app - /app/venv env_file: - .env # 添加此行 environment: - DATABASE_URL=postgresql+asyncpg://postgres:postgres@postgres:5432/jointo - REDIS_URL=redis://redis:6379/0 - MINIO_ENDPOINT=minio:9000 - CORS_ORIGINS=["http://localhost:6160","http://192.168.31.178:6160"] # 显式添加 ``` ## 测试验证 1. ✅ 创建文件夹成功 2. ✅ 文件夹正确显示在页面上 3. ✅ API 请求无 CORS 错误 4. ✅ 虚拟根系统正常工作 ## 影响范围 - `server/app/repositories/folder_repository.py` - `server/docker-compose.yml` ## 相关文档 - [RFC 123: 文件夹分类枚举设计](./123-folder-category-enum.md) - [RFC 124: 文件夹分类前端实现](../client/rfcs/124-folder-category-frontend.md)