后台统计优化

This commit is contained in:
xiaoxiaoqiong 2022-07-11 15:52:38 +08:00
parent 5fcf789e63
commit 8dae15225e
3 changed files with 272 additions and 383 deletions

View File

@ -1,69 +1,69 @@
GEM GEM
remote: https://gems.ruby-china.com/ remote: https://gems.ruby-china.com/
specs: specs:
aasm (5.0.6) aasm (5.2.0)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
actioncable (5.2.4.1) actioncable (5.2.6)
actionpack (= 5.2.4.1) actionpack (= 5.2.6)
nio4r (~> 2.0) nio4r (~> 2.0)
websocket-driver (>= 0.6.1) websocket-driver (>= 0.6.1)
actionmailer (5.2.4.1) actionmailer (5.2.6)
actionpack (= 5.2.4.1) actionpack (= 5.2.6)
actionview (= 5.2.4.1) actionview (= 5.2.6)
activejob (= 5.2.4.1) activejob (= 5.2.6)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.0)
actionpack (5.2.4.1) actionpack (5.2.6)
actionview (= 5.2.4.1) actionview (= 5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
rack (~> 2.0, >= 2.0.8) rack (~> 2.0, >= 2.0.8)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.2.4.1) actionview (5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
builder (~> 3.1) builder (~> 3.1)
erubi (~> 1.4) erubi (~> 1.4)
rails-dom-testing (~> 2.0) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3) rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_decorator (1.3.2) active_decorator (1.4.0)
activesupport activesupport
activejob (5.2.4.1) activejob (5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
globalid (>= 0.3.6) globalid (>= 0.3.6)
activemodel (5.2.4.1) activemodel (5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
activerecord (5.2.4.1) activerecord (5.2.6)
activemodel (= 5.2.4.1) activemodel (= 5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
arel (>= 9.0) arel (>= 9.0)
activestorage (5.2.4.1) activestorage (5.2.6)
actionpack (= 5.2.4.1) actionpack (= 5.2.6)
activerecord (= 5.2.4.1) activerecord (= 5.2.6)
marcel (~> 0.3.1) marcel (~> 1.0.0)
activesupport (5.2.4.1) activesupport (5.2.6)
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
minitest (~> 5.1) minitest (~> 5.1)
tzinfo (~> 1.1) tzinfo (~> 1.1)
acts-as-taggable-on (6.5.0) acts-as-taggable-on (6.5.0)
activerecord (>= 5.0, < 6.1) activerecord (>= 5.0, < 6.1)
acts_as_list (0.9.19) acts_as_list (1.0.4)
activerecord (>= 3.0) activerecord (>= 4.2)
addressable (2.7.0) addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0) public_suffix (>= 2.0.2, < 5.0)
ancestry (3.0.7) ancestry (4.1.0)
activerecord (>= 3.2.0) activerecord (>= 5.2.6)
annotate (2.6.5) annotate (2.6.7)
activerecord (>= 2.3.0) activerecord (>= 2.3.0)
rake (>= 0.8.7) rake (~> 10.4.2, >= 10.4.2)
archive-zip (0.12.0) archive-zip (0.12.0)
io-like (~> 0.3.0) io-like (~> 0.3.0)
arel (9.0.0) arel (9.0.0)
ast (2.4.0) ast (2.4.2)
autoprefixer-rails (9.7.4) autoprefixer-rails (10.3.3.0)
execjs execjs (~> 2)
awesome_print (1.8.0) awesome_print (1.9.2)
axlsx (3.0.0.pre) axlsx (3.0.0.pre)
htmlentities (~> 4.3, >= 4.3.4) htmlentities (~> 4.3, >= 4.3.4)
mimemagic (~> 0.3) mimemagic (~> 0.3)
@ -72,40 +72,43 @@ GEM
axlsx_rails (0.5.2) axlsx_rails (0.5.2)
actionpack (>= 3.1) actionpack (>= 3.1)
axlsx (>= 2.0.1) axlsx (>= 2.0.1)
backport (1.1.2) backport (1.2.0)
benchmark (0.1.0) benchmark (0.2.0)
bindex (0.8.1) bindex (0.8.1)
bootsnap (1.4.6) bootsnap (1.9.3)
msgpack (~> 1.0) msgpack (~> 1.0)
bootstrap (4.3.1) bootstrap (4.3.1)
autoprefixer-rails (>= 9.1.0) autoprefixer-rails (>= 9.1.0)
popper_js (>= 1.14.3, < 2) popper_js (>= 1.14.3, < 2)
sassc-rails (>= 2.0.0) sassc-rails (>= 2.0.0)
builder (3.2.4) builder (3.2.4)
bulk_insert (1.7.0) bulk_insert (1.9.0)
activerecord (>= 3.2.0) activerecord (>= 3.2.0)
capybara (3.15.1) capybara (3.36.0)
addressable addressable
matrix
mini_mime (>= 0.1.3) mini_mime (>= 0.1.3)
nokogiri (~> 1.8) nokogiri (~> 1.8)
rack (>= 1.6.0) rack (>= 1.6.0)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
regexp_parser (~> 1.2) regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2) xpath (~> 3.2)
chartkick (3.3.1) chartkick (4.1.2)
childprocess (3.0.0) childprocess (4.1.0)
chinese_pinyin (1.0.2) chinese_pinyin (1.1.0)
chromedriver-helper (2.1.1) chromedriver-helper (2.1.1)
archive-zip (~> 0.10) archive-zip (~> 0.10)
nokogiri (~> 1.8) nokogiri (~> 1.8)
chunky_png (1.3.11) chunky_png (1.4.0)
concurrent-ruby (1.1.6) concurrent-ruby (1.1.9)
connection_pool (2.2.2) connection_pool (2.2.5)
crass (1.0.6) crass (1.0.6)
deep_cloneable (3.0.0) deep_cloneable (3.0.0)
activerecord (>= 3.1.0, < 7) activerecord (>= 3.1.0, < 7)
diff-lcs (1.3) diff-lcs (1.3)
diffy (3.3.0) diffy (3.3.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.5.1) doorkeeper (5.5.1)
railties (>= 5) railties (>= 5)
doorkeeper-jwt (0.4.1) doorkeeper-jwt (0.4.1)
@ -119,93 +122,103 @@ GEM
elasticsearch-transport (7.5.0) elasticsearch-transport (7.5.0)
faraday (>= 0.14, < 1) faraday (>= 0.14, < 1)
multi_json multi_json
enumerize (2.3.1) enumerize (2.4.0)
activesupport (>= 3.2) activesupport (>= 3.2)
erubi (1.9.0) erubi (1.10.0)
et-orbi (1.2.4) et-orbi (1.2.6)
tzinfo tzinfo
execjs (2.7.0) execjs (2.8.1)
faraday (0.15.4) faraday (0.15.4)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
ffi (1.12.2) ffi (1.15.4)
font-awesome-sass (4.7.0) font-awesome-sass (4.7.0)
sass (>= 3.2) sass (>= 3.2)
fugit (1.4.1) fugit (1.5.2)
et-orbi (~> 1.1, >= 1.1.8) et-orbi (~> 1.1, >= 1.1.8)
raabro (~> 1.4) raabro (~> 1.4)
globalid (0.4.2) gitea-client (0.9.2)
activesupport (>= 4.2.0) rest-client (~> 2.1.0)
globalid (1.0.0)
activesupport (>= 5.0)
grape-entity (0.7.1) grape-entity (0.7.1)
activesupport (>= 4.0) activesupport (>= 4.0)
multi_json (>= 1.3.2) multi_json (>= 1.3.2)
groupdate (4.1.2) groupdate (4.1.2)
activesupport (>= 4.2) activesupport (>= 4.2)
harmonious_dictionary (0.0.1) harmonious_dictionary (0.0.1)
hashie (3.6.0) hashie (5.0.0)
htmlentities (4.3.4) htmlentities (4.3.4)
i18n (1.8.2) http-accept (1.7.0)
http-cookie (1.0.5)
domain_name (~> 0.5)
i18n (1.8.11)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
io-like (0.3.1) io-like (0.3.1)
jaro_winkler (1.5.4) jaro_winkler (1.5.4)
jbuilder (2.10.0) jbuilder (2.11.3)
activesupport (>= 5.0.0) activesupport (>= 5.0.0)
jquery-rails (4.3.5) jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jwt (2.2.1) jwt (2.3.0)
kaminari (1.2.0) kaminari (1.2.1)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.0) kaminari-actionview (= 1.2.1)
kaminari-activerecord (= 1.2.0) kaminari-activerecord (= 1.2.1)
kaminari-core (= 1.2.0) kaminari-core (= 1.2.1)
kaminari-actionview (1.2.0) kaminari-actionview (1.2.1)
actionview actionview
kaminari-core (= 1.2.0) kaminari-core (= 1.2.1)
kaminari-activerecord (1.2.0) kaminari-activerecord (1.2.1)
activerecord activerecord
kaminari-core (= 1.2.0) kaminari-core (= 1.2.1)
kaminari-core (1.2.0) kaminari-core (1.2.1)
letter_avatar (0.3.8) letter_avatar (0.3.9)
listen (3.1.5) listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7) rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2) ruby_dep (~> 1.2)
loofah (2.4.0) loofah (2.13.0)
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.5.9) nokogiri (>= 1.5.9)
mail (2.7.1) mail (2.7.1)
mini_mime (>= 0.1.1) mini_mime (>= 0.1.1)
marcel (0.3.3) marcel (1.0.2)
mimemagic (~> 0.3.2)
maruku (0.7.3) maruku (0.7.3)
method_source (0.9.2) matrix (0.4.2)
mimemagic (0.3.10) method_source (1.0.0)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mimemagic (0.4.3)
nokogiri (~> 1) nokogiri (~> 1)
rake rake
mini_mime (1.0.2) mini_mime (1.1.2)
mini_portile2 (2.4.0) mini_portile2 (2.6.1)
minitest (5.14.0) minitest (5.14.4)
msgpack (1.3.3) msgpack (1.4.2)
multi_json (1.14.1) multi_json (1.15.0)
multi_xml (0.6.0) multi_xml (0.6.0)
multipart-post (2.1.1) multipart-post (2.1.1)
mustermann (1.1.1) mustermann (1.1.1)
ruby2_keywords (~> 0.0.1) ruby2_keywords (~> 0.0.1)
mysql2 (0.5.3) mysql2 (0.5.3)
netrc (0.11.0)
nio4r (2.5.2) nio4r (2.5.2)
nokogiri (1.10.8) nokogiri (1.12.5)
mini_portile2 (~> 2.4.0) mini_portile2 (~> 2.6.1)
oauth2 (1.4.4) racc (~> 1.4)
oauth2 (1.4.7)
faraday (>= 0.8, < 2.0) faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0) jwt (>= 1.0, < 3.0)
multi_json (~> 1.3) multi_json (~> 1.3)
multi_xml (~> 0.5) multi_xml (~> 0.5)
rack (>= 1.2, < 3) rack (>= 1.2, < 3)
omniauth (1.9.0) omniauth (1.9.1)
hashie (>= 3.4.6, < 3.7.0) hashie (>= 3.4.6)
rack (>= 1.6.2, < 3) rack (>= 1.6.2, < 3)
omniauth-cas (1.1.1) omniauth-cas (2.0.0)
addressable (~> 2.3) addressable (~> 2.3)
nokogiri (~> 1.5) nokogiri (~> 1.5)
omniauth (~> 1.2) omniauth (~> 1.2)
@ -213,108 +226,112 @@ GEM
oauth2 (~> 1.1) oauth2 (~> 1.1)
omniauth (~> 1.9) omniauth (~> 1.9)
parallel (1.19.1) parallel (1.19.1)
parser (2.7.1.1) parser (2.7.2.0)
ast (~> 2.4.0) ast (~> 2.4.1)
pdfkit (0.8.4.1) pdfkit (0.8.4.1)
polyamorous (2.3.2)
activerecord (>= 5.2.1)
popper_js (1.16.0) popper_js (1.16.0)
powerpack (0.1.2) powerpack (0.1.3)
prettier (0.18.2) prettier (2.0.0)
public_suffix (4.0.3) public_suffix (4.0.6)
puma (3.12.2) puma (3.12.6)
raabro (1.4.0) raabro (1.4.0)
rack (2.0.9) racc (1.6.0)
rack (2.2.3)
rack-cors (1.1.1) rack-cors (1.1.1)
rack (>= 2.0.0) rack (>= 2.0.0)
rack-mini-profiler (2.0.1) rack-mini-profiler (2.3.3)
rack (>= 1.2.0) rack (>= 1.2.0)
rack-protection (2.0.8.1) rack-protection (2.1.0)
rack rack
rack-test (1.1.0) rack-test (1.1.0)
rack (>= 1.0, < 3) rack (>= 1.0, < 3)
rails (5.2.4.1) rails (5.2.6)
actioncable (= 5.2.4.1) actioncable (= 5.2.6)
actionmailer (= 5.2.4.1) actionmailer (= 5.2.6)
actionpack (= 5.2.4.1) actionpack (= 5.2.6)
actionview (= 5.2.4.1) actionview (= 5.2.6)
activejob (= 5.2.4.1) activejob (= 5.2.6)
activemodel (= 5.2.4.1) activemodel (= 5.2.6)
activerecord (= 5.2.4.1) activerecord (= 5.2.6)
activestorage (= 5.2.4.1) activestorage (= 5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
bundler (>= 1.3.0) bundler (>= 1.3.0)
railties (= 5.2.4.1) railties (= 5.2.6)
sprockets-rails (>= 2.0.0) sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3) rails-dom-testing (2.0.3)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
nokogiri (>= 1.6) nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0) rails-html-sanitizer (1.4.2)
loofah (~> 2.3) loofah (~> 2.3)
rails-i18n (5.1.3) rails-i18n (5.1.3)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
railties (>= 5.0, < 6) railties (>= 5.0, < 6)
railties (5.2.4.1) railties (5.2.6)
actionpack (= 5.2.4.1) actionpack (= 5.2.6)
activesupport (= 5.2.4.1) activesupport (= 5.2.6)
method_source method_source
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0) thor (>= 0.19.0, < 2.0)
rainbow (3.0.0) rainbow (3.0.0)
rake (13.0.1) rake (10.4.2)
ransack (2.3.2) ransack (2.4.2)
activerecord (>= 5.2.1) activerecord (>= 5.2.4)
activesupport (>= 5.2.1) activesupport (>= 5.2.4)
i18n i18n
polyamorous (= 2.3.2) rb-fsevent (0.11.0)
rb-fsevent (0.10.3)
rb-inotify (0.10.1) rb-inotify (0.10.1)
ffi (~> 1.0) ffi (~> 1.0)
rchardet (1.8.0) rchardet (1.8.0)
redcarpet (3.5.0) redcarpet (3.5.1)
redis (4.1.3) redis (4.5.1)
redis-actionpack (5.2.0) redis-actionpack (5.2.0)
actionpack (>= 5, < 7) actionpack (>= 5, < 7)
redis-rack (>= 2.1.0, < 3) redis-rack (>= 2.1.0, < 3)
redis-store (>= 1.1.0, < 2) redis-store (>= 1.1.0, < 2)
redis-activesupport (5.2.0) redis-activesupport (5.2.1)
activesupport (>= 3, < 7) activesupport (>= 3, < 7)
redis-store (>= 1.3, < 2) redis-store (>= 1.3, < 2)
redis-rack (2.1.2) redis-rack (2.1.3)
rack (>= 2.0.8, < 3) rack (>= 2.0.8, < 3)
redis-store (>= 1.2, < 2) redis-store (>= 1.2, < 2)
redis-rails (5.0.2) redis-rails (5.0.2)
redis-actionpack (>= 5.0, < 6) redis-actionpack (>= 5.0, < 6)
redis-activesupport (>= 5.0, < 6) redis-activesupport (>= 5.0, < 6)
redis-store (>= 1.2, < 2) redis-store (>= 1.2, < 2)
redis-store (1.8.2) redis-store (1.9.0)
redis (>= 4, < 5) redis (>= 4, < 5)
regexp_parser (1.7.0) regexp_parser (2.2.0)
request_store (1.5.0) request_store (1.5.0)
rack (>= 1.4) rack (>= 1.4)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
reverse_markdown (1.4.0) reverse_markdown (1.4.0)
nokogiri nokogiri
rexml (3.2.5)
roo (2.8.3) roo (2.8.3)
nokogiri (~> 1) nokogiri (~> 1)
rubyzip (>= 1.3.0, < 3.0.0) rubyzip (>= 1.3.0, < 3.0.0)
roo-xls (1.2.0) roo-xls (1.2.0)
nokogiri nokogiri
roo (>= 2.0.0, < 3) roo (= 2.8.3)
spreadsheet (> 0.9.0) spreadsheet (> 0.9.0)
rqrcode (0.10.1) rqrcode (0.10.1)
chunky_png (~> 1.0) chunky_png (~> 1.0)
rqrcode_png (0.1.5) rqrcode_png (0.1.5)
chunky_png chunky_png
rqrcode rqrcode
rspec-core (3.9.1) rspec-core (3.9.3)
rspec-support (~> 3.9.1) rspec-support (~> 3.9.3)
rspec-expectations (3.9.0) rspec-expectations (3.9.4)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0) rspec-support (~> 3.9.0)
rspec-mocks (3.9.1) rspec-mocks (3.9.1)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0) rspec-support (~> 3.9.0)
rspec-rails (3.9.0) rspec-rails (3.9.1)
actionpack (>= 3.0) actionpack (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
railties (>= 3.0) railties (>= 3.0)
@ -322,7 +339,7 @@ GEM
rspec-expectations (~> 3.9.0) rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0) rspec-mocks (~> 3.9.0)
rspec-support (~> 3.9.0) rspec-support (~> 3.9.0)
rspec-support (3.9.2) rspec-support (3.9.4)
rubocop (0.52.1) rubocop (0.52.1)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 2.4.0.2, < 3.0) parser (>= 2.4.0.2, < 3.0)
@ -331,8 +348,8 @@ GEM
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1) unicode-display_width (~> 1.0, >= 1.0.1)
ruby-ole (1.2.12.2) ruby-ole (1.2.12.2)
ruby-progressbar (1.10.1) ruby-progressbar (1.11.0)
ruby2_keywords (0.0.2) ruby2_keywords (0.0.5)
ruby_dep (1.5.0) ruby_dep (1.5.0)
rubyzip (1.3.0) rubyzip (1.3.0)
sass (3.7.4) sass (3.7.4)
@ -340,13 +357,13 @@ GEM
sass-listen (4.0.0) sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7) rb-inotify (~> 0.9, >= 0.9.7)
sass-rails (5.0.7) sass-rails (5.1.0)
railties (>= 4.0.0, < 6) railties (>= 5.2.0)
sass (~> 3.1) sass (~> 3.1)
sprockets (>= 2.8, < 4.0) sprockets (>= 2.8, < 4.0)
sprockets-rails (>= 2.0, < 4.0) sprockets-rails (>= 2.0, < 4.0)
tilt (>= 1.1, < 3) tilt (>= 1.1, < 3)
sassc (2.2.1) sassc (2.4.0)
ffi (~> 1.9) ffi (~> 1.9)
sassc-rails (2.1.2) sassc-rails (2.1.2)
railties (>= 4.0.0) railties (>= 4.0.0)
@ -354,31 +371,31 @@ GEM
sprockets (> 3.0) sprockets (> 3.0)
sprockets-rails sprockets-rails
tilt tilt
searchkick (3.1.3) searchkick (4.6.3)
activemodel (>= 4.2) activemodel (>= 5)
elasticsearch (>= 5) elasticsearch (>= 6, < 7.14)
hashie hashie
selenium-webdriver (3.142.7) selenium-webdriver (4.1.0)
childprocess (>= 0.5, < 4.0) childprocess (>= 0.5, < 5.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2) rubyzip (>= 1.2.2)
sidekiq (5.2.8) sidekiq (6.3.1)
connection_pool (~> 2.2, >= 2.2.2) connection_pool (>= 2.2.2)
rack (< 2.1.0) rack (~> 2.0)
rack-protection (>= 1.5.0) redis (>= 4.2.0)
redis (>= 3.3.5, < 5)
sidekiq-cron (1.2.0) sidekiq-cron (1.2.0)
fugit (~> 1.1) fugit (~> 1.1)
sidekiq (>= 4.2.1) sidekiq (>= 4.2.1)
simple_form (5.0.2) simple_form (5.1.0)
actionpack (>= 5.0) actionpack (>= 5.2)
activemodel (>= 5.0) activemodel (>= 5.2)
simple_xlsx_reader (1.0.4) simple_xlsx_reader (1.0.4)
nokogiri nokogiri
rubyzip rubyzip
sinatra (2.0.8.1) sinatra (2.1.0)
mustermann (~> 1.0) mustermann (~> 1.0)
rack (~> 2.0) rack (~> 2.2)
rack-protection (= 2.0.8.1) rack-protection (= 2.1.0)
tilt (~> 2.0) tilt (~> 2.0)
solargraph (0.38.6) solargraph (0.38.6)
backport (~> 1.1) backport (~> 1.1)
@ -394,43 +411,47 @@ GEM
thor (~> 1.0) thor (~> 1.0)
tilt (~> 2.0) tilt (~> 2.0)
yard (~> 0.9) yard (~> 0.9)
spreadsheet (1.2.6) spreadsheet (1.3.0)
ruby-ole (>= 1.0) ruby-ole
spring (2.0.2) spring (2.1.1)
activesupport (>= 4.2)
spring-watcher-listen (2.0.1) spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0) listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0) spring (>= 1.2, < 3.0)
sprockets (3.7.2) sprockets (3.7.2)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) rack (> 1, < 3)
sprockets-rails (3.2.1) sprockets-rails (3.4.2)
actionpack (>= 4.0) actionpack (>= 5.2)
activesupport (>= 4.0) activesupport (>= 5.2)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
thor (1.0.1) thor (1.1.0)
thread_safe (0.3.6) thread_safe (0.3.6)
tilt (2.0.10) tilt (2.0.10)
turbolinks (5.2.1) turbolinks (5.2.1)
turbolinks-source (~> 5.2) turbolinks-source (~> 5.2)
turbolinks-source (5.2.0) turbolinks-source (5.2.0)
tzinfo (1.2.6) tzinfo (1.2.9)
thread_safe (~> 0.1) thread_safe (~> 0.1)
uglifier (4.2.0) uglifier (4.2.0)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unicode-display_width (1.6.1) unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
web-console (3.7.0) web-console (3.7.0)
actionview (>= 5.0) actionview (>= 5.0)
activemodel (>= 5.0) activemodel (>= 5.0)
bindex (>= 0.4.0) bindex (>= 0.4.0)
railties (>= 5.0) railties (>= 5.0)
websocket-driver (0.7.1) webrick (1.7.0)
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.4) websocket-extensions (0.1.5)
wkhtmltopdf-binary (0.12.5.4) wkhtmltopdf-binary (0.12.6.5)
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
yard (0.9.24) yard (0.9.27)
webrick (~> 1.7.0)
PLATFORMS PLATFORMS
ruby ruby
@ -459,6 +480,7 @@ DEPENDENCIES
enumerize enumerize
faraday (~> 0.15.4) faraday (~> 0.15.4)
font-awesome-sass (= 4.7.0) font-awesome-sass (= 4.7.0)
gitea-client (~> 0.9.1)
grape-entity (~> 0.7.1) grape-entity (~> 0.7.1)
groupdate (~> 4.1.0) groupdate (~> 4.1.0)
harmonious_dictionary (~> 0.0.1) harmonious_dictionary (~> 0.0.1)

View File

@ -1,10 +1,33 @@
class Admins::DashboardsController < Admins::BaseController class Admins::DashboardsController < Admins::BaseController
def index def index
@active_user_count = User.where(last_login_on: today).count # 用户活跃数
@weekly_active_user_count = User.where(last_login_on: current_week).count day_user_ids = CommitLog.where(created_at: today).pluck(:project_id).uniq
@month_active_user_count = User.where(last_login_on: current_month).count weekly_user_ids = CommitLog.where(created_at: current_week).pluck(:project_id).uniq
month_user_ids = CommitLog.where(created_at: current_month).pluck(:project_id).uniq
@active_user_count = User.where(last_login_on: today).or(User.where(id: day_user_ids)).count
@weekly_active_user_count = User.where(last_login_on: current_week).or(User.where(id: weekly_user_ids)).count
@month_active_user_count = User.where(last_login_on: current_month).or(User.where(id: month_user_ids)).count
user_ids = User.where(created_on: pre_week).pluck(:id).uniq
weekly_keep_user_count = User.where(id: user_ids).where(last_login_on: current_week).count
@weekly_keep_rate = format("%.2f", weekly_keep_user_count > 0 ? weekly_keep_user_count / weekly_keep_user_count : 0)
@new_user_count = User.where(created_on: current_month).count # 新用户注册数
@day_new_user_count = User.where(created_on: today).count
@weekly_new_user_count = User.where(created_on: current_week).count
@month_new_user_count = User.where(created_on: current_month).count
# 活跃项目数
day_project_ids = CommitLog.where(created_at: today).pluck(:project_id).uniq
weekly_project_ids = CommitLog.where(created_at: current_week).pluck(:project_id).uniq
month_project_ids = CommitLog.where(created_at: current_month).pluck(:project_id).uniq
@day_active_project_count = Project.where(updated_on: today).or(Project.where(id: day_project_ids)).count
@weekly_active_project_count = Project.where(updated_on: current_week).or(Project.where(id: weekly_project_ids)).count
@month_active_project_count = Project.where(updated_on: current_month).or(Project.where(id: month_project_ids)).count
# 新增项目数
@day_new_project_count = User.where(created_on: today).count
@weekly_new_project_count = User.where(created_on: current_week).count
@month_new_project_count = User.where(created_on: current_month).count
end end
def month_active_user def month_active_user
@ -48,4 +71,8 @@ class Admins::DashboardsController < Admins::BaseController
def current_month def current_month
30.days.ago.beginning_of_day..Time.now.end_of_day 30.days.ago.beginning_of_day..Time.now.end_of_day
end end
def pre_week
14.days.ago.beginning_of_day..7.days.ago.beginning_of_day
end
end end

View File

@ -2,217 +2,57 @@
<% add_admin_breadcrumb('概览', admins_path) %> <% add_admin_breadcrumb('概览', admins_path) %>
<% end %> <% end %>
<div class="header bg-gradient-primary pb-8 pt-md-8"> <div class="box admin-list-container project-language-list-container">
<div class="container-fluid"> <table class="table table-hover text-center subject-list-table">
<div class="header-body"> <thead class="thead-light">
<!-- Card stats --> <tr>
<div class="row"> <th width="20%">指标名称</th>
<div class="col-xl-3 col-lg-6"> <th width="20%">当日数</th>
<div class="card card-stats mb-4 mb-xl-0"> <th width="20%">七日内</th>
<div class="card-body"> <th width="20%">30日内</th>
<div class="row"> <th width="20%">周用户留存率</th>
<div class="col"> </tr>
<h5 class="card-title text-uppercase text-muted mb-0">当日活跃用户</h5> </thead>
<span class="h2 font-weight-bold mb-0"><%= @active_user_count %></span> <tbody>
</div> <tr class="">
<div class="col-auto"> <td>
<div class="icon icon-shape rounded-circle shadow"> <button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#5475fb;border-radius:4px;border-color: #5475fb;">活跃用户</button>
<i class="fa fa-users"></i> </td>
</div> <td><%=@active_user_count %></td>
</div> <td><%=@weekly_active_user_count %></td>
</div> <td><%=@month_active_user_count %></td>
<!-- <p class="mt-3 mb-0 text-muted text-sm">--> <td><%="#{@weekly_keep_rate.to_f * 100 }%" %></td>
<!-- <span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 3.48%</span>--> </td>
<!-- <span class="text-nowrap">Since last month</span>--> </tr>
<!-- </p>--> <tr>
</div> <td>
</div> <button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#36cfc9;border-radius:4px; border-color: #36cfc9;">新注册用户</button>
</div> </td>
<div class="col-xl-3 col-lg-6"> <td><%=@day_new_user_count %></td>
<div class="card card-stats mb-4 mb-xl-0"> <td><%=@weekly_new_user_count %></td>
<div class="card-body"> <td><%=@month_new_user_count %></td>
<div class="row"> <td><%="--" %></td>
<div class="col"> </tr>
<h5 class="card-title text-uppercase text-muted mb-0">7天内活跃用户数</h5> <tr>
<span class="h2 font-weight-bold mb-0"><%= @weekly_active_user_count %></span> <td>
</div> <button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#f89422;border-radius:4px; border-color: #f89422;">活跃项目</button>
<div class="col-auto"> </td>
<div class="icon icon-shape rounded-circle shadow"> <td><%=@day_active_project_count %></td>
<i class="fa fa-users"></i> <td><%=@weekly_new_project_count %></td>
</div> <td><%=@month_new_project_count %></td>
</div> <td><%="--" %></td>
</div> </tr>
<!-- <p class="mt-3 mb-0 text-muted text-sm">--> <tr>
<!-- <span class="text-danger mr-2"><i class="fas fa-arrow-down"></i> 3.48%</span>--> <td>
<!-- <span class="text-nowrap">Since last week</span>--> <button type="button" class="btn btn-primary" style="font-size:14px;width:85px;padding: 0; height:36px;background-color:#9d74ff;border-radius:4px; border-color: #9d74ff;">新注册项目</button>
<!-- </p>--> </td>
</div> <td><%=@day_new_project_count %></td>
</div> <td><%=@weekly_new_user_count %></td>
</div> <td><%=@month_new_user_count %></td>
<div class="col-xl-3 col-lg-6"> <td><%="--" %></td>
<div class="card card-stats mb-4 mb-xl-0"> </tr>
<div class="card-body"> </tbody>
<div class="row"> </table>
<div class="col">
<h5 class="card-title text-uppercase text-muted mb-0">30天内活跃用户数</h5>
<span class="h2 font-weight-bold mb-0"><%= @month_active_user_count %></span>
</div>
<div class="col-auto">
<div class="icon icon-shape rounded-circle shadow">
<i class="fa fa-users"></i>
</div>
</div>
</div>
<!-- <p class="mt-3 mb-0 text-muted text-sm">-->
<!-- <span class="text-warning mr-2"><i class="fas fa-arrow-down"></i> 1.10%</span>-->
<!-- <span class="text-nowrap">Since yesterday</span>-->
<!-- </p>-->
</div>
</div>
</div>
<div class="col-xl-3 col-lg-6">
<div class="card card-stats mb-4 mb-xl-0">
<div class="card-body">
<div class="row">
<div class="col">
<h5 class="card-title text-uppercase text-muted mb-0">30天内新增用户数</h5>
<span class="h2 font-weight-bold mb-0"><%= @new_user_count %></span>
</div>
<div class="col-auto">
<div class="icon icon-shape rounded-circle shadow">
<i class="fa fa-user-plus"></i>
</div>
</div>
</div>
<!-- <p class="mt-3 mb-0 text-muted text-sm">-->
<!-- <span class="text-success mr-2"><i class="fas fa-arrow-up"></i> 12%</span>-->
<!-- <span class="text-nowrap">Since last month</span>-->
<!-- </p>-->
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
<div id="project-language-modals">
<div class="container-fluid mt--7 pie-statistic"> </div>
<div class="row mt-5">
<div class="col-xl-8 mb-5 mb-xl-0">
<div class="card shadow">
<!-- <div class="card-header border-0">-->
<!-- <div class="row align-items-center">-->
<!-- <h5 class="mb-0">近7天评测次数</h5>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="table-responsive">-->
<!-- <div id="evaluate-pie" class="pie"></div>-->
<!-- </div>-->
</div>
</div>
<div class="col-xl-4">
<div class="card shadow">
<div class="card-header border-0">
<div class="row align-items-center">
<h5 class="mb-0">30天内新增用户</h5>
</div>
</div>
<div class="table-responsive">
<div id="month-active-user" class="pie"></div>
</div>
</div>
</div>
</div>
</div>
<!--<div class="container-fluid mt--7">-->
<!-- <div class="row mt-5">-->
<!-- <div class="col-xl-8 mb-5 mb-xl-0">-->
<!-- <div class="card shadow">-->
<!-- <div class="card-header border-0">-->
<!-- <div class="row align-items-center">-->
<!-- <div class="col">-->
<!-- <h3 class="mb-0">Page visits</h3>-->
<!-- </div>-->
<!-- <div class="col text-right">-->
<!-- <a href="#!" class="btn btn-sm btn-primary">Test</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="table-responsive">-->
<!-- <table class="table align-items-center table-flush">-->
<!-- <thead class="thead-light">-->
<!-- <tr>-->
<!-- <th scope="col">Test</th>-->
<!-- <th scope="col">Test</th>-->
<!-- <th scope="col">Test</th>-->
<!-- <th scope="col">Test</th>-->
<!-- </tr>-->
<!-- </thead>-->
<!-- <tbody>-->
<%# 5.times do %>
<!-- <tr>-->
<!-- <th scope="row">/test/</th>-->
<!-- <td>4,569</td>-->
<!-- <td>340</td>-->
<!-- <td>-->
<!-- <i class="fas fa-arrow-up text-success mr-3"></i> 46,53%-->
<!-- </td>-->
<!-- </tr>-->
<%# end %>
<!-- </tbody>-->
<!-- </table>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-xl-4">-->
<!-- <div class="card shadow">-->
<!-- <div class="card-header border-0">-->
<!-- <div class="row align-items-center">-->
<!-- <div class="col">-->
<!-- <h3 class="mb-0">Test</h3>-->
<!-- </div>-->
<!-- <div class="col text-right">-->
<!-- <a href="#!" class="btn btn-sm btn-primary">Test</a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="table-responsive">-->
<!-- <table class="table align-items-center table-flush">-->
<!-- <thead class="thead-light">-->
<!-- <tr>-->
<!-- <th scope="col">Test</th>-->
<!-- <th scope="col">Test</th>-->
<!-- <th scope="col"></th>-->
<!-- </tr>-->
<!-- </thead>-->
<!-- <tbody>-->
<%# 5.times do %>
<!-- <tr>-->
<!-- <th scope="row">-->
<!-- Test-->
<!-- </th>-->
<!-- <td>-->
<!-- 1,480-->
<!-- </td>-->
<!-- <td>-->
<!-- <div class="d-flex align-items-center">-->
<!-- <span class="mr-2">60%</span>-->
<!-- <div>-->
<!-- <div class="progress">-->
<!-- <div class="progress-bar bg-gradient-danger" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </td>-->
<!-- </tr>-->
<%# end %>
<!-- </tbody>-->
<!-- </table>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->