Update AGENTS.md: Phase 21-22 WebDAV + MyFiles + VirtualFs
This commit is contained in:
90
AGENTS.md
90
AGENTS.md
@@ -4433,3 +4433,93 @@ let response = namespace.build_referral_response("\\server\\dfs\\path");
|
|||||||
**结论**:Phase 7 (CTDB 集群) 复杂度高(⚠️⚠️⚠️⚠️⚠️),建议根据实际需求决定是否实施。
|
**结论**:Phase 7 (CTDB 集群) 复杂度高(⚠️⚠️⚠️⚠️⚠️),建议根据实际需求决定是否实施。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**最后更新**:2026-06-22
|
||||||
|
**版本**:1.60(MyFiles + VirtualFs + WebDAV Phase 21-22 完成)
|
||||||
|
|
||||||
|
## WebDAV Phase 21-22 + MyFiles + VirtualFs 完成(2026-06-22)⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
**完成时间**:约 4 小时(跨 session)
|
||||||
|
**新增代码量**:~1603 行
|
||||||
|
**Git commits**:14ed3d5, 6064991
|
||||||
|
|
||||||
|
### Phase 21:WebDAV 改进 ⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
| 功能 | 状态 |
|
||||||
|
|------|------|
|
||||||
|
| VfsDavFile flush 四阶段(storage → version → clear → hook) | ✅ 完成 |
|
||||||
|
| write_buf/write_bytes 缓冲 | ✅ 完成 |
|
||||||
|
| PersistedLs 锁持久化(.webdav_locks/<user>.json) | ✅ 完成 |
|
||||||
|
| Version index 持久化 | ✅ 完成 |
|
||||||
|
| Dead props 持久化(.webdav_props.json) | ✅ 完成 |
|
||||||
|
| Quota property | ✅ 完成 |
|
||||||
|
| 6 个 integration tests | ✅ 完成 |
|
||||||
|
|
||||||
|
### Phase 22:WebDAV 全面改进 ⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
| 功能 | 状态 |
|
||||||
|
|------|------|
|
||||||
|
| flush fail 修复 + Drop warning | ✅ 完成 |
|
||||||
|
| RwLock 中毒 recovery(try_read/try_write) | ✅ 完成 |
|
||||||
|
| 过期锁清理(cleanup_expired_locks) | ✅ 完成 |
|
||||||
|
| Mutex/RwLock recovery helpers | ✅ 完成 |
|
||||||
|
| Props VFS 持久化(load_props/save_props via VFS) | ✅ 完成 |
|
||||||
|
| COPY/MOVE dead props sync | ✅ 完成 |
|
||||||
|
| 原子 set_times(set_atime/set_mtime) | ✅ 完成 |
|
||||||
|
| Async props(spawn_blocking) | ✅ 完成 |
|
||||||
|
| DavHandler caching(CachedHandler, 300s TTL) | ✅ 完成 |
|
||||||
|
| MKCOL 405 fix(exists() check) | ✅ 完成 |
|
||||||
|
| Quota enforcement | ✅ 完成 |
|
||||||
|
| Conditional/Range requests(dav-server 内建) | ✅ 验证 |
|
||||||
|
|
||||||
|
### WebDAV Auth 整合 ⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
| 功能 | 状态 |
|
||||||
|
|------|------|
|
||||||
|
| Basic Auth via `MB_WEBDAV_USERS` env(默认 demo:demo123) | ✅ 完成 |
|
||||||
|
| Admin WebDAV `/admin-webdav`(MB_WEBDAV_ADMIN_USERS) | ✅ 完成 |
|
||||||
|
| DavHandler cache 5min TTL | ✅ 完成 |
|
||||||
|
| Extension layer order 修复(7 commits) | ✅ 完成 |
|
||||||
|
|
||||||
|
### MyFiles UI ⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
| 功能 | 端點 | 狀態 |
|
||||||
|
|------|------|------|
|
||||||
|
| UI 頁面 | `/myfiles` | ✅ 完成 |
|
||||||
|
| 虛擬文件夾列表 | `GET /api/v2/myfiles/:user/folders` | ✅ 完成 |
|
||||||
|
| 創建文件夾 | `POST /api/v2/myfiles/:user/folders` | ✅ 完成 |
|
||||||
|
| 刪除文件夾 | `DELETE /api/v2/myfiles/:user/folders/:name` | ✅ 完成 |
|
||||||
|
| 文件列表 | `GET /api/v2/myfiles/:user/files` | ✅ 完成 |
|
||||||
|
| 新增標籤 | `POST /api/v2/myfiles/:user/tags` | ✅ 完成 |
|
||||||
|
| 移除標籤 | `DELETE /api/v2/myfiles/:user/tags` | ✅ 完成 |
|
||||||
|
| 文件標籤查詢 | `GET /api/v2/myfiles/:user/files/:name/tags` | ✅ 完成 |
|
||||||
|
|
||||||
|
### VirtualFs VFS 後端 ⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
| 功能 | 狀態 |
|
||||||
|
|------|------|
|
||||||
|
| VfsBackend trait 完整實作 | ✅ 完成 |
|
||||||
|
| SQLite schema(virtual_folders + file_tags + webdav_config) | ✅ 完成 |
|
||||||
|
| create_dir / remove_dir(虛擬文件夾操作) | ✅ 完成 |
|
||||||
|
| read_dir(混合顯示實體檔案 + 虛擬文件夾) | ✅ 完成 |
|
||||||
|
| open_file(自動 tag) | ✅ 完成 |
|
||||||
|
| rename(跨文件夾移動自動更新 tag) | ✅ 完成 |
|
||||||
|
| 21 個單元測試 | ✅ 完成 |
|
||||||
|
| CLI 子命令(webdav-folder, webdav-tag, webdav-list) | ✅ 完成 |
|
||||||
|
|
||||||
|
### 测试结果 ⭐⭐⭐⭐⭐
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo test -p markbase-core --lib # 320 passed, 0 failed, 12 ignored (PG)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Git 提交记录
|
||||||
|
|
||||||
|
**Commit 14ed3d5**: Add MyFiles UI, VirtualFs backend, WebDAV virtual mode, admin WebDAV
|
||||||
|
- 9 files, 1603 insertions, 56 deletions
|
||||||
|
- New: myfiles.rs (533行), virtual_fs.rs (737行)
|
||||||
|
|
||||||
|
**Commit 6064991**: Fix cargo warnings: remove unused imports, mark unused variables, fix smb-server profiles
|
||||||
|
- 5 files, 10 insertions, 16 deletions
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user