From c98c2022247a62cd633cdab7fcd52d004664e043 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Wed, 23 Jul 2025 08:58:41 -0500 Subject: [PATCH] Update gameplay_queries.py Decision bug fixes --- in_game/gameplay_queries.py | 46 +++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/in_game/gameplay_queries.py b/in_game/gameplay_queries.py index 5227ef2..6880b1b 100644 --- a/in_game/gameplay_queries.py +++ b/in_game/gameplay_queries.py @@ -1002,15 +1002,11 @@ def get_db_ready_decisions(session: Session, this_game: Game, db_game_id: int) - logger.info(f'Game {this_game.id} | Appending {play.pitcher.player.name_with_desc} to blown saves on play #{play.play_num}') b_save.append(play.pitcher) - elif play.home_score > play.away_score and play.home_score - play.away_score <= 3 and home_pitcher != home_starter and play.inning_num + 2 >= final_inning: + elif play.home_score > play.away_score and play.home_score - play.away_score <= 3 and home_pitcher != home_starter and play.inning_num >= final_inning - 2: logger.info(f'Game {this_game.id} | Setting {play.pitcher.player.name_with_desc} to save on play #{play.play_num}') save = home_pitcher elif play.inning_half == 'bot': - if away_starter is None: - logger.info(f'Game {this_game.id} | Setting away starter to {play.pitcher.player.name_with_desc} on play #{play.play_num}') - away_starter = play.pitcher - if away_finisher is None: logger.info(f'Game {this_game.id} | Setting away finisher to {play.pitcher.player.name_with_desc} on play #{play.play_num}') away_finisher = play.pitcher @@ -1028,6 +1024,10 @@ def get_db_ready_decisions(session: Session, this_game: Game, db_game_id: int) - if play.pitcher not in b_save: logger.info(f'Game {this_game.id} | Appending {play.pitcher.player.name_with_desc} to blown saves on play #{play.play_num}') b_save.append(play.pitcher) + + elif play.away_score > play.home_score and play.away_score - play.home_score <= 3 and away_pitcher != away_starter and play.inning_num >= final_inning - 2: + logger.info(f'Game {this_game.id} | Setting {play.pitcher.player.name_with_desc} to save on play #{play.play_num}') + save = away_pitcher if play.is_go_ahead: run_diff = play.home_score - play.away_score @@ -1090,20 +1090,36 @@ def get_db_ready_decisions(session: Session, this_game: Game, db_game_id: int) - pitcher_team_id=play.pitcher.team_id ) + # After the play loop, determine winner/loser from final game state if still None + final_play = session.exec(select(Play).where(Play.game == this_game).order_by(Play.play_num.desc())).first() if winner is None: - logger.info(f'Setting winner to last_winner: {last_winner}') - winner = last_winner + if final_play.home_score > final_play.away_score: + winner = home_finisher + logger.info(f'Setting winner to home_finisher: {winner}') + else: + winner = away_finisher + logger.info(f'Setting winner to away_finisher: {winner}') if loser is None: - logger.info(f'Setting loser to last_loser: {last_loser}') - loser = last_loser + if final_play.home_score > final_play.away_score: + loser = away_finisher + logger.info(f'Setting loser to away_finisher: {loser}') + else: + loser = home_finisher + logger.info(f'Setting loser to home_finisher: {loser}') logger.info(f'winner: {winner} / loser: {loser}') - decisions[winner.player_id].win = 1 - decisions[loser.player_id].loss = 1 - decisions[away_starter.player_id].is_start = True - decisions[home_starter.player_id].is_start = True - decisions[away_finisher.player_id].game_finished = 1 - decisions[home_finisher.player_id].game_finished = 1 + if winner is not None: + decisions[winner.player_id].win = 1 + if loser is not None: + decisions[loser.player_id].loss = 1 + if away_starter is not None: + decisions[away_starter.player_id].is_start = True + if home_starter is not None: + decisions[home_starter.player_id].is_start = True + if away_finisher is not None: + decisions[away_finisher.player_id].game_finished = 1 + if home_finisher is not None: + decisions[home_finisher.player_id].game_finished = 1 for lineup in holds: decisions[lineup.player_id].hold = 1