重构: App拆分10域文件+并发安全+结构化日志+依赖升级

This commit is contained in:
lxy
2026-05-16 20:45:14 +08:00
parent d17c20c579
commit 767311fc04
27 changed files with 1457 additions and 1218 deletions
+55 -2
View File
@@ -2,9 +2,62 @@
> 本文档记录所有技术细节,包括代码重构、构建优化等内部改动
## [0.5.0] - 2026-05-01 (fs-only-v3)
## [0.4.1] - 2026-05-01 ~ 05-16 (fs-only-v3)
### Wails v3 迁移 🏗️
---
### 2026-05-16 增量更新
#### App 结构体拆分 🏗️
app.go 从 1281 行拆为 10 个域文件:
| 文件 | 方法数 | 职责 |
|------|--------|------|
| `app.go` | 5 | 结构体定义、生命周期、请求类型 |
| `app_config.go` | 12 | 配置管理、BGM、Profile CRUD |
| `app_filesystem.go` | 23 | 文件操作、回收站、文件监听 |
| `app_sftp.go` | 17 | SFTP 连接管理 |
| `app_oss.go` | 17 | OSS 对象存储 |
| `app_window.go` | 8 | 窗口控制 |
| `app_system.go` | 7 | 系统信息 |
| `app_update.go` | 11 | 版本更新管理 |
| `app_pdf.go` | 2 | PDF 导出 |
| `app_windows.go` | 4 | Windows 平台专用(`//go:build windows`) |
#### 结构化日志 📝
`fmt.Print*` → `log/slog`(45 处):app.go、filesystem/service.go、storage/download_cache.go
#### Bug 修复 🐛
- **预览状态级联失败**: `clearContent()` 未重置 `isBinaryFile`,模板 `v-if` 链被阻断 → 加 `isBinaryFile.value = false`
- **Tab 切换状态不同步**: `activateTab` 未更新 `filePath` → 加 `getParentPath` + `loadDirectory`
- **AsyncCodeEditor 永久死亡**: `defineAsyncComponent` 无 `onError` → 添加重试(限 2 次)
- **FileLock 误创建文件**: `O_RDWR|O_CREAT` → `O_RDWR`,`mode 0666` → `0`
- **OSS 目录重命名**: `c.Delete()` 返回值未检查,目录标记删除添加容错
#### 并发安全 🔒
- **RecycleBin**: 所有公开方法添加 `sync.Mutex`,`ListEntries()` 返回深拷贝副本
#### 缓存优化 📦
- **contentDetectCache**: 添加 200 条上限,超限全量清空
#### 依赖升级 ⬆️
Wails alpha.80→alpha.92, echo v4.15.1→v4.15.2, go-sqlite v1.22, modernc/sqlite v1.50, go-git v5.19
#### 代码审查 (15/17 修复)
🔴 构建标签 · 死参数 · 重复逻辑 · 并发锁 | 🟡 错误处理 · 方法归属 · 日志 | ⚪ 注释 · 去重
**暂不处理**: ⚪⑬ fallback 路径 · ⚪⑯ ensure 风格 · ⚪⑰ ensure 模式
---
### 2026-05-01 Wails v3 迁移
#### 框架升级
- **Wails v2.12 → v3 alpha.80**: 全面迁移至 Wails v3 架构