feat: 内置app添加优先级排列 - #2520
Conversation
📝 WalkthroughWalkthrough新增应用 Changes应用优先级配置与默认组排序
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant AppConstants
participant ApplicationFactory
participant ApplicationFactoryManager
participant ApplicationGroupConfig
AppConstants->>ApplicationFactory: 提供 PRIORITY
ApplicationFactory->>ApplicationFactory: 校验并保存 priority
ApplicationFactoryManager->>ApplicationFactoryManager: 发现并排序默认组工厂
ApplicationGroupConfig->>ApplicationGroupConfig: 管理暂态与已持久化条目
ApplicationGroupConfig->>ApplicationGroupConfig: 保存用户应用顺序
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
c336f6f to
135d6b2
Compare
135d6b2 to
63c0892
Compare
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/one_dragon/base/operation/application/application_group_config.py (1)
58-66: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win
save_app_list依赖跨多方法维护的隐式不变量,建议加固或补充测试。
zip(active_indices, persisted_apps, strict=True)要求_all_apps与app_list中已持久化条目严格一一对应(无重复app_id)。该不变量目前由update_full_app_list/_persist_app_item/remove_app等多处方法共同维护,一旦未来改动(包括未修改的move_up_app/move_top_app)打破它,会直接抛出未捕获的ValueError,导致保存流程崩溃而非优雅降级。建议为该不变量补充单测覆盖(尤其覆盖
set_app_order/persist_app/remove_app/move_up_app的交互),或将长度不匹配场景改为记录警告并跳过本次排序同步,而非直接崩溃。🛡️ 降级处理示例(避免硬崩溃)
- for idx, item in zip(active_indices, persisted_apps, strict=True): - self._all_apps[idx] = item + if len(active_indices) == len(persisted_apps): + for idx, item in zip(active_indices, persisted_apps): + self._all_apps[idx] = item + else: + # 不变量被打破,跳过本次排序同步,避免崩溃;建议同时记录日志便于排查 + pass🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/one_dragon/base/operation/application/application_group_config.py` around lines 58 - 66, Harden save_app_list so inconsistent persisted entries or duplicate app_id values cannot raise an uncaught ValueError from zip(..., strict=True). Validate that active_indices and persisted_apps represent the same unique set before updating _all_apps; when they do not, log a warning and skip synchronization. Add focused tests covering set_app_order, persist_app, remove_app, and move_up_app interactions while preserving normal ordering behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@src/one_dragon/base/operation/application/application_group_config.py`:
- Around line 58-66: Harden save_app_list so inconsistent persisted entries or
duplicate app_id values cannot raise an uncaught ValueError from zip(...,
strict=True). Validate that active_indices and persisted_apps represent the same
unique set before updating _all_apps; when they do not, log a warning and skip
synchronization. Add focused tests covering set_app_order, persist_app,
remove_app, and move_up_app interactions while preserving normal ordering
behavior.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 8e7e7f79-1849-462f-aa96-a60dd67cba6d
📒 Files selected for processing (29)
docs/develop/one_dragon/modules/application.mddocs/develop/one_dragon/modules/application_plugin_system.mdsrc/one_dragon/base/operation/application/application_factory.pysrc/one_dragon/base/operation/application/application_factory_manager.pysrc/one_dragon/base/operation/application/application_group_config.pysrc/one_dragon_qt/view/one_dragon/one_dragon_run_interface.pysrc/zzz_od/application/charge_plan/charge_plan_const.pysrc/zzz_od/application/city_fund/city_fund_const.pysrc/zzz_od/application/coffee/coffee_app_const.pysrc/zzz_od/application/daily_signin/daily_signin_const.pysrc/zzz_od/application/devtools/application_priority_scanner.pysrc/zzz_od/application/drive_disc_dismantle/drive_disc_dismantle_const.pysrc/zzz_od/application/email_app/email_app_const.pysrc/zzz_od/application/engagement_reward/engagement_reward_const.pysrc/zzz_od/application/hollow_zero/lost_void/lost_void_const.pysrc/zzz_od/application/hollow_zero/withered_domain/withered_domain_const.pysrc/zzz_od/application/hou_hou_bakery/hou_hou_bakery_const.pysrc/zzz_od/application/intel_board/intel_board_const.pysrc/zzz_od/application/life_on_line/life_on_line_const.pysrc/zzz_od/application/notify/notify_const.pysrc/zzz_od/application/notorious_hunt/notorious_hunt_const.pysrc/zzz_od/application/random_play/random_play_const.pysrc/zzz_od/application/redemption_code/redemption_code_const.pysrc/zzz_od/application/ridu_weekly/ridu_weekly_const.pysrc/zzz_od/application/scratch_card/scratch_card_const.pysrc/zzz_od/application/shiyu_defense/shiyu_defense_const.pysrc/zzz_od/application/suibian_temple/suibian_temple_const.pysrc/zzz_od/application/trigrams_collection/trigrams_collection_const.pysrc/zzz_od/application/world_patrol/world_patrol_const.py
🚧 Files skipped from review as they are similar to previous changes (21)
- src/zzz_od/application/intel_board/intel_board_const.py
- src/zzz_od/application/notorious_hunt/notorious_hunt_const.py
- src/zzz_od/application/city_fund/city_fund_const.py
- src/zzz_od/application/suibian_temple/suibian_temple_const.py
- src/zzz_od/application/drive_disc_dismantle/drive_disc_dismantle_const.py
- src/zzz_od/application/world_patrol/world_patrol_const.py
- src/zzz_od/application/hollow_zero/lost_void/lost_void_const.py
- src/zzz_od/application/life_on_line/life_on_line_const.py
- src/zzz_od/application/random_play/random_play_const.py
- src/zzz_od/application/scratch_card/scratch_card_const.py
- src/zzz_od/application/redemption_code/redemption_code_const.py
- src/zzz_od/application/charge_plan/charge_plan_const.py
- src/zzz_od/application/notify/notify_const.py
- src/zzz_od/application/hou_hou_bakery/hou_hou_bakery_const.py
- src/one_dragon/base/operation/application/application_factory_manager.py
- src/zzz_od/application/trigrams_collection/trigrams_collection_const.py
- src/zzz_od/application/email_app/email_app_const.py
- docs/develop/one_dragon/modules/application_plugin_system.md
- src/zzz_od/application/coffee/coffee_app_const.py
- src/zzz_od/application/ridu_weekly/ridu_weekly_const.py
- src/zzz_od/application/engagement_reward/engagement_reward_const.py
Summary by CodeRabbit