Important
本次版本在 v3.1.1 API 适配修复 的基础上,进行了大规模的 架构重构 、 Bug 修复 和 测试体系建设 。下载/上传核心逻辑已重写,传输可靠性显著提升;设置项修改即时生效,无需重启客户端。建议所有用户更新!
Note
配置文件向前兼容,旧版本用户升级后无需重新登录。
添加了
功能增强
- 设置实时生效 :修改下载路径、速度限制、代理配置等设置后,变更立即推送到 Service 层,无需重启客户端 [84fadaf]
- Service 层扩展方法 :新增 session 配置、网络代理、文件分享等标准化接口,为后续功能扩展奠定基础 [d6915c3]
- 日志保留与自动清理 :新增日志保留天数配置,自动清理过期日志文件,避免占用磁盘空间 [7a451f9]
测试体系(61 个测试用例)
- 令牌桶限速器测试 :覆盖令牌生成、消耗、暂停、恢复等完整逻辑 [b91338d]
- AES-256-GCM 加解密测试 :使用临时 keyfile 隔离,验证凭证加密/解密正确性 [351a484]
- 数据模型与工具函数测试 :覆盖 File / User 等模型解析、 format_file_size 格式转换 [9f1ecc1]
- ConfigManager 测试 :配置读写、旧格式自动迁移(tmp_path 隔离) [59021c6]
- NetSession HTTP 集成测试 :使用 responses mock HTTP,覆盖 GET/POST/PUT/DELETE 与异常处理 [1034d58]
开发者文档
- AGENTS.md 项目规范 :完整的架构说明、分层职责、开发工作流、提交规范、测试策略 [3c2b414] [7eaf4f9]
- README 测试章节 :测试运行指南、测试结构说明、分层测试策略表 [987c3d8]
项目基础设施
- 标准 Python 包结构( init.py + src/ 布局) [fd1fa7b]
- pyproject.toml 构建系统与入口点配置 [9b02614]
- uv.lock 可编辑模式配置 [141506b]
- 依赖升级: pyqt6 、 pyqt6-fluent-widgets 、 requests 、 cryptography 等同步至最新稳定版 [4149d3c]
修复了
下载核心(高优先级)
- 分片下载重写 :修复多线程分片下载的错误处理与内存占用问题,异常分片自动重试 [fc49485] [eb94944]
- 空文件保护 :下载 0B 文件时跳过分片流程,避免除零错误与空请求 [eb94944]
- 下载可靠性 :新增超时配置、重试机制,优化超时后的线程回收 [23563fc]
- NetSession 分片返回逻辑补全 :修复分片请求返回值缺失导致的下游解析错误 [f373f76]
传输界面(用户可见)
后台任务
- LoadListTask 引用错误 : self 属性访问改用模块级导入,修复文件列表刷新偶发 AttributeError [a8876dd]
代码正确性
- session.py 类型标注笔误: Nne → None [93121a3]
- log.py 异常捕获语法错误:修正 except 块结构 [9141346]
- pyproject.toml 构建配置修正:修复打包脚本入口路径 [d1a677d]
重构了
架构分层(Phase 1–5)
- Phase 1 — 项目规范 :统一代码格式,优化项目配置 [f145836]
- Phase 2 — 设备数据模块化 : devices.json → devices.py 内联模块,消除运行时文件依赖 [4c461fe] [570b3cd]
- Phase 3 — 重复逻辑统一 :
- Phase 4 — View 层净化 :
- Facade 拆分 :臃肿的 Pan123 门面拆分为 4 个独立 Service: AuthService / FileService / DownloadService / UploadService [d0ded31]
- 消除 View 层直连底层 : file_interface.py / transfer_interface.py 等不再访问 pan._session ,全部通过 Pan123 门面或 Service [1b24e2b]
- 后台任务模块化 : QRunnable 全部抽取到 app/tasks/file_tasks.py ,信号类合并入 app/tasks/signals.py [9a00df9]
- 通用对话框 :多种输入对话框合并为统一 InputDialog 组件 [f2fd25c]
- Phase 5 — 测试体系 :测试基础设施 + 61 个核心用例覆盖(见"添加了") [21ef4a9]
日志模块
清理
- speed_limiter.py 死代码删除:移除未使用的类方法与属性 [9442ada]
删除了
- api.py 中废弃的 TransferTask 与 TransferTaskManager 类(已被 app/tasks/ 模块替代) [bfba3c7]
- 运行时文件依赖 devices.json (改为 devices.py 内联数据) [4c461fe]
- speed_limiter.py 中的未使用代码 [9442ada]
- DownloadService 中与 Pan123 重复的多线程下载逻辑分支 [3682864]
Full Changelog: v3.1.1...v3.1.2