feat: 添加存储策略选项模型及其与策略的关系,更新相关文档

This commit is contained in:
2025-12-22 15:12:13 +08:00
parent 6c3a601259
commit 47a4756227
3 changed files with 142 additions and 73 deletions

View File

@@ -188,11 +188,31 @@ models/
| `dir_name_rule` | `str?` | 目录命名规则 |
| `file_name_rule` | `str?` | 文件命名规则 |
| `is_origin_link_enable` | `bool` | 是否开启源链接访问 |
| `options` | `str?` | 其他选项JSON 格式) |
**关系**:
- `options`: 一对一关联 PolicyOptions
---
### 7. Object统一对象
### 7. PolicyOptions存储策略选项
**表名**: `policyoptions`
**基类**: `UUIDTableBase`
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | `UUID` | 主键 |
| `policy_id` | `UUID` | 关联的策略(外键,唯一) |
| `token` | `str?` | 访问令牌 |
| `file_type` | `str?` | 允许的文件类型 |
| `mimetype` | `str?` | MIME 类型 |
| `od_redirect` | `str?` | OneDrive 重定向地址 |
| `chunk_size` | `int` | 分片上传大小(字节),默认 50MB |
| `s3_path_style` | `bool` | 是否使用 S3 路径风格 |
---
### 8. Object统一对象
**表名**: `object`
**基类**: `UUIDTableBase`
@@ -219,7 +239,7 @@ models/
---
### 8. SourceLink源链接
### 9. SourceLink源链接
**表名**: `sourcelink`
**基类**: `TableBase`
@@ -233,7 +253,7 @@ models/
---
### 9. Share分享
### 10. Share分享
**表名**: `share`
**基类**: `TableBase`
@@ -255,7 +275,7 @@ models/
---
### 10. Report举报
### 11. Report举报
**表名**: `report`
**基类**: `TableBase`
@@ -269,7 +289,7 @@ models/
---
### 11. Tag标签
### 12. Tag标签
**表名**: `tag`
**基类**: `TableBase`
@@ -288,7 +308,7 @@ models/
---
### 12. Task任务
### 13. Task任务
**表名**: `task`
**基类**: `TableBase`
@@ -305,7 +325,7 @@ models/
---
### 13. Download离线下载
### 14. Download离线下载
**表名**: `download`
**基类**: `UUIDTableBase`
@@ -332,7 +352,7 @@ models/
---
### 14. Node节点
### 15. Node节点
**表名**: `node`
**基类**: `TableBase`
@@ -352,7 +372,7 @@ models/
---
### 15. Order订单
### 16. Order订单
**表名**: `order`
**基类**: `TableBase`
@@ -372,7 +392,7 @@ models/
---
### 16. Redeem兑换码
### 17. Redeem兑换码
**表名**: `redeem`
**基类**: `TableBase`
@@ -388,7 +408,7 @@ models/
---
### 17. StoragePack容量包
### 18. StoragePack容量包
**表名**: `storagepack`
**基类**: `TableBase`
@@ -404,7 +424,7 @@ models/
---
### 18. WebDAVWebDAV 账户)
### 19. WebDAVWebDAV 账户)
**表名**: `webdav`
**基类**: `TableBase`
@@ -423,7 +443,7 @@ models/
---
### 19. Setting系统设置
### 20. Setting系统设置
**表名**: `setting`
**基类**: `TableBase`
@@ -448,52 +468,56 @@ models/
```
┌─────────────────────────────────────────────────────────┐
│ 一对一关系
│ 一对一关系 │
├─────────────────────────────────────────────────────────┤
│ │
│ Group ◄──────────────────────── GroupOptions │
│ Group ◄────────────────────────> GroupOptions │
│ group_id (unique FK) │
│ │
│ Policy ◄───────────────────────> PolicyOptions │
│ policy_id (unique FK) │
│ │
└─────────────────────────────────────────────────────────┘
```
| 主表 | 从表 | 外键 | 说明 |
|------|------|------|------|
| Group | GroupOptions | `group_id` (unique) | 每个用户组有且仅有一个选项配置 |
| Policy | PolicyOptions | `policy_id` (unique) | 每个存储策略有且仅有一个扩展选项 |
---
### 一对多关系
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ 一对多关系
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────── Download │
│ │ │
│ ├────── Object ◄──────┬────── SourceLink │
│ │ │ │ │
│ │ │ │ └────── Share ────── Report│
│ Group ────── User ───┼─────────┘ │ │
┌─────────────────────────────────────────────────────────────────────────────
一对多关系 │
├─────────────────────────────────────────────────────────────────────────────
│ ┌──────> Download
│ │
│ ├──────> Object ◄──────┬──────> SourceLink
│ │ │
│ │ │ │ └──────> Share ──────> Report
│ Group ──────> User ───┼─────────┘ │
│ │ │ │ (自引用parent-children) │
│ │ ├────── Order │
│ │ │ │
│ │ ├────── StoragePack │
│ │ │ │
│ │ ├────── Tag │
│ │ │ │
│ │ ├────── Task ────── Download │
│ │ │
│ │ ├────── WebDAV │ │
│ │ │ │ │
│ │ └────── UserAuthn │ │
│ │ │ │
│ └────── Policy ────── Object │ │
│ │ │
│ Node ───────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
│ │ ├──────> Order
│ │ │
│ │ ├──────> StoragePack
│ │ │
│ │ ├──────> Tag
│ │ │
│ │ ├──────> Task ──────> Download
│ │ │
│ │ ├──────> WebDAV │
│ │ │ │
│ │ └──────> UserAuthn │
│ │ │
│ └──────> Policy ──────> Object │
│ │
│ Node ───────────────┘
└─────────────────────────────────────────────────────────────────────────────
```
| 一端 | 多端 | 外键 | 说明 |
@@ -523,13 +547,13 @@ models/
```
┌─────────────────────────────────────────────────────────┐
│ 多对多关系
│ 多对多关系 │
├─────────────────────────────────────────────────────────┤
│ │
│ Group ◄────── GroupPolicyLink ────── Policy │
│ Group ◄────── GroupPolicyLink ──────> Policy │
│ │
│ - 一个用户组可以使用多个存储策略
│ - 一个存储策略可以被多个用户组使用
│ - 一个用户组可以使用多个存储策略 │
│ - 一个存储策略可以被多个用户组使用 │
│ │
└─────────────────────────────────────────────────────────┘
```
@@ -545,20 +569,20 @@ models/
```
┌──────────────┐
│ Setting │
│ (独立表)
│ (独立表) │
└──────────────┘
┌──────────────┐
│ Redeem │
│ (独立表)
│ (独立表) │
└──────────────┘
┌──────────────┐ 1:1 ┌──────────────┐
│ Group │◄────────────│ GroupOptions │
│ Group │◄────────────>│ GroupOptions │
│ │ └──────────────┘
│ │
│ │──────┐ M:N ┌──────────────────┐
│ │ └──────│ GroupPolicyLink │◄───┐
│ │ └──────>│ GroupPolicyLink │◄───┐
└──────┬───────┘ └──────────────────┘ │
│ │
│ 1:N │
@@ -566,44 +590,44 @@ models/
┌──────────────┐ ┌──────────────┐ │
│ User │ │ Policy │◄───────┘
│ │ │ │
│ │ ─────────────
│ │ │ 1:N
│ │ │ │◄────────────>┌───────────────┐
│ │ └──────┬───────┘ 1:1 │ PolicyOptions │
│ │ │ 1:N └───────────────┘
│ │──────────────┐ │
└──────┬───────┘ │ │
│ │ ▼
│ 1:N │ ┌──────────────┐ ┌──────────────┐
│ │ │ Object │◄────│ Object │
│ │ │ Object │◄────>│ Object │
│ │ │ │ │ (children) │
│ │ │ │ └──────────────┘
├──────────────────────┼─┤ │
│ │ └──────┬───────┘
│ │ │
│ │ │ 1:N
│ │ ├─────────────►┌──────────────┐
│ │ │ │ SourceLink │
│ │ │ 1:N ┌──────────────┐
│ │ ├─────────────>│ SourceLink │
│ │ │ └──────────────┘
│ │ │
│ │ │
│ │ │ 1:N
│ │ └─────────────►┌──────────────┐
│ │ │ Share │
│ │ │ │─────► Report
│ │ │ 1:N ┌──────────────┐
│ │ └─────────────>│ Share │─────> Report
│ │ └──────────────┘
│ │
│ │
├── Download ◄────────┼───────────────────────── Task
├──> Download ◄────────┼───────────────────────── Task
│ ▲ │
│ │ │
│ │ │
│ └─────────────┼─────────────────────── Node
│ │
├── Order │
├──> Order │
│ │
├── StoragePack │
├──> StoragePack │
│ │
├── Tag │
├──> Tag │
│ │
├── WebDAV │
├──> WebDAV │
│ │
└── UserAuthn │
└──> UserAuthn │
```
@@ -667,6 +691,12 @@ class AvatarType(StrEnum):
| `GroupOptionsBase` | 用户组选项基础字段 |
| `GroupResponse` | 用户组响应 |
### 存储策略相关
| DTO | 说明 |
|-----|------|
| `PolicyOptionsBase` | 存储策略选项基础字段 |
### 对象相关
| DTO | 说明 |