用户评分理论上完成版.
This commit is contained in:
parent
ded3da6670
commit
00e62ec8f7
|
@ -1,5 +1,7 @@
|
||||||
class TestController < ApplicationController
|
class TestController < ApplicationController
|
||||||
|
|
||||||
|
helper :UserScore
|
||||||
|
|
||||||
def zip
|
def zip
|
||||||
homeworks_attach_path = []
|
homeworks_attach_path = []
|
||||||
homework_id = params[:homework_id]
|
homework_id = params[:homework_id]
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
class UserScoreController < ApplicationController
|
||||||
|
helper :UserScoreHelper
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -51,7 +51,7 @@ module UserScoreHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def calculate_influence_count(user)
|
def calculate_influence_count(user)
|
||||||
watcher_count = watcher_users(User.current.id).count
|
watcher_count = Watcher.where("watchable_type = 'principal' AND watchable_id = ?", user.id).count
|
||||||
end
|
end
|
||||||
|
|
||||||
def calculate_skill_count(user)
|
def calculate_skill_count(user)
|
||||||
|
@ -92,13 +92,17 @@ module UserScoreHelper
|
||||||
|
|
||||||
if level == 0
|
if level == 0
|
||||||
skill_score = praise_count - 0.5 * tread_count
|
skill_score = praise_count - 0.5 * tread_count
|
||||||
elseif level == 1
|
end
|
||||||
|
if level == 1
|
||||||
skill_score = 2 * praise_count - 1.5 * tread_count
|
skill_score = 2 * praise_count - 1.5 * tread_count
|
||||||
elseif level == 2
|
end
|
||||||
|
if level == 2
|
||||||
skill_socre = 3 * praise_count - 2.5 * tread_count
|
skill_socre = 3 * praise_count - 2.5 * tread_count
|
||||||
elseif level == 3
|
end
|
||||||
|
if level == 3
|
||||||
skill_socre = 4 * praise_count - 3.5 * tread_count
|
skill_socre = 4 * praise_count - 3.5 * tread_count
|
||||||
elseif level == 4
|
end
|
||||||
|
if level == 4
|
||||||
skill_socre = 5 * praise_count - 4.5 * tread_count
|
skill_socre = 5 * praise_count - 4.5 * tread_count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -175,9 +179,11 @@ module UserScoreHelper
|
||||||
|
|
||||||
if max_praise_num > 4
|
if max_praise_num > 4
|
||||||
level = 1
|
level = 1
|
||||||
elseif commit_count > 0 and commit_count < 101
|
end
|
||||||
|
if commit_count > 0 and commit_count < 101
|
||||||
level = 1
|
level = 1
|
||||||
elseif commit_count > 100 or isManager == 1
|
end
|
||||||
|
if commit_count > 100 or isManager == 1
|
||||||
level = 2
|
level = 2
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -195,13 +201,13 @@ module UserScoreHelper
|
||||||
# end
|
# end
|
||||||
# file_count = user.file_commit.count
|
# file_count = user.file_commit.count
|
||||||
# issue_count = Issue.where('author_id = ?', user.id).count
|
# issue_count = Issue.where('author_id = ?', user.id).count
|
||||||
f = user.user_score.file
|
#f = user.user_score.file
|
||||||
i = user.user_score.issue
|
#i = user.user_score.issue
|
||||||
f_max = UserScore.find_max_file
|
#f_max = UserScore.find_max_file
|
||||||
f_min = UserScore.find_min_file
|
#f_min = UserScore.find_min_file
|
||||||
i_max = UserScore.find_max_issue
|
#i_max = UserScore.find_max_issue
|
||||||
i_min = UserScore.find_min_issue
|
#i_min = UserScore.find_min_issue
|
||||||
score = 100 * ((f - f_min)/(f_max - f_min) + (i - i_min)/(i_max - i_min))
|
#score = 100 * ((f - f_min)/(f_max - f_min) + (i - i_min)/(i_max - i_min))
|
||||||
end
|
end
|
||||||
|
|
||||||
def calculate_file(user)
|
def calculate_file(user)
|
||||||
|
@ -216,8 +222,14 @@ module UserScoreHelper
|
||||||
issue_details_count = 0
|
issue_details_count = 0
|
||||||
issues = Issue.where('assigned_to_id = ?', user.id)
|
issues = Issue.where('assigned_to_id = ?', user.id)
|
||||||
|
|
||||||
|
change_count = 0
|
||||||
issues.each do |issue|
|
issues.each do |issue|
|
||||||
change_count = issue.journals.where("prop_key = ?", "done_ratio").count
|
js = issue.journals
|
||||||
|
js.each do |j|
|
||||||
|
change_count = change_count + j.details.where("prop_key = ?", "done_ratio").count
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
issue_details_count = change_count + issue_details_count
|
issue_details_count = change_count + issue_details_count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -233,7 +245,9 @@ module UserScoreHelper
|
||||||
file = calculate_file(user)
|
file = calculate_file(user)
|
||||||
issue = calculate_issue(user)
|
issue = calculate_issue(user)
|
||||||
level = calculate_level(user)
|
level = calculate_level(user)
|
||||||
user.user_score << UserScore.new(:collaboration => collaboration, :influence => influence, :skill => skill,
|
#user.user_score << UserScore.new(:collaboration => collaboration, :influence => influence, :skill => skill,
|
||||||
|
# :activity => activity, :file => file, :issue => issue, :level => level)
|
||||||
|
UserScore.new(:collaboration => collaboration, :influence => influence, :skill => skill,
|
||||||
:activity => activity, :file => file, :issue => issue, :level => level)
|
:activity => activity, :file => file, :issue => issue, :level => level)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -241,12 +255,17 @@ module UserScoreHelper
|
||||||
collaboration = calculate_collaboration_count(user)
|
collaboration = calculate_collaboration_count(user)
|
||||||
influence = calculate_influence_count(user)
|
influence = calculate_influence_count(user)
|
||||||
skill = calculate_skill_count(user)
|
skill = calculate_skill_count(user)
|
||||||
activity = calculate_activity_count(user)
|
|
||||||
file = calculate_file(user)
|
file = calculate_file(user)
|
||||||
issue = calculate_issue(user)
|
issue = calculate_issue(user)
|
||||||
|
|
||||||
|
##activity = calculate_activity_count(user)
|
||||||
|
|
||||||
level = calculate_level(user)
|
level = calculate_level(user)
|
||||||
user.user_score.update_attributes(:collaboration => collaboration, :influence => influence, :skill => skill,
|
user.user_score.update_attributes(:collaboration => collaboration, :influence => influence, :skill => skill,
|
||||||
:activity => activity, :file => file, :issue => issue, :level => level)
|
:activity => activity, :file => file, :issue => issue, :level => level)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -96,7 +96,7 @@ class User < Principal
|
||||||
has_many :students_for_courses
|
has_many :students_for_courses
|
||||||
has_many :courses, :through => :students_for_courses, :source => :project
|
has_many :courses, :through => :students_for_courses, :source => :project
|
||||||
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
|
||||||
has_many :file_commit, :class_name => 'Attachment', :foreign_key => 'author_id', :conditions => "container_tpye = 'Project' or container_type = 'Version'"
|
has_many :file_commit, :class_name => 'Attachment', :foreign_key => 'author_id', :conditions => "container_type = 'Project' or container_type = 'Version'"
|
||||||
####
|
####
|
||||||
# added by bai
|
# added by bai
|
||||||
has_many :join_in_contests, :dependent => :destroy
|
has_many :join_in_contests, :dependent => :destroy
|
||||||
|
@ -105,7 +105,7 @@ class User < Principal
|
||||||
has_many :wiki_contents, :foreign_key => 'author_id'
|
has_many :wiki_contents, :foreign_key => 'author_id'
|
||||||
has_many :journals
|
has_many :journals
|
||||||
has_many :messages, :foreign_key => 'author_id'
|
has_many :messages, :foreign_key => 'author_id'
|
||||||
has_one :user_socre, :dependent => :destroy
|
has_one :user_score, :dependent => :destroy
|
||||||
# end
|
# end
|
||||||
|
|
||||||
######added by nie
|
######added by nie
|
||||||
|
|
|
@ -1,15 +1,26 @@
|
||||||
<h3>test</h3>
|
<h3>test</h3>
|
||||||
|
|
||||||
<% memos=Memo.where('author_id = 5 AND parent_id IS NOT NULL') %>
|
|
||||||
<% memos.each do |m|%>
|
<% users = User.all%>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>name</th><th>C</th><th>I</th><th>S</th><th>filecount</th><th>issuecount</th><th>level</th>
|
||||||
|
</tr>
|
||||||
|
<% users.each do |user| %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<% if Memo.find(m.parent_id).author_id != 5 %>
|
<td><%= user.lastname %><%= user.firstname %></td>
|
||||||
<td><%=m.subject%></td>
|
<td><%= calculate_collaboration_count(user) %></td>
|
||||||
<% end %>
|
<td><%= calculate_influence_count(user) %></td>
|
||||||
</tr>>
|
<td><%= calculate_skill_count(user) %></td>
|
||||||
|
<td><%= calculate_file(user) %></td>
|
||||||
|
<td><%= calculate_issue(user) %></td>
|
||||||
|
<td><%= calculate_level(user) %></td>
|
||||||
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
</table>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class UserScoreControllerTest < ActionController::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
Reference in New Issue