优先快过期委托

This commit is contained in:
longer-sausage 2026-04-21 18:15:55 +08:00
parent e37d63548e
commit c7dff9a95d
7 changed files with 35 additions and 7 deletions

View File

@ -1730,7 +1730,7 @@
},
"Commission": {
"PresetFilter": "cube",
"CustomFilter": "DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest",
"CustomFilter": "DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> expire\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest",
"DoMajorCommission": false
},
"Storage": {

View File

@ -23,6 +23,7 @@ from module.ui.scroll import Scroll
from module.ui.switch import Switch
from module.ui.ui import UI
from module.ui_white.assets import REWARD_1_WHITE, REWARD_GOTO_COMMISSION_WHITE
from datetime import timedelta
COMMISSION_SWITCH = Switch('Commission_switch', is_selector=True)
COMMISSION_SWITCH.add_state('daily', COMMISSION_DAILY)
@ -129,8 +130,8 @@ class RewardCommission(UI, InfoHandler):
for comm in total:
if comm.genre == 'daily_event':
self.max_commission = 5
running_count = int(
np.sum([1 for c in total if c.status == 'running']))
running_list = [c for c in total if c.status == 'running']
running_count = len(running_list)
logger.attr('Running', f'{running_count}/{self.max_commission}')
# Load filter string
@ -168,6 +169,29 @@ class RewardCommission(UI, InfoHandler):
else:
logger.info('Not enough commissions to run')
# 优先处理快过期重要委托
if 'expire' in run:
logger.info('尝试提前快过期委托')
valid_runs = [c for c in run if isinstance(c, Commission)]
queue = running_list + valid_runs[:self.max_commission - running_count]
if queue:
min_duration_time = queue[0].duration
for c in queue:
if c.duration < min_duration_time:
min_duration_time = c.duration
else:
min_duration_time = timedelta(seconds=0)
logger.attr('Min Duration Time', min_duration_time)
expire_index = run.grids.index('expire')
important = run[:expire_index].filter(lambda c: isinstance(c, Commission) and c.expire)
priority = [c for c in important if c.expire < min_duration_time]
run = run.delete(SelectedGrids(['expire']))
run = SelectedGrids(priority).add_by_eq(run)
logger.attr('Filter_sort', ' > '.join([str(c) for c in run]))
self.comm_choose = run
if running_count >= self.max_commission:
return SelectedGrids([]), SelectedGrids([])

View File

@ -14,7 +14,8 @@ DICT_FILTER_PRESET = {
> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20
> UrgentCube-2:15 > UrgentCube-4
> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30
> ExtraDrill-2:40 > ExtraDrill-0:20
> ExtraDrill-2:40 > ExtraDrill-0:20
> expire
> Major > DailyChip > DailyResource
> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6
> ExtraCube-3 > ExtraPart-1 > UrgentBox-3
@ -65,6 +66,7 @@ DICT_FILTER_PRESET = {
> UrgentCube-2:15 > UrgentCube-4 > UrgentCube-6
> ExtraCube-1:30 > ExtraCube-3 > ExtraCube-4
> ExtraCube-8 > UrgentBox-6 > UrgentBox-3 > ExtraCube-5 > UrgentBox-1
> expire
> Major > DailyChip > DailyResource
> ExtraOil-8 > UrgentDrill-4 > ExtraOil-4 > ExtraOil-1
> ExtraDrill-0:20 > UrgentDrill-2:40 > ExtraPart-0:30
@ -113,6 +115,7 @@ DICT_FILTER_PRESET = {
> UrgentBox-6 > ExtraCube-1:30 > UrgentCube-6
> UrgentBox-3 > UrgentBox-1
> UrgentDrill-4 > ExtraOil-8 > UrgentDrill-2:40 > ExtraOil-4
> expire
> Major > DailyChip > DailyResource
> ExtraCube-3 > UrgentDrill-2 > UrgentDrill-1
> UrgentDrill-1:30 > UrgentDrill-1:10

View File

@ -19,7 +19,7 @@ COMMISSION_FILTER = Filter(
'(\d\d?.\d\d?|\d\d?)?'
),
attr=('category_str', 'genre_str', 'duration_hm', 'duration_hour'),
preset=('shortest',)
preset=('shortest', 'expire')
)

View File

@ -9219,7 +9219,7 @@
},
"CustomFilter": {
"type": "textarea",
"value": "DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest"
"value": "DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> expire\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest"
},
"DoMajorCommission": {
"type": "checkbox",

View File

@ -527,6 +527,7 @@ Commission:
> UrgentCube-2:15 > UrgentCube-4
> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30
> ExtraDrill-2:40 > ExtraDrill-0:20
> expire
> Major > DailyChip > DailyResource
> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6
> ExtraCube-3 > ExtraPart-1 > UrgentBox-3

View File

@ -306,7 +306,7 @@ class GeneratedConfig:
# Group `Commission`
Commission_PresetFilter = 'cube' # cube, cube_24h, chip, chip_24h, oil, custom
Commission_CustomFilter = 'DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest'
Commission_CustomFilter = 'DailyEvent > Gem-4 > Gem-2 > Gem-8 > ExtraCube-0:30\n> UrgentCube-1:30 > UrgentCube-1:45 > UrgentCube-3\n> ExtraDrill-5:20 > ExtraDrill-2 > ExtraDrill-3:20\n> UrgentCube-2:15 > UrgentCube-4\n> ExtraDrill-1 > UrgentCube-6 > ExtraCube-1:30\n> ExtraDrill-2:40 > ExtraDrill-0:20\n> expire\n> Major > DailyChip > DailyResource\n> ExtraPart-0:30 > ExtraOil-1 > UrgentBox-6\n> ExtraCube-3 > ExtraPart-1 > UrgentBox-3\n> ExtraCube-4 > ExtraPart-1:30 > ExtraOil-4\n> UrgentBox-1 > ExtraCube-5 > UrgentBox-1\n> ExtraCube-8 > ExtraOil-8\n> UrgentDrill-4 > UrgentDrill-2:40 > UrgentDrill-2\n> UrgentDrill-1 > UrgentDrill-1:30 > UrgentDrill-1:10\n> Extra-0:20 > Extra-0:30 > Extra-1:00 > Extra-1:30 > Extra-2:00\n> shortest'
Commission_DoMajorCommission = False
# Group `Tactical`