Skip to content

Commit 23750e1

Browse files
committed
Fix: default missing banner outcomes to wins
1 parent 05ce5d3 commit 23750e1

7 files changed

Lines changed: 203 additions & 194 deletions

File tree

src/api/pages/gi/wish_tracker/uid/mod.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,27 @@ use crate::{
1515
GiGachaType,
1616
};
1717

18-
/// Applies a known banner result to tracker guarantee state.
19-
///
20-
/// Unknown coverage leaves both the displayed result and guarantee state
21-
/// untouched, preventing incomplete historical catalogs from inventing losses.
18+
/// Applies the shared banner result to tracker guarantee state.
2219
fn classify_win(
2320
catalog: &BannerCatalog,
2421
pool: GiGachaType,
2522
item: PullItem,
2623
timestamp: DateTime<Utc>,
2724
guarantee: &mut bool,
28-
) -> Option<WinType> {
25+
) -> WinType {
2926
match catalog.classify(PullPool::Gi(pool), item, timestamp) {
30-
BannerOutcome::Unknown => None,
31-
BannerOutcome::Featured if *guarantee => {
27+
BannerOutcome::Win if *guarantee => {
3228
*guarantee = false;
33-
Some(WinType::Guarantee)
29+
WinType::Guarantee
3430
}
35-
BannerOutcome::Featured => Some(WinType::Win),
36-
BannerOutcome::OffBanner if *guarantee => {
31+
BannerOutcome::Win => WinType::Win,
32+
BannerOutcome::Loss if *guarantee => {
3733
*guarantee = false;
38-
Some(WinType::Guarantee)
34+
WinType::Guarantee
3935
}
40-
BannerOutcome::OffBanner => {
36+
BannerOutcome::Loss => {
4137
*guarantee = true;
42-
Some(WinType::Loss)
38+
WinType::Loss
4339
}
4440
}
4541
}
@@ -309,13 +305,13 @@ async fn get_wish_tracker(
309305
4 => character_pull_4 = 0,
310306
5 => {
311307
character_pull_5 = 0;
312-
wish.win = classify_win(
308+
wish.win = Some(classify_win(
313309
&banner_catalog,
314310
GiGachaType::Character,
315311
PullItem::Character(wish.item_id),
316312
wish.timestamp,
317313
&mut guarantee,
318-
);
314+
));
319315
}
320316
_ => {}
321317
}
@@ -360,13 +356,13 @@ async fn get_wish_tracker(
360356
4 => weapon_pull_4 = 0,
361357
5 => {
362358
weapon_pull_5 = 0;
363-
wish.win = classify_win(
359+
wish.win = Some(classify_win(
364360
&banner_catalog,
365361
GiGachaType::Weapon,
366362
PullItem::Weapon(wish.item_id),
367363
wish.timestamp,
368364
&mut guarantee,
369-
);
365+
));
370366
}
371367
_ => {}
372368
}

src/api/pages/warp_tracker/uid/mod.rs

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,27 @@ use crate::{
1515
GachaType,
1616
};
1717

18-
/// Applies a known banner result to tracker guarantee state.
19-
///
20-
/// Unknown coverage leaves both the displayed result and guarantee state
21-
/// untouched, preventing incomplete historical catalogs from inventing losses.
18+
/// Applies the shared banner result to tracker guarantee state.
2219
fn classify_win(
2320
catalog: &BannerCatalog,
2421
pool: GachaType,
2522
item: PullItem,
2623
timestamp: DateTime<Utc>,
2724
guarantee: &mut bool,
28-
) -> Option<WinType> {
25+
) -> WinType {
2926
match catalog.classify(PullPool::Hsr(pool), item, timestamp) {
30-
BannerOutcome::Unknown => None,
31-
BannerOutcome::Featured if *guarantee => {
27+
BannerOutcome::Win if *guarantee => {
3228
*guarantee = false;
33-
Some(WinType::Guarantee)
29+
WinType::Guarantee
3430
}
35-
BannerOutcome::Featured => Some(WinType::Win),
36-
BannerOutcome::OffBanner if *guarantee => {
31+
BannerOutcome::Win => WinType::Win,
32+
BannerOutcome::Loss if *guarantee => {
3733
*guarantee = false;
38-
Some(WinType::Guarantee)
34+
WinType::Guarantee
3935
}
40-
BannerOutcome::OffBanner => {
36+
BannerOutcome::Loss => {
4137
*guarantee = true;
42-
Some(WinType::Loss)
38+
WinType::Loss
4339
}
4440
}
4541
}
@@ -295,13 +291,13 @@ async fn get_warp_tracker(
295291
5 => {
296292
special_pull_5 = 0;
297293

298-
warp.win = classify_win(
294+
warp.win = Some(classify_win(
299295
&banner_catalog,
300296
GachaType::Special,
301297
PullItem::Character(warp.item_id),
302298
warp.timestamp,
303299
&mut guarantee,
304-
);
300+
));
305301
}
306302
_ => {}
307303
}
@@ -347,13 +343,13 @@ async fn get_warp_tracker(
347343
5 => {
348344
lc_pull_5 = 0;
349345

350-
warp.win = classify_win(
346+
warp.win = Some(classify_win(
351347
&banner_catalog,
352348
GachaType::Lc,
353349
PullItem::LightCone(warp.item_id),
354350
warp.timestamp,
355351
&mut guarantee,
356-
);
352+
));
357353
}
358354
_ => {}
359355
}
@@ -399,13 +395,13 @@ async fn get_warp_tracker(
399395
5 => {
400396
collab_pull_5 = 0;
401397

402-
warp.win = classify_win(
398+
warp.win = Some(classify_win(
403399
&banner_catalog,
404400
GachaType::Collab,
405401
PullItem::Character(warp.item_id),
406402
warp.timestamp,
407403
&mut collab_guarantee,
408-
);
404+
));
409405
}
410406
_ => {}
411407
}
@@ -451,13 +447,13 @@ async fn get_warp_tracker(
451447
5 => {
452448
collab_lc_pull_5 = 0;
453449

454-
warp.win = classify_win(
450+
warp.win = Some(classify_win(
455451
&banner_catalog,
456452
GachaType::CollabLc,
457453
PullItem::LightCone(warp.item_id),
458454
warp.timestamp,
459455
&mut collab_lc_guarantee,
460-
);
456+
));
461457
}
462458
_ => {}
463459
}

src/api/pages/zzz/signal_tracker/uid/mod.rs

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,27 @@ use crate::{
1515
ZzzGachaType,
1616
};
1717

18-
/// Applies a known banner result to tracker guarantee state.
19-
///
20-
/// Unknown coverage leaves both the displayed result and guarantee state
21-
/// untouched, preventing incomplete historical catalogs from inventing losses.
18+
/// Applies the shared banner result to tracker guarantee state.
2219
fn classify_win(
2320
catalog: &BannerCatalog,
2421
pool: ZzzGachaType,
2522
item: PullItem,
2623
timestamp: DateTime<Utc>,
2724
guarantee: &mut bool,
28-
) -> Option<WinType> {
25+
) -> WinType {
2926
match catalog.classify(PullPool::Zzz(pool), item, timestamp) {
30-
BannerOutcome::Unknown => None,
31-
BannerOutcome::Featured if *guarantee => {
27+
BannerOutcome::Win if *guarantee => {
3228
*guarantee = false;
33-
Some(WinType::Guarantee)
29+
WinType::Guarantee
3430
}
35-
BannerOutcome::Featured => Some(WinType::Win),
36-
BannerOutcome::OffBanner if *guarantee => {
31+
BannerOutcome::Win => WinType::Win,
32+
BannerOutcome::Loss if *guarantee => {
3733
*guarantee = false;
38-
Some(WinType::Guarantee)
34+
WinType::Guarantee
3935
}
40-
BannerOutcome::OffBanner => {
36+
BannerOutcome::Loss => {
4137
*guarantee = true;
42-
Some(WinType::Loss)
38+
WinType::Loss
4339
}
4440
}
4541
}
@@ -270,13 +266,13 @@ async fn get_signal_tracker(
270266
special_pull_a = 0;
271267
special_pull_s = 0;
272268

273-
signal.win = classify_win(
269+
signal.win = Some(classify_win(
274270
&banner_catalog,
275271
ZzzGachaType::Special,
276272
PullItem::Character(signal.item_id),
277273
signal.timestamp,
278274
&mut guarantee,
279-
);
275+
));
280276
}
281277
_ => {}
282278
}
@@ -323,13 +319,13 @@ async fn get_signal_tracker(
323319
w_engine_pull_a = 0;
324320
w_engine_pull_s = 0;
325321

326-
signal.win = classify_win(
322+
signal.win = Some(classify_win(
327323
&banner_catalog,
328324
ZzzGachaType::WEngine,
329325
PullItem::WEngine(signal.item_id),
330326
signal.timestamp,
331327
&mut guarantee,
332-
);
328+
));
333329
}
334330
_ => {}
335331
}
@@ -422,13 +418,13 @@ async fn get_signal_tracker(
422418
exclusive_rescreening_pull_a = 0;
423419
exclusive_rescreening_pull_s = 0;
424420

425-
signal.win = classify_win(
421+
signal.win = Some(classify_win(
426422
&banner_catalog,
427423
ZzzGachaType::ExclusiveRescreening,
428424
PullItem::Character(signal.item_id),
429425
signal.timestamp,
430426
&mut guarantee,
431-
);
427+
));
432428
}
433429
_ => {}
434430
}
@@ -481,13 +477,13 @@ async fn get_signal_tracker(
481477
w_engine_reverberation_pull_a = 0;
482478
w_engine_reverberation_pull_s = 0;
483479

484-
signal.win = classify_win(
480+
signal.win = Some(classify_win(
485481
&banner_catalog,
486482
ZzzGachaType::WEngineReverberation,
487483
PullItem::WEngine(signal.item_id),
488484
signal.timestamp,
489485
&mut guarantee,
490-
);
486+
));
491487
}
492488
_ => {}
493489
}

0 commit comments

Comments
 (0)