student-home-hours-2026-11-15.json 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. {
  2. "state": "local_fix_not_deployed",
  3. "tests": {
  4. "mobile": 404,
  5. "admin": 394,
  6. "server": 591,
  7. "total": 1389,
  8. "failed": 0
  9. },
  10. "build": "passed",
  11. "cloudDefinitions": 11,
  12. "protectedFinancialFilesUnchanged": 14,
  13. "target": {
  14. "studentId": 1850,
  15. "lessons": 19,
  16. "formal60MinuteLessons": 18,
  17. "trial60MinuteLessons": 1,
  18. "oldHomepageHours": 10,
  19. "completedRecordHours": 19,
  20. "formalReceiptsMatched": 18,
  21. "trialReceiptAccount": "UserExp",
  22. "latestRechargeHours": 10
  23. },
  24. "finance": {
  25. "ledgerUnchanged": true,
  26. "groups": 41,
  27. "balances": {
  28. "Purse": {
  29. "balance": 0,
  30. "reserved": 0,
  31. "available": 0
  32. },
  33. "SilverCoin": {
  34. "balance": 12,
  35. "reserved": 1,
  36. "available": 11
  37. },
  38. "UserExp": {
  39. "balance": 0,
  40. "reserved": 0,
  41. "available": 0
  42. },
  43. "UserPoint": {
  44. "balance": 12,
  45. "reserved": 1,
  46. "available": 11
  47. }
  48. },
  49. "at": "2026-11-15T05:32:27.952Z"
  50. },
  51. "memberAudit": {
  52. "members": 639,
  53. "withRecords": 546,
  54. "affected": 93,
  55. "confirmed": 82,
  56. "unknown": 9,
  57. "missingRecords": 2
  58. },
  59. "browser": {
  60. "externalRequests": 0,
  61. "results": [
  62. {
  63. "scenario": "healthy",
  64. "oldGateAccepts": true,
  65. "error": "",
  66. "values": [
  67. "18",
  68. "12.5",
  69. "8",
  70. "7"
  71. ],
  72. "correctedGateAccepts": true,
  73. "expiryUpdatesWithoutRequests": true,
  74. "actions": [
  75. "e_order_tongji",
  76. "app_account_overview",
  77. "app_review_page"
  78. ]
  79. },
  80. {
  81. "scenario": "balance-error",
  82. "oldGateAccepts": true,
  83. "error": "课时余额暂时无法更新 重新加载",
  84. "values": [
  85. "18",
  86. "—",
  87. "—",
  88. "—"
  89. ],
  90. "correctedGateAccepts": false,
  91. "actions": [
  92. "e_order_tongji",
  93. "app_account_overview",
  94. "app_review_page"
  95. ]
  96. },
  97. {
  98. "scenario": "stats-error",
  99. "oldGateAccepts": true,
  100. "error": "统计暂时无法加载 重新加载",
  101. "values": [
  102. "—",
  103. "12.5",
  104. "8",
  105. "7"
  106. ],
  107. "correctedGateAccepts": false,
  108. "actions": [
  109. "e_order_tongji",
  110. "app_account_overview",
  111. "app_review_page"
  112. ]
  113. },
  114. {
  115. "scenario": "warm-legacy-cache",
  116. "oldGateAccepts": true,
  117. "error": "",
  118. "values": [
  119. "18",
  120. "12.5",
  121. "8",
  122. "7"
  123. ],
  124. "correctedGateAccepts": true,
  125. "expiryUpdatesWithoutRequests": true,
  126. "actions": [
  127. "e_order_tongji",
  128. "app_review_page"
  129. ]
  130. }
  131. ]
  132. },
  133. "limits": [
  134. "Member statistics audit is not a full financial audit of each member.",
  135. "9 historical duration gaps and 2 missing-record cases need individual reconciliation.",
  136. "Production financial data was not modified; candidate code was not deployed."
  137. ]
  138. }