e8c3e4644e
CI / lint-and-build (push) Has been cancelled
- Swift 6 + SwiftUI + SwiftData 直接调用阿里云 VOD API - 自实现 POP 签名,无需 Node 后端 - 视频列表、搜索、批量下载到用户选择目录 - 下载文件自动使用视频标题重命名 - 浏览器下载与下载工具(aria2/wget)两种方式 - Web 版标记为废弃,README/AGENTS/MEMORY 更新
79 lines
2.7 KiB
Markdown
79 lines
2.7 KiB
Markdown
# MEMORY.md
|
||
|
||
> 项目状态与关键决策记录,供跨会话参考。
|
||
|
||
## 当前状态
|
||
|
||
- **版本**:v0.2.0(macOS 原生版 MVP)
|
||
- **阶段**:已废弃 Web 版,macOS SwiftUI 原生版可构建运行
|
||
- **最后更新**:2026-06-30
|
||
|
||
## 已完成的里程碑
|
||
|
||
### v0.1.0(Web 版,已废弃)
|
||
|
||
- [x] React + Express 前后端项目
|
||
- [x] JWT 登录、SQLite 持久化
|
||
- [x] VOD 账号配置与 API 代理
|
||
- [x] 视频列表、批量下载/删除
|
||
|
||
### v0.2.0(macOS 原生版)
|
||
|
||
- [x] SwiftUI macOS 项目结构
|
||
- [x] 自实现阿里云 POP 签名(CryptoKit HMAC-SHA1)
|
||
- [x] 直接调用 VOD OpenAPI,无需 Node 后端
|
||
- [x] SwiftData 持久化(Account / OperationLog / DownloadTask)
|
||
- [x] 视频列表、搜索
|
||
- [x] 批量下载到用户选择目录
|
||
- [x] 下载文件自动重命名(清理非法字符)
|
||
- [x] 浏览器下载与下载工具(aria2 / wget)两种方式
|
||
- [x] 下载任务历史
|
||
- [x] 操作日志
|
||
- [x] App Sandbox entitlements 配置
|
||
|
||
## 架构决策
|
||
|
||
1. **原生 macOS 应用**:使用 SwiftUI + SwiftData,目标上架 Mac App Store。
|
||
2. **直接调用阿里云 API**:不依赖后端服务,VODClient actor 直接发起 HTTPS 请求并自实现签名。
|
||
3. **本地持久化**:SwiftData 存储账号、日志、下载任务。
|
||
4. **下载目录**:由用户通过 NSOpenPanel 选择,符合 App Sandbox 要求。
|
||
5. **文件名处理**:使用视频标题 + 清晰度组合命名,自动替换非法字符,避免乱码。
|
||
6. **Web 版废弃**:`apps/web` 与 `apps/server` 保留作为历史参考,不再维护。
|
||
|
||
## 已知问题 / 待优化
|
||
|
||
1. 当前 `swift run` 可编译但 GUI 需在真实 macOS 桌面会话运行。
|
||
2. 下载进度目前只有开始/完成两种状态,未实现实时百分比(URLSessionDownloadTask 进度回调未接入)。
|
||
3. 尚未接入真实阿里云账号进行端到端验证。
|
||
4. 缺少单元测试。
|
||
5. AccessKey Secret 目前明文存储在 SwiftData,后续应迁移到 Keychain。
|
||
6. 需要创建正式的 Xcode 工程以配置 Signing、Bundle ID,满足 App Store 提交要求。
|
||
|
||
## 后续规划
|
||
|
||
### v0.3.0
|
||
|
||
- [ ] 接入真实账号联调
|
||
- [ ] 下载进度实时显示
|
||
- [ ] Keychain 存储 AccessKey Secret
|
||
- [ ] 分类树展示
|
||
|
||
### v0.4.0
|
||
|
||
- [ ] 批量删除视频
|
||
- [ ] 视频详情页面
|
||
- [ ] 操作日志写入(目前只展示,下载/删除未写入日志)
|
||
|
||
### v1.0.0
|
||
|
||
- [ ] Xcode 工程与签名配置
|
||
- [ ] TestFlight / Mac App Store 提交
|
||
- [ ] 中英文国际化
|
||
- [ ] 完善测试覆盖
|
||
|
||
## 部署注意
|
||
|
||
- macOS 应用默认使用 SwiftData 自动管理的数据库路径(Application Support)。
|
||
- App Store 版本必须开启 Sandbox,使用 `VODManager.entitlements` 中的配置。
|
||
- 用户选择下载目录后,应用才拥有该目录的写入权限。
|