- Added DownloadTokenManager for creating and verifying JWT download tokens. - Introduced new download routes for creating download tokens and downloading files using tokens. - Restructured file upload routes into a dedicated sub-router. - Updated file upload session management with improved error handling and response structures. - Created a new MCP (Microservice Communication Protocol) router with basic request and response models. - Added base models for MCP requests and responses, including method enumeration.
3.7 KiB
3.7 KiB
-
数据模型初步规划
- 基类
- ID:UUIDv7
- 创建时间
- 更新时间
- User
- 用户名 唯一
- 昵称
- Argon2化的密码
- 用户当前的状态
正常/手动封禁/系统封禁用 StrEnum 存储 - 已用存储空间
- 用户积分
- 默认用户组
- Optional[两步验证密钥]
- Optional[WebAuthn 凭证]
- Optional[头像地址] -> None为昵称首字/图片/Gavatar头像
- Optional[当前用户组过期时间] -> 用户组过期后回退默认用户组
- 用户的个人设置 计划中 考虑 BaseModel 进行嵌套
- Group
与 User 的关系:一个用户组可以有多个用户,但一个用户只能在一个用户组中- 组名 唯一
- list允许的存储策略, 该策略下最大允许使用的容量, 该策略下允许上传文件的白名单/黑名单
- 默认存储策略
- bool[分享内容]
- bool[是否管理员组]
- 速度限制
- bool[打包下载]
- bool[创建压缩/解压缩任务]
- bool[WebDAV]
- bool[WebDAV 反代]
- bool[离线下载]
- Object
计划:把 file 和 folder 合并为一个 Object 表,通过对象类型区分- 对象名
- 区分大小写
- 禁止名称为特殊字段 (如
/,\,:,*,?,<,>,:,")
- 对象类型[file, folder, link]
- 当对象类型为file时
- 源文件名
- 文件大小
- 分块上传会话ID
- 文件MD5, SHA1, SHA256
- 文件元数据
- 音频:歌名、歌手名、专辑、流派...
- 图片: 尺寸、ISO、曝光、拍摄设备、地理位置...
- 其他需要记录的元数据
- 当对象类型为 folder 时
- 当前文件夹的视图(网格/列表/画廊)
- 排序规则(按名称/大小/上传时间/修改时间)
- 排序方式(升序/降序)
- 当对象类型为 link 时
- 目标对象ID
- 外键
- 用户ID 用于确保该对象的归属
- 目录ID 用于定位该对象存在哪个目录
- 策略ID 用于定位该对象存储于哪个存储策略
- 对象名
- Policy
- 存储策略名
- 策略类型(如
本机,从机,s3,OSS,COS等) - 服务器地址(本机则为路径)
- 存储桶名称
- 允许上传文件的最大字节数
- 目录命名规则
- 文件命名规则
- 文件后缀白名单/黑名单
- 分片上传大小
待研究
- Tag
- 标签名称
- 标签图标
- 标签颜色
- 外键
- 用户ID 用于确保该标签的归属
- 基类
-
运行环境与目标
- 数据库类型:主要支持 PostgreSQL 18,考虑兼容 SQLite/MySQL/早期版本PostgreSQL
- 驱动版本:做一定的向下兼容,主要支持 Python 3.13+
- 异步栈:全量异步 AsyncSession,不接受兼容同步
-
业务语义与数据模型
- 时间与时区:统一存储 UTC,再根据用户选择的时区计算本地化时间
- 文件/目录命名规则
- 文件名在同一目录下唯一
- 目录名在同一账户下的同一父目录下唯一
- 资源分享
- 用户可以分享单个文件,也可以分享整个目录
-
关系与级联
- 删除文件夹时,同时删除该文件夹内的所有子文件夹及其所有文件
- 删除用户时,同时删除该用户的所有文件,文件夹,分享,Tag
-
文件预览与编辑
- 预览应用 Literal['嵌入网页式应用', 'WOPI协议式应用']
- 是否启用
- WOPI协议式应用
https://{server_host}/hosting/discovery - 嵌入网页式应用
- 图标
- 名称
- 支持的文件类型列表
- 预览URL模板 支持魔法变量
- 最大文件大小
- 平台 支持列表 ['all', 'mobile', 'desktop']
- 是否在新窗口打开
- 预览应用 Literal['嵌入网页式应用', 'WOPI协议式应用']