@studious-lms/server 1.13.0 → 1.15.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.
- package/.dockerignore +28 -0
- package/.env.example +5 -0
- package/.github/workflows/deploy.yml +123 -0
- package/Dockerfile +54 -0
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/instrument.js +3 -3
- package/dist/instrument.js.map +1 -1
- package/dist/lib/config/cors.d.ts.map +1 -1
- package/dist/lib/config/cors.js +31 -11
- package/dist/lib/config/cors.js.map +1 -1
- package/dist/lib/config/env.d.ts +17 -0
- package/dist/lib/config/env.d.ts.map +1 -1
- package/dist/lib/config/env.js +8 -2
- package/dist/lib/config/env.js.map +1 -1
- package/dist/lib/googleCloudStorage.d.ts +10 -0
- package/dist/lib/googleCloudStorage.d.ts.map +1 -1
- package/dist/lib/googleCloudStorage.js +22 -2
- package/dist/lib/googleCloudStorage.js.map +1 -1
- package/dist/lib/inferDocumentFormat.d.ts +10 -0
- package/dist/lib/inferDocumentFormat.d.ts.map +1 -0
- package/dist/lib/inferDocumentFormat.js +48 -0
- package/dist/lib/inferDocumentFormat.js.map +1 -0
- package/dist/lib/legal.d.ts +3 -0
- package/dist/lib/legal.d.ts.map +1 -0
- package/dist/lib/legal.js +6 -0
- package/dist/lib/legal.js.map +1 -0
- package/dist/lib/prisma.d.ts +104 -5
- package/dist/lib/prisma.d.ts.map +1 -1
- package/dist/lib/prisma.js +33 -2
- package/dist/lib/prisma.js.map +1 -1
- package/dist/models/agenda.d.ts +20 -20
- package/dist/models/announcement.d.ts +211 -101
- package/dist/models/announcement.d.ts.map +1 -1
- package/dist/models/assignment.d.ts +560 -362
- package/dist/models/assignment.d.ts.map +1 -1
- package/dist/models/attendance.d.ts +197 -71
- package/dist/models/attendance.d.ts.map +1 -1
- package/dist/models/auth.d.ts +356 -114
- package/dist/models/auth.d.ts.map +1 -1
- package/dist/models/auth.js +4 -2
- package/dist/models/auth.js.map +1 -1
- package/dist/models/class.d.ts +327 -201
- package/dist/models/class.d.ts.map +1 -1
- package/dist/models/class.js +2 -2
- package/dist/models/class.js.map +1 -1
- package/dist/models/cloudStorage.d.ts +146 -56
- package/dist/models/cloudStorage.d.ts.map +1 -1
- package/dist/models/comment.d.ts +262 -110
- package/dist/models/comment.d.ts.map +1 -1
- package/dist/models/conversation.d.ts +206 -80
- package/dist/models/conversation.d.ts.map +1 -1
- package/dist/models/department.d.ts +196 -70
- package/dist/models/department.d.ts.map +1 -1
- package/dist/models/event.d.ts +305 -141
- package/dist/models/event.d.ts.map +1 -1
- package/dist/models/file.d.ts +422 -272
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/folder.d.ts +433 -181
- package/dist/models/folder.d.ts.map +1 -1
- package/dist/models/labChat.d.ts +205 -79
- package/dist/models/labChat.d.ts.map +1 -1
- package/dist/models/marketing.d.ts +79 -38
- package/dist/models/marketing.d.ts.map +1 -1
- package/dist/models/marketing.js +12 -4
- package/dist/models/marketing.js.map +1 -1
- package/dist/models/message.d.ts +97 -43
- package/dist/models/message.d.ts.map +1 -1
- package/dist/models/newtonChat.d.ts +84 -30
- package/dist/models/newtonChat.d.ts.map +1 -1
- package/dist/models/notification.d.ts +57 -21
- package/dist/models/notification.d.ts.map +1 -1
- package/dist/models/school.d.ts +349 -133
- package/dist/models/school.d.ts.map +1 -1
- package/dist/models/section.d.ts +216 -72
- package/dist/models/section.d.ts.map +1 -1
- package/dist/models/tag.d.ts +156 -48
- package/dist/models/tag.d.ts.map +1 -1
- package/dist/models/user.d.ts +82 -28
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/worksheet.d.ts +1032 -423
- package/dist/models/worksheet.d.ts.map +1 -1
- package/dist/models/worksheet.js +8 -2
- package/dist/models/worksheet.js.map +1 -1
- package/dist/pipelines/aiLabChat.d.ts +7 -9
- package/dist/pipelines/aiLabChat.d.ts.map +1 -1
- package/dist/pipelines/aiLabChat.js +194 -125
- package/dist/pipelines/aiLabChat.js.map +1 -1
- package/dist/pipelines/aiLabChatContract.d.ts +233 -389
- package/dist/pipelines/aiLabChatContract.d.ts.map +1 -1
- package/dist/pipelines/aiLabChatContract.js +54 -70
- package/dist/pipelines/aiLabChatContract.js.map +1 -1
- package/dist/pipelines/aiNewtonChat.d.ts.map +1 -1
- package/dist/pipelines/aiNewtonChat.js +41 -41
- package/dist/pipelines/aiNewtonChat.js.map +1 -1
- package/dist/pipelines/gradeWorksheet.d.ts +8 -8
- package/dist/pipelines/labChatPrompt.d.ts +18 -11
- package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
- package/dist/pipelines/labChatPrompt.js +93 -75
- package/dist/pipelines/labChatPrompt.js.map +1 -1
- package/dist/pipelines/pdfToWorksheet.d.ts +1 -1
- package/dist/routers/_app.d.ts +2601 -2151
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/_app.js +4 -2
- package/dist/routers/_app.js.map +1 -1
- package/dist/routers/admin.d.ts +13 -13
- package/dist/routers/agenda.d.ts +18 -18
- package/dist/routers/announcement.d.ts +60 -60
- package/dist/routers/assignment.d.ts +393 -383
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/attendance.d.ts +10 -10
- package/dist/routers/auth.d.ts +4 -2
- package/dist/routers/auth.d.ts.map +1 -1
- package/dist/routers/auth.js +15 -2
- package/dist/routers/auth.js.map +1 -1
- package/dist/routers/class.d.ts +157 -153
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/comment.d.ts +18 -18
- package/dist/routers/conversation.d.ts +11 -11
- package/dist/routers/department.d.ts +34 -34
- package/dist/routers/discussion.d.ts +68 -56
- package/dist/routers/discussion.d.ts.map +1 -1
- package/dist/routers/discussion.js +6 -2
- package/dist/routers/discussion.js.map +1 -1
- package/dist/routers/embedding.d.ts +73 -0
- package/dist/routers/embedding.d.ts.map +1 -0
- package/dist/routers/embedding.js +151 -0
- package/dist/routers/embedding.js.map +1 -0
- package/dist/routers/event.d.ts +57 -55
- package/dist/routers/event.d.ts.map +1 -1
- package/dist/routers/file.d.ts +14 -14
- package/dist/routers/folder.d.ts +38 -38
- package/dist/routers/labChat.d.ts +16 -16
- package/dist/routers/marketing.d.ts +1 -14
- package/dist/routers/marketing.d.ts.map +1 -1
- package/dist/routers/message.d.ts +13 -13
- package/dist/routers/newtonChat.d.ts +4 -4
- package/dist/routers/notifications.d.ts +5 -5
- package/dist/routers/permissions.d.ts +14 -14
- package/dist/routers/school.d.ts +59 -55
- package/dist/routers/school.d.ts.map +1 -1
- package/dist/routers/search.d.ts +22 -1
- package/dist/routers/search.d.ts.map +1 -1
- package/dist/routers/search.js +9 -3
- package/dist/routers/search.js.map +1 -1
- package/dist/routers/section.d.ts +4 -4
- package/dist/routers/studentProgress.d.ts +1 -1
- package/dist/routers/tag.d.ts +7 -7
- package/dist/routers/user.d.ts +99 -10
- package/dist/routers/user.d.ts.map +1 -1
- package/dist/routers/user.js +19 -2
- package/dist/routers/user.js.map +1 -1
- package/dist/routers/worksheet.d.ts +93 -55
- package/dist/routers/worksheet.d.ts.map +1 -1
- package/dist/routers/worksheet.js +26 -2
- package/dist/routers/worksheet.js.map +1 -1
- package/dist/routes/aiStream.d.ts +2 -0
- package/dist/routes/aiStream.d.ts.map +1 -0
- package/dist/routes/aiStream.js +726 -0
- package/dist/routes/aiStream.js.map +1 -0
- package/dist/seedDatabase.d.ts +3 -1
- package/dist/seedDatabase.d.ts.map +1 -1
- package/dist/seedDatabase.js +6 -6
- package/dist/seedDatabase.js.map +1 -1
- package/dist/services/adminInstitution.d.ts +8 -8
- package/dist/services/adminRunJob.d.ts +4 -4
- package/dist/services/agenda.d.ts +18 -18
- package/dist/services/aiChatStream.d.ts +88 -0
- package/dist/services/aiChatStream.d.ts.map +1 -0
- package/dist/services/aiChatStream.js +254 -0
- package/dist/services/aiChatStream.js.map +1 -0
- package/dist/services/aiModifierTools.d.ts +16 -0
- package/dist/services/aiModifierTools.d.ts.map +1 -0
- package/dist/services/aiModifierTools.js +274 -0
- package/dist/services/aiModifierTools.js.map +1 -0
- package/dist/services/aiProposalTools.d.ts +32 -0
- package/dist/services/aiProposalTools.d.ts.map +1 -0
- package/dist/services/aiProposalTools.js +207 -0
- package/dist/services/aiProposalTools.js.map +1 -0
- package/dist/services/aiStream.d.ts +22 -0
- package/dist/services/aiStream.d.ts.map +1 -0
- package/dist/services/aiStream.js +142 -0
- package/dist/services/aiStream.js.map +1 -0
- package/dist/services/aiTools.d.ts +16 -0
- package/dist/services/aiTools.d.ts.map +1 -0
- package/dist/services/aiTools.js +271 -0
- package/dist/services/aiTools.js.map +1 -0
- package/dist/services/announcement.d.ts +42 -42
- package/dist/services/announcement.d.ts.map +1 -1
- package/dist/services/announcement.js +7 -2
- package/dist/services/announcement.js.map +1 -1
- package/dist/services/assignment.d.ts +355 -345
- package/dist/services/assignment.d.ts.map +1 -1
- package/dist/services/assignment.js +30 -9
- package/dist/services/assignment.js.map +1 -1
- package/dist/services/attendance.d.ts +10 -10
- package/dist/services/auth.d.ts +4 -2
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +13 -4
- package/dist/services/auth.js.map +1 -1
- package/dist/services/class.d.ts +146 -142
- package/dist/services/class.d.ts.map +1 -1
- package/dist/services/class.js +24 -4
- package/dist/services/class.js.map +1 -1
- package/dist/services/comment.d.ts +18 -18
- package/dist/services/conversation.d.ts +11 -11
- package/dist/services/department.d.ts +33 -33
- package/dist/services/discussion.d.ts +58 -58
- package/dist/services/discussion.d.ts.map +1 -1
- package/dist/services/discussion.js +15 -8
- package/dist/services/discussion.js.map +1 -1
- package/dist/services/discussionSummary.d.ts +21 -0
- package/dist/services/discussionSummary.d.ts.map +1 -0
- package/dist/services/discussionSummary.js +179 -0
- package/dist/services/discussionSummary.js.map +1 -0
- package/dist/services/embedding.d.ts +85 -0
- package/dist/services/embedding.d.ts.map +1 -0
- package/dist/services/embedding.js +372 -0
- package/dist/services/embedding.js.map +1 -0
- package/dist/services/event.d.ts +55 -53
- package/dist/services/event.d.ts.map +1 -1
- package/dist/services/file.d.ts +28 -28
- package/dist/services/folder.d.ts +36 -36
- package/dist/services/folder.d.ts.map +1 -1
- package/dist/services/folder.js +32 -2
- package/dist/services/folder.js.map +1 -1
- package/dist/services/labChat.d.ts +16 -16
- package/dist/services/marketing.d.ts +2 -15
- package/dist/services/marketing.d.ts.map +1 -1
- package/dist/services/marketing.js +5 -5
- package/dist/services/marketing.js.map +1 -1
- package/dist/services/message.d.ts +11 -11
- package/dist/services/message.d.ts.map +1 -1
- package/dist/services/message.js +2 -2
- package/dist/services/message.js.map +1 -1
- package/dist/services/newtonChat.d.ts +4 -4
- package/dist/services/notification.d.ts +5 -5
- package/dist/services/notification.d.ts.map +1 -1
- package/dist/services/openaiDocumentGen.d.ts +37 -0
- package/dist/services/openaiDocumentGen.d.ts.map +1 -0
- package/dist/services/openaiDocumentGen.js +262 -0
- package/dist/services/openaiDocumentGen.js.map +1 -0
- package/dist/services/permissions.d.ts +14 -14
- package/dist/services/school.d.ts +54 -50
- package/dist/services/school.d.ts.map +1 -1
- package/dist/services/search.d.ts +13 -1
- package/dist/services/search.d.ts.map +1 -1
- package/dist/services/search.js +145 -2
- package/dist/services/search.js.map +1 -1
- package/dist/services/section.d.ts +3 -3
- package/dist/services/tag.d.ts +4 -4
- package/dist/services/user.d.ts +4 -4
- package/dist/services/user.d.ts.map +1 -1
- package/dist/services/user.js +10 -15
- package/dist/services/user.js.map +1 -1
- package/dist/services/userPrivacy.d.ts +86 -0
- package/dist/services/userPrivacy.d.ts.map +1 -0
- package/dist/services/userPrivacy.js +184 -0
- package/dist/services/userPrivacy.js.map +1 -0
- package/dist/services/worksheet.d.ts +86 -57
- package/dist/services/worksheet.d.ts.map +1 -1
- package/dist/services/worksheet.js +57 -5
- package/dist/services/worksheet.js.map +1 -1
- package/dist/utils/email.d.ts.map +1 -1
- package/dist/utils/email.js +7 -3
- package/dist/utils/email.js.map +1 -1
- package/dist/utils/streamBroadcast.d.ts +11 -0
- package/dist/utils/streamBroadcast.d.ts.map +1 -0
- package/dist/utils/streamBroadcast.js +32 -0
- package/dist/utils/streamBroadcast.js.map +1 -0
- package/dist/workers/connection.d.ts +15 -0
- package/dist/workers/connection.d.ts.map +1 -1
- package/dist/workers/connection.js +20 -2
- package/dist/workers/connection.js.map +1 -1
- package/dist/workers/index.js +4 -2
- package/dist/workers/index.js.map +1 -1
- package/dist/workers/processors/createRunJobWorker.d.ts.map +1 -1
- package/dist/workers/processors/createRunJobWorker.js +31 -8
- package/dist/workers/processors/createRunJobWorker.js.map +1 -1
- package/dist/workers/processors/embedContent.d.ts +8 -0
- package/dist/workers/processors/embedContent.d.ts.map +1 -0
- package/dist/workers/processors/embedContent.js +67 -0
- package/dist/workers/processors/embedContent.js.map +1 -0
- package/dist/workers/queues.d.ts +6 -0
- package/dist/workers/queues.d.ts.map +1 -1
- package/dist/workers/queues.js +5 -3
- package/dist/workers/queues.js.map +1 -1
- package/package.json +5 -1
- package/prisma/migrations/20260609215135_init/migration.sql +1412 -0
- package/prisma/migrations/20260610130000_add_worksheet_tags/migration.sql +13 -0
- package/prisma/migrations/20260610140000_expand_embedding_source_types/migration.sql +4 -0
- package/prisma/migrations/20260611120000_add_user_terms_acceptance/migration.sql +3 -0
- package/prisma/schema.prisma +44 -7
- package/src/index.ts +4 -0
- package/src/instrument.ts +1 -1
- package/src/lib/config/cors.ts +32 -9
- package/src/lib/config/env.ts +6 -0
- package/src/lib/googleCloudStorage.ts +21 -0
- package/src/lib/inferDocumentFormat.ts +58 -0
- package/src/lib/legal.ts +2 -0
- package/src/lib/prisma.ts +40 -1
- package/src/models/auth.ts +4 -0
- package/src/models/class.ts +3 -2
- package/src/models/marketing.ts +10 -2
- package/src/models/worksheet.ts +5 -2
- package/src/pipelines/aiLabChat.ts +245 -146
- package/src/pipelines/aiLabChatContract.ts +59 -69
- package/src/pipelines/aiNewtonChat.ts +46 -43
- package/src/pipelines/labChatPrompt.ts +115 -90
- package/src/routers/_app.ts +2 -0
- package/src/routers/auth.ts +13 -0
- package/src/routers/discussion.ts +7 -0
- package/src/routers/embedding.ts +164 -0
- package/src/routers/search.ts +10 -1
- package/src/routers/user.ts +26 -0
- package/src/routers/worksheet.ts +27 -0
- package/src/routes/aiStream.ts +827 -0
- package/src/seedDatabase.ts +4 -4
- package/src/services/aiChatStream.ts +341 -0
- package/src/services/aiModifierTools.ts +341 -0
- package/src/services/aiProposalTools.ts +274 -0
- package/src/services/aiStream.ts +175 -0
- package/src/services/aiTools.ts +290 -0
- package/src/services/announcement.ts +7 -0
- package/src/services/assignment.ts +31 -7
- package/src/services/auth.ts +14 -2
- package/src/services/class.ts +27 -2
- package/src/services/discussion.ts +22 -8
- package/src/services/discussionSummary.ts +226 -0
- package/src/services/embedding.ts +446 -0
- package/src/services/folder.ts +31 -0
- package/src/services/marketing.ts +3 -3
- package/src/services/message.ts +2 -2
- package/src/services/openaiDocumentGen.ts +319 -0
- package/src/services/search.ts +163 -1
- package/src/services/user.ts +9 -17
- package/src/services/userPrivacy.ts +196 -0
- package/src/services/worksheet.ts +77 -3
- package/src/utils/email.ts +5 -1
- package/src/utils/streamBroadcast.ts +48 -0
- package/src/workers/connection.ts +19 -0
- package/src/workers/index.ts +2 -0
- package/src/workers/processors/createRunJobWorker.ts +32 -6
- package/src/workers/processors/embedContent.ts +86 -0
- package/src/workers/queues.ts +5 -1
- package/tests/helpers/registerInput.ts +20 -0
- package/tests/integration/globalSetup.ts +10 -18
- package/tests/integration/routers/auth.test.ts +13 -18
- package/tests/unit/lib/inferDocumentFormat.test.ts +33 -0
- package/tests/unit/pipelines/aiLabChatContract.test.ts +38 -21
- package/tests/unit/pipelines/labChatPrompt.test.ts +23 -36
- package/tests/unit/services/aiChatStream.test.ts +92 -0
- package/tests/unit/services/openaiDocumentGen.test.ts +65 -0
- package/prisma/migrations/20250807062924_init/migration.sql +0 -436
- package/prisma/migrations/20250919063704_init2/migration.sql +0 -24
- package/prisma/migrations/20250920143543_add_profile_fields/migration.sql +0 -15
- package/prisma/migrations/20250922165147_add_chat_models/migration.sql +0 -68
- package/prisma/migrations/20250922165314_add_chat_roles/migration.sql +0 -5
- package/prisma/migrations/20250922171242_refactor_notification_system/migration.sql +0 -20
- package/prisma/migrations/20250922172208_add_mentions_system/migration.sql +0 -21
- package/prisma/migrations/20250925072732_add_lab_chat_system/migration.sql +0 -25
- package/prisma/migrations/20251020151505_add_upload_tracking_fields/migration.sql +0 -57
- package/prisma/migrations/20251109122857_annuoncements_comments/migration.sql +0 -30
- package/prisma/migrations/20251109135555_reactions_announcements_comments/migration.sql +0 -35
- package/prisma/migrations/20260410124000_add_submission_recommendation_state/migration.sql +0 -14
- package/prisma/migrations/20260415103500_add_session_type/migration.sql +0 -33
- package/prisma/migrations/20260415133000_add_ai_usage_logs/migration.sql +0 -19
- package/prisma/migrations/20260417083000_add_conversation_member_hidden_at/migration.sql +0 -2
- package/prisma/migrations/20260502230500_assignment_submission_comments/migration.sql +0 -60
- package/prisma/migrations/20260504071500_school_memberships/migration.sql +0 -81
- package/prisma/migrations/20260506162500_consolidate_run_job_and_unify_job_status/migration.sql +0 -166
- package/prisma/migrations/20260509220000_institution_overhaul/migration.sql +0 -184
- package/prisma/migrations/20260510170000_add_folder_permissions/migration.sql +0 -93
- package/prisma/migrations/20260510183000_add_discussions/migration.sql +0 -151
- /package/.github/workflows/{npm.yml → npm-publish.yml} +0 -0
package/dist/seedDatabase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seedDatabase.js","sources":["seedDatabase.ts"],"sourceRoot":"/","sourcesContent":["import { prisma } from \"./lib/prisma.js\";\nimport { hash } from \"bcryptjs\";\nimport { logger } from \"./utils/logger.js\";\nimport { ensureAIUserExists, getAIUserId } from \"./utils/aiUser.js\";\nimport {\n AssignmentType,\n ConversationRole,\n ConversationType,\n DiscussionType,\n FolderScope,\n JobStatus,\n PermissionLevel,\n PermissionPrincipalType,\n ReactionType,\n SchoolMembershipRole,\n SchoolMembershipStatus,\n UploadStatus,\n WorksheetQuestionType,\n} from \"@prisma/client\";\n\n// -----------------------------------------------------------------------------\n// Clear\n// -----------------------------------------------------------------------------\n\nexport async function clearDatabase() {\n logger.info(\"Clearing database\");\n\n // Top-of-the-graph children first.\n await prisma.aiUsageLog.deleteMany();\n await prisma.notification.deleteMany();\n\n // Worksheet + question progress (referenced by submissions).\n await prisma.studentQuestionProgress.deleteMany();\n await prisma.studentWorksheetResponse.deleteMany();\n await prisma.worksheetQuestion.deleteMany();\n await prisma.worksheet.deleteMany();\n\n // Reactions and reads (reference announcements/comments/discussions).\n await prisma.reaction.deleteMany();\n await prisma.discussionRead.deleteMany();\n\n // Discussion tree.\n await prisma.discussionReply.deleteMany();\n await prisma.discussion.deleteMany();\n await prisma.discussionTag.deleteMany();\n\n // Comments after their reactions are gone.\n await prisma.comment.deleteMany();\n\n // Newton + Lab chats sit on conversations + submissions.\n await prisma.newtonChat.deleteMany();\n await prisma.labChat.deleteMany();\n\n // Conversation graph.\n await prisma.mention.deleteMany();\n await prisma.message.deleteMany();\n await prisma.conversationMember.deleteMany();\n await prisma.conversation.deleteMany();\n\n // Submissions / assignments / announcements / events.\n await prisma.submission.deleteMany();\n await prisma.assignment.deleteMany();\n await prisma.announcement.deleteMany();\n await prisma.attendance.deleteMany();\n await prisma.event.deleteMany();\n\n // RunJob is referenced by worksheets / messages / progress, all cleared above.\n await prisma.runJob.deleteMany();\n\n // Class scaffolding.\n await prisma.section.deleteMany();\n await prisma.markScheme.deleteMany();\n await prisma.gradingBoundary.deleteMany();\n\n // Permissions live on folders; clear before folders.\n await prisma.permission.deleteMany();\n\n // Folders + files. Files reference folders/assignments/etc. so flush both.\n await prisma.file.deleteMany();\n await prisma.folder.deleteMany();\n\n // Classes (need to be gone before departments + tags they reference).\n await prisma.class.deleteMany();\n\n // School scaffolding.\n await prisma.tag.deleteMany();\n await prisma.department.deleteMany();\n await prisma.schoolInvite.deleteMany();\n await prisma.schoolMembership.deleteMany();\n\n // Sessions + profiles.\n await prisma.session.deleteMany();\n await prisma.userProfile.deleteMany();\n\n // Users.\n await prisma.user.deleteMany();\n\n // Schools (cascades remaining school-scoped rows).\n await prisma.school.deleteMany();\n\n // Marketing forms.\n await prisma.schoolDevelopementProgram.deleteMany();\n await prisma.earlyAccessRequest.deleteMany();\n}\n\n// -----------------------------------------------------------------------------\n// Tiny helpers\n// -----------------------------------------------------------------------------\n\nfunction getDiceBearAvatar(seed: string): string {\n return `https://api.dicebear.com/7.x/avataaars/svg?seed=${encodeURIComponent(seed)}`;\n}\n\nfunction pick<T>(arr: T[]): T {\n return arr[Math.floor(Math.random() * arr.length)];\n}\n\n/**\n * Run async work in capped batches. Supabase session-mode poolers cap clients\n * very low (often ≤15), so unbounded `Promise.all` over a list will trip\n * `MaxClientsInSessionMode`. Keep this small.\n */\nasync function runInBatches<T, R>(\n items: T[],\n fn: (item: T, index: number) => Promise<R>,\n batchSize = 4,\n delayMs = 50\n): Promise<R[]> {\n const results: R[] = [];\n for (let i = 0; i < items.length; i += batchSize) {\n const slice = items.slice(i, i + batchSize);\n const slot = await Promise.all(slice.map((item, j) => fn(item, i + j)));\n results.push(...slot);\n if (i + batchSize < items.length && delayMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return results;\n}\n\nfunction daysFromNow(days: number, base: Date = new Date()): Date {\n return new Date(base.getTime() + days * 24 * 60 * 60 * 1000);\n}\n\nfunction hoursFromNow(hours: number, base: Date = new Date()): Date {\n return new Date(base.getTime() + hours * 60 * 60 * 1000);\n}\n\nexport async function createUser(email: string, password: string, username: string) {\n const hashedPassword = await hash(password, 10);\n return prisma.user.create({\n data: { email, password: hashedPassword, username, verified: true },\n });\n}\n\nexport async function addNotification(userId: string, title: string, content: string) {\n return prisma.notification.create({\n data: {\n receiverId: userId,\n title,\n content,\n },\n });\n}\n\n/**\n * Create a fake \"uploaded\" file record. We don't actually push bytes anywhere —\n * this is just enough to make attachments render in the UI.\n */\nasync function createFakeFile(opts: {\n name: string;\n type?: string;\n size?: number;\n userId?: string;\n folderId?: string;\n assignmentId?: string;\n submissionId?: string;\n annotationId?: string;\n messageId?: string;\n announcementId?: string;\n discussionId?: string;\n discussionReplyId?: string;\n classDraftId?: string;\n}) {\n const type = opts.type ?? guessMime(opts.name);\n const size = opts.size ?? Math.floor(50_000 + Math.random() * 950_000);\n return prisma.file.create({\n data: {\n name: opts.name,\n path: `seed/${crypto.randomUUID()}-${opts.name}`,\n type,\n size,\n uploadStatus: UploadStatus.COMPLETED,\n uploadedAt: new Date(),\n ...(opts.userId && { user: { connect: { id: opts.userId } } }),\n ...(opts.folderId && { folder: { connect: { id: opts.folderId } } }),\n ...(opts.assignmentId && { assignment: { connect: { id: opts.assignmentId } } }),\n ...(opts.submissionId && { submission: { connect: { id: opts.submissionId } } }),\n ...(opts.annotationId && { annotations: { connect: { id: opts.annotationId } } }),\n ...(opts.messageId && { message: { connect: { id: opts.messageId } } }),\n ...(opts.announcementId && { announcement: { connect: { id: opts.announcementId } } }),\n ...(opts.discussionId && { discussion: { connect: { id: opts.discussionId } } }),\n ...(opts.discussionReplyId && {\n discussionReply: { connect: { id: opts.discussionReplyId } },\n }),\n ...(opts.classDraftId && { classDraft: { connect: { id: opts.classDraftId } } }),\n },\n });\n}\n\nfunction guessMime(name: string): string {\n const ext = name.split(\".\").pop()?.toLowerCase();\n switch (ext) {\n case \"pdf\":\n return \"application/pdf\";\n case \"png\":\n return \"image/png\";\n case \"jpg\":\n case \"jpeg\":\n return \"image/jpeg\";\n case \"gif\":\n return \"image/gif\";\n case \"webp\":\n return \"image/webp\";\n case \"docx\":\n return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n case \"xlsx\":\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n case \"pptx\":\n return \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n case \"md\":\n return \"text/markdown\";\n case \"txt\":\n return \"text/plain\";\n case \"csv\":\n return \"text/csv\";\n case \"mp4\":\n return \"video/mp4\";\n case \"mov\":\n return \"video/quicktime\";\n default:\n return \"application/octet-stream\";\n }\n}\n\n// -----------------------------------------------------------------------------\n// Rubric + boundary structures (kept as JSON strings to match `structured`)\n// -----------------------------------------------------------------------------\n\nconst fourLevelRubricLevels = [\n { id: \"excellent\", name: \"Excellent\", points: 4, color: \"#10B981\" },\n { id: \"proficient\", name: \"Proficient\", points: 3, color: \"#3B82F6\" },\n { id: \"developing\", name: \"Developing\", points: 2, color: \"#F59E0B\" },\n { id: \"beginning\", name: \"Beginning\", points: 1, color: \"#EF4444\" },\n] as const;\n\nfunction buildRubric(name: string, criteria: { id: string; title: string; description: string }[]) {\n return JSON.stringify({\n name,\n criteria: criteria.map((c) => ({\n ...c,\n levels: fourLevelRubricLevels.map((l) => ({\n ...l,\n description: `${l.name} performance on ${c.title.toLowerCase()}.`,\n })),\n })),\n });\n}\n\nconst apGradingScale = JSON.stringify({\n name: \"AP Grading Scale\",\n boundaries: [\n { id: \"a-plus\", grade: \"A+\", minPercentage: 97, maxPercentage: 100, color: \"#059669\" },\n { id: \"a\", grade: \"A\", minPercentage: 93, maxPercentage: 96, color: \"#10B981\" },\n { id: \"a-minus\", grade: \"A-\", minPercentage: 90, maxPercentage: 92, color: \"#34D399\" },\n { id: \"b-plus\", grade: \"B+\", minPercentage: 87, maxPercentage: 89, color: \"#1D4ED8\" },\n { id: \"b\", grade: \"B\", minPercentage: 83, maxPercentage: 86, color: \"#3B82F6\" },\n { id: \"b-minus\", grade: \"B-\", minPercentage: 80, maxPercentage: 82, color: \"#60A5FA\" },\n { id: \"c-plus\", grade: \"C+\", minPercentage: 77, maxPercentage: 79, color: \"#D97706\" },\n { id: \"c\", grade: \"C\", minPercentage: 73, maxPercentage: 76, color: \"#F59E0B\" },\n { id: \"c-minus\", grade: \"C-\", minPercentage: 70, maxPercentage: 72, color: \"#FBBF24\" },\n { id: \"d\", grade: \"D\", minPercentage: 60, maxPercentage: 69, color: \"#F87171\" },\n { id: \"f\", grade: \"F\", minPercentage: 0, maxPercentage: 59, color: \"#EF4444\" },\n ],\n});\n\n// -----------------------------------------------------------------------------\n// Seed\n// -----------------------------------------------------------------------------\n\nexport const seedDatabase = async () => {\n await clearDatabase();\n logger.info(\"Cleared database\");\n\n // The AI assistant uses a fixed user id (`AI_ASSISTANT`) and is the sender\n // on every AI-generated message. clearDatabase wipes it along with everyone\n // else, so recreate it before we start producing AI-authored content.\n await ensureAIUserExists();\n const aiUserId = getAIUserId();\n\n const now = new Date();\n\n // ---------------------------------------------------------------------\n // 1. School + logo\n // ---------------------------------------------------------------------\n const schoolLogo = await prisma.file.create({\n data: {\n name: \"school_logo.png\",\n path: \"logos/riverside.png\",\n type: \"image/png\",\n size: 18_240,\n uploadStatus: UploadStatus.COMPLETED,\n },\n });\n\n const school = await prisma.school.create({\n data: {\n name: \"Riverside High School\",\n description: \"A demo school used to showcase Studious end-to-end.\",\n subdomain: \"riverside\",\n logoId: schoolLogo.id,\n },\n });\n\n // ---------------------------------------------------------------------\n // 2. Departments\n // ---------------------------------------------------------------------\n const [scienceDept, mathDept, englishDept] = await Promise.all([\n prisma.department.create({\n data: {\n schoolId: school.id,\n name: \"Science\",\n description: \"Biology, Chemistry, Physics, Environmental Science.\",\n color: \"#10B981\",\n },\n }),\n prisma.department.create({\n data: {\n schoolId: school.id,\n name: \"Mathematics\",\n description: \"Algebra, Geometry, Calculus, Statistics.\",\n color: \"#3B82F6\",\n },\n }),\n prisma.department.create({\n data: {\n schoolId: school.id,\n name: \"English\",\n description: \"Literature, Composition, Creative Writing.\",\n color: \"#8B5CF6\",\n },\n }),\n ]);\n\n // ---------------------------------------------------------------------\n // 3. Tags (school-wide + department-scoped)\n // ---------------------------------------------------------------------\n const [tagAP, tagHonors, tagNeedsSupport, tagGifted, tagSeniorClass] = await Promise.all([\n prisma.tag.create({\n data: { schoolId: school.id, name: \"AP\", color: \"#DC2626\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Honors\", color: \"#7C3AED\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Needs Support\", color: \"#F59E0B\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Gifted & Talented\", color: \"#0EA5E9\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Class of 2026\", color: \"#10B981\" },\n }),\n ]);\n\n // ---------------------------------------------------------------------\n // 4. Users — teachers + admin + students\n // ---------------------------------------------------------------------\n const admin = await createUser(\"admin@riverside.edu\", \"admin123\", \"principal.rivera\");\n\n const teachers = await runInBatches(\n [\n { email: \"sarah.johnson@riverside.edu\", username: \"sarah.johnson\" },\n { email: \"michael.chen@riverside.edu\", username: \"michael.chen\" },\n { email: \"emma.davis@riverside.edu\", username: \"emma.davis\" },\n ],\n (t) => createUser(t.email, \"demo123\", t.username)\n );\n\n const studentSeeds: { email: string; username: string; name: string }[] = [\n { email: \"alex.martinez@student.riverside.edu\", username: \"alex.martinez\", name: \"Alex Martinez\" },\n { email: \"sophia.williams@student.riverside.edu\", username: \"sophia.williams\", name: \"Sophia Williams\" },\n { email: \"james.brown@student.riverside.edu\", username: \"james.brown\", name: \"James Brown\" },\n { email: \"olivia.taylor@student.riverside.edu\", username: \"olivia.taylor\", name: \"Olivia Taylor\" },\n { email: \"ethan.anderson@student.riverside.edu\", username: \"ethan.anderson\", name: \"Ethan Anderson\" },\n { email: \"ava.thomas@student.riverside.edu\", username: \"ava.thomas\", name: \"Ava Thomas\" },\n { email: \"noah.jackson@student.riverside.edu\", username: \"noah.jackson\", name: \"Noah Jackson\" },\n { email: \"isabella.white@student.riverside.edu\", username: \"isabella.white\", name: \"Isabella White\" },\n { email: \"liam.harris@student.riverside.edu\", username: \"liam.harris\", name: \"Liam Harris\" },\n { email: \"mia.clark@student.riverside.edu\", username: \"mia.clark\", name: \"Mia Clark\" },\n { email: \"lucas.lewis@student.riverside.edu\", username: \"lucas.lewis\", name: \"Lucas Lewis\" },\n { email: \"charlotte.walker@student.riverside.edu\", username: \"charlotte.walker\", name: \"Charlotte Walker\" },\n ];\n\n const students = await runInBatches(studentSeeds, (s) =>\n createUser(s.email, \"student123\", s.username)\n );\n\n // Attach everyone to the school via the canonical schoolId pointer.\n await prisma.user.updateMany({\n where: { id: { in: [admin.id, ...teachers.map((t) => t.id), ...students.map((s) => s.id)] } },\n data: { schoolId: school.id },\n });\n\n // ---------------------------------------------------------------------\n // 5. SchoolMemberships\n // ---------------------------------------------------------------------\n await prisma.schoolMembership.createMany({\n data: [\n {\n schoolId: school.id,\n userId: admin.id,\n role: SchoolMembershipRole.ADMIN,\n status: SchoolMembershipStatus.ACTIVE,\n },\n ...teachers.map((t) => ({\n schoolId: school.id,\n userId: t.id,\n role: SchoolMembershipRole.TEACHER,\n status: SchoolMembershipStatus.ACTIVE,\n })),\n ...students.map((s) => ({\n schoolId: school.id,\n userId: s.id,\n role: SchoolMembershipRole.STUDENT,\n status: SchoolMembershipStatus.ACTIVE,\n })),\n ],\n });\n\n // A couple of pending invites for the demo.\n await Promise.all([\n prisma.schoolInvite.create({\n data: {\n schoolId: school.id,\n invitedById: admin.id,\n email: \"new.teacher@riverside.edu\",\n role: SchoolMembershipRole.TEACHER,\n token: `invite-${crypto.randomUUID()}`,\n expiresAt: daysFromNow(7, now),\n },\n }),\n prisma.schoolInvite.create({\n data: {\n schoolId: school.id,\n invitedById: admin.id,\n email: \"transfer.student@riverside.edu\",\n role: SchoolMembershipRole.STUDENT,\n token: `invite-${crypto.randomUUID()}`,\n expiresAt: daysFromNow(14, now),\n },\n }),\n ]);\n\n // Hook teachers into their departments + add a few student tags.\n await prisma.user.update({\n where: { id: teachers[0].id },\n data: { departments: { connect: { id: scienceDept.id } } },\n });\n await prisma.user.update({\n where: { id: teachers[1].id },\n data: { departments: { connect: { id: mathDept.id } } },\n });\n await prisma.user.update({\n where: { id: teachers[2].id },\n data: { departments: { connect: { id: englishDept.id } } },\n });\n\n // Tag a slice of students for the demo.\n await Promise.all([\n prisma.user.update({\n where: { id: students[0].id },\n data: { tags: { connect: [{ id: tagAP.id }, { id: tagSeniorClass.id }] } },\n }),\n prisma.user.update({\n where: { id: students[1].id },\n data: {\n tags: { connect: [{ id: tagAP.id }, { id: tagGifted.id }, { id: tagSeniorClass.id }] },\n },\n }),\n prisma.user.update({\n where: { id: students[4].id },\n data: { tags: { connect: [{ id: tagNeedsSupport.id }] } },\n }),\n prisma.user.update({\n where: { id: students[6].id },\n data: { tags: { connect: [{ id: tagHonors.id }] } },\n }),\n ]);\n\n // ---------------------------------------------------------------------\n // 6. Profiles. createMany is cheap and avoids 16 parallel inserts.\n // ---------------------------------------------------------------------\n await prisma.userProfile.createMany({\n data: [\n {\n userId: admin.id,\n displayName: \"Principal Rivera\",\n bio: \"School administrator, oversees academic operations at Riverside High.\",\n location: \"Riverside, CA\",\n profilePicture: getDiceBearAvatar(admin.username),\n },\n {\n userId: teachers[0].id,\n displayName: \"Dr. Sarah Johnson\",\n bio: \"Biology teacher with 15 years of experience.\",\n location: \"Riverside, CA\",\n website: \"https://sarahjohnson-bio.example\",\n profilePicture: getDiceBearAvatar(teachers[0].username),\n },\n {\n userId: teachers[1].id,\n displayName: \"Mr. Michael Chen\",\n bio: \"Math department head. AP Calculus + Statistics.\",\n location: \"Riverside, CA\",\n profilePicture: getDiceBearAvatar(teachers[1].username),\n },\n {\n userId: teachers[2].id,\n displayName: \"Ms. Emma Davis\",\n bio: \"English Literature. Loves creative writing.\",\n location: \"Riverside, CA\",\n profilePicture: getDiceBearAvatar(teachers[2].username),\n },\n ...students.map((student, i) => ({\n userId: student.id,\n displayName: studentSeeds[i].name,\n bio: i < 6 ? \"Grade 11 student at Riverside High.\" : undefined,\n profilePicture: getDiceBearAvatar(student.username),\n })),\n ],\n });\n\n // ---------------------------------------------------------------------\n // 7. Storage roots (school + personal). Class roots get created with classes.\n // ---------------------------------------------------------------------\n const schoolStorageRoot = await prisma.folder.create({\n data: {\n name: \"Cloud Storage\",\n scope: FolderScope.SCHOOL_STORAGE,\n color: \"#3B82F6\",\n schoolStorage: { connect: { id: school.id } },\n },\n });\n\n // Personal storage for each teacher.\n const personalRoots = await Promise.all(\n [admin, ...teachers].map((u) =>\n prisma.folder.create({\n data: {\n name: \"My Files\",\n scope: FolderScope.PERSONAL,\n color: \"#6366F1\",\n personalOwner: { connect: { id: u.id } },\n },\n })\n )\n );\n\n // Some files in the school-wide storage.\n await createFakeFile({\n name: \"Faculty Handbook 2026.pdf\",\n userId: admin.id,\n folderId: schoolStorageRoot.id,\n size: 1_240_000,\n });\n await createFakeFile({\n name: \"Emergency Procedures.pdf\",\n userId: admin.id,\n folderId: schoolStorageRoot.id,\n size: 520_000,\n });\n await createFakeFile({\n name: \"Bell Schedule (2026-2027).pdf\",\n userId: admin.id,\n folderId: schoolStorageRoot.id,\n size: 84_000,\n });\n\n // A personal subfolder + files for Sarah.\n const sarahLessonPlans = await prisma.folder.create({\n data: {\n name: \"Lesson Plans\",\n scope: FolderScope.PERSONAL,\n color: \"#10B981\",\n parentFolder: { connect: { id: personalRoots[1].id } },\n },\n });\n await Promise.all([\n createFakeFile({\n name: \"Cell Membrane Lecture.pptx\",\n userId: teachers[0].id,\n folderId: sarahLessonPlans.id,\n }),\n createFakeFile({\n name: \"Mitosis vs Meiosis.md\",\n userId: teachers[0].id,\n folderId: sarahLessonPlans.id,\n }),\n createFakeFile({\n name: \"Photosynthesis Diagram.png\",\n userId: teachers[0].id,\n folderId: sarahLessonPlans.id,\n }),\n ]);\n\n // Sharing the faculty handbook with all teachers via a permission grant.\n await prisma.permission.create({\n data: {\n folderId: schoolStorageRoot.id,\n principalType: PermissionPrincipalType.SCHOOL,\n schoolId: school.id,\n level: PermissionLevel.READ,\n grantedById: admin.id,\n },\n });\n\n // ---------------------------------------------------------------------\n // 8. Classes + their class-storage roots\n // ---------------------------------------------------------------------\n const biologyClass = await prisma.class.create({\n data: {\n name: \"AP Biology\",\n subject: \"Biology\",\n section: \"Period 3\",\n color: \"#10B981\",\n syllabus: \"Molecular biology, genetics, evolution, ecology.\",\n schoolId: school.id,\n departmentId: scienceDept.id,\n tags: { connect: [{ id: tagAP.id }] },\n teachers: { connect: { id: teachers[0].id } },\n students: { connect: students.slice(0, 8).map((s) => ({ id: s.id })) },\n },\n });\n\n const mathClass = await prisma.class.create({\n data: {\n name: \"AP Calculus BC\",\n subject: \"Mathematics\",\n section: \"Period 2\",\n color: \"#3B82F6\",\n syllabus: \"Limits, derivatives, integrals, series, parametric and polar.\",\n schoolId: school.id,\n departmentId: mathDept.id,\n tags: { connect: [{ id: tagAP.id }, { id: tagHonors.id }] },\n teachers: { connect: { id: teachers[1].id } },\n students: { connect: students.slice(4, 12).map((s) => ({ id: s.id })) },\n },\n });\n\n const englishClass = await prisma.class.create({\n data: {\n name: \"English Literature\",\n subject: \"English\",\n section: \"Period 1\",\n color: \"#8B5CF6\",\n syllabus: \"Close reading, rhetorical analysis, and academic writing.\",\n schoolId: school.id,\n departmentId: englishDept.id,\n tags: { connect: [{ id: tagHonors.id }] },\n teachers: { connect: { id: teachers[2].id } },\n students: { connect: students.slice(0, 10).map((s) => ({ id: s.id })) },\n },\n });\n\n const classes = [biologyClass, mathClass, englishClass];\n\n // Per-class storage root + a few subfolders + draft attachments.\n const classFolders = await Promise.all(\n classes.map((c) =>\n prisma.folder.create({\n data: {\n name: \"Class Files\",\n scope: FolderScope.CLASS,\n color: c.color ?? \"#3B82F6\",\n class: { connect: { id: c.id } },\n },\n })\n )\n );\n\n // Biology subfolders + files.\n const bioHandouts = await prisma.folder.create({\n data: {\n name: \"Handouts\",\n scope: FolderScope.CLASS,\n color: \"#10B981\",\n parentFolder: { connect: { id: classFolders[0].id } },\n },\n });\n const bioLabs = await prisma.folder.create({\n data: {\n name: \"Labs\",\n scope: FolderScope.CLASS,\n color: \"#0EA5E9\",\n parentFolder: { connect: { id: classFolders[0].id } },\n },\n });\n await Promise.all([\n createFakeFile({\n name: \"Cell Structure Reading.pdf\",\n userId: teachers[0].id,\n folderId: bioHandouts.id,\n size: 740_000,\n }),\n createFakeFile({\n name: \"Microscope Setup.pdf\",\n userId: teachers[0].id,\n folderId: bioLabs.id,\n }),\n createFakeFile({\n name: \"Onion Cell Slides.jpg\",\n userId: teachers[0].id,\n folderId: bioLabs.id,\n }),\n createFakeFile({\n name: \"Syllabus AP Bio 2026.pdf\",\n userId: teachers[0].id,\n folderId: classFolders[0].id,\n }),\n ]);\n\n // Math subfolders + files.\n const mathPracticeFolder = await prisma.folder.create({\n data: {\n name: \"Practice Problems\",\n scope: FolderScope.CLASS,\n color: \"#6366F1\",\n parentFolder: { connect: { id: classFolders[1].id } },\n },\n });\n await Promise.all([\n createFakeFile({\n name: \"AP Calc BC Syllabus.pdf\",\n userId: teachers[1].id,\n folderId: classFolders[1].id,\n }),\n createFakeFile({\n name: \"Integration Cheatsheet.pdf\",\n userId: teachers[1].id,\n folderId: mathPracticeFolder.id,\n }),\n createFakeFile({\n name: \"Past AP Exam 2024.pdf\",\n userId: teachers[1].id,\n folderId: mathPracticeFolder.id,\n size: 2_100_000,\n }),\n ]);\n\n // English class folder file.\n await createFakeFile({\n name: \"Reading List Q1.pdf\",\n userId: teachers[2].id,\n folderId: classFolders[2].id,\n });\n\n // A class draft file (attached to class drafts list, not yet on an assignment).\n await createFakeFile({\n name: \"Draft - Genetics Worksheet.docx\",\n userId: teachers[0].id,\n classDraftId: biologyClass.id,\n });\n\n // Grant the science department READ on Bio class folder.\n await prisma.permission.create({\n data: {\n folderId: classFolders[0].id,\n principalType: PermissionPrincipalType.DEPARTMENT,\n departmentId: scienceDept.id,\n level: PermissionLevel.READ,\n grantedById: teachers[0].id,\n },\n });\n\n // ---------------------------------------------------------------------\n // 9. Sections inside each class\n // ---------------------------------------------------------------------\n const bioSections = await Promise.all(\n [\n { name: \"Unit 1: Chemistry of Life\", color: \"#EF4444\" },\n { name: \"Unit 2: Cell Structure\", color: \"#F97316\" },\n { name: \"Unit 3: Cellular Processes\", color: \"#EAB308\" },\n { name: \"Unit 4: Genetics\", color: \"#22C55E\" },\n ].map((s, i) =>\n prisma.section.create({\n data: { name: s.name, color: s.color, order: i + 1, classId: biologyClass.id },\n })\n )\n );\n\n const mathSections = await Promise.all(\n [\n { name: \"Limits and Continuity\", color: \"#3B82F6\" },\n { name: \"Derivatives\", color: \"#6366F1\" },\n { name: \"Integrals\", color: \"#8B5CF6\" },\n { name: \"Series\", color: \"#A855F7\" },\n ].map((s, i) =>\n prisma.section.create({\n data: { name: s.name, color: s.color, order: i + 1, classId: mathClass.id },\n })\n )\n );\n\n await Promise.all(\n [\n { name: \"Short Stories\", color: \"#8B5CF6\" },\n { name: \"Poetry\", color: \"#EC4899\" },\n { name: \"Novels\", color: \"#A855F7\" },\n ].map((s, i) =>\n prisma.section.create({\n data: { name: s.name, color: s.color, order: i + 1, classId: englishClass.id },\n })\n )\n );\n\n // ---------------------------------------------------------------------\n // 10. MarkSchemes + GradingBoundaries\n // Mix of class-bound (legacy) and department-level (template) rows.\n // ---------------------------------------------------------------------\n const bioRubricStructured = buildRubric(\"Biology Assessment Rubric\", [\n { id: \"scientific-accuracy\", title: \"Scientific Accuracy\", description: \"Correct use of scientific terminology and concepts\" },\n { id: \"analysis\", title: \"Analysis & Reasoning\", description: \"Quality of analysis and logical reasoning\" },\n { id: \"communication\", title: \"Communication\", description: \"Clear writing and proper formatting\" },\n { id: \"evidence\", title: \"Evidence & Examples\", description: \"Use of relevant examples and evidence\" },\n ]);\n const mathRubricStructured = buildRubric(\"Mathematics Assessment Rubric\", [\n { id: \"accuracy\", title: \"Mathematical Accuracy\", description: \"Correct calculations and procedures\" },\n { id: \"strategy\", title: \"Problem-Solving Strategy\", description: \"Appropriate method selection and setup\" },\n { id: \"work-shown\", title: \"Work Shown\", description: \"Clear step-by-step work and explanations\" },\n { id: \"final-answer\", title: \"Final Answer\", description: \"Correct final answer with proper units/notation\" },\n ]);\n\n const [bioMarkScheme, mathMarkScheme] = await Promise.all([\n prisma.markScheme.create({\n data: {\n classId: biologyClass.id,\n name: \"Biology Assessment Rubric\",\n structured: bioRubricStructured,\n tags: { connect: [{ id: tagAP.id }] },\n },\n }),\n prisma.markScheme.create({\n data: {\n classId: mathClass.id,\n name: \"Mathematics Assessment Rubric\",\n structured: mathRubricStructured,\n tags: { connect: [{ id: tagAP.id }] },\n },\n }),\n // Department-level templates so the rubric library has content too.\n prisma.markScheme.create({\n data: {\n departmentId: mathDept.id,\n name: \"Math Department Standard Rubric\",\n structured: mathRubricStructured,\n },\n }),\n prisma.gradingBoundary.create({\n data: {\n departmentId: mathDept.id,\n name: \"AP Grading Scale (Template)\",\n structured: apGradingScale,\n },\n }),\n ]);\n\n const mathGradingBoundary = await prisma.gradingBoundary.create({\n data: {\n classId: mathClass.id,\n name: \"AP Calculus BC Grading Scale\",\n structured: apGradingScale,\n },\n });\n\n // ---------------------------------------------------------------------\n // 11. Assignments + attachments\n // ---------------------------------------------------------------------\n const assignmentSpecs: {\n title: string;\n instructions: string;\n dueDate: Date;\n teacherId: string;\n classId: string;\n sectionId?: string;\n type: AssignmentType;\n maxGrade: number;\n weight: number;\n markSchemeId?: string;\n gradingBoundaryId?: string;\n graded?: boolean;\n acceptFiles?: boolean;\n acceptExtendedResponse?: boolean;\n acceptWorksheet?: boolean;\n gradeWithAI?: boolean;\n attachments?: string[];\n }[] = [\n {\n title: \"Cell Structure Lab Report\",\n instructions:\n \"Complete the microscopy lab and write a detailed report on your observations of plant and animal cells. Include labeled diagrams.\",\n dueDate: daysFromNow(7, now),\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[1].id,\n type: AssignmentType.LAB,\n maxGrade: 100,\n weight: 1.5,\n markSchemeId: bioMarkScheme.id,\n acceptFiles: true,\n acceptExtendedResponse: true,\n attachments: [\"Lab Report Template.docx\", \"Rubric.pdf\"],\n },\n {\n title: \"Genetics Problem Set\",\n instructions:\n \"Solve problems on pages 234-237. Show all work including Punnett squares and probability.\",\n dueDate: daysFromNow(1, now),\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[3].id,\n type: AssignmentType.HOMEWORK,\n maxGrade: 50,\n weight: 1.0,\n markSchemeId: bioMarkScheme.id,\n acceptFiles: true,\n acceptWorksheet: true,\n attachments: [\"Genetics Worksheet.pdf\"],\n },\n {\n title: \"Evolution Essay\",\n instructions:\n \"Write a 5-page essay on the evidence for evolution. Use at least 5 scientific sources and cite properly.\",\n dueDate: daysFromNow(30, now),\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n type: AssignmentType.ESSAY,\n maxGrade: 100,\n weight: 2.0,\n markSchemeId: bioMarkScheme.id,\n acceptFiles: true,\n acceptExtendedResponse: true,\n gradeWithAI: true,\n attachments: [\"Essay Guidelines.pdf\"],\n },\n {\n title: \"Limits and Continuity Test\",\n instructions: \"Comprehensive test covering limits, continuity, and the Intermediate Value Theorem.\",\n dueDate: daysFromNow(-7, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: AssignmentType.TEST,\n maxGrade: 100,\n weight: 2.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n graded: true,\n acceptFiles: true,\n attachments: [\"Practice Test.pdf\", \"Formula Sheet.pdf\"],\n },\n {\n title: \"Limits Practice Problems\",\n instructions: \"Complete problems 1-25 on page 89.\",\n dueDate: daysFromNow(-1, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: AssignmentType.HOMEWORK,\n maxGrade: 25,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptWorksheet: true,\n },\n {\n title: \"Derivative Applications Quiz\",\n instructions: \"Quiz covering related rates, optimization, and curve sketching.\",\n dueDate: daysFromNow(5, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[1].id,\n type: AssignmentType.QUIZ,\n maxGrade: 75,\n weight: 1.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptWorksheet: true,\n gradeWithAI: true,\n },\n {\n title: \"Integration Techniques Homework\",\n instructions: \"Complete problems 1-30 on pages 156-158.\",\n dueDate: daysFromNow(3, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[2].id,\n type: AssignmentType.HOMEWORK,\n maxGrade: 30,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptFiles: true,\n },\n {\n title: \"Calculus Project: Real-World Applications\",\n instructions: \"Choose a real-world scenario and create a presentation showing how calculus is used.\",\n dueDate: daysFromNow(21, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n type: AssignmentType.PROJECT,\n maxGrade: 150,\n weight: 3.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptFiles: true,\n acceptExtendedResponse: true,\n attachments: [\"Project Rubric.pdf\", \"Past Examples.pdf\"],\n },\n {\n title: \"Macbeth — Themes Essay\",\n instructions: \"Choose a theme and trace its development across the play. 4-6 pages, MLA format.\",\n dueDate: daysFromNow(10, now),\n teacherId: teachers[2].id,\n classId: englishClass.id,\n type: AssignmentType.ESSAY,\n maxGrade: 100,\n weight: 2.0,\n acceptFiles: true,\n acceptExtendedResponse: true,\n gradeWithAI: true,\n attachments: [\"Macbeth Annotation Guide.pdf\"],\n },\n ];\n\n const assignments = await runInBatches(assignmentSpecs, (spec) =>\n prisma.assignment.create({\n data: {\n title: spec.title,\n instructions: spec.instructions,\n dueDate: spec.dueDate,\n teacherId: spec.teacherId,\n classId: spec.classId,\n sectionId: spec.sectionId,\n type: spec.type,\n maxGrade: spec.maxGrade,\n weight: spec.weight,\n markSchemeId: spec.markSchemeId,\n gradingBoundaryId: spec.gradingBoundaryId,\n graded: spec.graded ?? false,\n acceptFiles: spec.acceptFiles ?? false,\n acceptExtendedResponse: spec.acceptExtendedResponse ?? false,\n acceptWorksheet: spec.acceptWorksheet ?? false,\n gradeWithAI: spec.gradeWithAI ?? false,\n aiPolicyLevel: spec.gradeWithAI ? 2 : 0,\n },\n })\n );\n\n // Now attach files to assignments (after the assignment IDs exist).\n for (let i = 0; i < assignments.length; i++) {\n const spec = assignmentSpecs[i];\n if (!spec.attachments?.length) continue;\n await Promise.all(\n spec.attachments.map((name) =>\n createFakeFile({\n name,\n userId: spec.teacherId,\n assignmentId: assignments[i].id,\n })\n )\n );\n }\n\n // ---------------------------------------------------------------------\n // 12. Worksheets — attach the worksheet-style assignments to a worksheet\n // ---------------------------------------------------------------------\n const geneticsAssignment = assignments[1];\n const geneticsWorksheet = await prisma.worksheet.create({\n data: {\n classId: biologyClass.id,\n name: \"Genetics Problem Set\",\n status: JobStatus.COMPLETED,\n assignments: { connect: { id: geneticsAssignment.id } },\n },\n });\n\n const geneticsQuestions = await runInBatches(\n [\n {\n type: WorksheetQuestionType.MULTIPLE_CHOICE,\n question: \"A heterozygous tall pea plant (Tt) is crossed with a homozygous short pea plant (tt). What percentage of offspring will be tall?\",\n answer: \"50%\",\n options: { choices: [\"0%\", \"25%\", \"50%\", \"75%\", \"100%\"] },\n points: 5,\n order: 1,\n },\n {\n type: WorksheetQuestionType.SHORT_ANSWER,\n question: \"Define genotype and phenotype, and give an example of each.\",\n answer: \"Genotype is the genetic makeup (e.g. Tt). Phenotype is the observable trait (e.g. tall).\",\n points: 10,\n order: 2,\n },\n {\n type: WorksheetQuestionType.TRUE_FALSE,\n question: \"A Punnett square predicts the probability of genotypes in offspring.\",\n answer: \"true\",\n options: { choices: [\"true\", \"false\"] },\n points: 5,\n order: 3,\n },\n {\n type: WorksheetQuestionType.LONG_ANSWER,\n question: \"Explain how independent assortment contributes to genetic variation.\",\n answer:\n \"During meiosis, homologous chromosome pairs sort independently into gametes, producing many different combinations of alleles.\",\n points: 15,\n order: 4,\n },\n {\n type: WorksheetQuestionType.MATH_EXPRESSION,\n question: \"If two heterozygous parents (Aa x Aa) produce 100 offspring, how many are expected to be homozygous recessive?\",\n answer: \"25\",\n points: 5,\n order: 5,\n },\n ],\n (q) =>\n prisma.worksheetQuestion.create({\n data: { worksheetId: geneticsWorksheet.id, ...q },\n })\n );\n\n // A separate worksheet for the limits homework.\n const limitsAssignment = assignments[4];\n const limitsWorksheet = await prisma.worksheet.create({\n data: {\n classId: mathClass.id,\n name: \"Limits Practice\",\n status: JobStatus.COMPLETED,\n assignments: { connect: { id: limitsAssignment.id } },\n },\n });\n\n await runInBatches(\n [\n {\n type: WorksheetQuestionType.MATH_EXPRESSION,\n question: \"Evaluate lim_{x→2} (x^2 - 4) / (x - 2).\",\n answer: \"4\",\n points: 10,\n order: 1,\n },\n {\n type: WorksheetQuestionType.MATH_EXPRESSION,\n question: \"Evaluate lim_{x→0} sin(x) / x.\",\n answer: \"1\",\n points: 10,\n order: 2,\n },\n {\n type: WorksheetQuestionType.SHORT_ANSWER,\n question: \"State the Intermediate Value Theorem.\",\n answer:\n \"If f is continuous on [a, b] and N lies between f(a) and f(b), then there exists c in (a, b) with f(c) = N.\",\n points: 5,\n order: 3,\n },\n ],\n (q) =>\n prisma.worksheetQuestion.create({\n data: { worksheetId: limitsWorksheet.id, ...q },\n })\n );\n\n // ---------------------------------------------------------------------\n // 13. Submissions (+ attachments, worksheet responses, annotations)\n // ---------------------------------------------------------------------\n const generateGrade = (maxGrade: number, studentIndex: number, type: AssignmentType): number => {\n const base = [0.92, 0.88, 0.85, 0.9, 0.82, 0.87, 0.91, 0.84, 0.89, 0.86, 0.83, 0.88];\n let multiplier = base[studentIndex % base.length];\n if (type === AssignmentType.TEST) multiplier -= 0.05;\n if (type === AssignmentType.QUIZ) multiplier -= 0.02;\n if (type === AssignmentType.HOMEWORK) multiplier += 0.03;\n const variance = (Math.random() - 0.5) * 0.1;\n return Math.max(0, Math.min(maxGrade, Math.round(maxGrade * (multiplier + variance))));\n };\n\n const teacherFeedback = (pct: number): string => {\n if (pct >= 90) return pick([\n \"Excellent work! Your understanding of the concepts is clear.\",\n \"Outstanding performance. Keep it up.\",\n \"Impressive analysis and reasoning throughout.\",\n ]);\n if (pct >= 80) return pick([\n \"Good work overall. A few small slips but nothing structural.\",\n \"Solid understanding — watch calculation accuracy on tricky cases.\",\n \"Nice job. Review the highlighted sections.\",\n ]);\n if (pct >= 70) return pick([\n \"Adequate work — please revisit the concepts we covered in class.\",\n \"Shows basic understanding but needs more practice.\",\n \"Fair attempt. Come to office hours and we'll work through it.\",\n ]);\n return pick([\n \"Below expectations. Let's schedule a meeting to talk through it.\",\n \"Struggling with the key concepts — we'll get you there.\",\n \"Needs significant improvement. Try the supplementary set.\",\n ]);\n };\n\n const studentsInBio = students.slice(0, 8);\n const studentsInMath = students.slice(4, 12);\n const studentsInEnglish = students.slice(0, 10);\n\n const studentsForClass = (classId: string) => {\n if (classId === biologyClass.id) return studentsInBio;\n if (classId === mathClass.id) return studentsInMath;\n return studentsInEnglish;\n };\n\n // Submissions: small batches + a tiny delay between them.\n const submissionRecords: { id: string; assignmentId: string; studentId: string; submitted: boolean; isGraded: boolean }[] = [];\n\n for (const assignment of assignments) {\n const enrolled = studentsForClass(assignment.classId);\n const max = assignment.maxGrade ?? 100;\n const overdue = assignment.dueDate < now;\n\n const created = await runInBatches(enrolled, (student) => {\n const studentIndex = students.findIndex((s) => s.id === student.id);\n const isSubmitted = overdue ? Math.random() > 0.05 : Math.random() > 0.4;\n const isGraded = overdue && isSubmitted && (assignment.graded || Math.random() > 0.4);\n const grade = generateGrade(max, studentIndex, assignment.type);\n const submittedAt = isSubmitted\n ? new Date(assignment.dueDate.getTime() - Math.random() * 48 * 60 * 60 * 1000)\n : null;\n\n return prisma.submission.create({\n data: {\n assignmentId: assignment.id,\n studentId: student.id,\n submitted: isSubmitted,\n submittedAt,\n gradeReceived: isGraded ? grade : null,\n teacherComments: isGraded ? teacherFeedback((grade / max) * 100) : null,\n returned: isGraded,\n extendedResponse:\n assignment.acceptExtendedResponse && isSubmitted\n ? sampleExtendedResponse(assignment.title)\n : null,\n rubricState: isGraded\n ? JSON.stringify({\n criteria: [\n { name: \"Accuracy\", score: Math.round(grade * 0.4), maxScore: Math.round(max * 0.4) },\n { name: \"Reasoning\", score: Math.round(grade * 0.3), maxScore: Math.round(max * 0.3) },\n { name: \"Communication\", score: Math.round(grade * 0.2), maxScore: Math.round(max * 0.2) },\n { name: \"Evidence\", score: Math.round(grade * 0.1), maxScore: Math.round(max * 0.1) },\n ],\n })\n : null,\n },\n });\n });\n\n for (const sub of created) {\n submissionRecords.push({\n id: sub.id,\n assignmentId: assignment.id,\n studentId: sub.studentId,\n submitted: sub.submitted ?? false,\n isGraded: Boolean(sub.returned),\n });\n }\n }\n logger.info(`Created ${submissionRecords.length} submissions`);\n\n // Attach a fake \"submitted document\" to submitted submissions, and a\n // teacher \"annotations\" PDF on graded ones.\n const submittedOnes = submissionRecords.filter((s) => s.submitted);\n await runInBatches(submittedOnes, async (sub) => {\n await createFakeFile({\n name: pick([\"Submission.pdf\", \"Final Draft.docx\", \"Worked Solutions.pdf\", \"Notes.png\"]),\n userId: sub.studentId,\n submissionId: sub.id,\n });\n if (sub.isGraded && Math.random() > 0.4) {\n await createFakeFile({\n name: \"Teacher Annotations.pdf\",\n userId: assignmentTeacherFor(sub.assignmentId, assignments),\n annotationId: sub.id,\n });\n }\n });\n\n // Worksheet responses for the genetics worksheet (one per Bio student that\n // submitted). Sequential to keep the pool happy.\n for (const student of studentsInBio) {\n const submission = submissionRecords.find(\n (s) => s.assignmentId === geneticsAssignment.id && s.studentId === student.id\n );\n if (!submission?.submitted) continue;\n const response = await prisma.studentWorksheetResponse.create({\n data: {\n studentId: student.id,\n worksheetId: geneticsWorksheet.id,\n submissionId: submission.id,\n submitted: true,\n submittedAt: new Date(now.getTime() - Math.random() * 24 * 60 * 60 * 1000),\n },\n });\n await runInBatches(geneticsQuestions, (q) => {\n const isCorrect = Math.random() > 0.25;\n return prisma.studentQuestionProgress.create({\n data: {\n studentId: student.id,\n questionId: q.id,\n studentWorksheetResponseId: response.id,\n response: isCorrect ? q.answer : \"I'm not sure — guessing here.\",\n isCorrect,\n points: isCorrect ? q.points : Math.floor(q.points / 2),\n feedback: isCorrect\n ? \"Nice — correct reasoning.\"\n : \"Re-read the section on Punnett squares and try again.\",\n status: JobStatus.COMPLETED,\n },\n });\n });\n }\n\n // ---------------------------------------------------------------------\n // 14. Announcements + attachments + reactions + comments\n // ---------------------------------------------------------------------\n const bioAnnouncement = await prisma.announcement.create({\n data: {\n remarks:\n \"Reminder: lab safety quiz next Tuesday. Please review the protocols from Unit 2 — there'll be a short review at the start of class.\",\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n createdAt: hoursFromNow(-24, now),\n },\n });\n await createFakeFile({\n name: \"Lab Safety Protocols.pdf\",\n userId: teachers[0].id,\n announcementId: bioAnnouncement.id,\n });\n\n const mathAnnouncement = await prisma.announcement.create({\n data: {\n remarks:\n \"Great job on the recent quiz, everyone! Class average was 87%. Solutions are attached. Office hours are Wednesday after school.\",\n teacherId: teachers[1].id,\n classId: mathClass.id,\n createdAt: hoursFromNow(-6, now),\n },\n });\n await createFakeFile({\n name: \"Quiz Solutions.pdf\",\n userId: teachers[1].id,\n announcementId: mathAnnouncement.id,\n });\n\n const englishAnnouncement = await prisma.announcement.create({\n data: {\n remarks:\n \"Parent-teacher conferences are next week. Sign-ups are in the main office. Bring questions about your Macbeth essay drafts.\",\n teacherId: teachers[2].id,\n classId: englishClass.id,\n createdAt: hoursFromNow(-12, now),\n },\n });\n\n // Reactions to announcements.\n await prisma.reaction.createMany({\n data: [\n { type: ReactionType.THUMBSUP, userId: students[0].id, announcementId: bioAnnouncement.id },\n { type: ReactionType.HEART, userId: students[1].id, announcementId: bioAnnouncement.id },\n { type: ReactionType.CELEBRATE, userId: students[4].id, announcementId: mathAnnouncement.id },\n { type: ReactionType.CELEBRATE, userId: students[5].id, announcementId: mathAnnouncement.id },\n { type: ReactionType.HAPPY, userId: students[6].id, announcementId: mathAnnouncement.id },\n ],\n });\n\n // A comment thread on the math announcement.\n const topComment = await prisma.comment.create({\n data: {\n content: \"Will the quiz solutions help with the upcoming test as well?\",\n authorId: students[4].id,\n announcementId: mathAnnouncement.id,\n },\n });\n const replyComment = await prisma.comment.create({\n data: {\n content: \"Yes — the test reuses the same concepts. Use these to self-check first.\",\n authorId: teachers[1].id,\n announcementId: mathAnnouncement.id,\n parentCommentId: topComment.id,\n },\n });\n await prisma.reaction.create({\n data: { type: ReactionType.THUMBSUP, userId: students[4].id, commentId: replyComment.id },\n });\n\n // A comment directly on an assignment (asking for clarification).\n await prisma.comment.create({\n data: {\n content: \"For question 4, are we expected to include a diagram or is text sufficient?\",\n authorId: students[1].id,\n assignmentId: assignments[1].id, // Genetics Problem Set\n },\n });\n\n // ---------------------------------------------------------------------\n // 15. Discussions (with replies, tags, reads, reactions)\n // ---------------------------------------------------------------------\n const bioTag = await prisma.discussionTag.create({\n data: { classId: biologyClass.id, name: \"Lab\", color: \"#10B981\" },\n });\n const bioTagHomework = await prisma.discussionTag.create({\n data: { classId: biologyClass.id, name: \"Homework Help\", color: \"#F59E0B\" },\n });\n const mathTagAP = await prisma.discussionTag.create({\n data: { classId: mathClass.id, name: \"AP Prep\", color: \"#DC2626\" },\n });\n\n const labQuestion = await prisma.discussion.create({\n data: {\n classId: biologyClass.id,\n authorId: students[2].id,\n title: \"What stain works best for onion cells?\",\n body: \"I tried iodine but the nuclei were hard to see. Anyone have better luck with methylene blue?\",\n type: DiscussionType.QUESTION,\n tags: { connect: [{ id: bioTag.id }, { id: bioTagHomework.id }] },\n lastActivityAt: hoursFromNow(-2, now),\n },\n });\n await createFakeFile({\n name: \"onion-cells-iodine.jpg\",\n userId: students[2].id,\n discussionId: labQuestion.id,\n });\n\n const reply1 = await prisma.discussionReply.create({\n data: {\n discussionId: labQuestion.id,\n authorId: students[5].id,\n body: \"Methylene blue is way clearer for nuclei. We used it last week.\",\n },\n });\n const reply2 = await prisma.discussionReply.create({\n data: {\n discussionId: labQuestion.id,\n authorId: teachers[0].id,\n body: \"Either works — focus on getting a thin sample. I'll bring more methylene blue tomorrow.\",\n isAcceptedAnswer: true,\n },\n });\n await prisma.reaction.createMany({\n data: [\n { type: ReactionType.THUMBSUP, userId: students[2].id, discussionReplyId: reply2.id },\n { type: ReactionType.IDEA, userId: students[1].id, discussionReplyId: reply1.id },\n ],\n });\n\n const announcementDiscussion = await prisma.discussion.create({\n data: {\n classId: mathClass.id,\n authorId: teachers[1].id,\n title: \"AP Calculus BC Mock Exam — Saturday 10am\",\n body: \"Reminder: full-length mock exam this Saturday at 10am in Room 156. Bring two pencils and a calculator.\",\n type: DiscussionType.ANNOUNCEMENT,\n isPinned: true,\n tags: { connect: [{ id: mathTagAP.id }] },\n lastActivityAt: hoursFromNow(-4, now),\n },\n });\n\n const generalDiscussion = await prisma.discussion.create({\n data: {\n classId: mathClass.id,\n authorId: students[8].id,\n title: \"Any tips for memorizing integration formulas?\",\n body: \"Flashcards aren't sticking. Curious what's worked for everyone.\",\n type: DiscussionType.DISCUSSION,\n lastActivityAt: hoursFromNow(-1, now),\n },\n });\n const genReply = await prisma.discussionReply.create({\n data: {\n discussionId: generalDiscussion.id,\n authorId: students[1].id,\n body: \"I rewrite the formulas every morning for a week. Sounds annoying but it works.\",\n },\n });\n await prisma.discussionReply.create({\n data: {\n discussionId: generalDiscussion.id,\n authorId: students[10].id,\n parentId: genReply.id,\n body: \"Going to try this — thanks!\",\n },\n });\n\n // A few discussion reads so unread counts look realistic.\n await prisma.discussionRead.createMany({\n data: [\n { userId: students[0].id, discussionId: labQuestion.id, lastReadAt: hoursFromNow(-1, now) },\n { userId: students[1].id, discussionId: labQuestion.id, lastReadAt: hoursFromNow(-3, now) },\n { userId: teachers[0].id, discussionId: labQuestion.id, lastReadAt: now },\n {\n userId: students[4].id,\n discussionId: announcementDiscussion.id,\n lastReadAt: hoursFromNow(-2, now),\n },\n ],\n });\n\n // ---------------------------------------------------------------------\n // 16. Events + attendance\n // ---------------------------------------------------------------------\n const teachingWeekStart = new Date(\"2026-10-12T08:00:00\");\n const eventsToCreate = buildWeeklyTeacherEvents(teachingWeekStart, teachers[1].id, mathClass.id);\n eventsToCreate.push(\n {\n name: \"Cell Biology Lab\",\n startTime: daysFromNow(2, now),\n endTime: hoursFromNow(2 * 24 + 1.5, now),\n location: \"Science Lab Room 204\",\n remarks: \"Bring lab notebooks and safety goggles\",\n userId: teachers[0].id,\n classId: biologyClass.id,\n color: \"#10B981\",\n },\n {\n name: \"Poetry Reading\",\n startTime: daysFromNow(7, now),\n endTime: hoursFromNow(7 * 24 + 1, now),\n location: \"Library\",\n remarks: \"Students will present their original poetry\",\n userId: teachers[2].id,\n classId: englishClass.id,\n color: \"#8B5CF6\",\n }\n );\n\n await runInBatches(eventsToCreate, (event) => prisma.event.create({ data: event }));\n logger.info(`Created ${eventsToCreate.length} events`);\n\n const attendanceDate = hoursFromNow(-24, now);\n await prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: biologyClass.id,\n present: { connect: students.slice(0, 6).map((s) => ({ id: s.id })) },\n late: { connect: [{ id: students[6].id }] },\n absent: { connect: [{ id: students[7].id }] },\n },\n });\n await prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: mathClass.id,\n present: { connect: students.slice(4, 11).map((s) => ({ id: s.id })) },\n late: { connect: [{ id: students[11].id }] },\n },\n });\n await prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: englishClass.id,\n present: { connect: students.slice(0, 9).map((s) => ({ id: s.id })) },\n absent: { connect: [{ id: students[9].id }] },\n },\n });\n\n // ---------------------------------------------------------------------\n // 17. Notifications\n // ---------------------------------------------------------------------\n await prisma.notification.createMany({\n data: [\n { receiverId: teachers[0].id, title: \"New Submission\", content: \"Alex Martinez submitted Genetics Problem Set\" },\n { receiverId: teachers[0].id, title: \"Grade Reminder\", content: \"You have 3 assignments pending grading\" },\n { receiverId: teachers[0].id, title: \"Parent Contact\", content: \"Mrs. Williams requested a meeting about Sophia's progress\" },\n { receiverId: teachers[1].id, title: \"AI Grading Ready\", content: \"Derivative Applications Quiz AI feedback is ready to review\" },\n { receiverId: teachers[1].id, title: \"New Discussion Reply\", content: \"A student replied to 'Integration tips' in AP Calculus BC\" },\n { receiverId: students[0].id, title: \"Assignment Graded\", content: \"Your Genetics Problem Set has been graded: 45/50\" },\n { receiverId: students[1].id, title: \"Assignment Graded\", content: \"Your Genetics Problem Set has been graded: 48/50\" },\n { receiverId: students[2].id, title: \"Assignment Due\", content: \"Cell Structure Lab Report is due in 3 days\" },\n { receiverId: students[3].id, title: \"Class Announcement\", content: \"New announcement in AP Biology\" },\n { receiverId: students[4].id, title: \"Worksheet Returned\", content: \"Mr. Chen returned your Limits Practice Worksheet\" },\n ],\n });\n\n // ---------------------------------------------------------------------\n // 18. Conversations / Messages / Mentions / LabChat / NewtonChat\n // ---------------------------------------------------------------------\n const labConversation = await prisma.conversation.create({\n data: {\n type: ConversationType.GROUP,\n name: \"Lab: Cell Structure Materials\",\n displayInChat: false,\n members: {\n create: [\n { userId: teachers[0].id, role: ConversationRole.ADMIN },\n { userId: aiUserId, role: ConversationRole.MEMBER },\n ],\n },\n },\n });\n\n await prisma.labChat.create({\n data: {\n title: \"Cell Structure Teaching Materials\",\n classId: biologyClass.id,\n conversationId: labConversation.id,\n createdById: teachers[0].id,\n context: JSON.stringify({\n subject: \"Biology\",\n topic: \"Cell Structure and Function\",\n gradeLevel: \"11th Grade AP\",\n difficulty: \"Advanced\",\n objectives: [\n \"Understand prokaryotic vs eukaryotic cell structures\",\n \"Identify organelles and their functions\",\n \"Compare plant and animal cells\",\n ],\n standards: [\"NGSS HS-LS1-1\", \"NGSS HS-LS1-2\"],\n duration: \"2 weeks\",\n assessmentType: \"Lab report and quiz\",\n }),\n },\n });\n\n // A short Lab Chat exchange so the AI surface has content.\n await prisma.message.create({\n data: {\n content:\n \"Can you draft a 10-question multiple choice quiz on organelle functions for my AP Bio students?\",\n senderId: teachers[0].id,\n conversationId: labConversation.id,\n createdAt: hoursFromNow(-3, now),\n },\n });\n await prisma.message.create({\n data: {\n content:\n \"Sure! Here are 10 AP-level MCQs on organelle functions, with explanations on each. Want me to also generate a 4-criterion rubric for grading short-answer follow-ups?\",\n senderId: aiUserId,\n conversationId: labConversation.id,\n createdAt: hoursFromNow(-2.95, now),\n status: JobStatus.COMPLETED,\n },\n });\n\n // A teacher-to-teacher group chat.\n const deptChat = await prisma.conversation.create({\n data: {\n type: ConversationType.GROUP,\n name: \"Faculty Lounge\",\n displayInChat: true,\n members: {\n create: [\n { userId: teachers[0].id, role: ConversationRole.MEMBER },\n { userId: teachers[1].id, role: ConversationRole.ADMIN },\n { userId: teachers[2].id, role: ConversationRole.MEMBER },\n { userId: admin.id, role: ConversationRole.MEMBER },\n ],\n },\n },\n });\n\n // DMs.\n const dmChenEthan = await prisma.conversation.create({\n data: {\n type: ConversationType.DM,\n members: {\n create: [\n { userId: teachers[1].id },\n { userId: students[4].id },\n ],\n },\n },\n });\n\n const dmChenSophia = await prisma.conversation.create({\n data: {\n type: ConversationType.DM,\n members: {\n create: [\n { userId: teachers[1].id },\n { userId: students[1].id },\n ],\n },\n },\n });\n\n type SeedMessage = {\n content: string;\n senderId: string;\n conversationId: string;\n createdAt: Date;\n mentions?: string[];\n attachmentNames?: string[];\n };\n\n const messages: SeedMessage[] = [\n {\n content: \"Quick reminder about the faculty meeting tomorrow at noon.\",\n senderId: teachers[1].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T07:30:00\"),\n },\n {\n content: \"Thanks for the heads up. Are we discussing the new curriculum standards?\",\n senderId: teachers[0].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T07:45:00\"),\n },\n {\n content:\n \"Yes, plus coordination for parent-teacher conferences. I'll bring the draft agenda.\",\n senderId: teachers[1].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T08:00:00\"),\n attachmentNames: [\"Draft Agenda.pdf\"],\n },\n {\n content: \"Perfect — several parents are already asking about progress in my classes.\",\n senderId: teachers[2].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T08:15:00\"),\n },\n {\n content: \"@sarah.johnson can you bring the Bio progress reports too?\",\n senderId: teachers[1].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T08:20:00\"),\n mentions: [teachers[0].id],\n },\n\n // Ethan struggling student DM\n {\n content:\n \"Hi Mr. Chen, I'm really struggling with the integration problems. Could you explain substitution again?\",\n senderId: students[4].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T15:30:00\"),\n },\n {\n content:\n \"Of course Ethan — glad you reached out. Which problem are you stuck on?\",\n senderId: teachers[1].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T15:45:00\"),\n },\n {\n content: \"Problem #7 from the homework.\",\n senderId: students[4].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T16:00:00\"),\n attachmentNames: [\"IMG_4421.jpg\"],\n },\n {\n content:\n \"For u-sub, look for a function whose derivative also appears. Try u = the inside of the parentheses.\",\n senderId: teachers[1].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T16:15:00\"),\n },\n\n // Sophia gifted student DM\n {\n content:\n \"Mr. Chen! I finished the integration homework — are there any extra challenge problems I could try?\",\n senderId: students[1].id,\n conversationId: dmChenSophia.id,\n createdAt: new Date(\"2026-10-13T19:00:00\"),\n },\n {\n content: \"Try problems 45-50 from chapter 6 — they cover integration by parts.\",\n senderId: teachers[1].id,\n conversationId: dmChenSophia.id,\n createdAt: new Date(\"2026-10-13T19:30:00\"),\n attachmentNames: [\"Chapter 6 Challenge.pdf\"],\n },\n {\n content: \"Perfect, thanks! Integration by parts looks similar to the product rule for derivatives.\",\n senderId: students[1].id,\n conversationId: dmChenSophia.id,\n createdAt: new Date(\"2026-10-13T20:00:00\"),\n },\n ];\n\n for (const msg of messages) {\n const created = await prisma.message.create({\n data: {\n content: msg.content,\n senderId: msg.senderId,\n conversationId: msg.conversationId,\n createdAt: msg.createdAt,\n },\n });\n if (msg.mentions?.length) {\n await prisma.mention.createMany({\n data: msg.mentions.map((userId) => ({ messageId: created.id, userId })),\n });\n }\n if (msg.attachmentNames?.length) {\n await Promise.all(\n msg.attachmentNames.map((name) =>\n createFakeFile({ name, userId: msg.senderId, messageId: created.id })\n )\n );\n }\n }\n\n // Newton tutor chat tied to a submission.\n const newtonSubmission = submissionRecords.find(\n (s) => s.assignmentId === limitsAssignment.id && s.submitted\n );\n if (newtonSubmission) {\n const newtonConv = await prisma.conversation.create({\n data: {\n type: ConversationType.GROUP,\n name: \"Session with Newton Tutor\",\n displayInChat: true,\n members: {\n create: [\n { userId: newtonSubmission.studentId, role: ConversationRole.MEMBER },\n { userId: aiUserId, role: ConversationRole.MEMBER },\n ],\n },\n },\n });\n await prisma.newtonChat.create({\n data: {\n submissionId: newtonSubmission.id,\n conversationId: newtonConv.id,\n title: \"Limits Practice — Newton Tutor\",\n },\n });\n await prisma.message.create({\n data: {\n content:\n \"Hi! I'm Newton, your study buddy. I can see you're working on the Limits Practice worksheet. Want to go over Question 1?\",\n senderId: aiUserId,\n conversationId: newtonConv.id,\n createdAt: now,\n status: JobStatus.COMPLETED,\n },\n });\n await prisma.message.create({\n data: {\n content: \"Yes please — I got stuck on the sin(x)/x limit.\",\n senderId: newtonSubmission.studentId,\n conversationId: newtonConv.id,\n createdAt: hoursFromNow(0.05, now),\n },\n });\n await prisma.message.create({\n data: {\n content:\n \"Great pick. Try thinking about what sin(x) looks like near 0 — what does its slope look like there? That's the key intuition behind lim_{x→0} sin(x)/x = 1.\",\n senderId: aiUserId,\n conversationId: newtonConv.id,\n createdAt: hoursFromNow(0.1, now),\n status: JobStatus.COMPLETED,\n },\n });\n }\n\n // ---------------------------------------------------------------------\n // 19. Summary\n // ---------------------------------------------------------------------\n logger.info(\"Demo database seeded.\");\n logger.info(\n `Created: 1 school, ${[admin, ...teachers].length} staff, ${students.length} students, ${classes.length} classes, ${assignments.length} assignments, ${submissionRecords.length} submissions.`\n );\n logger.info(\"Demo accounts:\");\n logger.info(\" Admin: admin@riverside.edu / admin123\");\n logger.info(\" Bio: sarah.johnson@riverside.edu / demo123\");\n logger.info(\" Math: michael.chen@riverside.edu / demo123\");\n logger.info(\" English: emma.davis@riverside.edu / demo123\");\n logger.info(\" Student: alex.martinez@student.riverside.edu / student123\");\n};\n\n// -----------------------------------------------------------------------------\n// Local helpers (small enough to keep at the bottom)\n// -----------------------------------------------------------------------------\n\nfunction assignmentTeacherFor(assignmentId: string, assignments: { id: string; teacherId: string }[]): string {\n return assignments.find((a) => a.id === assignmentId)?.teacherId ?? assignments[0].teacherId;\n}\n\nfunction sampleExtendedResponse(assignmentTitle: string): string {\n return `Response for \"${assignmentTitle}\".\\n\\nThis essay addresses the prompt by walking through the key points covered in class, supported with examples and a short reflection on what surprised me. (Demo seed text — would be student-written in production.)`;\n}\n\nfunction buildWeeklyTeacherEvents(\n weekStart: Date,\n teacherId: string,\n classId: string\n): {\n name: string;\n startTime: Date;\n endTime: Date;\n location: string;\n remarks?: string;\n userId: string;\n classId?: string;\n color: string;\n}[] {\n const dayOffset = (n: number) => daysFromNow(n, weekStart);\n const at = (offset: number, h: number, m: number) => {\n const d = dayOffset(offset);\n d.setHours(h, m, 0, 0);\n return d;\n };\n return [\n // Monday\n { name: \"AP Calculus BC\", startTime: at(0, 9, 15), endTime: at(0, 10, 5), location: \"Room 156\", remarks: \"Derivatives unit test review\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Department Head Meeting\", startTime: at(0, 10, 30), endTime: at(0, 11, 30), location: \"Conference Room A\", remarks: \"Curriculum planning\", userId: teacherId, color: \"#8B5CF6\" },\n { name: \"AP Statistics\", startTime: at(0, 13, 45), endTime: at(0, 14, 35), location: \"Room 156\", remarks: \"Hypothesis testing introduction\", userId: teacherId, color: \"#3B82F6\" },\n { name: \"Parent Conference — Williams Family\", startTime: at(0, 15, 0), endTime: at(0, 15, 30), location: \"Room 156\", remarks: \"Discuss Sophia's progress\", userId: teacherId, color: \"#F59E0B\" },\n { name: \"Math Tutoring\", startTime: at(0, 15, 45), endTime: at(0, 16, 45), location: \"Room 156\", remarks: \"Extra help for struggling students\", userId: teacherId, color: \"#10B981\" },\n // Tuesday\n { name: \"AP Calculus BC\", startTime: at(1, 9, 15), endTime: at(1, 10, 5), location: \"Room 156\", remarks: \"Derivatives unit test\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Faculty Meeting\", startTime: at(1, 12, 0), endTime: at(1, 13, 0), location: \"Main Auditorium\", userId: teacherId, color: \"#6B7280\" },\n { name: \"AP Statistics\", startTime: at(1, 13, 45), endTime: at(1, 14, 35), location: \"Room 156\", remarks: \"Hypothesis testing practice\", userId: teacherId, color: \"#3B82F6\" },\n // Wednesday\n { name: \"AP Calculus BC\", startTime: at(2, 9, 15), endTime: at(2, 10, 5), location: \"Room 156\", remarks: \"Integration introduction\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Professional Development\", startTime: at(2, 11, 0), endTime: at(2, 12, 30), location: \"Library Conference Room\", remarks: \"Tech in Math Education\", userId: teacherId, color: \"#059669\" },\n { name: \"AP Statistics\", startTime: at(2, 13, 45), endTime: at(2, 14, 35), location: \"Room 156\", remarks: \"Chi-square tests\", userId: teacherId, color: \"#3B82F6\" },\n // Thursday\n { name: \"AP Calculus BC\", startTime: at(3, 9, 15), endTime: at(3, 10, 5), location: \"Room 156\", remarks: \"Integration by substitution\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Curriculum Committee\", startTime: at(3, 11, 0), endTime: at(3, 12, 0), location: \"Principal's Office\", userId: teacherId, color: \"#8B5CF6\" },\n { name: \"AP Statistics\", startTime: at(3, 13, 45), endTime: at(3, 14, 35), location: \"Room 156\", remarks: \"ANOVA introduction\", userId: teacherId, color: \"#3B82F6\" },\n { name: \"Math Club\", startTime: at(3, 15, 45), endTime: at(3, 16, 45), location: \"Room 156\", remarks: \"Prepping for state competition\", userId: teacherId, color: \"#10B981\" },\n // Friday\n { name: \"AP Calculus BC\", startTime: at(4, 9, 15), endTime: at(4, 10, 5), location: \"Room 156\", remarks: \"Integration by parts\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"AP Statistics\", startTime: at(4, 13, 45), endTime: at(4, 14, 35), location: \"Room 156\", remarks: \"ANOVA practice\", userId: teacherId, color: \"#3B82F6\" },\n { name: \"Weekend Prep Session\", startTime: at(4, 15, 0), endTime: at(4, 17, 0), location: \"Room 156\", remarks: \"Voluntary AP exam prep\", userId: teacherId, color: \"#059669\" },\n ];\n}\n\n// -----------------------------------------------------------------------------\n// Entry point\n// -----------------------------------------------------------------------------\n\nconst isSeedScript =\n process.argv[1]?.includes(\"seedDatabase\") || process.argv.includes(\"seed\");\n\nif (isSeedScript) {\n (async () => {\n logger.info(\"Seeding database\");\n await seedDatabase();\n logger.info(\"Database seeded\");\n })();\n}\n"],"names":[],"mappings":"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","debug_id":"a764ff67-df4a-5c42-b133-d6b43f06c40e"}
|
|
1
|
+
{"version":3,"file":"seedDatabase.js","sources":["seedDatabase.ts"],"sourceRoot":"/","sourcesContent":["import { prisma } from \"./lib/prisma.js\";\nimport { hash } from \"bcryptjs\";\nimport { logger } from \"./utils/logger.js\";\nimport { ensureAIUserExists, getAIUserId } from \"./utils/aiUser.js\";\nimport {\n AssignmentType,\n ConversationRole,\n ConversationType,\n DiscussionType,\n FolderScope,\n JobStatus,\n PermissionLevel,\n PermissionPrincipalType,\n ReactionType,\n SchoolMembershipRole,\n SchoolMembershipStatus,\n UploadStatus,\n WorksheetQuestionType,\n} from \"@prisma/client\";\n\n// -----------------------------------------------------------------------------\n// Clear\n// -----------------------------------------------------------------------------\n\nexport async function clearDatabase() {\n logger.info(\"Clearing database\");\n\n // Top-of-the-graph children first.\n await prisma.aiUsageLog.deleteMany();\n await prisma.notification.deleteMany();\n\n // Worksheet + question progress (referenced by submissions).\n await prisma.studentQuestionProgress.deleteMany();\n await prisma.studentWorksheetResponse.deleteMany();\n await prisma.worksheetQuestion.deleteMany();\n await prisma.worksheet.deleteMany();\n\n // Reactions and reads (reference announcements/comments/discussions).\n await prisma.reaction.deleteMany();\n await prisma.discussionRead.deleteMany();\n\n // Discussion tree.\n await prisma.discussionReply.deleteMany();\n await prisma.discussion.deleteMany();\n await prisma.classTag.deleteMany();\n\n // Comments after their reactions are gone.\n await prisma.comment.deleteMany();\n\n // Newton + Lab chats sit on conversations + submissions.\n await prisma.newtonChat.deleteMany();\n await prisma.labChat.deleteMany();\n\n // Conversation graph.\n await prisma.mention.deleteMany();\n await prisma.message.deleteMany();\n await prisma.conversationMember.deleteMany();\n await prisma.conversation.deleteMany();\n\n // Submissions / assignments / announcements / events.\n await prisma.submission.deleteMany();\n await prisma.assignment.deleteMany();\n await prisma.announcement.deleteMany();\n await prisma.attendance.deleteMany();\n await prisma.event.deleteMany();\n\n // RunJob is referenced by worksheets / messages / progress, all cleared above.\n await prisma.runJob.deleteMany();\n\n // Class scaffolding.\n await prisma.section.deleteMany();\n await prisma.markScheme.deleteMany();\n await prisma.gradingBoundary.deleteMany();\n\n // Permissions live on folders; clear before folders.\n await prisma.permission.deleteMany();\n\n // Folders + files. Files reference folders/assignments/etc. so flush both.\n await prisma.file.deleteMany();\n await prisma.folder.deleteMany();\n\n // Classes (need to be gone before departments + tags they reference).\n await prisma.class.deleteMany();\n\n // School scaffolding.\n await prisma.tag.deleteMany();\n await prisma.department.deleteMany();\n await prisma.schoolInvite.deleteMany();\n await prisma.schoolMembership.deleteMany();\n\n // Sessions + profiles.\n await prisma.session.deleteMany();\n await prisma.userProfile.deleteMany();\n\n // Users.\n await prisma.user.deleteMany();\n\n // Schools (cascades remaining school-scoped rows).\n await prisma.school.deleteMany();\n\n // Marketing forms.\n await prisma.schoolDevelopementProgram.deleteMany();\n await prisma.earlyAccessRequest.deleteMany();\n}\n\n// -----------------------------------------------------------------------------\n// Tiny helpers\n// -----------------------------------------------------------------------------\n\nfunction getDiceBearAvatar(seed: string): string {\n return `https://api.dicebear.com/7.x/avataaars/svg?seed=${encodeURIComponent(seed)}`;\n}\n\nfunction pick<T>(arr: T[]): T {\n return arr[Math.floor(Math.random() * arr.length)];\n}\n\n/**\n * Run async work in capped batches. Supabase session-mode poolers cap clients\n * very low (often ≤15), so unbounded `Promise.all` over a list will trip\n * `MaxClientsInSessionMode`. Keep this small.\n */\nasync function runInBatches<T, R>(\n items: T[],\n fn: (item: T, index: number) => Promise<R>,\n batchSize = 4,\n delayMs = 50\n): Promise<R[]> {\n const results: R[] = [];\n for (let i = 0; i < items.length; i += batchSize) {\n const slice = items.slice(i, i + batchSize);\n const slot = await Promise.all(slice.map((item, j) => fn(item, i + j)));\n results.push(...slot);\n if (i + batchSize < items.length && delayMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return results;\n}\n\nfunction daysFromNow(days: number, base: Date = new Date()): Date {\n return new Date(base.getTime() + days * 24 * 60 * 60 * 1000);\n}\n\nfunction hoursFromNow(hours: number, base: Date = new Date()): Date {\n return new Date(base.getTime() + hours * 60 * 60 * 1000);\n}\n\nexport async function createUser(email: string, password: string, username: string) {\n const hashedPassword = await hash(password, 10);\n return prisma.user.create({\n data: { email, password: hashedPassword, username, verified: true },\n });\n}\n\nexport async function addNotification(userId: string, title: string, content: string) {\n return prisma.notification.create({\n data: {\n receiverId: userId,\n title,\n content,\n },\n });\n}\n\n/**\n * Create a fake \"uploaded\" file record. We don't actually push bytes anywhere —\n * this is just enough to make attachments render in the UI.\n */\nasync function createFakeFile(opts: {\n name: string;\n type?: string;\n size?: number;\n userId?: string;\n folderId?: string;\n assignmentId?: string;\n submissionId?: string;\n annotationId?: string;\n messageId?: string;\n announcementId?: string;\n discussionId?: string;\n discussionReplyId?: string;\n classDraftId?: string;\n}) {\n const type = opts.type ?? guessMime(opts.name);\n const size = opts.size ?? Math.floor(50_000 + Math.random() * 950_000);\n return prisma.file.create({\n data: {\n name: opts.name,\n path: `seed/${crypto.randomUUID()}-${opts.name}`,\n type,\n size,\n uploadStatus: UploadStatus.COMPLETED,\n uploadedAt: new Date(),\n ...(opts.userId && { user: { connect: { id: opts.userId } } }),\n ...(opts.folderId && { folder: { connect: { id: opts.folderId } } }),\n ...(opts.assignmentId && { assignment: { connect: { id: opts.assignmentId } } }),\n ...(opts.submissionId && { submission: { connect: { id: opts.submissionId } } }),\n ...(opts.annotationId && { annotations: { connect: { id: opts.annotationId } } }),\n ...(opts.messageId && { message: { connect: { id: opts.messageId } } }),\n ...(opts.announcementId && { announcement: { connect: { id: opts.announcementId } } }),\n ...(opts.discussionId && { discussion: { connect: { id: opts.discussionId } } }),\n ...(opts.discussionReplyId && {\n discussionReply: { connect: { id: opts.discussionReplyId } },\n }),\n ...(opts.classDraftId && { classDraft: { connect: { id: opts.classDraftId } } }),\n },\n });\n}\n\nfunction guessMime(name: string): string {\n const ext = name.split(\".\").pop()?.toLowerCase();\n switch (ext) {\n case \"pdf\":\n return \"application/pdf\";\n case \"png\":\n return \"image/png\";\n case \"jpg\":\n case \"jpeg\":\n return \"image/jpeg\";\n case \"gif\":\n return \"image/gif\";\n case \"webp\":\n return \"image/webp\";\n case \"docx\":\n return \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n case \"xlsx\":\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n case \"pptx\":\n return \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n case \"md\":\n return \"text/markdown\";\n case \"txt\":\n return \"text/plain\";\n case \"csv\":\n return \"text/csv\";\n case \"mp4\":\n return \"video/mp4\";\n case \"mov\":\n return \"video/quicktime\";\n default:\n return \"application/octet-stream\";\n }\n}\n\n// -----------------------------------------------------------------------------\n// Rubric + boundary structures (kept as JSON strings to match `structured`)\n// -----------------------------------------------------------------------------\n\nconst fourLevelRubricLevels = [\n { id: \"excellent\", name: \"Excellent\", points: 4, color: \"#10B981\" },\n { id: \"proficient\", name: \"Proficient\", points: 3, color: \"#3B82F6\" },\n { id: \"developing\", name: \"Developing\", points: 2, color: \"#F59E0B\" },\n { id: \"beginning\", name: \"Beginning\", points: 1, color: \"#EF4444\" },\n] as const;\n\nfunction buildRubric(name: string, criteria: { id: string; title: string; description: string }[]) {\n return JSON.stringify({\n name,\n criteria: criteria.map((c) => ({\n ...c,\n levels: fourLevelRubricLevels.map((l) => ({\n ...l,\n description: `${l.name} performance on ${c.title.toLowerCase()}.`,\n })),\n })),\n });\n}\n\nconst apGradingScale = JSON.stringify({\n name: \"AP Grading Scale\",\n boundaries: [\n { id: \"a-plus\", grade: \"A+\", minPercentage: 97, maxPercentage: 100, color: \"#059669\" },\n { id: \"a\", grade: \"A\", minPercentage: 93, maxPercentage: 96, color: \"#10B981\" },\n { id: \"a-minus\", grade: \"A-\", minPercentage: 90, maxPercentage: 92, color: \"#34D399\" },\n { id: \"b-plus\", grade: \"B+\", minPercentage: 87, maxPercentage: 89, color: \"#1D4ED8\" },\n { id: \"b\", grade: \"B\", minPercentage: 83, maxPercentage: 86, color: \"#3B82F6\" },\n { id: \"b-minus\", grade: \"B-\", minPercentage: 80, maxPercentage: 82, color: \"#60A5FA\" },\n { id: \"c-plus\", grade: \"C+\", minPercentage: 77, maxPercentage: 79, color: \"#D97706\" },\n { id: \"c\", grade: \"C\", minPercentage: 73, maxPercentage: 76, color: \"#F59E0B\" },\n { id: \"c-minus\", grade: \"C-\", minPercentage: 70, maxPercentage: 72, color: \"#FBBF24\" },\n { id: \"d\", grade: \"D\", minPercentage: 60, maxPercentage: 69, color: \"#F87171\" },\n { id: \"f\", grade: \"F\", minPercentage: 0, maxPercentage: 59, color: \"#EF4444\" },\n ],\n});\n\n// -----------------------------------------------------------------------------\n// Seed\n// -----------------------------------------------------------------------------\n\nexport const seedDatabase = async () => {\n await clearDatabase();\n logger.info(\"Cleared database\");\n\n // The AI assistant uses a fixed user id (`AI_ASSISTANT`) and is the sender\n // on every AI-generated message. clearDatabase wipes it along with everyone\n // else, so recreate it before we start producing AI-authored content.\n await ensureAIUserExists();\n const aiUserId = getAIUserId();\n\n const now = new Date();\n\n // ---------------------------------------------------------------------\n // 1. School + logo\n // ---------------------------------------------------------------------\n const schoolLogo = await prisma.file.create({\n data: {\n name: \"school_logo.png\",\n path: \"logos/riverside.png\",\n type: \"image/png\",\n size: 18_240,\n uploadStatus: UploadStatus.COMPLETED,\n },\n });\n\n const school = await prisma.school.create({\n data: {\n name: \"Riverside High School\",\n description: \"A demo school used to showcase Studious end-to-end.\",\n subdomain: \"riverside\",\n logoId: schoolLogo.id,\n },\n });\n\n // ---------------------------------------------------------------------\n // 2. Departments\n // ---------------------------------------------------------------------\n const [scienceDept, mathDept, englishDept] = await Promise.all([\n prisma.department.create({\n data: {\n schoolId: school.id,\n name: \"Science\",\n description: \"Biology, Chemistry, Physics, Environmental Science.\",\n color: \"#10B981\",\n },\n }),\n prisma.department.create({\n data: {\n schoolId: school.id,\n name: \"Mathematics\",\n description: \"Algebra, Geometry, Calculus, Statistics.\",\n color: \"#3B82F6\",\n },\n }),\n prisma.department.create({\n data: {\n schoolId: school.id,\n name: \"English\",\n description: \"Literature, Composition, Creative Writing.\",\n color: \"#8B5CF6\",\n },\n }),\n ]);\n\n // ---------------------------------------------------------------------\n // 3. Tags (school-wide + department-scoped)\n // ---------------------------------------------------------------------\n const [tagAP, tagHonors, tagNeedsSupport, tagGifted, tagSeniorClass] = await Promise.all([\n prisma.tag.create({\n data: { schoolId: school.id, name: \"AP\", color: \"#DC2626\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Honors\", color: \"#7C3AED\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Needs Support\", color: \"#F59E0B\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Gifted & Talented\", color: \"#0EA5E9\" },\n }),\n prisma.tag.create({\n data: { schoolId: school.id, name: \"Class of 2026\", color: \"#10B981\" },\n }),\n ]);\n\n // ---------------------------------------------------------------------\n // 4. Users — teachers + admin + students\n // ---------------------------------------------------------------------\n const admin = await createUser(\"admin@riverside.edu\", \"admin123\", \"principal.rivera\");\n\n const teachers = await runInBatches(\n [\n { email: \"sarah.johnson@riverside.edu\", username: \"sarah.johnson\" },\n { email: \"michael.chen@riverside.edu\", username: \"michael.chen\" },\n { email: \"emma.davis@riverside.edu\", username: \"emma.davis\" },\n ],\n (t) => createUser(t.email, \"demo123\", t.username)\n );\n\n const studentSeeds: { email: string; username: string; name: string }[] = [\n { email: \"alex.martinez@student.riverside.edu\", username: \"alex.martinez\", name: \"Alex Martinez\" },\n { email: \"sophia.williams@student.riverside.edu\", username: \"sophia.williams\", name: \"Sophia Williams\" },\n { email: \"james.brown@student.riverside.edu\", username: \"james.brown\", name: \"James Brown\" },\n { email: \"olivia.taylor@student.riverside.edu\", username: \"olivia.taylor\", name: \"Olivia Taylor\" },\n { email: \"ethan.anderson@student.riverside.edu\", username: \"ethan.anderson\", name: \"Ethan Anderson\" },\n { email: \"ava.thomas@student.riverside.edu\", username: \"ava.thomas\", name: \"Ava Thomas\" },\n { email: \"noah.jackson@student.riverside.edu\", username: \"noah.jackson\", name: \"Noah Jackson\" },\n { email: \"isabella.white@student.riverside.edu\", username: \"isabella.white\", name: \"Isabella White\" },\n { email: \"liam.harris@student.riverside.edu\", username: \"liam.harris\", name: \"Liam Harris\" },\n { email: \"mia.clark@student.riverside.edu\", username: \"mia.clark\", name: \"Mia Clark\" },\n { email: \"lucas.lewis@student.riverside.edu\", username: \"lucas.lewis\", name: \"Lucas Lewis\" },\n { email: \"charlotte.walker@student.riverside.edu\", username: \"charlotte.walker\", name: \"Charlotte Walker\" },\n ];\n\n const students = await runInBatches(studentSeeds, (s) =>\n createUser(s.email, \"student123\", s.username)\n );\n\n // Attach everyone to the school via the canonical schoolId pointer.\n await prisma.user.updateMany({\n where: { id: { in: [admin.id, ...teachers.map((t) => t.id), ...students.map((s) => s.id)] } },\n data: { schoolId: school.id },\n });\n\n // ---------------------------------------------------------------------\n // 5. SchoolMemberships\n // ---------------------------------------------------------------------\n await prisma.schoolMembership.createMany({\n data: [\n {\n schoolId: school.id,\n userId: admin.id,\n role: SchoolMembershipRole.ADMIN,\n status: SchoolMembershipStatus.ACTIVE,\n },\n ...teachers.map((t) => ({\n schoolId: school.id,\n userId: t.id,\n role: SchoolMembershipRole.TEACHER,\n status: SchoolMembershipStatus.ACTIVE,\n })),\n ...students.map((s) => ({\n schoolId: school.id,\n userId: s.id,\n role: SchoolMembershipRole.STUDENT,\n status: SchoolMembershipStatus.ACTIVE,\n })),\n ],\n });\n\n // A couple of pending invites for the demo.\n await Promise.all([\n prisma.schoolInvite.create({\n data: {\n schoolId: school.id,\n invitedById: admin.id,\n email: \"new.teacher@riverside.edu\",\n role: SchoolMembershipRole.TEACHER,\n token: `invite-${crypto.randomUUID()}`,\n expiresAt: daysFromNow(7, now),\n },\n }),\n prisma.schoolInvite.create({\n data: {\n schoolId: school.id,\n invitedById: admin.id,\n email: \"transfer.student@riverside.edu\",\n role: SchoolMembershipRole.STUDENT,\n token: `invite-${crypto.randomUUID()}`,\n expiresAt: daysFromNow(14, now),\n },\n }),\n ]);\n\n // Hook teachers into their departments + add a few student tags.\n await prisma.user.update({\n where: { id: teachers[0].id },\n data: { departments: { connect: { id: scienceDept.id } } },\n });\n await prisma.user.update({\n where: { id: teachers[1].id },\n data: { departments: { connect: { id: mathDept.id } } },\n });\n await prisma.user.update({\n where: { id: teachers[2].id },\n data: { departments: { connect: { id: englishDept.id } } },\n });\n\n // Tag a slice of students for the demo.\n await Promise.all([\n prisma.user.update({\n where: { id: students[0].id },\n data: { tags: { connect: [{ id: tagAP.id }, { id: tagSeniorClass.id }] } },\n }),\n prisma.user.update({\n where: { id: students[1].id },\n data: {\n tags: { connect: [{ id: tagAP.id }, { id: tagGifted.id }, { id: tagSeniorClass.id }] },\n },\n }),\n prisma.user.update({\n where: { id: students[4].id },\n data: { tags: { connect: [{ id: tagNeedsSupport.id }] } },\n }),\n prisma.user.update({\n where: { id: students[6].id },\n data: { tags: { connect: [{ id: tagHonors.id }] } },\n }),\n ]);\n\n // ---------------------------------------------------------------------\n // 6. Profiles. createMany is cheap and avoids 16 parallel inserts.\n // ---------------------------------------------------------------------\n await prisma.userProfile.createMany({\n data: [\n {\n userId: admin.id,\n displayName: \"Principal Rivera\",\n bio: \"School administrator, oversees academic operations at Riverside High.\",\n location: \"Riverside, CA\",\n profilePicture: getDiceBearAvatar(admin.username),\n },\n {\n userId: teachers[0].id,\n displayName: \"Dr. Sarah Johnson\",\n bio: \"Biology teacher with 15 years of experience.\",\n location: \"Riverside, CA\",\n website: \"https://sarahjohnson-bio.example\",\n profilePicture: getDiceBearAvatar(teachers[0].username),\n },\n {\n userId: teachers[1].id,\n displayName: \"Mr. Michael Chen\",\n bio: \"Math department head. AP Calculus + Statistics.\",\n location: \"Riverside, CA\",\n profilePicture: getDiceBearAvatar(teachers[1].username),\n },\n {\n userId: teachers[2].id,\n displayName: \"Ms. Emma Davis\",\n bio: \"English Literature. Loves creative writing.\",\n location: \"Riverside, CA\",\n profilePicture: getDiceBearAvatar(teachers[2].username),\n },\n ...students.map((student, i) => ({\n userId: student.id,\n displayName: studentSeeds[i].name,\n bio: i < 6 ? \"Grade 11 student at Riverside High.\" : undefined,\n profilePicture: getDiceBearAvatar(student.username),\n })),\n ],\n });\n\n // ---------------------------------------------------------------------\n // 7. Storage roots (school + personal). Class roots get created with classes.\n // ---------------------------------------------------------------------\n const schoolStorageRoot = await prisma.folder.create({\n data: {\n name: \"Cloud Storage\",\n scope: FolderScope.SCHOOL_STORAGE,\n color: \"#3B82F6\",\n schoolStorage: { connect: { id: school.id } },\n },\n });\n\n // Personal storage for each teacher.\n const personalRoots = await Promise.all(\n [admin, ...teachers].map((u) =>\n prisma.folder.create({\n data: {\n name: \"My Files\",\n scope: FolderScope.PERSONAL,\n color: \"#6366F1\",\n personalOwner: { connect: { id: u.id } },\n },\n })\n )\n );\n\n // Some files in the school-wide storage.\n await createFakeFile({\n name: \"Faculty Handbook 2026.pdf\",\n userId: admin.id,\n folderId: schoolStorageRoot.id,\n size: 1_240_000,\n });\n await createFakeFile({\n name: \"Emergency Procedures.pdf\",\n userId: admin.id,\n folderId: schoolStorageRoot.id,\n size: 520_000,\n });\n await createFakeFile({\n name: \"Bell Schedule (2026-2027).pdf\",\n userId: admin.id,\n folderId: schoolStorageRoot.id,\n size: 84_000,\n });\n\n // A personal subfolder + files for Sarah.\n const sarahLessonPlans = await prisma.folder.create({\n data: {\n name: \"Lesson Plans\",\n scope: FolderScope.PERSONAL,\n color: \"#10B981\",\n parentFolder: { connect: { id: personalRoots[1].id } },\n },\n });\n await Promise.all([\n createFakeFile({\n name: \"Cell Membrane Lecture.pptx\",\n userId: teachers[0].id,\n folderId: sarahLessonPlans.id,\n }),\n createFakeFile({\n name: \"Mitosis vs Meiosis.md\",\n userId: teachers[0].id,\n folderId: sarahLessonPlans.id,\n }),\n createFakeFile({\n name: \"Photosynthesis Diagram.png\",\n userId: teachers[0].id,\n folderId: sarahLessonPlans.id,\n }),\n ]);\n\n // Sharing the faculty handbook with all teachers via a permission grant.\n await prisma.permission.create({\n data: {\n folderId: schoolStorageRoot.id,\n principalType: PermissionPrincipalType.SCHOOL,\n schoolId: school.id,\n level: PermissionLevel.READ,\n grantedById: admin.id,\n },\n });\n\n // ---------------------------------------------------------------------\n // 8. Classes + their class-storage roots\n // ---------------------------------------------------------------------\n const biologyClass = await prisma.class.create({\n data: {\n name: \"AP Biology\",\n subject: \"Biology\",\n section: \"Period 3\",\n color: \"#10B981\",\n syllabus: \"Molecular biology, genetics, evolution, ecology.\",\n schoolId: school.id,\n departmentId: scienceDept.id,\n tags: { connect: [{ id: tagAP.id }] },\n teachers: { connect: { id: teachers[0].id } },\n students: { connect: students.slice(0, 8).map((s) => ({ id: s.id })) },\n },\n });\n\n const mathClass = await prisma.class.create({\n data: {\n name: \"AP Calculus BC\",\n subject: \"Mathematics\",\n section: \"Period 2\",\n color: \"#3B82F6\",\n syllabus: \"Limits, derivatives, integrals, series, parametric and polar.\",\n schoolId: school.id,\n departmentId: mathDept.id,\n tags: { connect: [{ id: tagAP.id }, { id: tagHonors.id }] },\n teachers: { connect: { id: teachers[1].id } },\n students: { connect: students.slice(4, 12).map((s) => ({ id: s.id })) },\n },\n });\n\n const englishClass = await prisma.class.create({\n data: {\n name: \"English Literature\",\n subject: \"English\",\n section: \"Period 1\",\n color: \"#8B5CF6\",\n syllabus: \"Close reading, rhetorical analysis, and academic writing.\",\n schoolId: school.id,\n departmentId: englishDept.id,\n tags: { connect: [{ id: tagHonors.id }] },\n teachers: { connect: { id: teachers[2].id } },\n students: { connect: students.slice(0, 10).map((s) => ({ id: s.id })) },\n },\n });\n\n const classes = [biologyClass, mathClass, englishClass];\n\n // Per-class storage root + a few subfolders + draft attachments.\n const classFolders = await Promise.all(\n classes.map((c) =>\n prisma.folder.create({\n data: {\n name: \"Class Files\",\n scope: FolderScope.CLASS,\n color: c.color ?? \"#3B82F6\",\n class: { connect: { id: c.id } },\n },\n })\n )\n );\n\n // Biology subfolders + files.\n const bioHandouts = await prisma.folder.create({\n data: {\n name: \"Handouts\",\n scope: FolderScope.CLASS,\n color: \"#10B981\",\n parentFolder: { connect: { id: classFolders[0].id } },\n },\n });\n const bioLabs = await prisma.folder.create({\n data: {\n name: \"Labs\",\n scope: FolderScope.CLASS,\n color: \"#0EA5E9\",\n parentFolder: { connect: { id: classFolders[0].id } },\n },\n });\n await Promise.all([\n createFakeFile({\n name: \"Cell Structure Reading.pdf\",\n userId: teachers[0].id,\n folderId: bioHandouts.id,\n size: 740_000,\n }),\n createFakeFile({\n name: \"Microscope Setup.pdf\",\n userId: teachers[0].id,\n folderId: bioLabs.id,\n }),\n createFakeFile({\n name: \"Onion Cell Slides.jpg\",\n userId: teachers[0].id,\n folderId: bioLabs.id,\n }),\n createFakeFile({\n name: \"Syllabus AP Bio 2026.pdf\",\n userId: teachers[0].id,\n folderId: classFolders[0].id,\n }),\n ]);\n\n // Math subfolders + files.\n const mathPracticeFolder = await prisma.folder.create({\n data: {\n name: \"Practice Problems\",\n scope: FolderScope.CLASS,\n color: \"#6366F1\",\n parentFolder: { connect: { id: classFolders[1].id } },\n },\n });\n await Promise.all([\n createFakeFile({\n name: \"AP Calc BC Syllabus.pdf\",\n userId: teachers[1].id,\n folderId: classFolders[1].id,\n }),\n createFakeFile({\n name: \"Integration Cheatsheet.pdf\",\n userId: teachers[1].id,\n folderId: mathPracticeFolder.id,\n }),\n createFakeFile({\n name: \"Past AP Exam 2024.pdf\",\n userId: teachers[1].id,\n folderId: mathPracticeFolder.id,\n size: 2_100_000,\n }),\n ]);\n\n // English class folder file.\n await createFakeFile({\n name: \"Reading List Q1.pdf\",\n userId: teachers[2].id,\n folderId: classFolders[2].id,\n });\n\n // A class draft file (attached to class drafts list, not yet on an assignment).\n await createFakeFile({\n name: \"Draft - Genetics Worksheet.docx\",\n userId: teachers[0].id,\n classDraftId: biologyClass.id,\n });\n\n // Grant the science department READ on Bio class folder.\n await prisma.permission.create({\n data: {\n folderId: classFolders[0].id,\n principalType: PermissionPrincipalType.DEPARTMENT,\n departmentId: scienceDept.id,\n level: PermissionLevel.READ,\n grantedById: teachers[0].id,\n },\n });\n\n // ---------------------------------------------------------------------\n // 9. Sections inside each class\n // ---------------------------------------------------------------------\n const bioSections = await Promise.all(\n [\n { name: \"Unit 1: Chemistry of Life\", color: \"#EF4444\" },\n { name: \"Unit 2: Cell Structure\", color: \"#F97316\" },\n { name: \"Unit 3: Cellular Processes\", color: \"#EAB308\" },\n { name: \"Unit 4: Genetics\", color: \"#22C55E\" },\n ].map((s, i) =>\n prisma.section.create({\n data: { name: s.name, color: s.color, order: i + 1, classId: biologyClass.id },\n })\n )\n );\n\n const mathSections = await Promise.all(\n [\n { name: \"Limits and Continuity\", color: \"#3B82F6\" },\n { name: \"Derivatives\", color: \"#6366F1\" },\n { name: \"Integrals\", color: \"#8B5CF6\" },\n { name: \"Series\", color: \"#A855F7\" },\n ].map((s, i) =>\n prisma.section.create({\n data: { name: s.name, color: s.color, order: i + 1, classId: mathClass.id },\n })\n )\n );\n\n await Promise.all(\n [\n { name: \"Short Stories\", color: \"#8B5CF6\" },\n { name: \"Poetry\", color: \"#EC4899\" },\n { name: \"Novels\", color: \"#A855F7\" },\n ].map((s, i) =>\n prisma.section.create({\n data: { name: s.name, color: s.color, order: i + 1, classId: englishClass.id },\n })\n )\n );\n\n // ---------------------------------------------------------------------\n // 10. MarkSchemes + GradingBoundaries\n // Mix of class-bound (legacy) and department-level (template) rows.\n // ---------------------------------------------------------------------\n const bioRubricStructured = buildRubric(\"Biology Assessment Rubric\", [\n { id: \"scientific-accuracy\", title: \"Scientific Accuracy\", description: \"Correct use of scientific terminology and concepts\" },\n { id: \"analysis\", title: \"Analysis & Reasoning\", description: \"Quality of analysis and logical reasoning\" },\n { id: \"communication\", title: \"Communication\", description: \"Clear writing and proper formatting\" },\n { id: \"evidence\", title: \"Evidence & Examples\", description: \"Use of relevant examples and evidence\" },\n ]);\n const mathRubricStructured = buildRubric(\"Mathematics Assessment Rubric\", [\n { id: \"accuracy\", title: \"Mathematical Accuracy\", description: \"Correct calculations and procedures\" },\n { id: \"strategy\", title: \"Problem-Solving Strategy\", description: \"Appropriate method selection and setup\" },\n { id: \"work-shown\", title: \"Work Shown\", description: \"Clear step-by-step work and explanations\" },\n { id: \"final-answer\", title: \"Final Answer\", description: \"Correct final answer with proper units/notation\" },\n ]);\n\n const [bioMarkScheme, mathMarkScheme] = await Promise.all([\n prisma.markScheme.create({\n data: {\n classId: biologyClass.id,\n name: \"Biology Assessment Rubric\",\n structured: bioRubricStructured,\n tags: { connect: [{ id: tagAP.id }] },\n },\n }),\n prisma.markScheme.create({\n data: {\n classId: mathClass.id,\n name: \"Mathematics Assessment Rubric\",\n structured: mathRubricStructured,\n tags: { connect: [{ id: tagAP.id }] },\n },\n }),\n // Department-level templates so the rubric library has content too.\n prisma.markScheme.create({\n data: {\n departmentId: mathDept.id,\n name: \"Math Department Standard Rubric\",\n structured: mathRubricStructured,\n },\n }),\n prisma.gradingBoundary.create({\n data: {\n departmentId: mathDept.id,\n name: \"AP Grading Scale (Template)\",\n structured: apGradingScale,\n },\n }),\n ]);\n\n const mathGradingBoundary = await prisma.gradingBoundary.create({\n data: {\n classId: mathClass.id,\n name: \"AP Calculus BC Grading Scale\",\n structured: apGradingScale,\n },\n });\n\n // ---------------------------------------------------------------------\n // 11. Assignments + attachments\n // ---------------------------------------------------------------------\n const assignmentSpecs: {\n title: string;\n instructions: string;\n dueDate: Date;\n teacherId: string;\n classId: string;\n sectionId?: string;\n type: AssignmentType;\n maxGrade: number;\n weight: number;\n markSchemeId?: string;\n gradingBoundaryId?: string;\n graded?: boolean;\n acceptFiles?: boolean;\n acceptExtendedResponse?: boolean;\n acceptWorksheet?: boolean;\n gradeWithAI?: boolean;\n attachments?: string[];\n }[] = [\n {\n title: \"Cell Structure Lab Report\",\n instructions:\n \"Complete the microscopy lab and write a detailed report on your observations of plant and animal cells. Include labeled diagrams.\",\n dueDate: daysFromNow(7, now),\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[1].id,\n type: AssignmentType.LAB,\n maxGrade: 100,\n weight: 1.5,\n markSchemeId: bioMarkScheme.id,\n acceptFiles: true,\n acceptExtendedResponse: true,\n attachments: [\"Lab Report Template.docx\", \"Rubric.pdf\"],\n },\n {\n title: \"Genetics Problem Set\",\n instructions:\n \"Solve problems on pages 234-237. Show all work including Punnett squares and probability.\",\n dueDate: daysFromNow(1, now),\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n sectionId: bioSections[3].id,\n type: AssignmentType.HOMEWORK,\n maxGrade: 50,\n weight: 1.0,\n markSchemeId: bioMarkScheme.id,\n acceptFiles: true,\n acceptWorksheet: true,\n attachments: [\"Genetics Worksheet.pdf\"],\n },\n {\n title: \"Evolution Essay\",\n instructions:\n \"Write a 5-page essay on the evidence for evolution. Use at least 5 scientific sources and cite properly.\",\n dueDate: daysFromNow(30, now),\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n type: AssignmentType.ESSAY,\n maxGrade: 100,\n weight: 2.0,\n markSchemeId: bioMarkScheme.id,\n acceptFiles: true,\n acceptExtendedResponse: true,\n gradeWithAI: true,\n attachments: [\"Essay Guidelines.pdf\"],\n },\n {\n title: \"Limits and Continuity Test\",\n instructions: \"Comprehensive test covering limits, continuity, and the Intermediate Value Theorem.\",\n dueDate: daysFromNow(-7, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: AssignmentType.TEST,\n maxGrade: 100,\n weight: 2.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n graded: true,\n acceptFiles: true,\n attachments: [\"Practice Test.pdf\", \"Formula Sheet.pdf\"],\n },\n {\n title: \"Limits Practice Problems\",\n instructions: \"Complete problems 1-25 on page 89.\",\n dueDate: daysFromNow(-1, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[0].id,\n type: AssignmentType.HOMEWORK,\n maxGrade: 25,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptWorksheet: true,\n },\n {\n title: \"Derivative Applications Quiz\",\n instructions: \"Quiz covering related rates, optimization, and curve sketching.\",\n dueDate: daysFromNow(5, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[1].id,\n type: AssignmentType.QUIZ,\n maxGrade: 75,\n weight: 1.5,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptWorksheet: true,\n gradeWithAI: true,\n },\n {\n title: \"Integration Techniques Homework\",\n instructions: \"Complete problems 1-30 on pages 156-158.\",\n dueDate: daysFromNow(3, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n sectionId: mathSections[2].id,\n type: AssignmentType.HOMEWORK,\n maxGrade: 30,\n weight: 1.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptFiles: true,\n },\n {\n title: \"Calculus Project: Real-World Applications\",\n instructions: \"Choose a real-world scenario and create a presentation showing how calculus is used.\",\n dueDate: daysFromNow(21, now),\n teacherId: teachers[1].id,\n classId: mathClass.id,\n type: AssignmentType.PROJECT,\n maxGrade: 150,\n weight: 3.0,\n markSchemeId: mathMarkScheme.id,\n gradingBoundaryId: mathGradingBoundary.id,\n acceptFiles: true,\n acceptExtendedResponse: true,\n attachments: [\"Project Rubric.pdf\", \"Past Examples.pdf\"],\n },\n {\n title: \"Macbeth — Themes Essay\",\n instructions: \"Choose a theme and trace its development across the play. 4-6 pages, MLA format.\",\n dueDate: daysFromNow(10, now),\n teacherId: teachers[2].id,\n classId: englishClass.id,\n type: AssignmentType.ESSAY,\n maxGrade: 100,\n weight: 2.0,\n acceptFiles: true,\n acceptExtendedResponse: true,\n gradeWithAI: true,\n attachments: [\"Macbeth Annotation Guide.pdf\"],\n },\n ];\n\n const assignments = await runInBatches(assignmentSpecs, (spec) =>\n prisma.assignment.create({\n data: {\n title: spec.title,\n instructions: spec.instructions,\n dueDate: spec.dueDate,\n teacherId: spec.teacherId,\n classId: spec.classId,\n sectionId: spec.sectionId,\n type: spec.type,\n maxGrade: spec.maxGrade,\n weight: spec.weight,\n markSchemeId: spec.markSchemeId,\n gradingBoundaryId: spec.gradingBoundaryId,\n graded: spec.graded ?? false,\n acceptFiles: spec.acceptFiles ?? false,\n acceptExtendedResponse: spec.acceptExtendedResponse ?? false,\n acceptWorksheet: spec.acceptWorksheet ?? false,\n gradeWithAI: spec.gradeWithAI ?? false,\n aiPolicyLevel: spec.gradeWithAI ? 2 : 0,\n },\n })\n );\n\n // Now attach files to assignments (after the assignment IDs exist).\n for (let i = 0; i < assignments.length; i++) {\n const spec = assignmentSpecs[i];\n if (!spec.attachments?.length) continue;\n await Promise.all(\n spec.attachments.map((name) =>\n createFakeFile({\n name,\n userId: spec.teacherId,\n assignmentId: assignments[i].id,\n })\n )\n );\n }\n\n // ---------------------------------------------------------------------\n // 12. Worksheets — attach the worksheet-style assignments to a worksheet\n // ---------------------------------------------------------------------\n const geneticsAssignment = assignments[1];\n const geneticsWorksheet = await prisma.worksheet.create({\n data: {\n classId: biologyClass.id,\n name: \"Genetics Problem Set\",\n status: JobStatus.COMPLETED,\n assignments: { connect: { id: geneticsAssignment.id } },\n },\n });\n\n const geneticsQuestions = await runInBatches(\n [\n {\n type: WorksheetQuestionType.MULTIPLE_CHOICE,\n question: \"A heterozygous tall pea plant (Tt) is crossed with a homozygous short pea plant (tt). What percentage of offspring will be tall?\",\n answer: \"50%\",\n options: { choices: [\"0%\", \"25%\", \"50%\", \"75%\", \"100%\"] },\n points: 5,\n order: 1,\n },\n {\n type: WorksheetQuestionType.SHORT_ANSWER,\n question: \"Define genotype and phenotype, and give an example of each.\",\n answer: \"Genotype is the genetic makeup (e.g. Tt). Phenotype is the observable trait (e.g. tall).\",\n points: 10,\n order: 2,\n },\n {\n type: WorksheetQuestionType.TRUE_FALSE,\n question: \"A Punnett square predicts the probability of genotypes in offspring.\",\n answer: \"true\",\n options: { choices: [\"true\", \"false\"] },\n points: 5,\n order: 3,\n },\n {\n type: WorksheetQuestionType.LONG_ANSWER,\n question: \"Explain how independent assortment contributes to genetic variation.\",\n answer:\n \"During meiosis, homologous chromosome pairs sort independently into gametes, producing many different combinations of alleles.\",\n points: 15,\n order: 4,\n },\n {\n type: WorksheetQuestionType.MATH_EXPRESSION,\n question: \"If two heterozygous parents (Aa x Aa) produce 100 offspring, how many are expected to be homozygous recessive?\",\n answer: \"25\",\n points: 5,\n order: 5,\n },\n ],\n (q) =>\n prisma.worksheetQuestion.create({\n data: { worksheetId: geneticsWorksheet.id, ...q },\n })\n );\n\n // A separate worksheet for the limits homework.\n const limitsAssignment = assignments[4];\n const limitsWorksheet = await prisma.worksheet.create({\n data: {\n classId: mathClass.id,\n name: \"Limits Practice\",\n status: JobStatus.COMPLETED,\n assignments: { connect: { id: limitsAssignment.id } },\n },\n });\n\n await runInBatches(\n [\n {\n type: WorksheetQuestionType.MATH_EXPRESSION,\n question: \"Evaluate lim_{x→2} (x^2 - 4) / (x - 2).\",\n answer: \"4\",\n points: 10,\n order: 1,\n },\n {\n type: WorksheetQuestionType.MATH_EXPRESSION,\n question: \"Evaluate lim_{x→0} sin(x) / x.\",\n answer: \"1\",\n points: 10,\n order: 2,\n },\n {\n type: WorksheetQuestionType.SHORT_ANSWER,\n question: \"State the Intermediate Value Theorem.\",\n answer:\n \"If f is continuous on [a, b] and N lies between f(a) and f(b), then there exists c in (a, b) with f(c) = N.\",\n points: 5,\n order: 3,\n },\n ],\n (q) =>\n prisma.worksheetQuestion.create({\n data: { worksheetId: limitsWorksheet.id, ...q },\n })\n );\n\n // ---------------------------------------------------------------------\n // 13. Submissions (+ attachments, worksheet responses, annotations)\n // ---------------------------------------------------------------------\n const generateGrade = (maxGrade: number, studentIndex: number, type: AssignmentType): number => {\n const base = [0.92, 0.88, 0.85, 0.9, 0.82, 0.87, 0.91, 0.84, 0.89, 0.86, 0.83, 0.88];\n let multiplier = base[studentIndex % base.length];\n if (type === AssignmentType.TEST) multiplier -= 0.05;\n if (type === AssignmentType.QUIZ) multiplier -= 0.02;\n if (type === AssignmentType.HOMEWORK) multiplier += 0.03;\n const variance = (Math.random() - 0.5) * 0.1;\n return Math.max(0, Math.min(maxGrade, Math.round(maxGrade * (multiplier + variance))));\n };\n\n const teacherFeedback = (pct: number): string => {\n if (pct >= 90) return pick([\n \"Excellent work! Your understanding of the concepts is clear.\",\n \"Outstanding performance. Keep it up.\",\n \"Impressive analysis and reasoning throughout.\",\n ]);\n if (pct >= 80) return pick([\n \"Good work overall. A few small slips but nothing structural.\",\n \"Solid understanding — watch calculation accuracy on tricky cases.\",\n \"Nice job. Review the highlighted sections.\",\n ]);\n if (pct >= 70) return pick([\n \"Adequate work — please revisit the concepts we covered in class.\",\n \"Shows basic understanding but needs more practice.\",\n \"Fair attempt. Come to office hours and we'll work through it.\",\n ]);\n return pick([\n \"Below expectations. Let's schedule a meeting to talk through it.\",\n \"Struggling with the key concepts — we'll get you there.\",\n \"Needs significant improvement. Try the supplementary set.\",\n ]);\n };\n\n const studentsInBio = students.slice(0, 8);\n const studentsInMath = students.slice(4, 12);\n const studentsInEnglish = students.slice(0, 10);\n\n const studentsForClass = (classId: string) => {\n if (classId === biologyClass.id) return studentsInBio;\n if (classId === mathClass.id) return studentsInMath;\n return studentsInEnglish;\n };\n\n // Submissions: small batches + a tiny delay between them.\n const submissionRecords: { id: string; assignmentId: string; studentId: string; submitted: boolean; isGraded: boolean }[] = [];\n\n for (const assignment of assignments) {\n const enrolled = studentsForClass(assignment.classId);\n const max = assignment.maxGrade ?? 100;\n const overdue = assignment.dueDate < now;\n\n const created = await runInBatches(enrolled, (student) => {\n const studentIndex = students.findIndex((s) => s.id === student.id);\n const isSubmitted = overdue ? Math.random() > 0.05 : Math.random() > 0.4;\n const isGraded = overdue && isSubmitted && (assignment.graded || Math.random() > 0.4);\n const grade = generateGrade(max, studentIndex, assignment.type);\n const submittedAt = isSubmitted\n ? new Date(assignment.dueDate.getTime() - Math.random() * 48 * 60 * 60 * 1000)\n : null;\n\n return prisma.submission.create({\n data: {\n assignmentId: assignment.id,\n studentId: student.id,\n submitted: isSubmitted,\n submittedAt,\n gradeReceived: isGraded ? grade : null,\n teacherComments: isGraded ? teacherFeedback((grade / max) * 100) : null,\n returned: isGraded,\n extendedResponse:\n assignment.acceptExtendedResponse && isSubmitted\n ? sampleExtendedResponse(assignment.title)\n : null,\n rubricState: isGraded\n ? JSON.stringify({\n criteria: [\n { name: \"Accuracy\", score: Math.round(grade * 0.4), maxScore: Math.round(max * 0.4) },\n { name: \"Reasoning\", score: Math.round(grade * 0.3), maxScore: Math.round(max * 0.3) },\n { name: \"Communication\", score: Math.round(grade * 0.2), maxScore: Math.round(max * 0.2) },\n { name: \"Evidence\", score: Math.round(grade * 0.1), maxScore: Math.round(max * 0.1) },\n ],\n })\n : null,\n },\n });\n });\n\n for (const sub of created) {\n submissionRecords.push({\n id: sub.id,\n assignmentId: assignment.id,\n studentId: sub.studentId,\n submitted: sub.submitted ?? false,\n isGraded: Boolean(sub.returned),\n });\n }\n }\n logger.info(`Created ${submissionRecords.length} submissions`);\n\n // Attach a fake \"submitted document\" to submitted submissions, and a\n // teacher \"annotations\" PDF on graded ones.\n const submittedOnes = submissionRecords.filter((s) => s.submitted);\n await runInBatches(submittedOnes, async (sub) => {\n await createFakeFile({\n name: pick([\"Submission.pdf\", \"Final Draft.docx\", \"Worked Solutions.pdf\", \"Notes.png\"]),\n userId: sub.studentId,\n submissionId: sub.id,\n });\n if (sub.isGraded && Math.random() > 0.4) {\n await createFakeFile({\n name: \"Teacher Annotations.pdf\",\n userId: assignmentTeacherFor(sub.assignmentId, assignments),\n annotationId: sub.id,\n });\n }\n });\n\n // Worksheet responses for the genetics worksheet (one per Bio student that\n // submitted). Sequential to keep the pool happy.\n for (const student of studentsInBio) {\n const submission = submissionRecords.find(\n (s) => s.assignmentId === geneticsAssignment.id && s.studentId === student.id\n );\n if (!submission?.submitted) continue;\n const response = await prisma.studentWorksheetResponse.create({\n data: {\n studentId: student.id,\n worksheetId: geneticsWorksheet.id,\n submissionId: submission.id,\n submitted: true,\n submittedAt: new Date(now.getTime() - Math.random() * 24 * 60 * 60 * 1000),\n },\n });\n await runInBatches(geneticsQuestions, (q) => {\n const isCorrect = Math.random() > 0.25;\n return prisma.studentQuestionProgress.create({\n data: {\n studentId: student.id,\n questionId: q.id,\n studentWorksheetResponseId: response.id,\n response: isCorrect ? q.answer : \"I'm not sure — guessing here.\",\n isCorrect,\n points: isCorrect ? q.points : Math.floor(q.points / 2),\n feedback: isCorrect\n ? \"Nice — correct reasoning.\"\n : \"Re-read the section on Punnett squares and try again.\",\n status: JobStatus.COMPLETED,\n },\n });\n });\n }\n\n // ---------------------------------------------------------------------\n // 14. Announcements + attachments + reactions + comments\n // ---------------------------------------------------------------------\n const bioAnnouncement = await prisma.announcement.create({\n data: {\n remarks:\n \"Reminder: lab safety quiz next Tuesday. Please review the protocols from Unit 2 — there'll be a short review at the start of class.\",\n teacherId: teachers[0].id,\n classId: biologyClass.id,\n createdAt: hoursFromNow(-24, now),\n },\n });\n await createFakeFile({\n name: \"Lab Safety Protocols.pdf\",\n userId: teachers[0].id,\n announcementId: bioAnnouncement.id,\n });\n\n const mathAnnouncement = await prisma.announcement.create({\n data: {\n remarks:\n \"Great job on the recent quiz, everyone! Class average was 87%. Solutions are attached. Office hours are Wednesday after school.\",\n teacherId: teachers[1].id,\n classId: mathClass.id,\n createdAt: hoursFromNow(-6, now),\n },\n });\n await createFakeFile({\n name: \"Quiz Solutions.pdf\",\n userId: teachers[1].id,\n announcementId: mathAnnouncement.id,\n });\n\n const englishAnnouncement = await prisma.announcement.create({\n data: {\n remarks:\n \"Parent-teacher conferences are next week. Sign-ups are in the main office. Bring questions about your Macbeth essay drafts.\",\n teacherId: teachers[2].id,\n classId: englishClass.id,\n createdAt: hoursFromNow(-12, now),\n },\n });\n\n // Reactions to announcements.\n await prisma.reaction.createMany({\n data: [\n { type: ReactionType.THUMBSUP, userId: students[0].id, announcementId: bioAnnouncement.id },\n { type: ReactionType.HEART, userId: students[1].id, announcementId: bioAnnouncement.id },\n { type: ReactionType.CELEBRATE, userId: students[4].id, announcementId: mathAnnouncement.id },\n { type: ReactionType.CELEBRATE, userId: students[5].id, announcementId: mathAnnouncement.id },\n { type: ReactionType.HAPPY, userId: students[6].id, announcementId: mathAnnouncement.id },\n ],\n });\n\n // A comment thread on the math announcement.\n const topComment = await prisma.comment.create({\n data: {\n content: \"Will the quiz solutions help with the upcoming test as well?\",\n authorId: students[4].id,\n announcementId: mathAnnouncement.id,\n },\n });\n const replyComment = await prisma.comment.create({\n data: {\n content: \"Yes — the test reuses the same concepts. Use these to self-check first.\",\n authorId: teachers[1].id,\n announcementId: mathAnnouncement.id,\n parentCommentId: topComment.id,\n },\n });\n await prisma.reaction.create({\n data: { type: ReactionType.THUMBSUP, userId: students[4].id, commentId: replyComment.id },\n });\n\n // A comment directly on an assignment (asking for clarification).\n await prisma.comment.create({\n data: {\n content: \"For question 4, are we expected to include a diagram or is text sufficient?\",\n authorId: students[1].id,\n assignmentId: assignments[1].id, // Genetics Problem Set\n },\n });\n\n // ---------------------------------------------------------------------\n // 15. Discussions (with replies, tags, reads, reactions)\n // ---------------------------------------------------------------------\n const bioTag = await prisma.classTag.create({\n data: { classId: biologyClass.id, name: \"Lab\", color: \"#10B981\" },\n });\n const bioTagHomework = await prisma.classTag.create({\n data: { classId: biologyClass.id, name: \"Homework Help\", color: \"#F59E0B\" },\n });\n const mathTagAP = await prisma.classTag.create({\n data: { classId: mathClass.id, name: \"AP Prep\", color: \"#DC2626\" },\n });\n\n const labQuestion = await prisma.discussion.create({\n data: {\n classId: biologyClass.id,\n authorId: students[2].id,\n title: \"What stain works best for onion cells?\",\n body: \"I tried iodine but the nuclei were hard to see. Anyone have better luck with methylene blue?\",\n type: DiscussionType.QUESTION,\n tags: { connect: [{ id: bioTag.id }, { id: bioTagHomework.id }] },\n lastActivityAt: hoursFromNow(-2, now),\n },\n });\n await createFakeFile({\n name: \"onion-cells-iodine.jpg\",\n userId: students[2].id,\n discussionId: labQuestion.id,\n });\n\n const reply1 = await prisma.discussionReply.create({\n data: {\n discussionId: labQuestion.id,\n authorId: students[5].id,\n body: \"Methylene blue is way clearer for nuclei. We used it last week.\",\n },\n });\n const reply2 = await prisma.discussionReply.create({\n data: {\n discussionId: labQuestion.id,\n authorId: teachers[0].id,\n body: \"Either works — focus on getting a thin sample. I'll bring more methylene blue tomorrow.\",\n isAcceptedAnswer: true,\n },\n });\n await prisma.reaction.createMany({\n data: [\n { type: ReactionType.THUMBSUP, userId: students[2].id, discussionReplyId: reply2.id },\n { type: ReactionType.IDEA, userId: students[1].id, discussionReplyId: reply1.id },\n ],\n });\n\n const announcementDiscussion = await prisma.discussion.create({\n data: {\n classId: mathClass.id,\n authorId: teachers[1].id,\n title: \"AP Calculus BC Mock Exam — Saturday 10am\",\n body: \"Reminder: full-length mock exam this Saturday at 10am in Room 156. Bring two pencils and a calculator.\",\n type: DiscussionType.ANNOUNCEMENT,\n isPinned: true,\n tags: { connect: [{ id: mathTagAP.id }] },\n lastActivityAt: hoursFromNow(-4, now),\n },\n });\n\n const generalDiscussion = await prisma.discussion.create({\n data: {\n classId: mathClass.id,\n authorId: students[8].id,\n title: \"Any tips for memorizing integration formulas?\",\n body: \"Flashcards aren't sticking. Curious what's worked for everyone.\",\n type: DiscussionType.DISCUSSION,\n lastActivityAt: hoursFromNow(-1, now),\n },\n });\n const genReply = await prisma.discussionReply.create({\n data: {\n discussionId: generalDiscussion.id,\n authorId: students[1].id,\n body: \"I rewrite the formulas every morning for a week. Sounds annoying but it works.\",\n },\n });\n await prisma.discussionReply.create({\n data: {\n discussionId: generalDiscussion.id,\n authorId: students[10].id,\n parentId: genReply.id,\n body: \"Going to try this — thanks!\",\n },\n });\n\n // A few discussion reads so unread counts look realistic.\n await prisma.discussionRead.createMany({\n data: [\n { userId: students[0].id, discussionId: labQuestion.id, lastReadAt: hoursFromNow(-1, now) },\n { userId: students[1].id, discussionId: labQuestion.id, lastReadAt: hoursFromNow(-3, now) },\n { userId: teachers[0].id, discussionId: labQuestion.id, lastReadAt: now },\n {\n userId: students[4].id,\n discussionId: announcementDiscussion.id,\n lastReadAt: hoursFromNow(-2, now),\n },\n ],\n });\n\n // ---------------------------------------------------------------------\n // 16. Events + attendance\n // ---------------------------------------------------------------------\n const teachingWeekStart = new Date(\"2026-10-12T08:00:00\");\n const eventsToCreate = buildWeeklyTeacherEvents(teachingWeekStart, teachers[1].id, mathClass.id);\n eventsToCreate.push(\n {\n name: \"Cell Biology Lab\",\n startTime: daysFromNow(2, now),\n endTime: hoursFromNow(2 * 24 + 1.5, now),\n location: \"Science Lab Room 204\",\n remarks: \"Bring lab notebooks and safety goggles\",\n userId: teachers[0].id,\n classId: biologyClass.id,\n color: \"#10B981\",\n },\n {\n name: \"Poetry Reading\",\n startTime: daysFromNow(7, now),\n endTime: hoursFromNow(7 * 24 + 1, now),\n location: \"Library\",\n remarks: \"Students will present their original poetry\",\n userId: teachers[2].id,\n classId: englishClass.id,\n color: \"#8B5CF6\",\n }\n );\n\n await runInBatches(eventsToCreate, (event) => prisma.event.create({ data: event }));\n logger.info(`Created ${eventsToCreate.length} events`);\n\n const attendanceDate = hoursFromNow(-24, now);\n await prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: biologyClass.id,\n present: { connect: students.slice(0, 6).map((s) => ({ id: s.id })) },\n late: { connect: [{ id: students[6].id }] },\n absent: { connect: [{ id: students[7].id }] },\n },\n });\n await prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: mathClass.id,\n present: { connect: students.slice(4, 11).map((s) => ({ id: s.id })) },\n late: { connect: [{ id: students[11].id }] },\n },\n });\n await prisma.attendance.create({\n data: {\n date: attendanceDate,\n classId: englishClass.id,\n present: { connect: students.slice(0, 9).map((s) => ({ id: s.id })) },\n absent: { connect: [{ id: students[9].id }] },\n },\n });\n\n // ---------------------------------------------------------------------\n // 17. Notifications\n // ---------------------------------------------------------------------\n await prisma.notification.createMany({\n data: [\n { receiverId: teachers[0].id, title: \"New Submission\", content: \"Alex Martinez submitted Genetics Problem Set\" },\n { receiverId: teachers[0].id, title: \"Grade Reminder\", content: \"You have 3 assignments pending grading\" },\n { receiverId: teachers[0].id, title: \"Parent Contact\", content: \"Mrs. Williams requested a meeting about Sophia's progress\" },\n { receiverId: teachers[1].id, title: \"AI Grading Ready\", content: \"Derivative Applications Quiz AI feedback is ready to review\" },\n { receiverId: teachers[1].id, title: \"New Discussion Reply\", content: \"A student replied to 'Integration tips' in AP Calculus BC\" },\n { receiverId: students[0].id, title: \"Assignment Graded\", content: \"Your Genetics Problem Set has been graded: 45/50\" },\n { receiverId: students[1].id, title: \"Assignment Graded\", content: \"Your Genetics Problem Set has been graded: 48/50\" },\n { receiverId: students[2].id, title: \"Assignment Due\", content: \"Cell Structure Lab Report is due in 3 days\" },\n { receiverId: students[3].id, title: \"Class Announcement\", content: \"New announcement in AP Biology\" },\n { receiverId: students[4].id, title: \"Worksheet Returned\", content: \"Mr. Chen returned your Limits Practice Worksheet\" },\n ],\n });\n\n // ---------------------------------------------------------------------\n // 18. Conversations / Messages / Mentions / LabChat / NewtonChat\n // ---------------------------------------------------------------------\n const labConversation = await prisma.conversation.create({\n data: {\n type: ConversationType.GROUP,\n name: \"Lab: Cell Structure Materials\",\n displayInChat: false,\n members: {\n create: [\n { userId: teachers[0].id, role: ConversationRole.ADMIN },\n { userId: aiUserId, role: ConversationRole.MEMBER },\n ],\n },\n },\n });\n\n await prisma.labChat.create({\n data: {\n title: \"Cell Structure Teaching Materials\",\n classId: biologyClass.id,\n conversationId: labConversation.id,\n createdById: teachers[0].id,\n context: JSON.stringify({\n subject: \"Biology\",\n topic: \"Cell Structure and Function\",\n gradeLevel: \"11th Grade AP\",\n difficulty: \"Advanced\",\n objectives: [\n \"Understand prokaryotic vs eukaryotic cell structures\",\n \"Identify organelles and their functions\",\n \"Compare plant and animal cells\",\n ],\n standards: [\"NGSS HS-LS1-1\", \"NGSS HS-LS1-2\"],\n duration: \"2 weeks\",\n assessmentType: \"Lab report and quiz\",\n }),\n },\n });\n\n // A short Lab Chat exchange so the AI surface has content.\n await prisma.message.create({\n data: {\n content:\n \"Can you draft a 10-question multiple choice quiz on organelle functions for my AP Bio students?\",\n senderId: teachers[0].id,\n conversationId: labConversation.id,\n createdAt: hoursFromNow(-3, now),\n },\n });\n await prisma.message.create({\n data: {\n content:\n \"Sure! Here are 10 AP-level MCQs on organelle functions, with explanations on each. Want me to also generate a 4-criterion rubric for grading short-answer follow-ups?\",\n senderId: aiUserId,\n conversationId: labConversation.id,\n createdAt: hoursFromNow(-2.95, now),\n status: JobStatus.COMPLETED,\n },\n });\n\n // A teacher-to-teacher group chat.\n const deptChat = await prisma.conversation.create({\n data: {\n type: ConversationType.GROUP,\n name: \"Faculty Lounge\",\n displayInChat: true,\n members: {\n create: [\n { userId: teachers[0].id, role: ConversationRole.MEMBER },\n { userId: teachers[1].id, role: ConversationRole.ADMIN },\n { userId: teachers[2].id, role: ConversationRole.MEMBER },\n { userId: admin.id, role: ConversationRole.MEMBER },\n ],\n },\n },\n });\n\n // DMs.\n const dmChenEthan = await prisma.conversation.create({\n data: {\n type: ConversationType.DM,\n members: {\n create: [\n { userId: teachers[1].id },\n { userId: students[4].id },\n ],\n },\n },\n });\n\n const dmChenSophia = await prisma.conversation.create({\n data: {\n type: ConversationType.DM,\n members: {\n create: [\n { userId: teachers[1].id },\n { userId: students[1].id },\n ],\n },\n },\n });\n\n type SeedMessage = {\n content: string;\n senderId: string;\n conversationId: string;\n createdAt: Date;\n mentions?: string[];\n attachmentNames?: string[];\n };\n\n const messages: SeedMessage[] = [\n {\n content: \"Quick reminder about the faculty meeting tomorrow at noon.\",\n senderId: teachers[1].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T07:30:00\"),\n },\n {\n content: \"Thanks for the heads up. Are we discussing the new curriculum standards?\",\n senderId: teachers[0].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T07:45:00\"),\n },\n {\n content:\n \"Yes, plus coordination for parent-teacher conferences. I'll bring the draft agenda.\",\n senderId: teachers[1].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T08:00:00\"),\n attachmentNames: [\"Draft Agenda.pdf\"],\n },\n {\n content: \"Perfect — several parents are already asking about progress in my classes.\",\n senderId: teachers[2].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T08:15:00\"),\n },\n {\n content: \"@sarah.johnson can you bring the Bio progress reports too?\",\n senderId: teachers[1].id,\n conversationId: deptChat.id,\n createdAt: new Date(\"2026-10-12T08:20:00\"),\n mentions: [teachers[0].id],\n },\n\n // Ethan struggling student DM\n {\n content:\n \"Hi Mr. Chen, I'm really struggling with the integration problems. Could you explain substitution again?\",\n senderId: students[4].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T15:30:00\"),\n },\n {\n content:\n \"Of course Ethan — glad you reached out. Which problem are you stuck on?\",\n senderId: teachers[1].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T15:45:00\"),\n },\n {\n content: \"Problem #7 from the homework.\",\n senderId: students[4].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T16:00:00\"),\n attachmentNames: [\"IMG_4421.jpg\"],\n },\n {\n content:\n \"For u-sub, look for a function whose derivative also appears. Try u = the inside of the parentheses.\",\n senderId: teachers[1].id,\n conversationId: dmChenEthan.id,\n createdAt: new Date(\"2026-10-13T16:15:00\"),\n },\n\n // Sophia gifted student DM\n {\n content:\n \"Mr. Chen! I finished the integration homework — are there any extra challenge problems I could try?\",\n senderId: students[1].id,\n conversationId: dmChenSophia.id,\n createdAt: new Date(\"2026-10-13T19:00:00\"),\n },\n {\n content: \"Try problems 45-50 from chapter 6 — they cover integration by parts.\",\n senderId: teachers[1].id,\n conversationId: dmChenSophia.id,\n createdAt: new Date(\"2026-10-13T19:30:00\"),\n attachmentNames: [\"Chapter 6 Challenge.pdf\"],\n },\n {\n content: \"Perfect, thanks! Integration by parts looks similar to the product rule for derivatives.\",\n senderId: students[1].id,\n conversationId: dmChenSophia.id,\n createdAt: new Date(\"2026-10-13T20:00:00\"),\n },\n ];\n\n for (const msg of messages) {\n const created = await prisma.message.create({\n data: {\n content: msg.content,\n senderId: msg.senderId,\n conversationId: msg.conversationId,\n createdAt: msg.createdAt,\n },\n });\n if (msg.mentions?.length) {\n await prisma.mention.createMany({\n data: msg.mentions.map((userId) => ({ messageId: created.id, userId })),\n });\n }\n if (msg.attachmentNames?.length) {\n await Promise.all(\n msg.attachmentNames.map((name) =>\n createFakeFile({ name, userId: msg.senderId, messageId: created.id })\n )\n );\n }\n }\n\n // Newton tutor chat tied to a submission.\n const newtonSubmission = submissionRecords.find(\n (s) => s.assignmentId === limitsAssignment.id && s.submitted\n );\n if (newtonSubmission) {\n const newtonConv = await prisma.conversation.create({\n data: {\n type: ConversationType.GROUP,\n name: \"Session with Newton Tutor\",\n displayInChat: true,\n members: {\n create: [\n { userId: newtonSubmission.studentId, role: ConversationRole.MEMBER },\n { userId: aiUserId, role: ConversationRole.MEMBER },\n ],\n },\n },\n });\n await prisma.newtonChat.create({\n data: {\n submissionId: newtonSubmission.id,\n conversationId: newtonConv.id,\n title: \"Limits Practice — Newton Tutor\",\n },\n });\n await prisma.message.create({\n data: {\n content:\n \"Hi! I'm Newton, your study buddy. I can see you're working on the Limits Practice worksheet. Want to go over Question 1?\",\n senderId: aiUserId,\n conversationId: newtonConv.id,\n createdAt: now,\n status: JobStatus.COMPLETED,\n },\n });\n await prisma.message.create({\n data: {\n content: \"Yes please — I got stuck on the sin(x)/x limit.\",\n senderId: newtonSubmission.studentId,\n conversationId: newtonConv.id,\n createdAt: hoursFromNow(0.05, now),\n },\n });\n await prisma.message.create({\n data: {\n content:\n \"Great pick. Try thinking about what sin(x) looks like near 0 — what does its slope look like there? That's the key intuition behind lim_{x→0} sin(x)/x = 1.\",\n senderId: aiUserId,\n conversationId: newtonConv.id,\n createdAt: hoursFromNow(0.1, now),\n status: JobStatus.COMPLETED,\n },\n });\n }\n\n // ---------------------------------------------------------------------\n // 19. Summary\n // ---------------------------------------------------------------------\n logger.info(\"Demo database seeded.\");\n logger.info(\n `Created: 1 school, ${[admin, ...teachers].length} staff, ${students.length} students, ${classes.length} classes, ${assignments.length} assignments, ${submissionRecords.length} submissions.`\n );\n logger.info(\"Demo accounts:\");\n logger.info(\" Admin: admin@riverside.edu / admin123\");\n logger.info(\" Bio: sarah.johnson@riverside.edu / demo123\");\n logger.info(\" Math: michael.chen@riverside.edu / demo123\");\n logger.info(\" English: emma.davis@riverside.edu / demo123\");\n logger.info(\" Student: alex.martinez@student.riverside.edu / student123\");\n};\n\n// -----------------------------------------------------------------------------\n// Local helpers (small enough to keep at the bottom)\n// -----------------------------------------------------------------------------\n\nfunction assignmentTeacherFor(assignmentId: string, assignments: { id: string; teacherId: string }[]): string {\n return assignments.find((a) => a.id === assignmentId)?.teacherId ?? assignments[0].teacherId;\n}\n\nfunction sampleExtendedResponse(assignmentTitle: string): string {\n return `Response for \"${assignmentTitle}\".\\n\\nThis essay addresses the prompt by walking through the key points covered in class, supported with examples and a short reflection on what surprised me. (Demo seed text — would be student-written in production.)`;\n}\n\nfunction buildWeeklyTeacherEvents(\n weekStart: Date,\n teacherId: string,\n classId: string\n): {\n name: string;\n startTime: Date;\n endTime: Date;\n location: string;\n remarks?: string;\n userId: string;\n classId?: string;\n color: string;\n}[] {\n const dayOffset = (n: number) => daysFromNow(n, weekStart);\n const at = (offset: number, h: number, m: number) => {\n const d = dayOffset(offset);\n d.setHours(h, m, 0, 0);\n return d;\n };\n return [\n // Monday\n { name: \"AP Calculus BC\", startTime: at(0, 9, 15), endTime: at(0, 10, 5), location: \"Room 156\", remarks: \"Derivatives unit test review\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Department Head Meeting\", startTime: at(0, 10, 30), endTime: at(0, 11, 30), location: \"Conference Room A\", remarks: \"Curriculum planning\", userId: teacherId, color: \"#8B5CF6\" },\n { name: \"AP Statistics\", startTime: at(0, 13, 45), endTime: at(0, 14, 35), location: \"Room 156\", remarks: \"Hypothesis testing introduction\", userId: teacherId, color: \"#3B82F6\" },\n { name: \"Parent Conference — Williams Family\", startTime: at(0, 15, 0), endTime: at(0, 15, 30), location: \"Room 156\", remarks: \"Discuss Sophia's progress\", userId: teacherId, color: \"#F59E0B\" },\n { name: \"Math Tutoring\", startTime: at(0, 15, 45), endTime: at(0, 16, 45), location: \"Room 156\", remarks: \"Extra help for struggling students\", userId: teacherId, color: \"#10B981\" },\n // Tuesday\n { name: \"AP Calculus BC\", startTime: at(1, 9, 15), endTime: at(1, 10, 5), location: \"Room 156\", remarks: \"Derivatives unit test\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Faculty Meeting\", startTime: at(1, 12, 0), endTime: at(1, 13, 0), location: \"Main Auditorium\", userId: teacherId, color: \"#6B7280\" },\n { name: \"AP Statistics\", startTime: at(1, 13, 45), endTime: at(1, 14, 35), location: \"Room 156\", remarks: \"Hypothesis testing practice\", userId: teacherId, color: \"#3B82F6\" },\n // Wednesday\n { name: \"AP Calculus BC\", startTime: at(2, 9, 15), endTime: at(2, 10, 5), location: \"Room 156\", remarks: \"Integration introduction\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Professional Development\", startTime: at(2, 11, 0), endTime: at(2, 12, 30), location: \"Library Conference Room\", remarks: \"Tech in Math Education\", userId: teacherId, color: \"#059669\" },\n { name: \"AP Statistics\", startTime: at(2, 13, 45), endTime: at(2, 14, 35), location: \"Room 156\", remarks: \"Chi-square tests\", userId: teacherId, color: \"#3B82F6\" },\n // Thursday\n { name: \"AP Calculus BC\", startTime: at(3, 9, 15), endTime: at(3, 10, 5), location: \"Room 156\", remarks: \"Integration by substitution\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"Curriculum Committee\", startTime: at(3, 11, 0), endTime: at(3, 12, 0), location: \"Principal's Office\", userId: teacherId, color: \"#8B5CF6\" },\n { name: \"AP Statistics\", startTime: at(3, 13, 45), endTime: at(3, 14, 35), location: \"Room 156\", remarks: \"ANOVA introduction\", userId: teacherId, color: \"#3B82F6\" },\n { name: \"Math Club\", startTime: at(3, 15, 45), endTime: at(3, 16, 45), location: \"Room 156\", remarks: \"Prepping for state competition\", userId: teacherId, color: \"#10B981\" },\n // Friday\n { name: \"AP Calculus BC\", startTime: at(4, 9, 15), endTime: at(4, 10, 5), location: \"Room 156\", remarks: \"Integration by parts\", userId: teacherId, classId, color: \"#3B82F6\" },\n { name: \"AP Statistics\", startTime: at(4, 13, 45), endTime: at(4, 14, 35), location: \"Room 156\", remarks: \"ANOVA practice\", userId: teacherId, color: \"#3B82F6\" },\n { name: \"Weekend Prep Session\", startTime: at(4, 15, 0), endTime: at(4, 17, 0), location: \"Room 156\", remarks: \"Voluntary AP exam prep\", userId: teacherId, color: \"#059669\" },\n ];\n}\n\n// -----------------------------------------------------------------------------\n// Entry point\n// -----------------------------------------------------------------------------\n\nconst isSeedScript =\n process.argv[1]?.includes(\"seedDatabase\") || process.argv.includes(\"seed\");\n\nif (isSeedScript) {\n (async () => {\n logger.info(\"Seeding database\");\n await seedDatabase();\n logger.info(\"Database seeded\");\n })();\n}\n"],"names":[],"mappings":"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","debug_id":"b02c881f-1479-5633-b1f5-eee42d260607"}
|