Browse Source

📝 docs(architecture): 更新文件管理功能相关文档

- 添加Files.tsx文件管理页面到客户端目录结构
- 记录MinIO上传工具的utils/minio.ts文件
- 更新服务器路由结构,添加文件管理路由配置
- 完善文件业务模块文档,包含实体、服务和测试文件
- 详细描述文件管理服务的核心功能,包括单文件上传和多部分分段上传
- 更新数据模型文档,添加File接口和相关DTO定义
- 在技术栈文档中明确MinIO客户端SDK的集成情况
yourname 2 tháng trước cách đây
mục cha
commit
9099d37617

+ 20 - 1
docs/architecture/component-architecture.md

@@ -22,7 +22,8 @@ src/client/
 │   ├── pages/            # 页面组件
 │   │   ├── Dashboard.tsx         # 仪表板
 │   │   ├── Login.tsx             # 登录页面
-│   │   └── Users.tsx             # 用户管理
+│   │   ├── Users.tsx             # 用户管理
+│   │   └── Files.tsx             # 文件管理页面
 │   ├── routes.tsx        # 路由配置
 │   └── index.tsx         # 管理后台入口
 ├── home/                 # 用户前台应用
@@ -35,6 +36,7 @@ src/client/
 ├── hooks/               # 共享Hooks
 ├── lib/                 # 工具库
 ├── utils/               # 工具函数
+│   └── minio.ts         # MinIO上传工具
 └── api.ts               # API客户端配置
 ```
 
@@ -62,6 +64,11 @@ src/server/
 │   │   ├── [id].ts        # 用户详情路由
 │   │   └── __tests__/     # 路由测试
 │   ├── roles/             # 角色管理路由
+│   ├── files/              # 文件管理路由
+│   │   ├── multipart-policy/    # 多部分上传策略
+│   │   ├── multipart-complete/  # 完成多部分上传
+│   │   ├── [id]/               # 文件操作路由
+│   │   └── upload-policy/      # 上传策略路由
 │   └── __integration_tests__/  # 集成测试
 ├── modules/               # 业务模块层
 │   ├── auth/              # 认证业务模块
@@ -71,6 +78,12 @@ src/server/
 │   │   ├── user.entity.ts  # 用户实体
 │   │   ├── user.service.ts # 用户服务
 │   │   └── __tests__/     # 用户测试
+│   ├── files/              # 文件业务模块
+│   │   ├── file.entity.ts  # 文件实体
+│   │   ├── file.service.ts # 文件服务
+│   │   ├── minio.service.ts # MinIO服务
+│   │   ├── file.schema.ts  # 文件验证Schema
+│   │   └── __tests__/     # 文件测试
 ├── utils/                 # 工具层
 │   ├── generic-crud.service.ts  # 通用CRUD服务
 │   ├── generic-crud.routes.ts   # 通用CRUD路由
@@ -109,6 +122,12 @@ src/server/
 **文件管理服务**:
 - **责任**: 提供MinIO对象存储集成,支持文件上传、下载、删除等操作
 - **现状**: 已实现完整功能,支持分段上传、预签名URL生成
+- **核心功能**:
+  - 单文件上传(≤5MB)
+  - 多部分分段上传(>5MB大文件)
+  - 预签名URL生成(支持下载和直接访问)
+  - 文件元数据管理(数据库记录)
+  - 文件删除(同时删除MinIO对象和数据库记录)
 - **优化重点**: 增强大文件处理能力,优化上传性能
 
 ## 组件交互

+ 50 - 0
docs/architecture/data-model-schema-changes.md

@@ -72,6 +72,56 @@ export interface UpdateUserDto {
   roleIds?: number[];
 }
 
+// 文件实体接口
+export interface File {
+  id: number;
+  name: string;
+  type: string | null;
+  size: number | null;
+  path: string;
+  description: string | null;
+  uploadUserId: number;
+  uploadUser: User;
+  uploadTime: Date;
+  lastUpdated: Date | null;
+  createdAt: Date;
+  updatedAt: Date;
+  fullUrl: Promise<string>; // 异步获取预签名URL
+}
+
+// 文件创建DTO
+export interface CreateFileDto {
+  name: string;
+  type?: string;
+  size?: number;
+  description?: string;
+  uploadUserId: number;
+}
+
+// 多部分上传策略响应
+export interface MultipartUploadPolicy {
+  uploadId: string;
+  bucket: string;
+  key: string;
+  host: string;
+  partUrls: string[];
+}
+
+// 上传策略响应
+export interface UploadPolicy {
+  uploadPolicy: {
+    'x-amz-algorithm': string;
+    'x-amz-credential': string;
+    'x-amz-date': string;
+    'x-amz-security-token'?: string;
+    policy: string;
+    'x-amz-signature': string;
+    host: string;
+    key: string;
+    bucket: string;
+  };
+}
+
 // 分页响应接口
 export interface PaginatedResponse<T> {
   data: T[];

+ 11 - 0
docs/architecture/source-tree.md

@@ -48,6 +48,11 @@ d8d-starter/
 │   │   │   │   ├── [id].ts     # 用户详情路由
 │   │   │   │   └── __tests__/  # 路由测试
 │   │   │   ├── roles/          # 角色管理路由
+│   │   │   ├── files/          # 文件管理路由
+│   │   │   │   ├── multipart-policy/    # 多部分上传策略
+│   │   │   │   ├── multipart-complete/  # 完成多部分上传
+│   │   │   │   ├── [id]/               # 文件操作路由
+│   │   │   │   └── upload-policy/      # 上传策略路由
 │   │   │   └── __integration_tests__/  # 集成测试
 │   │   ├── modules/            # 业务模块
 │   │   │   ├── auth/           # 认证业务模块
@@ -57,6 +62,12 @@ d8d-starter/
 │   │   │   │   ├── user.entity.ts  # 用户实体
 │   │   │   │   ├── user.service.ts # 用户服务
 │   │   │   │   └── __tests__/  # 用户测试
+│   │   │   ├── files/          # 文件业务模块
+│   │   │   │   ├── file.entity.ts  # 文件实体
+│   │   │   │   ├── file.service.ts # 文件服务
+│   │   │   │   ├── minio.service.ts # MinIO服务
+│   │   │   │   ├── file.schema.ts  # 文件验证Schema
+│   │   │   │   └── __tests__/  # 文件测试
 │   │   ├── utils/              # 工具层
 │   │   │   ├── generic-crud.service.ts  # 通用CRUD服务
 │   │   │   ├── generic-crud.routes.ts   # 通用CRUD路由

+ 2 - 1
docs/architecture/tech-stack.md

@@ -25,4 +25,5 @@
 | Testing Library | 13.x | React组件测试 | 提供组件级测试能力 | 与React项目集成 |
 | hono/testing | 内置 | API端点测试 | 验证API功能和集成 | Hono官方测试工具,更好的类型安全 |
 | node-cron | latest | 定时任务调度 | Node.js定时任务调度库 | 集成到应用启动流程 |
-| MinIO | latest | 对象存储服务 | 提供可扩展的文件存储解决方案,替代传统文件系统存储 | 通过MinIO客户端SDK集成 |
+| MinIO | latest | 对象存储服务 | 提供可扩展的文件存储解决方案,支持大文件上传和分段上传 | 通过MinIO客户端SDK集成 |
+| MinIO客户端SDK | latest | MinIO API集成 | 提供与MinIO服务的完整交互能力 | 后端服务集成 |