 KenanZhuandClaude Opus 4.7
|
59c06b3a19
|
fix(workflows): 修复图标引用、条件逻辑死代码并统一输出格式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 02:49:46 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
b78fd2d1e4
|
chore: 添加 AutoLibrary 应用图标资源
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 01:55:12 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
2aace40a26
|
fix(services): 修复验证码识别逻辑、预约时间校验与异常处理结构
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 01:36:28 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
df7ad92f7f
|
fix(pages): 移除裸 except Exception 改用精确异常类型并加固元素操作防护
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 01:36:18 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
910e3e3224
|
chore: 统一 __init__.py 许可头为版权声明并改用相对导入
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 01:35:55 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
f7167c13f4
|
fix(ALAutoScript*Dialog): 统一编排窗口生成的 Lua 函数名与 ASEngine 运行时一致
- date_add → dateadd, time_add → timeadd
- CURRENT_DATE() → datenow(), CURRENT_TIME() → timenow()
- 编辑窗口 Date/Time 字面量按钮模板同步更新为 date()/time() 格式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 20:25:19 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
eb8da498a2
|
refactor(pages): 引入 Page Object 模式替代 operators/ 模块并移除旧代码
- 以 Page Object + Strategy + Flow 分层架构重写 pages/ 模块
- 将页面元素定位 (LoginPage/MainShell/ReserveView/RecordsView) 与业务编排 (ReserveFlow/CheckinFlow/RenewFlow) 分离
- 抽取 Dialog 上下文管理器统一弹窗生命周期,集成 TimeSelectMaker 策略模式处理时间选择
- 拆分 Service 层:CaptchaSolver、RecordChecker、ReserveChecker 独立可注入
- 统一闭馆时间为 TimeSelectMaker.LIBRARY_CLOSE_MINS (22:30)
- 移除旧 operators/ 模块及 base/LibOperator 层
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 20:07:42 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
b279b51b42
|
refactor: 移除旧 operators/ 模块和 base/ 层
operators/ 模块已被 pages/ 模块完全替代,base/ 中的 LibOperator 和 MsgBase
不再被任何新代码引用。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 20:05:24 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
43336f98d2
|
fix: 统一闭馆时间为 TimeSelectMaker.LIBRARY_CLOSE_MINS (22:30)
ReserveChecker._finalCheck 中存在硬编码的 "23:30",与 TimeSelectMaker.LIBRARY_CLOSE_MINS (22:30)
不一致,导致校验阶段与选时阶段使用不同的闭馆时间上限。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 20:03:35 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
e77c561685
|
refactor: 时间选择逻辑下沉至 Dialog、Worker 模板方法抽象、配置访问安全化与代码风格统一
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 19:54:26 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
345cb95b98
|
refactor(pages): 抽取时间选择策略为 TimeSelectMaker,将 Overlay 基类更名为 Dialog
将 findBestTimeOption 中的预约/续约双分支逻辑抽象为策略模式:
- TimeOptionReader 负责从 WebElement 提取时间数据(ReserveTimeReader / RenewTimeReader)
- TimeDecisionMaker 执行纯决策算法,零 Selenium 依赖
- TimeSelectMaker 作为工厂统一创建配置好的决策器
- 共享常量 LIBRARY_CLOSE_MINS 统一收敛至 TimeSelectMaker
同时将 Overlay 基类重命名为 Dialog,SeatMapOverlay 同步更名为 SeatMapDialog,保持命名一致性。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 13:13:43 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
caa563e770
|
refactor(pages): 统一命名规范并修复 SeatMapOverlay 元素等待目标错误
- AutoLibPages → AutoLib(移除实现细节后缀)
- ReserveValidator → ReserveChecker(与 RecordChecker 命名一致)
- CaptchaHandler → CaptchaSolver(语义更准确,职责是"求解"验证码)
- ReserveChecker.validate() → check()(与 RecordChecker 风格统一)
- 修复 SeatMapOverlay.selectSeat() 中 _waitClickable 等待页面全局
<a> 而非具体 seat_link 元素的时序缺陷
- ALMainWorkers 切换为 pages.AutoLib 新版实现
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-26 20:52:52 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
280028259f
|
refactor(pages): 将 LoginPage 日志回调从方法参数改为构造器注入
消除 login() 方法签名中的 tracer/log_level 参数,通过构造器可选注入
tracer 统一日志模式,避免 Page Object 对外暴露 MsgBase 内部细节。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-26 18:01:25 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
a6bc103c73
|
refactor(pages): 拆分 _dialogs 为独立组件文件,解耦 Service 构造函数,消除 PageObject 重复逻辑
- 将 _dialogs.py 拆分为 pages/components/ 下的独立文件,Overlay 基类同步移入
- CaptchaHandler / RecordChecker 构造函数不再持有 PageObject,改为方法参数注入
- LoginPage.login() 直接接收 auto_captcha 参数,简化 captcha_solver 调用链
- SeatMapOverlay.selectSeat 引入两层查找:先按 ID 直查,失败后遍历匹配
- 移除 ReserveView 中与 Dialog/Overlay 重复的方法(selectSeat、getAvailableTimeOptions)
- AutoLibPages 拆分 __initPagesServices / __initPagesFlows
- 修复 RecordsView.MORE_BTN 选择器被错误 snake_case 化(more_btn → moreBtn)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-26 13:41:55 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
2226e8ac90
|
refactor(pages): 引入 Page Object 模式重构全部页面模块,变量统一为 snake_case
将原始 Selenium 操作脚本重构为三层 Page Object 架构:
- Page Objects(LoginPage/ReserveView/RecordsView/MainShell)
- Component Objects(Overlay 基类 + SeatMapOverlay/ReserveResultDialog 等对话框)
- Flow 状态机(ReserveFlow/CheckinFlow/RenewFlow)
- Services(CaptchaHandler/ReserveValidator/RecordChecker)
变量命名统一为 snake_case,方法名保持 camelCase,类名保持 PascalCase。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-26 12:39:21 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
106463b9e5
|
refactor(autoscript): 对象化 ASEngine、移除旧变量导出、清理编排窗口解析逻辑
- ASEngine 转为类,目标变量注册作为 __init__ 接口,配套函数提取到 _helpers.py
- Lua 函数重命名 CURRENT_DATE→datenow, CURRENT_TIME→timenow, date_add→dateadd 等
- __init__.py 移除 ALL_VARIABLES/_TARGET_VAR_DEFS/_MOCK_TYPE_VALUES 导出,替换为接口函数
- 编排窗口移除脚本→控件的反向解析逻辑,合并常量定义为查询接口
- 编辑窗口新增工具函数 Tab、Tab 键插入 4 空格、图标改用 setIcon 加载
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 19:10:07 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
5e898180c7
|
refactor(style): 统一项目代码风格,整理导入顺序、间距规范与方法排列
- GUI 模块统一 QtCore → QtGui → QtWidgets 导入排列,各类独占一行按字母排序
- 统一类间两空行、类内方法间一空行、函数间一空行的间距规范
- 统一方法排列顺序:__init__ → setupUi → connectSignals → public → Slot → private
- 统一 _widgets 中 ConditionRowFrame/ActionStepFrame 方法命名(populate* / toScript / updateValueWidget)
- LibTimeSelector 迁入 operators/abs 抽象层
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-24 13:14:27 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
a03ab38279
|
refactor(autoscript): 完善 Lua 错误分类与 Date/Time 严格校验,清理死代码并补齐类型注解
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-24 01:02:17 +08:00 |
|
KenanZhu
|
4761cade26
|
refactor(gui): 统一资源路径前缀并更新新版 SVG Logo
|
2026-05-23 20:05:39 +08:00 |
|
KenanZhu
|
531b05651e
|
refactor(gui): 重构更新 AutoLibrary Logo 样式为全新设计样式
|
2026-05-23 19:26:00 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
3cea7df736
|
refactor(gui): 编排编辑窗口适配 Lua 引擎新接口
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 18:22:49 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
a0fd03f12f
|
refactor(autoscript): ASEngine 迁移至 Lua 沙箱引擎,强化类型安全与异常处理
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 18:22:36 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
9b47886e5b
|
fix(autoscript): SET 赋值强制强类型检查,禁止跨类型隐式转换
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 04:22:06 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
82738be99a
|
feat(gui): 编辑窗口支持调试运行与动态模拟目标数据输入
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 04:21:52 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
e097b5afc9
|
refactor(gui): 编排窗口简化为纯代码生成器,移除脚本解析与预检逻辑
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 04:21:40 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
fe7453fe02
|
feat(gui): 编排窗口支持算术表达式解析与回显
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 00:27:59 +08:00 |
|
 KenanZhuandClaude Opus 4.7
|
1d4b03d162
|
feat(autoscript): 支持算术表达式与变量参与加减运算
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-21 00:27:43 +08:00 |
|
KenanZhu
|
4642916fd5
|
fix(gui): 修正编排窗口日期映射 CURRENT_DATE 误识别为前天的问题
|
2026-05-18 20:47:35 +08:00 |
|
KenanZhu
|
5800437ba2
|
fix(gui): 编排窗口代码生成统一使用 END IF 结束块
|
2026-05-18 20:43:48 +08:00 |
|
KenanZhu
|
23467c1d3d
|
feat(autoscript): 支持 // 行内注释与完整注释行解析
|
2026-05-18 20:13:46 +08:00 |
|
KenanZhu
|
b8c0a29c59
|
fix(gui): 调整定时任务对话框布局边距与间距
|
2026-05-18 17:59:04 +08:00 |
|
KenanZhu
|
87787ad3dc
|
style(gui): 编辑器高亮配色更改为 VSCode C 风格并为布尔字面量独立配色
|
2026-05-18 17:59:00 +08:00 |
|
KenanZhu
|
e800f6ece1
|
refactor(gui): 统一 setupUi 命名并调整按钮布局
|
2026-05-18 16:01:22 +08:00 |
|
KenanZhu
|
600a304ab8
|
style(gui): 规范编排对话框属性命名并消除冗余代码
|
2026-05-18 16:01:16 +08:00 |
|
KenanZhu
|
c038c8005d
|
refactor(autoscript): 公开 splitTopLevel 并导出常量,消除冗余委托与重复变量
|
2026-05-18 16:01:10 +08:00 |
|
KenanZhu
|
6cf182c8c8
|
refactor(gui): 编排窗口迁移至新包并移除旧的预览/编排对话框
|
2026-05-18 11:15:35 +08:00 |
|
KenanZhu
|
33c0f4414c
|
fix(autoscript): 为异常添加行号信息并补充类型兼容性检查
|
2026-05-17 02:58:47 +08:00 |
|
KenanZhu
|
2843300cf9
|
refactor(autoscript): 使用观察者模式解耦解析与预检查/编排流程
|
2026-05-17 01:48:25 +08:00 |
|
KenanZhu
|
9bdc9a3de9
|
refactor(autoscript): 使用 ASTokenizer 和 NodeVisitor 重构解析与执行流程
|
2026-05-17 01:33:22 +08:00 |
|
KenanZhu
|
500ddd41c5
|
refactor(autoscript): 替换 dsl 包为 autoscript 引擎模块
|
2026-05-12 11:49:43 +08:00 |
|
KenanZhu
|
14c6db3384
|
refactor(config): 引入 ConfigPath 值对象消除 ConfigType/ConfigKey 的消费者 API 冗余
|
2026-05-10 16:14:36 +08:00 |
|
KenanZhu
|
bbd97970a6
|
refactor(modules): 将 AutoScriptEngine 移至 dsl/,ConfigUtils 移至 managers/config/,修复单一职责和依赖倒置问题
|
2026-05-10 15:33:10 +08:00 |
|
KenanZhu
|
967ede4b04
|
fix(ALTimerTaskManageWidget): 修复右键菜单删除任务时 parent() 类型错误
|
2026-05-09 12:59:23 +08:00 |
|
KenanZhu
|
27250dba2f
|
feat(ALTimerTask*): 实现定时任务编辑功能,统一代码规范并重命名重复任务历史字段
|
2026-05-09 10:07:25 +08:00 |
|
KenanZhu
|
46b3447d1e
|
feat(autoscript): 将预处理脚本重构为 AutoScript DSL,新增可视化编排与预览对话框
|
2026-05-08 20:46:54 +08:00 |
|
KenanZhu
|
e11f696b76
|
style(*): 添加缺失的版权信息,并同一版权年份为文件创建时间的年份
|
2026-05-06 01:01:52 +08:00 |
|
KenanZhu
|
ffae43d5bd
|
fix(ConfigUtils): 添加未导入的 os 模块
|
2026-03-24 21:49:52 +08:00 |
|
KenanZhu
|
1c88d3db7b
|
chore(requirement): 移除 opencv-python 和 pywin32 冗余依赖
|
2026-03-22 22:56:43 +08:00 |
|
KenanZhu
|
0f74a3b0ec
|
chore(requirement): 将 installed-browsers 替换为 pybrowsers 依赖
|
2026-03-22 22:05:52 +08:00 |
|
KenanZhu
|
9305c559cd
|
refactor(WebBrowserDetector): 切换浏览器检测库为 browsers 并添加检测结果去重
|
2026-03-22 22:04:31 +08:00 |
|
KenanZhu
|
f56945f29e
|
fix(AppInitializer): 优化驱动目录初始化日志逻辑,仅在目录不存在时输出日志
|
2026-03-22 21:43:23 +08:00 |
|
KenanZhu
|
37132de4fc
|
fix(ALTimerTaskManageWidget): 修复重复性定时任务删除时因 history 字段不存在导致 len(int) 异常
|
2026-03-22 21:34:08 +08:00 |
|
KenanZhu
|
4e7780fe70
|
docs(readme): 更新自述文件以包含最新功能变化
|
2026-03-21 18:49:48 +08:00 |
|
KenanZhu
|
2c90008fcd
|
refactor(WebDriverManager, ALWebDriverDownloadDialog): 重命名驱动状态枚举并完善对话框状态感知
|
2026-03-21 17:22:25 +08:00 |
|
KenanZhu
|
5c393595d7
|
fix(ALWebDriverDownloadDialog): 重命名信号避免与 QThread 内置信号冲突并改进线程生命周期管理
|
2026-03-21 01:53:22 +08:00 |
|
KenanZhu
|
4924f4b031
|
fix(WebDriverDownloader): 优化下载速度计算逻辑并改用时间间隔触发回调
- 将回调触发条件由进度变化量改为固定时间间隔(0.5s), 避免突发数据导致速度虚高
- 修正 total_size == 0 为 total_size <= 0, 完善边界判断
- 重命名变量提升可读性(last_time/last_size -> last_callback_time/last_callback_size)
|
2026-03-21 01:52:20 +08:00 |
|
KenanZhu
|
62c1ecdb07
|
fix(LogManager): 修复 CallerInfoFormatter 中 lineno 类型转换异常
|
2026-03-21 00:55:17 +08:00 |
|
KenanZhu
|
aef28b6d5e
|
feat(ALConfigWidget): 集成浏览器驱动自动下载功能到配置界面
|
2026-03-21 00:55:09 +08:00 |
|
KenanZhu
|
afa1d39051
|
feat(gui): 新增 ALStatusLabel 状态标签组件和浏览器驱动下载对话框
|
2026-03-21 00:55:02 +08:00 |
|
KenanZhu
|
84cff6acc3
|
feat(WebDriverManager): 支持下载取消操作并完善异常处理
|
2026-03-21 00:54:49 +08:00 |
|
KenanZhu
|
e40c7f4f3e
|
chore(*): 降低 ddddocr 版本以避免不必要的打包体积,同时回滚工作流
|
2026-03-20 20:57:24 +08:00 |
|
KenanZhu
|
c8e202dc8c
|
ci(workflows): 修复构建工作流中的模型文件复制问题
|
2026-03-20 20:09:30 +08:00 |
|
KenanZhu
|
9a3abc365c
|
fix(requirement.txt): 添加缺失的依赖项 pyinstaller
|
2026-03-20 19:26:17 +08:00 |
|
KenanZhu
|
6b2bf4863e
|
chore(*): 更新项目依赖,并由此修改 CI/CD 工作流配置
- 更新项目依赖
|
2026-03-20 19:21:56 +08:00 |
|
KenanZhu
|
95aa2bb518
|
feat(WebDriverManager): 新增浏览器管理类 WebDriverManager
- 新增浏览器管理类,支持下载和管理浏览器驱动
|
2026-03-20 19:20:43 +08:00 |
|
KenanZhu
|
571af554d2
|
chore(Main.py): 使用 exec() 替换 exec_() 方法
- chore(Main.py): 使用 exec() 替换 exec_() 方法
|
2026-03-20 19:20:01 +08:00 |
|
KenanZhu
|
706fc889f9
|
chore(*): 重构项目结构
- 新增 src/boot 目录,用于存放启动时需要初始化的模块
- 新增 src/managers 目录,用于存放项目中的管理模块
- 新增 src/managers/config 目录,用于存放配置管理模块
- 新增 src/managers/log 目录,用于存放日志管理模块
- 新增 src/managers/driver 目录,用于存放浏览器驱动管理模块
- 修改对应文件中 import 导入路径
|
2026-03-20 19:19:34 +08:00 |
|
KenanZhu
|
bf93cc2cbc
|
style(*): 将中文逗号替换为英文逗号
|
2026-03-20 08:59:09 +08:00 |
|
KenanZhu
|
1cfe261324
|
style(ALTimerTaskManageWidget): 优化详细信息的上下文语义
- 使用 “已记录次数” 替代 “已执行次数”,更符合实际含义
|
2026-03-19 12:23:36 +08:00 |
|
KenanZhu
|
e5dea7bcc5
|
refactor(gui): 统一定时任务字段命名
- 将 task_uuid 字段重命名为 uuid,添加时间字段 add_time 重命名为 added_time
|
2026-03-19 12:22:32 +08:00 |
|
KenanZhu
|
30b36b68dd
|
refactor(ALTimerTaskManageWidget): 修复重复任务历史记录逻辑
- 修复 onRepeatTimerTaskIs 方法中日期循环索引错误,使用 %7 正确处理跨周星期计算
- 新增 OUTDATED 状态的专属处理逻辑,补全过期任务的历史记录
- 添加函数返回值并统一枚举比较方式为 ==,提高代码一致性
|
2026-03-19 11:56:44 +08:00 |
|
KenanZhu
|
595f43d852
|
optimize(ALTimerTaskHistoryDialog): 优化任务历史对话框标题字体样式
|
2026-03-18 17:52:02 +08:00 |
|
KenanZhu
|
02463f087e
|
feat(MsgBase, gui, operators): 增强日志输出功能
- 为 _showTrace 方法添加 no_log 参数,支持控制日志写入
- 在主窗口各关键操作点添加日志输出
- 优化错误信息输出策略,分离 trace 和 log 输出
- 改进配置目录初始化过程的日志记录
|
2026-03-18 12:46:37 +08:00 |
|
KenanZhu
|
e481824344
|
refactor(AppInitializer): 初始化应用程序时,先初始化日志管理器,再初始化配置管理器
|
2026-03-18 11:03:44 +08:00 |
|
KenanZhu
|
160d6a2428
|
refactor(operators): 为 _showTrace 方法添加合适的 TraceLevel 参数
|
2026-03-18 11:02:52 +08:00 |
|
KenanZhu
|
ec683cf154
|
feat(LogManager): 新增日志持久化功能
|
2026-03-18 10:21:53 +08:00 |
|
KenanZhu
|
2d0782c368
|
refactor(AppInitializer): 将初始化逻辑提取到 AppInitializer 模块中
- 本次提交将 Main.py 中的 ConfigManager, LogManager 等初始化逻辑提取到 AppInitializer 模块中
- 更改默认的配置文件路径从 config 目录变为 configs 目录,并考虑兼容性问题
|
2026-03-18 10:17:09 +08:00 |
|
KenanZhu
|
824b9b8869
|
fix(ALMainWindow): 修复 ALMainWindow 的配置路径同步问题
- 先前的实现并未考虑到配置窗口更改时的同步问题,本次提交在
每次配置窗口更改并关闭保存时,同步更新 ALMainWindow 中的配置路径
|
2026-03-18 10:14:27 +08:00 |
|
KenanZhu
|
c26f19b6b3
|
feat(LogManager): 新增日志持久化功能
- 新增 LogManager 单例类,支持日志文件按日期滚动
- 创建 CallerInfoFormatter 自定义格式化器,提取真实调用位置
- 为 MsgBase._showTrace 方法添加日志级别参数,集成日志系统
- 新增 initializeLogManager 初始化函数,日志存储于 AppDataLocation/logs/
- 日志输出格式对齐:[时间] - [类名(15)|级别(8)] - [文件:行号(20:4)] - 消息
- 控制台/INFO级别,全量日志 / DEBUG 级别,错误日志 / ERROR级别
- 全量日志保留7天,错误日志保留14天
|
2026-03-17 21:37:24 +08:00 |
|
KenanZhu
|
1d99ca92f2
|
fix(LibReserve): 修复日期比较逻辑错误并优化时间处理代码
- 修复使用字符串直接比较日期导致的逻辑错误,改用时间戳比较
- 优化时间验证逻辑,支持 satisfy_duration 模式下的开始晚于结束时间时的交换时间处理
- 添加必要的注释说明 place 参数检查的跳过原因和边界情况处理
- 重构变量命名,提高代码可读性(cur_date -> cur_date_str)
- 修正字符串引号风格,统一使用单引号
|
2026-03-17 20:46:00 +08:00 |
|
KenanZhu
|
50ebeb0fab
|
style(LibReserve): 修复 __selectSeatTime 参数的拼写错误
- expct_duration -> expect_duration
|
2026-03-17 20:43:00 +08:00 |
|
KenanZhu
|
faa26b489a
|
fix(LibReserve): 修复冗余的链式赋值
|
2026-03-17 20:42:42 +08:00 |
|
KenanZhu
|
c03eed1d51
|
fix(LibReserve): 修复错误使用的海象运算符条件判断
|
2026-03-17 20:42:31 +08:00 |
|
KenanZhu
|
2f5680c547
|
fix(LibTimeSelector) style(LibReserve): 修复时间转换方法 _timeToMins 并重命名为 _timeStrToMins
- 之前的实现未严格限制传入参数为整形,导致在转换时间字符串时可能出现类型错误。
- 重命名为 _timeStrToMins 以明确表示该方法仅用于时间字符串转换。并更新相关调用。
- 重命名 __selectSeatTime 中的冗长局部变量,便于理解和维护。
- 删除多余的时间格式转换嗲用
|
2026-03-17 20:00:57 +08:00 |
|
KenanZhu
|
1cd39ec84c
|
docs(readme): 更新 “后续会有哪些功能?” 部分,可重复性定时任务功能已完成
|
2026-03-17 16:08:54 +08:00 |
|
KenanZhu
|
0a94c344d5
|
ci(workflows): 修复 Release 工作流的触发条件
- 当创建 'release/v*' 分支时,自动进行 Release 构建
/! Release 流程必须手动创建分支,工作流结束后会将对应分支提交合并
/! 到 main 分支上,且对应分支会被删除
|
2026-03-17 15:46:32 +08:00 |
|
KenanZhu
|
68e002ba8e
|
fix(ALTimerTaskManageWidget): 修复删除任务的信号槽参数传递问题
- 修复删除任务的信号槽参数传递问题,此次修复通过 lambda 表达式将当前的 task 作为参数传递,避免了闭包陷阱。
|
2026-03-17 15:27:03 +08:00 |
|
KenanZhu
|
94dc22819f
|
optimize(gui): 优化定时任务管理功能
- 优化任务历史查看对话框的界面布局和交互体验
- 新增任务状态枚举值以支持更完整的状态管理
- 统一重复任务执行后的历史记录处理逻辑
- 增强删除任务时的确认机制,删除可重复任务前展示详细执行记录
- 完善批量清除任务的验证流程,检查运行中任务并确认重复任务删除
|
2026-03-17 14:51:55 +08:00 |
|
KenanZhu
|
d55d2075cb
|
optimze(gui): 优化删除按钮样式,使其更加醒目;优化 ALTimerTaskManageWidget 的宽度
- 优化了 ALConfigWidget, ALTimerTaskManageWidget 中的删除按钮样式(字体颜色更改为红色),使其更加醒目
- 优化了 ALTimerTaskManageWidget 的宽度,使其适应内容宽度
|
2026-03-17 14:46:19 +08:00 |
|
KenanZhu
|
82744e3a2d
|
refactor(ALTimerTaskItemWidget): 一些变量重构
|
2026-03-17 14:42:47 +08:00 |
|
KenanZhu
|
67493349dd
|
style(ALTimerTaskManageWidget): 统一 import 语句的格式
- 对 gui.ALTimerTaskAddDialog 的 import 语句进行格式化
|
2026-03-17 14:42:07 +08:00 |
|
KenanZhu
|
0aea9b1540
|
fix(ALTimerTaskAddDialog): 修改添加定时任务对话框的重复选项的 Label 描述和布局
- 对 (b73242be00) 的补充提交
|
2026-03-17 14:39:01 +08:00 |
|
KenanZhu
|
c02c6ddbe3
|
fix(ALTimerTaskAddDialog): 删除定时任务数据中多余的字段 ‘repeat_records’
|
2026-03-17 14:37:33 +08:00 |
|
KenanZhu
|
c679a1c79e
|
fix(ALTimerTaskAddDialog): 修改定时任务时间类型中相对时间控件的布局样式
- 由栅格布局改为水平布局,该区域的高度与绝对时间控件的高度一致
|
2026-03-17 14:35:47 +08:00 |
|
KenanZhu
|
b73242be00
|
fix(ALTimerTaskAddDialog): 修改添加定时任务对话框的重复选项的 Label 描述和布局
|
2026-03-17 14:33:37 +08:00 |
|
KenanZhu
|
9accf5ddc1
|
ci(workflows): 添加 push 触发器
|
2026-03-16 21:20:54 +08:00 |
|
KenanZhu
|
883859d1f9
|
feat(TimerTaskManageWidget): 实现重复任务执行与历史记录
- onTimerTaskIsExecuted/onTimerTaskIsError 添加历史记录
- 历史记录包含:execute_time、executed_time、result、duration
- 重复任务执行后自动计算并更新下次执行时间
|
2026-03-16 21:17:48 +08:00 |
|
KenanZhu
|
f37bcf836b
|
feat(TimerTaskAddDialog): 添加重复任务 UI 支持
- UI 添加重复配置控件:复选框、周一到周日复选框
- 新增 onRepeatCheckBoxToggled 槽函数控制日期选择显示
- getTimerTask 支持提取重复配置(日期、时分秒)
- 调用 TimerUtils 计算首次执行时间
- 重构导入语句格式
|
2026-03-16 21:16:46 +08:00 |
|
KenanZhu
|
b0d1c0e99e
|
feat(TimerTask): 新增任务执行历史对话框
- 新增 ALTimerTaskHistoryDialog 显示重复任务执行历史
- 支持查看执行时间、运行结果、运行耗时
- 提供清空历史记录功能
- 表格显示:执行时间、结果、耗时(秒/s)、uuid
|
2026-03-16 21:15:56 +08:00 |
|
KenanZhu
|
5af6120be8
|
feat(TimerUtils): 新增重复任务时间计算工具
- 新增 TimerUtils.calculateNextRepeatTime 方法
- 支持基于重复日期和目标时间计算下次执行时间
- 如果当天在重复日期且目标时间未过,则返回今天;否则查找下一个匹配日期
|
2026-03-16 21:15:15 +08:00 |
|