核心功能: - ✅ 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)
284 lines
6.1 KiB
Markdown
284 lines
6.1 KiB
Markdown
# 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) |