执行方式:使用 subagent-driven-development,前端委派一个独立任务,主代理负责后端、联调和验收。用户已确认 HTML 原型并授权实施;在当前功能分支保留其他未提交改动,不提交或部署无关内容。
Goal: 在门户内实现文件夹、上传、指定人员分享、查看/下载和上传人/超级管理员删除。
Architecture: 复用 FastAPI、门户认证、MySQL 和 MinIO。三张独立业务表存目录、文档、分享关系;文档使用专用私有桶,下载由认证接口代理。左侧树同屏显示“我的文档”“分享给我”,管理员额外显示“全部文档”。旧 Cloudreve 数据和服务保留,门户不再调用旧 SSO。
Tech Stack: Python 3.9 / SQLAlchemy / Pydantic v2 / Vue 3 / Element Plus / Fresh Mint。
基础路径 /web/doclib:
type Scope = 'mine' | 'shared' | 'all'
type Person = { id: string; name: string; deptName: string }
type FolderNode = { id: string; name: string; scope: Scope; folderId: string; fullPath: string; ownerId: string; canManage: boolean; count: number; children: FolderNode[] }
type Document = { id: string; name: string; folderId: string; folderPath: string; size: number; contentType: string; ownerId: string; ownerName: string; createTime: string; updateTime: string; canManage: boolean; shares: Person[] }
// GET /tree -> { nodes: FolderNode[]; isSuperAdmin: boolean; maxUploadBytes: number }
// GET /files?scope=mine&folderId=&keyword=&page=1&pageSize=20 -> {list: Document[]; total:number}
// GET /files/{id} -> Document
// POST /folders {name,parentId} -> FolderNode
// PUT /folders/{id} {name} -> FolderNode
// DELETE /folders/{id} -> null
// POST /upload multipart(file,folderId) -> Document,单文件立即上传
// PUT /files/{id}/shares {userIds:string[]} -> Document,空数组撤回全部分享
// POST /files/batch-delete {ids:string[]} -> null,全有权限才执行
// GET /files/{id}/download -> application/octet-stream + attachment
// GET /users?keyword= -> Person[],同租户有效人员,上限100,姓名/账号搜索
Files: backend/app/models/doclib.py, backend/app/schemas/doclib.py, backend/app/services/doclib_service.py, backend/app/services/doclib_storage.py, backend/app/api/doclib.py, backend/app/core/config.py, backend/app/core/doclib_upload_route.py, docs/sql/20261026_simple_doclib.sql, backend/tests/test_doclib.py。
cd backend && venv/bin/python -m pytest tests/test_doclib.py -q。Files: web-admin/src/api/doclib.ts, web-admin/src/views/doclib/enter/index.vue 及同目录拆分组件,文档库跳转代码。
docs/demos/simple-doclib-demo.html 与 web-admin/src/views/system/user/index.vue;原型中的两个根节点及文件夹树同时展示。/doclib/enter。doclib/需求说明.md;仅在确认目标为开发环境后执行开发库新增表,不改旧库。2026-10-26:前后端实现与两阶段审查已完成。修复目录选择缺失、下载超时、分享旧快照竞态、上传失败残留对象及multipart/伪装正文预读问题。后端28测试,前端7测试与隔离浏览器回归通过;生产构建通过。开发库仅新增三表,私有桶和真实上传/匿名拒绝/分享撤回已验证,样例数据软删除。生产未发布,旧服务未停止。工作区保留,未commit,未修改无关功能。