Files
disknext/PLAN.md
于小丘 16cec42181 feat: Implement file download token management and restructure file routes
- 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.
2025-12-23 18:12:11 +08:00

3.7 KiB
Raw Permalink Blame History

  • 数据模型初步规划

    • 基类
      • IDUUIDv7
      • 创建时间
      • 更新时间
    • User
      • 用户名 唯一
      • 昵称
      • Argon2化的密码
      • 用户当前的状态 正常/手动封禁/系统封禁 用 StrEnum 存储
      • 已用存储空间
      • 用户积分
      • 默认用户组
      • Optional[两步验证密钥]
      • Optional[WebAuthn 凭证]
      • Optional[头像地址] -> None为昵称首字/图片/Gavatar头像
      • Optional[当前用户组过期时间] -> 用户组过期后回退默认用户组
      • 用户的个人设置 计划中 考虑 BaseModel 进行嵌套
    • Group 与 User 的关系:一个用户组可以有多个用户,但一个用户只能在一个用户组中
    • 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']
      • 是否在新窗口打开