MarkBase架构升级:Multi-Volume Virtual Tree + Dual-View Management + Git Remote修正
核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
This commit is contained in:
284
docs/DOWNLOAD_SERVICE_GUIDE.md
Normal file
284
docs/DOWNLOAD_SERVICE_GUIDE.md
Normal file
@@ -0,0 +1,284 @@
|
||||
# AccuSys Download Service Guide
|
||||
|
||||
## Overview
|
||||
|
||||
**取代OneDrive的企业下载服务**
|
||||
|
||||
- 域名:`download.accusys.ddns.net`(HTTPS via Caddy)
|
||||
- 服务:MarkBase v2.3(Rust + Axum)
|
||||
- 存储:`/Users/accusys/Downloads/:user_id/`
|
||||
|
||||
---
|
||||
|
||||
## Current Features (Phase 1 Complete)
|
||||
|
||||
### Upload Service ✅
|
||||
|
||||
**Web界面:** https://download.accusys.ddns.net/upload
|
||||
|
||||
**功能:**
|
||||
- ✅ 无限制上传(DefaultBodyLimit::disable())
|
||||
- ✅ 文件夹批量上传(webkitdirectory)
|
||||
- ✅ 空文件支持(0 bytes)
|
||||
- ✅ 空子目录支持(.keep workaround)
|
||||
- ✅ SHA256完整性校验
|
||||
- ✅ 30分钟超时保护(AbortController)
|
||||
- ✅ 实时进度显示
|
||||
|
||||
**API:**
|
||||
```
|
||||
POST /api/v2/upload-unlimited/:user_id
|
||||
```
|
||||
|
||||
**测试:**
|
||||
- ✅ 50MB文件上传成功
|
||||
- ✅ 子目录创建成功
|
||||
- ✅ 空文件上传成功
|
||||
- ✅ SHA256校验正确
|
||||
|
||||
---
|
||||
|
||||
### File List Service ✅ (NEW)
|
||||
|
||||
**Web界面:** https://download.accusys.ddns.net/files
|
||||
|
||||
**功能:**
|
||||
- ✅ 完整文件列表(total_files, total_size)
|
||||
- ✅ 文件详情(filename, size, hash, path, upload_time)
|
||||
- ✅ 自动刷新按钮
|
||||
- ✅ 企业级UI设计(Apple风格)
|
||||
|
||||
**API:**
|
||||
```
|
||||
GET /api/v2/files/:user_id # 获取完整文件列表
|
||||
GET /api/v2/files/:user_id/:filename # 获取单个文件信息
|
||||
```
|
||||
|
||||
**响应示例:**
|
||||
```json
|
||||
{
|
||||
"user_id": "accusys",
|
||||
"total_files": 9,
|
||||
"total_size": 589893,
|
||||
"files": [
|
||||
{
|
||||
"filename": "Carousel01.png",
|
||||
"file_size": 573397,
|
||||
"file_hash": "0612cd4742caf17e77a5b00fa01bc4bff1820d842254f32a66f69758f2289e7e",
|
||||
"relative_path": "Carousel01.png",
|
||||
"upload_time": "2026-06-09T05:00:37Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Usage Guide
|
||||
|
||||
### 1. Upload Files (Single or Folder)
|
||||
|
||||
**步骤:**
|
||||
|
||||
```bash
|
||||
# 1. 准备空目录(如果需要)
|
||||
bash scripts/prepare_upload.sh /path/to/source_folder
|
||||
|
||||
# 2. 打开Web界面
|
||||
https://download.accusys.ddns.net/upload
|
||||
|
||||
# 3. 选择文件夹(webkitdirectory支持)
|
||||
- 点击"Select Folder"
|
||||
- 选择整个文件夹
|
||||
- 自动上传所有文件
|
||||
- 实时进度显示
|
||||
|
||||
# 4. 验证上传
|
||||
https://download.accusys.ddns.net/files
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. View Uploaded Files
|
||||
|
||||
**Web界面:** https://download.accusys.ddns.net/files
|
||||
|
||||
**功能:**
|
||||
- 显示总文件数、总大小
|
||||
- 列出所有文件(filename, size, hash, path, time)
|
||||
- 实时刷新按钮
|
||||
|
||||
**API方式:**
|
||||
```bash
|
||||
# 获取完整文件列表
|
||||
curl -s https://download.accusys.ddns.net/api/v2/files/accusys | jq '.total_files, .total_size'
|
||||
|
||||
# 获取单个文件信息
|
||||
curl -s https://download.accusys.ddns.net/api/v2/files/accusys/Carousel01.png | jq '.file_size, .file_hash'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Next Steps (Phase 2-5)
|
||||
|
||||
### Phase 2: Product List API (TODO)
|
||||
|
||||
**目标:**按产品系列分类文件
|
||||
|
||||
**数据库设计:**
|
||||
```sql
|
||||
CREATE TABLE products (
|
||||
id INTEGER PRIMARY KEY,
|
||||
product_name TEXT,
|
||||
series TEXT, -- ExaSAN-DAS, ExaSAN-SAN, Gamma, T-Share, InneRAID, Legacy
|
||||
description TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE product_files (
|
||||
id INTEGER PRIMARY KEY,
|
||||
product_id INTEGER,
|
||||
file_path TEXT,
|
||||
download_count INTEGER DEFAULT 0,
|
||||
uploaded_at TEXT,
|
||||
FOREIGN KEY (product_id) REFERENCES products(id)
|
||||
);
|
||||
```
|
||||
|
||||
**API设计:**
|
||||
```
|
||||
GET /api/v2/products # 获取产品列表
|
||||
GET /api/v2/products/:series # 获取特定系列产品
|
||||
GET /api/v2/products/:id/files # 获取产品的文件列表
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: Download API (TODO)
|
||||
|
||||
**目标:**提供下载URL
|
||||
|
||||
**API设计:**
|
||||
```
|
||||
GET /api/v2/download/:file_id # 下载文件(增加下载计数)
|
||||
GET /api/v2/download/stats # 下载统计
|
||||
```
|
||||
|
||||
**功能:**
|
||||
- 文件下载(直接下载到浏览器)
|
||||
- SHA256校验(下载后验证)
|
||||
- 下载统计(每个文件下载次数)
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: File Migration (TODO)
|
||||
|
||||
**目标:**迁移290个文件到正式目录
|
||||
|
||||
**迁移策略:**
|
||||
```bash
|
||||
# 1. 创建产品目录结构
|
||||
mkdir -p /Users/accusys/Downloads/accusys/{ExaSAN-DAS,ExaSAN-SAN,Gamma,T-Share,InneRAID,Legacy}
|
||||
|
||||
# 2. 上传290个文件(按产品分类)
|
||||
https://download.accusys.ddns.net/upload
|
||||
|
||||
# 3. 导入到数据库
|
||||
INSERT INTO product_files ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 5: Download Statistics (TODO)
|
||||
|
||||
**目标:**下载统计和访问控制
|
||||
|
||||
**数据库设计:**
|
||||
```sql
|
||||
CREATE TABLE download_log (
|
||||
id INTEGER PRIMARY KEY,
|
||||
file_id INTEGER,
|
||||
download_time TEXT,
|
||||
ip_address TEXT,
|
||||
user_agent TEXT,
|
||||
FOREIGN KEY (file_id) REFERENCES product_files(id)
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
MarkBase Download Service
|
||||
├── Upload Service (✅ Complete)
|
||||
│ ├── upload.html (Web界面)
|
||||
│ ├── upload_unlimited API
|
||||
│ └── storage.rs (文件存储)
|
||||
│
|
||||
├── File List Service (✅ Complete)
|
||||
│ ├── file_list.html (Web界面)
|
||||
│ ├── storage.rs (文件扫描)
|
||||
│ ├── handlers.rs (API handlers)
|
||||
│ └── db.rs (数据库准备)
|
||||
│
|
||||
├── Product Service (⚠️ TODO Phase 2)
|
||||
│ ├── products/files API
|
||||
│ └── download.sqlite
|
||||
│
|
||||
└── Download Service (⚠️ TODO Phase 3)
|
||||
├── download API
|
||||
└── stats API
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Testing Results
|
||||
|
||||
**Upload Service Testing:**
|
||||
- ✅ 50MB file upload (成功)
|
||||
- ✅ Empty file upload (.localized)
|
||||
- ✅ Empty directory (.keep workaround)
|
||||
- ✅ SHA256 checksum verified
|
||||
|
||||
**File List Service Testing:**
|
||||
- ✅ API endpoint working (GET /api/v2/files/accusys)
|
||||
- ✅ Web UI working (https://download.accusys.ddns.net/files)
|
||||
- ✅ File metadata correct (size, hash, path, time)
|
||||
- ✅ Real-time refresh working
|
||||
|
||||
---
|
||||
|
||||
## Current Status
|
||||
|
||||
**已完成功能(2/5):**
|
||||
1. ✅ Upload Service(无限制上传 + 文件夹批量)
|
||||
2. ✅ File List Service(文件列表查看)
|
||||
3. ⚠️ Product List API(待开发)
|
||||
4. ⚠️ Download API(待开发)
|
||||
5. ⚠️ Download Statistics(待开发)
|
||||
|
||||
**已上传文件:**
|
||||
- 总文件数:9个
|
||||
- 总大小:576KB
|
||||
- 用户:accusys
|
||||
- 存储路径:/Users/accusys/Downloads/accusys/
|
||||
|
||||
---
|
||||
|
||||
## Deployment
|
||||
|
||||
**MarkBase PID:** 8936(运行中)
|
||||
|
||||
**Port:** 11438(HTTP)+ 80/443(HTTPS via Caddy)
|
||||
|
||||
**Caddy Config:**
|
||||
```
|
||||
download.accusys.ddns.net {
|
||||
reverse_proxy localhost:11438
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** 2026-06-09 14:22
|
||||
**Version:** 2.7 (Download Service Phase 1 Complete)
|
||||
Reference in New Issue
Block a user