@studious-lms/server 1.21.0 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/models/agenda.d.ts +6 -0
  2. package/dist/models/agenda.d.ts.map +1 -1
  3. package/dist/models/announcement.d.ts +2 -0
  4. package/dist/models/announcement.d.ts.map +1 -1
  5. package/dist/models/assignment.d.ts +27 -0
  6. package/dist/models/assignment.d.ts.map +1 -1
  7. package/dist/models/auth.d.ts +4 -0
  8. package/dist/models/auth.d.ts.map +1 -1
  9. package/dist/models/class.d.ts +14 -0
  10. package/dist/models/class.d.ts.map +1 -1
  11. package/dist/models/event.d.ts +11 -0
  12. package/dist/models/event.d.ts.map +1 -1
  13. package/dist/models/file.d.ts +19 -0
  14. package/dist/models/file.d.ts.map +1 -1
  15. package/dist/models/folder.d.ts +4 -0
  16. package/dist/models/folder.d.ts.map +1 -1
  17. package/dist/models/gradebook.d.ts +180 -0
  18. package/dist/models/gradebook.d.ts.map +1 -0
  19. package/dist/models/gradebook.js +88 -0
  20. package/dist/models/gradebook.js.map +1 -0
  21. package/dist/models/labChat.d.ts +4 -0
  22. package/dist/models/labChat.d.ts.map +1 -1
  23. package/dist/models/newtonChat.d.ts +2 -0
  24. package/dist/models/newtonChat.d.ts.map +1 -1
  25. package/dist/models/school.d.ts +2 -0
  26. package/dist/models/school.d.ts.map +1 -1
  27. package/dist/models/section.d.ts +3 -0
  28. package/dist/models/section.d.ts.map +1 -1
  29. package/dist/models/worksheet.d.ts +6 -0
  30. package/dist/models/worksheet.d.ts.map +1 -1
  31. package/dist/routers/_app.d.ts +1241 -67
  32. package/dist/routers/_app.d.ts.map +1 -1
  33. package/dist/routers/_app.js +4 -2
  34. package/dist/routers/_app.js.map +1 -1
  35. package/dist/routers/admin.d.ts +164 -0
  36. package/dist/routers/admin.d.ts.map +1 -1
  37. package/dist/routers/admin.js +23 -4
  38. package/dist/routers/admin.js.map +1 -1
  39. package/dist/routers/agenda.d.ts +6 -0
  40. package/dist/routers/agenda.d.ts.map +1 -1
  41. package/dist/routers/assignment.d.ts +30 -3
  42. package/dist/routers/assignment.d.ts.map +1 -1
  43. package/dist/routers/class.d.ts +17 -0
  44. package/dist/routers/class.d.ts.map +1 -1
  45. package/dist/routers/event.d.ts +4 -0
  46. package/dist/routers/event.d.ts.map +1 -1
  47. package/dist/routers/file.d.ts +66 -0
  48. package/dist/routers/file.d.ts.map +1 -1
  49. package/dist/routers/file.js +111 -2
  50. package/dist/routers/file.js.map +1 -1
  51. package/dist/routers/gradebook.d.ts +299 -0
  52. package/dist/routers/gradebook.d.ts.map +1 -0
  53. package/dist/routers/gradebook.js +107 -0
  54. package/dist/routers/gradebook.js.map +1 -0
  55. package/dist/routers/school.d.ts +4 -0
  56. package/dist/routers/school.d.ts.map +1 -1
  57. package/dist/routers/section.d.ts +1 -1
  58. package/dist/routers/worksheet.d.ts +3 -1
  59. package/dist/routers/worksheet.d.ts.map +1 -1
  60. package/dist/services/adminInstitution.d.ts +51 -0
  61. package/dist/services/adminInstitution.d.ts.map +1 -1
  62. package/dist/services/adminInstitution.js +52 -2
  63. package/dist/services/adminInstitution.js.map +1 -1
  64. package/dist/services/adminMetrics.d.ts +17 -0
  65. package/dist/services/adminMetrics.d.ts.map +1 -0
  66. package/dist/services/adminMetrics.js +37 -0
  67. package/dist/services/adminMetrics.js.map +1 -0
  68. package/dist/services/adminRunJob.d.ts +9 -0
  69. package/dist/services/adminRunJob.d.ts.map +1 -1
  70. package/dist/services/adminRunJob.js +18 -2
  71. package/dist/services/adminRunJob.js.map +1 -1
  72. package/dist/services/adminUser.d.ts +67 -0
  73. package/dist/services/adminUser.d.ts.map +1 -0
  74. package/dist/services/adminUser.js +87 -0
  75. package/dist/services/adminUser.js.map +1 -0
  76. package/dist/services/agenda.d.ts +6 -0
  77. package/dist/services/agenda.d.ts.map +1 -1
  78. package/dist/services/assignment.d.ts +27 -0
  79. package/dist/services/assignment.d.ts.map +1 -1
  80. package/dist/services/class.d.ts +17 -0
  81. package/dist/services/class.d.ts.map +1 -1
  82. package/dist/services/event.d.ts +4 -0
  83. package/dist/services/event.d.ts.map +1 -1
  84. package/dist/services/gradeCalculation.d.ts +70 -0
  85. package/dist/services/gradeCalculation.d.ts.map +1 -0
  86. package/dist/services/gradeCalculation.js +148 -0
  87. package/dist/services/gradeCalculation.js.map +1 -0
  88. package/dist/services/gradebook.d.ts +197 -0
  89. package/dist/services/gradebook.d.ts.map +1 -0
  90. package/dist/services/gradebook.js +263 -0
  91. package/dist/services/gradebook.js.map +1 -0
  92. package/dist/services/school.d.ts +4 -0
  93. package/dist/services/school.d.ts.map +1 -1
  94. package/dist/services/worksheet.d.ts +2 -0
  95. package/dist/services/worksheet.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/prisma/migrations/20260708011629_add_gradebook_categories_columns_policies/migration.sql +78 -0
  98. package/prisma/migrations/20260723142314_make_file_annotation_submission_optional/migration.sql +2 -0
  99. package/prisma/schema.prisma +62 -2
  100. package/src/models/gradebook.ts +91 -0
  101. package/src/routers/_app.ts +2 -0
  102. package/src/routers/admin.ts +28 -0
  103. package/src/routers/file.ts +128 -0
  104. package/src/routers/gradebook.ts +173 -0
  105. package/src/services/adminInstitution.ts +52 -0
  106. package/src/services/adminMetrics.ts +46 -0
  107. package/src/services/adminRunJob.ts +24 -0
  108. package/src/services/adminUser.ts +93 -0
  109. package/src/services/gradeCalculation.ts +253 -0
  110. package/src/services/gradebook.ts +383 -0
  111. package/tests/unit/services/gradeCalculation.test.ts +206 -0
@@ -0,0 +1,87 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="822d0af5-d814-5fdc-ba6b-21fe1cafebb4")}catch(e){}}();
3
+ import { TRPCError } from '@trpc/server';
4
+ import { prisma } from '../lib/prisma.js';
5
+ export async function searchUsersForAdmin(input) {
6
+ const skip = input.page * input.pageSize;
7
+ const where = {};
8
+ const q = input.query?.trim();
9
+ if (q) {
10
+ where.OR = [
11
+ { username: { contains: q, mode: 'insensitive' } },
12
+ { email: { contains: q, mode: 'insensitive' } },
13
+ ];
14
+ }
15
+ const [items, total] = await Promise.all([
16
+ prisma.user.findMany({
17
+ where,
18
+ orderBy: { username: 'asc' },
19
+ skip,
20
+ take: input.pageSize,
21
+ select: {
22
+ id: true,
23
+ username: true,
24
+ email: true,
25
+ verified: true,
26
+ school: { select: { id: true, name: true } },
27
+ _count: {
28
+ select: { teacherIn: true, studentIn: true, sessions: true },
29
+ },
30
+ },
31
+ }),
32
+ prisma.user.count({ where }),
33
+ ]);
34
+ return {
35
+ items,
36
+ total,
37
+ page: input.page,
38
+ pageSize: input.pageSize,
39
+ pageCount: Math.max(1, Math.ceil(total / input.pageSize)),
40
+ };
41
+ }
42
+ export async function getUserForAdmin(id) {
43
+ const user = await prisma.user.findUnique({
44
+ where: { id },
45
+ select: {
46
+ id: true,
47
+ username: true,
48
+ email: true,
49
+ verified: true,
50
+ termsAcceptedAt: true,
51
+ termsVersion: true,
52
+ profile: {
53
+ select: { displayName: true, location: true, createdAt: true },
54
+ },
55
+ school: { select: { id: true, name: true, subdomain: true } },
56
+ schoolMemberships: {
57
+ select: {
58
+ id: true,
59
+ role: true,
60
+ status: true,
61
+ createdAt: true,
62
+ school: { select: { id: true, name: true } },
63
+ },
64
+ },
65
+ sessions: {
66
+ orderBy: { createdAt: 'desc' },
67
+ take: 10,
68
+ select: { id: true, type: true, createdAt: true, expiresAt: true },
69
+ },
70
+ _count: {
71
+ select: {
72
+ teacherIn: true,
73
+ studentIn: true,
74
+ sessions: true,
75
+ submissions: true,
76
+ files: true,
77
+ },
78
+ },
79
+ },
80
+ });
81
+ if (!user) {
82
+ throw new TRPCError({ code: 'NOT_FOUND', message: 'User not found' });
83
+ }
84
+ return user;
85
+ }
86
+ //# sourceMappingURL=adminUser.js.map
87
+ //# debugId=822d0af5-d814-5fdc-ba6b-21fe1cafebb4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adminUser.js","sources":["services/adminUser.ts"],"sourceRoot":"/","sourcesContent":["import type { Prisma } from '@prisma/client';\nimport { TRPCError } from '@trpc/server';\nimport { prisma } from '../lib/prisma.js';\n\nexport async function searchUsersForAdmin(input: {\n page: number;\n pageSize: number;\n query?: string;\n}) {\n const skip = input.page * input.pageSize;\n const where: Prisma.UserWhereInput = {};\n const q = input.query?.trim();\n if (q) {\n where.OR = [\n { username: { contains: q, mode: 'insensitive' } },\n { email: { contains: q, mode: 'insensitive' } },\n ];\n }\n\n const [items, total] = await Promise.all([\n prisma.user.findMany({\n where,\n orderBy: { username: 'asc' },\n skip,\n take: input.pageSize,\n select: {\n id: true,\n username: true,\n email: true,\n verified: true,\n school: { select: { id: true, name: true } },\n _count: {\n select: { teacherIn: true, studentIn: true, sessions: true },\n },\n },\n }),\n prisma.user.count({ where }),\n ]);\n\n return {\n items,\n total,\n page: input.page,\n pageSize: input.pageSize,\n pageCount: Math.max(1, Math.ceil(total / input.pageSize)),\n };\n}\n\nexport async function getUserForAdmin(id: string) {\n const user = await prisma.user.findUnique({\n where: { id },\n select: {\n id: true,\n username: true,\n email: true,\n verified: true,\n termsAcceptedAt: true,\n termsVersion: true,\n profile: {\n select: { displayName: true, location: true, createdAt: true },\n },\n school: { select: { id: true, name: true, subdomain: true } },\n schoolMemberships: {\n select: {\n id: true,\n role: true,\n status: true,\n createdAt: true,\n school: { select: { id: true, name: true } },\n },\n },\n sessions: {\n orderBy: { createdAt: 'desc' },\n take: 10,\n select: { id: true, type: true, createdAt: true, expiresAt: true },\n },\n _count: {\n select: {\n teacherIn: true,\n studentIn: true,\n sessions: true,\n submissions: true,\n files: true,\n },\n },\n },\n });\n\n if (!user) {\n throw new TRPCError({ code: 'NOT_FOUND', message: 'User not found' });\n }\n return user;\n}\n"],"names":[],"mappings":"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","debug_id":"822d0af5-d814-5fdc-ba6b-21fe1cafebb4"}
@@ -15,6 +15,8 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
15
15
  discussionsEnabled: boolean;
16
16
  studentsCanCreateDiscussions: boolean;
17
17
  studentsCanReply: boolean;
18
+ treatMissingAsZero: boolean;
19
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
18
20
  } | null;
19
21
  assignmentsAttached: {
20
22
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -41,6 +43,7 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
41
43
  markSchemeId: string | null;
42
44
  order: number | null;
43
45
  gradingBoundaryId: string | null;
46
+ gradeCategoryId: string | null;
44
47
  }[];
45
48
  } & {
46
49
  id: string;
@@ -67,6 +70,8 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
67
70
  discussionsEnabled: boolean;
68
71
  studentsCanCreateDiscussions: boolean;
69
72
  studentsCanReply: boolean;
73
+ treatMissingAsZero: boolean;
74
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
70
75
  } | null;
71
76
  assignmentsAttached: {
72
77
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -93,6 +98,7 @@ export declare function getAgenda(userId: string, weekStart: string): Promise<{
93
98
  markSchemeId: string | null;
94
99
  order: number | null;
95
100
  gradingBoundaryId: string | null;
101
+ gradeCategoryId: string | null;
96
102
  }[];
97
103
  } & {
98
104
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agenda.d.ts","sourceRoot":"/","sources":["services/agenda.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWhE"}
1
+ {"version":3,"file":"agenda.d.ts","sourceRoot":"/","sources":["services/agenda.ts"],"names":[],"mappings":"AAQA,sFAAsF;AACtF,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWhE"}
@@ -88,6 +88,7 @@ export declare function getAssignment(id: string, _classId: string): Promise<{
88
88
  markSchemeId: string | null;
89
89
  order: number | null;
90
90
  gradingBoundaryId: string | null;
91
+ gradeCategoryId: string | null;
91
92
  }>;
92
93
  export declare function getSubmission(assignmentId: string, studentId: string): Promise<{
93
94
  late: boolean;
@@ -105,6 +106,8 @@ export declare function getSubmission(assignmentId: string, studentId: string):
105
106
  discussionsEnabled: boolean;
106
107
  studentsCanCreateDiscussions: boolean;
107
108
  studentsCanReply: boolean;
109
+ treatMissingAsZero: boolean;
110
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
108
111
  };
109
112
  markScheme: {
110
113
  id: string;
@@ -143,6 +146,7 @@ export declare function getSubmission(assignmentId: string, studentId: string):
143
146
  markSchemeId: string | null;
144
147
  order: number | null;
145
148
  gradingBoundaryId: string | null;
149
+ gradeCategoryId: string | null;
146
150
  };
147
151
  attachments: {
148
152
  path: string;
@@ -240,6 +244,8 @@ export declare function getSubmissionById(submissionId: string, classId: string,
240
244
  discussionsEnabled: boolean;
241
245
  studentsCanCreateDiscussions: boolean;
242
246
  studentsCanReply: boolean;
247
+ treatMissingAsZero: boolean;
248
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
243
249
  };
244
250
  markScheme: {
245
251
  id: string;
@@ -278,6 +284,7 @@ export declare function getSubmissionById(submissionId: string, classId: string,
278
284
  markSchemeId: string | null;
279
285
  order: number | null;
280
286
  gradingBoundaryId: string | null;
287
+ gradeCategoryId: string | null;
281
288
  };
282
289
  attachments: {
283
290
  path: string;
@@ -387,6 +394,8 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
387
394
  discussionsEnabled: boolean;
388
395
  studentsCanCreateDiscussions: boolean;
389
396
  studentsCanReply: boolean;
397
+ treatMissingAsZero: boolean;
398
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
390
399
  };
391
400
  markScheme: {
392
401
  id: string;
@@ -421,6 +430,7 @@ export declare function getSubmissions(assignmentId: string, teacherId: string):
421
430
  markSchemeId: string | null;
422
431
  order: number | null;
423
432
  gradingBoundaryId: string | null;
433
+ gradeCategoryId: string | null;
424
434
  };
425
435
  attachments: ({
426
436
  thumbnail: {
@@ -592,6 +602,7 @@ export declare function duplicateAssignmentRecord(assignmentId: string, classId:
592
602
  markSchemeId: string | null;
593
603
  order: number | null;
594
604
  gradingBoundaryId: string | null;
605
+ gradeCategoryId: string | null;
595
606
  }>;
596
607
  export declare function updateAssignmentRecord(userId: string, input: {
597
608
  id: string;
@@ -634,6 +645,8 @@ export declare function updateAssignmentRecord(userId: string, input: {
634
645
  discussionsEnabled: boolean;
635
646
  studentsCanCreateDiscussions: boolean;
636
647
  studentsCanReply: boolean;
648
+ treatMissingAsZero: boolean;
649
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
637
650
  };
638
651
  section: {
639
652
  id: string;
@@ -738,6 +751,8 @@ export declare function updateSubmissionRecord(userId: string, input: {
738
751
  discussionsEnabled: boolean;
739
752
  studentsCanCreateDiscussions: boolean;
740
753
  studentsCanReply: boolean;
754
+ treatMissingAsZero: boolean;
755
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
741
756
  };
742
757
  markScheme: {
743
758
  id: string;
@@ -772,6 +787,7 @@ export declare function updateSubmissionRecord(userId: string, input: {
772
787
  markSchemeId: string | null;
773
788
  order: number | null;
774
789
  gradingBoundaryId: string | null;
790
+ gradeCategoryId: string | null;
775
791
  };
776
792
  attachments: {
777
793
  path: string;
@@ -859,6 +875,8 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
859
875
  discussionsEnabled: boolean;
860
876
  studentsCanCreateDiscussions: boolean;
861
877
  studentsCanReply: boolean;
878
+ treatMissingAsZero: boolean;
879
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
862
880
  };
863
881
  markScheme: {
864
882
  id: string;
@@ -893,6 +911,7 @@ export declare function updateSubmissionAsTeacherRecord(teacherId: string, input
893
911
  markSchemeId: string | null;
894
912
  order: number | null;
895
913
  gradingBoundaryId: string | null;
914
+ gradeCategoryId: string | null;
896
915
  };
897
916
  attachments: ({
898
917
  thumbnail: {
@@ -1089,6 +1108,7 @@ export declare function attachAssignmentToEventRecord(teacherId: string, assignm
1089
1108
  markSchemeId: string | null;
1090
1109
  order: number | null;
1091
1110
  gradingBoundaryId: string | null;
1111
+ gradeCategoryId: string | null;
1092
1112
  };
1093
1113
  }>;
1094
1114
  export declare function detachAssignmentFromEventRecord(teacherId: string, assignmentId: string): Promise<{
@@ -1138,6 +1158,7 @@ export declare function detachAssignmentFromEventRecord(teacherId: string, assig
1138
1158
  markSchemeId: string | null;
1139
1159
  order: number | null;
1140
1160
  gradingBoundaryId: string | null;
1161
+ gradeCategoryId: string | null;
1141
1162
  };
1142
1163
  }>;
1143
1164
  export declare function getAvailableEventsForAssignment(teacherId: string, assignmentId: string): Promise<{
@@ -1242,6 +1263,7 @@ export declare function attachMarkSchemeRecord(teacherId: string, assignmentId:
1242
1263
  markSchemeId: string | null;
1243
1264
  order: number | null;
1244
1265
  gradingBoundaryId: string | null;
1266
+ gradeCategoryId: string | null;
1245
1267
  }>;
1246
1268
  export declare function detachMarkSchemeRecord(teacherId: string, assignmentId: string): Promise<{
1247
1269
  markScheme: {
@@ -1334,6 +1356,7 @@ export declare function detachMarkSchemeRecord(teacherId: string, assignmentId:
1334
1356
  markSchemeId: string | null;
1335
1357
  order: number | null;
1336
1358
  gradingBoundaryId: string | null;
1359
+ gradeCategoryId: string | null;
1337
1360
  }>;
1338
1361
  export declare function attachGradingBoundaryRecord(teacherId: string, assignmentId: string, gradingBoundaryId: string | null): Promise<{
1339
1362
  gradingBoundary: {
@@ -1426,6 +1449,7 @@ export declare function attachGradingBoundaryRecord(teacherId: string, assignmen
1426
1449
  markSchemeId: string | null;
1427
1450
  order: number | null;
1428
1451
  gradingBoundaryId: string | null;
1452
+ gradeCategoryId: string | null;
1429
1453
  }>;
1430
1454
  export declare function detachGradingBoundaryRecord(teacherId: string, assignmentId: string): Promise<{
1431
1455
  gradingBoundary: {
@@ -1518,6 +1542,7 @@ export declare function detachGradingBoundaryRecord(teacherId: string, assignmen
1518
1542
  markSchemeId: string | null;
1519
1543
  order: number | null;
1520
1544
  gradingBoundaryId: string | null;
1545
+ gradeCategoryId: string | null;
1521
1546
  }>;
1522
1547
  export declare function reorderAssignmentRecord(teacherId: string, input: {
1523
1548
  classId: string;
@@ -1549,6 +1574,7 @@ export declare function reorderAssignmentRecord(teacherId: string, input: {
1549
1574
  markSchemeId: string | null;
1550
1575
  order: number | null;
1551
1576
  gradingBoundaryId: string | null;
1577
+ gradeCategoryId: string | null;
1552
1578
  } | null>;
1553
1579
  export declare function moveAssignmentRecord(teacherId: string, input: {
1554
1580
  id: string;
@@ -1579,5 +1605,6 @@ export declare function moveAssignmentRecord(teacherId: string, input: {
1579
1605
  markSchemeId: string | null;
1580
1606
  order: number | null;
1581
1607
  gradingBoundaryId: string | null;
1608
+ gradeCategoryId: string | null;
1582
1609
  } | null>;
1583
1610
  //# sourceMappingURL=assignment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assignment.d.ts","sourceRoot":"/","sources":["services/assignment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assignment.d.ts","sourceRoot":"/","sources":["services/assignment.ts"],"names":[],"mappings":"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"}
@@ -226,6 +226,8 @@ export declare function getClass(userId: string, classId: string): Promise<{
226
226
  discussionsEnabled: boolean;
227
227
  studentsCanCreateDiscussions: boolean;
228
228
  studentsCanReply: boolean;
229
+ treatMissingAsZero: boolean;
230
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
229
231
  };
230
232
  }>;
231
233
  export declare function updateClass(classId: string, data: {
@@ -296,6 +298,8 @@ export declare function createClass(userId: string, input: {
296
298
  discussionsEnabled: boolean;
297
299
  studentsCanCreateDiscussions: boolean;
298
300
  studentsCanReply: boolean;
301
+ treatMissingAsZero: boolean;
302
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
299
303
  }>;
300
304
  export declare function deleteClass(classId: string): Promise<{
301
305
  deletedClass: {
@@ -328,6 +332,8 @@ export declare function changeRole(classId: string, userId: string, type: "teach
328
332
  discussionsEnabled: boolean;
329
333
  studentsCanCreateDiscussions: boolean;
330
334
  studentsCanReply: boolean;
335
+ treatMissingAsZero: boolean;
336
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
331
337
  };
332
338
  user: {
333
339
  type: "student" | "teacher";
@@ -349,6 +355,8 @@ export declare function removeMember(classId: string, userId: string): Promise<{
349
355
  discussionsEnabled: boolean;
350
356
  studentsCanCreateDiscussions: boolean;
351
357
  studentsCanReply: boolean;
358
+ treatMissingAsZero: boolean;
359
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
352
360
  };
353
361
  removedUserId: string;
354
362
  }>;
@@ -521,6 +529,8 @@ export declare function updateSyllabus(classId: string, contents: string): Promi
521
529
  discussionsEnabled: boolean;
522
530
  studentsCanCreateDiscussions: boolean;
523
531
  studentsCanReply: boolean;
532
+ treatMissingAsZero: boolean;
533
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
524
534
  }>;
525
535
  export declare function listLabDrafts(classId: string, teacherId: string): Promise<{
526
536
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -547,6 +557,7 @@ export declare function listLabDrafts(classId: string, teacherId: string): Promi
547
557
  markSchemeId: string | null;
548
558
  order: number | null;
549
559
  gradingBoundaryId: string | null;
560
+ gradeCategoryId: string | null;
550
561
  }[]>;
551
562
  export declare function createLabDraft(classId: string, teacherId: string, input: {
552
563
  title: string;
@@ -584,6 +595,7 @@ export declare function createLabDraft(classId: string, teacherId: string, input
584
595
  markSchemeId: string | null;
585
596
  order: number | null;
586
597
  gradingBoundaryId: string | null;
598
+ gradeCategoryId: string | null;
587
599
  }>;
588
600
  export declare function updateLabDraft(classId: string, teacherId: string, draftId: string, input: Record<string, unknown>): Promise<{
589
601
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -610,6 +622,7 @@ export declare function updateLabDraft(classId: string, teacherId: string, draft
610
622
  markSchemeId: string | null;
611
623
  order: number | null;
612
624
  gradingBoundaryId: string | null;
625
+ gradeCategoryId: string | null;
613
626
  }>;
614
627
  export declare function deleteLabDraft(classId: string, teacherId: string, draftId: string): Promise<{
615
628
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -636,6 +649,7 @@ export declare function deleteLabDraft(classId: string, teacherId: string, draft
636
649
  markSchemeId: string | null;
637
650
  order: number | null;
638
651
  gradingBoundaryId: string | null;
652
+ gradeCategoryId: string | null;
639
653
  }>;
640
654
  export declare function publishLabDraft(classId: string, teacherId: string, draftId: string, input: {
641
655
  dueDate?: Date;
@@ -667,6 +681,7 @@ export declare function publishLabDraft(classId: string, teacherId: string, draf
667
681
  markSchemeId: string | null;
668
682
  order: number | null;
669
683
  gradingBoundaryId: string | null;
684
+ gradeCategoryId: string | null;
670
685
  }>;
671
686
  export declare function getFiles(classId: string): Promise<{
672
687
  id: string;
@@ -804,6 +819,8 @@ export declare function exportClass(classId: string, userId: string): Promise<{
804
819
  discussionsEnabled: boolean;
805
820
  studentsCanCreateDiscussions: boolean;
806
821
  studentsCanReply: boolean;
822
+ treatMissingAsZero: boolean;
823
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
807
824
  }>;
808
825
  export declare function importClass(classId: string, userId: string, year: number, classData: Class & {
809
826
  classFiles: Folder | null;
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"/","sources":["services/class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"/","sources":["services/class.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgC/C,sFAAsF;AACtF,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDjD;AAED,0EAA0E;AAC1E,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqE7D;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;;;;;;;;;;;;;GA6CF;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM;;;;GAchD;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;GAoBlE;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;GAuB5B;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;GASjE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;GAuB/D;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;GAyBhE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM;;GAgBlD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM;;GAerD;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYrB;AAED,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;GAsB7B;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM;;;;KAE9C;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM;;;;;;KAEpD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;GAQxE;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM;;;;;;GAUlB;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM;;;;;;GAI1D;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM;;;;;;KAE1D;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;GAQ7E;AAED,wBAAsB,qBAAqB,CACzC,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM;;;;;;GAUlB;AAED,wBAAsB,qBAAqB,CAAC,iBAAiB,EAAE,MAAM;;;;;;GAIpE;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;GAShD;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;GAgBrE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;KAErE;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;GAuBF;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;GA2B/B;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;GAUhB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDF;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAc7C;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUhE;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,mBAmBhI"}
@@ -44,6 +44,8 @@ export declare function getEvent(userId: string, id: string): Promise<{
44
44
  discussionsEnabled: boolean;
45
45
  studentsCanCreateDiscussions: boolean;
46
46
  studentsCanReply: boolean;
47
+ treatMissingAsZero: boolean;
48
+ gradeRoundingMode: import(".prisma/client").$Enums.GradeRoundingMode;
47
49
  }) | null;
48
50
  assignmentsAttached: {
49
51
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -170,6 +172,7 @@ export declare function attachAssignment(userId: string, eventId: string, assign
170
172
  markSchemeId: string | null;
171
173
  order: number | null;
172
174
  gradingBoundaryId: string | null;
175
+ gradeCategoryId: string | null;
173
176
  };
174
177
  }>;
175
178
  export declare function detachAssignment(userId: string, eventId: string, assignmentId: string): Promise<{
@@ -212,6 +215,7 @@ export declare function detachAssignment(userId: string, eventId: string, assign
212
215
  markSchemeId: string | null;
213
216
  order: number | null;
214
217
  gradingBoundaryId: string | null;
218
+ gradeCategoryId: string | null;
215
219
  };
216
220
  }>;
217
221
  export declare function getAvailableAssignments(userId: string, eventId: string): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"/","sources":["services/event.ts"],"names":[],"mappings":"AAmBA,6DAA6D;AAC7D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAexD;AAED,wCAAwC;AACxC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;GAwBF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;GA2BF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;GAiBjE;AAuBD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBrB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAkBhB"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"/","sources":["services/event.ts"],"names":[],"mappings":"AAmBA,6DAA6D;AAC7D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAexD;AAED,wCAAwC;AACxC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;GAwBF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;GA2BF;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;;GAiBjE;AAuBD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CrB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBrB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;GAkBhB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Grade calculation – pure functions for computing final class grades from
3
+ * categories, weights, and grade-calculation policies. No I/O; unit-testable.
4
+ *
5
+ * Future policies (standards-based grading, etc.) should extend
6
+ * `GradeCalculationPolicies` and be handled inside `computeFinalGrade` so
7
+ * callers never need to change.
8
+ */
9
+ export type GradeRoundingMode = "NONE" | "HALF_UP" | "FLOOR" | "CEILING";
10
+ export interface GradeCalculationPolicies {
11
+ /** Count ungraded/missing scores as 0% instead of excluding them. */
12
+ treatMissingAsZero: boolean;
13
+ /** How the final percentage is rounded to a whole number. */
14
+ roundingMode: GradeRoundingMode;
15
+ }
16
+ export interface GradeCategoryInput {
17
+ id: string;
18
+ name: string;
19
+ /** Relative weight of this category toward the final grade. */
20
+ weight: number;
21
+ /** Number of lowest-percentage scores dropped within this category. */
22
+ dropLowest: number;
23
+ }
24
+ export interface ScoreInput {
25
+ /** Category the score belongs to; null falls into the default category. */
26
+ categoryId: string | null;
27
+ /** Points earned; null means missing/ungraded. */
28
+ pointsEarned: number | null;
29
+ /** Maximum points for the item; items with maxPoints <= 0 are ignored. */
30
+ maxPoints: number;
31
+ /** Relative weight of the item within its category (defaults to 1). */
32
+ weight?: number;
33
+ }
34
+ export interface CategoryAverage {
35
+ categoryId: string | null;
36
+ name: string;
37
+ weight: number;
38
+ /** Percentage 0–100, or null when no scores counted. */
39
+ average: number | null;
40
+ countedScores: number;
41
+ droppedScores: number;
42
+ }
43
+ export interface FinalGradeResult {
44
+ /** Final percentage 0–100 (rounded per policy), or null when no data. */
45
+ percentage: number | null;
46
+ categories: CategoryAverage[];
47
+ }
48
+ /** Synthetic category used for scores without a category. */
49
+ export declare const DEFAULT_CATEGORY: {
50
+ readonly id: null;
51
+ readonly weight: 1;
52
+ readonly dropLowest: 0;
53
+ };
54
+ export declare function roundPercentage(value: number, mode: GradeRoundingMode): number;
55
+ /**
56
+ * Computes the final class grade as the weighted average of category
57
+ * averages. Scores with no category fall into a default category with
58
+ * weight `DEFAULT_CATEGORY.weight`. Categories without counted scores are
59
+ * excluded from the weighted average.
60
+ */
61
+ export declare function computeFinalGrade(policies: GradeCalculationPolicies, categories: GradeCategoryInput[], scores: ScoreInput[], options?: {
62
+ defaultCategoryName?: string;
63
+ }): FinalGradeResult;
64
+ /**
65
+ * Maps a percentage to a letter grade using a GradingBoundary `structured`
66
+ * JSON payload (`{ boundaries: [{ grade, minPercentage, maxPercentage }] }`).
67
+ * Returns null when the payload is unparseable or nothing matches.
68
+ */
69
+ export declare function resolveLetterGrade(structured: string, percentage: number): string | null;
70
+ //# sourceMappingURL=gradeCalculation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradeCalculation.d.ts","sourceRoot":"/","sources":["services/gradeCalculation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,6DAA6D;IAC7D,YAAY,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,MAAM,CAYR;AAsDD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,wBAAwB,EAClC,UAAU,EAAE,kBAAkB,EAAE,EAChC,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,CAAC,EAAE;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,gBAAgB,CAuElB;AAQD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAwBf"}