Problem
CalculateScoresButton.callback in admin_panel/unified_actions.py reaches into private AdminCommands methods across a module boundary: _create_backup() and _post_calculation_to_channel(...). That couples the panel button to AdminCommands internals.
Scope
- Move successful-calculation post-processing behind a public helper/service boundary.
- Let the admin command path and panel button call that public boundary.
- Keep unified_actions.py file structure intact; file size is not the issue.
Acceptance Criteria
- CalculateScoresButton no longer calls private AdminCommands methods.
- Backup and league-channel posting behavior is unchanged.
- Existing cooldown and panel refresh behavior is unchanged.
- Relevant tests pass.
Problem
CalculateScoresButton.callback in
admin_panel/unified_actions.pyreaches into private AdminCommands methods across a module boundary: _create_backup() and _post_calculation_to_channel(...). That couples the panel button to AdminCommands internals.Scope
Acceptance Criteria