def team_list_sync(): team_list = search_teams({}, 0, _es_size) for team in team_list: id = team['id'] team_training_model_sync(id) details_info = get_team_details(id) member_id_list = [] for member in details_info['member_list']: member_id_list.append(member['user_id']) skill_value = details_info.get('skill_value', 0) solve_count = details_info.get('solve_count', 0) previous_problem_score = details_info['total_score'] current_problem_score = get_total_problem_score_for_user( member_id_list) updated_data = {'total_score': current_problem_score} decrease_factor = 0 if current_problem_score < previous_problem_score + details_info[ 'target_score']: decrease_amount = previous_problem_score + details_info[ 'target_score'] - current_problem_score decrease_factor = math.sqrt(decrease_amount) skill = Skill() updated_data['decreased_skill_value'] = details_info[ 'decreased_skill_value'] + decrease_factor current_skill = skill_value - updated_data['decreased_skill_value'] current_skill_level = skill.get_skill_level_from_skill(current_skill) updated_data['target_score'] = skill.generate_next_week_prediction( current_skill_level) add_user_ratings(id, current_skill, solve_count) update_team_details(id, updated_data) app.logger.info(f'team_list_sync completed')
def user_list_sync(): app.logger.info(f'user_list_sync called') user_list = search_user({}, 0, _es_size) for user in user_list: id = user['id'] user_problem_data_sync(id) app.logger.info(f'user_problem_data_sync done') # user_training_model_sync(id) # app.logger.info(f'user_training_model_sync done') details_info = get_user_details(id) skill_value = details_info.get('skill_value', 0) solve_count = details_info.get('solve_count', 0) app.logger.info( f'skill_value: {skill_value}, solve_count: {solve_count}') previous_problem_score = details_info['total_score'] app.logger.info(f'previous_problem_score: {previous_problem_score}') current_problem_score = get_total_problem_score_for_user([id]) app.logger.info(f'current_problem_score: {current_problem_score}') updated_data = {'total_score': current_problem_score} decrease_factor = 0 if current_problem_score < previous_problem_score + details_info[ 'target_score']: decrease_amount = previous_problem_score + details_info[ 'target_score'] - current_problem_score app.logger.info(f'decrease_amount: {decrease_amount}') decrease_factor = math.sqrt(decrease_amount) skill = Skill() updated_data['decreased_skill_value'] = details_info[ 'decreased_skill_value'] + decrease_factor current_skill = skill_value - updated_data['decreased_skill_value'] app.logger.info(f'current_skill: {current_skill}') current_skill_level = skill.get_skill_level_from_skill(current_skill) app.logger.info(f'decrease_amount: {current_skill_level}') updated_data['target_score'] = skill.generate_next_week_prediction( current_skill_level) app.logger.info(f'updated_data: {updated_data}') add_user_ratings(id, current_skill, solve_count) update_user_details(id, updated_data) app.logger.info(f'user_list_sync completed')