You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

cloudbrain_dashboard.go 4.5 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package repo
  2. import (
  3. "net/http"
  4. "net/url"
  5. "code.gitea.io/gitea/models"
  6. "code.gitea.io/gitea/modules/context"
  7. "code.gitea.io/gitea/modules/log"
  8. "github.com/360EntSecGroup-Skylar/excelize/v2"
  9. )
  10. type CloudbrainsPeriodData struct {
  11. DebugOneCount int64 `json:"debugOneCount"`
  12. BenchmarkOneCount int64 `json:"benchmarkOneCount"`
  13. DebugTwoCount int64 `json:"debugTwoCount"`
  14. TrainTwoCount int64 `json:"trainTwoCount"`
  15. InferenceTwoCount int64 `json:"inferenceTwoCount"`
  16. }
  17. func GetAllCloudbrainsPeriodStatistics(ctx *context.Context) {
  18. recordBeginTime, err := getRecordBeginTime()
  19. if err != nil {
  20. log.Error("Can not get record begin time", err)
  21. ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err"))
  22. return
  23. }
  24. beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime)
  25. if err != nil {
  26. log.Error("Parameter is wrong", err)
  27. ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong"))
  28. return
  29. }
  30. page := ctx.QueryInt("page")
  31. if page <= 0 {
  32. page = 1
  33. }
  34. pageSize := ctx.QueryInt("pagesize")
  35. if pageSize <= 0 {
  36. pageSize = DEFAULT_PAGE_SIZE
  37. }
  38. debugOneCount, err := models.GenerateDebugOneCount(beginTime, endTime)
  39. if err != nil {
  40. log.Error("Can not query debugOneCount.", err)
  41. ctx.Error(http.StatusBadRequest, ctx.Tr("debugOneCount_get_error"))
  42. return
  43. }
  44. benchmarkOneCount, err := models.GenerateBenchmarkOneCount(beginTime, endTime)
  45. if err != nil {
  46. log.Error("Can not query benchmarkCount.", err)
  47. ctx.Error(http.StatusBadRequest, ctx.Tr("benchmarkOneCount_get_error"))
  48. return
  49. }
  50. debugTwoCount, err := models.GenerateDebugTwoCount(beginTime, endTime)
  51. if err != nil {
  52. log.Error("Can not query debugTwoCount.", err)
  53. ctx.Error(http.StatusBadRequest, ctx.Tr("debugTwoCount_get_error"))
  54. return
  55. }
  56. trainTwoCount, err := models.GenerateTrainTwoCount(beginTime, endTime)
  57. if err != nil {
  58. log.Error("Can not query DebugOneTotal count.", err)
  59. ctx.Error(http.StatusBadRequest, ctx.Tr("total_count_get_error"))
  60. return
  61. }
  62. inferenceTwoCount, err := models.GenerateInferenceTwoCount(beginTime, endTime)
  63. if err != nil {
  64. log.Error("Can not query inferenceTwoCount.", err)
  65. ctx.Error(http.StatusBadRequest, ctx.Tr("inferenceTwoCount_get_error"))
  66. return
  67. }
  68. cloudbrainsPeriodData := CloudbrainsPeriodData{
  69. DebugOneCount: debugOneCount,
  70. BenchmarkOneCount: benchmarkOneCount,
  71. DebugTwoCount: debugTwoCount,
  72. TrainTwoCount: trainTwoCount,
  73. InferenceTwoCount: inferenceTwoCount,
  74. }
  75. ctx.JSON(http.StatusOK, cloudbrainsPeriodData)
  76. }
  77. func ServeCloudbrainPeriodStatisticsFile(ctx *context.Context) {
  78. recordBeginTime, err := getRecordBeginTime()
  79. if err != nil {
  80. log.Error("Can not get record begin time", err)
  81. ctx.Error(http.StatusBadRequest, ctx.Tr("repo.record_begintime_get_err"))
  82. return
  83. }
  84. beginTime, endTime, err := getTimePeroid(ctx, recordBeginTime)
  85. if err != nil {
  86. log.Error("Parameter is wrong", err)
  87. ctx.Error(http.StatusBadRequest, ctx.Tr("repo.parameter_is_wrong"))
  88. return
  89. }
  90. q := ctx.QueryTrim("q")
  91. page := ctx.QueryInt("page")
  92. if page <= 0 {
  93. page = 1
  94. }
  95. pageSize := 1000
  96. orderBy := getOrderBy(ctx)
  97. _, latestDate, err := models.GetRepoStatLastUpdatedTime()
  98. if err != nil {
  99. log.Error("Can not query the last updated time.", err)
  100. ctx.Error(http.StatusBadRequest, ctx.Tr("repo.last_update_time_error"))
  101. return
  102. }
  103. countSql := generateCountSql(beginTime, endTime, latestDate, q)
  104. total, err := models.CountRepoStatByRawSql(countSql)
  105. if err != nil {
  106. log.Error("Can not query total count.", err)
  107. ctx.Error(http.StatusBadRequest, ctx.Tr("repo.total_count_get_error"))
  108. return
  109. }
  110. var projectAnalysis = ctx.Tr("repo.repo_stat_inspect")
  111. fileName := getFileName(ctx, beginTime, endTime, projectAnalysis)
  112. totalPage := getTotalPage(total, pageSize)
  113. f := excelize.NewFile()
  114. index := f.NewSheet(projectAnalysis)
  115. f.DeleteSheet("Sheet1")
  116. for k, v := range allProjectsPeroidHeader(ctx) {
  117. f.SetCellValue(projectAnalysis, k, v)
  118. }
  119. var row = 2
  120. for i := 0; i <= totalPage; i++ {
  121. pageRecords := models.GetRepoStatisticByRawSql(generateSqlByType(ctx, beginTime, endTime, latestDate, q, orderBy, i+1, pageSize))
  122. for _, record := range pageRecords {
  123. for k, v := range allProjectsPeroidValues(row, record, ctx) {
  124. f.SetCellValue(projectAnalysis, k, v)
  125. }
  126. row++
  127. }
  128. }
  129. f.SetActiveSheet(index)
  130. ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(fileName))
  131. ctx.Resp.Header().Set("Content-Type", "application/octet-stream")
  132. f.WriteTo(ctx.Resp)
  133. }