@studious-lms/server 1.23.0 → 1.24.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 (298) hide show
  1. package/.env.example +0 -1
  2. package/data/curriculum/nepal-cdc-g4-g5/README.md +90 -0
  3. package/data/curriculum/nepal-cdc-g4-g5/manifest.json +97 -0
  4. package/data/curriculum/nepal-cdc-g4-g5/proficiency-scale.json +76 -0
  5. package/data/curriculum/nepal-cdc-g4-g5/subjects/english.json +6936 -0
  6. package/data/curriculum/nepal-cdc-g4-g5/subjects/health-physical-creative-arts.json +3401 -0
  7. package/data/curriculum/nepal-cdc-g4-g5/subjects/mathematics.json +1511 -0
  8. package/data/curriculum/nepal-cdc-g4-g5/subjects/nepali.json +7928 -0
  9. package/data/curriculum/nepal-cdc-g4-g5/subjects/science-technology.json +2420 -0
  10. package/data/curriculum/nepal-cdc-g4-g5/subjects/social-studies.json +2177 -0
  11. package/dist/lib/assignmentTypeDefaults.d.ts +41 -0
  12. package/dist/lib/assignmentTypeDefaults.d.ts.map +1 -0
  13. package/dist/lib/assignmentTypeDefaults.js +167 -0
  14. package/dist/lib/assignmentTypeDefaults.js.map +1 -0
  15. package/dist/lib/config/env.d.ts +0 -8
  16. package/dist/lib/config/env.d.ts.map +1 -1
  17. package/dist/lib/config/env.js +2 -5
  18. package/dist/lib/config/env.js.map +1 -1
  19. package/dist/lib/feePdf.d.ts +19 -0
  20. package/dist/lib/feePdf.d.ts.map +1 -0
  21. package/dist/lib/feePdf.js +167 -0
  22. package/dist/lib/feePdf.js.map +1 -0
  23. package/dist/lib/feePdfFormat.d.ts +4 -0
  24. package/dist/lib/feePdfFormat.d.ts.map +1 -0
  25. package/dist/lib/feePdfFormat.js +16 -0
  26. package/dist/lib/feePdfFormat.js.map +1 -0
  27. package/dist/lib/idCardPdf.d.ts +26 -0
  28. package/dist/lib/idCardPdf.d.ts.map +1 -0
  29. package/dist/lib/idCardPdf.js +272 -0
  30. package/dist/lib/idCardPdf.js.map +1 -0
  31. package/dist/lib/pdfLetterhead.d.ts +41 -0
  32. package/dist/lib/pdfLetterhead.d.ts.map +1 -0
  33. package/dist/lib/pdfLetterhead.js +86 -0
  34. package/dist/lib/pdfLetterhead.js.map +1 -0
  35. package/dist/lib/transcriptPdf.d.ts +55 -0
  36. package/dist/lib/transcriptPdf.d.ts.map +1 -0
  37. package/dist/lib/transcriptPdf.js +303 -0
  38. package/dist/lib/transcriptPdf.js.map +1 -0
  39. package/dist/models/academicCalendar.d.ts +198 -0
  40. package/dist/models/academicCalendar.d.ts.map +1 -0
  41. package/dist/models/academicCalendar.js +106 -0
  42. package/dist/models/academicCalendar.js.map +1 -0
  43. package/dist/models/agenda.d.ts +8 -0
  44. package/dist/models/agenda.d.ts.map +1 -1
  45. package/dist/models/announcement.d.ts +2 -0
  46. package/dist/models/announcement.d.ts.map +1 -1
  47. package/dist/models/assignment.d.ts +66 -0
  48. package/dist/models/assignment.d.ts.map +1 -1
  49. package/dist/models/attendance.d.ts +659 -21
  50. package/dist/models/attendance.d.ts.map +1 -1
  51. package/dist/models/attendance.js +544 -75
  52. package/dist/models/attendance.js.map +1 -1
  53. package/dist/models/auth.d.ts +2 -0
  54. package/dist/models/auth.d.ts.map +1 -1
  55. package/dist/models/class.d.ts +12 -0
  56. package/dist/models/class.d.ts.map +1 -1
  57. package/dist/models/class.js +3 -2
  58. package/dist/models/class.js.map +1 -1
  59. package/dist/models/event.d.ts +16 -0
  60. package/dist/models/event.d.ts.map +1 -1
  61. package/dist/models/fees.d.ts +554 -0
  62. package/dist/models/fees.d.ts.map +1 -0
  63. package/dist/models/fees.js +278 -0
  64. package/dist/models/fees.js.map +1 -0
  65. package/dist/models/file.d.ts +29 -0
  66. package/dist/models/file.d.ts.map +1 -1
  67. package/dist/models/folder.d.ts +2 -0
  68. package/dist/models/folder.d.ts.map +1 -1
  69. package/dist/models/labChat.d.ts +2 -0
  70. package/dist/models/labChat.d.ts.map +1 -1
  71. package/dist/models/marketplace.d.ts +178 -0
  72. package/dist/models/marketplace.d.ts.map +1 -0
  73. package/dist/models/marketplace.js +115 -0
  74. package/dist/models/marketplace.js.map +1 -0
  75. package/dist/models/moduleItem.d.ts +304 -0
  76. package/dist/models/moduleItem.d.ts.map +1 -0
  77. package/dist/models/moduleItem.js +78 -0
  78. package/dist/models/moduleItem.js.map +1 -0
  79. package/dist/models/newtonChat.d.ts +1 -0
  80. package/dist/models/newtonChat.d.ts.map +1 -1
  81. package/dist/models/school.d.ts +18 -0
  82. package/dist/models/school.d.ts.map +1 -1
  83. package/dist/models/school.js +7 -2
  84. package/dist/models/school.js.map +1 -1
  85. package/dist/models/section.d.ts +4 -0
  86. package/dist/models/section.d.ts.map +1 -1
  87. package/dist/models/worksheet.d.ts +19 -0
  88. package/dist/models/worksheet.d.ts.map +1 -1
  89. package/dist/models/worksheet.js +2 -2
  90. package/dist/models/worksheet.js.map +1 -1
  91. package/dist/routers/_app.d.ts +11341 -7097
  92. package/dist/routers/_app.d.ts.map +1 -1
  93. package/dist/routers/_app.js +12 -2
  94. package/dist/routers/_app.js.map +1 -1
  95. package/dist/routers/academicCalendar.d.ts +229 -0
  96. package/dist/routers/academicCalendar.d.ts.map +1 -0
  97. package/dist/routers/academicCalendar.js +75 -0
  98. package/dist/routers/academicCalendar.js.map +1 -0
  99. package/dist/routers/admin.d.ts +2 -0
  100. package/dist/routers/admin.d.ts.map +1 -1
  101. package/dist/routers/agenda.d.ts +8 -0
  102. package/dist/routers/agenda.d.ts.map +1 -1
  103. package/dist/routers/assignment.d.ts +75 -0
  104. package/dist/routers/assignment.d.ts.map +1 -1
  105. package/dist/routers/assignment.js +10 -2
  106. package/dist/routers/assignment.js.map +1 -1
  107. package/dist/routers/attendance.d.ts +103 -0
  108. package/dist/routers/attendance.d.ts.map +1 -1
  109. package/dist/routers/attendance.js +8 -5
  110. package/dist/routers/attendance.js.map +1 -1
  111. package/dist/routers/class.d.ts +27 -0
  112. package/dist/routers/class.d.ts.map +1 -1
  113. package/dist/routers/class.js +6 -2
  114. package/dist/routers/class.js.map +1 -1
  115. package/dist/routers/event.d.ts +8 -0
  116. package/dist/routers/event.d.ts.map +1 -1
  117. package/dist/routers/fees.d.ts +513 -0
  118. package/dist/routers/fees.d.ts.map +1 -0
  119. package/dist/routers/fees.js +88 -0
  120. package/dist/routers/fees.js.map +1 -0
  121. package/dist/routers/file.d.ts +2 -0
  122. package/dist/routers/file.d.ts.map +1 -1
  123. package/dist/routers/gradebook.d.ts +4 -1
  124. package/dist/routers/gradebook.d.ts.map +1 -1
  125. package/dist/routers/marketplace.d.ts +371 -0
  126. package/dist/routers/marketplace.d.ts.map +1 -0
  127. package/dist/routers/marketplace.js +87 -0
  128. package/dist/routers/marketplace.js.map +1 -0
  129. package/dist/routers/moduleItem.d.ts +263 -0
  130. package/dist/routers/moduleItem.d.ts.map +1 -0
  131. package/dist/routers/moduleItem.js +60 -0
  132. package/dist/routers/moduleItem.js.map +1 -0
  133. package/dist/routers/parent.d.ts +169 -0
  134. package/dist/routers/parent.d.ts.map +1 -0
  135. package/dist/routers/parent.js +49 -0
  136. package/dist/routers/parent.js.map +1 -0
  137. package/dist/routers/school.d.ts +363 -7
  138. package/dist/routers/school.d.ts.map +1 -1
  139. package/dist/routers/school.js +100 -3
  140. package/dist/routers/school.js.map +1 -1
  141. package/dist/routers/worksheet.d.ts +27 -0
  142. package/dist/routers/worksheet.d.ts.map +1 -1
  143. package/dist/routers/worksheet.js +10 -3
  144. package/dist/routers/worksheet.js.map +1 -1
  145. package/dist/services/academicCalendar.d.ts +173 -0
  146. package/dist/services/academicCalendar.d.ts.map +1 -0
  147. package/dist/services/academicCalendar.js +214 -0
  148. package/dist/services/academicCalendar.js.map +1 -0
  149. package/dist/services/adminInstitution.d.ts +2 -0
  150. package/dist/services/adminInstitution.d.ts.map +1 -1
  151. package/dist/services/agenda.d.ts +8 -0
  152. package/dist/services/agenda.d.ts.map +1 -1
  153. package/dist/services/assignment.d.ts +75 -0
  154. package/dist/services/assignment.d.ts.map +1 -1
  155. package/dist/services/assignment.js +91 -12
  156. package/dist/services/assignment.js.map +1 -1
  157. package/dist/services/attendance.d.ts +323 -10
  158. package/dist/services/attendance.d.ts.map +1 -1
  159. package/dist/services/attendance.js +385 -25
  160. package/dist/services/attendance.js.map +1 -1
  161. package/dist/services/attendanceMerge.d.ts +53 -0
  162. package/dist/services/attendanceMerge.d.ts.map +1 -0
  163. package/dist/services/attendanceMerge.js +87 -0
  164. package/dist/services/attendanceMerge.js.map +1 -0
  165. package/dist/services/attendanceRate.d.ts +24 -0
  166. package/dist/services/attendanceRate.d.ts.map +1 -0
  167. package/dist/services/attendanceRate.js +31 -0
  168. package/dist/services/attendanceRate.js.map +1 -0
  169. package/dist/services/attendanceStats.d.ts +22 -0
  170. package/dist/services/attendanceStats.d.ts.map +1 -0
  171. package/dist/services/attendanceStats.js +45 -0
  172. package/dist/services/attendanceStats.js.map +1 -0
  173. package/dist/services/class.d.ts +27 -0
  174. package/dist/services/class.d.ts.map +1 -1
  175. package/dist/services/class.js +26 -3
  176. package/dist/services/class.js.map +1 -1
  177. package/dist/services/event.d.ts +8 -0
  178. package/dist/services/event.d.ts.map +1 -1
  179. package/dist/services/fees.d.ts +422 -0
  180. package/dist/services/fees.d.ts.map +1 -0
  181. package/dist/services/fees.js +310 -0
  182. package/dist/services/fees.js.map +1 -0
  183. package/dist/services/feesAuthz.d.ts +49 -0
  184. package/dist/services/feesAuthz.d.ts.map +1 -0
  185. package/dist/services/feesAuthz.js +52 -0
  186. package/dist/services/feesAuthz.js.map +1 -0
  187. package/dist/services/file.d.ts +4 -0
  188. package/dist/services/file.d.ts.map +1 -1
  189. package/dist/services/gradebook.d.ts +18 -1
  190. package/dist/services/gradebook.d.ts.map +1 -1
  191. package/dist/services/gradebook.js +57 -2
  192. package/dist/services/gradebook.js.map +1 -1
  193. package/dist/services/idCard.d.ts +11 -0
  194. package/dist/services/idCard.d.ts.map +1 -0
  195. package/dist/services/idCard.js +122 -0
  196. package/dist/services/idCard.js.map +1 -0
  197. package/dist/services/marketplace.d.ts +301 -0
  198. package/dist/services/marketplace.d.ts.map +1 -0
  199. package/dist/services/marketplace.js +628 -0
  200. package/dist/services/marketplace.js.map +1 -0
  201. package/dist/services/moduleItem.d.ts +196 -0
  202. package/dist/services/moduleItem.d.ts.map +1 -0
  203. package/dist/services/moduleItem.js +188 -0
  204. package/dist/services/moduleItem.js.map +1 -0
  205. package/dist/services/notification.d.ts +58 -0
  206. package/dist/services/notification.d.ts.map +1 -1
  207. package/dist/services/notification.js +30 -2
  208. package/dist/services/notification.js.map +1 -1
  209. package/dist/services/parentPortal.d.ts +133 -0
  210. package/dist/services/parentPortal.d.ts.map +1 -0
  211. package/dist/services/parentPortal.js +328 -0
  212. package/dist/services/parentPortal.js.map +1 -0
  213. package/dist/services/school.d.ts +28 -3
  214. package/dist/services/school.d.ts.map +1 -1
  215. package/dist/services/school.js +65 -45
  216. package/dist/services/school.js.map +1 -1
  217. package/dist/services/studentImport.d.ts +34 -0
  218. package/dist/services/studentImport.d.ts.map +1 -0
  219. package/dist/services/studentImport.js +236 -0
  220. package/dist/services/studentImport.js.map +1 -0
  221. package/dist/services/transcript.d.ts +61 -0
  222. package/dist/services/transcript.d.ts.map +1 -0
  223. package/dist/services/transcript.js +243 -0
  224. package/dist/services/transcript.js.map +1 -0
  225. package/dist/services/worksheet.d.ts +22 -0
  226. package/dist/services/worksheet.d.ts.map +1 -1
  227. package/dist/services/worksheet.js +94 -2
  228. package/dist/services/worksheet.js.map +1 -1
  229. package/dist/trpc.d.ts +1 -1
  230. package/dist/trpc.d.ts.map +1 -1
  231. package/dist/trpc.js +5 -5
  232. package/dist/trpc.js.map +1 -1
  233. package/dist/utils/adminPanelAccess.d.ts +4 -5
  234. package/dist/utils/adminPanelAccess.d.ts.map +1 -1
  235. package/dist/utils/adminPanelAccess.js +12 -34
  236. package/dist/utils/adminPanelAccess.js.map +1 -1
  237. package/package.json +2 -1
  238. package/prisma/migrations/20260804120000_add_attendance_records_and_excusals/migration.sql +114 -0
  239. package/prisma/migrations/20260804120100_add_fee_plans_invoices_payments/migration.sql +101 -0
  240. package/prisma/migrations/20260804120200_add_marketplace_listings/migration.sql +54 -0
  241. package/prisma/migrations/20260804120300_content_platform_b3_b9/migration.sql +63 -0
  242. package/prisma/migrations/20260804120400_c_academic_ops/migration.sql +77 -0
  243. package/prisma/schema.prisma +371 -11
  244. package/scripts/import-nepal-cdc-curriculum.ts +379 -0
  245. package/src/lib/assignmentTypeDefaults.ts +222 -0
  246. package/src/lib/config/env.ts +0 -3
  247. package/src/lib/feePdf.ts +199 -0
  248. package/src/lib/feePdfFormat.ts +14 -0
  249. package/src/lib/idCardPdf.ts +336 -0
  250. package/src/lib/pdfLetterhead.ts +124 -0
  251. package/src/lib/transcriptPdf.ts +502 -0
  252. package/src/models/academicCalendar.ts +139 -0
  253. package/src/models/attendance.ts +704 -73
  254. package/src/models/class.ts +1 -0
  255. package/src/models/fees.ts +349 -0
  256. package/src/models/marketplace.ts +158 -0
  257. package/src/models/moduleItem.ts +107 -0
  258. package/src/models/school.ts +6 -0
  259. package/src/models/worksheet.ts +2 -0
  260. package/src/routers/_app.ts +10 -0
  261. package/src/routers/academicCalendar.ts +103 -0
  262. package/src/routers/assignment.ts +8 -0
  263. package/src/routers/attendance.ts +7 -3
  264. package/src/routers/class.ts +4 -0
  265. package/src/routers/fees.ts +126 -0
  266. package/src/routers/marketplace.ts +134 -0
  267. package/src/routers/moduleItem.ts +89 -0
  268. package/src/routers/parent.ts +68 -0
  269. package/src/routers/school.ts +139 -1
  270. package/src/routers/worksheet.ts +11 -0
  271. package/src/services/academicCalendar.ts +299 -0
  272. package/src/services/assignment.ts +122 -12
  273. package/src/services/attendance.ts +548 -26
  274. package/src/services/attendanceMerge.ts +139 -0
  275. package/src/services/attendanceRate.ts +41 -0
  276. package/src/services/attendanceStats.ts +63 -0
  277. package/src/services/class.ts +25 -1
  278. package/src/services/fees.ts +424 -0
  279. package/src/services/feesAuthz.ts +77 -0
  280. package/src/services/gradebook.ts +70 -0
  281. package/src/services/idCard.ts +147 -0
  282. package/src/services/marketplace.ts +785 -0
  283. package/src/services/moduleItem.ts +274 -0
  284. package/src/services/notification.ts +43 -0
  285. package/src/services/parentPortal.ts +380 -0
  286. package/src/services/school.ts +65 -44
  287. package/src/services/studentImport.ts +273 -0
  288. package/src/services/transcript.ts +313 -0
  289. package/src/services/worksheet.ts +111 -0
  290. package/src/trpc.ts +3 -3
  291. package/src/utils/adminPanelAccess.ts +12 -35
  292. package/tests/unit/assignmentTypeDefaults.test.ts +52 -0
  293. package/tests/unit/lib/feePdf.test.ts +15 -0
  294. package/tests/unit/lib/idCardPdf.test.ts +40 -0
  295. package/tests/unit/lib/transcriptPdf.test.ts +111 -0
  296. package/tests/unit/services/attendanceMerge.test.ts +90 -0
  297. package/tests/unit/services/attendanceRate.test.ts +38 -0
  298. package/tests/unit/services/attendanceStats.test.ts +54 -0
package/.env.example CHANGED
@@ -21,7 +21,6 @@ PORT=3001
21
21
  NODE_ENV=development
22
22
 
23
23
  # Admin panel (tRPC `admin.*`): comma/whitespace-separated user UUIDs. Required in production; optional in dev (empty = any signed-in user can call admin).
24
- ADMIN_PANEL_USER_IDS=""
25
24
 
26
25
  # Logging Configuration
27
26
  # Options: debug, info, warn, error
@@ -0,0 +1,90 @@
1
+ # Nepal CDC G4–5 Curriculum Pack (Phase A)
2
+
3
+ Curriculum Development Centre (CDC) **Student Evaluation Guidelines 2083** for Grades 4–5 — 100% formative assessment with per-subject, per-unit learning-outcome forms rated **1–4** (Below Basic / Basic / Proficient / Advanced).
4
+
5
+ ## Source
6
+
7
+ - Document: आधारभूत तह कक्षा ४–५ मा विद्यार्थी मूल्याङ्कन मार्गदर्शन, २०८३
8
+ - CDC guidelines index: https://moecdc.gov.np/category/guidelines/
9
+ - PDF: see `manifest.json` → `source.url`
10
+
11
+ ## Layout
12
+
13
+ | Path | Purpose |
14
+ | --- | --- |
15
+ | `manifest.json` | Pack metadata, mapping notes, stats |
16
+ | `proficiency-scale.json` | Shared 1–4 levels + `GradingBoundary` payload |
17
+ | `subjects/*.json` | Per-subject unit forms → MarkScheme templates |
18
+
19
+ ## Mapping onto Studious
20
+
21
+ | CDC concept | Studious object |
22
+ | --- | --- |
23
+ | Unit / content-area learning-outcome form | Department `MarkScheme` (`departmentId` set, `classId` null) |
24
+ | Learning outcome indicator | `structured.criteria[]` (each with the same 1–4 `levels`) |
25
+ | Proficiency labels 1–4 | Criterion levels **and** a department `GradingBoundary` (percentage bands for CDC formula) |
26
+ | Grade / subject metadata | Tags: `Grade 4`, `Grade 5`, subject key, `CDC-2083`, `formative` |
27
+
28
+ Frontend presets `GradingBoundaryTemplates.nepal` (NEB letter grades) and `RubricTemplates.neb_assessment` are **not** this pack — they are NEB-style helpers.
29
+
30
+ ### CDC percentage formula
31
+
32
+ ```
33
+ achievement % = (sum of outcome ratings) / (4 × number of outcomes) × 100
34
+ ```
35
+
36
+ Boundary bands (equal quartiles of that percentage):
37
+
38
+ | Label | min% | max% |
39
+ | --- | --- | --- |
40
+ | Advanced | 75 | 100 |
41
+ | Proficient | 50 | 74 |
42
+ | Basic | 25 | 49 |
43
+ | Below Basic | 0 | 24 |
44
+
45
+ ## Import
46
+
47
+ ```bash
48
+ # Dry run
49
+ npm run curriculum:import-nepal-cdc -- --departmentId=<uuid> --dry-run
50
+
51
+ # Import all G4+G5 subjects into a department template library
52
+ npm run curriculum:import-nepal-cdc -- --departmentId=<uuid>
53
+
54
+ # Filter
55
+ npm run curriculum:import-nepal-cdc -- --departmentId=<uuid> --grades=4 --subjects=english,mathematics
56
+ ```
57
+
58
+ After import, templates appear under **School Admin → Departments → Templates**. Teachers apply them to a class via the institution panel (`department.applyRubricTemplate` / `applyBoundaryTemplate`).
59
+
60
+ There is no bulk admin UI for this pack; the script is the Phase A import path.
61
+
62
+ ## Filling TODO placeholders
63
+
64
+ Many Nepali-script outcome texts could not be reliably OCR’d. In subject JSON files:
65
+
66
+ 1. Find criteria whose `description` or `title` starts with `TODO:`.
67
+ 2. Replace with the official indicator text from the matching Annex 3 form in the PDF.
68
+ 3. Set `meta.transcriptionStatus` (and the unit’s `transcriptionStatus`) to `"verified"`.
69
+ 4. Re-run the import with `--force` **or** edit the department template in the admin UI.
70
+
71
+ ### Transcription status values
72
+
73
+ | Status | Meaning |
74
+ | --- | --- |
75
+ | `from-pdf-english` | Extracted from English annex text |
76
+ | `ocr-corrected` | Recovered from noisy Devanagari OCR + English gloss |
77
+ | `partial` | Some outcomes filled, some TODO |
78
+ | `scaffold` / `scaffold-titles` | Titles present; outcome text still TODO |
79
+ | `todo` | Per-criterion placeholder |
80
+ | `verified` | Spot-checked by a Nepali speaker (target state) |
81
+
82
+ ## Out of scope (Phase A)
83
+
84
+ - Phase B mastery / longitudinal tracking grid
85
+ - Annex 4 annual transcript (tracked separately as A4)
86
+ - Mother-tongue / local subject national forms (school-defined per CDC)
87
+
88
+ ## Spot-check flag
89
+
90
+ **A Nepali speaker should spot-check all Devanagari titles and OCR-corrected outcome text against the official PDF before production use.**
@@ -0,0 +1,97 @@
1
+ {
2
+ "id": "nepal-cdc-g4-g5-2083",
3
+ "name": "Nepal CDC Grades 4–5 Student Evaluation Guidelines 2083",
4
+ "nameNe": "आधारभूत तह कक्षा ४–५ मा विद्यार्थी मूल्याङ्कन मार्गदर्शन, २०८३",
5
+ "version": "0.1.0-phase-a",
6
+ "phase": "A",
7
+ "assessmentModel": "100% formative / continuous classroom-based assessment",
8
+ "ratingScale": "1–4 (Below Basic / Basic / Proficient / Advanced)",
9
+ "source": {
10
+ "publisher": "Curriculum Development Centre (CDC), Sanothimi, Bhaktapur",
11
+ "document": "Student Evaluation Guidelines for Basic Level Grades 4–5, 2083 B.S.",
12
+ "url": "https://giwmscdnone.gov.np/media/pdf_upload/%E0%A4%B5%E0%A4%BF%E0%A4%A6%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%A5%E0%A5%80%20%E0%A4%AE%E0%A5%82%E0%A4%B2%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%99%E0%A5%8D%E0%A4%95%E0%A4%A8%20%E0%A4%AE%E0%A4%BE%E0%A4%B0%E0%A5%8D%E0%A4%97%E0%A4%A6%E0%A4%B0%E0%A5%8D%E0%A4%B6%E0%A4%A8%20%E0%A5%A8%E0%A5%A6%E0%A5%AE%E0%A5%A9_eorih3h.pdf",
13
+ "cdcPage": "https://moecdc.gov.np/category/guidelines/"
14
+ },
15
+ "mapping": {
16
+ "unitForm": "MarkScheme department template (classId null, departmentId set); each learning outcome → criteria[] with shared 1–4 levels",
17
+ "proficiencyScale": "GradingBoundary department template; percentage bands for CDC (sum ratings)/(4N)×100",
18
+ "tags": "Grade 4 | Grade 5 | subject key | CDC-2083 | formative via Tag attach to RUBRIC/BOUNDARY",
19
+ "frontendPresets": "studious GradingBoundaryTemplates.nepal (NEB letter) and RubricTemplates.neb_assessment are separate NEB presets, not CDC 1–4"
20
+ },
21
+ "outOfScope": [
22
+ "Phase B mastery tracking grid",
23
+ "Annex-4 annual transcript (A4)",
24
+ "Mother-tongue/local subject national forms"
25
+ ],
26
+ "spotCheckRequired": true,
27
+ "spotCheckNote": "Nepali-script titles and many outcome texts were OCR-corrected or left as TODO. A Nepali speaker must spot-check against the official PDF before production use.",
28
+ "subjects": [
29
+ {
30
+ "key": "nepali",
31
+ "nameEn": "Nepali",
32
+ "nameNe": "नेपाली",
33
+ "annex": "3 (क)",
34
+ "unitCount": 30,
35
+ "file": "subjects/nepali.json"
36
+ },
37
+ {
38
+ "key": "english",
39
+ "nameEn": "English",
40
+ "nameNe": "अङ्ग्रेजी",
41
+ "annex": "3 (ख)",
42
+ "unitCount": 33,
43
+ "file": "subjects/english.json"
44
+ },
45
+ {
46
+ "key": "mathematics",
47
+ "nameEn": "Mathematics",
48
+ "nameNe": "गणित",
49
+ "annex": "3 (ग)",
50
+ "unitCount": 9,
51
+ "file": "subjects/mathematics.json"
52
+ },
53
+ {
54
+ "key": "social-studies",
55
+ "nameEn": "Social Studies and Human Value Education",
56
+ "nameNe": "सामाजिक अध्ययन तथा मानव मूल्य शिक्षा",
57
+ "annex": "3 (घ)",
58
+ "unitCount": 14,
59
+ "file": "subjects/social-studies.json"
60
+ },
61
+ {
62
+ "key": "science-technology",
63
+ "nameEn": "Science and Technology",
64
+ "nameNe": "विज्ञान तथा प्रविधि",
65
+ "annex": "3 (ङ)",
66
+ "unitCount": 16,
67
+ "file": "subjects/science-technology.json"
68
+ },
69
+ {
70
+ "key": "health-physical-creative-arts",
71
+ "nameEn": "Health, Physical and Creative Arts",
72
+ "nameNe": "स्वास्थ्य, शारीरिक तथा सिर्जनात्मक कला",
73
+ "annex": "3 (च)",
74
+ "unitCount": 26,
75
+ "file": "subjects/health-physical-creative-arts.json"
76
+ },
77
+ {
78
+ "key": "mother-tongue-local",
79
+ "nameEn": "Mother Tongue / Local Subject",
80
+ "nameNe": "मातृभाषा / स्थानीय विषय",
81
+ "annex": "school-defined",
82
+ "note": "CDC states tools for mother-tongue/local subject are prepared locally; no fixed national unit forms in this pack.",
83
+ "units": []
84
+ }
85
+ ],
86
+ "files": {
87
+ "proficiencyScale": "proficiency-scale.json",
88
+ "subjectsDir": "subjects/"
89
+ },
90
+ "stats": {
91
+ "unitForms": 128,
92
+ "fromPdfEnglish": 33,
93
+ "ocrCorrected": 13,
94
+ "partial": 1,
95
+ "scaffold": 81
96
+ }
97
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "id": "cdc-g4-g5-proficiency-1-4",
3
+ "levels": [
4
+ {
5
+ "id": "advanced",
6
+ "name": "Advanced",
7
+ "nameNe": "उच्च",
8
+ "points": 4,
9
+ "color": "#059669",
10
+ "description": "Learning outcome fully achieved (सिकाइ उपलब्धि पूर्ण रूपमा हासिल गरेको)"
11
+ },
12
+ {
13
+ "id": "proficient",
14
+ "name": "Proficient",
15
+ "nameNe": "दक्ष",
16
+ "points": 3,
17
+ "color": "#2563eb",
18
+ "description": "Learning outcome mostly achieved (सिकाइ उपलब्धि धेरैजसो हासिल गरेको)"
19
+ },
20
+ {
21
+ "id": "basic",
22
+ "name": "Basic",
23
+ "nameNe": "आधारभूत",
24
+ "points": 2,
25
+ "color": "#ca8a04",
26
+ "description": "Learning outcome partially achieved; remedial learning needed"
27
+ },
28
+ {
29
+ "id": "below-basic",
30
+ "name": "Below Basic",
31
+ "nameNe": "आधारभूतभन्दा कम",
32
+ "points": 1,
33
+ "color": "#dc2626",
34
+ "description": "Learning outcome not achieved; remedial learning needed"
35
+ }
36
+ ],
37
+ "gradingBoundary": {
38
+ "name": "Nepal CDC G4-5 Proficiency Scale (1-4)",
39
+ "description": "CDC Student Evaluation Guidelines 2083 formative proficiency scale. Percentage bands assume CDC formula: (sum of 1-4 ratings) / (4 × outcomes) × 100.",
40
+ "source": "CDC Student Evaluation Guidelines 2083, Table 2",
41
+ "boundaries": [
42
+ {
43
+ "id": "advanced",
44
+ "grade": "Advanced",
45
+ "minPercentage": 75,
46
+ "maxPercentage": 100,
47
+ "color": "#059669",
48
+ "description": "Avg rating ≈ 3–4 (उच्च / Advanced)"
49
+ },
50
+ {
51
+ "id": "proficient",
52
+ "grade": "Proficient",
53
+ "minPercentage": 50,
54
+ "maxPercentage": 74,
55
+ "color": "#2563eb",
56
+ "description": "Avg rating ≈ 2–3 (दक्ष / Proficient)"
57
+ },
58
+ {
59
+ "id": "basic",
60
+ "grade": "Basic",
61
+ "minPercentage": 25,
62
+ "maxPercentage": 49,
63
+ "color": "#ca8a04",
64
+ "description": "Avg rating ≈ 1–2 (आधारभूत / Basic)"
65
+ },
66
+ {
67
+ "id": "below-basic",
68
+ "grade": "Below Basic",
69
+ "minPercentage": 0,
70
+ "maxPercentage": 24,
71
+ "color": "#dc2626",
72
+ "description": "Avg rating ≈ 1 (आधारभूतभन्दा कम / Below Basic)"
73
+ }
74
+ ]
75
+ }
76
+ }