Files
markbase/docs/DOWNLOAD_SERVICE_GUIDE.md
Warren 1300a4e223
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
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)
2026-06-12 12:59:54 +08:00

284 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AccuSys Download Service Guide
## Overview
**取代OneDrive的企业下载服务**
- 域名:`download.accusys.ddns.net`HTTPS via Caddy
- 服务MarkBase v2.3Rust + 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** 11438HTTP+ 80/443HTTPS 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)