def apply_fitness_scaling( params: dict, *, fitness_level: int, scaling_config: dict, min_reps: int, min_reps_strength: int, is_strength: bool = False, ) -> dict: """Scale workout params based on fitness level.""" out = dict(params) level = fitness_level or 2 scaling = scaling_config.get(level, scaling_config[2]) rep_floor = min_reps_strength if is_strength else min_reps out['rep_min'] = max(rep_floor, int(out['rep_min'] * scaling['rep_min_mult'])) out['rep_max'] = max(out['rep_min'], int(out['rep_max'] * scaling['rep_max_mult'])) rounds_min, rounds_max = out['rounds'] rounds_min = max(1, rounds_min + scaling['rounds_adj']) rounds_max = max(rounds_min, rounds_max + scaling['rounds_adj']) out['rounds'] = (rounds_min, rounds_max) rest = out.get('rest_between_rounds', 45) out['rest_between_rounds'] = max(15, rest + scaling['rest_adj']) if level <= 1 and is_strength: out['rep_min'] = max(5, out['rep_min']) out['rep_max'] = max(out['rep_min'], out['rep_max']) return out