From af15971a3fe46c3340854c661c68e8c0d7a8d2c8 Mon Sep 17 00:00:00 2001 From: lexiaozhang Date: Mon, 14 Aug 2023 21:30:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=84=E8=8C=83ProjectEvaluation?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 4 +-- ...t_evaluations.rb => project_evaluation.rb} | 30 +++++++++++-------- 2 files changed, 19 insertions(+), 15 deletions(-) rename app/models/{project_evaluations.rb => project_evaluation.rb} (87%) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a7723413..976a4842 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -103,7 +103,7 @@ class ProjectsController < ApplicationController # result = Gitea::Repository::Branches::ListService.call(@owner, @project.identifier) result = Gitea::Repository::Branches::ListNameService.call(@owner, @project.identifier, params[:name]) @branches = result.is_a?(Hash) ? (result.key?(:status) ? [] : result) : result - end + end def branches_slice return @branches = [] unless @project.forge? @@ -293,7 +293,7 @@ class ProjectsController < ApplicationController def score - project_evaluation = ProjectEvaluations.find_by(project_id: @project.id) + project_evaluation = ProjectEvaluation.find_by(project_id: @project.id) response_data = { influence_norm_score: project_evaluation&.norm_influence || 0, diff --git a/app/models/project_evaluations.rb b/app/models/project_evaluation.rb similarity index 87% rename from app/models/project_evaluations.rb rename to app/models/project_evaluation.rb index e6e83a2b..ab40ecb8 100644 --- a/app/models/project_evaluations.rb +++ b/app/models/project_evaluation.rb @@ -17,13 +17,17 @@ # score :float(24) default("0") # created_at :datetime not null # updated_at :datetime not null +# weekly_score :float(24) +# monthly_score :float(24) +# quarterly_score :float(24) +# yearly_score :float(24) # # Indexes # -# fk_rails_f2d256da0f (project_id) +# index_project_evaluations_on_project_id (project_id) # -class ProjectEvaluations < ApplicationRecord +class ProjectEvaluation < ApplicationRecord belongs_to :project def self.calculate_influence(project) @@ -128,22 +132,22 @@ class ProjectEvaluations < ApplicationRecord end def self.update_normalized_scores - max_influence = ProjectEvaluations.maximum(:influence) - min_influence = ProjectEvaluations.minimum(:influence) + max_influence = ProjectEvaluation.maximum(:influence) + min_influence = ProjectEvaluation.minimum(:influence) - max_community = ProjectEvaluations.maximum(:community) - min_community = ProjectEvaluations.minimum(:community) + max_community = ProjectEvaluation.maximum(:community) + min_community = ProjectEvaluation.minimum(:community) - max_vitality = ProjectEvaluations.maximum(:vitality) - min_vitality = ProjectEvaluations.minimum(:vitality) + max_vitality = ProjectEvaluation.maximum(:vitality) + min_vitality = ProjectEvaluation.minimum(:vitality) - max_health = ProjectEvaluations.maximum(:health) - min_health = ProjectEvaluations.minimum(:health) + max_health = ProjectEvaluation.maximum(:health) + min_health = ProjectEvaluation.minimum(:health) - max_trend = ProjectEvaluations.maximum(:trend) - min_trend = ProjectEvaluations.minimum(:trend) + max_trend = ProjectEvaluation.maximum(:trend) + min_trend = ProjectEvaluation.minimum(:trend) - ProjectEvaluations.all.each do |evaluation| + ProjectEvaluation.find_each do |evaluation| evaluation.norm_influence = (evaluation.influence - min_influence) / (max_influence - min_influence) evaluation.norm_community = (evaluation.community - min_community) / (max_community - min_community) evaluation.norm_vitality = (evaluation.vitality - min_vitality) / (max_vitality - min_vitality)