Add aftersales stats to dashboard and service-layer tests

- CompanyStatsOverviewDTO and GetStats() now include aftersales counts
  (total, pending confirmation, closed, rejected) and a recentAftersales list
- aftersales_service_test.go covers YYMMNN sequence, owner-only submit,
  state machine, phone last-4 check, reject increment, force-close
- users_service_test.go covers duplicate username, self-demotion guard,
  last-admin guard, password reset, assignable filter

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Frudrax Cheng
2026-05-26 11:04:23 +08:00
parent 3ddd4db126
commit 128bb7cda6
7 changed files with 571 additions and 17 deletions
+2
View File
@@ -32,6 +32,7 @@ func TestMain(m *testing.M) {
database.DB.Unscoped().Where("1 = 1").Delete(&models.Company{})
database.DB.Unscoped().Where("1 = 1").Delete(&models.Serial{})
database.DB.Unscoped().Where("1 = 1").Delete(&models.EmployeeSerial{})
database.DB.Unscoped().Where("1 = 1").Delete(&models.AftersalesOrder{})
exitCode := m.Run()
@@ -39,6 +40,7 @@ func TestMain(m *testing.M) {
database.DB.Unscoped().Where("1 = 1").Delete(&models.Company{})
database.DB.Unscoped().Where("1 = 1").Delete(&models.Serial{})
database.DB.Unscoped().Where("1 = 1").Delete(&models.EmployeeSerial{})
database.DB.Unscoped().Where("1 = 1").Delete(&models.AftersalesOrder{})
os.Exit(exitCode)
}