fix(BetterGI): 修复合入复查发现的问题 (#498) - #523
Conversation
审查者指南本 PR 针对 BetterGI 合入后的复查问题进行修复:通过动态日志路径和跨午夜时间修正提升监控与统计准确性,按提权状态启动进程并清理运行时配置,改进切号脚本仓库的渐进式恢复策略,同时修正重试报告及前后端配置组默认值。 BetterGI 按日期滚动日志监控时序图sequenceDiagram
participant MAS
participant LogMonitor
participant BetterGILog
MAS->>LogMonitor: start_monitor_file(_build_log_path, start_time)
LogMonitor->>BetterGILog: read current date log
Note over LogMonitor,BetterGILog: At midnight, resolve the new daily log path
BetterGILog-->>LogMonitor: new log lines
LogMonitor-->>MAS: monitoring continues without false timeout
BetterGI 运行时槽位清理时序图sequenceDiagram
participant MAS
participant BetterGI
participant RuntimeSlot
MAS->>BetterGI: open_process(elevated=not IS_ELEVATED)
BetterGI-->>MAS: session ends
MAS->>RuntimeSlot: remove_one_dragon_slot(root_path)
RuntimeSlot-->>MAS: runtime slot removed
BetterGI 感知提权状态的进程启动时序图sequenceDiagram
participant MAS
participant ProcessManager
participant ChildProcess
participant UAC
MAS->>MAS: Read IS_ELEVATED
MAS->>ProcessManager: open_process(elevated=not IS_ELEVATED)
alt MAS already elevated
ProcessManager->>ChildProcess: Launch with inherited administrator token
else MAS not elevated
ProcessManager->>UAC: Trigger runas elevation
UAC-->>ChildProcess: Launch elevated process
end
BetterGI 切号脚本恢复流程图flowchart TD
A[Check switch script directory] --> B{Script directory exists?}
B -->|Yes| C[Remove stale checkout-failed marker]
B -->|No| D{Checkout-failed marker exists?}
D -->|No| E[Create marker and wait for BGI auto-repair]
D -->|Yes| F[Remove local script repository]
F --> G[Clear marker and force repository rebuild]
BetterGI 重试报告选择流程图flowchart TD
A[Collect execution runs] --> B{Any successful run?}
B -->|Yes| C[Select latest successful run]
B -->|No| D[Select final attempted run]
C --> E[parse_one_dragon_report]
D --> E
BetterGI 自定义配置组启用默认值流程图flowchart LR
A[Custom group configuration] --> B{enabled is explicitly false?}
B -->|Yes| C[Set enabled to false]
B -->|No| D[Set enabled to true]
文件级变更
可能关联的问题
提示与命令与 Sourcery 交互
自定义使用体验访问你的控制面板以:
获取帮助Original review guide in EnglishReviewer's Guide本 PR 针对 BetterGI 合入后的复查问题进行修复:通过动态日志路径和跨午夜时间修正提升监控与统计准确性,按提权状态启动进程并清理运行时配置,改进切号脚本仓库的渐进式恢复策略,同时修正重试报告及前后端配置组默认值。 Sequence diagram for BetterGI date-rolling log monitoringsequenceDiagram
participant MAS
participant LogMonitor
participant BetterGILog
MAS->>LogMonitor: start_monitor_file(_build_log_path, start_time)
LogMonitor->>BetterGILog: read current date log
Note over LogMonitor,BetterGILog: At midnight, resolve the new daily log path
BetterGILog-->>LogMonitor: new log lines
LogMonitor-->>MAS: monitoring continues without false timeout
Sequence diagram for BetterGI runtime slot cleanupsequenceDiagram
participant MAS
participant BetterGI
participant RuntimeSlot
MAS->>BetterGI: open_process(elevated=not IS_ELEVATED)
BetterGI-->>MAS: session ends
MAS->>RuntimeSlot: remove_one_dragon_slot(root_path)
RuntimeSlot-->>MAS: runtime slot removed
Sequence diagram for BetterGI elevation-aware process launchsequenceDiagram
participant MAS
participant ProcessManager
participant ChildProcess
participant UAC
MAS->>MAS: Read IS_ELEVATED
MAS->>ProcessManager: open_process(elevated=not IS_ELEVATED)
alt MAS already elevated
ProcessManager->>ChildProcess: Launch with inherited administrator token
else MAS not elevated
ProcessManager->>UAC: Trigger runas elevation
UAC-->>ChildProcess: Launch elevated process
end
Flow diagram for BetterGI switch-script recoveryflowchart TD
A[Check switch script directory] --> B{Script directory exists?}
B -->|Yes| C[Remove stale checkout-failed marker]
B -->|No| D{Checkout-failed marker exists?}
D -->|No| E[Create marker and wait for BGI auto-repair]
D -->|Yes| F[Remove local script repository]
F --> G[Clear marker and force repository rebuild]
Flow diagram for selecting the BetterGI retry reportflowchart TD
A[Collect execution runs] --> B{Any successful run?}
B -->|Yes| C[Select latest successful run]
B -->|No| D[Select final attempted run]
C --> E[parse_one_dragon_report]
D --> E
Flow diagram for BetterGI custom-group enabled defaultsflowchart LR
A[Custom group configuration] --> B{enabled is explicitly false?}
B -->|Yes| C[Set enabled to false]
B -->|No| D[Set enabled to true]
File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
你好——我已经审阅了你的更改,整体看起来很棒!
Sourcery 评估
需要人工审阅。 如果权限提升检查存在错误,BetterGI 可能会使用非预期的管理员令牌启动,或无法请求所需的 UAC 提权,从而改变子进程的权限边界。如果重试标记被错误触发,代码可能会删除本地脚本仓库;撤销此更改可以阻止后续删除,但无法恢复已经被删除的文件。
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会利用你的反馈来改进审阅结果。
Original comment in English
Hey - I've reviewed your changes and they look great!
Sourcery assessment
Needs a human reviewer. If the elevation check is wrong, BetterGI may launch with an unintended administrator token or fail to request the required UAC elevation, changing the child process's privilege boundary. If the retry marker is triggered incorrectly, the code can remove the local script repository; reverting would stop future deletions but would not restore files already removed.
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
|
用四个不同模型分头审了一遍,两位各自在临时目录里实跑了切号恢复和报告取轮的模拟。按改动项给结论: 1. 切号脚本恢复(#498 第 3 项)—— 建议重做
一个可行方向:标记只在本次启动 BGI、并且 2. 日志监控两处 hunk( 3. 会话槽位清理 —— 可以接受 4. 提权 —— 可以接受,两条建议 5. 分步报告取轮 —— 可以接受,一条可选 6. 流程
验证(独立 venv,Python 3.12,Windows): 总评:第 3-6 项可合,第 2 项让给 #510,第 1 项(切号恢复)需要重做后再合。 |
复查小结(#523,基于 #498 逐条核对)审查范围: Standards(标准轴)硬违规(建议合入前修改)
判断项
Spec(规格轴)实现风险(建议合入前处理)
部分实现
越界(scope creep):未发现明显越界,7 个改动文件均对应 spec 条目。 验证正确:日志监控改传可调用对象(跨零点切换当日文件)、切号脚本缺失的 marker 重建逻辑(首次启用不误删仓库)、成功轮分步报告、前端 以上为两轴独立审查结论(Standards / Spec),供合入前参考。 |
…t#498) - log monitor: pass callable log path so daily-rolling logs switch across midnight - ScriptConfig: remove runtime slot after config session (final_task & on_crash) - account_switch: only rebuild repo when previous checkout also failed - open BetterGI with elevated only when MAS itself is not elevated - step report: pick success run when retries happened (no duplicated 1/N) - notify: add one day when step duration crosses midnight - frontend/backend: unify enabled default for custom groups
c288722 to
0d0b724
Compare
按 qiyinxi/1w1w11w1 复查意见系统落地 AUTO-MAS-Project#523 剩余修订: - account_switch: 切号脚本恢复重做。检出失败标记改放 MAS 自有 data/{script_id}/, 仅当切号结束(BGI 确实启动并退出后)脚本仍缺失才写入;rmtree 中央仓库的判断 移到杀掉旧 BGI 进程之后单独执行(rebuild_script_repo_if_checkout_failed); ensure_switch_subscription 不再删除任何东西。首次启用/用户误删/BGI 启动失败 都不会在第一轮删掉整个 Repos/bettergi-scripts-list。 - AutoProxy: 杀进程后接入 rebuild、切号结束接入 record_switch_checkout_result; 分步报告无成功轮时回退取第一个能解析出步骤的轮次,避免末轮失败而整块省略; 清理不再使用的 script_log_path 死代码。 - LogMonitor: 日志文件跨零点切换时刷新 strptime 基准日期 last_callback_time, 避免新文件首行被归到 24 小时前而被 check_log 误判超时。 - version.json: changelog 精简为一句并补充 by 署名。 修复经状态机模拟验证通过(首次不删库/记录标记/次轮重建/脚本就绪清标记/误删不删库)。
# Conflicts: # res/version.json
AUTO-MAS-Project#498 二.4 完整诉求:三处硬编码提权改为受 BetterGIConfig.Run.UseAdmin 控制。 - 后端: BetterGIConfig 新增 Run.UseAdmin(Bool 默认 True,贴近旧行为)。 - AutoProxy 两处与 ScriptConfig 一处 open_process 的 elevated 改为 use_admin and not IS_ELEVATED:MAS 已提权时即使开启也不重复弹 UAC; 用户可关闭以在无人值守任务下避免授权弹窗挂起。 - 前端: BetterGIScriptEdit.vue 运行配置区新增开关,i18n 三语词条。 - changelog 并入现有单条。
本地验证记录(凭据函数)+ 已上提交的管理员提权开关按 凭据相关函数本地验证(#498 提到的"凭据函数零测试")在本地编写并运行脱敏/凭据函数验证:9 passed(pytest 2.64s),测试文件已从工作区清理、未提交。
上一刷新提交
|
AUTO-MAS-Project#498 二.2 附带窄路径:用户已存在一份名为「MAS独立配置」的配置(但当前选择其它配置名)时,运行时槽位机制会覆盖该配置,会话结束又删除它,造成用户配置丢失。 - one_dragon: 写槽位前若该位置已存在且非 MAS 占用(无 owner 标记),先把用户配置备份到 data/{script_id}/.mas_slot_backup.json;remove_one_dragon_slot 结束时有备份则恢复原内容,否则删除槽位。owner 标记(.mas_slot_owner)区分「MAS 运行时槽位」与「用户同名配置」,异常残留也能在下轮覆盖后自愈。 - AutoProxy / ScriptConfig: remove_one_dragon_slot 调用补传 script_id。 - 本地验证三场景通过:用户同名配置恢复、普通场景删除、MAS 残留删除。
Closes #498
基于最新 dev 修复 BetterGI 合入后复查发现的问题:
注:跨零点日志监控部分与 #510 方案重叠,若 #510 先合入,该部分可忽略。
Sourcery 摘要
修复审查中发现的 BetterGI 集成问题,包括跨午夜监控、权限处理、运行时清理、重试报告、脚本恢复和自定义分组默认值。
错误修复:
改进:
Original summary in English
Sourcery 总结
修复 BetterGI 集成中与午夜监控、权限、运行时清理、脚本恢复、重试报告和自定义组默认值相关的问题。
错误修复:
增强功能:
Original summary in English
Sourcery 摘要
修复 BetterGI 集成相关问题,包括跨午夜监控、权限处理、运行时清理、脚本恢复、重试报告和自定义组默认值。
新功能:
错误修复:
增强功能:
Original summary in English
Summary by Sourcery
Fix BetterGI integration issues involving midnight monitoring, privilege handling, runtime cleanup, script recovery, retry reporting, and custom-group defaults.
New Features:
Bug Fixes:
Enhancements:
Original summary in English
Original summary in English
Original summary in English