Skip to content

v3.1.2

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Jul 11:55

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]

传输界面(用户可见)

  • 下载大小显示为 0 B :修复传输界面中下载完成但大小始终显示为 0 的统计错误 [a55ee08]
  • 删除最后一个任务失效 :修复任务列表仅剩一项时,删除按钮点击无效的边界问题 [b2ab5ca]

后台任务

  • 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 — 重复逻辑统一 :
    • 下载实现合并: DownloadService 中删除重复的多线程逻辑分支 [3682864]
    • 上传实现合并: upload_file_stream 的流式特性并入 up_load 统一入口 [fd98e48]
    • 死代码清理:删除 api.py 中废弃的 TransferTask / TransferTaskManager [bfba3c7]
    • 传输表格更新合并:上传/下载表格 UI 更新抽取为共用方法 [0d17ff9]
  • 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]

日志模块

  • 日志文件管理逻辑优化:滚动策略、文件权限、异常容错 [3bb51f4]
  • 全项目补全日志埋点:下载、上传、认证、Session 层均添加结构化日志 [eb94944]

清理

  • 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