From 39b49bd808a82c089f4b48387ce43c2641aa8205 Mon Sep 17 00:00:00 2001 From: zhonghua Date: Sat, 28 Feb 2026 01:48:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 33 + reading-platform-backend/.env.development | 2 +- reading-platform-backend/dist/.DS_Store | Bin 6148 -> 0 bytes .../dist/prisma/seed.d.ts | 1 - reading-platform-backend/dist/prisma/seed.js | 420 ---- .../dist/prisma/seed.js.map | 1 - .../dist/src/app.module.d.ts | 2 - .../dist/src/app.module.js | 64 - .../dist/src/app.module.js.map | 1 - .../common/filters/http-exception.filter.d.ts | 5 - .../common/filters/http-exception.filter.js | 70 - .../filters/http-exception.filter.js.map | 1 - .../dist/src/database/prisma.module.d.ts | 2 - .../dist/src/database/prisma.module.js | 22 - .../dist/src/database/prisma.module.js.map | 1 - .../dist/src/database/prisma.service.d.ts | 7 - .../dist/src/database/prisma.service.js | 45 - .../dist/src/database/prisma.service.js.map | 1 - reading-platform-backend/dist/src/main.d.ts | 1 - reading-platform-backend/dist/src/main.js | 51 - reading-platform-backend/dist/src/main.js.map | 1 - .../admin/admin-settings.controller.d.ts | 54 - .../admin/admin-settings.controller.js | 137 -- .../admin/admin-settings.controller.js.map | 1 - .../modules/admin/admin-settings.service.d.ts | 44 - .../modules/admin/admin-settings.service.js | 105 - .../admin/admin-settings.service.js.map | 1 - .../modules/admin/admin-stats.controller.d.ts | 41 - .../modules/admin/admin-stats.controller.js | 84 - .../admin/admin-stats.controller.js.map | 1 - .../modules/admin/admin-stats.service.d.ts | 42 - .../src/modules/admin/admin-stats.service.js | 212 -- .../modules/admin/admin-stats.service.js.map | 1 - .../dist/src/modules/admin/admin.module.d.ts | 2 - .../dist/src/modules/admin/admin.module.js | 27 - .../src/modules/admin/admin.module.js.map | 1 - .../src/modules/auth/auth.controller.d.ts | 60 - .../dist/src/modules/auth/auth.controller.js | 61 - .../src/modules/auth/auth.controller.js.map | 1 - .../dist/src/modules/auth/auth.module.d.ts | 2 - .../dist/src/modules/auth/auth.module.js | 42 - .../dist/src/modules/auth/auth.module.js.map | 1 - .../dist/src/modules/auth/auth.service.d.ts | 84 - .../dist/src/modules/auth/auth.service.js | 287 --- .../dist/src/modules/auth/auth.service.js.map | 1 - .../dist/src/modules/auth/dto/login.dto.d.ts | 5 - .../dist/src/modules/auth/dto/login.dto.js | 33 - .../src/modules/auth/dto/login.dto.js.map | 1 - .../modules/auth/strategies/jwt.strategy.d.ts | 18 - .../modules/auth/strategies/jwt.strategy.js | 42 - .../auth/strategies/jwt.strategy.js.map | 1 - .../src/modules/common/common.module.d.ts | 2 - .../dist/src/modules/common/common.module.js | 26 - .../src/modules/common/common.module.js.map | 1 - .../decorators/log-operation.decorator.d.ts | 7 - .../decorators/log-operation.decorator.js | 10 - .../decorators/log-operation.decorator.js.map | 1 - .../common/decorators/roles.decorator.d.ts | 2 - .../common/decorators/roles.decorator.js | 8 - .../common/decorators/roles.decorator.js.map | 1 - .../modules/common/guards/jwt-auth.guard.d.ts | 9 - .../modules/common/guards/jwt-auth.guard.js | 37 - .../common/guards/jwt-auth.guard.js.map | 1 - .../modules/common/guards/roles.guard.d.ts | 7 - .../src/modules/common/guards/roles.guard.js | 37 - .../modules/common/guards/roles.guard.js.map | 1 - .../common/interceptors/log.interceptor.d.ts | 13 - .../common/interceptors/log.interceptor.js | 115 - .../interceptors/log.interceptor.js.map | 1 - .../common/operation-log.controller.d.ts | 101 - .../common/operation-log.controller.js | 108 - .../common/operation-log.controller.js.map | 1 - .../modules/common/operation-log.service.d.ts | 62 - .../modules/common/operation-log.service.js | 134 -- .../common/operation-log.service.js.map | 1 - .../course/course-validation.service.d.ts | 42 - .../course/course-validation.service.js | 190 -- .../course/course-validation.service.js.map | 1 - .../src/modules/course/course.controller.d.ts | 625 ------ .../src/modules/course/course.controller.js | 223 -- .../modules/course/course.controller.js.map | 1 - .../src/modules/course/course.module.d.ts | 2 - .../dist/src/modules/course/course.module.js | 26 - .../src/modules/course/course.module.js.map | 1 - .../src/modules/course/course.service.d.ts | 627 ------ .../dist/src/modules/course/course.service.js | 750 ------- .../src/modules/course/course.service.js.map | 1 - .../src/modules/export/export.controller.d.ts | 10 - .../src/modules/export/export.controller.js | 90 - .../modules/export/export.controller.js.map | 1 - .../src/modules/export/export.module.d.ts | 2 - .../dist/src/modules/export/export.module.js | 23 - .../src/modules/export/export.module.js.map | 1 - .../src/modules/export/export.service.d.ts | 10 - .../dist/src/modules/export/export.service.js | 260 --- .../src/modules/export/export.service.js.map | 1 - .../file-upload/file-upload.controller.d.ts | 23 - .../file-upload/file-upload.controller.js | 89 - .../file-upload/file-upload.controller.js.map | 1 - .../file-upload/file-upload.module.d.ts | 2 - .../modules/file-upload/file-upload.module.js | 23 - .../file-upload/file-upload.module.js.map | 1 - .../file-upload/file-upload.service.d.ts | 18 - .../file-upload/file-upload.service.js | 161 -- .../file-upload/file-upload.service.js.map | 1 - .../modules/growth/dto/create-growth.dto.d.ts | 27 - .../modules/growth/dto/create-growth.dto.js | 114 - .../growth/dto/create-growth.dto.js.map | 1 - .../src/modules/growth/growth.controller.d.ts | 277 --- .../src/modules/growth/growth.controller.js | 194 -- .../modules/growth/growth.controller.js.map | 1 - .../src/modules/growth/growth.module.d.ts | 2 - .../dist/src/modules/growth/growth.module.js | 23 - .../src/modules/growth/growth.module.js.map | 1 - .../src/modules/growth/growth.service.d.ts | 252 --- .../dist/src/modules/growth/growth.service.js | 544 ----- .../src/modules/growth/growth.service.js.map | 1 - .../modules/lesson/dto/create-lesson.dto.d.ts | 5 - .../modules/lesson/dto/create-lesson.dto.js | 30 - .../lesson/dto/create-lesson.dto.js.map | 1 - .../modules/lesson/dto/finish-lesson.dto.d.ts | 6 - .../modules/lesson/dto/finish-lesson.dto.js | 37 - .../lesson/dto/finish-lesson.dto.js.map | 1 - .../src/modules/lesson/lesson.controller.d.ts | 485 ---- .../src/modules/lesson/lesson.controller.js | 230 -- .../modules/lesson/lesson.controller.js.map | 1 - .../src/modules/lesson/lesson.module.d.ts | 2 - .../dist/src/modules/lesson/lesson.module.js | 23 - .../src/modules/lesson/lesson.module.js.map | 1 - .../src/modules/lesson/lesson.service.d.ts | 453 ---- .../dist/src/modules/lesson/lesson.service.js | 762 ------- .../src/modules/lesson/lesson.service.js.map | 1 - .../notification/notification.controller.d.ts | 121 - .../notification/notification.controller.js | 183 -- .../notification.controller.js.map | 1 - .../notification/notification.module.d.ts | 2 - .../notification/notification.module.js | 30 - .../notification/notification.module.js.map | 1 - .../notification/notification.service.d.ts | 75 - .../notification/notification.service.js | 131 -- .../notification/notification.service.js.map | 1 - .../schedule-notification.service.d.ts | 32 - .../schedule-notification.service.js | 288 --- .../schedule-notification.service.js.map | 1 - .../src/modules/parent/parent.controller.d.ts | 136 -- .../src/modules/parent/parent.controller.js | 103 - .../modules/parent/parent.controller.js.map | 1 - .../src/modules/parent/parent.module.d.ts | 2 - .../dist/src/modules/parent/parent.module.js | 23 - .../src/modules/parent/parent.module.js.map | 1 - .../src/modules/parent/parent.service.d.ts | 135 -- .../dist/src/modules/parent/parent.service.js | 271 --- .../src/modules/parent/parent.service.js.map | 1 - .../resource/dto/create-resource.dto.d.ts | 53 - .../resource/dto/create-resource.dto.js | 191 -- .../resource/dto/create-resource.dto.js.map | 1 - .../modules/resource/resource.controller.d.ts | 157 -- .../modules/resource/resource.controller.js | 156 -- .../resource/resource.controller.js.map | 1 - .../src/modules/resource/resource.module.d.ts | 2 - .../src/modules/resource/resource.module.js | 23 - .../modules/resource/resource.module.js.map | 1 - .../modules/resource/resource.service.d.ts | 157 -- .../src/modules/resource/resource.service.js | 311 --- .../modules/resource/resource.service.js.map | 1 - .../modules/school/dto/class-teacher.dto.d.ts | 14 - .../modules/school/dto/class-teacher.dto.js | 57 - .../school/dto/class-teacher.dto.js.map | 1 - .../modules/school/dto/create-class.dto.d.ts | 10 - .../modules/school/dto/create-class.dto.js | 52 - .../school/dto/create-class.dto.js.map | 1 - .../school/dto/create-student.dto.d.ts | 16 - .../modules/school/dto/create-student.dto.js | 83 - .../school/dto/create-student.dto.js.map | 1 - .../school/dto/create-teacher.dto.d.ts | 14 - .../modules/school/dto/create-teacher.dto.js | 76 - .../school/dto/create-teacher.dto.js.map | 1 - .../school/dto/import-students.dto.d.ts | 3 - .../modules/school/dto/import-students.dto.js | 22 - .../school/dto/import-students.dto.js.map | 1 - .../src/modules/school/dto/schedule.dto.d.ts | 49 - .../src/modules/school/dto/schedule.dto.js | 222 -- .../modules/school/dto/schedule.dto.js.map | 1 - .../src/modules/school/export.controller.d.ts | 12 - .../src/modules/school/export.controller.js | 101 - .../modules/school/export.controller.js.map | 1 - .../src/modules/school/export.service.d.ts | 12 - .../dist/src/modules/school/export.service.js | 263 --- .../src/modules/school/export.service.js.map | 1 - .../modules/school/package.controller.d.ts | 34 - .../src/modules/school/package.controller.js | 120 - .../modules/school/package.controller.js.map | 1 - .../src/modules/school/school.controller.d.ts | 858 -------- .../src/modules/school/school.controller.js | 600 ----- .../modules/school/school.controller.js.map | 1 - .../src/modules/school/school.module.d.ts | 2 - .../dist/src/modules/school/school.module.js | 30 - .../src/modules/school/school.module.js.map | 1 - .../src/modules/school/school.service.d.ts | 899 -------- .../dist/src/modules/school/school.service.js | 1952 ----------------- .../src/modules/school/school.service.js.map | 1 - .../modules/school/settings.controller.d.ts | 36 - .../src/modules/school/settings.controller.js | 54 - .../modules/school/settings.controller.js.map | 1 - .../src/modules/school/settings.service.d.ts | 36 - .../src/modules/school/settings.service.js | 92 - .../modules/school/settings.service.js.map | 1 - .../src/modules/school/stats.controller.d.ts | 59 - .../src/modules/school/stats.controller.js | 136 -- .../modules/school/stats.controller.js.map | 1 - .../src/modules/school/stats.service.d.ts | 69 - .../dist/src/modules/school/stats.service.js | 400 ---- .../src/modules/school/stats.service.js.map | 1 - .../src/modules/task/dto/create-task.dto.d.ts | 71 - .../src/modules/task/dto/create-task.dto.js | 243 -- .../modules/task/dto/create-task.dto.js.map | 1 - .../src/modules/task/task.controller.d.ts | 820 ------- .../dist/src/modules/task/task.controller.js | 462 ---- .../src/modules/task/task.controller.js.map | 1 - .../dist/src/modules/task/task.module.d.ts | 2 - .../dist/src/modules/task/task.module.js | 25 - .../dist/src/modules/task/task.module.js.map | 1 - .../dist/src/modules/task/task.service.d.ts | 479 ---- .../dist/src/modules/task/task.service.js | 786 ------- .../dist/src/modules/task/task.service.js.map | 1 - .../teacher-course.controller.d.ts | 400 ---- .../teacher-course.controller.js | 227 -- .../teacher-course.controller.js.map | 1 - .../teacher-course/teacher-course.module.d.ts | 2 - .../teacher-course/teacher-course.module.js | 23 - .../teacher-course.module.js.map | 1 - .../teacher-course.service.d.ts | 414 ---- .../teacher-course/teacher-course.service.js | 960 -------- .../teacher-course.service.js.map | 1 - .../src/modules/tenant/dto/tenant.dto.d.ts | 40 - .../dist/src/modules/tenant/dto/tenant.dto.js | 206 -- .../src/modules/tenant/dto/tenant.dto.js.map | 1 - .../src/modules/tenant/tenant.controller.d.ts | 138 -- .../src/modules/tenant/tenant.controller.js | 126 -- .../modules/tenant/tenant.controller.js.map | 1 - .../src/modules/tenant/tenant.module.d.ts | 2 - .../dist/src/modules/tenant/tenant.module.js | 25 - .../src/modules/tenant/tenant.module.js.map | 1 - .../src/modules/tenant/tenant.service.d.ts | 154 -- .../dist/src/modules/tenant/tenant.service.js | 392 ---- .../src/modules/tenant/tenant.service.js.map | 1 - .../dist/tsconfig.tsbuildinfo | 1 - reading-platform-backend/prisma/dev.db | Bin 0 -> 372736 bytes .../20260210055321_init/migration.sql | 262 --- .../20260210092744_init/migration.sql | 323 --- .../migration.sql | 27 - reading-platform-frontend/.env.development | 4 +- reading-platform-frontend/dev.db | 0 reading-platform-frontend/src/components.d.ts | 25 - 254 files changed, 36 insertions(+), 25096 deletions(-) create mode 100644 .gitignore delete mode 100644 reading-platform-backend/dist/.DS_Store delete mode 100644 reading-platform-backend/dist/prisma/seed.d.ts delete mode 100644 reading-platform-backend/dist/prisma/seed.js delete mode 100644 reading-platform-backend/dist/prisma/seed.js.map delete mode 100644 reading-platform-backend/dist/src/app.module.d.ts delete mode 100644 reading-platform-backend/dist/src/app.module.js delete mode 100644 reading-platform-backend/dist/src/app.module.js.map delete mode 100644 reading-platform-backend/dist/src/common/filters/http-exception.filter.d.ts delete mode 100644 reading-platform-backend/dist/src/common/filters/http-exception.filter.js delete mode 100644 reading-platform-backend/dist/src/common/filters/http-exception.filter.js.map delete mode 100644 reading-platform-backend/dist/src/database/prisma.module.d.ts delete mode 100644 reading-platform-backend/dist/src/database/prisma.module.js delete mode 100644 reading-platform-backend/dist/src/database/prisma.module.js.map delete mode 100644 reading-platform-backend/dist/src/database/prisma.service.d.ts delete mode 100644 reading-platform-backend/dist/src/database/prisma.service.js delete mode 100644 reading-platform-backend/dist/src/database/prisma.service.js.map delete mode 100644 reading-platform-backend/dist/src/main.d.ts delete mode 100644 reading-platform-backend/dist/src/main.js delete mode 100644 reading-platform-backend/dist/src/main.js.map delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-settings.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-settings.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-settings.service.js delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-settings.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-stats.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-stats.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-stats.service.js delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin-stats.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin.module.js delete mode 100644 reading-platform-backend/dist/src/modules/admin/admin.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.module.js delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.service.js delete mode 100644 reading-platform-backend/dist/src/modules/auth/auth.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/auth/dto/login.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/auth/dto/login.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/auth/dto/login.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js delete mode 100644 reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/common.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/common.module.js delete mode 100644 reading-platform-backend/dist/src/modules/common/common.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js delete mode 100644 reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js delete mode 100644 reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js delete mode 100644 reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/guards/roles.guard.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/guards/roles.guard.js delete mode 100644 reading-platform-backend/dist/src/modules/common/guards/roles.guard.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js delete mode 100644 reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/operation-log.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/operation-log.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/common/operation-log.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/common/operation-log.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/common/operation-log.service.js delete mode 100644 reading-platform-backend/dist/src/modules/common/operation-log.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/course/course-validation.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/course/course-validation.service.js delete mode 100644 reading-platform-backend/dist/src/modules/course/course-validation.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/course/course.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/course/course.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/course/course.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/course/course.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/course/course.module.js delete mode 100644 reading-platform-backend/dist/src/modules/course/course.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/course/course.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/course/course.service.js delete mode 100644 reading-platform-backend/dist/src/modules/course/course.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/export/export.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/export/export.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/export/export.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/export/export.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/export/export.module.js delete mode 100644 reading-platform-backend/dist/src/modules/export/export.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/export/export.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/export/export.service.js delete mode 100644 reading-platform-backend/dist/src/modules/export/export.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js delete mode 100644 reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.module.js delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.service.js delete mode 100644 reading-platform-backend/dist/src/modules/growth/growth.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.module.js delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.service.js delete mode 100644 reading-platform-backend/dist/src/modules/lesson/lesson.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.module.js delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.service.js delete mode 100644 reading-platform-backend/dist/src/modules/notification/notification.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/notification/schedule-notification.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js delete mode 100644 reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.module.js delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.service.js delete mode 100644 reading-platform-backend/dist/src/modules/parent/parent.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.module.js delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.service.js delete mode 100644 reading-platform-backend/dist/src/modules/resource/resource.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-class.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-student.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/import-students.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/schedule.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/export.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/export.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/school/export.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/export.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/export.service.js delete mode 100644 reading-platform-backend/dist/src/modules/school/export.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/package.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/package.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/school/package.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/school.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/school.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/school/school.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/school.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/school.module.js delete mode 100644 reading-platform-backend/dist/src/modules/school/school.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/school.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/school.service.js delete mode 100644 reading-platform-backend/dist/src/modules/school/school.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/settings.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/settings.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/school/settings.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/settings.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/settings.service.js delete mode 100644 reading-platform-backend/dist/src/modules/school/settings.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/stats.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/stats.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/school/stats.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/school/stats.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/school/stats.service.js delete mode 100644 reading-platform-backend/dist/src/modules/school/stats.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/task/dto/create-task.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/task/task.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/task/task.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/task/task.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/task/task.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/task/task.module.js delete mode 100644 reading-platform-backend/dist/src/modules/task/task.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/task/task.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/task/task.service.js delete mode 100644 reading-platform-backend/dist/src/modules/task/task.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js delete mode 100644 reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js.map delete mode 100644 reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js delete mode 100644 reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js.map delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.controller.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.controller.js delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.controller.js.map delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.module.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.module.js delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.module.js.map delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.service.d.ts delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.service.js delete mode 100644 reading-platform-backend/dist/src/modules/tenant/tenant.service.js.map delete mode 100644 reading-platform-backend/dist/tsconfig.tsbuildinfo delete mode 100644 reading-platform-backend/prisma/migrations/20260210055321_init/migration.sql delete mode 100644 reading-platform-backend/prisma/migrations/20260210092744_init/migration.sql delete mode 100644 reading-platform-backend/prisma/migrations/20260210093209_make_picture_book_nullable/migration.sql delete mode 100644 reading-platform-frontend/dev.db diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..547fd8f --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* +pnpm-lock.yaml +*/node_modules +*/dist/* +dist.zip +dist-ssr +*.local +package-lock.json +*/package-lock.json +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +/auto-imports.d.ts +/components.d.ts +/typed-router.d.ts +/locale.d.ts + +stats.html \ No newline at end of file diff --git a/reading-platform-backend/.env.development b/reading-platform-backend/.env.development index 2d55981..84403a0 100644 --- a/reading-platform-backend/.env.development +++ b/reading-platform-backend/.env.development @@ -1,4 +1,4 @@ -DATABASE_URL="file:/Users/retirado/ccProgram/reading-platform-backend/dev.db" +DATABASE_URL="file:./dev.db" NODE_ENV=development PORT=3000 JWT_SECRET="your-super-secret-jwt-key" diff --git a/reading-platform-backend/dist/.DS_Store b/reading-platform-backend/dist/.DS_Store deleted file mode 100644 index 8c1b8ba72bab3f9bf879a01cbee3dbf945bda4e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N6?5T3E6EO;rNJctDJ1$y@fGSfnbCIL z1#ePx29htCpG@|HO)^Bp)5qn6XiP*Injp)dM?~FgIxuH3a$2LJ+wyKQThvw4v(P@O zWbY$tXifL@K%M=sp1#|wx+vylJ%>KKE=T9jFK?G!pXHA}&1#pYh$U!%9js~5V({pF zv$gEzzBt{SS#FD~>TTApwUzJWRr0ww1I~am;0*jv25@JKWQU60I|I&uGw{WLoDTs_ zFgJ{f>F7Y0N&w&x>LeITEg><%FgJ{fus~Qtff~wIVz7ooAIvW|jEWjgY{ds#=Fj4V zQ+BK$k~?v(=)E)G473>-=yWXi{}q0j-Xgyp;xlK!8Texi@UWN_Q+$-&t)0)4yEdTR tpoxfIlmP_e)*}EDIY*9@QSCv-@XHOOqO2nN6b|%^! diff --git a/reading-platform-backend/dist/prisma/seed.d.ts b/reading-platform-backend/dist/prisma/seed.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/reading-platform-backend/dist/prisma/seed.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/reading-platform-backend/dist/prisma/seed.js b/reading-platform-backend/dist/prisma/seed.js deleted file mode 100644 index 6b9eb13..0000000 --- a/reading-platform-backend/dist/prisma/seed.js +++ /dev/null @@ -1,420 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const client_1 = require("@prisma/client"); -const bcrypt = __importStar(require("bcrypt")); -const prisma = new client_1.PrismaClient(); -async function main() { - console.log('开始种子数据...'); - const tenant = await prisma.tenant.upsert({ - where: { id: 1 }, - update: {}, - create: { - name: '阳光幼儿园', - address: '北京市朝阳区xxx街道', - contactPerson: '张园长', - contactPhone: '13800138000', - packageType: 'STANDARD', - teacherQuota: 20, - studentQuota: 200, - storageQuota: BigInt(5368709120), - startDate: '2024-01-01', - expireDate: '2025-12-31', - status: 'ACTIVE', - }, - }); - console.log('创建租户:', tenant.name); - const passwordHash = await bcrypt.hash('123456', 10); - const teacher = await prisma.teacher.upsert({ - where: { loginAccount: 'teacher1' }, - update: {}, - create: { - tenantId: tenant.id, - name: '李老师', - phone: '13900139000', - email: 'teacher1@example.com', - loginAccount: 'teacher1', - passwordHash: passwordHash, - status: 'ACTIVE', - }, - }); - console.log('创建教师:', teacher.name); - const class1 = await prisma.class.upsert({ - where: { id: 1 }, - update: {}, - create: { - tenantId: tenant.id, - name: '中一班', - grade: 'MIDDLE', - teacherId: teacher.id, - studentCount: 25, - }, - }); - console.log('创建班级:', class1.name); - const class2 = await prisma.class.upsert({ - where: { id: 2 }, - update: {}, - create: { - tenantId: tenant.id, - name: '大一班', - grade: 'BIG', - teacherId: teacher.id, - studentCount: 30, - }, - }); - console.log('创建班级:', class2.name); - await prisma.teacher.update({ - where: { id: teacher.id }, - data: { - classIds: JSON.stringify([class1.id, class2.id]), - }, - }); - const students = [ - { name: '小明', gender: 'MALE', classId: class1.id }, - { name: '小红', gender: 'FEMALE', classId: class1.id }, - { name: '小华', gender: 'MALE', classId: class1.id }, - { name: '小丽', gender: 'FEMALE', classId: class2.id }, - { name: '小强', gender: 'MALE', classId: class2.id }, - ]; - for (const studentData of students) { - await prisma.student.upsert({ - where: { - id: students.indexOf(studentData) + 1, - }, - update: {}, - create: { - tenantId: tenant.id, - classId: studentData.classId, - name: studentData.name, - gender: studentData.gender, - }, - }); - } - console.log('创建学生:', students.length, '名'); - const course = await prisma.course.upsert({ - where: { id: 1 }, - update: {}, - create: { - name: '好饿的毛毛虫', - description: '这是一本经典的绘本,讲述了一只毛毛虫从孵化到变成蝴蝶的故事。通过这个故事,孩子们可以学习到星期的概念、数字的认知,以及毛毛虫变蝴蝶的科学知识。', - pictureBookName: '好饿的毛毛虫', - gradeTags: JSON.stringify(['SMALL', 'MIDDLE']), - domainTags: JSON.stringify(['LANGUAGE', 'SCIENCE', 'MATH']), - duration: 30, - status: 'PUBLISHED', - version: '1.0', - coverImagePath: '/uploads/covers/caterpillar.jpg', - }, - }); - console.log('创建课程:', course.name); - const scripts = [ - { - stepIndex: 1, - stepName: '阅读导入', - stepType: 'INTRODUCTION', - duration: 5, - objective: '激发幼儿阅读兴趣,建立阅读期待', - teacherScript: '小朋友们,今天我们要认识一位新朋友——一只小小的毛毛虫。你们见过毛毛虫吗?它长什么样子呢?让我们一起来看看这只特别的毛毛虫的故事吧!', - interactionPoints: JSON.stringify([ - '展示毛毛虫图片或玩偶', - '引导幼儿分享见过的毛毛虫', - '预测故事内容', - ]), - }, - { - stepIndex: 2, - stepName: '绘本共读', - stepType: 'READING', - duration: 10, - objective: '理解故事内容,发展语言能力', - teacherScript: '(逐页讲述)从前,有一颗小小的蛋躺在叶子上...月光下,一条又小又饿的毛毛虫从蛋里爬了出来...', - interactionPoints: JSON.stringify([ - '提问预测', - '模仿毛毛虫吃东西的动作', - '一起数食物的数量', - ]), - }, - { - stepIndex: 3, - stepName: '理解讨论', - stepType: 'DISCUSSION', - duration: 5, - objective: '加深对故事的理解,发展思维能力', - teacherScript: '小朋友们,毛毛虫吃了哪些东西呢?为什么最后它肚子痛了?它最后变成了什么?', - interactionPoints: JSON.stringify([ - '回顾毛毛虫吃的食物', - '讨论健康饮食的重要性', - '讨论毛毛虫的成长变化', - ]), - }, - { - stepIndex: 4, - stepName: '互动游戏', - stepType: 'ACTIVITY', - duration: 5, - objective: '通过游戏巩固学习内容', - teacherScript: '现在我们来玩一个游戏,老师说出星期几,小朋友们来模仿毛毛虫吃了什么!', - interactionPoints: JSON.stringify([ - '星期与食物配对游戏', - '毛毛虫动作模仿', - '食物分类活动', - ]), - }, - { - stepIndex: 5, - stepName: '创意表达', - stepType: 'CREATIVE', - duration: 3, - objective: '发展创造力和表达能力', - teacherScript: '如果你是毛毛虫,你想吃什么?画一画你心目中的毛毛虫吧!', - interactionPoints: JSON.stringify([ - '自由绘画', - '分享作品', - '创意表达', - ]), - }, - { - stepIndex: 6, - stepName: '总结延伸', - stepType: 'SUMMARY', - duration: 2, - objective: '总结学习内容,激发延伸探索兴趣', - teacherScript: '今天我们认识了一只可爱的毛毛虫,它从一颗小蛋,变成毛毛虫,最后变成了漂亮的蝴蝶!回家后可以和爸爸妈妈一起找找看,还有哪些动物会变形呢?', - interactionPoints: JSON.stringify([ - '总结毛毛虫的成长过程', - '布置家庭延伸任务', - '预告下次活动', - ]), - }, - ]; - for (const script of scripts) { - await prisma.courseScript.upsert({ - where: { - courseId_stepIndex: { - courseId: course.id, - stepIndex: script.stepIndex, - }, - }, - update: {}, - create: { - courseId: course.id, - ...script, - sortOrder: script.stepIndex, - }, - }); - } - console.log('创建课程脚本:', scripts.length, '个步骤'); - const pages = [ - { pageNumber: 1, questions: '你们看到了什么?这是什么颜色的?', teacherNotes: '引导观察封面' }, - { pageNumber: 2, questions: '蛋在哪里?是谁的蛋呢?', teacherNotes: '引入故事悬念' }, - { pageNumber: 3, questions: '毛毛虫从蛋里出来了!它说了什么?', teacherNotes: '模仿毛毛虫的声音' }, - { pageNumber: 4, questions: '星期一,毛毛虫吃了什么?吃了几个?', teacherNotes: '学习星期和数字' }, - { pageNumber: 5, questions: '星期二,它又吃了什么?', teacherNotes: '继续学习星期' }, - ]; - const readingScript = await prisma.courseScript.findFirst({ - where: { courseId: course.id, stepType: 'READING' }, - }); - if (readingScript) { - for (const page of pages) { - await prisma.courseScriptPage.upsert({ - where: { - scriptId_pageNumber: { - scriptId: readingScript.id, - pageNumber: page.pageNumber, - }, - }, - update: {}, - create: { - scriptId: readingScript.id, - ...page, - }, - }); - } - console.log('创建逐页配置:', pages.length, '页'); - } - const activities = [ - { - name: '毛毛虫手偶制作', - domain: 'ART', - activityType: 'HANDICRAFT', - duration: 20, - onlineMaterials: JSON.stringify(['毛毛虫模板PDF', '制作视频']), - offlineMaterials: '彩纸、剪刀、胶水、眼睛贴纸', - activityGuide: '1. 准备材料\n2. 按照模板剪裁\n3. 粘贴组装\n4. 添加装饰', - objectives: JSON.stringify(['锻炼手部精细动作', '培养创造力', '巩固毛毛虫认知']), - sortOrder: 1, - }, - { - name: '健康饮食分类', - domain: 'SCIENCE', - activityType: 'GAME', - duration: 15, - onlineMaterials: JSON.stringify(['食物卡片PPT']), - offlineMaterials: '食物图片卡片、分类筐', - activityGuide: '1. 展示各种食物图片\n2. 讨论健康与不健康食物\n3. 进行分类游戏', - objectives: JSON.stringify(['认识健康饮食', '学习分类', '培养健康饮食习惯']), - sortOrder: 2, - }, - { - name: '蝴蝶的生命周期', - domain: 'SCIENCE', - activityType: 'EXPLORATION', - duration: 25, - onlineMaterials: JSON.stringify(['蝴蝶生长视频', '生命周期图']), - offlineMaterials: '绘本、放大镜、观察记录本', - activityGuide: '1. 观看蝴蝶生长视频\n2. 讨论四个阶段\n3. 绘制生命周期图', - objectives: JSON.stringify(['了解变态发育', '培养科学探究精神', '学习观察记录']), - sortOrder: 3, - }, - ]; - for (const activity of activities) { - await prisma.courseActivity.upsert({ - where: { id: activities.indexOf(activity) + 1 }, - update: {}, - create: { - courseId: course.id, - ...activity, - }, - }); - } - console.log('创建延伸活动:', activities.length, '个'); - const tenantCourse = await prisma.tenantCourse.upsert({ - where: { - tenantId_courseId: { - tenantId: tenant.id, - courseId: course.id, - }, - }, - update: {}, - create: { - tenantId: tenant.id, - courseId: course.id, - authorized: true, - authorizedAt: new Date(), - }, - }); - console.log('授权课程给租户:', tenant.id, '->', course.id); - const course2 = await prisma.course.upsert({ - where: { id: 2 }, - update: {}, - create: { - name: '猜猜我有多爱你', - description: '这是一本关于爱的温暖绘本,小兔子和大兔子用各种方式表达彼此的爱。通过这个故事,孩子们可以学习到表达爱的方式,感受亲情的温暖。', - pictureBookName: '猜猜我有多爱你', - gradeTags: JSON.stringify(['MIDDLE', 'BIG']), - domainTags: JSON.stringify(['LANGUAGE', 'SOCIAL']), - duration: 25, - status: 'PUBLISHED', - version: '1.0', - coverImagePath: '/uploads/covers/love.jpg', - }, - }); - console.log('创建课程:', course2.name); - const scripts2 = [ - { - stepIndex: 1, - stepName: '导入环节', - stepType: 'INTRODUCTION', - duration: 3, - objective: '引入爱的主题', - teacherScript: '小朋友们,你们爱爸爸妈妈吗?你们是怎么表达爱的呢?', - interactionPoints: JSON.stringify(['分享表达爱的方式']), - }, - { - stepIndex: 2, - stepName: '绘本共读', - stepType: 'READING', - duration: 10, - objective: '理解故事,感受爱的表达', - teacherScript: '小栗色兔子该上床睡觉了,可是他紧紧地抓住大栗色兔子的长耳朵不放...', - interactionPoints: JSON.stringify(['模仿动作', '感受爱的比较']), - }, - { - stepIndex: 3, - stepName: '情感讨论', - stepType: 'DISCUSSION', - duration: 5, - objective: '表达自己的感受', - teacherScript: '小兔子和大兔子谁的爱更多呢?你们觉得呢?', - interactionPoints: JSON.stringify(['讨论爱的深度', '分享感受']), - }, - { - stepIndex: 4, - stepName: '爱的表达', - stepType: 'ACTIVITY', - duration: 5, - objective: '学会表达爱', - teacherScript: '让我们也来学学小兔子,用手臂来量量我们有多爱爸爸妈妈!', - interactionPoints: JSON.stringify(['肢体表达', '语言表达']), - }, - ]; - for (const script of scripts2) { - await prisma.courseScript.upsert({ - where: { - courseId_stepIndex: { - courseId: course2.id, - stepIndex: script.stepIndex, - }, - }, - update: {}, - create: { - courseId: course2.id, - ...script, - sortOrder: script.stepIndex, - }, - }); - } - await prisma.tenantCourse.upsert({ - where: { - tenantId_courseId: { - tenantId: tenant.id, - courseId: course2.id, - }, - }, - update: {}, - create: { - tenantId: tenant.id, - courseId: course2.id, - authorized: true, - authorizedAt: new Date(), - }, - }); - console.log('授权课程给租户:', tenant.id, '->', course2.id); - console.log('\n种子数据创建完成!'); - console.log('===================='); - console.log('测试账号信息:'); - console.log('超管: admin / 123456'); - console.log('教师: teacher1 / 123456'); - console.log('===================='); -} -main() - .catch((e) => { - console.error(e); - process.exit(1); -}) - .finally(async () => { - await prisma.$disconnect(); -}); -//# sourceMappingURL=seed.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/prisma/seed.js.map b/reading-platform-backend/dist/prisma/seed.js.map deleted file mode 100644 index cae8a4c..0000000 --- a/reading-platform-backend/dist/prisma/seed.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../prisma/seed.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/app.module.d.ts b/reading-platform-backend/dist/src/app.module.d.ts deleted file mode 100644 index 09cdb35..0000000 --- a/reading-platform-backend/dist/src/app.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class AppModule { -} diff --git a/reading-platform-backend/dist/src/app.module.js b/reading-platform-backend/dist/src/app.module.js deleted file mode 100644 index 77a43f4..0000000 --- a/reading-platform-backend/dist/src/app.module.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AppModule = void 0; -const common_1 = require("@nestjs/common"); -const config_1 = require("@nestjs/config"); -const throttler_1 = require("@nestjs/throttler"); -const prisma_module_1 = require("./database/prisma.module"); -const auth_module_1 = require("./modules/auth/auth.module"); -const course_module_1 = require("./modules/course/course.module"); -const tenant_module_1 = require("./modules/tenant/tenant.module"); -const common_module_1 = require("./modules/common/common.module"); -const file_upload_module_1 = require("./modules/file-upload/file-upload.module"); -const teacher_course_module_1 = require("./modules/teacher-course/teacher-course.module"); -const lesson_module_1 = require("./modules/lesson/lesson.module"); -const school_module_1 = require("./modules/school/school.module"); -const resource_module_1 = require("./modules/resource/resource.module"); -const growth_module_1 = require("./modules/growth/growth.module"); -const task_module_1 = require("./modules/task/task.module"); -const parent_module_1 = require("./modules/parent/parent.module"); -const notification_module_1 = require("./modules/notification/notification.module"); -const export_module_1 = require("./modules/export/export.module"); -const admin_module_1 = require("./modules/admin/admin.module"); -let AppModule = class AppModule { -}; -exports.AppModule = AppModule; -exports.AppModule = AppModule = __decorate([ - (0, common_1.Module)({ - imports: [ - config_1.ConfigModule.forRoot({ - isGlobal: true, - envFilePath: `.env.${process.env.NODE_ENV || 'development'}`, - }), - throttler_1.ThrottlerModule.forRoot([ - { - ttl: 60000, - limit: 100, - }, - ]), - prisma_module_1.PrismaModule, - auth_module_1.AuthModule, - course_module_1.CourseModule, - tenant_module_1.TenantModule, - common_module_1.CommonModule, - file_upload_module_1.FileUploadModule, - teacher_course_module_1.TeacherCourseModule, - lesson_module_1.LessonModule, - school_module_1.SchoolModule, - resource_module_1.ResourceModule, - growth_module_1.GrowthModule, - task_module_1.TaskModule, - parent_module_1.ParentModule, - notification_module_1.NotificationModule, - export_module_1.ExportModule, - admin_module_1.AdminModule, - ], - }) -], AppModule); -//# sourceMappingURL=app.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/app.module.js.map b/reading-platform-backend/dist/src/app.module.js.map deleted file mode 100644 index 8f6a9a5..0000000 --- a/reading-platform-backend/dist/src/app.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAA6D;AAC7D,iDAAoD;AACpD,4DAAwD;AACxD,4DAAwD;AACxD,kEAA8D;AAC9D,kEAA8D;AAC9D,kEAA8D;AAC9D,iFAA4E;AAC5E,0FAAqF;AACrF,kEAA8D;AAC9D,kEAA8D;AAC9D,wEAAoE;AACpE,kEAA8D;AAC9D,4DAAwD;AACxD,kEAA8D;AAC9D,oFAAgF;AAChF,kEAA8D;AAC9D,+DAA2D;AAuCpD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IArCrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YAEP,qBAAY,CAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,EAAE;aAC7D,CAAC;YAGF,2BAAe,CAAC,OAAO,CAAC;gBACtB;oBACE,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE,GAAG;iBACX;aACF,CAAC;YAGF,4BAAY;YAGZ,wBAAU;YACV,4BAAY;YACZ,4BAAY;YACZ,4BAAY;YACZ,qCAAgB;YAChB,2CAAmB;YACnB,4BAAY;YACZ,4BAAY;YACZ,gCAAc;YACd,4BAAY;YACZ,wBAAU;YACV,4BAAY;YACZ,wCAAkB;YAClB,4BAAY;YACZ,0BAAW;SACZ;KACF,CAAC;GACW,SAAS,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/common/filters/http-exception.filter.d.ts b/reading-platform-backend/dist/src/common/filters/http-exception.filter.d.ts deleted file mode 100644 index a45bf0c..0000000 --- a/reading-platform-backend/dist/src/common/filters/http-exception.filter.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ExceptionFilter, ArgumentsHost } from '@nestjs/common'; -export declare class HttpExceptionFilter implements ExceptionFilter { - private readonly logger; - catch(exception: unknown, host: ArgumentsHost): void; -} diff --git a/reading-platform-backend/dist/src/common/filters/http-exception.filter.js b/reading-platform-backend/dist/src/common/filters/http-exception.filter.js deleted file mode 100644 index a77d744..0000000 --- a/reading-platform-backend/dist/src/common/filters/http-exception.filter.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var HttpExceptionFilter_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HttpExceptionFilter = void 0; -const common_1 = require("@nestjs/common"); -const fs = __importStar(require("fs")); -const path = __importStar(require("path")); -let HttpExceptionFilter = HttpExceptionFilter_1 = class HttpExceptionFilter { - constructor() { - this.logger = new common_1.Logger(HttpExceptionFilter_1.name); - } - catch(exception, host) { - const ctx = host.switchToHttp(); - const response = ctx.getResponse(); - const request = ctx.getRequest(); - const status = exception instanceof common_1.HttpException - ? exception.getStatus() - : common_1.HttpStatus.INTERNAL_SERVER_ERROR; - const message = exception instanceof common_1.HttpException - ? exception.getResponse() - : { message: 'Internal server error', statusCode: 500 }; - const errorLog = { - timestamp: new Date().toISOString(), - path: request.url, - method: request.method, - body: request.body, - status, - exception: exception instanceof Error ? exception.message : String(exception), - stack: exception instanceof Error ? exception.stack : undefined, - }; - const logPath = path.join(process.cwd(), 'error.log'); - fs.appendFileSync(logPath, JSON.stringify(errorLog, null, 2) + '\n'); - this.logger.error('Exception caught', errorLog); - response.status(status).json(message); - } -}; -exports.HttpExceptionFilter = HttpExceptionFilter; -exports.HttpExceptionFilter = HttpExceptionFilter = HttpExceptionFilter_1 = __decorate([ - (0, common_1.Catch)() -], HttpExceptionFilter); -//# sourceMappingURL=http-exception.filter.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/common/filters/http-exception.filter.js.map b/reading-platform-backend/dist/src/common/filters/http-exception.filter.js.map deleted file mode 100644 index cdf4c77..0000000 --- a/reading-platform-backend/dist/src/common/filters/http-exception.filter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"http-exception.filter.js","sourceRoot":"","sources":["../../../../src/common/filters/http-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA0G;AAE1G,uCAAyB;AACzB,2CAA6B;AAGtB,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAAzB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAoCjE,CAAC;IAlCC,KAAK,CAAC,SAAkB,EAAE,IAAmB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAW,CAAC;QAE1C,MAAM,MAAM,GACV,SAAS,YAAY,sBAAa;YAChC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;YACvB,CAAC,CAAC,mBAAU,CAAC,qBAAqB,CAAC;QAEvC,MAAM,OAAO,GACX,SAAS,YAAY,sBAAa;YAChC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;YACzB,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM;YACN,SAAS,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7E,KAAK,EAAE,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAChE,CAAC;QAGF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAGrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAEhD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AArCY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,GAAE;GACK,mBAAmB,CAqC/B"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/database/prisma.module.d.ts b/reading-platform-backend/dist/src/database/prisma.module.d.ts deleted file mode 100644 index 1cba5ae..0000000 --- a/reading-platform-backend/dist/src/database/prisma.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class PrismaModule { -} diff --git a/reading-platform-backend/dist/src/database/prisma.module.js b/reading-platform-backend/dist/src/database/prisma.module.js deleted file mode 100644 index d3729fa..0000000 --- a/reading-platform-backend/dist/src/database/prisma.module.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PrismaModule = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("./prisma.service"); -let PrismaModule = class PrismaModule { -}; -exports.PrismaModule = PrismaModule; -exports.PrismaModule = PrismaModule = __decorate([ - (0, common_1.Global)(), - (0, common_1.Module)({ - providers: [prisma_service_1.PrismaService], - exports: [prisma_service_1.PrismaService], - }) -], PrismaModule); -//# sourceMappingURL=prisma.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/database/prisma.module.js.map b/reading-platform-backend/dist/src/database/prisma.module.js.map deleted file mode 100644 index 8cdb7d4..0000000 --- a/reading-platform-backend/dist/src/database/prisma.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prisma.module.js","sourceRoot":"","sources":["../../../src/database/prisma.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/database/prisma.service.d.ts b/reading-platform-backend/dist/src/database/prisma.service.d.ts deleted file mode 100644 index 3ed1f2d..0000000 --- a/reading-platform-backend/dist/src/database/prisma.service.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { OnModuleInit, OnModuleDestroy } from '@nestjs/common'; -import { PrismaClient } from '@prisma/client'; -export declare class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy { - onModuleInit(): Promise; - onModuleDestroy(): Promise; - cleanDatabase(): Promise; -} diff --git a/reading-platform-backend/dist/src/database/prisma.service.js b/reading-platform-backend/dist/src/database/prisma.service.js deleted file mode 100644 index a0029ff..0000000 --- a/reading-platform-backend/dist/src/database/prisma.service.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PrismaService = void 0; -const common_1 = require("@nestjs/common"); -const client_1 = require("@prisma/client"); -let PrismaService = class PrismaService extends client_1.PrismaClient { - async onModuleInit() { - await this.$connect(); - console.log('✅ Database connected successfully'); - } - async onModuleDestroy() { - await this.$disconnect(); - console.log('👋 Database disconnected'); - } - async cleanDatabase() { - if (process.env.NODE_ENV === 'production') { - throw new Error('Cannot clean database in production'); - } - await this.studentRecord.deleteMany(); - await this.lessonFeedback.deleteMany(); - await this.lesson.deleteMany(); - await this.tenantCourse.deleteMany(); - await this.courseScriptPage.deleteMany(); - await this.courseScript.deleteMany(); - await this.courseActivity.deleteMany(); - await this.courseResource.deleteMany(); - await this.course.deleteMany(); - await this.student.deleteMany(); - await this.class.deleteMany(); - await this.teacher.deleteMany(); - await this.tenant.deleteMany(); - await this.tag.deleteMany(); - } -}; -exports.PrismaService = PrismaService; -exports.PrismaService = PrismaService = __decorate([ - (0, common_1.Injectable)() -], PrismaService); -//# sourceMappingURL=prisma.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/database/prisma.service.js.map b/reading-platform-backend/dist/src/database/prisma.service.js.map deleted file mode 100644 index 5ee52d0..0000000 --- a/reading-platform-backend/dist/src/database/prisma.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prisma.service.js","sourceRoot":"","sources":["../../../src/database/prisma.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA2E;AAC3E,2CAA8C;AAGvC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,qBAAY;IAC7C,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAGD,KAAK,CAAC,aAAa;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAGD,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;CACF,CAAA;AAjCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CAiCzB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/main.d.ts b/reading-platform-backend/dist/src/main.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/reading-platform-backend/dist/src/main.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/reading-platform-backend/dist/src/main.js b/reading-platform-backend/dist/src/main.js deleted file mode 100644 index ba0e58a..0000000 --- a/reading-platform-backend/dist/src/main.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const core_1 = require("@nestjs/core"); -const common_1 = require("@nestjs/common"); -const config_1 = require("@nestjs/config"); -const path_1 = require("path"); -const app_module_1 = require("./app.module"); -const http_exception_filter_1 = require("./common/filters/http-exception.filter"); -async function bootstrap() { - const app = await core_1.NestFactory.create(app_module_1.AppModule, { - logger: ['error', 'warn', 'log', 'debug', 'verbose'], - }); - app.useBodyParser('json', { limit: '1500mb' }); - app.useBodyParser('urlencoded', { limit: '1500mb', extended: true }); - const configService = app.get(config_1.ConfigService); - app.useGlobalPipes(new common_1.ValidationPipe({ - whitelist: true, - forbidNonWhitelisted: true, - transform: true, - transformOptions: { - enableImplicitConversion: true, - }, - })); - app.useGlobalFilters(new http_exception_filter_1.HttpExceptionFilter()); - app.enableCors({ - origin: configService.get('FRONTEND_URL') || 'http://localhost:5173', - credentials: true, - methods: 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS', - allowedHeaders: 'Content-Type, Accept, Authorization', - }); - const uploadsPath = (0, path_1.join)(__dirname, '..', '..', 'uploads'); - app.useStaticAssets(uploadsPath, { - prefix: '/uploads/', - }); - app.setGlobalPrefix('api/v1'); - const port = configService.get('PORT') || 3000; - await app.listen(port); - console.log(` - ╔═════════════════════════════════════════════════════╗ - ║ ║ - ║ 🚀 幼儿阅读教学服务平台后端启动成功 ║ - ║ ║ - ║ 📍 Local: http://localhost:${port} ║ - ║ 📍 API: http://localhost:${port}/api/v1 ║ - ║ 📍 Prisma: npx prisma studio ║ - ║ ║ - ╚═════════════════════════════════════════════════════╝ - `); -} -bootstrap(); -//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/main.js.map b/reading-platform-backend/dist/src/main.js.map deleted file mode 100644 index b9c22e7..0000000 --- a/reading-platform-backend/dist/src/main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,2CAAwD;AACxD,2CAA+C;AAE/C,+BAA4B;AAC5B,6CAAyC;AAEzC,kFAA6E;AAE7E,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAyB,sBAAS,EAAE;QACtE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;KACrD,CAAC,CAAC;IAIH,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAErE,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,sBAAa,CAAC,CAAC;IAG7C,GAAG,CAAC,cAAc,CAChB,IAAI,uBAAc,CAAC;QACjB,SAAS,EAAE,IAAI;QACf,oBAAoB,EAAE,IAAI;QAC1B,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE;YAChB,wBAAwB,EAAE,IAAI;SAC/B;KACF,CAAC,CACH,CAAC;IAGF,GAAG,CAAC,gBAAgB,CAAC,IAAI,2CAAmB,EAAE,CAAC,CAAC;IAMhD,GAAG,CAAC,UAAU,CAAC;QACb,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAuB;QACpE,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,wCAAwC;QACjD,cAAc,EAAE,qCAAqC;KACtD,CAAC,CAAC;IAIH,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3D,GAAG,CAAC,eAAe,CAAC,WAAW,EAAE;QAC/B,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;IAGH,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE9B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAS,MAAM,CAAC,IAAI,IAAI,CAAC;IACvD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvB,OAAO,CAAC,GAAG,CAAC;;;;;yCAK2B,IAAI;yCACJ,IAAI;;;;GAI1C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,EAAE,CAAC"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.d.ts b/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.d.ts deleted file mode 100644 index f4d9180..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.d.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { AdminSettingsService } from './admin-settings.service'; -export declare class AdminSettingsController { - private readonly settingsService; - constructor(settingsService: AdminSettingsService); - getAllSettings(): Promise<{ - [x: string]: any; - }>; - updateSettings(data: Record): Promise<{ - [x: string]: any; - }>; - getBasicSettings(): Promise<{ - systemName: any; - systemDesc: any; - contactPhone: any; - contactEmail: any; - systemLogo: any; - }>; - updateBasicSettings(data: Record): Promise<{ - [x: string]: any; - }>; - getSecuritySettings(): Promise<{ - passwordStrength: any; - maxLoginAttempts: any; - tokenExpire: any; - forceHttps: any; - }>; - updateSecuritySettings(data: Record): Promise<{ - [x: string]: any; - }>; - getNotificationSettings(): Promise<{ - emailEnabled: any; - smtpHost: any; - smtpPort: any; - fromEmail: any; - smsEnabled: any; - }>; - updateNotificationSettings(data: Record): Promise<{ - [x: string]: any; - }>; - getStorageSettings(): Promise<{ - type: any; - maxFileSize: any; - allowedTypes: any; - }>; - updateStorageSettings(data: Record): Promise<{ - [x: string]: any; - }>; - getTenantDefaults(): Promise<{ - defaultTeacherQuota: any; - defaultStudentQuota: any; - enableAutoExpire: any; - notifyBeforeDays: any; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js b/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js deleted file mode 100644 index b68f017..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AdminSettingsController = void 0; -const common_1 = require("@nestjs/common"); -const admin_settings_service_1 = require("./admin-settings.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let AdminSettingsController = class AdminSettingsController { - constructor(settingsService) { - this.settingsService = settingsService; - } - async getAllSettings() { - return this.settingsService.getSettings(); - } - async updateSettings(data) { - return this.settingsService.updateSettings(data); - } - async getBasicSettings() { - return this.settingsService.getBasicSettings(); - } - async updateBasicSettings(data) { - return this.settingsService.updateSettings(data); - } - async getSecuritySettings() { - return this.settingsService.getSecuritySettings(); - } - async updateSecuritySettings(data) { - return this.settingsService.updateSettings(data); - } - async getNotificationSettings() { - return this.settingsService.getNotificationSettings(); - } - async updateNotificationSettings(data) { - return this.settingsService.updateSettings(data); - } - async getStorageSettings() { - return this.settingsService.getStorageSettings(); - } - async updateStorageSettings(data) { - return this.settingsService.updateSettings(data); - } - async getTenantDefaults() { - return this.settingsService.getTenantDefaults(); - } -}; -exports.AdminSettingsController = AdminSettingsController; -__decorate([ - (0, common_1.Get)(), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "getAllSettings", null); -__decorate([ - (0, common_1.Put)(), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "updateSettings", null); -__decorate([ - (0, common_1.Get)('basic'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "getBasicSettings", null); -__decorate([ - (0, common_1.Put)('basic'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "updateBasicSettings", null); -__decorate([ - (0, common_1.Get)('security'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "getSecuritySettings", null); -__decorate([ - (0, common_1.Put)('security'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "updateSecuritySettings", null); -__decorate([ - (0, common_1.Get)('notification'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "getNotificationSettings", null); -__decorate([ - (0, common_1.Put)('notification'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "updateNotificationSettings", null); -__decorate([ - (0, common_1.Get)('storage'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "getStorageSettings", null); -__decorate([ - (0, common_1.Put)('storage'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "updateStorageSettings", null); -__decorate([ - (0, common_1.Get)('tenant-defaults'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminSettingsController.prototype, "getTenantDefaults", null); -exports.AdminSettingsController = AdminSettingsController = __decorate([ - (0, common_1.Controller)('admin/settings'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('admin'), - __metadata("design:paramtypes", [admin_settings_service_1.AdminSettingsService]) -], AdminSettingsController); -//# sourceMappingURL=admin-settings.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js.map b/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js.map deleted file mode 100644 index b61837d..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-settings.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"admin-settings.controller.js","sourceRoot":"","sources":["../../../../src/modules/admin/admin-settings.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-settings.service.d.ts b/reading-platform-backend/dist/src/modules/admin/admin-settings.service.d.ts deleted file mode 100644 index 4330f10..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-settings.service.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class AdminSettingsService { - private prisma; - private settings; - constructor(prisma: PrismaService); - getSettings(): Promise<{ - [x: string]: any; - }>; - getSetting(key: string): Promise; - updateSettings(data: Record): Promise<{ - [x: string]: any; - }>; - getBasicSettings(): Promise<{ - systemName: any; - systemDesc: any; - contactPhone: any; - contactEmail: any; - systemLogo: any; - }>; - getSecuritySettings(): Promise<{ - passwordStrength: any; - maxLoginAttempts: any; - tokenExpire: any; - forceHttps: any; - }>; - getNotificationSettings(): Promise<{ - emailEnabled: any; - smtpHost: any; - smtpPort: any; - fromEmail: any; - smsEnabled: any; - }>; - getStorageSettings(): Promise<{ - type: any; - maxFileSize: any; - allowedTypes: any; - }>; - getTenantDefaults(): Promise<{ - defaultTeacherQuota: any; - defaultStudentQuota: any; - enableAutoExpire: any; - notifyBeforeDays: any; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/admin/admin-settings.service.js b/reading-platform-backend/dist/src/modules/admin/admin-settings.service.js deleted file mode 100644 index 829716d..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-settings.service.js +++ /dev/null @@ -1,105 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AdminSettingsService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let AdminSettingsService = class AdminSettingsService { - constructor(prisma) { - this.prisma = prisma; - this.settings = { - systemName: '幼儿阅读教学服务平台', - systemDesc: '', - contactPhone: '', - contactEmail: '', - systemLogo: '', - passwordStrength: 'medium', - maxLoginAttempts: 5, - tokenExpire: '7d', - forceHttps: false, - emailEnabled: true, - smtpHost: '', - smtpPort: 465, - smtpUser: '', - smtpPassword: '', - fromEmail: '', - smsEnabled: false, - storageType: 'local', - maxFileSize: 100, - allowedTypes: '.jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.ppt,.pptx', - defaultTeacherQuota: 20, - defaultStudentQuota: 200, - enableAutoExpire: true, - notifyBeforeDays: 30, - }; - } - async getSettings() { - return { ...this.settings }; - } - async getSetting(key) { - return this.settings[key]; - } - async updateSettings(data) { - for (const key of Object.keys(data)) { - if (key in this.settings) { - this.settings[key] = data[key]; - } - } - return { ...this.settings }; - } - async getBasicSettings() { - return { - systemName: this.settings.systemName, - systemDesc: this.settings.systemDesc, - contactPhone: this.settings.contactPhone, - contactEmail: this.settings.contactEmail, - systemLogo: this.settings.systemLogo, - }; - } - async getSecuritySettings() { - return { - passwordStrength: this.settings.passwordStrength, - maxLoginAttempts: this.settings.maxLoginAttempts, - tokenExpire: this.settings.tokenExpire, - forceHttps: this.settings.forceHttps, - }; - } - async getNotificationSettings() { - return { - emailEnabled: this.settings.emailEnabled, - smtpHost: this.settings.smtpHost, - smtpPort: this.settings.smtpPort, - fromEmail: this.settings.fromEmail, - smsEnabled: this.settings.smsEnabled, - }; - } - async getStorageSettings() { - return { - type: this.settings.storageType, - maxFileSize: this.settings.maxFileSize, - allowedTypes: this.settings.allowedTypes, - }; - } - async getTenantDefaults() { - return { - defaultTeacherQuota: this.settings.defaultTeacherQuota, - defaultStudentQuota: this.settings.defaultStudentQuota, - enableAutoExpire: this.settings.enableAutoExpire, - notifyBeforeDays: this.settings.notifyBeforeDays, - }; - } -}; -exports.AdminSettingsService = AdminSettingsService; -exports.AdminSettingsService = AdminSettingsService = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], AdminSettingsService); -//# sourceMappingURL=admin-settings.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-settings.service.js.map b/reading-platform-backend/dist/src/modules/admin/admin-settings.service.js.map deleted file mode 100644 index 832ff55..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-settings.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"admin-settings.service.js","sourceRoot":"","sources":["../../../../src/modules/admin/admin-settings.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.d.ts b/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.d.ts deleted file mode 100644 index 2b0acfe..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { AdminStatsService } from './admin-stats.service'; -export declare class AdminStatsController { - private readonly statsService; - constructor(statsService: AdminStatsService); - getStats(): Promise<{ - tenantCount: number; - activeTenantCount: number; - courseCount: number; - publishedCourseCount: number; - studentCount: number; - teacherCount: number; - lessonCount: number; - monthlyLessons: number; - }>; - getTrendData(): Promise<{ - month: string; - tenantCount: number; - lessonCount: number; - studentCount: number; - }[]>; - getActiveTenants(limit?: string): Promise<{ - id: number; - name: string; - lessonCount: number; - teacherCount: number; - studentCount: number; - }[]>; - getPopularCourses(limit?: string): Promise<{ - id: number; - name: string; - usageCount: number; - teacherCount: number; - }[]>; - getRecentActivities(limit?: string): Promise<{ - time: string; - id: number; - type: string; - title: string; - description?: string; - }[]>; -} diff --git a/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js b/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js deleted file mode 100644 index 8de7ba9..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AdminStatsController = void 0; -const common_1 = require("@nestjs/common"); -const admin_stats_service_1 = require("./admin-stats.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let AdminStatsController = class AdminStatsController { - constructor(statsService) { - this.statsService = statsService; - } - async getStats() { - return this.statsService.getStats(); - } - async getTrendData() { - return this.statsService.getTrendData(); - } - async getActiveTenants(limit) { - const limitNum = limit ? parseInt(limit, 10) : 5; - return this.statsService.getActiveTenants(limitNum); - } - async getPopularCourses(limit) { - const limitNum = limit ? parseInt(limit, 10) : 5; - return this.statsService.getPopularCourses(limitNum); - } - async getRecentActivities(limit) { - const limitNum = limit ? parseInt(limit, 10) : 10; - return this.statsService.getRecentActivities(limitNum); - } -}; -exports.AdminStatsController = AdminStatsController; -__decorate([ - (0, common_1.Get)(), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminStatsController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)('trend'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AdminStatsController.prototype, "getTrendData", null); -__decorate([ - (0, common_1.Get)('tenants/active'), - __param(0, (0, common_1.Query)('limit')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", Promise) -], AdminStatsController.prototype, "getActiveTenants", null); -__decorate([ - (0, common_1.Get)('courses/popular'), - __param(0, (0, common_1.Query)('limit')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", Promise) -], AdminStatsController.prototype, "getPopularCourses", null); -__decorate([ - (0, common_1.Get)('activities'), - __param(0, (0, common_1.Query)('limit')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", Promise) -], AdminStatsController.prototype, "getRecentActivities", null); -exports.AdminStatsController = AdminStatsController = __decorate([ - (0, common_1.Controller)('admin/stats'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('admin'), - __metadata("design:paramtypes", [admin_stats_service_1.AdminStatsService]) -], AdminStatsController); -//# sourceMappingURL=admin-stats.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js.map b/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js.map deleted file mode 100644 index 11c5f5d..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-stats.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"admin-stats.controller.js","sourceRoot":"","sources":["../../../../src/modules/admin/admin-stats.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmE;AACnE,+DAA0D;AAC1D,oEAA+D;AAC/D,8DAA0D;AAC1D,0EAA6D;AAKtD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA6B,YAA+B;QAA/B,iBAAY,GAAZ,YAAY,CAAmB;IAAG,CAAC;IAG1D,AAAN,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAGK,AAAN,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAGK,AAAN,KAAK,CAAC,gBAAgB,CAAiB,KAAc;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAGK,AAAN,KAAK,CAAC,iBAAiB,CAAiB,KAAc;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAiB,KAAc;QACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AA9BY,oDAAoB;AAIzB;IADL,IAAA,YAAG,GAAE;;;;oDAGL;AAGK;IADL,IAAA,YAAG,EAAC,OAAO,CAAC;;;;wDAGZ;AAGK;IADL,IAAA,YAAG,EAAC,gBAAgB,CAAC;IACE,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;;;;4DAGrC;AAGK;IADL,IAAA,YAAG,EAAC,iBAAiB,CAAC;IACE,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;;;;6DAGtC;AAGK;IADL,IAAA,YAAG,EAAC,YAAY,CAAC;IACS,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;;;;+DAGxC;+BA7BU,oBAAoB;IAHhC,IAAA,mBAAU,EAAC,aAAa,CAAC;IACzB,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;IACnC,IAAA,uBAAK,EAAC,OAAO,CAAC;qCAE8B,uCAAiB;GADjD,oBAAoB,CA8BhC"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-stats.service.d.ts b/reading-platform-backend/dist/src/modules/admin/admin-stats.service.d.ts deleted file mode 100644 index 4b4114d..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-stats.service.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class AdminStatsService { - private prisma; - constructor(prisma: PrismaService); - getStats(): Promise<{ - tenantCount: number; - activeTenantCount: number; - courseCount: number; - publishedCourseCount: number; - studentCount: number; - teacherCount: number; - lessonCount: number; - monthlyLessons: number; - }>; - private getThisMonthLessonCount; - getTrendData(): Promise<{ - month: string; - tenantCount: number; - lessonCount: number; - studentCount: number; - }[]>; - getActiveTenants(limit?: number): Promise<{ - id: number; - name: string; - lessonCount: number; - teacherCount: number; - studentCount: number; - }[]>; - getPopularCourses(limit?: number): Promise<{ - id: number; - name: string; - usageCount: number; - teacherCount: number; - }[]>; - getRecentActivities(limit?: number): Promise<{ - time: string; - id: number; - type: string; - title: string; - description?: string; - }[]>; -} diff --git a/reading-platform-backend/dist/src/modules/admin/admin-stats.service.js b/reading-platform-backend/dist/src/modules/admin/admin-stats.service.js deleted file mode 100644 index ad8b556..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-stats.service.js +++ /dev/null @@ -1,212 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AdminStatsService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let AdminStatsService = class AdminStatsService { - constructor(prisma) { - this.prisma = prisma; - } - async getStats() { - const [tenantCount, activeTenantCount, courseCount, publishedCourseCount, studentCount, teacherCount, lessonCount, monthlyLessons,] = await Promise.all([ - this.prisma.tenant.count(), - this.prisma.tenant.count({ where: { status: 'ACTIVE' } }), - this.prisma.course.count(), - this.prisma.course.count({ where: { status: 'PUBLISHED' } }), - this.prisma.student.count(), - this.prisma.teacher.count(), - this.prisma.lesson.count(), - this.getThisMonthLessonCount(), - ]); - return { - tenantCount, - activeTenantCount, - courseCount, - publishedCourseCount, - studentCount, - teacherCount, - lessonCount, - monthlyLessons, - }; - } - async getThisMonthLessonCount() { - const now = new Date(); - const firstDayOfMonth = new Date(now.getFullYear(), now.getMonth(), 1); - return this.prisma.lesson.count({ - where: { - createdAt: { - gte: firstDayOfMonth, - }, - }, - }); - } - async getTrendData() { - const months = []; - for (let i = 5; i >= 0; i--) { - const date = new Date(); - date.setMonth(date.getMonth() - i); - const year = date.getFullYear(); - const month = date.getMonth() + 1; - const monthStr = `${year}-${String(month).padStart(2, '0')}`; - const firstDay = new Date(year, month - 1, 1); - const lastDay = new Date(year, month, 0, 23, 59, 59); - const [tenantCount, lessonCount, studentCount] = await Promise.all([ - this.prisma.tenant.count({ - where: { - createdAt: { - lte: lastDay, - }, - }, - }), - this.prisma.lesson.count({ - where: { - createdAt: { - gte: firstDay, - lte: lastDay, - }, - }, - }), - this.prisma.student.count({ - where: { - createdAt: { - lte: lastDay, - }, - }, - }), - ]); - months.push({ - month: monthStr, - tenantCount, - lessonCount, - studentCount, - }); - } - return months; - } - async getActiveTenants(limit = 5) { - const thirtyDaysAgo = new Date(); - thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); - const tenants = await this.prisma.tenant.findMany({ - select: { - id: true, - name: true, - teacherCount: true, - studentCount: true, - _count: { - select: { - lessons: { - where: { - createdAt: { - gte: thirtyDaysAgo, - }, - }, - }, - }, - }, - }, - orderBy: { - lessons: { - _count: 'desc', - }, - }, - take: limit, - }); - return tenants.map((t) => ({ - id: t.id, - name: t.name, - lessonCount: t._count.lessons, - teacherCount: t.teacherCount, - studentCount: t.studentCount, - })); - } - async getPopularCourses(limit = 5) { - const courses = await this.prisma.course.findMany({ - select: { - id: true, - name: true, - usageCount: true, - teacherCount: true, - }, - where: { - status: 'PUBLISHED', - }, - orderBy: { - usageCount: 'desc', - }, - take: limit, - }); - return courses; - } - async getRecentActivities(limit = 10) { - const activities = []; - const recentLessons = await this.prisma.lesson.findMany({ - select: { - id: true, - createdAt: true, - tenant: { - select: { - name: true, - }, - }, - course: { - select: { - name: true, - }, - }, - }, - orderBy: { - createdAt: 'desc', - }, - take: limit, - }); - for (const lesson of recentLessons) { - activities.push({ - id: lesson.id, - type: 'lesson', - title: `${lesson.tenant.name} 完成了课程《${lesson.course.name}》`, - time: lesson.createdAt, - }); - } - const recentTenants = await this.prisma.tenant.findMany({ - select: { - id: true, - name: true, - createdAt: true, - }, - orderBy: { - createdAt: 'desc', - }, - take: limit, - }); - for (const tenant of recentTenants) { - activities.push({ - id: tenant.id + 10000, - type: 'tenant', - title: `新租户注册: ${tenant.name}`, - time: tenant.createdAt, - }); - } - return activities - .sort((a, b) => b.time.getTime() - a.time.getTime()) - .slice(0, limit) - .map((a) => ({ - ...a, - time: a.time.toISOString(), - })); - } -}; -exports.AdminStatsService = AdminStatsService; -exports.AdminStatsService = AdminStatsService = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], AdminStatsService); -//# sourceMappingURL=admin-stats.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin-stats.service.js.map b/reading-platform-backend/dist/src/modules/admin/admin-stats.service.js.map deleted file mode 100644 index e55ec15..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin-stats.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"admin-stats.service.js","sourceRoot":"","sources":["../../../../src/modules/admin/admin-stats.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin.module.d.ts b/reading-platform-backend/dist/src/modules/admin/admin.module.d.ts deleted file mode 100644 index 41d0207..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class AdminModule { -} diff --git a/reading-platform-backend/dist/src/modules/admin/admin.module.js b/reading-platform-backend/dist/src/modules/admin/admin.module.js deleted file mode 100644 index 8597542..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin.module.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AdminModule = void 0; -const common_1 = require("@nestjs/common"); -const admin_settings_controller_1 = require("./admin-settings.controller"); -const admin_settings_service_1 = require("./admin-settings.service"); -const admin_stats_controller_1 = require("./admin-stats.controller"); -const admin_stats_service_1 = require("./admin-stats.service"); -const prisma_module_1 = require("../../database/prisma.module"); -let AdminModule = class AdminModule { -}; -exports.AdminModule = AdminModule; -exports.AdminModule = AdminModule = __decorate([ - (0, common_1.Module)({ - imports: [prisma_module_1.PrismaModule], - controllers: [admin_settings_controller_1.AdminSettingsController, admin_stats_controller_1.AdminStatsController], - providers: [admin_settings_service_1.AdminSettingsService, admin_stats_service_1.AdminStatsService], - exports: [admin_settings_service_1.AdminSettingsService, admin_stats_service_1.AdminStatsService], - }) -], AdminModule); -//# sourceMappingURL=admin.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/admin/admin.module.js.map b/reading-platform-backend/dist/src/modules/admin/admin.module.js.map deleted file mode 100644 index 4a2be4b..0000000 --- a/reading-platform-backend/dist/src/modules/admin/admin.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"admin.module.js","sourceRoot":"","sources":["../../../../src/modules/admin/admin.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2EAAsE;AACtE,qEAAgE;AAChE,qEAAgE;AAChE,+DAA0D;AAC1D,gEAA4D;AAQrD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IANvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,CAAC;QACvB,WAAW,EAAE,CAAC,mDAAuB,EAAE,6CAAoB,CAAC;QAC5D,SAAS,EAAE,CAAC,6CAAoB,EAAE,uCAAiB,CAAC;QACpD,OAAO,EAAE,CAAC,6CAAoB,EAAE,uCAAiB,CAAC;KACnD,CAAC;GACW,WAAW,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/auth.controller.d.ts b/reading-platform-backend/dist/src/modules/auth/auth.controller.d.ts deleted file mode 100644 index 3518ffb..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.controller.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { AuthService } from './auth.service'; -import { LoginDto } from './dto/login.dto'; -export declare class AuthController { - private authService; - constructor(authService: AuthService); - login(loginDto: LoginDto): Promise<{ - token: string; - user: { - id: any; - name: any; - role: any; - tenantId: any; - tenantName: any; - }; - }>; - logout(): Promise<{ - message: string; - }>; - getProfile(req: any): Promise<{ - id: number; - name: string; - role: string; - tenantId?: undefined; - tenantName?: undefined; - email?: undefined; - phone?: undefined; - children?: undefined; - } | { - id: number; - name: string; - role: string; - tenantId: number; - tenantName: string; - email?: undefined; - phone?: undefined; - children?: undefined; - } | { - id: number; - name: string; - role: string; - tenantId: number; - tenantName: string; - email: string; - phone: string; - children?: undefined; - } | { - id: number; - name: string; - role: string; - tenantId: number; - tenantName: string; - email: string; - phone: string; - children: { - id: number; - name: string; - relationship: string; - }[]; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/auth/auth.controller.js b/reading-platform-backend/dist/src/modules/auth/auth.controller.js deleted file mode 100644 index 927058f..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.controller.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AuthController = void 0; -const common_1 = require("@nestjs/common"); -const auth_service_1 = require("./auth.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const login_dto_1 = require("./dto/login.dto"); -let AuthController = class AuthController { - constructor(authService) { - this.authService = authService; - } - async login(loginDto) { - return this.authService.login(loginDto); - } - async logout() { - return { message: 'Logged out successfully' }; - } - async getProfile(req) { - return this.authService.getProfile(req.user.userId, req.user.role); - } -}; -exports.AuthController = AuthController; -__decorate([ - (0, common_1.Post)('login'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [login_dto_1.LoginDto]), - __metadata("design:returntype", Promise) -], AuthController.prototype, "login", null); -__decorate([ - (0, common_1.Post)('logout'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], AuthController.prototype, "logout", null); -__decorate([ - (0, common_1.Get)('profile'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AuthController.prototype, "getProfile", null); -exports.AuthController = AuthController = __decorate([ - (0, common_1.Controller)('auth'), - __metadata("design:paramtypes", [auth_service_1.AuthService]) -], AuthController); -//# sourceMappingURL=auth.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/auth.controller.js.map b/reading-platform-backend/dist/src/modules/auth/auth.controller.js.map deleted file mode 100644 index 6c2576c..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiF;AACjF,iDAA6C;AAC7C,oEAA+D;AAC/D,+CAA2C;AAGpC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAG1C,AAAN,KAAK,CAAC,KAAK,CAAS,QAAkB;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM;QAEV,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IAChD,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CAAY,GAAG;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;CACF,CAAA;AApBY,wCAAc;AAInB;IADL,IAAA,aAAI,EAAC,OAAO,CAAC;IACD,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAW,oBAAQ;;2CAErC;AAIK;IAFL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,kBAAS,EAAC,6BAAY,CAAC;;;;4CAIvB;AAIK;IAFL,IAAA,YAAG,EAAC,SAAS,CAAC;IACd,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACN,WAAA,IAAA,gBAAO,GAAE,CAAA;;;;gDAE1B;yBAnBU,cAAc;IAD1B,IAAA,mBAAU,EAAC,MAAM,CAAC;qCAEgB,0BAAW;GADjC,cAAc,CAoB1B"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/auth.module.d.ts b/reading-platform-backend/dist/src/modules/auth/auth.module.d.ts deleted file mode 100644 index 3f7dba9..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class AuthModule { -} diff --git a/reading-platform-backend/dist/src/modules/auth/auth.module.js b/reading-platform-backend/dist/src/modules/auth/auth.module.js deleted file mode 100644 index 1f3bdae..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.module.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AuthModule = void 0; -const common_1 = require("@nestjs/common"); -const jwt_1 = require("@nestjs/jwt"); -const passport_1 = require("@nestjs/passport"); -const config_1 = require("@nestjs/config"); -const auth_service_1 = require("./auth.service"); -const auth_controller_1 = require("./auth.controller"); -const jwt_strategy_1 = require("./strategies/jwt.strategy"); -const prisma_module_1 = require("../../database/prisma.module"); -let AuthModule = class AuthModule { -}; -exports.AuthModule = AuthModule; -exports.AuthModule = AuthModule = __decorate([ - (0, common_1.Module)({ - imports: [ - passport_1.PassportModule, - jwt_1.JwtModule.registerAsync({ - imports: [config_1.ConfigModule], - useFactory: async (configService) => ({ - secret: configService.get('JWT_SECRET') || 'your-secret-key', - signOptions: { - expiresIn: configService.get('JWT_EXPIRES_IN') || '7d', - }, - }), - inject: [config_1.ConfigService], - }), - prisma_module_1.PrismaModule, - ], - controllers: [auth_controller_1.AuthController], - providers: [auth_service_1.AuthService, jwt_strategy_1.JwtStrategy], - exports: [auth_service_1.AuthService], - }) -], AuthModule); -//# sourceMappingURL=auth.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/auth.module.js.map b/reading-platform-backend/dist/src/modules/auth/auth.module.js.map deleted file mode 100644 index b2f1d18..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qCAAwC;AACxC,+CAAkD;AAClD,2CAA6D;AAC7D,iDAA6C;AAC7C,uDAAmD;AACnD,4DAAwD;AACxD,gEAA4D;AAqBrD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAnBtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,yBAAc;YACd,eAAS,CAAC,aAAa,CAAC;gBACtB,OAAO,EAAE,CAAC,qBAAY,CAAC;gBACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE,CAAC,CAAC;oBACnD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAS,YAAY,CAAC,IAAI,iBAAiB;oBACpE,WAAW,EAAE;wBACX,SAAS,EAAE,aAAa,CAAC,GAAG,CAAS,gBAAgB,CAAC,IAAI,IAAI;qBAC/D;iBACF,CAAC;gBACF,MAAM,EAAE,CAAC,sBAAa,CAAC;aACxB,CAAC;YACF,4BAAY;SACb;QACD,WAAW,EAAE,CAAC,gCAAc,CAAC;QAC7B,SAAS,EAAE,CAAC,0BAAW,EAAE,0BAAW,CAAC;QACrC,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,UAAU,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/auth.service.d.ts b/reading-platform-backend/dist/src/modules/auth/auth.service.d.ts deleted file mode 100644 index f203ca3..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.service.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { JwtService } from '@nestjs/jwt'; -import { PrismaService } from '../../database/prisma.service'; -export interface LoginDto { - account: string; - password: string; - role: string; -} -export interface JwtPayload { - sub: number; - role: string; - tenantId?: number; -} -export declare class AuthService { - private prisma; - private jwtService; - constructor(prisma: PrismaService, jwtService: JwtService); - validateUser(account: string, password: string): Promise<{ - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - classIds: string | null; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - login(dto: LoginDto): Promise<{ - token: string; - user: { - id: any; - name: any; - role: any; - tenantId: any; - tenantName: any; - }; - }>; - getProfile(userId: number, role: string): Promise<{ - id: number; - name: string; - role: string; - tenantId?: undefined; - tenantName?: undefined; - email?: undefined; - phone?: undefined; - children?: undefined; - } | { - id: number; - name: string; - role: string; - tenantId: number; - tenantName: string; - email?: undefined; - phone?: undefined; - children?: undefined; - } | { - id: number; - name: string; - role: string; - tenantId: number; - tenantName: string; - email: string; - phone: string; - children?: undefined; - } | { - id: number; - name: string; - role: string; - tenantId: number; - tenantName: string; - email: string; - phone: string; - children: { - id: number; - name: string; - relationship: string; - }[]; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/auth/auth.service.js b/reading-platform-backend/dist/src/modules/auth/auth.service.js deleted file mode 100644 index 9209269..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.service.js +++ /dev/null @@ -1,287 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AuthService = void 0; -const common_1 = require("@nestjs/common"); -const jwt_1 = require("@nestjs/jwt"); -const prisma_service_1 = require("../../database/prisma.service"); -const bcrypt = __importStar(require("bcrypt")); -let AuthService = class AuthService { - constructor(prisma, jwtService) { - this.prisma = prisma; - this.jwtService = jwtService; - } - async validateUser(account, password) { - const user = await this.prisma.teacher.findUnique({ - where: { loginAccount: account }, - }); - if (!user) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - const isPasswordValid = await bcrypt.compare(password, user.passwordHash); - if (!isPasswordValid) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - if (user.status !== 'ACTIVE') { - throw new common_1.UnauthorizedException('账号已被停用'); - } - return user; - } - async login(dto) { - let user; - if (dto.role === 'admin') { - if (dto.account === 'admin' && dto.password === 'admin123') { - user = { - id: 1, - name: '超级管理员', - role: 'admin', - }; - } - else { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - } - else if (dto.role === 'school') { - const tenant = await this.prisma.tenant.findUnique({ - where: { loginAccount: dto.account }, - }); - if (!tenant) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - if (!tenant.passwordHash) { - throw new common_1.UnauthorizedException('账号未设置密码'); - } - const isPasswordValid = await bcrypt.compare(dto.password, tenant.passwordHash); - if (!isPasswordValid) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - if (tenant.status !== 'ACTIVE') { - throw new common_1.UnauthorizedException('账号已被停用'); - } - user = { - id: tenant.id, - name: tenant.name, - role: 'school', - tenantId: tenant.id, - tenantName: tenant.name, - }; - } - else if (dto.role === 'teacher') { - const teacher = await this.prisma.teacher.findUnique({ - where: { loginAccount: dto.account }, - include: { - tenant: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (!teacher) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - const isPasswordValid = await bcrypt.compare(dto.password, teacher.passwordHash); - if (!isPasswordValid) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - if (teacher.status !== 'ACTIVE') { - throw new common_1.UnauthorizedException('账号已被停用'); - } - user = { - id: teacher.id, - name: teacher.name, - role: 'teacher', - tenantId: teacher.tenantId, - tenantName: teacher.tenant?.name, - }; - } - else if (dto.role === 'parent') { - const parent = await this.prisma.parent.findUnique({ - where: { loginAccount: dto.account }, - include: { - tenant: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (!parent) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - const isPasswordValid = await bcrypt.compare(dto.password, parent.passwordHash); - if (!isPasswordValid) { - throw new common_1.UnauthorizedException('账号或密码错误'); - } - if (parent.status !== 'ACTIVE') { - throw new common_1.UnauthorizedException('账号已被停用'); - } - user = { - id: parent.id, - name: parent.name, - role: 'parent', - tenantId: parent.tenantId, - tenantName: parent.tenant?.name, - }; - await this.prisma.parent.update({ - where: { id: parent.id }, - data: { lastLoginAt: new Date() }, - }); - } - else { - throw new common_1.UnauthorizedException('无效的角色'); - } - const payload = { - sub: user.id, - role: user.role, - tenantId: user.tenantId, - }; - const token = this.jwtService.sign(payload); - if (dto.role === 'teacher') { - await this.prisma.teacher.update({ - where: { id: user.id }, - data: { lastLoginAt: new Date() }, - }); - } - return { - token, - user: { - id: user.id, - name: user.name, - role: user.role, - tenantId: user.tenantId, - tenantName: user.tenantName, - }, - }; - } - async getProfile(userId, role) { - if (role === 'admin') { - return { - id: 1, - name: '超级管理员', - role: 'admin', - }; - } - else if (role === 'school') { - const tenant = await this.prisma.tenant.findUnique({ - where: { id: userId }, - }); - if (!tenant) { - throw new common_1.UnauthorizedException('用户不存在'); - } - return { - id: tenant.id, - name: tenant.name, - role: 'school', - tenantId: tenant.id, - tenantName: tenant.name, - }; - } - else if (role === 'teacher') { - const teacher = await this.prisma.teacher.findUnique({ - where: { id: userId }, - include: { - tenant: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (!teacher) { - throw new common_1.UnauthorizedException('用户不存在'); - } - return { - id: teacher.id, - name: teacher.name, - role: 'teacher', - tenantId: teacher.tenantId, - tenantName: teacher.tenant?.name, - email: teacher.email, - phone: teacher.phone, - }; - } - else if (role === 'parent') { - const parent = await this.prisma.parent.findUnique({ - where: { id: userId }, - include: { - tenant: { - select: { - id: true, - name: true, - }, - }, - children: { - include: { - student: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }); - if (!parent) { - throw new common_1.UnauthorizedException('用户不存在'); - } - return { - id: parent.id, - name: parent.name, - role: 'parent', - tenantId: parent.tenantId, - tenantName: parent.tenant?.name, - email: parent.email, - phone: parent.phone, - children: parent.children.map((c) => ({ - id: c.student.id, - name: c.student.name, - relationship: c.relationship, - })), - }; - } - throw new common_1.UnauthorizedException('无效的角色'); - } -}; -exports.AuthService = AuthService; -exports.AuthService = AuthService = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService, - jwt_1.JwtService]) -], AuthService); -//# sourceMappingURL=auth.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/auth.service.js.map b/reading-platform-backend/dist/src/modules/auth/auth.service.js.map deleted file mode 100644 index 0986acc..0000000 --- a/reading-platform-backend/dist/src/modules/auth/auth.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/dto/login.dto.d.ts b/reading-platform-backend/dist/src/modules/auth/dto/login.dto.d.ts deleted file mode 100644 index 705328a..0000000 --- a/reading-platform-backend/dist/src/modules/auth/dto/login.dto.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare class LoginDto { - account: string; - password: string; - role: string; -} diff --git a/reading-platform-backend/dist/src/modules/auth/dto/login.dto.js b/reading-platform-backend/dist/src/modules/auth/dto/login.dto.js deleted file mode 100644 index 84eace0..0000000 --- a/reading-platform-backend/dist/src/modules/auth/dto/login.dto.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LoginDto = void 0; -const class_validator_1 = require("class-validator"); -class LoginDto { -} -exports.LoginDto = LoginDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], LoginDto.prototype, "account", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], LoginDto.prototype, "password", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsIn)(['admin', 'school', 'teacher', 'parent']), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], LoginDto.prototype, "role", void 0); -//# sourceMappingURL=login.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/dto/login.dto.js.map b/reading-platform-backend/dist/src/modules/auth/dto/login.dto.js.map deleted file mode 100644 index 232b806..0000000 --- a/reading-platform-backend/dist/src/modules/auth/dto/login.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"login.dto.js","sourceRoot":"","sources":["../../../../../src/modules/auth/dto/login.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA6D;AAE7D,MAAa,QAAQ;CAapB;AAbD,4BAaC;AAVC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;yCACG;AAIhB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;0CACI;AAKjB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,sBAAI,EAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAA,4BAAU,GAAE;;sCACA"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.d.ts b/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.d.ts deleted file mode 100644 index d6259c0..0000000 --- a/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Strategy } from 'passport-jwt'; -import { ConfigService } from '@nestjs/config'; -export interface JwtPayload { - sub: number; - role: string; - tenantId?: number; -} -declare const JwtStrategy_base: new (...args: any[]) => Strategy; -export declare class JwtStrategy extends JwtStrategy_base { - private configService; - constructor(configService: ConfigService); - validate(payload: JwtPayload): Promise<{ - userId: number; - role: string; - tenantId: number; - }>; -} -export {}; diff --git a/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js b/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js deleted file mode 100644 index b32a1b4..0000000 --- a/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.JwtStrategy = void 0; -const common_1 = require("@nestjs/common"); -const passport_1 = require("@nestjs/passport"); -const passport_jwt_1 = require("passport-jwt"); -const config_1 = require("@nestjs/config"); -let JwtStrategy = class JwtStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy) { - constructor(configService) { - super({ - jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(), - ignoreExpiration: false, - secretOrKey: configService.get('JWT_SECRET') || 'your-secret-key', - }); - this.configService = configService; - } - async validate(payload) { - if (!payload.sub || !payload.role) { - throw new common_1.UnauthorizedException(); - } - return { - userId: payload.sub, - role: payload.role, - tenantId: payload.tenantId, - }; - } -}; -exports.JwtStrategy = JwtStrategy; -exports.JwtStrategy = JwtStrategy = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [config_1.ConfigService]) -], JwtStrategy); -//# sourceMappingURL=jwt.strategy.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js.map b/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js.map deleted file mode 100644 index b3c2301..0000000 --- a/reading-platform-backend/dist/src/modules/auth/strategies/jwt.strategy.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jwt.strategy.js","sourceRoot":"","sources":["../../../../../src/modules/auth/strategies/jwt.strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,+CAAoD;AACpD,+CAAoD;AACpD,2CAA+C;AASxC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,IAAA,2BAAgB,EAAC,uBAAQ,CAAC;IACzD,YAAoB,aAA4B;QAC9C,KAAK,CAAC;YACJ,cAAc,EAAE,yBAAU,CAAC,2BAA2B,EAAE;YACxD,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,aAAa,CAAC,GAAG,CAAS,YAAY,CAAC,IAAI,iBAAiB;SAC1E,CAAC,CAAC;QALe,kBAAa,GAAb,aAAa,CAAe;IAMhD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,GAAG;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;IACJ,CAAC;CACF,CAAA;AApBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAEwB,sBAAa;GADrC,WAAW,CAoBvB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/common.module.d.ts b/reading-platform-backend/dist/src/modules/common/common.module.d.ts deleted file mode 100644 index 463c737..0000000 --- a/reading-platform-backend/dist/src/modules/common/common.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class CommonModule { -} diff --git a/reading-platform-backend/dist/src/modules/common/common.module.js b/reading-platform-backend/dist/src/modules/common/common.module.js deleted file mode 100644 index 1501d39..0000000 --- a/reading-platform-backend/dist/src/modules/common/common.module.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CommonModule = void 0; -const common_1 = require("@nestjs/common"); -const jwt_auth_guard_1 = require("./guards/jwt-auth.guard"); -const roles_guard_1 = require("./guards/roles.guard"); -const log_interceptor_1 = require("./interceptors/log.interceptor"); -const operation_log_service_1 = require("./operation-log.service"); -const operation_log_controller_1 = require("./operation-log.controller"); -let CommonModule = class CommonModule { -}; -exports.CommonModule = CommonModule; -exports.CommonModule = CommonModule = __decorate([ - (0, common_1.Module)({ - controllers: [operation_log_controller_1.SchoolOperationLogController, operation_log_controller_1.AdminOperationLogController], - providers: [jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard, log_interceptor_1.LogInterceptor, operation_log_service_1.OperationLogService], - exports: [jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard, log_interceptor_1.LogInterceptor, operation_log_service_1.OperationLogService], - }) -], CommonModule); -//# sourceMappingURL=common.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/common.module.js.map b/reading-platform-backend/dist/src/modules/common/common.module.js.map deleted file mode 100644 index a25f747..0000000 --- a/reading-platform-backend/dist/src/modules/common/common.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"common.module.js","sourceRoot":"","sources":["../../../../src/modules/common/common.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,4DAAuD;AACvD,sDAAkD;AAClD,oEAAgE;AAChE,mEAA8D;AAC9D,yEAAuG;AAOhG,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,uDAA4B,EAAE,sDAA2B,CAAC;QACxE,SAAS,EAAE,CAAC,6BAAY,EAAE,wBAAU,EAAE,gCAAc,EAAE,2CAAmB,CAAC;QAC1E,OAAO,EAAE,CAAC,6BAAY,EAAE,wBAAU,EAAE,gCAAc,EAAE,2CAAmB,CAAC;KACzE,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.d.ts b/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.d.ts deleted file mode 100644 index 5ab111e..0000000 --- a/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare const LOG_OPERATION_KEY = "log_operation"; -export interface LogOperationOptions { - action: string; - module: string; - description: string; -} -export declare const LogOperation: (options: LogOperationOptions) => import("@nestjs/common").CustomDecorator; diff --git a/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js b/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js deleted file mode 100644 index 968d232..0000000 --- a/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LogOperation = exports.LOG_OPERATION_KEY = void 0; -const common_1 = require("@nestjs/common"); -exports.LOG_OPERATION_KEY = 'log_operation'; -const LogOperation = (options) => { - return (0, common_1.SetMetadata)(exports.LOG_OPERATION_KEY, options); -}; -exports.LogOperation = LogOperation; -//# sourceMappingURL=log-operation.decorator.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js.map b/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js.map deleted file mode 100644 index 2ff7935..0000000 --- a/reading-platform-backend/dist/src/modules/common/decorators/log-operation.decorator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log-operation.decorator.js","sourceRoot":"","sources":["../../../../../src/modules/common/decorators/log-operation.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAEhC,QAAA,iBAAiB,GAAG,eAAe,CAAC;AAY1C,MAAM,YAAY,GAAG,CAAC,OAA4B,EAAE,EAAE;IAC3D,OAAO,IAAA,oBAAW,EAAC,yBAAiB,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.d.ts b/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.d.ts deleted file mode 100644 index bd39810..0000000 --- a/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const ROLES_KEY = "roles"; -export declare const Roles: (...roles: string[]) => import("@nestjs/common").CustomDecorator; diff --git a/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js b/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js deleted file mode 100644 index 126533b..0000000 --- a/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Roles = exports.ROLES_KEY = void 0; -const common_1 = require("@nestjs/common"); -exports.ROLES_KEY = 'roles'; -const Roles = (...roles) => (0, common_1.SetMetadata)(exports.ROLES_KEY, roles); -exports.Roles = Roles; -//# sourceMappingURL=roles.decorator.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js.map b/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js.map deleted file mode 100644 index 2f74a2e..0000000 --- a/reading-platform-backend/dist/src/modules/common/decorators/roles.decorator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"roles.decorator.js","sourceRoot":"","sources":["../../../../../src/modules/common/decorators/roles.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAEhC,QAAA,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAe,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,iBAAS,EAAE,KAAK,CAAC,CAAC;AAA9D,QAAA,KAAK,SAAyD"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.d.ts b/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.d.ts deleted file mode 100644 index f7044e7..0000000 --- a/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ExecutionContext } from '@nestjs/common'; -import { Reflector } from '@nestjs/core'; -declare const JwtAuthGuard_base: import("@nestjs/passport").Type; -export declare class JwtAuthGuard extends JwtAuthGuard_base { - private reflector; - constructor(reflector: Reflector); - canActivate(context: ExecutionContext): boolean | Promise | import("rxjs").Observable; -} -export {}; diff --git a/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js b/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js deleted file mode 100644 index 703d1bf..0000000 --- a/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.JwtAuthGuard = void 0; -const common_1 = require("@nestjs/common"); -const core_1 = require("@nestjs/core"); -const passport_1 = require("@nestjs/passport"); -let JwtAuthGuard = class JwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') { - constructor(reflector) { - super(); - this.reflector = reflector; - } - canActivate(context) { - const requireAuth = this.reflector.getAllAndOverride('requireAuth', [ - context.getHandler(), - context.getClass(), - ]); - if (requireAuth === false) { - return true; - } - return super.canActivate(context); - } -}; -exports.JwtAuthGuard = JwtAuthGuard; -exports.JwtAuthGuard = JwtAuthGuard = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [core_1.Reflector]) -], JwtAuthGuard); -//# sourceMappingURL=jwt-auth.guard.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js.map b/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js.map deleted file mode 100644 index fa26252..0000000 --- a/reading-platform-backend/dist/src/modules/common/guards/jwt-auth.guard.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../../../src/modules/common/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,uCAAyC;AACzC,+CAA6C;AAGtC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAChD,YAAoB,SAAoB;QACtC,KAAK,EAAE,CAAC;QADU,cAAS,GAAT,SAAS,CAAW;IAExC,CAAC;IAED,WAAW,CAAC,OAAyB;QAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,aAAa,EAAE;YAC3E,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AAlBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,YAAY,CAkBxB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/guards/roles.guard.d.ts b/reading-platform-backend/dist/src/modules/common/guards/roles.guard.d.ts deleted file mode 100644 index 3e9645a..0000000 --- a/reading-platform-backend/dist/src/modules/common/guards/roles.guard.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { CanActivate, ExecutionContext } from '@nestjs/common'; -import { Reflector } from '@nestjs/core'; -export declare class RolesGuard implements CanActivate { - private reflector; - constructor(reflector: Reflector); - canActivate(context: ExecutionContext): boolean; -} diff --git a/reading-platform-backend/dist/src/modules/common/guards/roles.guard.js b/reading-platform-backend/dist/src/modules/common/guards/roles.guard.js deleted file mode 100644 index 6cab0e8..0000000 --- a/reading-platform-backend/dist/src/modules/common/guards/roles.guard.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.RolesGuard = void 0; -const common_1 = require("@nestjs/common"); -const core_1 = require("@nestjs/core"); -const roles_decorator_1 = require("../decorators/roles.decorator"); -let RolesGuard = class RolesGuard { - constructor(reflector) { - this.reflector = reflector; - } - canActivate(context) { - const requiredRoles = this.reflector.getAllAndOverride(roles_decorator_1.ROLES_KEY, [ - context.getHandler(), - context.getClass(), - ]); - if (!requiredRoles) { - return true; - } - const { user } = context.switchToHttp().getRequest(); - return requiredRoles.some((role) => user?.role === role); - } -}; -exports.RolesGuard = RolesGuard; -exports.RolesGuard = RolesGuard = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [core_1.Reflector]) -], RolesGuard); -//# sourceMappingURL=roles.guard.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/guards/roles.guard.js.map b/reading-platform-backend/dist/src/modules/common/guards/roles.guard.js.map deleted file mode 100644 index 318706e..0000000 --- a/reading-platform-backend/dist/src/modules/common/guards/roles.guard.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"roles.guard.js","sourceRoot":"","sources":["../../../../../src/modules/common/guards/roles.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA2E;AAC3E,uCAAyC;AACzC,mEAA0D;AAGnD,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,WAAW,CAAC,OAAyB;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,2BAAS,EAAE;YAC1E,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAGH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAGrD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAnBY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,UAAU,CAmBtB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.d.ts b/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.d.ts deleted file mode 100644 index 376f85c..0000000 --- a/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common'; -import { Reflector } from '@nestjs/core'; -import { Observable } from 'rxjs'; -import { PrismaService } from '../../../database/prisma.service'; -export declare class LogInterceptor implements NestInterceptor { - private reflector; - private prisma; - private readonly logger; - constructor(reflector: Reflector, prisma: PrismaService); - intercept(context: ExecutionContext, next: CallHandler): Observable; - private saveLog; - private getIpAddress; -} diff --git a/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js b/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js deleted file mode 100644 index 68cbef5..0000000 --- a/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js +++ /dev/null @@ -1,115 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var LogInterceptor_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LogInterceptor = void 0; -const common_1 = require("@nestjs/common"); -const core_1 = require("@nestjs/core"); -const rxjs_1 = require("rxjs"); -const prisma_service_1 = require("../../../database/prisma.service"); -const log_operation_decorator_1 = require("../decorators/log-operation.decorator"); -let LogInterceptor = LogInterceptor_1 = class LogInterceptor { - constructor(reflector, prisma) { - this.reflector = reflector; - this.prisma = prisma; - this.logger = new common_1.Logger(LogInterceptor_1.name); - } - intercept(context, next) { - const logOptions = this.reflector.getAllAndOverride(log_operation_decorator_1.LOG_OPERATION_KEY, [context.getHandler(), context.getClass()]); - if (!logOptions) { - return next.handle(); - } - const request = context.switchToHttp().getRequest(); - const user = request.user; - const startTime = Date.now(); - const body = request.body; - const params = request.params; - return next.handle().pipe((0, rxjs_1.tap)({ - next: (response) => { - this.saveLog({ - user, - logOptions, - body, - params, - response, - ipAddress: this.getIpAddress(request), - userAgent: request.headers['user-agent'], - duration: Date.now() - startTime, - }); - }, - error: (error) => { - this.saveLog({ - user, - logOptions, - body, - params, - response: { error: error.message }, - ipAddress: this.getIpAddress(request), - userAgent: request.headers['user-agent'], - duration: Date.now() - startTime, - isError: true, - }); - }, - })); - } - async saveLog(data) { - try { - const { user, logOptions, body, params, response, ipAddress, userAgent } = data; - let targetId; - if (params?.id) { - targetId = parseInt(params.id, 10); - } - else if (response?.id) { - targetId = response.id; - } - else if (body?.id) { - targetId = body.id; - } - let description = logOptions.description; - if (data.isError) { - description = `[失败] ${description}`; - } - await this.prisma.operationLog.create({ - data: { - tenantId: user?.tenantId || null, - userId: user?.userId || 0, - userType: user?.role || 'UNKNOWN', - action: logOptions.action, - module: logOptions.module, - description, - targetId, - oldValue: body ? JSON.stringify(body) : null, - newValue: response ? JSON.stringify(response) : null, - ipAddress, - userAgent, - }, - }); - this.logger.debug(`Operation logged: ${logOptions.module} - ${logOptions.action} (${data.duration}ms)`); - } - catch (error) { - this.logger.error('Failed to save operation log:', error); - } - } - getIpAddress(request) { - return (request.headers['x-forwarded-for']?.split(',')[0]?.trim() || - request.headers['x-real-ip'] || - request.connection?.remoteAddress || - request.socket?.remoteAddress || - 'unknown'); - } -}; -exports.LogInterceptor = LogInterceptor; -exports.LogInterceptor = LogInterceptor = LogInterceptor_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [core_1.Reflector, - prisma_service_1.PrismaService]) -], LogInterceptor); -//# sourceMappingURL=log.interceptor.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js.map b/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js.map deleted file mode 100644 index 9dece1a..0000000 --- a/reading-platform-backend/dist/src/modules/common/interceptors/log.interceptor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"log.interceptor.js","sourceRoot":"","sources":["../../../../../src/modules/common/interceptors/log.interceptor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/operation-log.controller.d.ts b/reading-platform-backend/dist/src/modules/common/operation-log.controller.d.ts deleted file mode 100644 index bdfa410..0000000 --- a/reading-platform-backend/dist/src/modules/common/operation-log.controller.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { OperationLogService } from './operation-log.service'; -export declare class SchoolOperationLogController { - private readonly logService; - constructor(logService: OperationLogService); - getLogs(req: any, query: any): Promise<{ - items: { - id: number; - tenantId: number | null; - description: string; - createdAt: Date; - ipAddress: string | null; - userAgent: string | null; - userId: number; - userType: string; - action: string; - module: string; - targetId: number | null; - oldValue: string | null; - newValue: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getStats(req: any, query: any): Promise<{ - modules: { - name: string; - count: number; - }[]; - actions: { - name: string; - count: number; - }[]; - total: number; - }>; - getLogById(req: any, id: string): Promise<{ - oldValue: any; - newValue: any; - id: number; - tenantId: number | null; - description: string; - createdAt: Date; - ipAddress: string | null; - userAgent: string | null; - userId: number; - userType: string; - action: string; - module: string; - targetId: number | null; - }>; -} -export declare class AdminOperationLogController { - private readonly logService; - constructor(logService: OperationLogService); - getLogs(query: any): Promise<{ - items: { - id: number; - tenantId: number | null; - description: string; - createdAt: Date; - ipAddress: string | null; - userAgent: string | null; - userId: number; - userType: string; - action: string; - module: string; - targetId: number | null; - oldValue: string | null; - newValue: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getStats(query: any): Promise<{ - modules: { - name: string; - count: number; - }[]; - actions: { - name: string; - count: number; - }[]; - total: number; - }>; - getLogById(id: string): Promise<{ - oldValue: any; - newValue: any; - id: number; - tenantId: number | null; - description: string; - createdAt: Date; - ipAddress: string | null; - userAgent: string | null; - userId: number; - userType: string; - action: string; - module: string; - targetId: number | null; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/common/operation-log.controller.js b/reading-platform-backend/dist/src/modules/common/operation-log.controller.js deleted file mode 100644 index e5a8e18..0000000 --- a/reading-platform-backend/dist/src/modules/common/operation-log.controller.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AdminOperationLogController = exports.SchoolOperationLogController = void 0; -const common_1 = require("@nestjs/common"); -const operation_log_service_1 = require("./operation-log.service"); -const jwt_auth_guard_1 = require("./guards/jwt-auth.guard"); -const roles_guard_1 = require("./guards/roles.guard"); -const roles_decorator_1 = require("./decorators/roles.decorator"); -let SchoolOperationLogController = class SchoolOperationLogController { - constructor(logService) { - this.logService = logService; - } - getLogs(req, query) { - return this.logService.getLogs(req.user.tenantId, query); - } - getStats(req, query) { - return this.logService.getModuleStats(req.user.tenantId, query.startDate, query.endDate); - } - getLogById(req, id) { - return this.logService.getLogById(req.user.tenantId, +id); - } -}; -exports.SchoolOperationLogController = SchoolOperationLogController; -__decorate([ - (0, common_1.Get)('operation-logs'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolOperationLogController.prototype, "getLogs", null); -__decorate([ - (0, common_1.Get)('operation-logs/stats'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolOperationLogController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)('operation-logs/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolOperationLogController.prototype, "getLogById", null); -exports.SchoolOperationLogController = SchoolOperationLogController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [operation_log_service_1.OperationLogService]) -], SchoolOperationLogController); -let AdminOperationLogController = class AdminOperationLogController { - constructor(logService) { - this.logService = logService; - } - getLogs(query) { - return this.logService.getLogs(null, query); - } - getStats(query) { - return this.logService.getModuleStats(null, query.startDate, query.endDate); - } - getLogById(id) { - return this.logService.getLogById(null, +id); - } -}; -exports.AdminOperationLogController = AdminOperationLogController; -__decorate([ - (0, common_1.Get)('operation-logs'), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], AdminOperationLogController.prototype, "getLogs", null); -__decorate([ - (0, common_1.Get)('operation-logs/stats'), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], AdminOperationLogController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)('operation-logs/:id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], AdminOperationLogController.prototype, "getLogById", null); -exports.AdminOperationLogController = AdminOperationLogController = __decorate([ - (0, common_1.Controller)('admin'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('admin'), - __metadata("design:paramtypes", [operation_log_service_1.OperationLogService]) -], AdminOperationLogController); -//# sourceMappingURL=operation-log.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/operation-log.controller.js.map b/reading-platform-backend/dist/src/modules/common/operation-log.controller.js.map deleted file mode 100644 index 57bd5ac..0000000 --- a/reading-platform-backend/dist/src/modules/common/operation-log.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation-log.controller.js","sourceRoot":"","sources":["../../../../src/modules/common/operation-log.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,mEAA8D;AAC9D,4DAAuD;AACvD,sDAAkD;AAClD,kEAAqD;AAK9C,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IACvC,YAA6B,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAGhE,OAAO,CAAY,GAAQ,EAAW,KAAU;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAGD,QAAQ,CAAY,GAAQ,EAAW,KAAU;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3F,CAAC;IAGD,UAAU,CAAY,GAAQ,EAAe,EAAU;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF,CAAA;AAjBY,oEAA4B;AAIvC;IADC,IAAA,YAAG,EAAC,gBAAgB,CAAC;IACb,WAAA,IAAA,gBAAO,GAAE,CAAA;IAAY,WAAA,IAAA,cAAK,GAAE,CAAA;;;;2DAEpC;AAGD;IADC,IAAA,YAAG,EAAC,sBAAsB,CAAC;IAClB,WAAA,IAAA,gBAAO,GAAE,CAAA;IAAY,WAAA,IAAA,cAAK,GAAE,CAAA;;;;4DAErC;AAGD;IADC,IAAA,YAAG,EAAC,oBAAoB,CAAC;IACd,WAAA,IAAA,gBAAO,GAAE,CAAA;IAAY,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;8DAE3C;uCAhBU,4BAA4B;IAHxC,IAAA,mBAAU,EAAC,QAAQ,CAAC;IACpB,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;IACnC,IAAA,uBAAK,EAAC,QAAQ,CAAC;qCAE2B,2CAAmB;GADjD,4BAA4B,CAiBxC;AAKM,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YAA6B,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAGhE,OAAO,CAAU,KAAU;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAGD,QAAQ,CAAU,KAAU;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;IAGD,UAAU,CAAc,EAAU;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AAjBY,kEAA2B;AAItC;IADC,IAAA,YAAG,EAAC,gBAAgB,CAAC;IACb,WAAA,IAAA,cAAK,GAAE,CAAA;;;;0DAEf;AAGD;IADC,IAAA,YAAG,EAAC,sBAAsB,CAAC;IAClB,WAAA,IAAA,cAAK,GAAE,CAAA;;;;2DAEhB;AAGD;IADC,IAAA,YAAG,EAAC,oBAAoB,CAAC;IACd,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;6DAEtB;sCAhBU,2BAA2B;IAHvC,IAAA,mBAAU,EAAC,OAAO,CAAC;IACnB,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;IACnC,IAAA,uBAAK,EAAC,OAAO,CAAC;qCAE4B,2CAAmB;GADjD,2BAA2B,CAiBvC"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/operation-log.service.d.ts b/reading-platform-backend/dist/src/modules/common/operation-log.service.d.ts deleted file mode 100644 index c6ff3f2..0000000 --- a/reading-platform-backend/dist/src/modules/common/operation-log.service.d.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class OperationLogService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - getLogs(tenantId: number | null, query: { - page?: number; - pageSize?: number; - userId?: number; - userType?: string; - action?: string; - module?: string; - startDate?: string; - endDate?: string; - }): Promise<{ - items: { - id: number; - tenantId: number | null; - description: string; - createdAt: Date; - ipAddress: string | null; - userAgent: string | null; - userId: number; - userType: string; - action: string; - module: string; - targetId: number | null; - oldValue: string | null; - newValue: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getLogById(tenantId: number | null, id: number): Promise<{ - oldValue: any; - newValue: any; - id: number; - tenantId: number | null; - description: string; - createdAt: Date; - ipAddress: string | null; - userAgent: string | null; - userId: number; - userType: string; - action: string; - module: string; - targetId: number | null; - }>; - getModuleStats(tenantId: number | null, startDate?: string, endDate?: string): Promise<{ - modules: { - name: string; - count: number; - }[]; - actions: { - name: string; - count: number; - }[]; - total: number; - }>; - private safeParseJson; -} diff --git a/reading-platform-backend/dist/src/modules/common/operation-log.service.js b/reading-platform-backend/dist/src/modules/common/operation-log.service.js deleted file mode 100644 index fdddfe6..0000000 --- a/reading-platform-backend/dist/src/modules/common/operation-log.service.js +++ /dev/null @@ -1,134 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var OperationLogService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.OperationLogService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let OperationLogService = OperationLogService_1 = class OperationLogService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(OperationLogService_1.name); - } - async getLogs(tenantId, query) { - const { page = 1, pageSize = 20, userId, userType, action, module, startDate, endDate, } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = {}; - if (tenantId !== null) { - where.tenantId = tenantId; - } - if (userId) { - where.userId = userId; - } - if (userType) { - where.userType = userType; - } - if (action) { - where.action = action; - } - if (module) { - where.module = module; - } - if (startDate || endDate) { - where.createdAt = {}; - if (startDate) { - where.createdAt.gte = new Date(startDate); - } - if (endDate) { - where.createdAt.lte = new Date(endDate); - } - } - const [items, total] = await Promise.all([ - this.prisma.operationLog.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - }), - this.prisma.operationLog.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async getLogById(tenantId, id) { - const where = { id }; - if (tenantId !== null) { - where.tenantId = tenantId; - } - const log = await this.prisma.operationLog.findFirst({ - where, - }); - if (!log) { - return null; - } - return { - ...log, - oldValue: log.oldValue ? this.safeParseJson(log.oldValue) : null, - newValue: log.newValue ? this.safeParseJson(log.newValue) : null, - }; - } - async getModuleStats(tenantId, startDate, endDate) { - const where = {}; - if (tenantId !== null) { - where.tenantId = tenantId; - } - if (startDate || endDate) { - where.createdAt = {}; - if (startDate) { - where.createdAt.gte = new Date(startDate); - } - if (endDate) { - where.createdAt.lte = new Date(endDate); - } - } - const logs = await this.prisma.operationLog.findMany({ - where, - select: { - module: true, - action: true, - }, - }); - const moduleStats = new Map(); - const actionStats = new Map(); - logs.forEach((log) => { - moduleStats.set(log.module, (moduleStats.get(log.module) || 0) + 1); - actionStats.set(log.action, (actionStats.get(log.action) || 0) + 1); - }); - return { - modules: Array.from(moduleStats.entries()) - .map(([name, count]) => ({ name, count })) - .sort((a, b) => b.count - a.count), - actions: Array.from(actionStats.entries()) - .map(([name, count]) => ({ name, count })) - .sort((a, b) => b.count - a.count), - total: logs.length, - }; - } - safeParseJson(str) { - try { - return JSON.parse(str); - } - catch { - return str; - } - } -}; -exports.OperationLogService = OperationLogService; -exports.OperationLogService = OperationLogService = OperationLogService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], OperationLogService); -//# sourceMappingURL=operation-log.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/common/operation-log.service.js.map b/reading-platform-backend/dist/src/modules/common/operation-log.service.js.map deleted file mode 100644 index 76d85fa..0000000 --- a/reading-platform-backend/dist/src/modules/common/operation-log.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"operation-log.service.js","sourceRoot":"","sources":["../../../../src/modules/common/operation-log.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course-validation.service.d.ts b/reading-platform-backend/dist/src/modules/course/course-validation.service.d.ts deleted file mode 100644 index 9ab435d..0000000 --- a/reading-platform-backend/dist/src/modules/course/course-validation.service.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -export interface ValidationResult { - valid: boolean; - errors: ValidationError[]; - warnings: ValidationWarning[]; -} -export interface ValidationError { - field: string; - message: string; - code: string; -} -export interface ValidationWarning { - field: string; - message: string; - code: string; -} -export interface CourseValidationData { - name?: string; - description?: string; - coverImagePath?: string; - gradeTags?: string; - domainTags?: string; - duration?: number; - ebookPaths?: string; - audioPaths?: string; - videoPaths?: string; - otherResources?: string; - scripts?: any[]; - lessonPlanData?: string; -} -export declare class CourseValidationService { - private readonly logger; - validateForSubmit(course: CourseValidationData): Promise; - private validateBasicInfo; - private validateCover; - private validateGradeTags; - private validateDuration; - private validateResources; - private validateScripts; - private hasValidJsonArray; - canSubmit(course: CourseValidationData): Promise; - getValidationSummary(result: ValidationResult): string; -} diff --git a/reading-platform-backend/dist/src/modules/course/course-validation.service.js b/reading-platform-backend/dist/src/modules/course/course-validation.service.js deleted file mode 100644 index faed448..0000000 --- a/reading-platform-backend/dist/src/modules/course/course-validation.service.js +++ /dev/null @@ -1,190 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var CourseValidationService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CourseValidationService = void 0; -const common_1 = require("@nestjs/common"); -let CourseValidationService = CourseValidationService_1 = class CourseValidationService { - constructor() { - this.logger = new common_1.Logger(CourseValidationService_1.name); - } - async validateForSubmit(course) { - const errors = []; - const warnings = []; - this.validateBasicInfo(course, errors); - this.validateCover(course, errors); - this.validateGradeTags(course, errors); - this.validateDuration(course, errors); - this.validateResources(course, warnings); - this.validateScripts(course, errors); - const result = { - valid: errors.length === 0, - errors, - warnings, - }; - this.logger.log(`Validation result: valid=${result.valid}, errors=${errors.length}, warnings=${warnings.length}`); - return result; - } - validateBasicInfo(course, errors) { - if (!course.name || course.name.trim().length === 0) { - errors.push({ - field: 'name', - message: '请输入课程名称', - code: 'NAME_REQUIRED', - }); - } - else if (course.name.length < 2) { - errors.push({ - field: 'name', - message: '课程名称至少需要2个字符', - code: 'NAME_TOO_SHORT', - }); - } - else if (course.name.length > 50) { - errors.push({ - field: 'name', - message: '课程名称不能超过50个字符', - code: 'NAME_TOO_LONG', - }); - } - } - validateCover(course, errors) { - if (!course.coverImagePath) { - errors.push({ - field: 'coverImagePath', - message: '请上传课程封面', - code: 'COVER_REQUIRED', - }); - } - } - validateGradeTags(course, errors) { - if (!course.gradeTags) { - errors.push({ - field: 'gradeTags', - message: '请选择适用年级', - code: 'GRADE_REQUIRED', - }); - return; - } - try { - const grades = JSON.parse(course.gradeTags); - if (!Array.isArray(grades) || grades.length === 0) { - errors.push({ - field: 'gradeTags', - message: '请至少选择一个适用年级', - code: 'GRADE_EMPTY', - }); - } - } - catch { - errors.push({ - field: 'gradeTags', - message: '年级标签格式错误', - code: 'GRADE_FORMAT_ERROR', - }); - } - } - validateDuration(course, errors) { - if (course.duration === undefined || course.duration === null) { - errors.push({ - field: 'duration', - message: '请设置课程时长', - code: 'DURATION_REQUIRED', - }); - return; - } - if (course.duration < 5) { - errors.push({ - field: 'duration', - message: '课程时长不能少于5分钟', - code: 'DURATION_TOO_SHORT', - }); - } - else if (course.duration > 60) { - errors.push({ - field: 'duration', - message: '课程时长不能超过60分钟', - code: 'DURATION_TOO_LONG', - }); - } - } - validateResources(course, warnings) { - const hasEbook = this.hasValidJsonArray(course.ebookPaths); - const hasAudio = this.hasValidJsonArray(course.audioPaths); - const hasVideo = this.hasValidJsonArray(course.videoPaths); - const hasOther = this.hasValidJsonArray(course.otherResources); - if (!hasEbook && !hasAudio && !hasVideo && !hasOther) { - warnings.push({ - field: 'resources', - message: '建议上传至少1个数字资源(电子绘本、音频或视频)', - code: 'RESOURCES_SUGGESTED', - }); - } - } - validateScripts(course, errors) { - if (course.lessonPlanData) { - try { - const lessonPlan = JSON.parse(course.lessonPlanData); - if (!lessonPlan.phases || !Array.isArray(lessonPlan.phases) || lessonPlan.phases.length === 0) { - errors.push({ - field: 'lessonPlanData', - message: '请至少配置一个教学环节', - code: 'SCRIPTS_REQUIRED', - }); - } - return; - } - catch { - errors.push({ - field: 'lessonPlanData', - message: '教学计划数据格式错误', - code: 'LESSON_PLAN_FORMAT_ERROR', - }); - return; - } - } - if (course.scripts !== undefined) { - if (!Array.isArray(course.scripts) || course.scripts.length === 0) { - errors.push({ - field: 'scripts', - message: '请至少配置一个教学环节', - code: 'SCRIPTS_REQUIRED', - }); - } - } - } - hasValidJsonArray(jsonStr) { - if (!jsonStr) - return false; - try { - const arr = JSON.parse(jsonStr); - return Array.isArray(arr) && arr.length > 0; - } - catch { - return false; - } - } - async canSubmit(course) { - const result = await this.validateForSubmit(course); - return result.valid; - } - getValidationSummary(result) { - if (result.valid && result.warnings.length === 0) { - return '课程内容完整,可以提交审核'; - } - if (result.valid && result.warnings.length > 0) { - return `课程可以提交,但有 ${result.warnings.length} 条建议`; - } - return `课程有 ${result.errors.length} 个问题需要修复`; - } -}; -exports.CourseValidationService = CourseValidationService; -exports.CourseValidationService = CourseValidationService = CourseValidationService_1 = __decorate([ - (0, common_1.Injectable)() -], CourseValidationService); -//# sourceMappingURL=course-validation.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course-validation.service.js.map b/reading-platform-backend/dist/src/modules/course/course-validation.service.js.map deleted file mode 100644 index 7fc017b..0000000 --- a/reading-platform-backend/dist/src/modules/course/course-validation.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"course-validation.service.js","sourceRoot":"","sources":["../../../../src/modules/course/course-validation.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course.controller.d.ts b/reading-platform-backend/dist/src/modules/course/course.controller.d.ts deleted file mode 100644 index 60502e7..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.controller.d.ts +++ /dev/null @@ -1,625 +0,0 @@ -import { CourseService } from './course.service'; -export declare class CourseController { - private readonly courseService; - constructor(courseService: CourseService); - findAll(query: any): Promise<{ - items: { - id: number; - status: string; - createdAt: Date; - name: string; - pictureBookName: string; - gradeTags: string; - version: string; - submittedAt: Date; - reviewedAt: Date; - reviewComment: string; - usageCount: number; - teacherCount: number; - avgRating: number; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getReviewList(query: any): Promise<{ - items: { - id: number; - status: string; - name: string; - coverImagePath: string; - gradeTags: string; - submittedAt: Date; - submittedBy: number; - reviewedAt: Date; - reviewedBy: number; - reviewComment: string; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(id: string): Promise<{ - resources: { - id: number; - createdAt: Date; - sortOrder: number; - courseId: number; - resourceType: string; - resourceName: string; - fileUrl: string; - fileSize: number | null; - mimeType: string | null; - metadata: string | null; - }[]; - scripts: ({ - pages: { - id: number; - createdAt: Date; - updatedAt: Date; - resourceIds: string | null; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - } & { - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - interactionPoints: string | null; - resourceIds: string | null; - })[]; - activities: { - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - onlineMaterials: string | null; - offlineMaterials: string | null; - activityGuide: string | null; - objectives: string | null; - }[]; - } & { - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - getStats(id: string): Promise<{ - courseName: string; - totalLessons: number; - totalTeachers: number; - totalStudents: number; - avgRating: number; - lessonTrend: any[]; - feedbackDistribution: { - designQuality: number; - participation: number; - goalAchievement: number; - totalFeedbacks: number; - }; - recentLessons: any[]; - studentPerformance: { - avgFocus: number; - avgParticipation: number; - avgInterest: number; - avgUnderstanding: number; - }; - }>; - validate(id: string): Promise; - getVersionHistory(id: string): Promise<{ - id: number; - version: string; - changeLog: string; - publishedAt: Date; - publishedBy: number; - }[]>; - create(createCourseDto: any, req: any): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - update(id: string, updateCourseDto: any): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - remove(id: string): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - submit(id: string, body: { - copyrightConfirmed: boolean; - }, req: any): Promise<{ - validationSummary: string; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - withdraw(id: string, req: any): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - approve(id: string, body: { - checklist?: any; - comment?: string; - }, req: any): Promise<{ - authorizedTenantCount: number; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - reject(id: string, body: { - checklist?: any; - comment: string; - }, req: any): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - directPublish(id: string, body: { - skipValidation?: boolean; - }, req: any): Promise<{ - authorizedTenantCount: number; - validationSkipped: boolean; - validationWarnings: import("./course-validation.service").ValidationWarning[]; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - publish(id: string): Promise<{ - authorizedTenantCount: number; - validationSkipped: boolean; - validationWarnings: import("./course-validation.service").ValidationWarning[]; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - unpublish(id: string): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - republish(id: string): Promise<{ - authorizedTenantCount: number; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/course/course.controller.js b/reading-platform-backend/dist/src/modules/course/course.controller.js deleted file mode 100644 index c8eeb3e..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.controller.js +++ /dev/null @@ -1,223 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CourseController = void 0; -const common_1 = require("@nestjs/common"); -const course_service_1 = require("./course.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let CourseController = class CourseController { - constructor(courseService) { - this.courseService = courseService; - } - findAll(query) { - return this.courseService.findAll(query); - } - getReviewList(query) { - return this.courseService.getReviewList(query); - } - findOne(id) { - return this.courseService.findOne(+id); - } - getStats(id) { - return this.courseService.getStats(+id); - } - validate(id) { - return this.courseService.validate(+id); - } - getVersionHistory(id) { - return this.courseService.getVersionHistory(+id); - } - create(createCourseDto, req) { - return this.courseService.create({ - ...createCourseDto, - createdBy: req.user?.userId, - }); - } - update(id, updateCourseDto) { - return this.courseService.update(+id, updateCourseDto); - } - remove(id) { - return this.courseService.remove(+id); - } - submit(id, body, req) { - const userId = req.user?.userId || 0; - return this.courseService.submit(+id, userId, body.copyrightConfirmed); - } - withdraw(id, req) { - const userId = req.user?.userId || 0; - return this.courseService.withdraw(+id, userId); - } - approve(id, body, req) { - const reviewerId = req.user?.userId || 0; - return this.courseService.approve(+id, reviewerId, body); - } - reject(id, body, req) { - const reviewerId = req.user?.userId || 0; - return this.courseService.reject(+id, reviewerId, body); - } - directPublish(id, body, req) { - const userId = req.user?.userId || 0; - return this.courseService.directPublish(+id, userId, body.skipValidation); - } - publish(id) { - return this.courseService.publish(+id); - } - unpublish(id) { - return this.courseService.unpublish(+id); - } - republish(id) { - return this.courseService.republish(+id); - } -}; -exports.CourseController = CourseController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('review'), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "getReviewList", null); -__decorate([ - (0, common_1.Get)(':id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "findOne", null); -__decorate([ - (0, common_1.Get)(':id/stats'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)(':id/validate'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "validate", null); -__decorate([ - (0, common_1.Get)(':id/versions'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "getVersionHistory", null); -__decorate([ - (0, common_1.Post)(), - __param(0, (0, common_1.Body)()), - __param(1, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "create", null); -__decorate([ - (0, common_1.Put)(':id'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "update", null); -__decorate([ - (0, common_1.Delete)(':id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "remove", null); -__decorate([ - (0, common_1.Post)(':id/submit'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __param(2, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "submit", null); -__decorate([ - (0, common_1.Post)(':id/withdraw'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "withdraw", null); -__decorate([ - (0, common_1.Post)(':id/approve'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __param(2, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "approve", null); -__decorate([ - (0, common_1.Post)(':id/reject'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __param(2, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "reject", null); -__decorate([ - (0, common_1.Post)(':id/direct-publish'), - (0, roles_decorator_1.Roles)('admin'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __param(2, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, Object, Object]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "directPublish", null); -__decorate([ - (0, common_1.Post)(':id/publish'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "publish", null); -__decorate([ - (0, common_1.Post)(':id/unpublish'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "unpublish", null); -__decorate([ - (0, common_1.Post)(':id/republish'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], CourseController.prototype, "republish", null); -exports.CourseController = CourseController = __decorate([ - (0, common_1.Controller)('courses'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('admin'), - __metadata("design:paramtypes", [course_service_1.CourseService]) -], CourseController); -//# sourceMappingURL=course.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course.controller.js.map b/reading-platform-backend/dist/src/modules/course/course.controller.js.map deleted file mode 100644 index 018da62..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"course.controller.js","sourceRoot":"","sources":["../../../../src/modules/course/course.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course.module.d.ts b/reading-platform-backend/dist/src/modules/course/course.module.d.ts deleted file mode 100644 index 30ef43d..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class CourseModule { -} diff --git a/reading-platform-backend/dist/src/modules/course/course.module.js b/reading-platform-backend/dist/src/modules/course/course.module.js deleted file mode 100644 index 0553a33..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.module.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CourseModule = void 0; -const common_1 = require("@nestjs/common"); -const course_controller_1 = require("./course.controller"); -const course_service_1 = require("./course.service"); -const course_validation_service_1 = require("./course-validation.service"); -const prisma_module_1 = require("../../database/prisma.module"); -let CourseModule = class CourseModule { -}; -exports.CourseModule = CourseModule; -exports.CourseModule = CourseModule = __decorate([ - (0, common_1.Module)({ - imports: [prisma_module_1.PrismaModule], - controllers: [course_controller_1.CourseController], - providers: [course_service_1.CourseService, course_validation_service_1.CourseValidationService], - exports: [course_service_1.CourseService, course_validation_service_1.CourseValidationService], - }) -], CourseModule); -//# sourceMappingURL=course.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course.module.js.map b/reading-platform-backend/dist/src/modules/course/course.module.js.map deleted file mode 100644 index 92aaf8c..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"course.module.js","sourceRoot":"","sources":["../../../../src/modules/course/course.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,qDAAiD;AACjD,2EAAsE;AACtE,gEAA4D;AAQrD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IANxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,CAAC;QACvB,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,8BAAa,EAAE,mDAAuB,CAAC;QACnD,OAAO,EAAE,CAAC,8BAAa,EAAE,mDAAuB,CAAC;KAClD,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course.service.d.ts b/reading-platform-backend/dist/src/modules/course/course.service.d.ts deleted file mode 100644 index 6497de3..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.service.d.ts +++ /dev/null @@ -1,627 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { CourseValidationService, ValidationResult } from './course-validation.service'; -export declare class CourseService { - private prisma; - private validationService; - private readonly logger; - constructor(prisma: PrismaService, validationService: CourseValidationService); - findAll(query: any): Promise<{ - items: { - id: number; - status: string; - createdAt: Date; - name: string; - pictureBookName: string; - gradeTags: string; - version: string; - submittedAt: Date; - reviewedAt: Date; - reviewComment: string; - usageCount: number; - teacherCount: number; - avgRating: number; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(id: number): Promise<{ - resources: { - id: number; - createdAt: Date; - sortOrder: number; - courseId: number; - resourceType: string; - resourceName: string; - fileUrl: string; - fileSize: number | null; - mimeType: string | null; - metadata: string | null; - }[]; - scripts: ({ - pages: { - id: number; - createdAt: Date; - updatedAt: Date; - resourceIds: string | null; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - } & { - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - interactionPoints: string | null; - resourceIds: string | null; - })[]; - activities: { - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - onlineMaterials: string | null; - offlineMaterials: string | null; - activityGuide: string | null; - objectives: string | null; - }[]; - } & { - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - create(createCourseDto: any): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - update(id: number, updateCourseDto: any): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - private syncLessonPlanToScripts; - private syncActivitiesToTable; - private mapActivityType; - remove(id: number): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - validate(id: number): Promise; - submit(id: number, userId: number, copyrightConfirmed: boolean): Promise<{ - validationSummary: string; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - withdraw(id: number, userId: number): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - approve(id: number, reviewerId: number, reviewData: { - checklist?: any; - comment?: string; - }): Promise<{ - authorizedTenantCount: number; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - reject(id: number, reviewerId: number, reviewData: { - checklist?: any; - comment: string; - }): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - directPublish(id: number, userId: number, skipValidation?: boolean): Promise<{ - authorizedTenantCount: number; - validationSkipped: boolean; - validationWarnings: import("./course-validation.service").ValidationWarning[]; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - publish(id: number): Promise<{ - authorizedTenantCount: number; - validationSkipped: boolean; - validationWarnings: import("./course-validation.service").ValidationWarning[]; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - unpublish(id: number): Promise<{ - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - republish(id: number): Promise<{ - authorizedTenantCount: number; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - ebookPaths: string | null; - audioPaths: string | null; - videoPaths: string | null; - otherResources: string | null; - pptPath: string | null; - pptName: string | null; - posterPaths: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - gradeTags: string; - domainTags: string; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - getStats(id: number): Promise<{ - courseName: string; - totalLessons: number; - totalTeachers: number; - totalStudents: number; - avgRating: number; - lessonTrend: any[]; - feedbackDistribution: { - designQuality: number; - participation: number; - goalAchievement: number; - totalFeedbacks: number; - }; - recentLessons: any[]; - studentPerformance: { - avgFocus: number; - avgParticipation: number; - avgInterest: number; - avgUnderstanding: number; - }; - }>; - getReviewList(query: any): Promise<{ - items: { - id: number; - status: string; - name: string; - coverImagePath: string; - gradeTags: string; - submittedAt: Date; - submittedBy: number; - reviewedAt: Date; - reviewedBy: number; - reviewComment: string; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getVersionHistory(id: number): Promise<{ - id: number; - version: string; - changeLog: string; - publishedAt: Date; - publishedBy: number; - }[]>; -} diff --git a/reading-platform-backend/dist/src/modules/course/course.service.js b/reading-platform-backend/dist/src/modules/course/course.service.js deleted file mode 100644 index 74e6618..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.service.js +++ /dev/null @@ -1,750 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var CourseService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CourseService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const course_validation_service_1 = require("./course-validation.service"); -let CourseService = CourseService_1 = class CourseService { - constructor(prisma, validationService) { - this.prisma = prisma; - this.validationService = validationService; - this.logger = new common_1.Logger(CourseService_1.name); - } - async findAll(query) { - const { page = 1, pageSize = 10, grade, status, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = {}; - if (status) { - where.status = status; - } - if (keyword) { - where.name = { contains: keyword }; - } - if (grade) { - const gradeUpper = grade.toUpperCase(); - where.OR = [ - { gradeTags: { contains: gradeUpper } }, - { gradeTags: { contains: grade.toLowerCase() } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.course.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - select: { - id: true, - name: true, - pictureBookName: true, - gradeTags: true, - status: true, - version: true, - usageCount: true, - teacherCount: true, - avgRating: true, - createdAt: true, - submittedAt: true, - reviewedAt: true, - reviewComment: true, - }, - }), - this.prisma.course.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async findOne(id) { - const course = await this.prisma.course.findUnique({ - where: { id }, - include: { - resources: { - orderBy: { sortOrder: 'asc' }, - }, - scripts: { - orderBy: { sortOrder: 'asc' }, - include: { - pages: { - orderBy: { pageNumber: 'asc' }, - }, - }, - }, - activities: { - orderBy: { sortOrder: 'asc' }, - }, - }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - return course; - } - async create(createCourseDto) { - try { - this.logger.log(`Creating course with data: ${JSON.stringify(createCourseDto)}`); - const result = await this.prisma.course.create({ - data: createCourseDto, - }); - this.logger.log(`Course created successfully with ID: ${result.id}`); - return result; - } - catch (error) { - this.logger.error(`Error creating course: ${error.message}`, error.stack); - throw error; - } - } - async update(id, updateCourseDto) { - const fieldsToClear = [ - 'coverImagePath', - 'ebookPaths', - 'audioPaths', - 'videoPaths', - 'otherResources', - 'pptPath', - 'pptName', - 'posterPaths', - 'tools', - 'studentMaterials', - 'pictureBookName', - 'lessonPlanData', - 'activitiesData', - 'assessmentData', - ]; - const cleanedData = {}; - for (const [key, value] of Object.entries(updateCourseDto)) { - if (fieldsToClear.includes(key) && (value === null || value === '')) { - cleanedData[key] = null; - } - else if (value !== undefined) { - cleanedData[key] = value; - } - } - this.logger.log(`Updating course ${id} with data: ${JSON.stringify(Object.keys(cleanedData))}`); - return this.prisma.$transaction(async (tx) => { - const updatedCourse = await tx.course.update({ - where: { id }, - data: cleanedData, - }); - if (updateCourseDto.lessonPlanData !== undefined) { - await this.syncLessonPlanToScripts(tx, id, updateCourseDto.lessonPlanData); - } - if (updateCourseDto.activitiesData !== undefined) { - await this.syncActivitiesToTable(tx, id, updateCourseDto.activitiesData); - } - return updatedCourse; - }); - } - async syncLessonPlanToScripts(tx, courseId, lessonPlanData) { - await tx.courseScriptPage.deleteMany({ - where: { script: { courseId } }, - }); - await tx.courseScript.deleteMany({ - where: { courseId }, - }); - if (!lessonPlanData) { - this.logger.log(`Course ${courseId}: lessonPlanData is null, cleared scripts`); - return; - } - try { - const lessonPlan = JSON.parse(lessonPlanData); - const phases = lessonPlan.phases || []; - const topLevelScriptPages = lessonPlan.scriptPages || []; - this.logger.log(`=== 同步课程 ${courseId} 的教学脚本 ===`); - this.logger.log(`phases 数量: ${phases.length}`); - this.logger.log(`顶层 scriptPages 数量: ${topLevelScriptPages.length}`); - for (let i = 0; i < phases.length; i++) { - const phase = phases[i]; - this.logger.log(`Phase ${i}: name=${phase.name}, pages=${phase.pages?.length || 0}, enablePageScript=${phase.enablePageScript}`); - const script = await tx.courseScript.create({ - data: { - courseId, - stepIndex: i + 1, - stepName: phase.name || `步骤${i + 1}`, - stepType: phase.type || 'CUSTOM', - duration: phase.duration || 5, - objective: phase.objective || null, - teacherScript: phase.content || null, - interactionPoints: null, - resourceIds: phase.resourceIds ? JSON.stringify(phase.resourceIds) : null, - sortOrder: i, - }, - }); - let pagesToCreate = phase.pages || []; - if (pagesToCreate.length === 0 && topLevelScriptPages.length > 0 && i === 0) { - pagesToCreate = topLevelScriptPages; - } - if (pagesToCreate.length > 0) { - this.logger.log(`为 Phase ${i} 创建 ${pagesToCreate.length} 页逐页脚本`); - for (const page of pagesToCreate) { - await tx.courseScriptPage.create({ - data: { - scriptId: script.id, - pageNumber: page.pageNumber, - questions: page.teacherScript || null, - interactionComponent: page.actions ? JSON.stringify(page.actions) : null, - teacherNotes: page.notes || null, - resourceIds: page.resourceIds ? JSON.stringify(page.resourceIds) : null, - }, - }); - } - } - } - this.logger.log(`Course ${courseId}: synced ${phases.length} scripts from lessonPlanData`); - } - catch (error) { - this.logger.error(`Failed to sync lessonPlanData for course ${courseId}: ${error.message}`); - } - } - async syncActivitiesToTable(tx, courseId, activitiesData) { - await tx.courseActivity.deleteMany({ - where: { courseId }, - }); - if (!activitiesData) { - this.logger.log(`Course ${courseId}: activitiesData is null, cleared activities`); - return; - } - try { - const activities = JSON.parse(activitiesData); - for (let i = 0; i < activities.length; i++) { - const activity = activities[i]; - await tx.courseActivity.create({ - data: { - courseId, - name: activity.name || `活动${i + 1}`, - domain: activity.domain || null, - domainTagId: null, - activityType: this.mapActivityType(activity.type), - duration: activity.duration || 15, - onlineMaterials: activity.content ? JSON.stringify({ content: activity.content }) : null, - offlineMaterials: activity.materials || null, - activityGuide: null, - objectives: null, - sortOrder: i, - }, - }); - } - this.logger.log(`Course ${courseId}: synced ${activities.length} activities from activitiesData`); - } - catch (error) { - this.logger.error(`Failed to sync activitiesData for course ${courseId}: ${error.message}`); - } - } - mapActivityType(type) { - const typeMap = { - 'family': 'FAMILY', - 'art': 'ART', - 'game': 'GAME', - 'outdoor': 'OUTDOOR', - 'other': 'OTHER', - 'handicraft': 'HANDICRAFT', - 'music': 'MUSIC', - 'exploration': 'EXPLORATION', - 'sports': 'SPORTS', - '家庭延伸': 'FAMILY', - '美工活动': 'ART', - '游戏活动': 'GAME', - '户外活动': 'OUTDOOR', - '其他': 'OTHER', - '手工活动': 'HANDICRAFT', - '音乐活动': 'MUSIC', - '探索活动': 'EXPLORATION', - '运动活动': 'SPORTS', - '亲子活动': 'FAMILY', - }; - return typeMap[type || ''] || 'OTHER'; - } - async remove(id) { - return this.prisma.course.delete({ - where: { id }, - }); - } - async validate(id) { - const course = await this.findOne(id); - return this.validationService.validateForSubmit(course); - } - async submit(id, userId, copyrightConfirmed) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status !== 'DRAFT' && course.status !== 'REJECTED') { - throw new common_1.BadRequestException(`课程状态为 ${course.status},无法提交审核`); - } - const validationResult = await this.validationService.validateForSubmit(course); - if (!validationResult.valid) { - throw new common_1.BadRequestException({ - message: '课程内容不完整,请检查以下问题', - errors: validationResult.errors, - warnings: validationResult.warnings, - }); - } - if (!copyrightConfirmed) { - throw new common_1.BadRequestException('请确认版权合规'); - } - const updatedCourse = await this.prisma.course.update({ - where: { id }, - data: { - status: 'PENDING', - submittedAt: new Date(), - submittedBy: userId, - }, - }); - this.logger.log(`Course ${id} submitted for review by user ${userId}`); - return { - ...updatedCourse, - validationSummary: this.validationService.getValidationSummary(validationResult), - }; - } - async withdraw(id, userId) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status !== 'PENDING') { - throw new common_1.BadRequestException(`课程状态为 ${course.status},无法撤销`); - } - const updatedCourse = await this.prisma.course.update({ - where: { id }, - data: { - status: 'DRAFT', - submittedAt: null, - submittedBy: null, - }, - }); - this.logger.log(`Course ${id} review withdrawn by user ${userId}`); - return updatedCourse; - } - async approve(id, reviewerId, reviewData) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status !== 'PENDING') { - throw new common_1.BadRequestException(`课程状态为 ${course.status},无法审核`); - } - if (course.submittedBy === reviewerId) { - throw new common_1.BadRequestException('不能审核自己提交的课程'); - } - const result = await this.prisma.$transaction(async (tx) => { - const updatedCourse = await tx.course.update({ - where: { id }, - data: { - status: 'PUBLISHED', - reviewedAt: new Date(), - reviewedBy: reviewerId, - reviewComment: reviewData.comment || null, - reviewChecklist: reviewData.checklist ? JSON.stringify(reviewData.checklist) : null, - publishedAt: new Date(), - }, - }); - await tx.courseVersion.create({ - data: { - courseId: id, - version: course.version, - snapshotData: JSON.stringify(course), - changeLog: reviewData.comment || '审核通过发布', - publishedBy: reviewerId, - }, - }); - return updatedCourse; - }); - const activeTenants = await this.prisma.tenant.findMany({ - where: { status: 'ACTIVE' }, - select: { id: true }, - }); - this.logger.log(`Publishing course ${id} to ${activeTenants.length} active tenants`); - for (const tenant of activeTenants) { - await this.prisma.tenantCourse.upsert({ - where: { - tenantId_courseId: { - tenantId: tenant.id, - courseId: id, - }, - }, - update: { - authorized: true, - authorizedAt: new Date(), - }, - create: { - tenantId: tenant.id, - courseId: id, - authorized: true, - authorizedAt: new Date(), - }, - }); - } - this.logger.log(`Course ${id} approved and published by reviewer ${reviewerId}`); - return { - ...result, - authorizedTenantCount: activeTenants.length, - }; - } - async reject(id, reviewerId, reviewData) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status !== 'PENDING') { - throw new common_1.BadRequestException(`课程状态为 ${course.status},无法审核`); - } - if (course.submittedBy === reviewerId) { - throw new common_1.BadRequestException('不能审核自己提交的课程'); - } - if (!reviewData.comment || reviewData.comment.trim().length === 0) { - throw new common_1.BadRequestException('请填写驳回原因'); - } - const updatedCourse = await this.prisma.course.update({ - where: { id }, - data: { - status: 'REJECTED', - reviewedAt: new Date(), - reviewedBy: reviewerId, - reviewComment: reviewData.comment, - reviewChecklist: reviewData.checklist ? JSON.stringify(reviewData.checklist) : null, - }, - }); - this.logger.log(`Course ${id} rejected by reviewer ${reviewerId}: ${reviewData.comment}`); - return updatedCourse; - } - async directPublish(id, userId, skipValidation = false) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status === 'PUBLISHED') { - throw new common_1.BadRequestException('课程已发布'); - } - const validationResult = await this.validationService.validateForSubmit(course); - if (!skipValidation && !validationResult.valid) { - throw new common_1.BadRequestException({ - message: '课程内容不完整,请检查以下问题', - errors: validationResult.errors, - warnings: validationResult.warnings, - }); - } - const result = await this.prisma.$transaction(async (tx) => { - const updatedCourse = await tx.course.update({ - where: { id }, - data: { - status: 'PUBLISHED', - publishedAt: new Date(), - reviewedAt: new Date(), - reviewedBy: userId, - reviewComment: '超级管理员直接发布', - }, - }); - await tx.courseVersion.create({ - data: { - courseId: id, - version: course.version, - snapshotData: JSON.stringify(course), - changeLog: '超级管理员直接发布', - publishedBy: userId, - }, - }); - return updatedCourse; - }); - const activeTenants = await this.prisma.tenant.findMany({ - where: { status: 'ACTIVE' }, - select: { id: true }, - }); - for (const tenant of activeTenants) { - await this.prisma.tenantCourse.upsert({ - where: { - tenantId_courseId: { - tenantId: tenant.id, - courseId: id, - }, - }, - update: { - authorized: true, - authorizedAt: new Date(), - }, - create: { - tenantId: tenant.id, - courseId: id, - authorized: true, - authorizedAt: new Date(), - }, - }); - } - this.logger.log(`Course ${id} directly published by super admin ${userId}`); - return { - ...result, - authorizedTenantCount: activeTenants.length, - validationSkipped: skipValidation && !validationResult.valid, - validationWarnings: validationResult.warnings, - }; - } - async publish(id) { - return this.directPublish(id, 0, false); - } - async unpublish(id) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status !== 'PUBLISHED') { - throw new common_1.BadRequestException(`课程状态为 ${course.status},无法下架`); - } - const updatedCourse = await this.prisma.course.update({ - where: { id }, - data: { - status: 'ARCHIVED', - }, - }); - await this.prisma.tenantCourse.updateMany({ - where: { courseId: id }, - data: { - authorized: false, - }, - }); - this.logger.log(`Course ${id} unpublished`); - return updatedCourse; - } - async republish(id) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - if (course.status !== 'ARCHIVED') { - throw new common_1.BadRequestException(`课程状态为 ${course.status},无法重新发布`); - } - const updatedCourse = await this.prisma.course.update({ - where: { id }, - data: { - status: 'PUBLISHED', - }, - }); - const activeTenants = await this.prisma.tenant.findMany({ - where: { status: 'ACTIVE' }, - select: { id: true }, - }); - for (const tenant of activeTenants) { - await this.prisma.tenantCourse.upsert({ - where: { - tenantId_courseId: { - tenantId: tenant.id, - courseId: id, - }, - }, - update: { - authorized: true, - authorizedAt: new Date(), - }, - create: { - tenantId: tenant.id, - courseId: id, - authorized: true, - authorizedAt: new Date(), - }, - }); - } - this.logger.log(`Course ${id} republished`); - return { - ...updatedCourse, - authorizedTenantCount: activeTenants.length, - }; - } - async getStats(id) { - const course = await this.prisma.course.findUnique({ - where: { id }, - select: { - id: true, - name: true, - usageCount: true, - teacherCount: true, - avgRating: true, - }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - const lessons = await this.prisma.lesson.findMany({ - where: { courseId: id }, - include: { - teacher: { - select: { id: true, name: true }, - }, - class: { - select: { id: true, name: true }, - }, - }, - orderBy: { createdAt: 'desc' }, - take: 10, - }); - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: { - lesson: { - courseId: id, - }, - }, - }); - const calculateAverage = (field) => { - const validFeedbacks = feedbacks.filter((f) => f[field] != null); - if (validFeedbacks.length === 0) - return 0; - const sum = validFeedbacks.reduce((acc, f) => acc + f[field], 0); - return sum / validFeedbacks.length; - }; - const studentRecords = await this.prisma.studentRecord.findMany({ - where: { - lesson: { - courseId: id, - }, - }, - }); - const calculateStudentAvg = (field) => { - const validRecords = studentRecords.filter((r) => r[field] != null); - if (validRecords.length === 0) - return 0; - const sum = validRecords.reduce((acc, r) => acc + r[field], 0); - return sum / validRecords.length; - }; - const now = new Date(); - const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); - const recentLessons = await this.prisma.lesson.findMany({ - where: { - courseId: id, - createdAt: { gte: weekAgo }, - }, - select: { - createdAt: true, - }, - }); - const lessonTrend = []; - for (let i = 6; i >= 0; i--) { - const date = new Date(now.getTime() - i * 24 * 60 * 60 * 1000); - const dateStr = date.toLocaleDateString('zh-CN', { weekday: 'short' }); - const count = recentLessons.filter((lesson) => { - const lessonDate = new Date(lesson.createdAt); - return lessonDate.toDateString() === date.toDateString(); - }).length; - lessonTrend.push({ date: dateStr, count }); - } - const uniqueStudentIds = new Set(); - lessons.forEach((lesson) => { - uniqueStudentIds.add(lesson.classId); - }); - return { - courseName: course.name, - totalLessons: course.usageCount || lessons.length, - totalTeachers: course.teacherCount || new Set(lessons.map((l) => l.teacherId)).size, - totalStudents: uniqueStudentIds.size, - avgRating: course.avgRating || 0, - lessonTrend, - feedbackDistribution: { - designQuality: calculateAverage('designQuality'), - participation: calculateAverage('participation'), - goalAchievement: calculateAverage('goalAchievement'), - totalFeedbacks: feedbacks.length, - }, - recentLessons: lessons.map((lesson) => ({ - ...lesson, - date: lesson.createdAt, - })), - studentPerformance: { - avgFocus: calculateStudentAvg('focus'), - avgParticipation: calculateStudentAvg('participation'), - avgInterest: calculateStudentAvg('interest'), - avgUnderstanding: calculateStudentAvg('understanding'), - }, - }; - } - async getReviewList(query) { - const { page = 1, pageSize = 10, status, submittedBy } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - status: { in: ['PENDING', 'REJECTED'] }, - }; - if (status) { - where.status = status; - } - if (submittedBy) { - where.submittedBy = +submittedBy; - } - const [items, total] = await Promise.all([ - this.prisma.course.findMany({ - where, - skip, - take, - orderBy: { submittedAt: 'desc' }, - select: { - id: true, - name: true, - status: true, - submittedAt: true, - submittedBy: true, - reviewedAt: true, - reviewedBy: true, - reviewComment: true, - coverImagePath: true, - gradeTags: true, - }, - }), - this.prisma.course.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async getVersionHistory(id) { - const course = await this.prisma.course.findUnique({ - where: { id }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${id} not found`); - } - const versions = await this.prisma.courseVersion.findMany({ - where: { courseId: id }, - orderBy: { publishedAt: 'desc' }, - }); - return versions.map((v) => ({ - id: v.id, - version: v.version, - changeLog: v.changeLog, - publishedAt: v.publishedAt, - publishedBy: v.publishedBy, - })); - } -}; -exports.CourseService = CourseService; -exports.CourseService = CourseService = CourseService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService, - course_validation_service_1.CourseValidationService]) -], CourseService); -//# sourceMappingURL=course.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/course/course.service.js.map b/reading-platform-backend/dist/src/modules/course/course.service.js.map deleted file mode 100644 index 7f14b01..0000000 --- a/reading-platform-backend/dist/src/modules/course/course.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"course.service.js","sourceRoot":"","sources":["../../../../src/modules/course/course.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/export/export.controller.d.ts b/reading-platform-backend/dist/src/modules/export/export.controller.d.ts deleted file mode 100644 index be64f96..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.controller.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Response } from 'express'; -import { ExportService } from './export.service'; -export declare class ExportController { - private readonly exportService; - constructor(exportService: ExportService); - exportTeachers(req: any, res: Response): Promise; - exportStudents(req: any, res: Response): Promise; - exportLessons(req: any, res: Response): Promise; - exportGrowthRecords(req: any, studentId: string, res: Response): Promise; -} diff --git a/reading-platform-backend/dist/src/modules/export/export.controller.js b/reading-platform-backend/dist/src/modules/export/export.controller.js deleted file mode 100644 index caa3980..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.controller.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExportController = void 0; -const common_1 = require("@nestjs/common"); -const export_service_1 = require("./export.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let ExportController = class ExportController { - constructor(exportService) { - this.exportService = exportService; - } - async exportTeachers(req, res) { - const buffer = await this.exportService.exportTeachers(req.user.tenantId); - res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - res.setHeader('Content-Disposition', `attachment; filename=teachers_${Date.now()}.xlsx`); - res.send(buffer); - } - async exportStudents(req, res) { - const buffer = await this.exportService.exportStudents(req.user.tenantId); - res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - res.setHeader('Content-Disposition', `attachment; filename=students_${Date.now()}.xlsx`); - res.send(buffer); - } - async exportLessons(req, res) { - const buffer = await this.exportService.exportLessons(req.user.tenantId); - res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - res.setHeader('Content-Disposition', `attachment; filename=lessons_${Date.now()}.xlsx`); - res.send(buffer); - } - async exportGrowthRecords(req, studentId, res) { - const buffer = await this.exportService.exportGrowthRecords(req.user.tenantId, studentId ? +studentId : undefined); - res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - res.setHeader('Content-Disposition', `attachment; filename=growth_records_${Date.now()}.xlsx`); - res.send(buffer); - } -}; -exports.ExportController = ExportController; -__decorate([ - (0, common_1.Get)('teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportTeachers", null); -__decorate([ - (0, common_1.Get)('students'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportStudents", null); -__decorate([ - (0, common_1.Get)('lessons'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportLessons", null); -__decorate([ - (0, common_1.Get)('growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('studentId')), - __param(2, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportGrowthRecords", null); -exports.ExportController = ExportController = __decorate([ - (0, common_1.Controller)('school/export'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [export_service_1.ExportService]) -], ExportController); -//# sourceMappingURL=export.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/export/export.controller.js.map b/reading-platform-backend/dist/src/modules/export/export.controller.js.map deleted file mode 100644 index a1ff88b..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"export.controller.js","sourceRoot":"","sources":["../../../../src/modules/export/export.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/export/export.module.d.ts b/reading-platform-backend/dist/src/modules/export/export.module.d.ts deleted file mode 100644 index b9723eb..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class ExportModule { -} diff --git a/reading-platform-backend/dist/src/modules/export/export.module.js b/reading-platform-backend/dist/src/modules/export/export.module.js deleted file mode 100644 index 17a55ef..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExportModule = void 0; -const common_1 = require("@nestjs/common"); -const export_controller_1 = require("./export.controller"); -const export_service_1 = require("./export.service"); -let ExportModule = class ExportModule { -}; -exports.ExportModule = ExportModule; -exports.ExportModule = ExportModule = __decorate([ - (0, common_1.Module)({ - controllers: [export_controller_1.ExportController], - providers: [export_service_1.ExportService], - exports: [export_service_1.ExportService], - }) -], ExportModule); -//# sourceMappingURL=export.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/export/export.module.js.map b/reading-platform-backend/dist/src/modules/export/export.module.js.map deleted file mode 100644 index 82770ab..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"export.module.js","sourceRoot":"","sources":["../../../../src/modules/export/export.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/export/export.service.d.ts b/reading-platform-backend/dist/src/modules/export/export.service.d.ts deleted file mode 100644 index 6e4c952..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.service.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class ExportService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - exportTeachers(tenantId: number): Promise; - exportStudents(tenantId: number): Promise; - exportLessons(tenantId: number): Promise; - exportGrowthRecords(tenantId: number, studentId?: number): Promise; -} diff --git a/reading-platform-backend/dist/src/modules/export/export.service.js b/reading-platform-backend/dist/src/modules/export/export.service.js deleted file mode 100644 index 22dbe6a..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.service.js +++ /dev/null @@ -1,260 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var ExportService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExportService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const ExcelJS = __importStar(require("exceljs")); -let ExportService = ExportService_1 = class ExportService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(ExportService_1.name); - } - async exportTeachers(tenantId) { - const teachers = await this.prisma.teacher.findMany({ - where: { tenantId }, - include: { - classes: { - select: { name: true }, - }, - }, - orderBy: { createdAt: 'desc' }, - }); - const workbook = new ExcelJS.Workbook(); - const worksheet = workbook.addWorksheet('教师列表'); - worksheet.columns = [ - { header: 'ID', key: 'id', width: 8 }, - { header: '姓名', key: 'name', width: 15 }, - { header: '手机号', key: 'phone', width: 15 }, - { header: '邮箱', key: 'email', width: 25 }, - { header: '登录账号', key: 'loginAccount', width: 15 }, - { header: '负责班级', key: 'classes', width: 20 }, - { header: '授课次数', key: 'lessonCount', width: 10 }, - { header: '状态', key: 'status', width: 10 }, - { header: '创建时间', key: 'createdAt', width: 20 }, - ]; - worksheet.getRow(1).font = { bold: true }; - worksheet.getRow(1).fill = { - type: 'pattern', - pattern: 'solid', - fgColor: { argb: 'FFE0E0E0' }, - }; - teachers.forEach((teacher) => { - worksheet.addRow({ - id: teacher.id, - name: teacher.name, - phone: teacher.phone, - email: teacher.email || '-', - loginAccount: teacher.loginAccount, - classes: teacher.classes.map((c) => c.name).join('、') || '-', - lessonCount: teacher.lessonCount, - status: teacher.status === 'ACTIVE' ? '正常' : '停用', - createdAt: teacher.createdAt.toLocaleDateString('zh-CN'), - }); - }); - const buffer = await workbook.xlsx.writeBuffer(); - return Buffer.from(buffer); - } - async exportStudents(tenantId) { - const students = await this.prisma.student.findMany({ - where: { tenantId }, - include: { - class: { - select: { name: true }, - }, - }, - orderBy: [{ classId: 'asc' }, { createdAt: 'asc' }], - }); - const workbook = new ExcelJS.Workbook(); - const worksheet = workbook.addWorksheet('学生列表'); - worksheet.columns = [ - { header: 'ID', key: 'id', width: 8 }, - { header: '姓名', key: 'name', width: 15 }, - { header: '性别', key: 'gender', width: 8 }, - { header: '班级', key: 'className', width: 15 }, - { header: '生日', key: 'birthDate', width: 15 }, - { header: '家长姓名', key: 'parentName', width: 15 }, - { header: '家长电话', key: 'parentPhone', width: 15 }, - { header: '阅读次数', key: 'readingCount', width: 10 }, - { header: '创建时间', key: 'createdAt', width: 20 }, - ]; - worksheet.getRow(1).font = { bold: true }; - worksheet.getRow(1).fill = { - type: 'pattern', - pattern: 'solid', - fgColor: { argb: 'FFE0E0E0' }, - }; - students.forEach((student) => { - worksheet.addRow({ - id: student.id, - name: student.name, - gender: student.gender || '-', - className: student.class?.name || '-', - birthDate: student.birthDate - ? new Date(student.birthDate).toLocaleDateString('zh-CN') - : '-', - parentName: student.parentName || '-', - parentPhone: student.parentPhone || '-', - readingCount: student.readingCount, - createdAt: student.createdAt.toLocaleDateString('zh-CN'), - }); - }); - const buffer = await workbook.xlsx.writeBuffer(); - return Buffer.from(buffer); - } - async exportLessons(tenantId) { - const lessons = await this.prisma.lesson.findMany({ - where: { tenantId }, - include: { - course: { - select: { name: true, pictureBookName: true }, - }, - class: { - select: { name: true }, - }, - teacher: { - select: { name: true }, - }, - }, - orderBy: { createdAt: 'desc' }, - }); - const workbook = new ExcelJS.Workbook(); - const worksheet = workbook.addWorksheet('授课记录'); - worksheet.columns = [ - { header: 'ID', key: 'id', width: 8 }, - { header: '课程名称', key: 'courseName', width: 25 }, - { header: '绘本名称', key: 'pictureBookName', width: 20 }, - { header: '授课班级', key: 'className', width: 15 }, - { header: '授课教师', key: 'teacherName', width: 12 }, - { header: '计划时间', key: 'plannedDatetime', width: 18 }, - { header: '开始时间', key: 'startDatetime', width: 18 }, - { header: '结束时间', key: 'endDatetime', width: 18 }, - { header: '实际时长(分钟)', key: 'actualDuration', width: 12 }, - { header: '状态', key: 'status', width: 10 }, - ]; - worksheet.getRow(1).font = { bold: true }; - worksheet.getRow(1).fill = { - type: 'pattern', - pattern: 'solid', - fgColor: { argb: 'FFE0E0E0' }, - }; - const statusMap = { - PLANNED: '已计划', - IN_PROGRESS: '进行中', - COMPLETED: '已完成', - CANCELLED: '已取消', - }; - lessons.forEach((lesson) => { - worksheet.addRow({ - id: lesson.id, - courseName: lesson.course?.name || '-', - pictureBookName: lesson.course?.pictureBookName || '-', - className: lesson.class?.name || '-', - teacherName: lesson.teacher?.name || '-', - plannedDatetime: lesson.plannedDatetime - ? new Date(lesson.plannedDatetime).toLocaleString('zh-CN') - : '-', - startDatetime: lesson.startDatetime - ? new Date(lesson.startDatetime).toLocaleString('zh-CN') - : '-', - endDatetime: lesson.endDatetime - ? new Date(lesson.endDatetime).toLocaleString('zh-CN') - : '-', - actualDuration: lesson.actualDuration || '-', - status: statusMap[lesson.status] || lesson.status, - }); - }); - const buffer = await workbook.xlsx.writeBuffer(); - return Buffer.from(buffer); - } - async exportGrowthRecords(tenantId, studentId) { - const where = { tenantId }; - if (studentId) { - where.studentId = studentId; - } - const records = await this.prisma.growthRecord.findMany({ - where, - include: { - student: { - select: { name: true }, - }, - class: { - select: { name: true }, - }, - }, - orderBy: { recordDate: 'desc' }, - }); - const workbook = new ExcelJS.Workbook(); - const worksheet = workbook.addWorksheet('成长档案'); - worksheet.columns = [ - { header: 'ID', key: 'id', width: 8 }, - { header: '学生姓名', key: 'studentName', width: 15 }, - { header: '班级', key: 'className', width: 15 }, - { header: '标题', key: 'title', width: 25 }, - { header: '内容', key: 'content', width: 50 }, - { header: '记录类型', key: 'recordType', width: 12 }, - { header: '记录日期', key: 'recordDate', width: 15 }, - { header: '创建时间', key: 'createdAt', width: 20 }, - ]; - worksheet.getRow(1).font = { bold: true }; - worksheet.getRow(1).fill = { - type: 'pattern', - pattern: 'solid', - fgColor: { argb: 'FFE0E0E0' }, - }; - records.forEach((record) => { - worksheet.addRow({ - id: record.id, - studentName: record.student?.name || '-', - className: record.class?.name || '-', - title: record.title, - content: record.content || '-', - recordType: record.recordType, - recordDate: record.recordDate - ? new Date(record.recordDate).toLocaleDateString('zh-CN') - : '-', - createdAt: record.createdAt.toLocaleDateString('zh-CN'), - }); - }); - const buffer = await workbook.xlsx.writeBuffer(); - return Buffer.from(buffer); - } -}; -exports.ExportService = ExportService; -exports.ExportService = ExportService = ExportService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], ExportService); -//# sourceMappingURL=export.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/export/export.service.js.map b/reading-platform-backend/dist/src/modules/export/export.service.js.map deleted file mode 100644 index 7384ecf..0000000 --- a/reading-platform-backend/dist/src/modules/export/export.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"export.service.js","sourceRoot":"","sources":["../../../../src/modules/export/export.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.d.ts b/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.d.ts deleted file mode 100644 index 2bcd364..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { FileUploadService } from './file-upload.service'; -export declare class FileUploadController { - private readonly fileUploadService; - private readonly logger; - constructor(fileUploadService: FileUploadService); - uploadFile(file: Express.Multer.File, body: { - type?: string; - courseId?: string; - }): Promise<{ - success: boolean; - filePath: string; - fileName: string; - originalName: string; - fileSize: number; - mimeType: string; - }>; - deleteFile(body: { - filePath: string; - }): Promise<{ - success: boolean; - message: string; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js b/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js deleted file mode 100644 index 67a13b1..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js +++ /dev/null @@ -1,89 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var FileUploadController_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FileUploadController = void 0; -const common_1 = require("@nestjs/common"); -const platform_express_1 = require("@nestjs/platform-express"); -const multer_1 = require("multer"); -const file_upload_service_1 = require("./file-upload.service"); -let FileUploadController = FileUploadController_1 = class FileUploadController { - constructor(fileUploadService) { - this.fileUploadService = fileUploadService; - this.logger = new common_1.Logger(FileUploadController_1.name); - } - async uploadFile(file, body) { - this.logger.log(`Uploading file: ${file.originalname}, type: ${body.type || 'unknown'}`); - if (!file) { - throw new common_1.BadRequestException('没有上传文件'); - } - const fileType = body.type || 'other'; - const validationResult = this.fileUploadService.validateFile(file, fileType); - if (!validationResult.valid) { - throw new common_1.BadRequestException(validationResult.error); - } - const savedFile = await this.fileUploadService.saveFile(file, fileType, body.courseId); - this.logger.log(`File uploaded successfully: ${savedFile.filePath}`); - return { - success: true, - filePath: savedFile.filePath, - fileName: savedFile.fileName, - originalName: file.originalname, - fileSize: file.size, - mimeType: file.mimetype, - }; - } - async deleteFile(body) { - this.logger.log(`Deleting file: ${body.filePath}`); - if (!body.filePath) { - throw new common_1.BadRequestException('缺少文件路径'); - } - const result = await this.fileUploadService.deleteFile(body.filePath); - if (!result.success) { - throw new common_1.BadRequestException(result.error); - } - this.logger.log(`File deleted successfully: ${body.filePath}`); - return { - success: true, - message: '文件删除成功', - }; - } -}; -exports.FileUploadController = FileUploadController; -__decorate([ - (0, common_1.Post)('upload'), - (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file', { - storage: (0, multer_1.memoryStorage)(), - limits: { - fileSize: 300 * 1024 * 1024, - }, - })), - __param(0, (0, common_1.UploadedFile)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", Promise) -], FileUploadController.prototype, "uploadFile", null); -__decorate([ - (0, common_1.Delete)('delete'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], FileUploadController.prototype, "deleteFile", null); -exports.FileUploadController = FileUploadController = FileUploadController_1 = __decorate([ - (0, common_1.Controller)('files'), - __metadata("design:paramtypes", [file_upload_service_1.FileUploadService]) -], FileUploadController); -//# sourceMappingURL=file-upload.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js.map b/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js.map deleted file mode 100644 index 2353ea5..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file-upload.controller.js","sourceRoot":"","sources":["../../../../src/modules/file-upload/file-upload.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,+DAA2D;AAC3D,mCAAuC;AACvC,+DAA0D;AAGnD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAG/B,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAFhD,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IAEI,CAAC;IAe/D,AAAN,KAAK,CAAC,UAAU,CACE,IAAyB,EACjC,IAA0C;QAElD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QAEzF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,4BAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAGD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE7E,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAAmB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAOK,AAAN,KAAK,CAAC,UAAU,CAAS,IAA0B;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,4BAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,4BAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ;SAClB,CAAC;IACJ,CAAC;CACF,CAAA;AA5EY,oDAAoB;AAkBzB;IATL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EACd,IAAA,kCAAe,EAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAA,sBAAa,GAAE;QACxB,MAAM,EAAE;YACN,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;SAC5B;KACF,CAAC,CACH;IAEE,WAAA,IAAA,qBAAY,GAAE,CAAA;IACd,WAAA,IAAA,aAAI,GAAE,CAAA;;;;sDA6BR;AAOK;IADL,IAAA,eAAM,EAAC,QAAQ,CAAC;IACC,WAAA,IAAA,aAAI,GAAE,CAAA;;;;sDAmBvB;+BA3EU,oBAAoB;IADhC,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAI8B,uCAAiB;GAHtD,oBAAoB,CA4EhC"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.d.ts b/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.d.ts deleted file mode 100644 index 24e98ef..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class FileUploadModule { -} diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js b/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js deleted file mode 100644 index 91deefb..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FileUploadModule = void 0; -const common_1 = require("@nestjs/common"); -const file_upload_controller_1 = require("./file-upload.controller"); -const file_upload_service_1 = require("./file-upload.service"); -let FileUploadModule = class FileUploadModule { -}; -exports.FileUploadModule = FileUploadModule; -exports.FileUploadModule = FileUploadModule = __decorate([ - (0, common_1.Module)({ - controllers: [file_upload_controller_1.FileUploadController], - providers: [file_upload_service_1.FileUploadService], - exports: [file_upload_service_1.FileUploadService], - }) -], FileUploadModule); -//# sourceMappingURL=file-upload.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js.map b/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js.map deleted file mode 100644 index dc16bde..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file-upload.module.js","sourceRoot":"","sources":["../../../../src/modules/file-upload/file-upload.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qEAAgE;AAChE,+DAA0D;AAOnD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,6CAAoB,CAAC;QACnC,SAAS,EAAE,CAAC,uCAAiB,CAAC;QAC9B,OAAO,EAAE,CAAC,uCAAiB,CAAC;KAC7B,CAAC;GACW,gBAAgB,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.d.ts b/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.d.ts deleted file mode 100644 index 24007dc..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -export declare class FileUploadService { - private readonly logger; - private readonly uploadBasePath; - constructor(); - private ensureDirectoriesExist; - validateFile(file: Express.Multer.File, type: string): { - valid: boolean; - error?: string; - }; - saveFile(file: Express.Multer.File, type: string, courseId?: string): Promise<{ - filePath: string; - fileName: string; - }>; - deleteFile(filePath: string): Promise<{ - success: boolean; - error?: string; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js b/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js deleted file mode 100644 index d948e14..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js +++ /dev/null @@ -1,161 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var FileUploadService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FileUploadService = void 0; -const common_1 = require("@nestjs/common"); -const path_1 = require("path"); -const fs_1 = require("fs"); -const FILE_TYPE_CONFIG = { - cover: { - allowedMimeTypes: ['image/jpeg', 'image/png', 'image/webp'], - maxSize: 10 * 1024 * 1024, - folder: 'covers', - }, - ebook: { - allowedMimeTypes: [ - 'application/pdf', - 'application/vnd.ms-powerpoint', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - ], - maxSize: 300 * 1024 * 1024, - folder: 'ebooks', - }, - audio: { - allowedMimeTypes: ['audio/mpeg', 'audio/wav', 'audio/mp4', 'audio/m4a'], - maxSize: 300 * 1024 * 1024, - folder: 'audio', - }, - video: { - allowedMimeTypes: ['video/mp4', 'video/webm'], - maxSize: 300 * 1024 * 1024, - folder: 'videos', - }, - ppt: { - allowedMimeTypes: [ - 'application/vnd.ms-powerpoint', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - ], - maxSize: 300 * 1024 * 1024, - folder: (0, path_1.join)('materials', 'ppt'), - }, - poster: { - allowedMimeTypes: ['image/jpeg', 'image/png', 'image/webp'], - maxSize: 10 * 1024 * 1024, - folder: (0, path_1.join)('materials', 'posters'), - }, - other: { - allowedMimeTypes: [ - 'application/pdf', - 'application/msword', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'application/vnd.ms-excel', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'image/jpeg', - 'image/png', - 'image/gif', - 'image/webp', - ], - maxSize: 300 * 1024 * 1024, - folder: 'other', - }, -}; -let FileUploadService = FileUploadService_1 = class FileUploadService { - constructor() { - this.logger = new common_1.Logger(FileUploadService_1.name); - this.uploadBasePath = (0, path_1.join)(process.cwd(), 'uploads', 'courses'); - this.ensureDirectoriesExist(); - } - async ensureDirectoriesExist() { - const directories = Object.values(FILE_TYPE_CONFIG).map((config) => (0, path_1.join)(this.uploadBasePath, config.folder)); - for (const dir of directories) { - try { - await fs_1.promises.mkdir(dir, { recursive: true }); - this.logger.log(`Ensured directory exists: ${dir}`); - } - catch (error) { - this.logger.error(`Failed to create directory ${dir}:`, error); - } - } - } - validateFile(file, type) { - const config = FILE_TYPE_CONFIG[type] || FILE_TYPE_CONFIG.other; - if (file.size > config.maxSize) { - const maxSizeMB = (config.maxSize / (1024 * 1024)).toFixed(0); - return { - valid: false, - error: `文件大小超过限制,最大允许 ${maxSizeMB}MB`, - }; - } - if (!config.allowedMimeTypes.includes(file.mimetype)) { - return { - valid: false, - error: `不支持的文件类型: ${file.mimetype}`, - }; - } - return { valid: true }; - } - async saveFile(file, type, courseId) { - const config = FILE_TYPE_CONFIG[type] || FILE_TYPE_CONFIG.other; - const timestamp = Date.now(); - const randomStr = Math.random().toString(36).substring(2, 8); - const originalExt = (0, path_1.extname)(file.originalname) || ''; - const courseIdPrefix = courseId ? `${courseId}_` : ''; - const newFileName = `${courseIdPrefix}${timestamp}_${randomStr}${originalExt}`; - const targetDir = (0, path_1.join)(this.uploadBasePath, config.folder); - const targetPath = (0, path_1.join)(targetDir, newFileName); - try { - await fs_1.promises.writeFile(targetPath, file.buffer); - const relativePath = `/uploads/courses/${config.folder}/${newFileName}`; - this.logger.log(`File saved: ${targetPath}`); - return { - filePath: relativePath, - fileName: newFileName, - }; - } - catch (error) { - this.logger.error('Failed to save file:', error); - throw new common_1.BadRequestException('文件保存失败'); - } - } - async deleteFile(filePath) { - try { - if (!filePath.startsWith('/uploads/')) { - return { success: false, error: '非法的文件路径' }; - } - const normalizedPath = filePath.replace(/\.\./g, ''); - const fullPath = (0, path_1.join)(process.cwd(), normalizedPath); - if (!fullPath.startsWith((0, path_1.join)(process.cwd(), 'uploads'))) { - return { success: false, error: '非法的文件路径' }; - } - try { - await fs_1.promises.access(fullPath); - } - catch { - this.logger.warn(`File not found: ${fullPath}`); - return { success: true, error: '文件不存在' }; - } - await fs_1.promises.unlink(fullPath); - this.logger.log(`File deleted: ${fullPath}`); - return { success: true }; - } - catch (error) { - this.logger.error('Failed to delete file:', error); - return { success: false, error: '文件删除失败' }; - } - } -}; -exports.FileUploadService = FileUploadService; -exports.FileUploadService = FileUploadService = FileUploadService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", []) -], FileUploadService); -//# sourceMappingURL=file-upload.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js.map b/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js.map deleted file mode 100644 index ffb742c..0000000 --- a/reading-platform-backend/dist/src/modules/file-upload/file-upload.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"file-upload.service.js","sourceRoot":"","sources":["../../../../src/modules/file-upload/file-upload.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.d.ts b/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.d.ts deleted file mode 100644 index 2ee52ee..0000000 --- a/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -export declare enum RecordType { - STUDENT = "STUDENT", - CLASS = "CLASS" -} -export declare class CreateGrowthRecordDto { - studentId: number; - classId?: number; - recordType: RecordType; - title: string; - content?: string; - images?: string[]; - recordDate: string; -} -export declare class UpdateGrowthRecordDto { - title?: string; - content?: string; - images?: string[]; - recordDate?: string; -} -export declare class QueryGrowthRecordDto { - page?: number; - pageSize?: number; - studentId?: number; - classId?: number; - recordType?: string; - keyword?: string; -} diff --git a/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js b/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js deleted file mode 100644 index 239ea72..0000000 --- a/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js +++ /dev/null @@ -1,114 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.QueryGrowthRecordDto = exports.UpdateGrowthRecordDto = exports.CreateGrowthRecordDto = exports.RecordType = void 0; -const class_validator_1 = require("class-validator"); -var RecordType; -(function (RecordType) { - RecordType["STUDENT"] = "STUDENT"; - RecordType["CLASS"] = "CLASS"; -})(RecordType || (exports.RecordType = RecordType = {})); -class CreateGrowthRecordDto { -} -exports.CreateGrowthRecordDto = CreateGrowthRecordDto; -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)({ message: '学生ID不能为空' }), - __metadata("design:type", Number) -], CreateGrowthRecordDto.prototype, "studentId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateGrowthRecordDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(RecordType), - __metadata("design:type", String) -], CreateGrowthRecordDto.prototype, "recordType", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '标题不能为空' }), - __metadata("design:type", String) -], CreateGrowthRecordDto.prototype, "title", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateGrowthRecordDto.prototype, "content", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsString)({ each: true }), - __metadata("design:type", Array) -], CreateGrowthRecordDto.prototype, "images", void 0); -__decorate([ - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateGrowthRecordDto.prototype, "recordDate", void 0); -class UpdateGrowthRecordDto { -} -exports.UpdateGrowthRecordDto = UpdateGrowthRecordDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '标题不能为空' }), - __metadata("design:type", String) -], UpdateGrowthRecordDto.prototype, "title", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateGrowthRecordDto.prototype, "content", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsString)({ each: true }), - __metadata("design:type", Array) -], UpdateGrowthRecordDto.prototype, "images", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateGrowthRecordDto.prototype, "recordDate", void 0); -class QueryGrowthRecordDto { -} -exports.QueryGrowthRecordDto = QueryGrowthRecordDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryGrowthRecordDto.prototype, "page", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryGrowthRecordDto.prototype, "pageSize", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryGrowthRecordDto.prototype, "studentId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryGrowthRecordDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryGrowthRecordDto.prototype, "recordType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryGrowthRecordDto.prototype, "keyword", void 0); -//# sourceMappingURL=create-growth.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js.map b/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js.map deleted file mode 100644 index 2e15bb4..0000000 --- a/reading-platform-backend/dist/src/modules/growth/dto/create-growth.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-growth.dto.js","sourceRoot":"","sources":["../../../../../src/modules/growth/dto/create-growth.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAyG;AAEzG,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,6BAAe,CAAA;AACjB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED,MAAa,qBAAqB;CA2BjC;AA3BD,sDA2BC;AAxBC;IAFC,IAAA,uBAAK,GAAE;IACP,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;wDAClB;AAIlB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;sDACS;AAGjB;IADC,IAAA,wBAAM,EAAC,UAAU,CAAC;;yDACI;AAIvB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;oDACpB;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACM;AAKjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;qDACP;AAGlB;IADC,IAAA,8BAAY,GAAE;;yDACI;AAGrB,MAAa,qBAAqB;CAkBjC;AAlBD,sDAkBC;AAdC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;oDACnB;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACM;AAKjB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;qDACP;AAIlB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;;yDACK;AAGtB,MAAa,oBAAoB;CAwBhC;AAxBD,oDAwBC;AArBC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;kDACM;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;sDACU;AAIlB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;uDACW;AAInB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;qDACS;AAIjB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;wDACS;AAIpB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACM"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/growth.controller.d.ts b/reading-platform-backend/dist/src/modules/growth/growth.controller.d.ts deleted file mode 100644 index 176f6c2..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.controller.d.ts +++ /dev/null @@ -1,277 +0,0 @@ -import { GrowthService } from './growth.service'; -import { CreateGrowthRecordDto, UpdateGrowthRecordDto } from './dto/create-growth.dto'; -export declare class GrowthController { - private readonly growthService; - constructor(growthService: GrowthService); - findAll(req: any, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - gender: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(req: any, id: string): Promise<{ - images: any[]; - student: { - id: number; - name: string; - gender: string; - birthDate: Date; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - create(req: any, dto: CreateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - update(req: any, id: string, dto: UpdateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - delete(req: any, id: string): Promise<{ - message: string; - }>; - findByStudent(req: any, studentId: string, query: any): Promise<{ - items: { - images: any[]; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findByClass(req: any, classId: string, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; -} -export declare class TeacherGrowthController { - private readonly growthService; - constructor(growthService: GrowthService); - findAll(req: any, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - gender: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(req: any, id: string): Promise<{ - images: any[]; - student: { - id: number; - name: string; - gender: string; - birthDate: Date; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - create(req: any, dto: CreateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - update(req: any, id: string, dto: UpdateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - delete(req: any, id: string): Promise<{ - message: string; - }>; - findByClass(req: any, classId: string, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/growth/growth.controller.js b/reading-platform-backend/dist/src/modules/growth/growth.controller.js deleted file mode 100644 index dea746e..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.controller.js +++ /dev/null @@ -1,194 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TeacherGrowthController = exports.GrowthController = void 0; -const common_1 = require("@nestjs/common"); -const growth_service_1 = require("./growth.service"); -const create_growth_dto_1 = require("./dto/create-growth.dto"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let GrowthController = class GrowthController { - constructor(growthService) { - this.growthService = growthService; - } - findAll(req, query) { - return this.growthService.findAll(req.user.tenantId, query); - } - findOne(req, id) { - return this.growthService.findOne(req.user.tenantId, +id); - } - create(req, dto) { - return this.growthService.create(req.user.tenantId, req.user.userId, dto); - } - update(req, id, dto) { - return this.growthService.update(req.user.tenantId, +id, dto); - } - delete(req, id) { - return this.growthService.delete(req.user.tenantId, +id); - } - findByStudent(req, studentId, query) { - return this.growthService.findByStudent(req.user.tenantId, +studentId, query); - } - findByClass(req, classId, query) { - return this.growthService.findByClass(req.user.tenantId, +classId, query); - } -}; -exports.GrowthController = GrowthController; -__decorate([ - (0, common_1.Get)('growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('growth-records/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "findOne", null); -__decorate([ - (0, common_1.Post)('growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_growth_dto_1.CreateGrowthRecordDto]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "create", null); -__decorate([ - (0, common_1.Put)('growth-records/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_growth_dto_1.UpdateGrowthRecordDto]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "update", null); -__decorate([ - (0, common_1.Delete)('growth-records/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "delete", null); -__decorate([ - (0, common_1.Get)('students/:studentId/growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('studentId')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "findByStudent", null); -__decorate([ - (0, common_1.Get)('classes/:classId/growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('classId')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], GrowthController.prototype, "findByClass", null); -exports.GrowthController = GrowthController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [growth_service_1.GrowthService]) -], GrowthController); -let TeacherGrowthController = class TeacherGrowthController { - constructor(growthService) { - this.growthService = growthService; - } - findAll(req, query) { - return this.growthService.findAllForTeacher(req.user.tenantId, req.user.userId, query); - } - findOne(req, id) { - return this.growthService.findOneForTeacher(req.user.tenantId, req.user.userId, +id); - } - create(req, dto) { - return this.growthService.createForTeacher(req.user.tenantId, req.user.userId, dto); - } - update(req, id, dto) { - return this.growthService.updateForTeacher(req.user.tenantId, req.user.userId, +id, dto); - } - delete(req, id) { - return this.growthService.deleteForTeacher(req.user.tenantId, req.user.userId, +id); - } - findByClass(req, classId, query) { - return this.growthService.findByClass(req.user.tenantId, +classId, query); - } -}; -exports.TeacherGrowthController = TeacherGrowthController; -__decorate([ - (0, common_1.Get)('growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherGrowthController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('growth-records/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherGrowthController.prototype, "findOne", null); -__decorate([ - (0, common_1.Post)('growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_growth_dto_1.CreateGrowthRecordDto]), - __metadata("design:returntype", void 0) -], TeacherGrowthController.prototype, "create", null); -__decorate([ - (0, common_1.Put)('growth-records/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_growth_dto_1.UpdateGrowthRecordDto]), - __metadata("design:returntype", void 0) -], TeacherGrowthController.prototype, "update", null); -__decorate([ - (0, common_1.Delete)('growth-records/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherGrowthController.prototype, "delete", null); -__decorate([ - (0, common_1.Get)('classes/:classId/growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('classId')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], TeacherGrowthController.prototype, "findByClass", null); -exports.TeacherGrowthController = TeacherGrowthController = __decorate([ - (0, common_1.Controller)('teacher'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('teacher'), - __metadata("design:paramtypes", [growth_service_1.GrowthService]) -], TeacherGrowthController); -//# sourceMappingURL=growth.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/growth.controller.js.map b/reading-platform-backend/dist/src/modules/growth/growth.controller.js.map deleted file mode 100644 index a59af03..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"growth.controller.js","sourceRoot":"","sources":["../../../../src/modules/growth/growth.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/growth.module.d.ts b/reading-platform-backend/dist/src/modules/growth/growth.module.d.ts deleted file mode 100644 index c83a9bd..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class GrowthModule { -} diff --git a/reading-platform-backend/dist/src/modules/growth/growth.module.js b/reading-platform-backend/dist/src/modules/growth/growth.module.js deleted file mode 100644 index bbc25f7..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GrowthModule = void 0; -const common_1 = require("@nestjs/common"); -const growth_controller_1 = require("./growth.controller"); -const growth_service_1 = require("./growth.service"); -let GrowthModule = class GrowthModule { -}; -exports.GrowthModule = GrowthModule; -exports.GrowthModule = GrowthModule = __decorate([ - (0, common_1.Module)({ - controllers: [growth_controller_1.GrowthController, growth_controller_1.TeacherGrowthController], - providers: [growth_service_1.GrowthService], - exports: [growth_service_1.GrowthService], - }) -], GrowthModule); -//# sourceMappingURL=growth.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/growth.module.js.map b/reading-platform-backend/dist/src/modules/growth/growth.module.js.map deleted file mode 100644 index eb17fe3..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"growth.module.js","sourceRoot":"","sources":["../../../../src/modules/growth/growth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAgF;AAChF,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,oCAAgB,EAAE,2CAAuB,CAAC;QACxD,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/growth.service.d.ts b/reading-platform-backend/dist/src/modules/growth/growth.service.d.ts deleted file mode 100644 index 0ba8df3..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.service.d.ts +++ /dev/null @@ -1,252 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { CreateGrowthRecordDto, UpdateGrowthRecordDto } from './dto/create-growth.dto'; -export declare class GrowthService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - private parseJsonArray; - findAll(tenantId: number, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - gender: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findAllForTeacher(tenantId: number, teacherId: number, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - gender: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOneForTeacher(tenantId: number, teacherId: number, id: number): Promise<{ - images: any[]; - student: { - id: number; - name: string; - gender: string; - birthDate: Date; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - createForTeacher(tenantId: number, teacherId: number, dto: CreateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - updateForTeacher(tenantId: number, teacherId: number, id: number, dto: UpdateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - deleteForTeacher(tenantId: number, teacherId: number, id: number): Promise<{ - message: string; - }>; - findOne(tenantId: number, id: number): Promise<{ - images: any[]; - student: { - id: number; - name: string; - gender: string; - birthDate: Date; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - create(tenantId: number, userId: number, dto: CreateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - update(tenantId: number, id: number, dto: UpdateGrowthRecordDto): Promise<{ - images: any[]; - student: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }>; - delete(tenantId: number, id: number): Promise<{ - message: string; - }>; - findByStudent(tenantId: number, studentId: number, query: any): Promise<{ - items: { - images: any[]; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findByClass(tenantId: number, classId: number, query: any): Promise<{ - items: { - images: any[]; - student: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/growth/growth.service.js b/reading-platform-backend/dist/src/modules/growth/growth.service.js deleted file mode 100644 index cf56810..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.service.js +++ /dev/null @@ -1,544 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var GrowthService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GrowthService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let GrowthService = GrowthService_1 = class GrowthService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(GrowthService_1.name); - } - parseJsonArray(value) { - if (!value) - return []; - if (typeof value === 'string') { - try { - return JSON.parse(value); - } - catch { - return []; - } - } - return Array.isArray(value) ? value : []; - } - async findAll(tenantId, query) { - const { page = 1, pageSize = 10, studentId, classId, recordType, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId: tenantId, - }; - if (studentId) { - where.studentId = +studentId; - } - if (classId) { - where.classId = +classId; - } - if (recordType) { - where.recordType = recordType; - } - if (keyword) { - where.OR = [ - { title: { contains: keyword } }, - { content: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.growthRecord.findMany({ - where, - skip, - take, - orderBy: { recordDate: 'desc' }, - include: { - student: { - select: { - id: true, - name: true, - gender: true, - }, - }, - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - }), - this.prisma.growthRecord.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - images: this.parseJsonArray(item.images), - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findAllForTeacher(tenantId, teacherId, query) { - const { page = 1, pageSize = 10, studentId, classId, recordType, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { teacherId }, - select: { classId: true }, - }); - const classIds = classTeachers.map((ct) => ct.classId); - if (classIds.length === 0) { - return { - items: [], - total: 0, - page: +page, - pageSize: +pageSize, - }; - } - const where = { - tenantId: tenantId, - classId: { in: classIds }, - }; - if (studentId) { - where.studentId = +studentId; - } - if (classId) { - if (!classIds.includes(+classId)) { - throw new common_1.ForbiddenException('您没有权限查看该班级的档案'); - } - where.classId = +classId; - } - if (recordType) { - where.recordType = recordType; - } - if (keyword) { - where.OR = [ - { title: { contains: keyword } }, - { content: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.growthRecord.findMany({ - where, - skip, - take, - orderBy: { recordDate: 'desc' }, - include: { - student: { - select: { - id: true, - name: true, - gender: true, - }, - }, - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - }), - this.prisma.growthRecord.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - images: this.parseJsonArray(item.images), - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findOneForTeacher(tenantId, teacherId, id) { - const record = await this.prisma.growthRecord.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - student: { - select: { - id: true, - name: true, - gender: true, - birthDate: true, - }, - }, - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - }); - if (!record) { - throw new common_1.NotFoundException('成长档案不存在'); - } - const classTeacher = await this.prisma.classTeacher.findFirst({ - where: { teacherId, classId: record.classId }, - }); - if (!classTeacher) { - throw new common_1.ForbiddenException('您没有权限查看此档案'); - } - return { - ...record, - images: this.parseJsonArray(record.images), - }; - } - async createForTeacher(tenantId, teacherId, dto) { - const student = await this.prisma.student.findFirst({ - where: { - id: dto.studentId, - tenantId: tenantId, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const classId = dto.classId || student.classId; - const classTeacher = await this.prisma.classTeacher.findFirst({ - where: { teacherId, classId }, - }); - if (!classTeacher) { - throw new common_1.ForbiddenException('您没有权限为此班级创建档案'); - } - const record = await this.prisma.growthRecord.create({ - data: { - tenantId: tenantId, - studentId: dto.studentId, - classId: classId, - recordType: dto.recordType, - title: dto.title, - content: dto.content, - images: JSON.stringify(dto.images || []), - recordDate: new Date(dto.recordDate), - createdBy: teacherId, - }, - include: { - student: { - select: { - id: true, - name: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Growth record created by teacher: ${record.id}`); - return { - ...record, - images: this.parseJsonArray(record.images), - }; - } - async updateForTeacher(tenantId, teacherId, id, dto) { - const existing = await this.prisma.growthRecord.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existing) { - throw new common_1.NotFoundException('成长档案不存在'); - } - const classTeacher = await this.prisma.classTeacher.findFirst({ - where: { teacherId, classId: existing.classId }, - }); - if (!classTeacher) { - throw new common_1.ForbiddenException('您没有权限更新此档案'); - } - const record = await this.prisma.growthRecord.update({ - where: { id: id }, - data: { - title: dto.title, - content: dto.content, - images: dto.images ? JSON.stringify(dto.images) : undefined, - recordDate: dto.recordDate ? new Date(dto.recordDate) : undefined, - }, - include: { - student: { - select: { - id: true, - name: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Growth record updated by teacher: ${id}`); - return { - ...record, - images: this.parseJsonArray(record.images), - }; - } - async deleteForTeacher(tenantId, teacherId, id) { - const existing = await this.prisma.growthRecord.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existing) { - throw new common_1.NotFoundException('成长档案不存在'); - } - const classTeacher = await this.prisma.classTeacher.findFirst({ - where: { teacherId, classId: existing.classId }, - }); - if (!classTeacher) { - throw new common_1.ForbiddenException('您没有权限删除此档案'); - } - await this.prisma.growthRecord.delete({ - where: { id: id }, - }); - this.logger.log(`Growth record deleted by teacher: ${id}`); - return { message: '删除成功' }; - } - async findOne(tenantId, id) { - const record = await this.prisma.growthRecord.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - student: { - select: { - id: true, - name: true, - gender: true, - birthDate: true, - }, - }, - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - }); - if (!record) { - throw new common_1.NotFoundException('成长档案不存在'); - } - return { - ...record, - images: this.parseJsonArray(record.images), - }; - } - async create(tenantId, userId, dto) { - const student = await this.prisma.student.findFirst({ - where: { - id: dto.studentId, - tenantId: tenantId, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const record = await this.prisma.growthRecord.create({ - data: { - tenantId: tenantId, - studentId: dto.studentId, - classId: dto.classId || student.classId, - recordType: dto.recordType, - title: dto.title, - content: dto.content, - images: JSON.stringify(dto.images || []), - recordDate: new Date(dto.recordDate), - createdBy: userId, - }, - include: { - student: { - select: { - id: true, - name: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Growth record created: ${record.id}`); - return { - ...record, - images: this.parseJsonArray(record.images), - }; - } - async update(tenantId, id, dto) { - const existing = await this.prisma.growthRecord.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existing) { - throw new common_1.NotFoundException('成长档案不存在'); - } - const record = await this.prisma.growthRecord.update({ - where: { id: id }, - data: { - title: dto.title, - content: dto.content, - images: dto.images ? JSON.stringify(dto.images) : undefined, - recordDate: dto.recordDate ? new Date(dto.recordDate) : undefined, - }, - include: { - student: { - select: { - id: true, - name: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Growth record updated: ${id}`); - return { - ...record, - images: this.parseJsonArray(record.images), - }; - } - async delete(tenantId, id) { - const existing = await this.prisma.growthRecord.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existing) { - throw new common_1.NotFoundException('成长档案不存在'); - } - await this.prisma.growthRecord.delete({ - where: { id: id }, - }); - this.logger.log(`Growth record deleted: ${id}`); - return { message: '删除成功' }; - } - async findByStudent(tenantId, studentId, query) { - const { page = 1, pageSize = 10 } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const student = await this.prisma.student.findFirst({ - where: { - id: studentId, - tenantId: tenantId, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const [items, total] = await Promise.all([ - this.prisma.growthRecord.findMany({ - where: { - studentId: studentId, - tenantId: tenantId, - }, - skip, - take, - orderBy: { recordDate: 'desc' }, - }), - this.prisma.growthRecord.count({ - where: { - studentId: studentId, - tenantId: tenantId, - }, - }), - ]); - return { - items: items.map((item) => ({ - ...item, - images: this.parseJsonArray(item.images), - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findByClass(tenantId, classId, query) { - const { page = 1, pageSize = 10, recordDate } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const classEntity = await this.prisma.class.findFirst({ - where: { - id: classId, - tenantId: tenantId, - }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const where = { - classId: classId, - tenantId: tenantId, - recordType: 'CLASS', - }; - if (recordDate) { - where.recordDate = new Date(recordDate); - } - const [items, total] = await Promise.all([ - this.prisma.growthRecord.findMany({ - where, - skip, - take, - orderBy: { recordDate: 'desc' }, - include: { - student: { - select: { - id: true, - name: true, - }, - }, - }, - }), - this.prisma.growthRecord.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - images: this.parseJsonArray(item.images), - })), - total, - page: +page, - pageSize: +pageSize, - }; - } -}; -exports.GrowthService = GrowthService; -exports.GrowthService = GrowthService = GrowthService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], GrowthService); -//# sourceMappingURL=growth.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/growth/growth.service.js.map b/reading-platform-backend/dist/src/modules/growth/growth.service.js.map deleted file mode 100644 index a59125e..0000000 --- a/reading-platform-backend/dist/src/modules/growth/growth.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"growth.service.js","sourceRoot":"","sources":["../../../../src/modules/growth/growth.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.d.ts b/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.d.ts deleted file mode 100644 index b24e64b..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare class CreateLessonDto { - courseId: number; - classId: number; - plannedDatetime?: string; -} diff --git a/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js b/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js deleted file mode 100644 index 531e589..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CreateLessonDto = void 0; -const class_validator_1 = require("class-validator"); -class CreateLessonDto { -} -exports.CreateLessonDto = CreateLessonDto; -__decorate([ - (0, class_validator_1.IsNumber)(), - __metadata("design:type", Number) -], CreateLessonDto.prototype, "courseId", void 0); -__decorate([ - (0, class_validator_1.IsNumber)(), - __metadata("design:type", Number) -], CreateLessonDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateLessonDto.prototype, "plannedDatetime", void 0); -//# sourceMappingURL=create-lesson.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js.map b/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js.map deleted file mode 100644 index b554728..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/dto/create-lesson.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-lesson.dto.js","sourceRoot":"","sources":["../../../../../src/modules/lesson/dto/create-lesson.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAiE;AAEjE,MAAa,eAAe;CAU3B;AAVD,0CAUC;AARC;IADC,IAAA,0BAAQ,GAAE;;iDACM;AAGjB;IADC,IAAA,0BAAQ,GAAE;;gDACK;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;wDACc"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.d.ts b/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.d.ts deleted file mode 100644 index 7c9064f..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export declare class FinishLessonDto { - overallRating?: string; - participationRating?: string; - completionNote?: string; - actualDuration?: number; -} diff --git a/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js b/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js deleted file mode 100644 index a2cf2d9..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FinishLessonDto = void 0; -const class_validator_1 = require("class-validator"); -class FinishLessonDto { -} -exports.FinishLessonDto = FinishLessonDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], FinishLessonDto.prototype, "overallRating", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], FinishLessonDto.prototype, "participationRating", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], FinishLessonDto.prototype, "completionNote", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsNumber)(), - __metadata("design:type", Number) -], FinishLessonDto.prototype, "actualDuration", void 0); -//# sourceMappingURL=finish-lesson.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js.map b/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js.map deleted file mode 100644 index ca4ccbe..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/dto/finish-lesson.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"finish-lesson.dto.js","sourceRoot":"","sources":["../../../../../src/modules/lesson/dto/finish-lesson.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAiE;AAEjE,MAAa,eAAe;CAgB3B;AAhBD,0CAgBC;AAbC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACY;AAIvB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;4DACkB;AAI7B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;uDACa;AAIxB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;uDACa"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.controller.d.ts b/reading-platform-backend/dist/src/modules/lesson/lesson.controller.d.ts deleted file mode 100644 index 89d89e4..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.controller.d.ts +++ /dev/null @@ -1,485 +0,0 @@ -import { LessonService } from './lesson.service'; -import { CreateLessonDto } from './dto/create-lesson.dto'; -import { FinishLessonDto } from './dto/finish-lesson.dto'; -export declare class LessonController { - private readonly lessonService; - constructor(lessonService: LessonService); - findAll(req: any, query: any): Promise<{ - items: ({ - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(req: any, id: string): Promise<{ - course: { - ebookPaths: any; - audioPaths: any; - videoPaths: any; - posterPaths: any; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - id: number; - name: string; - pictureBookName: string; - pptPath: string; - pptName: string; - duration: number; - }; - class: { - id: number; - name: string; - students: { - id: number; - name: string; - gender: string; - }[]; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - create(req: any, dto: CreateLessonDto): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - start(req: any, id: string): Promise<{ - course: { - ebookPaths: any; - audioPaths: any; - videoPaths: any; - posterPaths: any; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - id: number; - name: string; - pictureBookName: string; - pptPath: string; - pptName: string; - duration: number; - }; - class: { - id: number; - name: string; - students: { - id: number; - name: string; - gender: string; - }[]; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - finish(req: any, id: string, dto: FinishLessonDto): Promise<{ - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - cancel(req: any, id: string): Promise<{ - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - saveStudentRecord(req: any, id: string, studentId: string, data: any): Promise<{ - id: number; - createdAt: Date; - updatedAt: Date; - studentId: number; - lessonId: number; - participation: number | null; - focus: number | null; - interest: number | null; - understanding: number | null; - domainAchievements: string | null; - notes: string | null; - }>; - getStudentRecords(req: any, id: string): Promise<{ - lesson: { - id: number; - status: string; - className: string; - }; - students: { - record: { - student: { - id: number; - name: string; - gender: string; - }; - } & { - id: number; - createdAt: Date; - updatedAt: Date; - studentId: number; - lessonId: number; - participation: number | null; - focus: number | null; - interest: number | null; - understanding: number | null; - domainAchievements: string | null; - notes: string | null; - }; - id: number; - name: string; - gender: string; - }[]; - }>; - batchSaveStudentRecords(req: any, id: string, data: { - records: Array<{ - studentId: number; - focus?: number; - participation?: number; - interest?: number; - understanding?: number; - notes?: string; - }>; - }): Promise<{ - count: number; - records: any[]; - }>; - submitFeedback(req: any, id: string, data: any): Promise<{ - stepFeedbacks: any; - activitiesDone: any; - lesson: { - id: number; - course: { - id: number; - name: string; - }; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }>; - getFeedback(req: any, id: string): Promise<{ - stepFeedbacks: any; - activitiesDone: any; - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }>; -} -export declare class TeacherFeedbackController { - private readonly lessonService; - constructor(lessonService: LessonService); - findAll(req: any, query: any): Promise<{ - items: { - stepFeedbacks: any; - activitiesDone: any; - teacher: { - id: number; - name: string; - }; - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - startDatetime: Date; - actualDuration: number; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getStats(req: any): Promise<{ - totalFeedbacks: number; - avgDesignQuality: number; - avgParticipation: number; - avgGoalAchievement: number; - }>; -} -export declare class SchoolFeedbackController { - private readonly lessonService; - constructor(lessonService: LessonService); - findAll(req: any, query: any): Promise<{ - items: { - stepFeedbacks: any; - activitiesDone: any; - teacher: { - id: number; - name: string; - }; - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - startDatetime: Date; - actualDuration: number; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getStats(req: any): Promise<{ - totalFeedbacks: number; - avgDesignQuality: number; - avgParticipation: number; - avgGoalAchievement: number; - courseStats: Record; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.controller.js b/reading-platform-backend/dist/src/modules/lesson/lesson.controller.js deleted file mode 100644 index d16a4a7..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.controller.js +++ /dev/null @@ -1,230 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SchoolFeedbackController = exports.TeacherFeedbackController = exports.LessonController = void 0; -const common_1 = require("@nestjs/common"); -const lesson_service_1 = require("./lesson.service"); -const create_lesson_dto_1 = require("./dto/create-lesson.dto"); -const finish_lesson_dto_1 = require("./dto/finish-lesson.dto"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let LessonController = class LessonController { - constructor(lessonService) { - this.lessonService = lessonService; - } - findAll(req, query) { - return this.lessonService.findByTeacher(req.user.userId, query); - } - findOne(req, id) { - return this.lessonService.findOne(+id, req.user.userId); - } - create(req, dto) { - return this.lessonService.create(req.user.userId, req.user.tenantId, dto); - } - start(req, id) { - return this.lessonService.start(+id, req.user.userId); - } - finish(req, id, dto) { - return this.lessonService.finish(+id, req.user.userId, dto); - } - cancel(req, id) { - return this.lessonService.cancel(+id, req.user.userId); - } - saveStudentRecord(req, id, studentId, data) { - return this.lessonService.saveStudentRecord(+id, req.user.userId, +studentId, data); - } - getStudentRecords(req, id) { - return this.lessonService.getStudentRecords(+id, req.user.userId); - } - batchSaveStudentRecords(req, id, data) { - return this.lessonService.batchSaveStudentRecords(+id, req.user.userId, data.records); - } - submitFeedback(req, id, data) { - return this.lessonService.submitFeedback(+id, req.user.userId, data); - } - getFeedback(req, id) { - return this.lessonService.getFeedback(+id, req.user.userId); - } -}; -exports.LessonController = LessonController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)(':id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "findOne", null); -__decorate([ - (0, common_1.Post)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_lesson_dto_1.CreateLessonDto]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "create", null); -__decorate([ - (0, common_1.Post)(':id/start'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "start", null); -__decorate([ - (0, common_1.Post)(':id/finish'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, finish_lesson_dto_1.FinishLessonDto]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "finish", null); -__decorate([ - (0, common_1.Post)(':id/cancel'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "cancel", null); -__decorate([ - (0, common_1.Post)(':id/students/:studentId/record'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Param)('studentId')), - __param(3, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, Object]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "saveStudentRecord", null); -__decorate([ - (0, common_1.Get)(':id/student-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "getStudentRecords", null); -__decorate([ - (0, common_1.Post)(':id/student-records/batch'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "batchSaveStudentRecords", null); -__decorate([ - (0, common_1.Post)(':id/feedback'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "submitFeedback", null); -__decorate([ - (0, common_1.Get)(':id/feedback'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], LessonController.prototype, "getFeedback", null); -exports.LessonController = LessonController = __decorate([ - (0, common_1.Controller)('teacher/lessons'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('teacher'), - __metadata("design:paramtypes", [lesson_service_1.LessonService]) -], LessonController); -let TeacherFeedbackController = class TeacherFeedbackController { - constructor(lessonService) { - this.lessonService = lessonService; - } - findAll(req, query) { - return this.lessonService.getFeedbacksByTenant(req.user.tenantId, { - ...query, - teacherId: req.user.userId, - }); - } - getStats(req) { - return this.lessonService.getTeacherFeedbackStats(req.user.userId); - } -}; -exports.TeacherFeedbackController = TeacherFeedbackController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherFeedbackController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('stats'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherFeedbackController.prototype, "getStats", null); -exports.TeacherFeedbackController = TeacherFeedbackController = __decorate([ - (0, common_1.Controller)('teacher/feedbacks'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('teacher'), - __metadata("design:paramtypes", [lesson_service_1.LessonService]) -], TeacherFeedbackController); -let SchoolFeedbackController = class SchoolFeedbackController { - constructor(lessonService) { - this.lessonService = lessonService; - } - findAll(req, query) { - return this.lessonService.getFeedbacksByTenant(req.user.tenantId, query); - } - getStats(req) { - return this.lessonService.getFeedbackStats(req.user.tenantId); - } -}; -exports.SchoolFeedbackController = SchoolFeedbackController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolFeedbackController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('stats'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolFeedbackController.prototype, "getStats", null); -exports.SchoolFeedbackController = SchoolFeedbackController = __decorate([ - (0, common_1.Controller)('school/feedbacks'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [lesson_service_1.LessonService]) -], SchoolFeedbackController); -//# sourceMappingURL=lesson.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.controller.js.map b/reading-platform-backend/dist/src/modules/lesson/lesson.controller.js.map deleted file mode 100644 index 89a16b8..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lesson.controller.js","sourceRoot":"","sources":["../../../../src/modules/lesson/lesson.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.module.d.ts b/reading-platform-backend/dist/src/modules/lesson/lesson.module.d.ts deleted file mode 100644 index 6ee04b9..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class LessonModule { -} diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.module.js b/reading-platform-backend/dist/src/modules/lesson/lesson.module.js deleted file mode 100644 index 58084fc..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LessonModule = void 0; -const common_1 = require("@nestjs/common"); -const lesson_controller_1 = require("./lesson.controller"); -const lesson_service_1 = require("./lesson.service"); -let LessonModule = class LessonModule { -}; -exports.LessonModule = LessonModule; -exports.LessonModule = LessonModule = __decorate([ - (0, common_1.Module)({ - controllers: [lesson_controller_1.LessonController, lesson_controller_1.SchoolFeedbackController, lesson_controller_1.TeacherFeedbackController], - providers: [lesson_service_1.LessonService], - exports: [lesson_service_1.LessonService], - }) -], LessonModule); -//# sourceMappingURL=lesson.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.module.js.map b/reading-platform-backend/dist/src/modules/lesson/lesson.module.js.map deleted file mode 100644 index f633152..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lesson.module.js","sourceRoot":"","sources":["../../../../src/modules/lesson/lesson.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAA4G;AAC5G,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,oCAAgB,EAAE,4CAAwB,EAAE,6CAAyB,CAAC;QACpF,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.service.d.ts b/reading-platform-backend/dist/src/modules/lesson/lesson.service.d.ts deleted file mode 100644 index 8402f81..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.service.d.ts +++ /dev/null @@ -1,453 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { CreateLessonDto } from './dto/create-lesson.dto'; -import { FinishLessonDto } from './dto/finish-lesson.dto'; -export declare class LessonService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - create(teacherId: number, tenantId: number, dto: CreateLessonDto): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - start(lessonId: number, teacherId: number): Promise<{ - course: { - ebookPaths: any; - audioPaths: any; - videoPaths: any; - posterPaths: any; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - id: number; - name: string; - pictureBookName: string; - pptPath: string; - pptName: string; - duration: number; - }; - class: { - id: number; - name: string; - students: { - id: number; - name: string; - gender: string; - }[]; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - finish(lessonId: number, teacherId: number, dto: FinishLessonDto): Promise<{ - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - cancel(lessonId: number, teacherId: number): Promise<{ - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - findOne(lessonId: number, teacherId: number): Promise<{ - course: { - ebookPaths: any; - audioPaths: any; - videoPaths: any; - posterPaths: any; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - id: number; - name: string; - pictureBookName: string; - pptPath: string; - pptName: string; - duration: number; - }; - class: { - id: number; - name: string; - students: { - id: number; - name: string; - gender: string; - }[]; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - }>; - findByTeacher(teacherId: number, query: any): Promise<{ - items: ({ - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - } & { - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number; - courseId: number; - schedulePlanId: number | null; - plannedDatetime: Date | null; - startDatetime: Date | null; - endDatetime: Date | null; - actualDuration: number | null; - overallRating: string | null; - participationRating: string | null; - completionNote: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - saveStudentRecord(lessonId: number, teacherId: number, studentId: number, data: { - focus?: number; - participation?: number; - interest?: number; - understanding?: number; - notes?: string; - }): Promise<{ - id: number; - createdAt: Date; - updatedAt: Date; - studentId: number; - lessonId: number; - participation: number | null; - focus: number | null; - interest: number | null; - understanding: number | null; - domainAchievements: string | null; - notes: string | null; - }>; - getStudentRecords(lessonId: number, teacherId: number): Promise<{ - lesson: { - id: number; - status: string; - className: string; - }; - students: { - record: { - student: { - id: number; - name: string; - gender: string; - }; - } & { - id: number; - createdAt: Date; - updatedAt: Date; - studentId: number; - lessonId: number; - participation: number | null; - focus: number | null; - interest: number | null; - understanding: number | null; - domainAchievements: string | null; - notes: string | null; - }; - id: number; - name: string; - gender: string; - }[]; - }>; - batchSaveStudentRecords(lessonId: number, teacherId: number, records: Array<{ - studentId: number; - focus?: number; - participation?: number; - interest?: number; - understanding?: number; - notes?: string; - }>): Promise<{ - count: number; - records: any[]; - }>; - submitFeedback(lessonId: number, teacherId: number, data: { - designQuality?: number; - participation?: number; - goalAchievement?: number; - stepFeedbacks?: any; - pros?: string; - suggestions?: string; - activitiesDone?: any; - }): Promise<{ - stepFeedbacks: any; - activitiesDone: any; - lesson: { - id: number; - course: { - id: number; - name: string; - }; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }>; - getFeedback(lessonId: number, teacherId: number): Promise<{ - stepFeedbacks: any; - activitiesDone: any; - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }>; - getFeedbacksByTenant(tenantId: number, query: any): Promise<{ - items: { - stepFeedbacks: any; - activitiesDone: any; - teacher: { - id: number; - name: string; - }; - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - class: { - id: number; - name: string; - }; - startDatetime: Date; - actualDuration: number; - }; - id: number; - createdAt: Date; - updatedAt: Date; - teacherId: number; - lessonId: number; - designQuality: number | null; - participation: number | null; - goalAchievement: number | null; - pros: string | null; - suggestions: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getFeedbackStats(tenantId: number): Promise<{ - totalFeedbacks: number; - avgDesignQuality: number; - avgParticipation: number; - avgGoalAchievement: number; - courseStats: Record; - }>; - getTeacherFeedbackStats(teacherId: number): Promise<{ - totalFeedbacks: number; - avgDesignQuality: number; - avgParticipation: number; - avgGoalAchievement: number; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.service.js b/reading-platform-backend/dist/src/modules/lesson/lesson.service.js deleted file mode 100644 index 7f2441f..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.service.js +++ /dev/null @@ -1,762 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var LessonService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LessonService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let LessonService = LessonService_1 = class LessonService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(LessonService_1.name); - } - async create(teacherId, tenantId, dto) { - const course = await this.prisma.course.findUnique({ - where: { id: dto.courseId }, - }); - if (!course) { - throw new common_1.NotFoundException('课程不存在'); - } - if (course.status !== 'PUBLISHED') { - throw new common_1.ForbiddenException('该课程未发布'); - } - const tenantCourse = await this.prisma.tenantCourse.findUnique({ - where: { - tenantId_courseId: { - tenantId: tenantId, - courseId: dto.courseId, - }, - }, - }); - if (!tenantCourse || !tenantCourse.authorized) { - throw new common_1.ForbiddenException('您的学校未获得此课程的授权'); - } - const classEntity = await this.prisma.class.findFirst({ - where: { - id: dto.classId, - tenantId: tenantId, - teacherId: teacherId, - }, - }); - if (!classEntity) { - throw new common_1.ForbiddenException('无权操作此班级'); - } - const lesson = await this.prisma.lesson.create({ - data: { - tenantId: tenantId, - teacherId: teacherId, - classId: dto.classId, - courseId: dto.courseId, - plannedDatetime: dto.plannedDatetime ? new Date(dto.plannedDatetime) : null, - status: 'PLANNED', - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - duration: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Lesson created: ${lesson.id} by teacher ${teacherId}`); - return lesson; - } - async start(lessonId, teacherId) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - if (lesson.status !== 'PLANNED') { - throw new common_1.ForbiddenException('该授课记录已开始或已完成'); - } - const updatedLesson = await this.prisma.lesson.update({ - where: { id: lessonId }, - data: { - status: 'IN_PROGRESS', - startDatetime: new Date(), - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - duration: true, - pptPath: true, - pptName: true, - ebookPaths: true, - audioPaths: true, - videoPaths: true, - posterPaths: true, - scripts: { - orderBy: { sortOrder: 'asc' }, - include: { - pages: { - orderBy: { pageNumber: 'asc' }, - }, - }, - }, - activities: { - orderBy: { sortOrder: 'asc' }, - }, - }, - }, - class: { - select: { - id: true, - name: true, - students: { - select: { - id: true, - name: true, - gender: true, - }, - }, - }, - }, - }, - }); - this.logger.log(`Lesson started: ${lessonId}`); - return { - ...updatedLesson, - course: { - ...updatedLesson.course, - ebookPaths: updatedLesson.course.ebookPaths ? JSON.parse(updatedLesson.course.ebookPaths) : [], - audioPaths: updatedLesson.course.audioPaths ? JSON.parse(updatedLesson.course.audioPaths) : [], - videoPaths: updatedLesson.course.videoPaths ? JSON.parse(updatedLesson.course.videoPaths) : [], - posterPaths: updatedLesson.course.posterPaths ? JSON.parse(updatedLesson.course.posterPaths) : [], - scripts: updatedLesson.course.scripts.map((script) => ({ - ...script, - interactionPoints: script.interactionPoints ? JSON.parse(script.interactionPoints) : null, - resourceIds: script.resourceIds ? JSON.parse(script.resourceIds) : null, - pages: script.pages?.map((page) => ({ - ...page, - resourceIds: page.resourceIds ? JSON.parse(page.resourceIds) : null, - })), - })), - activities: updatedLesson.course.activities.map((activity) => ({ - ...activity, - onlineMaterials: activity.onlineMaterials ? JSON.parse(activity.onlineMaterials) : null, - objectives: activity.objectives ? JSON.parse(activity.objectives) : null, - })), - }, - }; - } - async finish(lessonId, teacherId, dto) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - if (lesson.status !== 'IN_PROGRESS') { - throw new common_1.ForbiddenException('该授课记录未开始或已完成'); - } - let actualDuration = dto.actualDuration; - if (!actualDuration && lesson.startDatetime) { - const endTime = new Date(); - actualDuration = Math.round((endTime.getTime() - lesson.startDatetime.getTime()) / 60000); - } - const updatedLesson = await this.prisma.lesson.update({ - where: { id: lessonId }, - data: { - status: 'COMPLETED', - endDatetime: new Date(), - actualDuration: actualDuration, - overallRating: dto.overallRating, - participationRating: dto.participationRating, - completionNote: dto.completionNote, - }, - include: { - course: { - select: { - id: true, - name: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - await this.prisma.course.update({ - where: { id: lesson.courseId }, - data: { - usageCount: { increment: 1 }, - }, - }); - await this.prisma.teacher.update({ - where: { id: teacherId }, - data: { - lessonCount: { increment: 1 }, - }, - }); - this.logger.log(`Lesson finished: ${lessonId}, duration: ${actualDuration} minutes`); - return updatedLesson; - } - async cancel(lessonId, teacherId) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - if (lesson.status !== 'PLANNED') { - throw new common_1.ForbiddenException('只有已计划的课程可以取消'); - } - const updatedLesson = await this.prisma.lesson.update({ - where: { id: lessonId }, - data: { - status: 'CANCELLED', - }, - include: { - course: { - select: { - id: true, - name: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Lesson cancelled: ${lessonId}`); - return updatedLesson; - } - async findOne(lessonId, teacherId) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - duration: true, - pptPath: true, - pptName: true, - ebookPaths: true, - audioPaths: true, - videoPaths: true, - posterPaths: true, - scripts: { - orderBy: { sortOrder: 'asc' }, - include: { - pages: { - orderBy: { pageNumber: 'asc' }, - }, - }, - }, - activities: { - orderBy: { sortOrder: 'asc' }, - }, - }, - }, - class: { - select: { - id: true, - name: true, - students: { - select: { - id: true, - name: true, - gender: true, - }, - }, - }, - }, - }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权查看此授课记录'); - } - return { - ...lesson, - course: { - ...lesson.course, - ebookPaths: lesson.course.ebookPaths ? JSON.parse(lesson.course.ebookPaths) : [], - audioPaths: lesson.course.audioPaths ? JSON.parse(lesson.course.audioPaths) : [], - videoPaths: lesson.course.videoPaths ? JSON.parse(lesson.course.videoPaths) : [], - posterPaths: lesson.course.posterPaths ? JSON.parse(lesson.course.posterPaths) : [], - scripts: lesson.course.scripts.map((script) => ({ - ...script, - interactionPoints: script.interactionPoints ? JSON.parse(script.interactionPoints) : null, - resourceIds: script.resourceIds ? JSON.parse(script.resourceIds) : null, - pages: script.pages?.map((page) => ({ - ...page, - resourceIds: page.resourceIds ? JSON.parse(page.resourceIds) : null, - })), - })), - activities: lesson.course.activities.map((activity) => ({ - ...activity, - onlineMaterials: activity.onlineMaterials ? JSON.parse(activity.onlineMaterials) : null, - objectives: activity.objectives ? JSON.parse(activity.objectives) : null, - })), - }, - }; - } - async findByTeacher(teacherId, query) { - const { page = 1, pageSize = 10, status, courseId } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - teacherId: teacherId, - }; - if (status) { - where.status = status; - } - if (courseId) { - where.courseId = +courseId; - } - const [items, total] = await Promise.all([ - this.prisma.lesson.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }), - this.prisma.lesson.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async saveStudentRecord(lessonId, teacherId, studentId, data) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - const student = await this.prisma.student.findFirst({ - where: { - id: studentId, - classId: lesson.classId, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在或不在此班级'); - } - const record = await this.prisma.studentRecord.upsert({ - where: { - lessonId_studentId: { - lessonId: lessonId, - studentId: studentId, - }, - }, - update: data, - create: { - lessonId: lessonId, - studentId: studentId, - ...data, - }, - }); - return record; - } - async getStudentRecords(lessonId, teacherId) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - include: { - class: { - select: { - id: true, - name: true, - students: { - select: { - id: true, - name: true, - gender: true, - }, - }, - }, - }, - }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - const records = await this.prisma.studentRecord.findMany({ - where: { lessonId }, - include: { - student: { - select: { - id: true, - name: true, - gender: true, - }, - }, - }, - }); - const studentRecords = lesson.class.students.map((student) => { - const record = records.find((r) => r.studentId === student.id); - return { - ...student, - record: record || null, - }; - }); - return { - lesson: { - id: lesson.id, - status: lesson.status, - className: lesson.class.name, - }, - students: studentRecords, - }; - } - async batchSaveStudentRecords(lessonId, teacherId, records) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - const results = []; - for (const record of records) { - const saved = await this.prisma.studentRecord.upsert({ - where: { - lessonId_studentId: { - lessonId: lessonId, - studentId: record.studentId, - }, - }, - update: { - focus: record.focus, - participation: record.participation, - interest: record.interest, - understanding: record.understanding, - notes: record.notes, - }, - create: { - lessonId: lessonId, - studentId: record.studentId, - focus: record.focus, - participation: record.participation, - interest: record.interest, - understanding: record.understanding, - notes: record.notes, - }, - }); - results.push(saved); - const existingRecord = await this.prisma.studentRecord.findFirst({ - where: { - studentId: record.studentId, - lessonId: { not: lessonId }, - }, - }); - if (!existingRecord) { - await this.prisma.student.update({ - where: { id: record.studentId }, - data: { readingCount: { increment: 1 } }, - }); - } - } - this.logger.log(`Batch saved ${results.length} student records for lesson ${lessonId}`); - return { count: results.length, records: results }; - } - async submitFeedback(lessonId, teacherId, data) { - const lesson = await this.prisma.lesson.findUnique({ - where: { id: lessonId }, - }); - if (!lesson) { - throw new common_1.NotFoundException('授课记录不存在'); - } - if (lesson.teacherId !== teacherId) { - throw new common_1.ForbiddenException('无权操作此授课记录'); - } - const feedback = await this.prisma.lessonFeedback.upsert({ - where: { - lessonId_teacherId: { - lessonId: lessonId, - teacherId: teacherId, - }, - }, - update: { - designQuality: data.designQuality, - participation: data.participation, - goalAchievement: data.goalAchievement, - stepFeedbacks: data.stepFeedbacks ? JSON.stringify(data.stepFeedbacks) : null, - pros: data.pros, - suggestions: data.suggestions, - activitiesDone: data.activitiesDone ? JSON.stringify(data.activitiesDone) : null, - }, - create: { - lessonId: lessonId, - teacherId: teacherId, - designQuality: data.designQuality, - participation: data.participation, - goalAchievement: data.goalAchievement, - stepFeedbacks: data.stepFeedbacks ? JSON.stringify(data.stepFeedbacks) : null, - pros: data.pros, - suggestions: data.suggestions, - activitiesDone: data.activitiesDone ? JSON.stringify(data.activitiesDone) : null, - }, - include: { - lesson: { - select: { - id: true, - course: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }); - await this.prisma.teacher.update({ - where: { id: teacherId }, - data: { - feedbackCount: { increment: 1 }, - }, - }); - this.logger.log(`Feedback submitted for lesson: ${lessonId}`); - return { - ...feedback, - stepFeedbacks: feedback.stepFeedbacks ? JSON.parse(feedback.stepFeedbacks) : null, - activitiesDone: feedback.activitiesDone ? JSON.parse(feedback.activitiesDone) : null, - }; - } - async getFeedback(lessonId, teacherId) { - const feedback = await this.prisma.lessonFeedback.findUnique({ - where: { - lessonId_teacherId: { - lessonId: lessonId, - teacherId: teacherId, - }, - }, - include: { - lesson: { - select: { - id: true, - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }); - if (!feedback) { - return null; - } - return { - ...feedback, - stepFeedbacks: feedback.stepFeedbacks ? JSON.parse(feedback.stepFeedbacks) : null, - activitiesDone: feedback.activitiesDone ? JSON.parse(feedback.activitiesDone) : null, - }; - } - async getFeedbacksByTenant(tenantId, query) { - const { page = 1, pageSize = 10, teacherId, courseId } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - lesson: { - tenantId: tenantId, - }, - }; - if (teacherId) { - where.teacherId = +teacherId; - } - if (courseId) { - where.lesson = { - ...where.lesson, - courseId: +courseId, - }; - } - const [items, total] = await Promise.all([ - this.prisma.lessonFeedback.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - lesson: { - select: { - id: true, - startDatetime: true, - actualDuration: true, - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }, - teacher: { - select: { - id: true, - name: true, - }, - }, - }, - }), - this.prisma.lessonFeedback.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - stepFeedbacks: item.stepFeedbacks ? JSON.parse(item.stepFeedbacks) : null, - activitiesDone: item.activitiesDone ? JSON.parse(item.activitiesDone) : null, - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async getFeedbackStats(tenantId) { - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: { - lesson: { - tenantId: tenantId, - }, - }, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - lesson: { - select: { - courseId: true, - }, - }, - }, - }); - const totalFeedbacks = feedbacks.length; - const avgDesignQuality = feedbacks.reduce((sum, f) => sum + (f.designQuality || 0), 0) / (totalFeedbacks || 1); - const avgParticipation = feedbacks.reduce((sum, f) => sum + (f.participation || 0), 0) / (totalFeedbacks || 1); - const avgGoalAchievement = feedbacks.reduce((sum, f) => sum + (f.goalAchievement || 0), 0) / (totalFeedbacks || 1); - const courseStats = {}; - feedbacks.forEach((f) => { - const courseId = f.lesson.courseId; - if (!courseStats[courseId]) { - courseStats[courseId] = { count: 0, avgRating: 0 }; - } - courseStats[courseId].count++; - courseStats[courseId].avgRating += (f.designQuality || 0 + f.participation || 0 + f.goalAchievement || 0) / 3; - }); - Object.keys(courseStats).forEach((courseId) => { - courseStats[+courseId].avgRating /= courseStats[+courseId].count; - }); - return { - totalFeedbacks, - avgDesignQuality: Math.round(avgDesignQuality * 10) / 10, - avgParticipation: Math.round(avgParticipation * 10) / 10, - avgGoalAchievement: Math.round(avgGoalAchievement * 10) / 10, - courseStats, - }; - } - async getTeacherFeedbackStats(teacherId) { - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: { teacherId }, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - lesson: { - select: { - courseId: true, - }, - }, - }, - }); - const totalFeedbacks = feedbacks.length; - const avgDesignQuality = feedbacks.reduce((sum, f) => sum + (f.designQuality || 0), 0) / (totalFeedbacks || 1); - const avgParticipation = feedbacks.reduce((sum, f) => sum + (f.participation || 0), 0) / (totalFeedbacks || 1); - const avgGoalAchievement = feedbacks.reduce((sum, f) => sum + (f.goalAchievement || 0), 0) / (totalFeedbacks || 1); - return { - totalFeedbacks, - avgDesignQuality: Math.round(avgDesignQuality * 10) / 10, - avgParticipation: Math.round(avgParticipation * 10) / 10, - avgGoalAchievement: Math.round(avgGoalAchievement * 10) / 10, - }; - } -}; -exports.LessonService = LessonService; -exports.LessonService = LessonService = LessonService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], LessonService); -//# sourceMappingURL=lesson.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/lesson/lesson.service.js.map b/reading-platform-backend/dist/src/modules/lesson/lesson.service.js.map deleted file mode 100644 index 04493a1..0000000 --- a/reading-platform-backend/dist/src/modules/lesson/lesson.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lesson.service.js","sourceRoot":"","sources":["../../../../src/modules/lesson/lesson.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/notification.controller.d.ts b/reading-platform-backend/dist/src/modules/notification/notification.controller.d.ts deleted file mode 100644 index 7232037..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.controller.d.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { NotificationService } from './notification.service'; -export declare class SchoolNotificationController { - private readonly notificationService; - constructor(notificationService: NotificationService); - getNotifications(req: any, query: any): Promise<{ - items: { - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }[]; - total: number; - unreadCount: number; - page: number; - pageSize: number; - }>; - getUnreadCount(req: any): Promise; - markAsRead(req: any, id: string): Promise<{ - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }>; - markAllAsRead(req: any): Promise; -} -export declare class TeacherNotificationController { - private readonly notificationService; - constructor(notificationService: NotificationService); - getNotifications(req: any, query: any): Promise<{ - items: { - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }[]; - total: number; - unreadCount: number; - page: number; - pageSize: number; - }>; - getUnreadCount(req: any): Promise; - markAsRead(req: any, id: string): Promise<{ - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }>; - markAllAsRead(req: any): Promise; -} -export declare class ParentNotificationController { - private readonly notificationService; - constructor(notificationService: NotificationService); - getNotifications(req: any, query: any): Promise<{ - items: { - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }[]; - total: number; - unreadCount: number; - page: number; - pageSize: number; - }>; - getUnreadCount(req: any): Promise; - markAsRead(req: any, id: string): Promise<{ - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }>; - markAllAsRead(req: any): Promise; -} diff --git a/reading-platform-backend/dist/src/modules/notification/notification.controller.js b/reading-platform-backend/dist/src/modules/notification/notification.controller.js deleted file mode 100644 index 1195c53..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.controller.js +++ /dev/null @@ -1,183 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ParentNotificationController = exports.TeacherNotificationController = exports.SchoolNotificationController = void 0; -const common_1 = require("@nestjs/common"); -const notification_service_1 = require("./notification.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let SchoolNotificationController = class SchoolNotificationController { - constructor(notificationService) { - this.notificationService = notificationService; - } - getNotifications(req, query) { - return this.notificationService.getNotifications(req.user.tenantId, 'SCHOOL', req.user.userId, query); - } - getUnreadCount(req) { - return this.notificationService.getUnreadCount(req.user.tenantId, 'SCHOOL', req.user.userId); - } - markAsRead(req, id) { - return this.notificationService.markAsRead(req.user.tenantId, +id, 'SCHOOL', req.user.userId); - } - markAllAsRead(req) { - return this.notificationService.markAllAsRead(req.user.tenantId, 'SCHOOL', req.user.userId); - } -}; -exports.SchoolNotificationController = SchoolNotificationController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolNotificationController.prototype, "getNotifications", null); -__decorate([ - (0, common_1.Get)('unread-count'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolNotificationController.prototype, "getUnreadCount", null); -__decorate([ - (0, common_1.Put)(':id/read'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolNotificationController.prototype, "markAsRead", null); -__decorate([ - (0, common_1.Put)('read-all'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolNotificationController.prototype, "markAllAsRead", null); -exports.SchoolNotificationController = SchoolNotificationController = __decorate([ - (0, common_1.Controller)('school/notifications'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [notification_service_1.NotificationService]) -], SchoolNotificationController); -let TeacherNotificationController = class TeacherNotificationController { - constructor(notificationService) { - this.notificationService = notificationService; - } - getNotifications(req, query) { - return this.notificationService.getNotifications(req.user.tenantId, 'TEACHER', req.user.userId, query); - } - getUnreadCount(req) { - return this.notificationService.getUnreadCount(req.user.tenantId, 'TEACHER', req.user.userId); - } - markAsRead(req, id) { - return this.notificationService.markAsRead(req.user.tenantId, +id, 'TEACHER', req.user.userId); - } - markAllAsRead(req) { - return this.notificationService.markAllAsRead(req.user.tenantId, 'TEACHER', req.user.userId); - } -}; -exports.TeacherNotificationController = TeacherNotificationController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherNotificationController.prototype, "getNotifications", null); -__decorate([ - (0, common_1.Get)('unread-count'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherNotificationController.prototype, "getUnreadCount", null); -__decorate([ - (0, common_1.Put)(':id/read'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherNotificationController.prototype, "markAsRead", null); -__decorate([ - (0, common_1.Put)('read-all'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherNotificationController.prototype, "markAllAsRead", null); -exports.TeacherNotificationController = TeacherNotificationController = __decorate([ - (0, common_1.Controller)('teacher/notifications'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('teacher'), - __metadata("design:paramtypes", [notification_service_1.NotificationService]) -], TeacherNotificationController); -let ParentNotificationController = class ParentNotificationController { - constructor(notificationService) { - this.notificationService = notificationService; - } - getNotifications(req, query) { - return this.notificationService.getNotifications(req.user.tenantId, 'PARENT', req.user.userId, query); - } - getUnreadCount(req) { - return this.notificationService.getUnreadCount(req.user.tenantId, 'PARENT', req.user.userId); - } - markAsRead(req, id) { - return this.notificationService.markAsRead(req.user.tenantId, +id, 'PARENT', req.user.userId); - } - markAllAsRead(req) { - return this.notificationService.markAllAsRead(req.user.tenantId, 'PARENT', req.user.userId); - } -}; -exports.ParentNotificationController = ParentNotificationController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], ParentNotificationController.prototype, "getNotifications", null); -__decorate([ - (0, common_1.Get)('unread-count'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], ParentNotificationController.prototype, "getUnreadCount", null); -__decorate([ - (0, common_1.Put)(':id/read'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], ParentNotificationController.prototype, "markAsRead", null); -__decorate([ - (0, common_1.Put)('read-all'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], ParentNotificationController.prototype, "markAllAsRead", null); -exports.ParentNotificationController = ParentNotificationController = __decorate([ - (0, common_1.Controller)('parent/notifications'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('parent'), - __metadata("design:paramtypes", [notification_service_1.NotificationService]) -], ParentNotificationController); -//# sourceMappingURL=notification.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/notification.controller.js.map b/reading-platform-backend/dist/src/modules/notification/notification.controller.js.map deleted file mode 100644 index caf5ba5..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"notification.controller.js","sourceRoot":"","sources":["../../../../src/modules/notification/notification.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/notification.module.d.ts b/reading-platform-backend/dist/src/modules/notification/notification.module.d.ts deleted file mode 100644 index 1634b39..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class NotificationModule { -} diff --git a/reading-platform-backend/dist/src/modules/notification/notification.module.js b/reading-platform-backend/dist/src/modules/notification/notification.module.js deleted file mode 100644 index 30dfd44..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.module.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.NotificationModule = void 0; -const common_1 = require("@nestjs/common"); -const schedule_1 = require("@nestjs/schedule"); -const notification_controller_1 = require("./notification.controller"); -const notification_service_1 = require("./notification.service"); -const schedule_notification_service_1 = require("./schedule-notification.service"); -let NotificationModule = class NotificationModule { -}; -exports.NotificationModule = NotificationModule; -exports.NotificationModule = NotificationModule = __decorate([ - (0, common_1.Module)({ - imports: [schedule_1.ScheduleModule.forRoot()], - controllers: [ - notification_controller_1.SchoolNotificationController, - notification_controller_1.TeacherNotificationController, - notification_controller_1.ParentNotificationController, - ], - providers: [notification_service_1.NotificationService, schedule_notification_service_1.ScheduleNotificationService], - exports: [notification_service_1.NotificationService, schedule_notification_service_1.ScheduleNotificationService], - }) -], NotificationModule); -//# sourceMappingURL=notification.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/notification.module.js.map b/reading-platform-backend/dist/src/modules/notification/notification.module.js.map deleted file mode 100644 index 33ed11c..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"notification.module.js","sourceRoot":"","sources":["../../../../src/modules/notification/notification.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAAkD;AAClD,uEAImC;AACnC,iEAA6D;AAC7D,mFAA8E;AAYvE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAV9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,yBAAc,CAAC,OAAO,EAAE,CAAC;QACnC,WAAW,EAAE;YACX,sDAA4B;YAC5B,uDAA6B;YAC7B,sDAA4B;SAC7B;QACD,SAAS,EAAE,CAAC,0CAAmB,EAAE,2DAA2B,CAAC;QAC7D,OAAO,EAAE,CAAC,0CAAmB,EAAE,2DAA2B,CAAC;KAC5D,CAAC;GACW,kBAAkB,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/notification.service.d.ts b/reading-platform-backend/dist/src/modules/notification/notification.service.d.ts deleted file mode 100644 index 1f6c7dc..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.service.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class NotificationService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - createNotification(data: { - tenantId: number; - recipientType: 'TEACHER' | 'SCHOOL' | 'PARENT'; - recipientId: number; - title: string; - content: string; - notificationType: 'SYSTEM' | 'TASK' | 'LESSON' | 'GROWTH'; - relatedType?: string; - relatedId?: number; - }): Promise<{ - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }>; - createBatchNotifications(notifications: Array<{ - tenantId: number; - recipientType: 'TEACHER' | 'SCHOOL' | 'PARENT'; - recipientId: number; - title: string; - content: string; - notificationType: 'SYSTEM' | 'TASK' | 'LESSON' | 'GROWTH'; - relatedType?: string; - relatedId?: number; - }>): Promise; - getNotifications(tenantId: number, recipientType: string, recipientId: number, query: any): Promise<{ - items: { - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }[]; - total: number; - unreadCount: number; - page: number; - pageSize: number; - }>; - getUnreadCount(tenantId: number, recipientType: string, recipientId: number): Promise; - markAsRead(tenantId: number, notificationId: number, recipientType: string, recipientId: number): Promise<{ - id: number; - tenantId: number; - title: string; - createdAt: Date; - content: string; - recipientType: string; - recipientId: number; - notificationType: string; - relatedType: string | null; - relatedId: number | null; - isRead: boolean; - readAt: Date | null; - }>; - markAllAsRead(tenantId: number, recipientType: string, recipientId: number): Promise; -} diff --git a/reading-platform-backend/dist/src/modules/notification/notification.service.js b/reading-platform-backend/dist/src/modules/notification/notification.service.js deleted file mode 100644 index 12a6503..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.service.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var NotificationService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.NotificationService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let NotificationService = NotificationService_1 = class NotificationService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(NotificationService_1.name); - } - async createNotification(data) { - const notification = await this.prisma.notification.create({ - data: { - tenantId: data.tenantId, - recipientType: data.recipientType, - recipientId: data.recipientId, - title: data.title, - content: data.content, - notificationType: data.notificationType, - relatedType: data.relatedType, - relatedId: data.relatedId, - }, - }); - this.logger.log(`Notification created: ${notification.id} for ${data.recipientType}:${data.recipientId}`); - return notification; - } - async createBatchNotifications(notifications) { - const results = await this.prisma.notification.createMany({ - data: notifications, - }); - this.logger.log(`Batch notifications created: ${results.count}`); - return results; - } - async getNotifications(tenantId, recipientType, recipientId, query) { - const { page = 1, pageSize = 20, isRead, notificationType } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId, - recipientType, - recipientId, - }; - if (isRead !== undefined) { - where.isRead = isRead === 'true'; - } - if (notificationType) { - where.notificationType = notificationType; - } - const [items, total, unreadCount] = await Promise.all([ - this.prisma.notification.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - }), - this.prisma.notification.count({ where }), - this.prisma.notification.count({ - where: { ...where, isRead: false }, - }), - ]); - return { - items, - total, - unreadCount, - page: +page, - pageSize: +pageSize, - }; - } - async getUnreadCount(tenantId, recipientType, recipientId) { - return this.prisma.notification.count({ - where: { - tenantId, - recipientType, - recipientId, - isRead: false, - }, - }); - } - async markAsRead(tenantId, notificationId, recipientType, recipientId) { - const notification = await this.prisma.notification.findFirst({ - where: { - id: notificationId, - tenantId, - recipientType, - recipientId, - }, - }); - if (!notification) { - return null; - } - return this.prisma.notification.update({ - where: { id: notificationId }, - data: { - isRead: true, - readAt: new Date(), - }, - }); - } - async markAllAsRead(tenantId, recipientType, recipientId) { - const result = await this.prisma.notification.updateMany({ - where: { - tenantId, - recipientType, - recipientId, - isRead: false, - }, - data: { - isRead: true, - readAt: new Date(), - }, - }); - this.logger.log(`Marked ${result.count} notifications as read for ${recipientType}:${recipientId}`); - return result; - } -}; -exports.NotificationService = NotificationService; -exports.NotificationService = NotificationService = NotificationService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], NotificationService); -//# sourceMappingURL=notification.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/notification.service.js.map b/reading-platform-backend/dist/src/modules/notification/notification.service.js.map deleted file mode 100644 index 907f531..0000000 --- a/reading-platform-backend/dist/src/modules/notification/notification.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"notification.service.js","sourceRoot":"","sources":["../../../../src/modules/notification/notification.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,kEAA8D;AAGvD,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAG9B,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAFxB,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAEnB,CAAC;IAI7C,KAAK,CAAC,kBAAkB,CAAC,IASxB;QACC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACzD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,yBAAyB,YAAY,CAAC,EAAE,QAAQ,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,CACzF,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC;IAGD,KAAK,CAAC,wBAAwB,CAC5B,aASE;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;YACxD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjE,OAAO,OAAO,CAAC;IACjB,CAAC;IAID,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,aAAqB,EACrB,WAAmB,EACnB,KAAU;QAEV,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;QAEpE,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC;QAEvB,MAAM,KAAK,GAAQ;YACjB,QAAQ;YACR,aAAa;YACb,WAAW;SACZ,CAAC;QAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;QACnC,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACrB,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC5C,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAChC,KAAK;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;aAC/B,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC7B,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;aACnC,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,KAAK;YACL,WAAW;YACX,IAAI,EAAE,CAAC,IAAI;YACX,QAAQ,EAAE,CAAC,QAAQ;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,aAAqB,EAAE,WAAmB;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;YACpC,KAAK,EAAE;gBACL,QAAQ;gBACR,aAAa;gBACb,WAAW;gBACX,MAAM,EAAE,KAAK;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAID,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,cAAsB,EAAE,aAAqB,EAAE,WAAmB;QACnG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;YAC5D,KAAK,EAAE;gBACL,EAAE,EAAE,cAAc;gBAClB,QAAQ;gBACR,aAAa;gBACb,WAAW;aACZ;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACrC,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;YAC7B,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,IAAI,EAAE;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,aAAqB,EAAE,WAAmB;QAC9E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;YACvD,KAAK,EAAE;gBACL,QAAQ;gBACR,aAAa;gBACb,WAAW;gBACX,MAAM,EAAE,KAAK;aACd;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,IAAI,EAAE;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,UAAU,MAAM,CAAC,KAAK,8BAA8B,aAAa,IAAI,WAAW,EAAE,CACnF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AApKY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAIiB,8BAAa;GAH9B,mBAAmB,CAoK/B"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.d.ts b/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.d.ts deleted file mode 100644 index 7519e1f..0000000 --- a/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { NotificationService } from './notification.service'; -export declare class ScheduleNotificationService { - private prisma; - private notificationService; - private readonly logger; - private isProcessing; - constructor(prisma: PrismaService, notificationService: NotificationService); - handleUpcomingScheduleReminders(): Promise; - private sendScheduleReminder; - triggerReminderCheck(): Promise<{ - message: string; - }>; - resetAllReminders(): Promise<{ - message: string; - }>; - handleTaskDeadlineReminders(): Promise; - sendManualTaskReminder(tenantId: number, taskId: number): Promise<{ - success: boolean; - message: string; - remindedCount?: undefined; - students?: undefined; - } | { - success: boolean; - message: string; - remindedCount: number; - students: { - id: number; - name: string; - }[]; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js b/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js deleted file mode 100644 index 7c5b77f..0000000 --- a/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js +++ /dev/null @@ -1,288 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var ScheduleNotificationService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ScheduleNotificationService = void 0; -const common_1 = require("@nestjs/common"); -const schedule_1 = require("@nestjs/schedule"); -const prisma_service_1 = require("../../database/prisma.service"); -const notification_service_1 = require("./notification.service"); -let ScheduleNotificationService = ScheduleNotificationService_1 = class ScheduleNotificationService { - constructor(prisma, notificationService) { - this.prisma = prisma; - this.notificationService = notificationService; - this.logger = new common_1.Logger(ScheduleNotificationService_1.name); - this.isProcessing = false; - } - async handleUpcomingScheduleReminders() { - if (this.isProcessing) { - this.logger.debug('Previous reminder task still processing, skipping...'); - return; - } - this.isProcessing = true; - try { - const now = new Date(); - const thirtyMinutesLater = new Date(now.getTime() + 30 * 60 * 1000); - const upcomingSchedules = await this.prisma.schedulePlan.findMany({ - where: { - status: 'ACTIVE', - reminderSent: false, - scheduledDate: { - gte: new Date(now.toISOString().split('T')[0] + 'T00:00:00.000Z'), - lt: new Date(now.toISOString().split('T')[0] + 'T23:59:59.999Z'), - }, - teacherId: { not: null }, - }, - include: { - teacher: { - select: { id: true, name: true }, - }, - course: { - select: { name: true, pictureBookName: true }, - }, - class: { - select: { name: true }, - }, - }, - }); - const schedulesToRemind = upcomingSchedules.filter((schedule) => { - if (!schedule.scheduledTime) - return false; - const [startTime] = schedule.scheduledTime.split('-'); - if (!startTime) - return false; - const [hours, minutes] = startTime.split(':').map(Number); - const scheduleStartTime = new Date(now); - scheduleStartTime.setHours(hours, minutes, 0, 0); - return scheduleStartTime >= now && scheduleStartTime <= thirtyMinutesLater; - }); - this.logger.log(`Found ${schedulesToRemind.length} schedules to send reminders for`); - for (const schedule of schedulesToRemind) { - try { - await this.sendScheduleReminder(schedule); - } - catch (error) { - this.logger.error(`Failed to send reminder for schedule ${schedule.id}:`, error); - } - } - } - catch (error) { - this.logger.error('Error in schedule reminder task:', error); - } - finally { - this.isProcessing = false; - } - } - async sendScheduleReminder(schedule) { - if (!schedule.teacherId || !schedule.teacher) { - return; - } - const courseName = schedule.course?.pictureBookName || schedule.course?.name || '课程'; - const className = schedule.class?.name || '班级'; - const timeStr = schedule.scheduledTime || '时间待定'; - await this.notificationService.createNotification({ - tenantId: schedule.tenantId, - recipientType: 'TEACHER', - recipientId: schedule.teacherId, - title: '课程提醒', - content: `您即将在 ${timeStr} 为「${className}」讲授《${courseName}》,请做好准备。`, - notificationType: 'LESSON', - relatedType: 'SchedulePlan', - relatedId: schedule.id, - }); - await this.prisma.schedulePlan.update({ - where: { id: schedule.id }, - data: { - reminderSent: true, - reminderSentAt: new Date(), - }, - }); - this.logger.log(`Reminder sent for schedule ${schedule.id} to teacher ${schedule.teacherId}`); - } - async triggerReminderCheck() { - this.logger.log('Manual trigger of reminder check'); - await this.handleUpcomingScheduleReminders(); - return { message: 'Reminder check triggered' }; - } - async resetAllReminders() { - const result = await this.prisma.schedulePlan.updateMany({ - where: { - reminderSent: true, - }, - data: { - reminderSent: false, - reminderSentAt: null, - }, - }); - this.logger.log(`Reset ${result.count} schedule reminders`); - return { message: `Reset ${result.count} reminders` }; - } - async handleTaskDeadlineReminders() { - this.logger.log('Starting task deadline reminder check...'); - try { - const now = new Date(); - const threeDaysLater = new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000); - const oneDayLater = new Date(now.getTime() + 24 * 60 * 60 * 1000); - const tasksToRemind = await this.prisma.task.findMany({ - where: { - status: 'PUBLISHED', - endDate: { - gte: now, - lte: threeDaysLater, - }, - }, - include: { - course: { - select: { name: true, pictureBookName: true }, - }, - completions: { - where: { - status: { not: 'COMPLETED' }, - }, - include: { - student: { - select: { - id: true, - name: true, - parents: { - include: { - parent: { - select: { id: true }, - }, - }, - }, - }, - }, - }, - }, - }, - }); - this.logger.log(`Found ${tasksToRemind.length} tasks with upcoming deadlines`); - let reminderCount = 0; - for (const task of tasksToRemind) { - const daysRemaining = Math.ceil((task.endDate.getTime() - now.getTime()) / (24 * 60 * 60 * 1000)); - if (![3, 1, 0].includes(daysRemaining)) - continue; - const taskName = task.course?.pictureBookName || task.course?.name || task.title; - for (const completion of task.completions) { - for (const parentRelation of completion.student.parents) { - try { - await this.notificationService.createNotification({ - tenantId: task.tenantId, - recipientType: 'PARENT', - recipientId: parentRelation.parent.id, - title: '任务即将截止', - content: `「${completion.student.name}」的任务《${taskName}》将在${daysRemaining === 0 ? '今天' : daysRemaining + '天后'}截止,请尽快完成。`, - notificationType: 'TASK', - relatedType: 'Task', - relatedId: task.id, - }); - reminderCount++; - } - catch (error) { - this.logger.error(`Failed to send task reminder to parent ${parentRelation.parent.id}:`, error); - } - } - } - } - this.logger.log(`Sent ${reminderCount} task reminder notifications`); - } - catch (error) { - this.logger.error('Error in task deadline reminder task:', error); - } - } - async sendManualTaskReminder(tenantId, taskId) { - const task = await this.prisma.task.findFirst({ - where: { id: taskId, tenantId }, - include: { - course: { - select: { name: true, pictureBookName: true }, - }, - completions: { - where: { - status: { not: 'COMPLETED' }, - }, - include: { - student: { - select: { - id: true, - name: true, - parents: { - include: { - parent: { - select: { id: true, name: true }, - }, - }, - }, - }, - }, - }, - }, - }, - }); - if (!task) { - return { success: false, message: '任务不存在' }; - } - const taskName = task.course?.pictureBookName || task.course?.name || task.title; - let reminderCount = 0; - const remindedStudents = []; - for (const completion of task.completions) { - for (const parentRelation of completion.student.parents) { - try { - await this.notificationService.createNotification({ - tenantId: task.tenantId, - recipientType: 'PARENT', - recipientId: parentRelation.parent.id, - title: '阅读任务提醒', - content: `老师提醒您:「${completion.student.name}」的任务《${taskName}》尚未完成,请督促孩子尽快完成阅读任务。`, - notificationType: 'TASK', - relatedType: 'Task', - relatedId: task.id, - }); - reminderCount++; - } - catch (error) { - this.logger.error(`Failed to send manual task reminder to parent ${parentRelation.parent.id}:`, error); - } - } - remindedStudents.push({ - id: completion.student.id, - name: completion.student.name, - }); - } - this.logger.log(`Manual task reminder sent for task ${taskId} to ${reminderCount} parents`); - return { - success: true, - message: `已发送${reminderCount}条提醒`, - remindedCount: reminderCount, - students: remindedStudents, - }; - } -}; -exports.ScheduleNotificationService = ScheduleNotificationService; -__decorate([ - (0, schedule_1.Cron)(schedule_1.CronExpression.EVERY_30_MINUTES), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], ScheduleNotificationService.prototype, "handleUpcomingScheduleReminders", null); -__decorate([ - (0, schedule_1.Cron)('0 9 * * *'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], ScheduleNotificationService.prototype, "handleTaskDeadlineReminders", null); -exports.ScheduleNotificationService = ScheduleNotificationService = ScheduleNotificationService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService, - notification_service_1.NotificationService]) -], ScheduleNotificationService); -//# sourceMappingURL=schedule-notification.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js.map b/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js.map deleted file mode 100644 index 924ecf9..0000000 --- a/reading-platform-backend/dist/src/modules/notification/schedule-notification.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schedule-notification.service.js","sourceRoot":"","sources":["../../../../src/modules/notification/schedule-notification.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/parent/parent.controller.d.ts b/reading-platform-backend/dist/src/modules/parent/parent.controller.d.ts deleted file mode 100644 index dff18cf..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.controller.d.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { ParentService } from './parent.service'; -export declare class ParentController { - private readonly parentService; - constructor(parentService: ParentService); - getChildren(req: any): Promise<{ - id: number; - name: string; - gender: string; - birthDate: Date; - relationship: string; - class: { - id: number; - name: string; - grade: string; - }; - readingCount: number; - lessonCount: number; - }[]>; - getChildProfile(req: any, id: string): Promise<{ - stats: { - lessonRecords: number; - growthRecords: number; - taskCompletions: number; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - createdAt: Date; - updatedAt: Date; - name: string; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - lessonCount: number; - }>; - getChildLessons(req: any, id: string, query: any): Promise<{ - items: ({ - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - startDatetime: Date; - endDatetime: Date; - actualDuration: number; - }; - } & { - id: number; - createdAt: Date; - updatedAt: Date; - studentId: number; - lessonId: number; - participation: number | null; - focus: number | null; - interest: number | null; - understanding: number | null; - domainAchievements: string | null; - notes: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - getChildTasks(req: any, id: string, query: any): Promise<{ - items: ({ - task: { - id: number; - title: string; - description: string; - taskType: string; - startDate: Date; - endDate: Date; - course: { - id: number; - name: string; - }; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - submitTaskFeedback(req: any, studentId: string, taskId: string, body: { - feedback: string; - }): Promise<{ - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - }>; - getChildGrowthRecords(req: any, id: string, query: any): Promise<{ - items: { - images: any; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/parent/parent.controller.js b/reading-platform-backend/dist/src/modules/parent/parent.controller.js deleted file mode 100644 index 3e1f0bb..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.controller.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ParentController = void 0; -const common_1 = require("@nestjs/common"); -const parent_service_1 = require("./parent.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let ParentController = class ParentController { - constructor(parentService) { - this.parentService = parentService; - } - getChildren(req) { - return this.parentService.getChildren(req.user.userId, req.user.tenantId); - } - getChildProfile(req, id) { - return this.parentService.getChildProfile(req.user.userId, +id, req.user.tenantId); - } - getChildLessons(req, id, query) { - return this.parentService.getChildLessons(req.user.userId, +id, req.user.tenantId, query); - } - getChildTasks(req, id, query) { - return this.parentService.getChildTasks(req.user.userId, +id, req.user.tenantId, query); - } - submitTaskFeedback(req, studentId, taskId, body) { - return this.parentService.submitTaskFeedback(req.user.userId, +studentId, +taskId, req.user.tenantId, body.feedback); - } - getChildGrowthRecords(req, id, query) { - return this.parentService.getChildGrowthRecords(req.user.userId, +id, req.user.tenantId, query); - } -}; -exports.ParentController = ParentController; -__decorate([ - (0, common_1.Get)('children'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], ParentController.prototype, "getChildren", null); -__decorate([ - (0, common_1.Get)('children/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], ParentController.prototype, "getChildProfile", null); -__decorate([ - (0, common_1.Get)('children/:id/lessons'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], ParentController.prototype, "getChildLessons", null); -__decorate([ - (0, common_1.Get)('children/:id/tasks'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], ParentController.prototype, "getChildTasks", null); -__decorate([ - (0, common_1.Put)('children/:studentId/tasks/:taskId/feedback'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('studentId')), - __param(2, (0, common_1.Param)('taskId')), - __param(3, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, Object]), - __metadata("design:returntype", void 0) -], ParentController.prototype, "submitTaskFeedback", null); -__decorate([ - (0, common_1.Get)('children/:id/growth-records'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], ParentController.prototype, "getChildGrowthRecords", null); -exports.ParentController = ParentController = __decorate([ - (0, common_1.Controller)('parent'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('parent'), - __metadata("design:paramtypes", [parent_service_1.ParentService]) -], ParentController); -//# sourceMappingURL=parent.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/parent/parent.controller.js.map b/reading-platform-backend/dist/src/modules/parent/parent.controller.js.map deleted file mode 100644 index b179723..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parent.controller.js","sourceRoot":"","sources":["../../../../src/modules/parent/parent.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/parent/parent.module.d.ts b/reading-platform-backend/dist/src/modules/parent/parent.module.d.ts deleted file mode 100644 index fc10500..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class ParentModule { -} diff --git a/reading-platform-backend/dist/src/modules/parent/parent.module.js b/reading-platform-backend/dist/src/modules/parent/parent.module.js deleted file mode 100644 index 474ff98..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ParentModule = void 0; -const common_1 = require("@nestjs/common"); -const parent_controller_1 = require("./parent.controller"); -const parent_service_1 = require("./parent.service"); -let ParentModule = class ParentModule { -}; -exports.ParentModule = ParentModule; -exports.ParentModule = ParentModule = __decorate([ - (0, common_1.Module)({ - controllers: [parent_controller_1.ParentController], - providers: [parent_service_1.ParentService], - exports: [parent_service_1.ParentService], - }) -], ParentModule); -//# sourceMappingURL=parent.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/parent/parent.module.js.map b/reading-platform-backend/dist/src/modules/parent/parent.module.js.map deleted file mode 100644 index c716d7a..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parent.module.js","sourceRoot":"","sources":["../../../../src/modules/parent/parent.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/parent/parent.service.d.ts b/reading-platform-backend/dist/src/modules/parent/parent.service.d.ts deleted file mode 100644 index b20dd55..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.service.d.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class ParentService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - getChildren(parentId: number, tenantId: number): Promise<{ - id: number; - name: string; - gender: string; - birthDate: Date; - relationship: string; - class: { - id: number; - name: string; - grade: string; - }; - readingCount: number; - lessonCount: number; - }[]>; - getChildProfile(parentId: number, studentId: number, tenantId: number): Promise<{ - stats: { - lessonRecords: number; - growthRecords: number; - taskCompletions: number; - }; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - createdAt: Date; - updatedAt: Date; - name: string; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - lessonCount: number; - }>; - getChildLessons(parentId: number, studentId: number, tenantId: number, query: any): Promise<{ - items: ({ - lesson: { - id: number; - course: { - id: number; - name: string; - pictureBookName: string; - }; - startDatetime: Date; - endDatetime: Date; - actualDuration: number; - }; - } & { - id: number; - createdAt: Date; - updatedAt: Date; - studentId: number; - lessonId: number; - participation: number | null; - focus: number | null; - interest: number | null; - understanding: number | null; - domainAchievements: string | null; - notes: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - getChildTasks(parentId: number, studentId: number, tenantId: number, query: any): Promise<{ - items: ({ - task: { - id: number; - title: string; - description: string; - taskType: string; - startDate: Date; - endDate: Date; - course: { - id: number; - name: string; - }; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - submitTaskFeedback(parentId: number, studentId: number, taskId: number, tenantId: number, feedback: string): Promise<{ - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - }>; - getChildGrowthRecords(parentId: number, studentId: number, tenantId: number, query: any): Promise<{ - items: { - images: any; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - createdBy: number; - createdAt: Date; - updatedAt: Date; - classId: number | null; - studentId: number; - recordType: string; - content: string | null; - recordDate: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/parent/parent.service.js b/reading-platform-backend/dist/src/modules/parent/parent.service.js deleted file mode 100644 index 3555822..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.service.js +++ /dev/null @@ -1,271 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var ParentService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ParentService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let ParentService = ParentService_1 = class ParentService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(ParentService_1.name); - } - async getChildren(parentId, tenantId) { - const parent = await this.prisma.parent.findFirst({ - where: { id: parentId, tenantId }, - include: { - children: { - include: { - student: { - include: { - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - }, - }, - }, - }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - return parent.children.map((c) => ({ - id: c.student.id, - name: c.student.name, - gender: c.student.gender, - birthDate: c.student.birthDate, - relationship: c.relationship, - class: c.student.class, - readingCount: c.student.readingCount, - lessonCount: c.student.lessonCount, - })); - } - async getChildProfile(parentId, studentId, tenantId) { - const relation = await this.prisma.parentStudent.findFirst({ - where: { parentId, studentId }, - }); - if (!relation) { - throw new common_1.ForbiddenException('您没有查看该学生信息的权限'); - } - const student = await this.prisma.student.findFirst({ - where: { id: studentId, tenantId }, - include: { - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const [lessonRecords, growthRecords, taskCompletions] = await Promise.all([ - this.prisma.studentRecord.count({ - where: { studentId }, - }), - this.prisma.growthRecord.count({ - where: { studentId }, - }), - this.prisma.taskCompletion.count({ - where: { - studentId, - status: 'COMPLETED', - }, - }), - ]); - return { - ...student, - stats: { - lessonRecords, - growthRecords, - taskCompletions, - }, - }; - } - async getChildLessons(parentId, studentId, tenantId, query) { - const relation = await this.prisma.parentStudent.findFirst({ - where: { parentId, studentId }, - }); - if (!relation) { - throw new common_1.ForbiddenException('您没有查看该学生信息的权限'); - } - const { page = 1, pageSize = 10 } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { studentId }; - const [items, total] = await Promise.all([ - this.prisma.studentRecord.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - lesson: { - select: { - id: true, - startDatetime: true, - endDatetime: true, - actualDuration: true, - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - }, - }, - }, - }), - this.prisma.studentRecord.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async getChildTasks(parentId, studentId, tenantId, query) { - const relation = await this.prisma.parentStudent.findFirst({ - where: { parentId, studentId }, - }); - if (!relation) { - throw new common_1.ForbiddenException('您没有查看该学生信息的权限'); - } - const { page = 1, pageSize = 10, status } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - studentId, - task: { tenantId, status: 'PUBLISHED' }, - }; - if (status) { - where.status = status; - } - const [items, total] = await Promise.all([ - this.prisma.taskCompletion.findMany({ - where, - skip, - take, - orderBy: { task: { createdAt: 'desc' } }, - include: { - task: { - select: { - id: true, - title: true, - description: true, - taskType: true, - startDate: true, - endDate: true, - course: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }), - this.prisma.taskCompletion.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async submitTaskFeedback(parentId, studentId, taskId, tenantId, feedback) { - const relation = await this.prisma.parentStudent.findFirst({ - where: { parentId, studentId }, - }); - if (!relation) { - throw new common_1.ForbiddenException('您没有操作该学生信息的权限'); - } - const completion = await this.prisma.taskCompletion.findFirst({ - where: { - taskId, - studentId, - task: { tenantId }, - }, - }); - if (!completion) { - throw new common_1.NotFoundException('任务记录不存在'); - } - const updated = await this.prisma.taskCompletion.update({ - where: { - taskId_studentId: { taskId, studentId }, - }, - data: { - parentFeedback: feedback, - }, - }); - this.logger.log(`Parent feedback submitted: task=${taskId}, student=${studentId}`); - return updated; - } - async getChildGrowthRecords(parentId, studentId, tenantId, query) { - const relation = await this.prisma.parentStudent.findFirst({ - where: { parentId, studentId }, - }); - if (!relation) { - throw new common_1.ForbiddenException('您没有查看该学生信息的权限'); - } - const { page = 1, pageSize = 10 } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - studentId, - tenantId, - }; - const [items, total] = await Promise.all([ - this.prisma.growthRecord.findMany({ - where, - skip, - take, - orderBy: { recordDate: 'desc' }, - include: { - class: { - select: { - id: true, - name: true, - }, - }, - }, - }), - this.prisma.growthRecord.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - images: item.images ? JSON.parse(item.images) : [], - })), - total, - page: +page, - pageSize: +pageSize, - }; - } -}; -exports.ParentService = ParentService; -exports.ParentService = ParentService = ParentService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], ParentService); -//# sourceMappingURL=parent.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/parent/parent.service.js.map b/reading-platform-backend/dist/src/modules/parent/parent.service.js.map deleted file mode 100644 index b03f60d..0000000 --- a/reading-platform-backend/dist/src/modules/parent/parent.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parent.service.js","sourceRoot":"","sources":["../../../../src/modules/parent/parent.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA2F;AAC3F,kEAA8D;AAGvD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAGxB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;QAFxB,WAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAEb,CAAC;IAI7C,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,QAAgB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;YAChD,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACjC,OAAO,EAAE;gBACP,QAAQ,EAAE;oBACR,OAAO,EAAE;wBACP,OAAO,EAAE;4BACP,OAAO,EAAE;gCACP,KAAK,EAAE;oCACL,MAAM,EAAE;wCACN,EAAE,EAAE,IAAI;wCACR,IAAI,EAAE,IAAI;wCACV,KAAK,EAAE,IAAI;qCACZ;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,0BAAiB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;YAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;YACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;YACxB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;YAC9B,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK;YACtB,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;YACpC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW;SACnC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAgB;QAEzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YACzD,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YAClD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;YAClC,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,MAAM,EAAE;wBACN,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAGD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC9B,KAAK,EAAE,EAAE,SAAS,EAAE;aACrB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC7B,KAAK,EAAE,EAAE,SAAS,EAAE;aACrB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC/B,KAAK,EAAE;oBACL,SAAS;oBACT,MAAM,EAAE,WAAW;iBACpB;aACF,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,OAAO;YACV,KAAK,EAAE;gBACL,aAAa;gBACb,aAAa;gBACb,eAAe;aAChB;SACF,CAAC;IACJ,CAAC;IAID,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAgB,EAAE,KAAU;QAErF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YACzD,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC;QAEvB,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,CAAC;QAE5B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACjC,KAAK;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC9B,OAAO,EAAE;oBACP,MAAM,EAAE;wBACN,MAAM,EAAE;4BACN,EAAE,EAAE,IAAI;4BACR,aAAa,EAAE,IAAI;4BACnB,WAAW,EAAE,IAAI;4BACjB,cAAc,EAAE,IAAI;4BACpB,MAAM,EAAE;gCACN,MAAM,EAAE;oCACN,EAAE,EAAE,IAAI;oCACR,IAAI,EAAE,IAAI;oCACV,eAAe,EAAE,IAAI;iCACtB;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,KAAK;YACL,IAAI,EAAE,CAAC,IAAI;YACX,QAAQ,EAAE,CAAC,QAAQ;SACpB,CAAC;IACJ,CAAC;IAID,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAgB,EAAE,KAAU;QAEnF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YACzD,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC;QAEvB,MAAM,KAAK,GAAQ;YACjB,SAAS;YACT,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;SACxC,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAClC,KAAK;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;gBACxC,OAAO,EAAE;oBACP,IAAI,EAAE;wBACJ,MAAM,EAAE;4BACN,EAAE,EAAE,IAAI;4BACR,KAAK,EAAE,IAAI;4BACX,WAAW,EAAE,IAAI;4BACjB,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI;4BACf,OAAO,EAAE,IAAI;4BACb,MAAM,EAAE;gCACN,MAAM,EAAE;oCACN,EAAE,EAAE,IAAI;oCACR,IAAI,EAAE,IAAI;iCACX;6BACF;yBACF;qBACF;iBACF;aACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SAC5C,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,KAAK;YACL,IAAI,EAAE,CAAC,IAAI;YACX,QAAQ,EAAE,CAAC,QAAQ;SACpB,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,SAAiB,EACjB,MAAc,EACd,QAAgB,EAChB,QAAgB;QAGhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YACzD,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;YAC5D,KAAK,EAAE;gBACL,MAAM;gBACN,SAAS;gBACT,IAAI,EAAE,EAAE,QAAQ,EAAE;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,0BAAiB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;YACtD,KAAK,EAAE;gBACL,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;aACxC;YACD,IAAI,EAAE;gBACJ,cAAc,EAAE,QAAQ;aACzB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,MAAM,aAAa,SAAS,EAAE,CAAC,CAAC;QAEnF,OAAO,OAAO,CAAC;IACjB,CAAC;IAID,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAgB,EAAE,KAAU;QAE3F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YACzD,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC;QAEvB,MAAM,KAAK,GAAG;YACZ,SAAS;YACT,QAAQ;SACT,CAAC;QAEF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAChC,KAAK;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;gBAC/B,OAAO,EAAE;oBACP,KAAK,EAAE;wBACL,MAAM,EAAE;4BACN,EAAE,EAAE,IAAI;4BACR,IAAI,EAAE,IAAI;yBACX;qBACF;iBACF;aACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SAC1C,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1B,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;aACnD,CAAC,CAAC;YACH,KAAK;YACL,IAAI,EAAE,CAAC,IAAI;YACX,QAAQ,EAAE,CAAC,QAAQ;SACpB,CAAC;IACJ,CAAC;CACF,CAAA;AAhTY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAIiB,8BAAa;GAH9B,aAAa,CAgTzB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.d.ts b/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.d.ts deleted file mode 100644 index 169c975..0000000 --- a/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -export declare enum LibraryType { - PICTURE_BOOK = "PICTURE_BOOK", - MATERIAL = "MATERIAL", - TEMPLATE = "TEMPLATE" -} -export declare enum FileType { - IMAGE = "IMAGE", - PDF = "PDF", - VIDEO = "VIDEO", - AUDIO = "AUDIO", - PPT = "PPT", - OTHER = "OTHER" -} -export declare class CreateLibraryDto { - name: string; - libraryType: LibraryType; - description?: string; - coverImage?: string; -} -export declare class UpdateLibraryDto { - name?: string; - description?: string; - coverImage?: string; - sortOrder?: number; -} -export declare class CreateResourceItemDto { - libraryId: number; - title: string; - description?: string; - fileType: FileType; - filePath: string; - fileSize?: number; - tags?: string[]; -} -export declare class UpdateResourceItemDto { - title?: string; - description?: string; - tags?: string[]; - sortOrder?: number; -} -export declare class QueryLibraryDto { - page?: number; - pageSize?: number; - libraryType?: string; - keyword?: string; -} -export declare class QueryResourceItemDto { - page?: number; - pageSize?: number; - libraryId?: number; - fileType?: string; - keyword?: string; -} diff --git a/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js b/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js deleted file mode 100644 index d1f45eb..0000000 --- a/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js +++ /dev/null @@ -1,191 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.QueryResourceItemDto = exports.QueryLibraryDto = exports.UpdateResourceItemDto = exports.CreateResourceItemDto = exports.UpdateLibraryDto = exports.CreateLibraryDto = exports.FileType = exports.LibraryType = void 0; -const class_validator_1 = require("class-validator"); -var LibraryType; -(function (LibraryType) { - LibraryType["PICTURE_BOOK"] = "PICTURE_BOOK"; - LibraryType["MATERIAL"] = "MATERIAL"; - LibraryType["TEMPLATE"] = "TEMPLATE"; -})(LibraryType || (exports.LibraryType = LibraryType = {})); -var FileType; -(function (FileType) { - FileType["IMAGE"] = "IMAGE"; - FileType["PDF"] = "PDF"; - FileType["VIDEO"] = "VIDEO"; - FileType["AUDIO"] = "AUDIO"; - FileType["PPT"] = "PPT"; - FileType["OTHER"] = "OTHER"; -})(FileType || (exports.FileType = FileType = {})); -class CreateLibraryDto { -} -exports.CreateLibraryDto = CreateLibraryDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '资源库名称不能为空' }), - __metadata("design:type", String) -], CreateLibraryDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(LibraryType), - __metadata("design:type", String) -], CreateLibraryDto.prototype, "libraryType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateLibraryDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateLibraryDto.prototype, "coverImage", void 0); -class UpdateLibraryDto { -} -exports.UpdateLibraryDto = UpdateLibraryDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '资源库名称不能为空' }), - __metadata("design:type", String) -], UpdateLibraryDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateLibraryDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateLibraryDto.prototype, "coverImage", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(0), - __metadata("design:type", Number) -], UpdateLibraryDto.prototype, "sortOrder", void 0); -class CreateResourceItemDto { -} -exports.CreateResourceItemDto = CreateResourceItemDto; -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)({ message: '资源库ID不能为空' }), - __metadata("design:type", Number) -], CreateResourceItemDto.prototype, "libraryId", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '资源名称不能为空' }), - __metadata("design:type", String) -], CreateResourceItemDto.prototype, "title", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateResourceItemDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(FileType), - __metadata("design:type", String) -], CreateResourceItemDto.prototype, "fileType", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '文件路径不能为空' }), - __metadata("design:type", String) -], CreateResourceItemDto.prototype, "filePath", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateResourceItemDto.prototype, "fileSize", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsString)({ each: true }), - __metadata("design:type", Array) -], CreateResourceItemDto.prototype, "tags", void 0); -class UpdateResourceItemDto { -} -exports.UpdateResourceItemDto = UpdateResourceItemDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '资源名称不能为空' }), - __metadata("design:type", String) -], UpdateResourceItemDto.prototype, "title", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateResourceItemDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsString)({ each: true }), - __metadata("design:type", Array) -], UpdateResourceItemDto.prototype, "tags", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(0), - __metadata("design:type", Number) -], UpdateResourceItemDto.prototype, "sortOrder", void 0); -class QueryLibraryDto { -} -exports.QueryLibraryDto = QueryLibraryDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryLibraryDto.prototype, "page", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryLibraryDto.prototype, "pageSize", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryLibraryDto.prototype, "libraryType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryLibraryDto.prototype, "keyword", void 0); -class QueryResourceItemDto { -} -exports.QueryResourceItemDto = QueryResourceItemDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryResourceItemDto.prototype, "page", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryResourceItemDto.prototype, "pageSize", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryResourceItemDto.prototype, "libraryId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryResourceItemDto.prototype, "fileType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryResourceItemDto.prototype, "keyword", void 0); -//# sourceMappingURL=create-resource.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js.map b/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js.map deleted file mode 100644 index 421537f..0000000 --- a/reading-platform-backend/dist/src/modules/resource/dto/create-resource.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-resource.dto.js","sourceRoot":"","sources":["../../../../../src/modules/resource/dto/create-resource.dto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/resource.controller.d.ts b/reading-platform-backend/dist/src/modules/resource/resource.controller.d.ts deleted file mode 100644 index 9bd54a6..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.controller.d.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { ResourceService } from './resource.service'; -import { CreateLibraryDto, UpdateLibraryDto, CreateResourceItemDto, UpdateResourceItemDto } from './dto/create-resource.dto'; -export declare class ResourceController { - private readonly resourceService; - constructor(resourceService: ResourceService); - findAllLibraries(query: any): Promise<{ - items: { - itemCount: number; - _count: any; - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findLibrary(id: string): Promise<{ - items: { - tags: any[]; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }[]; - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }>; - createLibrary(dto: CreateLibraryDto, req: any): Promise<{ - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }>; - updateLibrary(id: string, dto: UpdateLibraryDto): Promise<{ - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }>; - deleteLibrary(id: string): Promise<{ - message: string; - }>; - findAllItems(query: any): Promise<{ - items: { - tags: any[]; - library: { - id: number; - name: string; - libraryType: string; - }; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findItem(id: string): Promise<{ - tags: any[]; - library: { - id: number; - name: string; - libraryType: string; - }; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }>; - createItem(dto: CreateResourceItemDto): Promise<{ - tags: any[]; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }>; - updateItem(id: string, dto: UpdateResourceItemDto): Promise<{ - tags: any[]; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }>; - deleteItem(id: string): Promise<{ - message: string; - }>; - batchDeleteItems(body: { - ids: number[]; - }): Promise<{ - message: string; - }>; - getStats(): Promise<{ - totalLibraries: number; - totalItems: number; - itemsByType: Record; - itemsByLibraryType: Record; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/resource/resource.controller.js b/reading-platform-backend/dist/src/modules/resource/resource.controller.js deleted file mode 100644 index 149a762..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.controller.js +++ /dev/null @@ -1,156 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ResourceController = void 0; -const common_1 = require("@nestjs/common"); -const resource_service_1 = require("./resource.service"); -const create_resource_dto_1 = require("./dto/create-resource.dto"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let ResourceController = class ResourceController { - constructor(resourceService) { - this.resourceService = resourceService; - } - findAllLibraries(query) { - return this.resourceService.findAllLibraries(query); - } - findLibrary(id) { - return this.resourceService.findLibrary(+id); - } - createLibrary(dto, req) { - return this.resourceService.createLibrary(dto, req.user.userId); - } - updateLibrary(id, dto) { - return this.resourceService.updateLibrary(+id, dto); - } - deleteLibrary(id) { - return this.resourceService.deleteLibrary(+id); - } - findAllItems(query) { - return this.resourceService.findAllItems(query); - } - findItem(id) { - return this.resourceService.findItem(+id); - } - createItem(dto) { - return this.resourceService.createItem(dto); - } - updateItem(id, dto) { - return this.resourceService.updateItem(+id, dto); - } - deleteItem(id) { - return this.resourceService.deleteItem(+id); - } - batchDeleteItems(body) { - return this.resourceService.batchDeleteItems(body.ids); - } - getStats() { - return this.resourceService.getStats(); - } -}; -exports.ResourceController = ResourceController; -__decorate([ - (0, common_1.Get)('libraries'), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "findAllLibraries", null); -__decorate([ - (0, common_1.Get)('libraries/:id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "findLibrary", null); -__decorate([ - (0, common_1.Post)('libraries'), - __param(0, (0, common_1.Body)()), - __param(1, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [create_resource_dto_1.CreateLibraryDto, Object]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "createLibrary", null); -__decorate([ - (0, common_1.Put)('libraries/:id'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, create_resource_dto_1.UpdateLibraryDto]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "updateLibrary", null); -__decorate([ - (0, common_1.Delete)('libraries/:id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "deleteLibrary", null); -__decorate([ - (0, common_1.Get)('items'), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "findAllItems", null); -__decorate([ - (0, common_1.Get)('items/:id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "findItem", null); -__decorate([ - (0, common_1.Post)('items'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [create_resource_dto_1.CreateResourceItemDto]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "createItem", null); -__decorate([ - (0, common_1.Put)('items/:id'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, create_resource_dto_1.UpdateResourceItemDto]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "updateItem", null); -__decorate([ - (0, common_1.Delete)('items/:id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "deleteItem", null); -__decorate([ - (0, common_1.Post)('items/batch-delete'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "batchDeleteItems", null); -__decorate([ - (0, common_1.Get)('stats'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) -], ResourceController.prototype, "getStats", null); -exports.ResourceController = ResourceController = __decorate([ - (0, common_1.Controller)('admin/resources'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('admin'), - __metadata("design:paramtypes", [resource_service_1.ResourceService]) -], ResourceController); -//# sourceMappingURL=resource.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/resource.controller.js.map b/reading-platform-backend/dist/src/modules/resource/resource.controller.js.map deleted file mode 100644 index bd0ec2d..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resource.controller.js","sourceRoot":"","sources":["../../../../src/modules/resource/resource.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/resource.module.d.ts b/reading-platform-backend/dist/src/modules/resource/resource.module.d.ts deleted file mode 100644 index 50d39ca..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class ResourceModule { -} diff --git a/reading-platform-backend/dist/src/modules/resource/resource.module.js b/reading-platform-backend/dist/src/modules/resource/resource.module.js deleted file mode 100644 index 8db9b49..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ResourceModule = void 0; -const common_1 = require("@nestjs/common"); -const resource_controller_1 = require("./resource.controller"); -const resource_service_1 = require("./resource.service"); -let ResourceModule = class ResourceModule { -}; -exports.ResourceModule = ResourceModule; -exports.ResourceModule = ResourceModule = __decorate([ - (0, common_1.Module)({ - controllers: [resource_controller_1.ResourceController], - providers: [resource_service_1.ResourceService], - exports: [resource_service_1.ResourceService], - }) -], ResourceModule); -//# sourceMappingURL=resource.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/resource.module.js.map b/reading-platform-backend/dist/src/modules/resource/resource.module.js.map deleted file mode 100644 index 4ccab78..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resource.module.js","sourceRoot":"","sources":["../../../../src/modules/resource/resource.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+DAA2D;AAC3D,yDAAqD;AAO9C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAL1B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,wCAAkB,CAAC;QACjC,SAAS,EAAE,CAAC,kCAAe,CAAC;QAC5B,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/resource.service.d.ts b/reading-platform-backend/dist/src/modules/resource/resource.service.d.ts deleted file mode 100644 index 86e3afc..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.service.d.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { CreateLibraryDto, UpdateLibraryDto, CreateResourceItemDto, UpdateResourceItemDto } from './dto/create-resource.dto'; -export declare class ResourceService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - private parseJsonArray; - findAllLibraries(query: any): Promise<{ - items: { - itemCount: number; - _count: any; - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findLibrary(id: number): Promise<{ - items: { - tags: any[]; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }[]; - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }>; - createLibrary(dto: CreateLibraryDto, userId: number): Promise<{ - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }>; - updateLibrary(id: number, dto: UpdateLibraryDto): Promise<{ - id: number; - tenantId: number | null; - description: string | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - sortOrder: number; - libraryType: string; - coverImage: string | null; - }>; - deleteLibrary(id: number): Promise<{ - message: string; - }>; - findAllItems(query: any): Promise<{ - items: { - tags: any[]; - library: { - id: number; - name: string; - libraryType: string; - }; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findItem(id: number): Promise<{ - tags: any[]; - library: { - id: number; - name: string; - libraryType: string; - }; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }>; - createItem(dto: CreateResourceItemDto): Promise<{ - tags: any[]; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }>; - updateItem(id: number, dto: UpdateResourceItemDto): Promise<{ - tags: any[]; - id: number; - title: string; - description: string | null; - createdAt: Date; - sortOrder: number; - fileSize: number | null; - libraryId: number; - fileType: string; - filePath: string; - }>; - deleteItem(id: number): Promise<{ - message: string; - }>; - batchDeleteItems(ids: number[]): Promise<{ - message: string; - }>; - getStats(): Promise<{ - totalLibraries: number; - totalItems: number; - itemsByType: Record; - itemsByLibraryType: Record; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/resource/resource.service.js b/reading-platform-backend/dist/src/modules/resource/resource.service.js deleted file mode 100644 index fbb4978..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.service.js +++ /dev/null @@ -1,311 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var ResourceService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ResourceService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let ResourceService = ResourceService_1 = class ResourceService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(ResourceService_1.name); - } - parseJsonArray(value) { - if (!value) - return []; - if (typeof value === 'string') { - try { - return JSON.parse(value); - } - catch { - return []; - } - } - return Array.isArray(value) ? value : []; - } - async findAllLibraries(query) { - const { page = 1, pageSize = 10, libraryType, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = {}; - if (libraryType) { - where.libraryType = libraryType; - } - if (keyword) { - where.name = { contains: keyword }; - } - const [items, total] = await Promise.all([ - this.prisma.resourceLibrary.findMany({ - where, - skip, - take, - orderBy: [{ sortOrder: 'asc' }, { createdAt: 'desc' }], - include: { - _count: { - select: { - items: true, - }, - }, - }, - }), - this.prisma.resourceLibrary.count({ where }), - ]); - return { - items: items.map((lib) => ({ - ...lib, - itemCount: lib._count.items, - _count: undefined, - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findLibrary(id) { - const library = await this.prisma.resourceLibrary.findUnique({ - where: { id }, - include: { - items: { - orderBy: { sortOrder: 'asc' }, - take: 100, - }, - }, - }); - if (!library) { - throw new common_1.NotFoundException('资源库不存在'); - } - return { - ...library, - items: library.items.map((item) => ({ - ...item, - tags: this.parseJsonArray(item.tags), - })), - }; - } - async createLibrary(dto, userId) { - const library = await this.prisma.resourceLibrary.create({ - data: { - name: dto.name, - libraryType: dto.libraryType, - description: dto.description, - coverImage: dto.coverImage, - createdBy: userId, - }, - }); - this.logger.log(`Library created: ${library.id}`); - return library; - } - async updateLibrary(id, dto) { - const library = await this.prisma.resourceLibrary.findUnique({ - where: { id }, - }); - if (!library) { - throw new common_1.NotFoundException('资源库不存在'); - } - const updated = await this.prisma.resourceLibrary.update({ - where: { id }, - data: { - name: dto.name, - description: dto.description, - coverImage: dto.coverImage, - sortOrder: dto.sortOrder, - }, - }); - this.logger.log(`Library updated: ${id}`); - return updated; - } - async deleteLibrary(id) { - const library = await this.prisma.resourceLibrary.findUnique({ - where: { id }, - include: { - _count: { - select: { - items: true, - }, - }, - }, - }); - if (!library) { - throw new common_1.NotFoundException('资源库不存在'); - } - await this.prisma.resourceLibrary.delete({ - where: { id }, - }); - this.logger.log(`Library deleted: ${id}`); - return { message: '删除成功' }; - } - async findAllItems(query) { - const { page = 1, pageSize = 20, libraryId, fileType, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = {}; - if (libraryId) { - where.libraryId = +libraryId; - } - if (fileType) { - where.fileType = fileType; - } - if (keyword) { - where.OR = [ - { title: { contains: keyword } }, - { description: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.resourceItem.findMany({ - where, - skip, - take, - orderBy: [{ sortOrder: 'asc' }, { createdAt: 'desc' }], - include: { - library: { - select: { - id: true, - name: true, - libraryType: true, - }, - }, - }, - }), - this.prisma.resourceItem.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - tags: this.parseJsonArray(item.tags), - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findItem(id) { - const item = await this.prisma.resourceItem.findUnique({ - where: { id }, - include: { - library: { - select: { - id: true, - name: true, - libraryType: true, - }, - }, - }, - }); - if (!item) { - throw new common_1.NotFoundException('资源项目不存在'); - } - return { - ...item, - tags: this.parseJsonArray(item.tags), - }; - } - async createItem(dto) { - const library = await this.prisma.resourceLibrary.findUnique({ - where: { id: dto.libraryId }, - }); - if (!library) { - throw new common_1.NotFoundException('资源库不存在'); - } - const item = await this.prisma.resourceItem.create({ - data: { - libraryId: dto.libraryId, - title: dto.title, - description: dto.description, - fileType: dto.fileType, - filePath: dto.filePath, - fileSize: dto.fileSize, - tags: JSON.stringify(dto.tags || []), - }, - }); - this.logger.log(`Resource item created: ${item.id}`); - return { - ...item, - tags: this.parseJsonArray(item.tags), - }; - } - async updateItem(id, dto) { - const item = await this.prisma.resourceItem.findUnique({ - where: { id }, - }); - if (!item) { - throw new common_1.NotFoundException('资源项目不存在'); - } - const updated = await this.prisma.resourceItem.update({ - where: { id }, - data: { - title: dto.title, - description: dto.description, - tags: dto.tags ? JSON.stringify(dto.tags) : undefined, - sortOrder: dto.sortOrder, - }, - }); - this.logger.log(`Resource item updated: ${id}`); - return { - ...updated, - tags: this.parseJsonArray(updated.tags), - }; - } - async deleteItem(id) { - const item = await this.prisma.resourceItem.findUnique({ - where: { id }, - }); - if (!item) { - throw new common_1.NotFoundException('资源项目不存在'); - } - await this.prisma.resourceItem.delete({ - where: { id }, - }); - this.logger.log(`Resource item deleted: ${id}`); - return { message: '删除成功' }; - } - async batchDeleteItems(ids) { - await this.prisma.resourceItem.deleteMany({ - where: { - id: { in: ids }, - }, - }); - this.logger.log(`Batch deleted ${ids.length} resource items`); - return { message: `成功删除 ${ids.length} 个资源` }; - } - async getStats() { - const [totalLibraries, totalItems, itemsByType, itemsByLibraryType] = await Promise.all([ - this.prisma.resourceLibrary.count(), - this.prisma.resourceItem.count(), - this.prisma.resourceItem.groupBy({ - by: ['fileType'], - _count: true, - }), - this.prisma.resourceLibrary.groupBy({ - by: ['libraryType'], - _count: true, - }), - ]); - return { - totalLibraries, - totalItems, - itemsByType: itemsByType.reduce((acc, item) => { - acc[item.fileType] = item._count; - return acc; - }, {}), - itemsByLibraryType: itemsByLibraryType.reduce((acc, lib) => { - acc[lib.libraryType] = lib._count; - return acc; - }, {}), - }; - } -}; -exports.ResourceService = ResourceService; -exports.ResourceService = ResourceService = ResourceService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], ResourceService); -//# sourceMappingURL=resource.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/resource/resource.service.js.map b/reading-platform-backend/dist/src/modules/resource/resource.service.js.map deleted file mode 100644 index 8932b28..0000000 --- a/reading-platform-backend/dist/src/modules/resource/resource.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resource.service.js","sourceRoot":"","sources":["../../../../src/modules/resource/resource.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.d.ts b/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.d.ts deleted file mode 100644 index abb4f41..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export type TeacherRole = 'MAIN' | 'ASSIST' | 'CARE'; -export declare class AddClassTeacherDto { - teacherId: number; - role: TeacherRole; - isPrimary?: boolean; -} -export declare class UpdateClassTeacherDto { - role?: TeacherRole; - isPrimary?: boolean; -} -export declare class TransferStudentDto { - toClassId: number; - reason?: string; -} diff --git a/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js b/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js deleted file mode 100644 index ab7b6cd..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TransferStudentDto = exports.UpdateClassTeacherDto = exports.AddClassTeacherDto = void 0; -const class_validator_1 = require("class-validator"); -class AddClassTeacherDto { -} -exports.AddClassTeacherDto = AddClassTeacherDto; -__decorate([ - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], AddClassTeacherDto.prototype, "teacherId", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsIn)(['MAIN', 'ASSIST', 'CARE']), - __metadata("design:type", String) -], AddClassTeacherDto.prototype, "role", void 0); -__decorate([ - (0, class_validator_1.IsBoolean)(), - (0, class_validator_1.IsOptional)(), - __metadata("design:type", Boolean) -], AddClassTeacherDto.prototype, "isPrimary", void 0); -class UpdateClassTeacherDto { -} -exports.UpdateClassTeacherDto = UpdateClassTeacherDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsIn)(['MAIN', 'ASSIST', 'CARE']), - (0, class_validator_1.IsOptional)(), - __metadata("design:type", String) -], UpdateClassTeacherDto.prototype, "role", void 0); -__decorate([ - (0, class_validator_1.IsBoolean)(), - (0, class_validator_1.IsOptional)(), - __metadata("design:type", Boolean) -], UpdateClassTeacherDto.prototype, "isPrimary", void 0); -class TransferStudentDto { -} -exports.TransferStudentDto = TransferStudentDto; -__decorate([ - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], TransferStudentDto.prototype, "toClassId", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsOptional)(), - __metadata("design:type", String) -], TransferStudentDto.prototype, "reason", void 0); -//# sourceMappingURL=class-teacher.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js.map b/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js.map deleted file mode 100644 index 6ecd19b..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/class-teacher.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"class-teacher.dto.js","sourceRoot":"","sources":["../../../../../src/modules/school/dto/class-teacher.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA+E;AAM/E,MAAa,kBAAkB;CAW9B;AAXD,gDAWC;AATC;IADC,IAAA,uBAAK,GAAE;;qDACU;AAIlB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,sBAAI,EAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;;gDACf;AAIlB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;qDACO;AAItB,MAAa,qBAAqB;CASjC;AATD,sDASC;AALC;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,sBAAI,EAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,IAAA,4BAAU,GAAE;;mDACM;AAInB;IAFC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;wDACO;AAItB,MAAa,kBAAkB;CAO9B;AAPD,gDAOC;AALC;IADC,IAAA,uBAAK,GAAE;;qDACU;AAIlB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;kDACG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.d.ts b/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.d.ts deleted file mode 100644 index 2ac8590..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export declare class CreateClassDto { - name: string; - grade: string; - teacherId?: number; -} -export declare class UpdateClassDto { - name?: string; - grade?: string; - teacherId?: number; -} diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js b/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js deleted file mode 100644 index d868486..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UpdateClassDto = exports.CreateClassDto = void 0; -const class_validator_1 = require("class-validator"); -class CreateClassDto { -} -exports.CreateClassDto = CreateClassDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '班级名称不能为空' }), - __metadata("design:type", String) -], CreateClassDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '年级不能为空' }), - __metadata("design:type", String) -], CreateClassDto.prototype, "grade", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateClassDto.prototype, "teacherId", void 0); -class UpdateClassDto { -} -exports.UpdateClassDto = UpdateClassDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '班级名称不能为空' }), - __metadata("design:type", String) -], UpdateClassDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '年级不能为空' }), - __metadata("design:type", String) -], UpdateClassDto.prototype, "grade", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], UpdateClassDto.prototype, "teacherId", void 0); -//# sourceMappingURL=create-class.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js.map b/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js.map deleted file mode 100644 index 652dcbb..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-class.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-class.dto.js","sourceRoot":"","sources":["../../../../../src/modules/school/dto/create-class.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmF;AAEnF,MAAa,cAAc;CAY1B;AAZD,wCAYC;AATC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;4CACvB;AAIb;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;6CACpB;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACW;AAGrB,MAAa,cAAc;CAc1B;AAdD,wCAcC;AAVC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;4CACtB;AAKd;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;6CACnB;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACW"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.d.ts b/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.d.ts deleted file mode 100644 index 8976da2..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export declare class CreateStudentDto { - name: string; - gender?: string; - birthDate?: string; - classId: number; - parentName?: string; - parentPhone?: string; -} -export declare class UpdateStudentDto { - name?: string; - gender?: string; - birthDate?: string; - classId?: number; - parentName?: string; - parentPhone?: string; -} diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js b/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js deleted file mode 100644 index 572eabc..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UpdateStudentDto = exports.CreateStudentDto = void 0; -const class_validator_1 = require("class-validator"); -class CreateStudentDto { -} -exports.CreateStudentDto = CreateStudentDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '姓名不能为空' }), - __metadata("design:type", String) -], CreateStudentDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsIn)(['男', '女'], { message: '性别只能是男或女' }), - __metadata("design:type", String) -], CreateStudentDto.prototype, "gender", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateStudentDto.prototype, "birthDate", void 0); -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)({ message: '班级不能为空' }), - __metadata("design:type", Number) -], CreateStudentDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateStudentDto.prototype, "parentName", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.Matches)(/^1[3-9]\d{9}$/, { message: '请输入正确的手机号' }), - __metadata("design:type", String) -], CreateStudentDto.prototype, "parentPhone", void 0); -class UpdateStudentDto { -} -exports.UpdateStudentDto = UpdateStudentDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '姓名不能为空' }), - __metadata("design:type", String) -], UpdateStudentDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsIn)(['男', '女'], { message: '性别只能是男或女' }), - __metadata("design:type", String) -], UpdateStudentDto.prototype, "gender", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateStudentDto.prototype, "birthDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], UpdateStudentDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateStudentDto.prototype, "parentName", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.Matches)(/^1[3-9]\d{9}$/, { message: '请输入正确的手机号' }), - __metadata("design:type", String) -], UpdateStudentDto.prototype, "parentPhone", void 0); -//# sourceMappingURL=create-student.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js.map b/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js.map deleted file mode 100644 index d07a5a5..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-student.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-student.dto.js","sourceRoot":"","sources":["../../../../../src/modules/school/dto/create-student.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAyF;AAEzF,MAAa,gBAAgB;CAyB5B;AAzBD,4CAyBC;AAtBC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;8CACrB;AAIb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;gDAC1B;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACQ;AAInB;IAFC,IAAA,uBAAK,GAAE;IACP,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;iDAClB;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;oDACS;AAKpB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,EAAC,eAAe,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;qDAC9B;AAGvB,MAAa,gBAAgB;CA0B5B;AA1BD,4CA0BC;AAtBC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;8CACpB;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;gDAC1B;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACQ;AAInB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;iDACS;AAIjB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;oDACS;AAKpB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,EAAC,eAAe,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;qDAC9B"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.d.ts b/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.d.ts deleted file mode 100644 index db6b247..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -export declare class CreateTeacherDto { - name: string; - phone: string; - email?: string; - loginAccount: string; - password?: string; - classIds?: number[]; -} -export declare class UpdateTeacherDto { - name?: string; - phone?: string; - email?: string; - classIds?: number[]; -} diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js b/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js deleted file mode 100644 index cf65b19..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js +++ /dev/null @@ -1,76 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UpdateTeacherDto = exports.CreateTeacherDto = void 0; -const class_validator_1 = require("class-validator"); -class CreateTeacherDto { -} -exports.CreateTeacherDto = CreateTeacherDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '姓名不能为空' }), - __metadata("design:type", String) -], CreateTeacherDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '手机号不能为空' }), - (0, class_validator_1.Matches)(/^1[3-9]\d{9}$/, { message: '请输入正确的手机号' }), - __metadata("design:type", String) -], CreateTeacherDto.prototype, "phone", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsEmail)({}, { message: '请输入正确的邮箱格式' }), - __metadata("design:type", String) -], CreateTeacherDto.prototype, "email", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '登录账号不能为空' }), - __metadata("design:type", String) -], CreateTeacherDto.prototype, "loginAccount", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.MinLength)(6, { message: '密码至少6位' }), - __metadata("design:type", String) -], CreateTeacherDto.prototype, "password", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsInt)({ each: true }), - __metadata("design:type", Array) -], CreateTeacherDto.prototype, "classIds", void 0); -class UpdateTeacherDto { -} -exports.UpdateTeacherDto = UpdateTeacherDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '姓名不能为空' }), - __metadata("design:type", String) -], UpdateTeacherDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.Matches)(/^1[3-9]\d{9}$/, { message: '请输入正确的手机号' }), - __metadata("design:type", String) -], UpdateTeacherDto.prototype, "phone", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsEmail)({}, { message: '请输入正确的邮箱格式' }), - __metadata("design:type", String) -], UpdateTeacherDto.prototype, "email", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsInt)({ each: true }), - __metadata("design:type", Array) -], UpdateTeacherDto.prototype, "classIds", void 0); -//# sourceMappingURL=create-teacher.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js.map b/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js.map deleted file mode 100644 index 08a11cf..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/create-teacher.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-teacher.dto.js","sourceRoot":"","sources":["../../../../../src/modules/school/dto/create-teacher.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAgH;AAEhH,MAAa,gBAAgB;CA2B5B;AA3BD,4CA2BC;AAxBC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;8CACrB;AAKb;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAClC,IAAA,yBAAO,EAAC,eAAe,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;+CACrC;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;;+CACxB;AAIf;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;sDACf;AAKrB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;kDAClB;AAKlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,uBAAK,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;kDACF;AAGtB,MAAa,gBAAgB;CAmB5B;AAnBD,4CAmBC;AAfC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;8CACpB;AAKd;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,EAAC,eAAe,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;+CACpC;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;;+CACxB;AAKf;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;IACT,IAAA,uBAAK,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;kDACF"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.d.ts b/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.d.ts deleted file mode 100644 index ac38ed5..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare class ImportStudentsDto { - classId?: number; -} diff --git a/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js b/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js deleted file mode 100644 index a7ac049..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ImportStudentsDto = void 0; -const class_validator_1 = require("class-validator"); -class ImportStudentsDto { -} -exports.ImportStudentsDto = ImportStudentsDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], ImportStudentsDto.prototype, "classId", void 0); -//# sourceMappingURL=import-students.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js.map b/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js.map deleted file mode 100644 index 9176d1b..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/import-students.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"import-students.dto.js","sourceRoot":"","sources":["../../../../../src/modules/school/dto/import-students.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAoD;AAEpD,MAAa,iBAAiB;CAI7B;AAJD,8CAIC;AADC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;kDACS"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.d.ts b/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.d.ts deleted file mode 100644 index 91b95bd..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.d.ts +++ /dev/null @@ -1,49 +0,0 @@ -export declare class CreateScheduleDto { - classId: number; - courseId: number; - teacherId?: number; - scheduledDate?: string; - scheduledTime?: string; - weekDay?: number; - repeatType: string; - repeatEndDate?: string; - note?: string; -} -export declare class UpdateScheduleDto { - teacherId?: number; - scheduledDate?: string; - scheduledTime?: string; - weekDay?: number; - repeatType?: string; - repeatEndDate?: string; - note?: string; - status?: string; -} -export declare class QueryScheduleDto { - classId?: number; - teacherId?: number; - courseId?: number; - startDate?: string; - endDate?: string; - status?: string; - source?: string; - page?: number; - pageSize?: number; -} -export declare class TimetableQueryDto { - startDate: string; - endDate: string; - classId?: number; - teacherId?: number; -} -export declare class BatchScheduleItemDto { - classId: number; - courseId: number; - teacherId?: number; - scheduledDate: string; - scheduledTime?: string; - note?: string; -} -export declare class BatchCreateScheduleDto { - schedules: BatchScheduleItemDto[]; -} diff --git a/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js b/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js deleted file mode 100644 index ceb6e83..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js +++ /dev/null @@ -1,222 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BatchCreateScheduleDto = exports.BatchScheduleItemDto = exports.TimetableQueryDto = exports.QueryScheduleDto = exports.UpdateScheduleDto = exports.CreateScheduleDto = void 0; -const class_validator_1 = require("class-validator"); -class CreateScheduleDto { -} -exports.CreateScheduleDto = CreateScheduleDto; -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", Number) -], CreateScheduleDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", Number) -], CreateScheduleDto.prototype, "courseId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateScheduleDto.prototype, "teacherId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateScheduleDto.prototype, "scheduledDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateScheduleDto.prototype, "scheduledTime", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(0), - (0, class_validator_1.Max)(6), - __metadata("design:type", Number) -], CreateScheduleDto.prototype, "weekDay", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(['NONE', 'DAILY', 'WEEKLY']), - __metadata("design:type", String) -], CreateScheduleDto.prototype, "repeatType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateScheduleDto.prototype, "repeatEndDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateScheduleDto.prototype, "note", void 0); -class UpdateScheduleDto { -} -exports.UpdateScheduleDto = UpdateScheduleDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], UpdateScheduleDto.prototype, "teacherId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateScheduleDto.prototype, "scheduledDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateScheduleDto.prototype, "scheduledTime", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(0), - (0, class_validator_1.Max)(6), - __metadata("design:type", Number) -], UpdateScheduleDto.prototype, "weekDay", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsEnum)(['NONE', 'DAILY', 'WEEKLY']), - __metadata("design:type", String) -], UpdateScheduleDto.prototype, "repeatType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateScheduleDto.prototype, "repeatEndDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateScheduleDto.prototype, "note", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateScheduleDto.prototype, "status", void 0); -class QueryScheduleDto { -} -exports.QueryScheduleDto = QueryScheduleDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryScheduleDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryScheduleDto.prototype, "teacherId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryScheduleDto.prototype, "courseId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], QueryScheduleDto.prototype, "startDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], QueryScheduleDto.prototype, "endDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryScheduleDto.prototype, "status", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryScheduleDto.prototype, "source", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], QueryScheduleDto.prototype, "page", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - (0, class_validator_1.Max)(100), - __metadata("design:type", Number) -], QueryScheduleDto.prototype, "pageSize", void 0); -class TimetableQueryDto { -} -exports.TimetableQueryDto = TimetableQueryDto; -__decorate([ - (0, class_validator_1.IsNotEmpty)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], TimetableQueryDto.prototype, "startDate", void 0); -__decorate([ - (0, class_validator_1.IsNotEmpty)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], TimetableQueryDto.prototype, "endDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], TimetableQueryDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], TimetableQueryDto.prototype, "teacherId", void 0); -class BatchScheduleItemDto { -} -exports.BatchScheduleItemDto = BatchScheduleItemDto; -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", Number) -], BatchScheduleItemDto.prototype, "classId", void 0); -__decorate([ - (0, class_validator_1.IsInt)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", Number) -], BatchScheduleItemDto.prototype, "courseId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], BatchScheduleItemDto.prototype, "teacherId", void 0); -__decorate([ - (0, class_validator_1.IsDateString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], BatchScheduleItemDto.prototype, "scheduledDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], BatchScheduleItemDto.prototype, "scheduledTime", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], BatchScheduleItemDto.prototype, "note", void 0); -class BatchCreateScheduleDto { -} -exports.BatchCreateScheduleDto = BatchCreateScheduleDto; -__decorate([ - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", Array) -], BatchCreateScheduleDto.prototype, "schedules", void 0); -//# sourceMappingURL=schedule.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js.map b/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js.map deleted file mode 100644 index f82f503..0000000 --- a/reading-platform-backend/dist/src/modules/school/dto/schedule.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"schedule.dto.js","sourceRoot":"","sources":["../../../../../src/modules/school/dto/schedule.dto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/export.controller.d.ts b/reading-platform-backend/dist/src/modules/school/export.controller.d.ts deleted file mode 100644 index 6081f70..0000000 --- a/reading-platform-backend/dist/src/modules/school/export.controller.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Response } from 'express'; -import { ExportService } from './export.service'; -export declare class ExportController { - private readonly exportService; - constructor(exportService: ExportService); - exportLessons(req: any, startDate?: string, endDate?: string, res?: Response): Promise; - exportTeacherStats(req: any, startDate?: string, endDate?: string, res?: Response): Promise; - exportStudentStats(req: any, classId?: string, res?: Response): Promise; - private sendExcelResponse; - private getDateRangeFilename; - private formatDate; -} diff --git a/reading-platform-backend/dist/src/modules/school/export.controller.js b/reading-platform-backend/dist/src/modules/school/export.controller.js deleted file mode 100644 index af74b88..0000000 --- a/reading-platform-backend/dist/src/modules/school/export.controller.js +++ /dev/null @@ -1,101 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExportController = void 0; -const common_1 = require("@nestjs/common"); -const export_service_1 = require("./export.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let ExportController = class ExportController { - constructor(exportService) { - this.exportService = exportService; - } - async exportLessons(req, startDate, endDate, res) { - const buffer = await this.exportService.exportLessons(req.user.tenantId, startDate, endDate); - const filename = `授课记录_${this.getDateRangeFilename(startDate, endDate)}.xlsx`; - this.sendExcelResponse(res, buffer, filename); - } - async exportTeacherStats(req, startDate, endDate, res) { - const buffer = await this.exportService.exportTeacherStats(req.user.tenantId, startDate, endDate); - const filename = `教师绩效统计_${this.getDateRangeFilename(startDate, endDate)}.xlsx`; - this.sendExcelResponse(res, buffer, filename); - } - async exportStudentStats(req, classId, res) { - const buffer = await this.exportService.exportStudentStats(req.user.tenantId, classId ? parseInt(classId, 10) : undefined); - const filename = `学生统计_${this.formatDate(new Date())}.xlsx`; - this.sendExcelResponse(res, buffer, filename); - } - sendExcelResponse(res, buffer, filename) { - res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - res.setHeader('Content-Disposition', `attachment; filename="${encodeURIComponent(filename)}"`); - res.setHeader('Content-Length', buffer.length); - res.send(buffer); - } - getDateRangeFilename(startDate, endDate) { - if (startDate && endDate) { - return `${startDate}_${endDate}`; - } - else if (startDate) { - return `${startDate}_至今`; - } - else if (endDate) { - return `至${endDate}`; - } - return this.formatDate(new Date()); - } - formatDate(date) { - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - return `${year}${month}${day}`; - } -}; -exports.ExportController = ExportController; -__decorate([ - (0, common_1.Get)('export/lessons'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('startDate')), - __param(2, (0, common_1.Query)('endDate')), - __param(3, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportLessons", null); -__decorate([ - (0, common_1.Get)('export/teacher-stats'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('startDate')), - __param(2, (0, common_1.Query)('endDate')), - __param(3, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportTeacherStats", null); -__decorate([ - (0, common_1.Get)('export/student-stats'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('classId')), - __param(2, (0, common_1.Res)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", Promise) -], ExportController.prototype, "exportStudentStats", null); -exports.ExportController = ExportController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [export_service_1.ExportService]) -], ExportController); -//# sourceMappingURL=export.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/export.controller.js.map b/reading-platform-backend/dist/src/modules/school/export.controller.js.map deleted file mode 100644 index af98faf..0000000 --- a/reading-platform-backend/dist/src/modules/school/export.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"export.controller.js","sourceRoot":"","sources":["../../../../src/modules/school/export.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/export.service.d.ts b/reading-platform-backend/dist/src/modules/school/export.service.d.ts deleted file mode 100644 index 8b8c4f6..0000000 --- a/reading-platform-backend/dist/src/modules/school/export.service.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class ExportService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - exportLessons(tenantId: number, startDate?: string, endDate?: string): Promise; - exportTeacherStats(tenantId: number, startDate?: string, endDate?: string): Promise; - exportStudentStats(tenantId: number, classId?: number): Promise; - private generateExcelBuffer; - private calculateColumnWidths; - private getStatusText; -} diff --git a/reading-platform-backend/dist/src/modules/school/export.service.js b/reading-platform-backend/dist/src/modules/school/export.service.js deleted file mode 100644 index 636e10a..0000000 --- a/reading-platform-backend/dist/src/modules/school/export.service.js +++ /dev/null @@ -1,263 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var ExportService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ExportService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const XLSX = __importStar(require("xlsx")); -let ExportService = ExportService_1 = class ExportService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(ExportService_1.name); - } - async exportLessons(tenantId, startDate, endDate) { - const where = { - tenantId, - status: 'COMPLETED', - }; - if (startDate || endDate) { - where.createdAt = {}; - if (startDate) - where.createdAt.gte = new Date(startDate); - if (endDate) - where.createdAt.lte = new Date(endDate); - } - const lessons = await this.prisma.lesson.findMany({ - where, - orderBy: { - createdAt: 'desc', - }, - include: { - course: { - select: { - name: true, - pictureBookName: true, - duration: true, - }, - }, - teacher: { - select: { - name: true, - }, - }, - class: { - select: { - name: true, - grade: true, - }, - }, - }, - }); - const data = lessons.map((lesson, index) => ({ - '序号': index + 1, - '课程名称': lesson.course?.name || '', - '绘本名称': lesson.course?.pictureBookName || '', - '授课教师': lesson.teacher?.name || '', - '班级': lesson.class?.name || '', - '年级': lesson.class?.grade || '', - '计划时长(分钟)': lesson.course?.duration || '', - '实际时长(分钟)': lesson.actualDuration || '', - '授课日期': lesson.startDatetime - ? new Date(lesson.startDatetime).toLocaleDateString('zh-CN') - : '', - '开始时间': lesson.startDatetime - ? new Date(lesson.startDatetime).toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }) - : '', - '结束时间': lesson.endDatetime - ? new Date(lesson.endDatetime).toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit' }) - : '', - '状态': this.getStatusText(lesson.status), - '备注': lesson.completionNote || '', - })); - return this.generateExcelBuffer(data, '授课记录'); - } - async exportTeacherStats(tenantId, startDate, endDate) { - const teachers = await this.prisma.teacher.findMany({ - where: { - tenantId, - status: 'ACTIVE', - }, - select: { - id: true, - name: true, - phone: true, - email: true, - lessonCount: true, - createdAt: true, - }, - }); - const lessonWhere = { - tenantId, - status: 'COMPLETED', - }; - if (startDate || endDate) { - lessonWhere.createdAt = {}; - if (startDate) - lessonWhere.createdAt.gte = new Date(startDate); - if (endDate) - lessonWhere.createdAt.lte = new Date(endDate); - } - const teacherStats = await Promise.all(teachers.map(async (teacher) => { - const periodLessons = await this.prisma.lesson.count({ - where: { - ...lessonWhere, - teacherId: teacher.id, - }, - }); - const feedbackWhere = { - teacherId: teacher.id, - }; - if (startDate || endDate) { - feedbackWhere.lesson = { - endDatetime: {}, - }; - if (startDate) - feedbackWhere.lesson.endDatetime.gte = new Date(startDate); - if (endDate) - feedbackWhere.lesson.endDatetime.lte = new Date(endDate); - } - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: feedbackWhere, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - }, - }); - let avgRating = 0; - if (feedbacks.length > 0) { - const totalRating = feedbacks.reduce((sum, f) => { - const ratings = [f.designQuality, f.participation, f.goalAchievement].filter((r) => r !== null); - const avg = ratings.length > 0 ? ratings.reduce((s, r) => s + r, 0) / ratings.length : 0; - return sum + avg; - }, 0); - avgRating = Math.round((totalRating / feedbacks.length) * 100) / 100; - } - const classCount = await this.prisma.classTeacher.count({ - where: { - teacherId: teacher.id, - }, - }); - return { - '教师姓名': teacher.name, - '联系电话': teacher.phone, - '邮箱': teacher.email || '', - '关联班级数': classCount, - '累计授课次数': teacher.lessonCount, - '本期授课次数': periodLessons, - '平均评分': avgRating || '暂无评分', - '入职日期': new Date(teacher.createdAt).toLocaleDateString('zh-CN'), - }; - })); - teacherStats.sort((a, b) => b['本期授课次数'] - a['本期授课次数']); - const dataWithRank = teacherStats.map((item, index) => ({ - '排名': index + 1, - ...item, - })); - return this.generateExcelBuffer(dataWithRank, '教师绩效'); - } - async exportStudentStats(tenantId, classId) { - const where = { tenantId }; - if (classId) { - where.classId = classId; - } - const students = await this.prisma.student.findMany({ - where, - include: { - class: { - select: { - name: true, - grade: true, - }, - }, - }, - orderBy: { - createdAt: 'desc', - }, - }); - const data = students.map((student, index) => ({ - '序号': index + 1, - '学生姓名': student.name, - '性别': student.gender === 'MALE' ? '男' : student.gender === 'FEMALE' ? '女' : '', - '出生日期': student.birthDate - ? new Date(student.birthDate).toLocaleDateString('zh-CN') - : '', - '班级': student.class?.name || '', - '年级': student.class?.grade || '', - '家长姓名': student.parentName || '', - '联系电话': student.parentPhone || '', - '参与课程数': student.lessonCount, - '阅读记录数': student.readingCount, - '入校日期': new Date(student.createdAt).toLocaleDateString('zh-CN'), - })); - return this.generateExcelBuffer(data, '学生统计'); - } - generateExcelBuffer(data, sheetName) { - const worksheet = XLSX.utils.json_to_sheet(data); - const workbook = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(workbook, worksheet, sheetName); - const colWidths = this.calculateColumnWidths(data); - worksheet['!cols'] = colWidths; - return XLSX.write(workbook, { type: 'buffer', bookType: 'xlsx' }); - } - calculateColumnWidths(data) { - if (data.length === 0) - return []; - const headers = Object.keys(data[0]); - return headers.map((header) => { - let maxWidth = header.length; - data.forEach((row) => { - const value = String(row[header] || ''); - maxWidth = Math.max(maxWidth, value.length); - }); - return { wch: Math.min(maxWidth + 2, 50) }; - }); - } - getStatusText(status) { - const statusMap = { - PLANNED: '已计划', - IN_PROGRESS: '进行中', - COMPLETED: '已完成', - CANCELLED: '已取消', - }; - return statusMap[status] || status; - } -}; -exports.ExportService = ExportService; -exports.ExportService = ExportService = ExportService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], ExportService); -//# sourceMappingURL=export.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/export.service.js.map b/reading-platform-backend/dist/src/modules/school/export.service.js.map deleted file mode 100644 index 22d186d..0000000 --- a/reading-platform-backend/dist/src/modules/school/export.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"export.service.js","sourceRoot":"","sources":["../../../../src/modules/school/export.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/package.controller.d.ts b/reading-platform-backend/dist/src/modules/school/package.controller.d.ts deleted file mode 100644 index cc63f20..0000000 --- a/reading-platform-backend/dist/src/modules/school/package.controller.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class PackageController { - private prisma; - constructor(prisma: PrismaService); - getPackageInfo(req: any): Promise<{ - packageType: string; - teacherQuota: number; - studentQuota: number; - storageQuota: number; - teacherCount: number; - studentCount: number; - storageUsed: number; - startDate: string; - expireDate: string; - status: string; - }>; - getPackageUsage(req: any): Promise<{ - teacher: { - used: number; - quota: number; - percentage: number; - }; - student: { - used: number; - quota: number; - percentage: number; - }; - storage: { - used: number; - quota: number; - percentage: number; - }; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/school/package.controller.js b/reading-platform-backend/dist/src/modules/school/package.controller.js deleted file mode 100644 index 87f645b..0000000 --- a/reading-platform-backend/dist/src/modules/school/package.controller.js +++ /dev/null @@ -1,120 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PackageController = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let PackageController = class PackageController { - constructor(prisma) { - this.prisma = prisma; - } - async getPackageInfo(req) { - const tenantId = req.user.tenantId; - const [tenant, teacherCount, studentCount] = await Promise.all([ - this.prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { - id: true, - name: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - storageQuota: true, - storageUsed: true, - startDate: true, - expireDate: true, - status: true, - }, - }), - this.prisma.teacher.count({ where: { tenantId } }), - this.prisma.student.count({ where: { tenantId } }), - ]); - if (!tenant) { - return null; - } - return { - packageType: tenant.packageType, - teacherQuota: tenant.teacherQuota, - studentQuota: tenant.studentQuota, - storageQuota: Number(tenant.storageQuota), - teacherCount: teacherCount, - studentCount: studentCount, - storageUsed: Number(tenant.storageUsed), - startDate: tenant.startDate, - expireDate: tenant.expireDate, - status: tenant.status, - }; - } - async getPackageUsage(req) { - const tenantId = req.user.tenantId; - const [tenant, teacherCount, studentCount] = await Promise.all([ - this.prisma.tenant.findUnique({ - where: { id: tenantId }, - select: { - teacherQuota: true, - studentQuota: true, - storageQuota: true, - storageUsed: true, - }, - }), - this.prisma.teacher.count({ where: { tenantId } }), - this.prisma.student.count({ where: { tenantId } }), - ]); - if (!tenant) { - return null; - } - return { - teacher: { - used: teacherCount, - quota: tenant.teacherQuota, - percentage: tenant.teacherQuota > 0 ? Math.round((teacherCount / tenant.teacherQuota) * 100) : 0, - }, - student: { - used: studentCount, - quota: tenant.studentQuota, - percentage: tenant.studentQuota > 0 ? Math.round((studentCount / tenant.studentQuota) * 100) : 0, - }, - storage: { - used: Number(tenant.storageUsed), - quota: Number(tenant.storageQuota), - percentage: Number(tenant.storageQuota) > 0 ? Math.round((Number(tenant.storageUsed) / Number(tenant.storageQuota)) * 100) : 0, - }, - }; - } -}; -exports.PackageController = PackageController; -__decorate([ - (0, common_1.Get)('package'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], PackageController.prototype, "getPackageInfo", null); -__decorate([ - (0, common_1.Get)('package/usage'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], PackageController.prototype, "getPackageUsage", null); -exports.PackageController = PackageController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], PackageController); -//# sourceMappingURL=package.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/package.controller.js.map b/reading-platform-backend/dist/src/modules/school/package.controller.js.map deleted file mode 100644 index db7eb77..0000000 --- a/reading-platform-backend/dist/src/modules/school/package.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"package.controller.js","sourceRoot":"","sources":["../../../../src/modules/school/package.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/school.controller.d.ts b/reading-platform-backend/dist/src/modules/school/school.controller.d.ts deleted file mode 100644 index def0e46..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.controller.d.ts +++ /dev/null @@ -1,858 +0,0 @@ -import { SchoolService } from './school.service'; -import { CreateTeacherDto, UpdateTeacherDto } from './dto/create-teacher.dto'; -import { CreateStudentDto, UpdateStudentDto } from './dto/create-student.dto'; -import { CreateClassDto, UpdateClassDto } from './dto/create-class.dto'; -import { AddClassTeacherDto, UpdateClassTeacherDto, TransferStudentDto } from './dto/class-teacher.dto'; -import { CreateScheduleDto, UpdateScheduleDto, QueryScheduleDto, TimetableQueryDto } from './dto/schedule.dto'; -export declare class SchoolController { - private readonly schoolService; - constructor(schoolService: SchoolService); - findTeachers(req: any, query: any): Promise<{ - items: { - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findTeacher(req: any, id: string): Promise<{ - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - createTeacher(req: any, dto: CreateTeacherDto): Promise<{ - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - updateTeacher(req: any, id: string, dto: UpdateTeacherDto): Promise<{ - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - deleteTeacher(req: any, id: string): Promise<{ - message: string; - }>; - resetTeacherPassword(req: any, id: string): Promise<{ - tempPassword: string; - }>; - findStudents(req: any, query: any): Promise<{ - items: { - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findStudent(req: any, id: string): Promise<{ - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }>; - createStudent(req: any, dto: CreateStudentDto): Promise<{ - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }>; - updateStudent(req: any, id: string, dto: UpdateStudentDto): Promise<{ - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }>; - deleteStudent(req: any, id: string): Promise<{ - message: string; - }>; - transferStudent(req: any, id: string, dto: TransferStudentDto): Promise<{ - message: string; - }>; - getStudentClassHistory(req: any, id: string): Promise<{ - id: number; - fromClass: { - id: number; - name: string; - grade: string; - }; - toClass: { - id: number; - name: string; - grade: string; - }; - reason: string; - operatedBy: number; - createdAt: Date; - }[]>; - importStudents(req: any, file: Express.Multer.File, defaultClassId?: string): Promise<{ - success: number; - failed: number; - errors: { - row: number; - message: string; - }[]; - }>; - getImportTemplate(): { - headers: string[]; - example: string[]; - notes: string[]; - }; - findClasses(req: any): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - teachers: { - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }[]; - }[]>; - findClass(req: any, id: string): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - students: { - id: number; - name: string; - lessonCount: number; - gender: string; - birthDate: Date; - parentPhone: string; - parentName: string; - }[]; - createdAt: Date; - updatedAt: Date; - }>; - findClassStudents(req: any, id: string, query: any): Promise<{ - items: { - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }[]; - total: number; - page: number; - pageSize: number; - }>; - createClass(req: any, dto: CreateClassDto): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - }>; - updateClass(req: any, id: string, dto: UpdateClassDto): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - }>; - deleteClass(req: any, id: string): Promise<{ - message: string; - }>; - findClassTeachers(req: any, id: string): Promise<{ - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - teacherEmail: string; - role: string; - isPrimary: boolean; - createdAt: Date; - }[]>; - addClassTeacher(req: any, id: string, dto: AddClassTeacherDto): Promise<{ - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }>; - updateClassTeacher(req: any, id: string, teacherId: string, dto: UpdateClassTeacherDto): Promise<{ - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }>; - removeClassTeacher(req: any, id: string, teacherId: string): Promise<{ - message: string; - }>; - findParents(req: any, query: any): Promise<{ - items: { - childrenCount: number; - children: { - relationship: string; - id: number; - name: string; - class: { - id: number; - name: string; - }; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findParent(req: any, id: string): Promise<{ - children: { - relationship: string; - id: number; - name: string; - class: { - id: number; - name: string; - }; - gender: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - createParent(req: any, dto: any): Promise<{ - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - updateParent(req: any, id: string, dto: any): Promise<{ - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - deleteParent(req: any, id: string): Promise<{ - message: string; - }>; - resetParentPassword(req: any, id: string): Promise<{ - tempPassword: string; - }>; - addChildToParent(req: any, parentId: string, studentId: string, body: { - relationship: string; - }): Promise<{ - student: { - id: number; - name: string; - }; - } & { - id: number; - createdAt: Date; - parentId: number; - studentId: number; - relationship: string; - }>; - removeChildFromParent(req: any, parentId: string, studentId: string): Promise<{ - message: string; - }>; - findCourses(req: any): Promise<{ - id: number; - name: string; - pictureBookName: string; - pictureUrl: string; - gradeTags: any[]; - domainTags: any[]; - duration: number; - usageCount: number; - authorized: boolean; - }[]>; - findCourse(req: any, id: string): Promise<{ - authorized: boolean; - gradeTags: any; - domainTags: any; - ebookPaths: any; - audioPaths: any; - videoPaths: any; - otherResources: any; - posterPaths: any; - tenantCourses: any; - teacherCount: number; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - courseId: number; - duration: number; - sortOrder: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - name: string; - createdAt: Date; - courseId: number; - duration: number | null; - sortOrder: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - resources: { - id: number; - createdAt: Date; - courseId: number; - sortOrder: number; - resourceType: string; - resourceName: string; - fileUrl: string; - fileSize: number | null; - mimeType: string | null; - metadata: string | null; - }[]; - id: number; - name: string; - status: string; - createdAt: Date; - updatedAt: Date; - parentId: number | null; - description: string | null; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - pptPath: string | null; - pptName: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - isLatest: boolean; - usageCount: number; - avgRating: number; - createdBy: number | null; - publishedAt: Date | null; - }>; - findSchedules(req: any, query: QueryScheduleDto): Promise<{ - items: { - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - phone: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getTimetable(req: any, query: TimetableQueryDto): Promise<{ - date: string; - weekDay: number; - schedules: any[]; - }[]>; - findSchedule(req: any, id: string): Promise<{ - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - phone: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - createSchedule(req: any, dto: CreateScheduleDto): Promise<{ - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - updateSchedule(req: any, id: string, dto: UpdateScheduleDto): Promise<{ - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - cancelSchedule(req: any, id: string): Promise<{ - message: string; - }>; - batchCreateSchedules(req: any, dto: { - schedules: any[]; - }): Promise<{ - success: number; - failed: number; - results: any[]; - errors: any[]; - }>; - getScheduleTemplates(req: any, query: any): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }[]>; - getScheduleTemplate(req: any, id: string): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }>; - createScheduleTemplate(req: any, dto: any): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }>; - updateScheduleTemplate(req: any, id: string, dto: any): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }>; - deleteScheduleTemplate(req: any, id: string): Promise<{ - message: string; - }>; - applyScheduleTemplate(req: any, id: string, dto: any): Promise<{ - className: string; - courseName: string; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/school/school.controller.js b/reading-platform-backend/dist/src/modules/school/school.controller.js deleted file mode 100644 index aee4820..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.controller.js +++ /dev/null @@ -1,600 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SchoolController = void 0; -const common_1 = require("@nestjs/common"); -const platform_express_1 = require("@nestjs/platform-express"); -const school_service_1 = require("./school.service"); -const create_teacher_dto_1 = require("./dto/create-teacher.dto"); -const create_student_dto_1 = require("./dto/create-student.dto"); -const create_class_dto_1 = require("./dto/create-class.dto"); -const class_teacher_dto_1 = require("./dto/class-teacher.dto"); -const schedule_dto_1 = require("./dto/schedule.dto"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -const log_operation_decorator_1 = require("../common/decorators/log-operation.decorator"); -const log_interceptor_1 = require("../common/interceptors/log.interceptor"); -let SchoolController = class SchoolController { - constructor(schoolService) { - this.schoolService = schoolService; - } - findTeachers(req, query) { - return this.schoolService.findTeachers(req.user.tenantId, query); - } - findTeacher(req, id) { - return this.schoolService.findTeacher(req.user.tenantId, +id); - } - createTeacher(req, dto) { - return this.schoolService.createTeacher(req.user.tenantId, dto); - } - updateTeacher(req, id, dto) { - return this.schoolService.updateTeacher(req.user.tenantId, +id, dto); - } - deleteTeacher(req, id) { - return this.schoolService.deleteTeacher(req.user.tenantId, +id); - } - resetTeacherPassword(req, id) { - return this.schoolService.resetTeacherPassword(req.user.tenantId, +id); - } - findStudents(req, query) { - return this.schoolService.findStudents(req.user.tenantId, query); - } - findStudent(req, id) { - return this.schoolService.findStudent(req.user.tenantId, +id); - } - createStudent(req, dto) { - return this.schoolService.createStudent(req.user.tenantId, dto); - } - updateStudent(req, id, dto) { - return this.schoolService.updateStudent(req.user.tenantId, +id, dto); - } - deleteStudent(req, id) { - return this.schoolService.deleteStudent(req.user.tenantId, +id); - } - transferStudent(req, id, dto) { - return this.schoolService.transferStudent(req.user.tenantId, +id, dto); - } - getStudentClassHistory(req, id) { - return this.schoolService.getStudentClassHistory(req.user.tenantId, +id); - } - async importStudents(req, file, defaultClassId) { - if (!file) { - throw new common_1.BadRequestException('请上传文件'); - } - const studentsData = await this.schoolService.parseStudentImportFile(file); - return this.schoolService.importStudents(req.user.tenantId, studentsData, defaultClassId ? +defaultClassId : undefined); - } - getImportTemplate() { - return { - headers: ['姓名', '性别', '出生日期', '班级ID', '家长姓名', '家长电话'], - example: ['张小明', '男', '2020-01-15', '1', '张三', '13800138000'], - notes: [ - '姓名为必填项', - '性别可选:男/女,默认为男', - '出生日期格式:YYYY-MM-DD', - '班级ID为必填项,可在班级管理中查看', - '家长姓名和家长电话为选填项', - ], - }; - } - findClasses(req) { - return this.schoolService.findClasses(req.user.tenantId); - } - findClass(req, id) { - return this.schoolService.findClass(req.user.tenantId, +id); - } - findClassStudents(req, id, query) { - return this.schoolService.findClassStudents(req.user.tenantId, +id, query); - } - createClass(req, dto) { - return this.schoolService.createClass(req.user.tenantId, dto); - } - updateClass(req, id, dto) { - return this.schoolService.updateClass(req.user.tenantId, +id, dto); - } - deleteClass(req, id) { - return this.schoolService.deleteClass(req.user.tenantId, +id); - } - findClassTeachers(req, id) { - return this.schoolService.findClassTeachers(req.user.tenantId, +id); - } - addClassTeacher(req, id, dto) { - return this.schoolService.addClassTeacher(req.user.tenantId, +id, dto); - } - updateClassTeacher(req, id, teacherId, dto) { - return this.schoolService.updateClassTeacher(req.user.tenantId, +id, +teacherId, dto); - } - removeClassTeacher(req, id, teacherId) { - return this.schoolService.removeClassTeacher(req.user.tenantId, +id, +teacherId); - } - findParents(req, query) { - return this.schoolService.findParents(req.user.tenantId, query); - } - findParent(req, id) { - return this.schoolService.findParent(req.user.tenantId, +id); - } - createParent(req, dto) { - return this.schoolService.createParent(req.user.tenantId, dto); - } - updateParent(req, id, dto) { - return this.schoolService.updateParent(req.user.tenantId, +id, dto); - } - deleteParent(req, id) { - return this.schoolService.deleteParent(req.user.tenantId, +id); - } - resetParentPassword(req, id) { - return this.schoolService.resetParentPassword(req.user.tenantId, +id); - } - addChildToParent(req, parentId, studentId, body) { - return this.schoolService.addChildToParent(req.user.tenantId, +parentId, +studentId, body.relationship); - } - removeChildFromParent(req, parentId, studentId) { - return this.schoolService.removeChildFromParent(req.user.tenantId, +parentId, +studentId); - } - findCourses(req) { - return this.schoolService.findCourses(req.user.tenantId); - } - findCourse(req, id) { - return this.schoolService.findCourse(req.user.tenantId, +id); - } - findSchedules(req, query) { - return this.schoolService.findSchedules(req.user.tenantId, query); - } - getTimetable(req, query) { - return this.schoolService.getTimetable(req.user.tenantId, query); - } - findSchedule(req, id) { - return this.schoolService.findSchedule(req.user.tenantId, +id); - } - createSchedule(req, dto) { - return this.schoolService.createSchedule(req.user.tenantId, dto, req.user.userId); - } - updateSchedule(req, id, dto) { - return this.schoolService.updateSchedule(req.user.tenantId, +id, dto); - } - cancelSchedule(req, id) { - return this.schoolService.cancelSchedule(req.user.tenantId, +id); - } - batchCreateSchedules(req, dto) { - return this.schoolService.batchCreateSchedules(req.user.tenantId, dto.schedules); - } - getScheduleTemplates(req, query) { - return this.schoolService.getScheduleTemplates(req.user.tenantId, query); - } - getScheduleTemplate(req, id) { - return this.schoolService.getScheduleTemplate(req.user.tenantId, +id); - } - createScheduleTemplate(req, dto) { - return this.schoolService.createScheduleTemplate(req.user.tenantId, dto); - } - updateScheduleTemplate(req, id, dto) { - return this.schoolService.updateScheduleTemplate(req.user.tenantId, +id, dto); - } - deleteScheduleTemplate(req, id) { - return this.schoolService.deleteScheduleTemplate(req.user.tenantId, +id); - } - applyScheduleTemplate(req, id, dto) { - return this.schoolService.applyScheduleTemplate(req.user.tenantId, +id, dto); - } -}; -exports.SchoolController = SchoolController; -__decorate([ - (0, common_1.Get)('teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findTeachers", null); -__decorate([ - (0, common_1.Get)('teachers/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findTeacher", null); -__decorate([ - (0, common_1.Post)('teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_teacher_dto_1.CreateTeacherDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "createTeacher", null); -__decorate([ - (0, common_1.Put)('teachers/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_teacher_dto_1.UpdateTeacherDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateTeacher", null); -__decorate([ - (0, common_1.Delete)('teachers/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "deleteTeacher", null); -__decorate([ - (0, common_1.Post)('teachers/:id/reset-password'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "resetTeacherPassword", null); -__decorate([ - (0, common_1.Get)('students'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findStudents", null); -__decorate([ - (0, common_1.Get)('students/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findStudent", null); -__decorate([ - (0, common_1.Post)('students'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_student_dto_1.CreateStudentDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "createStudent", null); -__decorate([ - (0, common_1.Put)('students/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_student_dto_1.UpdateStudentDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateStudent", null); -__decorate([ - (0, common_1.Delete)('students/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "deleteStudent", null); -__decorate([ - (0, common_1.Post)('students/:id/transfer'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, class_teacher_dto_1.TransferStudentDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "transferStudent", null); -__decorate([ - (0, common_1.Get)('students/:id/history'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "getStudentClassHistory", null); -__decorate([ - (0, common_1.Post)('students/import'), - (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.UploadedFile)()), - __param(2, (0, common_1.Query)('defaultClassId')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object, String]), - __metadata("design:returntype", Promise) -], SchoolController.prototype, "importStudents", null); -__decorate([ - (0, common_1.Get)('students/import/template'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "getImportTemplate", null); -__decorate([ - (0, common_1.Get)('classes'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findClasses", null); -__decorate([ - (0, common_1.Get)('classes/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findClass", null); -__decorate([ - (0, common_1.Get)('classes/:id/students'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findClassStudents", null); -__decorate([ - (0, common_1.Post)('classes'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_class_dto_1.CreateClassDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "createClass", null); -__decorate([ - (0, common_1.Put)('classes/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_class_dto_1.UpdateClassDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateClass", null); -__decorate([ - (0, common_1.Delete)('classes/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "deleteClass", null); -__decorate([ - (0, common_1.Get)('classes/:id/teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findClassTeachers", null); -__decorate([ - (0, common_1.Post)('classes/:id/teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, class_teacher_dto_1.AddClassTeacherDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "addClassTeacher", null); -__decorate([ - (0, common_1.Put)('classes/:id/teachers/:teacherId'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Param)('teacherId')), - __param(3, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, class_teacher_dto_1.UpdateClassTeacherDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateClassTeacher", null); -__decorate([ - (0, common_1.Delete)('classes/:id/teachers/:teacherId'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Param)('teacherId')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "removeClassTeacher", null); -__decorate([ - (0, common_1.Get)('parents'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findParents", null); -__decorate([ - (0, common_1.Get)('parents/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findParent", null); -__decorate([ - (0, common_1.Post)('parents'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "createParent", null); -__decorate([ - (0, common_1.Put)('parents/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateParent", null); -__decorate([ - (0, common_1.Delete)('parents/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "deleteParent", null); -__decorate([ - (0, common_1.Post)('parents/:id/reset-password'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "resetParentPassword", null); -__decorate([ - (0, common_1.Post)('parents/:parentId/children/:studentId'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('parentId')), - __param(2, (0, common_1.Param)('studentId')), - __param(3, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "addChildToParent", null); -__decorate([ - (0, common_1.Delete)('parents/:parentId/children/:studentId'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('parentId')), - __param(2, (0, common_1.Param)('studentId')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "removeChildFromParent", null); -__decorate([ - (0, common_1.Get)('courses'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findCourses", null); -__decorate([ - (0, common_1.Get)('courses/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findCourse", null); -__decorate([ - (0, common_1.Get)('schedules'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, schedule_dto_1.QueryScheduleDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findSchedules", null); -__decorate([ - (0, common_1.Get)('schedules/timetable'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, schedule_dto_1.TimetableQueryDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "getTimetable", null); -__decorate([ - (0, common_1.Get)('schedules/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "findSchedule", null); -__decorate([ - (0, common_1.Post)('schedules'), - (0, log_operation_decorator_1.LogOperation)({ module: '排课管理', action: '创建排课', description: '创建新的课程排期' }), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, schedule_dto_1.CreateScheduleDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "createSchedule", null); -__decorate([ - (0, common_1.Put)('schedules/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, schedule_dto_1.UpdateScheduleDto]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateSchedule", null); -__decorate([ - (0, common_1.Delete)('schedules/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "cancelSchedule", null); -__decorate([ - (0, common_1.Post)('schedules/batch'), - (0, log_operation_decorator_1.LogOperation)({ module: '排课管理', action: '批量创建排课', description: '批量创建课程排期' }), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "batchCreateSchedules", null); -__decorate([ - (0, common_1.Get)('schedule-templates'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "getScheduleTemplates", null); -__decorate([ - (0, common_1.Get)('schedule-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "getScheduleTemplate", null); -__decorate([ - (0, common_1.Post)('schedule-templates'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "createScheduleTemplate", null); -__decorate([ - (0, common_1.Put)('schedule-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "updateScheduleTemplate", null); -__decorate([ - (0, common_1.Delete)('schedule-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "deleteScheduleTemplate", null); -__decorate([ - (0, common_1.Post)('schedule-templates/:id/apply'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], SchoolController.prototype, "applyScheduleTemplate", null); -exports.SchoolController = SchoolController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, common_1.UseInterceptors)(log_interceptor_1.LogInterceptor), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [school_service_1.SchoolService]) -], SchoolController); -//# sourceMappingURL=school.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/school.controller.js.map b/reading-platform-backend/dist/src/modules/school/school.controller.js.map deleted file mode 100644 index 14c6b31..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"school.controller.js","sourceRoot":"","sources":["../../../../src/modules/school/school.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/school.module.d.ts b/reading-platform-backend/dist/src/modules/school/school.module.d.ts deleted file mode 100644 index 5f084c5..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class SchoolModule { -} diff --git a/reading-platform-backend/dist/src/modules/school/school.module.js b/reading-platform-backend/dist/src/modules/school/school.module.js deleted file mode 100644 index 4019074..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.module.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SchoolModule = void 0; -const common_1 = require("@nestjs/common"); -const school_controller_1 = require("./school.controller"); -const school_service_1 = require("./school.service"); -const stats_controller_1 = require("./stats.controller"); -const stats_service_1 = require("./stats.service"); -const package_controller_1 = require("./package.controller"); -const settings_controller_1 = require("./settings.controller"); -const settings_service_1 = require("./settings.service"); -const export_controller_1 = require("./export.controller"); -const export_service_1 = require("./export.service"); -let SchoolModule = class SchoolModule { -}; -exports.SchoolModule = SchoolModule; -exports.SchoolModule = SchoolModule = __decorate([ - (0, common_1.Module)({ - controllers: [school_controller_1.SchoolController, stats_controller_1.StatsController, package_controller_1.PackageController, settings_controller_1.SettingsController, export_controller_1.ExportController], - providers: [school_service_1.SchoolService, stats_service_1.StatsService, settings_service_1.SettingsService, export_service_1.ExportService], - exports: [school_service_1.SchoolService, stats_service_1.StatsService, settings_service_1.SettingsService, export_service_1.ExportService], - }) -], SchoolModule); -//# sourceMappingURL=school.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/school.module.js.map b/reading-platform-backend/dist/src/modules/school/school.module.js.map deleted file mode 100644 index 3aec9a2..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"school.module.js","sourceRoot":"","sources":["../../../../src/modules/school/school.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AACvD,qDAAiD;AACjD,yDAAqD;AACrD,mDAA+C;AAC/C,6DAAyD;AACzD,+DAA2D;AAC3D,yDAAqD;AACrD,2DAAuD;AACvD,qDAAiD;AAO1C,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,oCAAgB,EAAE,kCAAe,EAAE,sCAAiB,EAAE,wCAAkB,EAAE,oCAAgB,CAAC;QACzG,SAAS,EAAE,CAAC,8BAAa,EAAE,4BAAY,EAAE,kCAAe,EAAE,8BAAa,CAAC;QACxE,OAAO,EAAE,CAAC,8BAAa,EAAE,4BAAY,EAAE,kCAAe,EAAE,8BAAa,CAAC;KACvE,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/school.service.d.ts b/reading-platform-backend/dist/src/modules/school/school.service.d.ts deleted file mode 100644 index 1099237..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.service.d.ts +++ /dev/null @@ -1,899 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { CreateTeacherDto, UpdateTeacherDto } from './dto/create-teacher.dto'; -import { CreateStudentDto, UpdateStudentDto } from './dto/create-student.dto'; -import { CreateClassDto, UpdateClassDto } from './dto/create-class.dto'; -import { AddClassTeacherDto, UpdateClassTeacherDto, TransferStudentDto } from './dto/class-teacher.dto'; -import { CreateScheduleDto, UpdateScheduleDto, QueryScheduleDto, TimetableQueryDto } from './dto/schedule.dto'; -export declare class SchoolService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - private parseJsonArray; - findTeachers(tenantId: number, query: any): Promise<{ - items: { - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findTeacher(tenantId: number, id: number): Promise<{ - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - createTeacher(tenantId: number, dto: CreateTeacherDto): Promise<{ - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - updateTeacher(tenantId: number, id: number, dto: UpdateTeacherDto): Promise<{ - classIds: any[]; - classNames: string; - passwordHash: any; - classes: { - id: number; - name: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - status: string; - lessonCount: number; - feedbackCount: number; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - deleteTeacher(tenantId: number, id: number): Promise<{ - message: string; - }>; - resetTeacherPassword(tenantId: number, id: number): Promise<{ - tempPassword: string; - }>; - findStudents(tenantId: number, query: any): Promise<{ - items: { - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findStudent(tenantId: number, id: number): Promise<{ - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }>; - createStudent(tenantId: number, dto: CreateStudentDto): Promise<{ - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }>; - updateStudent(tenantId: number, id: number, dto: UpdateStudentDto): Promise<{ - className: string; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }>; - deleteStudent(tenantId: number, id: number): Promise<{ - message: string; - }>; - importStudents(tenantId: number, studentsData: any[], defaultClassId?: number): Promise<{ - success: number; - failed: number; - errors: { - row: number; - message: string; - }[]; - }>; - parseStudentImportFile(file: Express.Multer.File): Promise; - private formatDate; - findClasses(tenantId: number): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - teachers: { - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }[]; - }[]>; - findClass(tenantId: number, id: number): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - students: { - id: number; - name: string; - lessonCount: number; - gender: string; - birthDate: Date; - parentPhone: string; - parentName: string; - }[]; - createdAt: Date; - updatedAt: Date; - }>; - findClassStudents(tenantId: number, classId: number, query: any): Promise<{ - items: { - id: number; - tenantId: number; - name: string; - lessonCount: number; - createdAt: Date; - updatedAt: Date; - classId: number; - gender: string | null; - birthDate: Date | null; - parentPhone: string | null; - parentName: string | null; - readingCount: number; - }[]; - total: number; - page: number; - pageSize: number; - }>; - createClass(tenantId: number, dto: CreateClassDto): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - }>; - updateClass(tenantId: number, id: number, dto: UpdateClassDto): Promise<{ - id: number; - name: string; - grade: string; - teacherId: number; - teacherName: string; - studentCount: number; - lessonCount: number; - }>; - deleteClass(tenantId: number, id: number): Promise<{ - message: string; - }>; - findParents(tenantId: number, query: any): Promise<{ - items: { - childrenCount: number; - children: { - relationship: string; - id: number; - name: string; - class: { - id: number; - name: string; - }; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findParent(tenantId: number, id: number): Promise<{ - children: { - relationship: string; - id: number; - name: string; - class: { - id: number; - name: string; - }; - gender: string; - }[]; - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - createParent(tenantId: number, dto: { - name: string; - phone: string; - email?: string; - loginAccount: string; - password: string; - }): Promise<{ - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - updateParent(tenantId: number, id: number, dto: { - name?: string; - phone?: string; - email?: string; - status?: string; - password?: string; - }): Promise<{ - id: number; - tenantId: number; - name: string; - phone: string; - email: string | null; - loginAccount: string; - passwordHash: string; - status: string; - createdAt: Date; - updatedAt: Date; - lastLoginAt: Date | null; - }>; - deleteParent(tenantId: number, id: number): Promise<{ - message: string; - }>; - resetParentPassword(tenantId: number, id: number): Promise<{ - tempPassword: string; - }>; - addChildToParent(tenantId: number, parentId: number, studentId: number, relationship: string): Promise<{ - student: { - id: number; - name: string; - }; - } & { - id: number; - createdAt: Date; - parentId: number; - studentId: number; - relationship: string; - }>; - removeChildFromParent(tenantId: number, parentId: number, studentId: number): Promise<{ - message: string; - }>; - findCourses(tenantId: number): Promise<{ - id: number; - name: string; - pictureBookName: string; - pictureUrl: string; - gradeTags: any[]; - domainTags: any[]; - duration: number; - usageCount: number; - authorized: boolean; - }[]>; - findCourse(tenantId: number, courseId: number): Promise<{ - authorized: boolean; - gradeTags: any; - domainTags: any; - ebookPaths: any; - audioPaths: any; - videoPaths: any; - otherResources: any; - posterPaths: any; - tenantCourses: any; - teacherCount: number; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - courseId: number; - duration: number; - sortOrder: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - name: string; - createdAt: Date; - courseId: number; - duration: number | null; - sortOrder: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - resources: { - id: number; - createdAt: Date; - courseId: number; - sortOrder: number; - resourceType: string; - resourceName: string; - fileUrl: string; - fileSize: number | null; - mimeType: string | null; - metadata: string | null; - }[]; - id: number; - name: string; - status: string; - createdAt: Date; - updatedAt: Date; - parentId: number | null; - description: string | null; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - pptPath: string | null; - pptName: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - isLatest: boolean; - usageCount: number; - avgRating: number; - createdBy: number | null; - publishedAt: Date | null; - }>; - findClassTeachers(tenantId: number, classId: number): Promise<{ - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - teacherEmail: string; - role: string; - isPrimary: boolean; - createdAt: Date; - }[]>; - addClassTeacher(tenantId: number, classId: number, dto: AddClassTeacherDto): Promise<{ - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }>; - updateClassTeacher(tenantId: number, classId: number, teacherId: number, dto: UpdateClassTeacherDto): Promise<{ - id: number; - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }>; - removeClassTeacher(tenantId: number, classId: number, teacherId: number): Promise<{ - message: string; - }>; - transferStudent(tenantId: number, studentId: number, dto: TransferStudentDto): Promise<{ - message: string; - }>; - getStudentClassHistory(tenantId: number, studentId: number): Promise<{ - id: number; - fromClass: { - id: number; - name: string; - grade: string; - }; - toClass: { - id: number; - name: string; - grade: string; - }; - reason: string; - operatedBy: number; - createdAt: Date; - }[]>; - private parseTimeToMinutes; - private isTimeOverlapping; - private checkScheduleConflict; - findSchedules(tenantId: number, query: QueryScheduleDto): Promise<{ - items: { - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - phone: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findSchedule(tenantId: number, id: number): Promise<{ - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - phone: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - createSchedule(tenantId: number, dto: CreateScheduleDto, userId: number): Promise<{ - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - updateSchedule(tenantId: number, id: number, dto: UpdateScheduleDto): Promise<{ - className: string; - courseName: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - cancelSchedule(tenantId: number, id: number): Promise<{ - message: string; - }>; - getTimetable(tenantId: number, query: TimetableQueryDto): Promise<{ - date: string; - weekDay: number; - schedules: any[]; - }[]>; - batchCreateSchedules(tenantId: number, schedules: Array<{ - classId: number; - courseId: number; - teacherId?: number; - scheduledDate: string; - scheduledTime?: string; - note?: string; - }>): Promise<{ - success: number; - failed: number; - results: any[]; - errors: any[]; - }>; - getScheduleTemplates(tenantId: number, query?: { - classId?: number; - courseId?: number; - }): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }[]>; - getScheduleTemplate(tenantId: number, id: number): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - grade: string; - }; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }>; - createScheduleTemplate(tenantId: number, data: { - name: string; - courseId: number; - classId?: number; - teacherId?: number; - scheduledTime?: string; - weekDay?: number; - duration?: number; - isDefault?: boolean; - }): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }>; - updateScheduleTemplate(tenantId: number, id: number, data: { - name?: string; - classId?: number; - teacherId?: number; - scheduledTime?: string; - weekDay?: number; - duration?: number; - isDefault?: boolean; - }): Promise<{ - courseName: string; - className: string; - teacherName: string; - teacher: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - name: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number | null; - courseId: number; - duration: number; - scheduledTime: string | null; - weekDay: number | null; - isDefault: boolean; - }>; - deleteScheduleTemplate(tenantId: number, id: number): Promise<{ - message: string; - }>; - applyScheduleTemplate(tenantId: number, templateId: number, data: { - scheduledDate: string; - classId?: number; - teacherId?: number; - }): Promise<{ - className: string; - courseName: string; - class: { - id: number; - name: string; - }; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - status: string; - createdAt: Date; - updatedAt: Date; - teacherId: number | null; - classId: number; - courseId: number; - createdBy: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/school/school.service.js b/reading-platform-backend/dist/src/modules/school/school.service.js deleted file mode 100644 index dd6575c..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.service.js +++ /dev/null @@ -1,1952 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var SchoolService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SchoolService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const bcrypt = __importStar(require("bcrypt")); -const xlsx = __importStar(require("xlsx")); -let SchoolService = SchoolService_1 = class SchoolService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(SchoolService_1.name); - } - parseJsonArray(value) { - if (!value) - return []; - if (typeof value === 'string') { - try { - return JSON.parse(value); - } - catch { - return []; - } - } - return Array.isArray(value) ? value : []; - } - async findTeachers(tenantId, query) { - const { page = 1, pageSize = 10, keyword, status } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId: tenantId, - }; - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { phone: { contains: keyword } }, - { loginAccount: { contains: keyword } }, - ]; - } - if (status) { - where.status = status; - } - const [items, total] = await Promise.all([ - this.prisma.teacher.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - classes: { - select: { - id: true, - name: true, - }, - }, - }, - }), - this.prisma.teacher.count({ where }), - ]); - const parsedItems = items.map((teacher) => ({ - ...teacher, - classIds: this.parseJsonArray(teacher.classIds), - classNames: teacher.classes.map((c) => c.name).join(', '), - passwordHash: undefined, - })); - return { - items: parsedItems, - total, - page: +page, - pageSize: +pageSize, - }; - } - async findTeacher(tenantId, id) { - const teacher = await this.prisma.teacher.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - classes: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - return { - ...teacher, - classIds: this.parseJsonArray(teacher.classIds), - classNames: teacher.classes.map((c) => c.name).join(', '), - passwordHash: undefined, - }; - } - async createTeacher(tenantId, dto) { - const tenant = await this.prisma.tenant.findUnique({ - where: { id: tenantId }, - }); - if (!tenant) { - throw new common_1.NotFoundException('学校不存在'); - } - const teacherCount = await this.prisma.teacher.count({ - where: { tenantId: tenantId }, - }); - if (teacherCount >= tenant.teacherQuota) { - throw new common_1.ForbiddenException('教师配额已满,无法添加更多教师'); - } - const existingTeacher = await this.prisma.teacher.findUnique({ - where: { loginAccount: dto.loginAccount }, - }); - if (existingTeacher) { - throw new common_1.ConflictException('登录账号已存在'); - } - const passwordHash = await bcrypt.hash(dto.password || '123456', 10); - const teacher = await this.prisma.teacher.create({ - data: { - tenantId: tenantId, - name: dto.name, - phone: dto.phone, - email: dto.email, - loginAccount: dto.loginAccount, - passwordHash: passwordHash, - classIds: JSON.stringify(dto.classIds || []), - status: 'ACTIVE', - }, - include: { - classes: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (dto.classIds && dto.classIds.length > 0) { - await this.prisma.class.updateMany({ - where: { - id: { in: dto.classIds }, - tenantId: tenantId, - }, - data: { - teacherId: teacher.id, - }, - }); - } - await this.prisma.tenant.update({ - where: { id: tenantId }, - data: { - teacherCount: { increment: 1 }, - }, - }); - this.logger.log(`Teacher created: ${teacher.id} by tenant ${tenantId}`); - return { - ...teacher, - classIds: this.parseJsonArray(teacher.classIds), - classNames: teacher.classes.map((c) => c.name).join(', '), - passwordHash: undefined, - }; - } - async updateTeacher(tenantId, id, dto) { - const existingTeacher = await this.prisma.teacher.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existingTeacher) { - throw new common_1.NotFoundException('教师不存在'); - } - const teacher = await this.prisma.teacher.update({ - where: { id: id }, - data: { - name: dto.name, - phone: dto.phone, - email: dto.email, - classIds: dto.classIds ? JSON.stringify(dto.classIds) : undefined, - }, - include: { - classes: { - select: { - id: true, - name: true, - }, - }, - }, - }); - await this.prisma.class.updateMany({ - where: { - teacherId: id, - tenantId: tenantId, - }, - data: { - teacherId: null, - }, - }); - if (dto.classIds && dto.classIds.length > 0) { - await this.prisma.class.updateMany({ - where: { - id: { in: dto.classIds }, - tenantId: tenantId, - }, - data: { - teacherId: id, - }, - }); - } - this.logger.log(`Teacher updated: ${id}`); - return { - ...teacher, - classIds: this.parseJsonArray(teacher.classIds), - classNames: teacher.classes.map((c) => c.name).join(', '), - passwordHash: undefined, - }; - } - async deleteTeacher(tenantId, id) { - const teacher = await this.prisma.teacher.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - await this.prisma.teacher.delete({ - where: { id: id }, - }); - await this.prisma.tenant.update({ - where: { id: tenantId }, - data: { - teacherCount: { decrement: 1 }, - }, - }); - this.logger.log(`Teacher deleted: ${id}`); - return { message: '删除成功' }; - } - async resetTeacherPassword(tenantId, id) { - const teacher = await this.prisma.teacher.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - const tempPassword = Math.random().toString(36).slice(-8); - const passwordHash = await bcrypt.hash(tempPassword, 10); - await this.prisma.teacher.update({ - where: { id: id }, - data: { - passwordHash: passwordHash, - }, - }); - this.logger.log(`Teacher password reset: ${id}`); - return { tempPassword }; - } - async findStudents(tenantId, query) { - const { page = 1, pageSize = 10, classId, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId: tenantId, - }; - if (classId) { - where.classId = +classId; - } - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { parentName: { contains: keyword } }, - { parentPhone: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.student.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - class: { - select: { - id: true, - name: true, - }, - }, - }, - }), - this.prisma.student.count({ where }), - ]); - const parsedItems = items.map((student) => ({ - ...student, - className: student.class?.name, - })); - return { - items: parsedItems, - total, - page: +page, - pageSize: +pageSize, - }; - } - async findStudent(tenantId, id) { - const student = await this.prisma.student.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - return { - ...student, - className: student.class?.name, - }; - } - async createStudent(tenantId, dto) { - const tenant = await this.prisma.tenant.findUnique({ - where: { id: tenantId }, - }); - if (!tenant) { - throw new common_1.NotFoundException('学校不存在'); - } - const studentCount = await this.prisma.student.count({ - where: { tenantId: tenantId }, - }); - if (studentCount >= tenant.studentQuota) { - throw new common_1.ForbiddenException('学生配额已满,无法添加更多学生'); - } - const classEntity = await this.prisma.class.findFirst({ - where: { - id: dto.classId, - tenantId: tenantId, - }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const student = await this.prisma.student.create({ - data: { - tenantId: tenantId, - classId: dto.classId, - name: dto.name, - gender: dto.gender, - birthDate: dto.birthDate ? new Date(dto.birthDate) : null, - parentName: dto.parentName, - parentPhone: dto.parentPhone, - }, - include: { - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - await this.prisma.class.update({ - where: { id: dto.classId }, - data: { - studentCount: { increment: 1 }, - }, - }); - await this.prisma.tenant.update({ - where: { id: tenantId }, - data: { - studentCount: { increment: 1 }, - }, - }); - this.logger.log(`Student created: ${student.id} by tenant ${tenantId}`); - return { - ...student, - className: student.class?.name, - }; - } - async updateStudent(tenantId, id, dto) { - const existingStudent = await this.prisma.student.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existingStudent) { - throw new common_1.NotFoundException('学生不存在'); - } - if (dto.classId && dto.classId !== existingStudent.classId) { - const newClass = await this.prisma.class.findFirst({ - where: { - id: dto.classId, - tenantId: tenantId, - }, - }); - if (!newClass) { - throw new common_1.NotFoundException('新班级不存在'); - } - } - const student = await this.prisma.student.update({ - where: { id: id }, - data: { - name: dto.name, - gender: dto.gender, - birthDate: dto.birthDate ? new Date(dto.birthDate) : undefined, - classId: dto.classId, - parentName: dto.parentName, - parentPhone: dto.parentPhone, - }, - include: { - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - if (dto.classId && dto.classId !== existingStudent.classId) { - await this.prisma.class.update({ - where: { id: existingStudent.classId }, - data: { - studentCount: { decrement: 1 }, - }, - }); - await this.prisma.class.update({ - where: { id: dto.classId }, - data: { - studentCount: { increment: 1 }, - }, - }); - } - this.logger.log(`Student updated: ${id}`); - return { - ...student, - className: student.class?.name, - }; - } - async deleteStudent(tenantId, id) { - const student = await this.prisma.student.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const classId = student.classId; - await this.prisma.student.delete({ - where: { id: id }, - }); - await this.prisma.class.update({ - where: { id: classId }, - data: { - studentCount: { decrement: 1 }, - }, - }); - await this.prisma.tenant.update({ - where: { id: tenantId }, - data: { - studentCount: { decrement: 1 }, - }, - }); - this.logger.log(`Student deleted: ${id}`); - return { message: '删除成功' }; - } - async importStudents(tenantId, studentsData, defaultClassId) { - let success = 0; - let failed = 0; - const errors = []; - for (let i = 0; i < studentsData.length; i++) { - const data = studentsData[i]; - try { - const classId = data.classId || defaultClassId; - if (!classId) { - throw new Error('未指定班级'); - } - await this.createStudent(tenantId, { - name: data.name, - gender: data.gender || '男', - birthDate: data.birthDate, - classId: classId, - parentName: data.parentName, - parentPhone: data.parentPhone, - }); - success++; - } - catch (error) { - failed++; - errors.push({ - row: i + 2, - message: error.message || '导入失败', - }); - } - } - this.logger.log(`Students imported: success=${success}, failed=${failed}`); - return { success, failed, errors }; - } - async parseStudentImportFile(file) { - const workbook = xlsx.read(file.buffer, { type: 'buffer' }); - const sheetName = workbook.SheetNames[0]; - const sheet = workbook.Sheets[sheetName]; - const data = xlsx.utils.sheet_to_json(sheet, { header: 1 }); - if (data.length < 2) { - throw new common_1.BadRequestException('文件内容为空或格式不正确'); - } - const students = []; - for (let i = 1; i < data.length; i++) { - const row = data[i]; - if (!row || row.length === 0 || !row[0]) - continue; - students.push({ - name: String(row[0] || '').trim(), - gender: String(row[1] || '男').trim(), - birthDate: row[2] ? this.formatDate(row[2]) : null, - classId: row[3] ? parseInt(String(row[3]), 10) : null, - parentName: String(row[4] || '').trim() || null, - parentPhone: String(row[5] || '').trim() || null, - }); - } - if (students.length === 0) { - throw new common_1.BadRequestException('未找到有效的学生数据'); - } - return students; - } - formatDate(value) { - if (!value) - return null; - if (typeof value === 'number') { - const date = xlsx.SSF.parse_date_code(value); - if (date) { - return `${date.y}-${String(date.m).padStart(2, '0')}-${String(date.d).padStart(2, '0')}`; - } - } - const dateStr = String(value).trim(); - const date = new Date(dateStr); - if (!isNaN(date.getTime())) { - return date.toISOString().split('T')[0]; - } - return null; - } - async findClasses(tenantId) { - const classes = await this.prisma.class.findMany({ - where: { - tenantId: tenantId, - }, - orderBy: { createdAt: 'desc' }, - include: { - teacher: { - select: { - id: true, - name: true, - }, - }, - classTeachers: { - include: { - teacher: { - select: { - id: true, - name: true, - phone: true, - }, - }, - }, - }, - _count: { - select: { - students: true, - lessons: true, - }, - }, - }, - }); - return classes.map((cls) => ({ - id: cls.id, - name: cls.name, - grade: cls.grade, - teacherId: cls.teacherId, - teacherName: cls.teacher?.name, - studentCount: cls._count.students, - lessonCount: cls._count.lessons, - createdAt: cls.createdAt, - updatedAt: cls.updatedAt, - teachers: cls.classTeachers.map((ct) => ({ - id: ct.id, - teacherId: ct.teacher.id, - teacherName: ct.teacher.name, - teacherPhone: ct.teacher.phone, - role: ct.role, - isPrimary: ct.isPrimary, - })), - })); - } - async findClass(tenantId, id) { - const classEntity = await this.prisma.class.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - teacher: { - select: { - id: true, - name: true, - }, - }, - students: { - select: { - id: true, - name: true, - gender: true, - birthDate: true, - parentName: true, - parentPhone: true, - lessonCount: true, - }, - }, - }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - return { - id: classEntity.id, - name: classEntity.name, - grade: classEntity.grade, - teacherId: classEntity.teacherId, - teacherName: classEntity.teacher?.name, - studentCount: classEntity.students.length, - lessonCount: classEntity.lessonCount, - students: classEntity.students, - createdAt: classEntity.createdAt, - updatedAt: classEntity.updatedAt, - }; - } - async findClassStudents(tenantId, classId, query) { - const { page = 1, pageSize = 20, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const classEntity = await this.prisma.class.findFirst({ - where: { - id: classId, - tenantId: tenantId, - }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const where = { - classId: classId, - tenantId: tenantId, - }; - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { parentName: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.student.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - }), - this.prisma.student.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async createClass(tenantId, dto) { - if (dto.teacherId) { - const teacher = await this.prisma.teacher.findFirst({ - where: { - id: dto.teacherId, - tenantId: tenantId, - }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - } - const classEntity = await this.prisma.class.create({ - data: { - tenantId: tenantId, - name: dto.name, - grade: dto.grade, - teacherId: dto.teacherId || null, - }, - include: { - teacher: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Class created: ${classEntity.id} by tenant ${tenantId}`); - return { - id: classEntity.id, - name: classEntity.name, - grade: classEntity.grade, - teacherId: classEntity.teacherId, - teacherName: classEntity.teacher?.name, - studentCount: 0, - lessonCount: 0, - }; - } - async updateClass(tenantId, id, dto) { - const existingClass = await this.prisma.class.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - }); - if (!existingClass) { - throw new common_1.NotFoundException('班级不存在'); - } - if (dto.teacherId !== undefined && dto.teacherId !== null) { - const teacher = await this.prisma.teacher.findFirst({ - where: { - id: dto.teacherId, - tenantId: tenantId, - }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - } - const classEntity = await this.prisma.class.update({ - where: { id: id }, - data: { - name: dto.name, - grade: dto.grade, - teacherId: dto.teacherId, - }, - include: { - teacher: { - select: { - id: true, - name: true, - }, - }, - _count: { - select: { - students: true, - lessons: true, - }, - }, - }, - }); - this.logger.log(`Class updated: ${id}`); - return { - id: classEntity.id, - name: classEntity.name, - grade: classEntity.grade, - teacherId: classEntity.teacherId, - teacherName: classEntity.teacher?.name, - studentCount: classEntity._count.students, - lessonCount: classEntity._count.lessons, - }; - } - async deleteClass(tenantId, id) { - const classEntity = await this.prisma.class.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - _count: { - select: { - students: true, - }, - }, - }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - if (classEntity._count.students > 0) { - throw new common_1.ForbiddenException('班级内还有学生,请先移除学生'); - } - await this.prisma.class.delete({ - where: { id: id }, - }); - this.logger.log(`Class deleted: ${id}`); - return { message: '删除成功' }; - } - async findParents(tenantId, query) { - const { page = 1, pageSize = 10, keyword, status } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId: tenantId, - }; - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { phone: { contains: keyword } }, - { loginAccount: { contains: keyword } }, - ]; - } - if (status) { - where.status = status; - } - const [items, total] = await Promise.all([ - this.prisma.parent.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - children: { - include: { - student: { - select: { - id: true, - name: true, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }, - }, - }), - this.prisma.parent.count({ where }), - ]); - return { - items: items.map((parent) => ({ - ...parent, - childrenCount: parent.children.length, - children: parent.children.map((c) => ({ - ...c.student, - relationship: c.relationship, - })), - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findParent(tenantId, id) { - const parent = await this.prisma.parent.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - children: { - include: { - student: { - select: { - id: true, - name: true, - gender: true, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }, - }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - return { - ...parent, - children: parent.children.map((c) => ({ - ...c.student, - relationship: c.relationship, - })), - }; - } - async createParent(tenantId, dto) { - const existing = await this.prisma.parent.findUnique({ - where: { loginAccount: dto.loginAccount }, - }); - if (existing) { - throw new common_1.ForbiddenException('登录账号已存在'); - } - const hashedPassword = await bcrypt.hash(dto.password, 10); - const parent = await this.prisma.parent.create({ - data: { - tenantId: tenantId, - name: dto.name, - phone: dto.phone, - email: dto.email, - loginAccount: dto.loginAccount, - passwordHash: hashedPassword, - status: 'ACTIVE', - }, - }); - this.logger.log(`Parent created: ${parent.id}`); - return parent; - } - async updateParent(tenantId, id, dto) { - const parent = await this.prisma.parent.findFirst({ - where: { id, tenantId }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - const updateData = { - name: dto.name, - phone: dto.phone, - email: dto.email, - status: dto.status, - }; - if (dto.password) { - updateData.passwordHash = await bcrypt.hash(dto.password, 10); - } - const updated = await this.prisma.parent.update({ - where: { id }, - data: updateData, - }); - this.logger.log(`Parent updated: ${id}`); - return updated; - } - async deleteParent(tenantId, id) { - const parent = await this.prisma.parent.findFirst({ - where: { id, tenantId }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - await this.prisma.parent.delete({ - where: { id }, - }); - this.logger.log(`Parent deleted: ${id}`); - return { message: '删除成功' }; - } - async resetParentPassword(tenantId, id) { - const parent = await this.prisma.parent.findFirst({ - where: { id, tenantId }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - const tempPassword = Math.random().toString(36).slice(-8); - const hashedPassword = await bcrypt.hash(tempPassword, 10); - await this.prisma.parent.update({ - where: { id }, - data: { passwordHash: hashedPassword }, - }); - this.logger.log(`Parent password reset: ${id}`); - return { tempPassword }; - } - async addChildToParent(tenantId, parentId, studentId, relationship) { - const parent = await this.prisma.parent.findFirst({ - where: { id: parentId, tenantId }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - const student = await this.prisma.student.findFirst({ - where: { id: studentId, tenantId }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const existing = await this.prisma.parentStudent.findUnique({ - where: { - parentId_studentId: { - parentId, - studentId, - }, - }, - }); - if (existing) { - throw new common_1.ForbiddenException('该学生已与此家长关联'); - } - const relation = await this.prisma.parentStudent.create({ - data: { - parentId, - studentId, - relationship, - }, - include: { - student: { - select: { - id: true, - name: true, - }, - }, - }, - }); - this.logger.log(`Child ${studentId} added to parent ${parentId}`); - return relation; - } - async removeChildFromParent(tenantId, parentId, studentId) { - const parent = await this.prisma.parent.findFirst({ - where: { id: parentId, tenantId }, - }); - if (!parent) { - throw new common_1.NotFoundException('家长不存在'); - } - await this.prisma.parentStudent.delete({ - where: { - parentId_studentId: { - parentId, - studentId, - }, - }, - }); - this.logger.log(`Child ${studentId} removed from parent ${parentId}`); - return { message: '解除关联成功' }; - } - async findCourses(tenantId) { - const tenantCourses = await this.prisma.tenantCourse.findMany({ - where: { - tenantId, - authorized: true, - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - coverImagePath: true, - gradeTags: true, - domainTags: true, - duration: true, - usageCount: true, - status: true, - }, - }, - }, - }); - return tenantCourses.map((tc) => ({ - id: tc.course.id, - name: tc.course.name, - pictureBookName: tc.course.pictureBookName, - pictureUrl: tc.course.coverImagePath, - gradeTags: this.parseJsonArray(tc.course.gradeTags), - domainTags: this.parseJsonArray(tc.course.domainTags), - duration: tc.course.duration || 25, - usageCount: tc.course.usageCount || 0, - authorized: tc.authorized, - })); - } - async findCourse(tenantId, courseId) { - const course = await this.prisma.course.findUnique({ - where: { id: courseId }, - include: { - resources: { - orderBy: { sortOrder: 'asc' }, - }, - scripts: { - orderBy: { sortOrder: 'asc' }, - include: { - pages: { - orderBy: { pageNumber: 'asc' }, - }, - }, - }, - activities: { - orderBy: { sortOrder: 'asc' }, - }, - tenantCourses: { - where: { tenantId }, - }, - }, - }); - if (!course) { - throw new common_1.NotFoundException(`课程 #${courseId} 不存在`); - } - if (course.status !== 'PUBLISHED') { - throw new common_1.ForbiddenException('该课程未发布'); - } - const tenantCourse = course.tenantCourses.find((tc) => tc.tenantId === tenantId); - if (!tenantCourse || !tenantCourse.authorized) { - throw new common_1.ForbiddenException('您的学校未获得此课程的授权'); - } - const teacherCount = await this.prisma.lesson.groupBy({ - by: ['teacherId'], - where: { - courseId, - tenantId, - }, - }); - return { - ...course, - authorized: true, - gradeTags: JSON.parse(course.gradeTags || '[]'), - domainTags: JSON.parse(course.domainTags || '[]'), - ebookPaths: course.ebookPaths ? JSON.parse(course.ebookPaths) : null, - audioPaths: course.audioPaths ? JSON.parse(course.audioPaths) : null, - videoPaths: course.videoPaths ? JSON.parse(course.videoPaths) : null, - otherResources: course.otherResources ? JSON.parse(course.otherResources) : null, - posterPaths: course.posterPaths ? JSON.parse(course.posterPaths) : null, - tenantCourses: undefined, - teacherCount: teacherCount.length, - scripts: course.scripts.map((script) => ({ - ...script, - interactionPoints: script.interactionPoints ? JSON.parse(script.interactionPoints) : null, - resourceIds: script.resourceIds ? JSON.parse(script.resourceIds) : null, - pages: script.pages?.map((page) => ({ - ...page, - resourceIds: page.resourceIds ? JSON.parse(page.resourceIds) : null, - })), - })), - activities: course.activities.map((activity) => ({ - ...activity, - onlineMaterials: activity.onlineMaterials ? JSON.parse(activity.onlineMaterials) : null, - objectives: activity.objectives ? JSON.parse(activity.objectives) : null, - })), - }; - } - async findClassTeachers(tenantId, classId) { - const classEntity = await this.prisma.class.findFirst({ - where: { id: classId, tenantId }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { classId }, - include: { - teacher: { - select: { - id: true, - name: true, - phone: true, - email: true, - }, - }, - }, - orderBy: [ - { isPrimary: 'desc' }, - { createdAt: 'asc' }, - ], - }); - return classTeachers.map((ct) => ({ - id: ct.id, - teacherId: ct.teacher.id, - teacherName: ct.teacher.name, - teacherPhone: ct.teacher.phone, - teacherEmail: ct.teacher.email, - role: ct.role, - isPrimary: ct.isPrimary, - createdAt: ct.createdAt, - })); - } - async addClassTeacher(tenantId, classId, dto) { - const classEntity = await this.prisma.class.findFirst({ - where: { id: classId, tenantId }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const teacher = await this.prisma.teacher.findFirst({ - where: { id: dto.teacherId, tenantId }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - const existing = await this.prisma.classTeacher.findUnique({ - where: { - classId_teacherId: { classId, teacherId: dto.teacherId }, - }, - }); - if (existing) { - throw new common_1.ConflictException('该教师已在此班级中'); - } - if (dto.isPrimary) { - await this.prisma.classTeacher.updateMany({ - where: { classId, isPrimary: true }, - data: { isPrimary: false }, - }); - } - const classTeacher = await this.prisma.classTeacher.create({ - data: { - classId, - teacherId: dto.teacherId, - role: dto.role, - isPrimary: dto.isPrimary || false, - }, - include: { - teacher: { - select: { - id: true, - name: true, - phone: true, - }, - }, - }, - }); - if (dto.role === 'MAIN' || dto.isPrimary) { - await this.prisma.class.update({ - where: { id: classId }, - data: { teacherId: dto.teacherId }, - }); - } - this.logger.log(`Teacher ${dto.teacherId} added to class ${classId} as ${dto.role}`); - return { - id: classTeacher.id, - teacherId: classTeacher.teacher.id, - teacherName: classTeacher.teacher.name, - teacherPhone: classTeacher.teacher.phone, - role: classTeacher.role, - isPrimary: classTeacher.isPrimary, - }; - } - async updateClassTeacher(tenantId, classId, teacherId, dto) { - const classEntity = await this.prisma.class.findFirst({ - where: { id: classId, tenantId }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const classTeacher = await this.prisma.classTeacher.findUnique({ - where: { - classId_teacherId: { classId, teacherId }, - }, - }); - if (!classTeacher) { - throw new common_1.NotFoundException('该教师不在此班级中'); - } - if (dto.isPrimary) { - await this.prisma.classTeacher.updateMany({ - where: { classId, isPrimary: true }, - data: { isPrimary: false }, - }); - } - const updated = await this.prisma.classTeacher.update({ - where: { - classId_teacherId: { classId, teacherId }, - }, - data: { - role: dto.role, - isPrimary: dto.isPrimary, - }, - include: { - teacher: { - select: { - id: true, - name: true, - phone: true, - }, - }, - }, - }); - if (dto.role === 'MAIN' || dto.isPrimary) { - await this.prisma.class.update({ - where: { id: classId }, - data: { teacherId }, - }); - } - this.logger.log(`Teacher ${teacherId} updated in class ${classId}`); - return { - id: updated.id, - teacherId: updated.teacher.id, - teacherName: updated.teacher.name, - teacherPhone: updated.teacher.phone, - role: updated.role, - isPrimary: updated.isPrimary, - }; - } - async removeClassTeacher(tenantId, classId, teacherId) { - const classEntity = await this.prisma.class.findFirst({ - where: { id: classId, tenantId }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const classTeacher = await this.prisma.classTeacher.findUnique({ - where: { - classId_teacherId: { classId, teacherId }, - }, - }); - if (!classTeacher) { - throw new common_1.NotFoundException('该教师不在此班级中'); - } - await this.prisma.classTeacher.delete({ - where: { - classId_teacherId: { classId, teacherId }, - }, - }); - if (classEntity.teacherId === teacherId) { - const nextMainTeacher = await this.prisma.classTeacher.findFirst({ - where: { classId, role: 'MAIN' }, - orderBy: { createdAt: 'asc' }, - }); - await this.prisma.class.update({ - where: { id: classId }, - data: { teacherId: nextMainTeacher?.teacherId || null }, - }); - } - this.logger.log(`Teacher ${teacherId} removed from class ${classId}`); - return { message: '移除成功' }; - } - async transferStudent(tenantId, studentId, dto) { - const student = await this.prisma.student.findFirst({ - where: { id: studentId, tenantId }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const toClass = await this.prisma.class.findFirst({ - where: { id: dto.toClassId, tenantId }, - }); - if (!toClass) { - throw new common_1.NotFoundException('目标班级不存在'); - } - if (student.classId === dto.toClassId) { - throw new common_1.BadRequestException('学生已在此班级中'); - } - const fromClassId = student.classId; - await this.prisma.$transaction(async (tx) => { - await tx.student.update({ - where: { id: studentId }, - data: { classId: dto.toClassId }, - }); - await tx.class.update({ - where: { id: fromClassId }, - data: { studentCount: { decrement: 1 } }, - }); - await tx.class.update({ - where: { id: dto.toClassId }, - data: { studentCount: { increment: 1 } }, - }); - await tx.studentClassHistory.create({ - data: { - studentId, - fromClassId, - toClassId: dto.toClassId, - reason: dto.reason, - operatedBy: null, - }, - }); - }); - this.logger.log(`Student ${studentId} transferred from class ${fromClassId} to ${dto.toClassId}`); - return { message: '调班成功' }; - } - async getStudentClassHistory(tenantId, studentId) { - const student = await this.prisma.student.findFirst({ - where: { id: studentId, tenantId }, - }); - if (!student) { - throw new common_1.NotFoundException('学生不存在'); - } - const history = await this.prisma.studentClassHistory.findMany({ - where: { studentId }, - include: { - fromClass: { - select: { id: true, name: true, grade: true }, - }, - toClass: { - select: { id: true, name: true, grade: true }, - }, - }, - orderBy: { createdAt: 'desc' }, - }); - return history.map((h) => ({ - id: h.id, - fromClass: h.fromClass ? { id: h.fromClass.id, name: h.fromClass.name, grade: h.fromClass.grade } : null, - toClass: { id: h.toClass.id, name: h.toClass.name, grade: h.toClass.grade }, - reason: h.reason, - operatedBy: h.operatedBy, - createdAt: h.createdAt, - })); - } - parseTimeToMinutes(timeStr) { - const [hours, minutes] = timeStr.split(':').map(Number); - return hours * 60 + minutes; - } - isTimeOverlapping(time1, time2) { - const [start1, end1] = time1.split('-').map(t => this.parseTimeToMinutes(t.trim())); - const [start2, end2] = time2.split('-').map(t => this.parseTimeToMinutes(t.trim())); - return start1 < end2 && start2 < end1; - } - async checkScheduleConflict(teacherId, scheduledDate, scheduledTime, excludeScheduleId) { - const dateStart = new Date(scheduledDate + 'T00:00:00.000Z'); - const dateEnd = new Date(scheduledDate + 'T23:59:59.999Z'); - const existingSchedules = await this.prisma.schedulePlan.findMany({ - where: { - teacherId, - scheduledDate: { - gte: dateStart, - lte: dateEnd, - }, - status: 'ACTIVE', - ...(excludeScheduleId && { id: { not: excludeScheduleId } }), - }, - include: { - class: { select: { name: true } }, - course: { select: { name: true } }, - }, - }); - for (const schedule of existingSchedules) { - if (schedule.scheduledTime && this.isTimeOverlapping(scheduledTime, schedule.scheduledTime)) { - return { - courseName: schedule.course.name, - className: schedule.class.name, - scheduledTime: schedule.scheduledTime, - }; - } - } - return null; - } - async findSchedules(tenantId, query) { - const { page = 1, pageSize = 20, classId, teacherId, courseId, startDate, endDate, status, source } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId, - }; - if (classId) - where.classId = classId; - if (teacherId) - where.teacherId = teacherId; - if (courseId) - where.courseId = courseId; - if (status) - where.status = status; - if (source) - where.source = source; - if (startDate || endDate) { - where.scheduledDate = {}; - if (startDate) - where.scheduledDate.gte = new Date(startDate); - if (endDate) - where.scheduledDate.lte = new Date(endDate); - } - const [items, total] = await Promise.all([ - this.prisma.schedulePlan.findMany({ - where, - skip, - take, - orderBy: { scheduledDate: 'asc' }, - include: { - class: { select: { id: true, name: true, grade: true } }, - course: { select: { id: true, name: true, pictureBookName: true, duration: true } }, - teacher: { select: { id: true, name: true, phone: true } }, - }, - }), - this.prisma.schedulePlan.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - className: item.class.name, - courseName: item.course.name, - teacherName: item.teacher?.name, - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findSchedule(tenantId, id) { - const schedule = await this.prisma.schedulePlan.findFirst({ - where: { id, tenantId }, - include: { - class: { select: { id: true, name: true, grade: true } }, - course: { select: { id: true, name: true, pictureBookName: true, duration: true } }, - teacher: { select: { id: true, name: true, phone: true } }, - }, - }); - if (!schedule) { - throw new common_1.NotFoundException('排课计划不存在'); - } - return { - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - teacherName: schedule.teacher?.name, - }; - } - async createSchedule(tenantId, dto, userId) { - const classEntity = await this.prisma.class.findFirst({ - where: { id: dto.classId, tenantId }, - }); - if (!classEntity) { - throw new common_1.NotFoundException('班级不存在'); - } - const tenantCourse = await this.prisma.tenantCourse.findFirst({ - where: { tenantId, courseId: dto.courseId, authorized: true }, - }); - if (!tenantCourse) { - throw new common_1.ForbiddenException('该课程未授权或不存在'); - } - if (dto.teacherId) { - const teacher = await this.prisma.teacher.findFirst({ - where: { id: dto.teacherId, tenantId }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - if (dto.scheduledDate && dto.scheduledTime) { - const conflict = await this.checkScheduleConflict(dto.teacherId, dto.scheduledDate, dto.scheduledTime); - if (conflict) { - throw new common_1.ConflictException(`时间冲突:该教师在 ${conflict.scheduledTime} 已有排课「${conflict.courseName}」(${conflict.className}),请选择其他时间段`); - } - } - } - const schedule = await this.prisma.schedulePlan.create({ - data: { - tenantId, - classId: dto.classId, - courseId: dto.courseId, - teacherId: dto.teacherId, - scheduledDate: dto.scheduledDate ? new Date(dto.scheduledDate) : null, - scheduledTime: dto.scheduledTime, - weekDay: dto.weekDay, - repeatType: dto.repeatType, - repeatEndDate: dto.repeatEndDate ? new Date(dto.repeatEndDate) : null, - source: 'SCHOOL', - createdBy: userId, - note: dto.note, - status: 'ACTIVE', - }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true } }, - teacher: { select: { id: true, name: true } }, - }, - }); - this.logger.log(`Schedule created: ${schedule.id} by user ${userId}`); - return { - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - teacherName: schedule.teacher?.name, - }; - } - async updateSchedule(tenantId, id, dto) { - const schedule = await this.prisma.schedulePlan.findFirst({ - where: { id, tenantId }, - }); - if (!schedule) { - throw new common_1.NotFoundException('排课计划不存在'); - } - if (dto.teacherId !== undefined) { - if (dto.teacherId) { - const teacher = await this.prisma.teacher.findFirst({ - where: { id: dto.teacherId, tenantId }, - }); - if (!teacher) { - throw new common_1.NotFoundException('教师不存在'); - } - } - } - const updated = await this.prisma.schedulePlan.update({ - where: { id }, - data: { - teacherId: dto.teacherId, - scheduledDate: dto.scheduledDate ? new Date(dto.scheduledDate) : undefined, - scheduledTime: dto.scheduledTime, - weekDay: dto.weekDay, - repeatType: dto.repeatType, - repeatEndDate: dto.repeatEndDate ? new Date(dto.repeatEndDate) : undefined, - note: dto.note, - status: dto.status, - }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true } }, - teacher: { select: { id: true, name: true } }, - }, - }); - this.logger.log(`Schedule updated: ${id}`); - return { - ...updated, - className: updated.class.name, - courseName: updated.course.name, - teacherName: updated.teacher?.name, - }; - } - async cancelSchedule(tenantId, id) { - const schedule = await this.prisma.schedulePlan.findFirst({ - where: { id, tenantId }, - }); - if (!schedule) { - throw new common_1.NotFoundException('排课计划不存在'); - } - await this.prisma.schedulePlan.update({ - where: { id }, - data: { status: 'CANCELLED' }, - }); - this.logger.log(`Schedule cancelled: ${id}`); - return { message: '取消成功' }; - } - async getTimetable(tenantId, query) { - const { startDate, endDate, classId, teacherId } = query; - const where = { - tenantId, - status: 'ACTIVE', - scheduledDate: { - gte: new Date(startDate), - lte: new Date(endDate), - }, - }; - if (classId) - where.classId = classId; - if (teacherId) - where.teacherId = teacherId; - const schedules = await this.prisma.schedulePlan.findMany({ - where, - orderBy: [{ scheduledDate: 'asc' }, { scheduledTime: 'asc' }], - include: { - class: { select: { id: true, name: true, grade: true } }, - course: { select: { id: true, name: true, pictureBookName: true, duration: true } }, - teacher: { select: { id: true, name: true } }, - }, - }); - const timetable = {}; - const start = new Date(startDate); - const end = new Date(endDate); - for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) { - const dateStr = d.toISOString().split('T')[0]; - timetable[dateStr] = []; - } - schedules.forEach((schedule) => { - const dateStr = schedule.scheduledDate.toISOString().split('T')[0]; - if (timetable[dateStr]) { - timetable[dateStr].push({ - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - teacherName: schedule.teacher?.name, - }); - } - }); - return Object.entries(timetable).map(([date, items]) => ({ - date, - weekDay: new Date(date).getDay(), - schedules: items, - })); - } - async batchCreateSchedules(tenantId, schedules) { - const results = []; - const errors = []; - for (let i = 0; i < schedules.length; i++) { - const item = schedules[i]; - try { - const classEntity = await this.prisma.class.findFirst({ - where: { id: item.classId, tenantId }, - }); - if (!classEntity) { - errors.push({ index: i, message: '班级不存在或无权限' }); - continue; - } - const tenantCourse = await this.prisma.tenantCourse.findFirst({ - where: { tenantId, courseId: item.courseId, authorized: true }, - }); - if (!tenantCourse) { - errors.push({ index: i, message: '课程未授权或不存在' }); - continue; - } - if (item.teacherId) { - const teacher = await this.prisma.teacher.findFirst({ - where: { id: item.teacherId, tenantId }, - }); - if (!teacher) { - errors.push({ index: i, message: '教师不存在' }); - continue; - } - } - const schedule = await this.prisma.schedulePlan.create({ - data: { - tenantId, - classId: item.classId, - courseId: item.courseId, - teacherId: item.teacherId, - scheduledDate: new Date(item.scheduledDate), - scheduledTime: item.scheduledTime, - repeatType: 'NONE', - source: 'SCHOOL', - createdBy: 0, - status: 'ACTIVE', - note: item.note, - }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true } }, - teacher: { select: { id: true, name: true } }, - }, - }); - results.push({ - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - teacherName: schedule.teacher?.name, - }); - } - catch (error) { - errors.push({ index: i, message: error.message || '创建失败' }); - } - } - this.logger.log(`Batch create schedules: ${results.length} success, ${errors.length} failed`); - return { - success: results.length, - failed: errors.length, - results, - errors, - }; - } - async getScheduleTemplates(tenantId, query) { - const where = { tenantId }; - if (query?.classId) { - where.classId = query.classId; - } - if (query?.courseId) { - where.courseId = query.courseId; - } - const templates = await this.prisma.scheduleTemplate.findMany({ - where, - orderBy: [ - { isDefault: 'desc' }, - { createdAt: 'desc' }, - ], - include: { - course: { - select: { id: true, name: true, pictureBookName: true }, - }, - class: { - select: { id: true, name: true, grade: true }, - }, - teacher: { - select: { id: true, name: true }, - }, - }, - }); - return templates.map((t) => ({ - ...t, - courseName: t.course?.name, - className: t.class?.name, - teacherName: t.teacher?.name, - })); - } - async getScheduleTemplate(tenantId, id) { - const template = await this.prisma.scheduleTemplate.findFirst({ - where: { id, tenantId }, - include: { - course: { - select: { id: true, name: true, pictureBookName: true, duration: true }, - }, - class: { - select: { id: true, name: true, grade: true }, - }, - teacher: { - select: { id: true, name: true }, - }, - }, - }); - if (!template) { - throw new common_1.NotFoundException('模板不存在'); - } - return { - ...template, - courseName: template.course?.name, - className: template.class?.name, - teacherName: template.teacher?.name, - }; - } - async createScheduleTemplate(tenantId, data) { - const tenantCourse = await this.prisma.tenantCourse.findFirst({ - where: { tenantId, courseId: data.courseId, authorized: true }, - }); - if (!tenantCourse) { - throw new common_1.BadRequestException('该课程未授权或不存在'); - } - if (data.isDefault) { - await this.prisma.scheduleTemplate.updateMany({ - where: { - tenantId, - courseId: data.courseId, - isDefault: true, - }, - data: { isDefault: false }, - }); - } - const template = await this.prisma.scheduleTemplate.create({ - data: { - tenantId, - name: data.name, - courseId: data.courseId, - classId: data.classId, - teacherId: data.teacherId, - scheduledTime: data.scheduledTime, - weekDay: data.weekDay, - duration: data.duration || 25, - isDefault: data.isDefault || false, - }, - include: { - course: { select: { id: true, name: true } }, - class: { select: { id: true, name: true } }, - teacher: { select: { id: true, name: true } }, - }, - }); - this.logger.log(`Schedule template created: ${template.id}`); - return { - ...template, - courseName: template.course?.name, - className: template.class?.name, - teacherName: template.teacher?.name, - }; - } - async updateScheduleTemplate(tenantId, id, data) { - const template = await this.prisma.scheduleTemplate.findFirst({ - where: { id, tenantId }, - }); - if (!template) { - throw new common_1.NotFoundException('模板不存在'); - } - if (data.isDefault) { - await this.prisma.scheduleTemplate.updateMany({ - where: { - tenantId, - courseId: template.courseId, - isDefault: true, - id: { not: id }, - }, - data: { isDefault: false }, - }); - } - const updated = await this.prisma.scheduleTemplate.update({ - where: { id }, - data: { - name: data.name, - classId: data.classId, - teacherId: data.teacherId, - scheduledTime: data.scheduledTime, - weekDay: data.weekDay, - duration: data.duration, - isDefault: data.isDefault, - }, - include: { - course: { select: { id: true, name: true } }, - class: { select: { id: true, name: true } }, - teacher: { select: { id: true, name: true } }, - }, - }); - return { - ...updated, - courseName: updated.course?.name, - className: updated.class?.name, - teacherName: updated.teacher?.name, - }; - } - async deleteScheduleTemplate(tenantId, id) { - const template = await this.prisma.scheduleTemplate.findFirst({ - where: { id, tenantId }, - }); - if (!template) { - throw new common_1.NotFoundException('模板不存在'); - } - await this.prisma.scheduleTemplate.delete({ - where: { id }, - }); - this.logger.log(`Schedule template deleted: ${id}`); - return { message: '删除成功' }; - } - async applyScheduleTemplate(tenantId, templateId, data) { - const template = await this.prisma.scheduleTemplate.findFirst({ - where: { id: templateId, tenantId }, - }); - if (!template) { - throw new common_1.NotFoundException('模板不存在'); - } - const schedule = await this.prisma.schedulePlan.create({ - data: { - tenantId, - classId: data.classId || template.classId, - courseId: template.courseId, - teacherId: data.teacherId || template.teacherId, - scheduledDate: new Date(data.scheduledDate), - scheduledTime: template.scheduledTime, - repeatType: 'NONE', - source: 'SCHOOL', - createdBy: 0, - status: 'ACTIVE', - }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true } }, - }, - }); - this.logger.log(`Schedule created from template ${templateId}: ${schedule.id}`); - return { - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - }; - } -}; -exports.SchoolService = SchoolService; -exports.SchoolService = SchoolService = SchoolService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], SchoolService); -//# sourceMappingURL=school.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/school.service.js.map b/reading-platform-backend/dist/src/modules/school/school.service.js.map deleted file mode 100644 index faa5b13..0000000 --- a/reading-platform-backend/dist/src/modules/school/school.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"school.service.js","sourceRoot":"","sources":["../../../../src/modules/school/school.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/settings.controller.d.ts b/reading-platform-backend/dist/src/modules/school/settings.controller.d.ts deleted file mode 100644 index 0f03145..0000000 --- a/reading-platform-backend/dist/src/modules/school/settings.controller.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { SettingsService } from './settings.service'; -export declare class SettingsController { - private readonly settingsService; - constructor(settingsService: SettingsService); - getSettings(req: any): Promise<{ - id: number; - tenantId: number; - createdAt: Date; - updatedAt: Date; - address: string | null; - schoolName: string | null; - schoolLogo: string | null; - notifyOnLesson: boolean; - notifyOnTask: boolean; - notifyOnGrowth: boolean; - }>; - updateSettings(req: any, data: { - schoolName?: string; - schoolLogo?: string; - address?: string; - notifyOnLesson?: boolean; - notifyOnTask?: boolean; - notifyOnGrowth?: boolean; - }): Promise<{ - id: number; - tenantId: number; - createdAt: Date; - updatedAt: Date; - address: string | null; - schoolName: string | null; - schoolLogo: string | null; - notifyOnLesson: boolean; - notifyOnTask: boolean; - notifyOnGrowth: boolean; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/school/settings.controller.js b/reading-platform-backend/dist/src/modules/school/settings.controller.js deleted file mode 100644 index e99c64b..0000000 --- a/reading-platform-backend/dist/src/modules/school/settings.controller.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SettingsController = void 0; -const common_1 = require("@nestjs/common"); -const settings_service_1 = require("./settings.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let SettingsController = class SettingsController { - constructor(settingsService) { - this.settingsService = settingsService; - } - getSettings(req) { - return this.settingsService.getSettings(req.user.tenantId); - } - updateSettings(req, data) { - return this.settingsService.updateSettings(req.user.tenantId, data); - } -}; -exports.SettingsController = SettingsController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SettingsController.prototype, "getSettings", null); -__decorate([ - (0, common_1.Put)(), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SettingsController.prototype, "updateSettings", null); -exports.SettingsController = SettingsController = __decorate([ - (0, common_1.Controller)('school/settings'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [settings_service_1.SettingsService]) -], SettingsController); -//# sourceMappingURL=settings.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/settings.controller.js.map b/reading-platform-backend/dist/src/modules/school/settings.controller.js.map deleted file mode 100644 index 923c9c1..0000000 --- a/reading-platform-backend/dist/src/modules/school/settings.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"settings.controller.js","sourceRoot":"","sources":["../../../../src/modules/school/settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,yDAAqD;AACrD,oEAA+D;AAC/D,8DAA0D;AAC1D,0EAA6D;AAKtD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAGjE,WAAW,CAAY,GAAQ;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAGD,cAAc,CACD,GAAQ,EACX,IAOP;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;CACF,CAAA;AAtBY,gDAAkB;AAI7B;IADC,IAAA,YAAG,GAAE;IACO,WAAA,IAAA,gBAAO,GAAE,CAAA;;;;qDAErB;AAGD;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,gBAAO,GAAE,CAAA;IACT,WAAA,IAAA,aAAI,GAAE,CAAA;;;;wDAUR;6BArBU,kBAAkB;IAH9B,IAAA,mBAAU,EAAC,iBAAiB,CAAC;IAC7B,IAAA,kBAAS,EAAC,6BAAY,EAAE,wBAAU,CAAC;IACnC,IAAA,uBAAK,EAAC,QAAQ,CAAC;qCAEgC,kCAAe;GADlD,kBAAkB,CAsB9B"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/settings.service.d.ts b/reading-platform-backend/dist/src/modules/school/settings.service.d.ts deleted file mode 100644 index eccd8ec..0000000 --- a/reading-platform-backend/dist/src/modules/school/settings.service.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export declare class SettingsService { - private prisma; - constructor(prisma: PrismaService); - getSettings(tenantId: number): Promise<{ - id: number; - tenantId: number; - createdAt: Date; - updatedAt: Date; - address: string | null; - schoolName: string | null; - schoolLogo: string | null; - notifyOnLesson: boolean; - notifyOnTask: boolean; - notifyOnGrowth: boolean; - }>; - updateSettings(tenantId: number, data: { - schoolName?: string; - schoolLogo?: string; - address?: string; - notifyOnLesson?: boolean; - notifyOnTask?: boolean; - notifyOnGrowth?: boolean; - }): Promise<{ - id: number; - tenantId: number; - createdAt: Date; - updatedAt: Date; - address: string | null; - schoolName: string | null; - schoolLogo: string | null; - notifyOnLesson: boolean; - notifyOnTask: boolean; - notifyOnGrowth: boolean; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/school/settings.service.js b/reading-platform-backend/dist/src/modules/school/settings.service.js deleted file mode 100644 index 1033b17..0000000 --- a/reading-platform-backend/dist/src/modules/school/settings.service.js +++ /dev/null @@ -1,92 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SettingsService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let SettingsService = class SettingsService { - constructor(prisma) { - this.prisma = prisma; - } - async getSettings(tenantId) { - let settings = await this.prisma.systemSettings.findUnique({ - where: { tenantId }, - }); - if (!settings) { - const tenant = await this.prisma.tenant.findUnique({ - where: { id: tenantId }, - }); - if (!tenant) { - throw new common_1.NotFoundException('学校不存在'); - } - settings = await this.prisma.systemSettings.create({ - data: { - tenantId, - schoolName: tenant.name, - schoolLogo: tenant.logoUrl, - address: tenant.address, - notifyOnLesson: true, - notifyOnTask: true, - notifyOnGrowth: false, - }, - }); - } - return settings; - } - async updateSettings(tenantId, data) { - let settings = await this.prisma.systemSettings.findUnique({ - where: { tenantId }, - }); - if (!settings) { - settings = await this.prisma.systemSettings.create({ - data: { - tenantId, - schoolName: data.schoolName, - schoolLogo: data.schoolLogo, - address: data.address, - notifyOnLesson: data.notifyOnLesson ?? true, - notifyOnTask: data.notifyOnTask ?? true, - notifyOnGrowth: data.notifyOnGrowth ?? false, - }, - }); - } - else { - settings = await this.prisma.systemSettings.update({ - where: { tenantId }, - data: { - schoolName: data.schoolName, - schoolLogo: data.schoolLogo, - address: data.address, - notifyOnLesson: data.notifyOnLesson, - notifyOnTask: data.notifyOnTask, - notifyOnGrowth: data.notifyOnGrowth, - }, - }); - } - if (data.schoolName || data.schoolLogo || data.address) { - await this.prisma.tenant.update({ - where: { id: tenantId }, - data: { - name: data.schoolName, - logoUrl: data.schoolLogo, - address: data.address, - }, - }); - } - return settings; - } -}; -exports.SettingsService = SettingsService; -exports.SettingsService = SettingsService = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], SettingsService); -//# sourceMappingURL=settings.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/settings.service.js.map b/reading-platform-backend/dist/src/modules/school/settings.service.js.map deleted file mode 100644 index f1e1aae..0000000 --- a/reading-platform-backend/dist/src/modules/school/settings.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"settings.service.js","sourceRoot":"","sources":["../../../../src/modules/school/settings.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/stats.controller.d.ts b/reading-platform-backend/dist/src/modules/school/stats.controller.d.ts deleted file mode 100644 index b2f3385..0000000 --- a/reading-platform-backend/dist/src/modules/school/stats.controller.d.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { StatsService } from './stats.service'; -export declare class StatsController { - private readonly statsService; - constructor(statsService: StatsService); - getStats(req: any): Promise<{ - teacherCount: number; - studentCount: number; - classCount: number; - lessonCount: number; - }>; - getActiveTeachers(req: any, limit?: string): Promise<{ - id: number; - name: string; - lessonCount: number; - }[]>; - getCourseUsageStats(req: any): Promise<{ - courseId: number; - courseName: string; - usageCount: number; - }[]>; - getRecentActivities(req: any, limit?: string): Promise<{ - id: number; - type: string; - title: string; - time: Date; - }[]>; - getLessonTrend(req: any, months?: string): Promise; - getCourseDistribution(req: any): Promise; - getReportOverview(req: any): Promise<{ - totalLessons: number; - activeTeacherCount: number; - usedCourseCount: number; - avgRating: number; - }>; - getTeacherReports(req: any): Promise<{ - id: number; - name: string; - lessonCount: number; - courseCount: number; - feedbackCount: number; - avgRating: number; - }[]>; - getCourseReports(req: any): Promise<{ - id: number; - name: string; - lessonCount: number; - teacherCount: number; - studentCount: number; - avgRating: number; - }[]>; - getStudentReports(req: any): Promise<{ - id: number; - name: string; - className: string; - lessonCount: number; - avgFocus: number; - avgParticipation: number; - }[]>; -} diff --git a/reading-platform-backend/dist/src/modules/school/stats.controller.js b/reading-platform-backend/dist/src/modules/school/stats.controller.js deleted file mode 100644 index 5f1d24b..0000000 --- a/reading-platform-backend/dist/src/modules/school/stats.controller.js +++ /dev/null @@ -1,136 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StatsController = void 0; -const common_1 = require("@nestjs/common"); -const stats_service_1 = require("./stats.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let StatsController = class StatsController { - constructor(statsService) { - this.statsService = statsService; - } - getStats(req) { - return this.statsService.getSchoolStats(req.user.tenantId); - } - getActiveTeachers(req, limit) { - return this.statsService.getActiveTeachers(req.user.tenantId, limit ? parseInt(limit, 10) : 5); - } - getCourseUsageStats(req) { - return this.statsService.getCourseUsageStats(req.user.tenantId); - } - getRecentActivities(req, limit) { - return this.statsService.getRecentActivities(req.user.tenantId, limit ? parseInt(limit, 10) : 10); - } - getLessonTrend(req, months) { - return this.statsService.getLessonTrend(req.user.tenantId, months ? parseInt(months, 10) : 6); - } - getCourseDistribution(req) { - return this.statsService.getCourseDistribution(req.user.tenantId); - } - getReportOverview(req) { - return this.statsService.getReportOverview(req.user.tenantId); - } - getTeacherReports(req) { - return this.statsService.getTeacherReports(req.user.tenantId); - } - getCourseReports(req) { - return this.statsService.getCourseReports(req.user.tenantId); - } - getStudentReports(req) { - return this.statsService.getStudentReports(req.user.tenantId); - } -}; -exports.StatsController = StatsController; -__decorate([ - (0, common_1.Get)('stats'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)('stats/teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('limit')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getActiveTeachers", null); -__decorate([ - (0, common_1.Get)('stats/courses'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getCourseUsageStats", null); -__decorate([ - (0, common_1.Get)('stats/activities'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('limit')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getRecentActivities", null); -__decorate([ - (0, common_1.Get)('stats/lesson-trend'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('months')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getLessonTrend", null); -__decorate([ - (0, common_1.Get)('stats/course-distribution'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getCourseDistribution", null); -__decorate([ - (0, common_1.Get)('reports/overview'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getReportOverview", null); -__decorate([ - (0, common_1.Get)('reports/teachers'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getTeacherReports", null); -__decorate([ - (0, common_1.Get)('reports/courses'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getCourseReports", null); -__decorate([ - (0, common_1.Get)('reports/students'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], StatsController.prototype, "getStudentReports", null); -exports.StatsController = StatsController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [stats_service_1.StatsService]) -], StatsController); -//# sourceMappingURL=stats.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/stats.controller.js.map b/reading-platform-backend/dist/src/modules/school/stats.controller.js.map deleted file mode 100644 index 7a72a11..0000000 --- a/reading-platform-backend/dist/src/modules/school/stats.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stats.controller.js","sourceRoot":"","sources":["../../../../src/modules/school/stats.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/stats.service.d.ts b/reading-platform-backend/dist/src/modules/school/stats.service.d.ts deleted file mode 100644 index 595ff6d..0000000 --- a/reading-platform-backend/dist/src/modules/school/stats.service.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export interface LessonTrendItem { - month: string; - lessonCount: number; - studentCount: number; -} -export interface CourseDistributionItem { - name: string; - value: number; -} -export declare class StatsService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - getSchoolStats(tenantId: number): Promise<{ - teacherCount: number; - studentCount: number; - classCount: number; - lessonCount: number; - }>; - getActiveTeachers(tenantId: number, limit?: number): Promise<{ - id: number; - name: string; - lessonCount: number; - }[]>; - getCourseUsageStats(tenantId: number): Promise<{ - courseId: number; - courseName: string; - usageCount: number; - }[]>; - getRecentActivities(tenantId: number, limit?: number): Promise<{ - id: number; - type: string; - title: string; - time: Date; - }[]>; - getLessonTrend(tenantId: number, months?: number): Promise; - getCourseDistribution(tenantId: number): Promise; - getReportOverview(tenantId: number): Promise<{ - totalLessons: number; - activeTeacherCount: number; - usedCourseCount: number; - avgRating: number; - }>; - getTeacherReports(tenantId: number): Promise<{ - id: number; - name: string; - lessonCount: number; - courseCount: number; - feedbackCount: number; - avgRating: number; - }[]>; - getCourseReports(tenantId: number): Promise<{ - id: number; - name: string; - lessonCount: number; - teacherCount: number; - studentCount: number; - avgRating: number; - }[]>; - getStudentReports(tenantId: number): Promise<{ - id: number; - name: string; - className: string; - lessonCount: number; - avgFocus: number; - avgParticipation: number; - }[]>; -} diff --git a/reading-platform-backend/dist/src/modules/school/stats.service.js b/reading-platform-backend/dist/src/modules/school/stats.service.js deleted file mode 100644 index 799965b..0000000 --- a/reading-platform-backend/dist/src/modules/school/stats.service.js +++ /dev/null @@ -1,400 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var StatsService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StatsService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let StatsService = StatsService_1 = class StatsService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(StatsService_1.name); - } - async getSchoolStats(tenantId) { - const [teacherCount, studentCount, classCount, lessonCount] = await Promise.all([ - this.prisma.teacher.count({ - where: { tenantId, status: 'ACTIVE' }, - }), - this.prisma.student.count({ - where: { tenantId }, - }), - this.prisma.class.count({ - where: { tenantId }, - }), - this.prisma.lesson.count({ - where: { tenantId, status: 'COMPLETED' }, - }), - ]); - return { - teacherCount, - studentCount, - classCount, - lessonCount, - }; - } - async getActiveTeachers(tenantId, limit = 5) { - const teachers = await this.prisma.teacher.findMany({ - where: { - tenantId, - status: 'ACTIVE', - }, - orderBy: { - lessonCount: 'desc', - }, - take: limit, - select: { - id: true, - name: true, - lessonCount: true, - }, - }); - return teachers; - } - async getCourseUsageStats(tenantId) { - const lessons = await this.prisma.lesson.findMany({ - where: { - tenantId, - status: 'COMPLETED', - }, - select: { - courseId: true, - course: { - select: { - id: true, - name: true, - }, - }, - }, - }); - const courseUsageMap = new Map(); - lessons.forEach((lesson) => { - const courseId = lesson.courseId; - const existing = courseUsageMap.get(courseId); - if (existing) { - existing.usageCount++; - } - else { - courseUsageMap.set(courseId, { - courseId: courseId, - courseName: lesson.course?.name || '未知课程', - usageCount: 1, - }); - } - }); - const result = Array.from(courseUsageMap.values()) - .sort((a, b) => b.usageCount - a.usageCount) - .slice(0, 10); - return result; - } - async getRecentActivities(tenantId, limit = 10) { - const lessons = await this.prisma.lesson.findMany({ - where: { - tenantId, - }, - orderBy: { - createdAt: 'desc', - }, - take: limit, - select: { - id: true, - status: true, - createdAt: true, - course: { - select: { - name: true, - }, - }, - teacher: { - select: { - name: true, - }, - }, - class: { - select: { - name: true, - }, - }, - }, - }); - const activities = lessons.map((lesson) => { - let title = ''; - const teacherName = lesson.teacher?.name || '未知教师'; - const courseName = lesson.course?.name || '未知课程'; - const className = lesson.class?.name || '未知班级'; - switch (lesson.status) { - case 'COMPLETED': - title = `${teacherName}完成《${courseName}》授课`; - break; - case 'IN_PROGRESS': - title = `${teacherName}正在进行《${courseName}》授课`; - break; - case 'PLANNED': - title = `${teacherName}计划在${className}讲授《${courseName}》`; - break; - case 'CANCELLED': - title = `${teacherName}取消了《${courseName}》授课`; - break; - default: - title = `${teacherName}操作了《${courseName}》`; - } - return { - id: lesson.id, - type: lesson.status, - title, - time: lesson.createdAt, - }; - }); - return activities; - } - async getLessonTrend(tenantId, months = 6) { - const result = []; - const now = new Date(); - for (let i = months - 1; i >= 0; i--) { - const startDate = new Date(now.getFullYear(), now.getMonth() - i, 1); - const endDate = new Date(now.getFullYear(), now.getMonth() - i + 1, 0, 23, 59, 59); - const lessonCount = await this.prisma.lesson.count({ - where: { - tenantId, - status: 'COMPLETED', - createdAt: { - gte: startDate, - lte: endDate, - }, - }, - }); - const studentCount = await this.prisma.student.count({ - where: { tenantId }, - }); - const monthLabel = `${startDate.getFullYear()}-${String(startDate.getMonth() + 1).padStart(2, '0')}`; - result.push({ - month: monthLabel, - lessonCount, - studentCount, - }); - } - return result; - } - async getCourseDistribution(tenantId) { - const lessons = await this.prisma.lesson.findMany({ - where: { - tenantId, - status: 'COMPLETED', - }, - select: { - courseId: true, - course: { - select: { - name: true, - }, - }, - }, - }); - const courseMap = new Map(); - lessons.forEach((lesson) => { - const courseName = lesson.course?.name || '未知课程'; - courseMap.set(courseName, (courseMap.get(courseName) || 0) + 1); - }); - const result = Array.from(courseMap.entries()) - .map(([name, value]) => ({ name, value })) - .sort((a, b) => b.value - a.value) - .slice(0, 8); - return result; - } - async getReportOverview(tenantId) { - const totalLessons = await this.prisma.lesson.count({ - where: { tenantId, status: 'COMPLETED' }, - }); - const activeTeachers = await this.prisma.teacher.count({ - where: { - tenantId, - status: 'ACTIVE', - lessonCount: { gt: 0 }, - }, - }); - const usedCourses = await this.prisma.lesson.findMany({ - where: { tenantId, status: 'COMPLETED' }, - select: { courseId: true }, - distinct: ['courseId'], - }); - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: { - lesson: { tenantId }, - }, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - }, - }); - let avgRating = 0; - if (feedbacks.length > 0) { - const totalRating = feedbacks.reduce((sum, f) => { - const avg = ((f.designQuality || 0) + (f.participation || 0) + (f.goalAchievement || 0)) / 3; - return sum + avg; - }, 0); - avgRating = Number((totalRating / feedbacks.length).toFixed(1)); - } - return { - totalLessons, - activeTeacherCount: activeTeachers, - usedCourseCount: usedCourses.length, - avgRating, - }; - } - async getTeacherReports(tenantId) { - const teachers = await this.prisma.teacher.findMany({ - where: { tenantId, status: 'ACTIVE' }, - select: { - id: true, - name: true, - lessonCount: true, - feedbackCount: true, - lessons: { - where: { status: 'COMPLETED' }, - select: { courseId: true }, - }, - }, - }); - return teachers.map((teacher) => { - const uniqueCourses = new Set(teacher.lessons.map((l) => l.courseId)); - const avgRating = teacher.feedbackCount > 0 ? 4.5 : 0; - return { - id: teacher.id, - name: teacher.name, - lessonCount: teacher.lessonCount, - courseCount: uniqueCourses.size, - feedbackCount: teacher.feedbackCount, - avgRating, - }; - }).sort((a, b) => b.lessonCount - a.lessonCount); - } - async getCourseReports(tenantId) { - const lessons = await this.prisma.lesson.findMany({ - where: { tenantId, status: 'COMPLETED' }, - select: { - courseId: true, - course: { - select: { name: true }, - }, - teacherId: true, - classId: true, - class: { - select: { studentCount: true }, - }, - }, - }); - const courseMap = new Map(); - lessons.forEach((lesson) => { - const courseId = lesson.courseId; - const existing = courseMap.get(courseId); - if (existing) { - existing.lessonCount++; - existing.teacherIds.add(lesson.teacherId); - existing.studentCount += lesson.class?.studentCount || 0; - } - else { - courseMap.set(courseId, { - id: courseId, - name: lesson.course?.name || '未知课程', - lessonCount: 1, - teacherIds: new Set([lesson.teacherId]), - studentCount: lesson.class?.studentCount || 0, - }); - } - }); - const courseRatings = await this.prisma.lessonFeedback.findMany({ - where: { - lesson: { tenantId }, - }, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - lesson: { - select: { courseId: true }, - }, - }, - }); - const ratingMap = new Map(); - courseRatings.forEach((feedback) => { - const courseId = feedback.lesson.courseId; - const avg = ((feedback.designQuality || 0) + (feedback.participation || 0) + (feedback.goalAchievement || 0)) / 3; - const existing = ratingMap.get(courseId); - if (existing) { - existing.total += avg; - existing.count++; - } - else { - ratingMap.set(courseId, { total: avg, count: 1 }); - } - }); - return Array.from(courseMap.values()) - .map((course) => { - const rating = ratingMap.get(course.id); - const avgRating = rating ? Number((rating.total / rating.count).toFixed(1)) : 0; - return { - id: course.id, - name: course.name, - lessonCount: course.lessonCount, - teacherCount: course.teacherIds.size, - studentCount: course.studentCount, - avgRating, - }; - }) - .sort((a, b) => b.lessonCount - a.lessonCount); - } - async getStudentReports(tenantId) { - const students = await this.prisma.student.findMany({ - where: { tenantId }, - select: { - id: true, - name: true, - classId: true, - class: { - select: { name: true }, - }, - records: { - select: { - focus: true, - participation: true, - interest: true, - understanding: true, - }, - }, - }, - }); - return students.map((student) => { - let avgFocus = 0; - let avgParticipation = 0; - const recordCount = student.records.length; - if (recordCount > 0) { - const totalFocus = student.records.reduce((sum, r) => sum + (r.focus || 0), 0); - const totalParticipation = student.records.reduce((sum, r) => sum + (r.participation || 0), 0); - avgFocus = Number((totalFocus / recordCount).toFixed(1)); - avgParticipation = Number((totalParticipation / recordCount).toFixed(1)); - } - return { - id: student.id, - name: student.name, - className: student.class?.name || '未分班', - lessonCount: recordCount, - avgFocus, - avgParticipation, - }; - }).sort((a, b) => b.lessonCount - a.lessonCount); - } -}; -exports.StatsService = StatsService; -exports.StatsService = StatsService = StatsService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], StatsService); -//# sourceMappingURL=stats.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/school/stats.service.js.map b/reading-platform-backend/dist/src/modules/school/stats.service.js.map deleted file mode 100644 index 2977b2f..0000000 --- a/reading-platform-backend/dist/src/modules/school/stats.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stats.service.js","sourceRoot":"","sources":["../../../../src/modules/school/stats.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.d.ts b/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.d.ts deleted file mode 100644 index c07e03d..0000000 --- a/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -export declare enum TaskType { - READING = "READING", - ACTIVITY = "ACTIVITY", - HOMEWORK = "HOMEWORK" -} -export declare enum TargetType { - CLASS = "CLASS", - STUDENT = "STUDENT" -} -export declare enum TaskStatus { - DRAFT = "DRAFT", - PUBLISHED = "PUBLISHED", - ARCHIVED = "ARCHIVED" -} -export declare enum CompletionStatus { - PENDING = "PENDING", - IN_PROGRESS = "IN_PROGRESS", - COMPLETED = "COMPLETED" -} -export declare class CreateTaskDto { - title: string; - description?: string; - taskType: TaskType; - targetType: TargetType; - relatedCourseId?: number; - startDate: string; - endDate: string; - targetIds: number[]; -} -export declare class UpdateTaskDto { - title?: string; - description?: string; - startDate?: string; - endDate?: string; - status?: TaskStatus; - targetIds?: number[]; -} -export declare class UpdateCompletionDto { - status: CompletionStatus; - feedback?: string; - parentFeedback?: string; -} -export declare class QueryTaskDto { - page?: number; - pageSize?: number; - status?: string; - taskType?: string; - keyword?: string; -} -export declare class CreateTaskTemplateDto { - name: string; - description?: string; - taskType: TaskType; - relatedCourseId?: number; - defaultDuration?: number; - isDefault?: boolean; -} -export declare class UpdateTaskTemplateDto { - name?: string; - description?: string; - relatedCourseId?: number; - defaultDuration?: number; - isDefault?: boolean; - status?: string; -} -export declare class CreateFromTemplateDto { - templateId: number; - targetIds: number[]; - targetType: string; - startDate?: string; -} diff --git a/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js b/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js deleted file mode 100644 index 1704031..0000000 --- a/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js +++ /dev/null @@ -1,243 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CreateFromTemplateDto = exports.UpdateTaskTemplateDto = exports.CreateTaskTemplateDto = exports.QueryTaskDto = exports.UpdateCompletionDto = exports.UpdateTaskDto = exports.CreateTaskDto = exports.CompletionStatus = exports.TaskStatus = exports.TargetType = exports.TaskType = void 0; -const class_validator_1 = require("class-validator"); -var TaskType; -(function (TaskType) { - TaskType["READING"] = "READING"; - TaskType["ACTIVITY"] = "ACTIVITY"; - TaskType["HOMEWORK"] = "HOMEWORK"; -})(TaskType || (exports.TaskType = TaskType = {})); -var TargetType; -(function (TargetType) { - TargetType["CLASS"] = "CLASS"; - TargetType["STUDENT"] = "STUDENT"; -})(TargetType || (exports.TargetType = TargetType = {})); -var TaskStatus; -(function (TaskStatus) { - TaskStatus["DRAFT"] = "DRAFT"; - TaskStatus["PUBLISHED"] = "PUBLISHED"; - TaskStatus["ARCHIVED"] = "ARCHIVED"; -})(TaskStatus || (exports.TaskStatus = TaskStatus = {})); -var CompletionStatus; -(function (CompletionStatus) { - CompletionStatus["PENDING"] = "PENDING"; - CompletionStatus["IN_PROGRESS"] = "IN_PROGRESS"; - CompletionStatus["COMPLETED"] = "COMPLETED"; -})(CompletionStatus || (exports.CompletionStatus = CompletionStatus = {})); -class CreateTaskDto { -} -exports.CreateTaskDto = CreateTaskDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '任务标题不能为空' }), - __metadata("design:type", String) -], CreateTaskDto.prototype, "title", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateTaskDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(TaskType), - __metadata("design:type", String) -], CreateTaskDto.prototype, "taskType", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(TargetType), - __metadata("design:type", String) -], CreateTaskDto.prototype, "targetType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateTaskDto.prototype, "relatedCourseId", void 0); -__decorate([ - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateTaskDto.prototype, "startDate", void 0); -__decorate([ - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateTaskDto.prototype, "endDate", void 0); -__decorate([ - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsInt)({ each: true }), - __metadata("design:type", Array) -], CreateTaskDto.prototype, "targetIds", void 0); -class UpdateTaskDto { -} -exports.UpdateTaskDto = UpdateTaskDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '任务标题不能为空' }), - __metadata("design:type", String) -], UpdateTaskDto.prototype, "title", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTaskDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateTaskDto.prototype, "startDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateTaskDto.prototype, "endDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsEnum)(TaskStatus), - __metadata("design:type", String) -], UpdateTaskDto.prototype, "status", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsInt)({ each: true }), - __metadata("design:type", Array) -], UpdateTaskDto.prototype, "targetIds", void 0); -class UpdateCompletionDto { -} -exports.UpdateCompletionDto = UpdateCompletionDto; -__decorate([ - (0, class_validator_1.IsEnum)(CompletionStatus), - __metadata("design:type", String) -], UpdateCompletionDto.prototype, "status", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateCompletionDto.prototype, "feedback", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateCompletionDto.prototype, "parentFeedback", void 0); -class QueryTaskDto { -} -exports.QueryTaskDto = QueryTaskDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryTaskDto.prototype, "page", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], QueryTaskDto.prototype, "pageSize", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryTaskDto.prototype, "status", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryTaskDto.prototype, "taskType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], QueryTaskDto.prototype, "keyword", void 0); -class CreateTaskTemplateDto { -} -exports.CreateTaskTemplateDto = CreateTaskTemplateDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '模板名称不能为空' }), - __metadata("design:type", String) -], CreateTaskTemplateDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateTaskTemplateDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsEnum)(TaskType), - __metadata("design:type", String) -], CreateTaskTemplateDto.prototype, "taskType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateTaskTemplateDto.prototype, "relatedCourseId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], CreateTaskTemplateDto.prototype, "defaultDuration", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - __metadata("design:type", Boolean) -], CreateTaskTemplateDto.prototype, "isDefault", void 0); -class UpdateTaskTemplateDto { -} -exports.UpdateTaskTemplateDto = UpdateTaskTemplateDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '模板名称不能为空' }), - __metadata("design:type", String) -], UpdateTaskTemplateDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTaskTemplateDto.prototype, "description", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], UpdateTaskTemplateDto.prototype, "relatedCourseId", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], UpdateTaskTemplateDto.prototype, "defaultDuration", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - __metadata("design:type", Boolean) -], UpdateTaskTemplateDto.prototype, "isDefault", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTaskTemplateDto.prototype, "status", void 0); -class CreateFromTemplateDto { -} -exports.CreateFromTemplateDto = CreateFromTemplateDto; -__decorate([ - (0, class_validator_1.IsInt)(), - __metadata("design:type", Number) -], CreateFromTemplateDto.prototype, "templateId", void 0); -__decorate([ - (0, class_validator_1.IsArray)(), - (0, class_validator_1.IsInt)({ each: true }), - __metadata("design:type", Array) -], CreateFromTemplateDto.prototype, "targetIds", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateFromTemplateDto.prototype, "targetType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateFromTemplateDto.prototype, "startDate", void 0); -//# sourceMappingURL=create-task.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js.map b/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js.map deleted file mode 100644 index eda9adc..0000000 --- a/reading-platform-backend/dist/src/modules/task/dto/create-task.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-task.dto.js","sourceRoot":"","sources":["../../../../../src/modules/task/dto/create-task.dto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/task.controller.d.ts b/reading-platform-backend/dist/src/modules/task/task.controller.d.ts deleted file mode 100644 index c1fe754..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.controller.d.ts +++ /dev/null @@ -1,820 +0,0 @@ -import { TaskService } from './task.service'; -import { CreateTaskDto, UpdateTaskDto, UpdateCompletionDto, CreateTaskTemplateDto, UpdateTaskTemplateDto, CreateFromTemplateDto } from './dto/create-task.dto'; -import { ScheduleNotificationService } from '../notification/schedule-notification.service'; -export declare class SchoolTaskController { - private readonly taskService; - private readonly scheduleNotificationService; - constructor(taskService: TaskService, scheduleNotificationService: ScheduleNotificationService); - findAll(req: any, query: any): Promise<{ - items: { - targetCount: number; - completionCount: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getStats(req: any): Promise<{ - totalTasks: number; - publishedTasks: number; - completedTasks: number; - inProgressTasks: number; - pendingCount: number; - totalCompletions: number; - completionRate: number; - }>; - getStatsByType(req: any): Promise>; - getStatsByClass(req: any): Promise<{ - classId: number; - className: string; - grade: string; - total: number; - completed: number; - rate: number; - }[]>; - getMonthlyStats(req: any, months?: string): Promise<{ - month: string; - tasks: number; - completions: number; - completed: number; - rate: number; - }[]>; - findOne(req: any, id: string): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - getCompletions(req: any, id: string, query: any): Promise<{ - items: ({ - student: { - id: number; - name: string; - gender: string; - class: { - id: number; - name: string; - }; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - create(req: any, dto: CreateTaskDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - update(req: any, id: string, dto: UpdateTaskDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - delete(req: any, id: string): Promise<{ - message: string; - }>; - updateCompletion(req: any, taskId: string, studentId: string, dto: UpdateCompletionDto): Promise<{ - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - }>; - sendReminder(req: any, id: string): Promise<{ - success: boolean; - message: string; - remindedCount?: undefined; - students?: undefined; - } | { - success: boolean; - message: string; - remindedCount: number; - students: { - id: number; - name: string; - }[]; - }>; - findAllTemplates(req: any, query: any): Promise<{ - items: ({ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - })[]; - total: number; - page: number; - pageSize: number; - }>; - findOneTemplate(req: any, id: string): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - getDefaultTemplate(req: any, taskType: string): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - createTemplate(req: any, dto: CreateTaskTemplateDto): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - updateTemplate(req: any, id: string, dto: UpdateTaskTemplateDto): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - deleteTemplate(req: any, id: string): Promise<{ - message: string; - }>; - createFromTemplate(req: any, dto: CreateFromTemplateDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; -} -export declare class TeacherTaskController { - private readonly taskService; - private readonly scheduleNotificationService; - constructor(taskService: TaskService, scheduleNotificationService: ScheduleNotificationService); - findAll(req: any, query: any): Promise<{ - items: { - targetCount: number; - completionCount: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getUpcoming(req: any, query: any): Promise<{ - pendingCount: number; - daysRemaining: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]>; - getStats(req: any): Promise<{ - totalTasks: number; - publishedTasks: number; - completedTasks: number; - inProgressTasks: number; - pendingCount: number; - totalCompletions: number; - completionRate: number; - }>; - getStatsByType(req: any): Promise>; - getStatsByClass(req: any): Promise<{ - classId: number; - className: string; - grade: string; - total: number; - completed: number; - rate: number; - }[]>; - getMonthlyStats(req: any, months?: string): Promise<{ - month: string; - tasks: number; - completions: number; - completed: number; - rate: number; - }[]>; - findByClass(req: any, classId: string, query: any): Promise<{ - items: { - completionCount: number; - completedCount: number; - progress: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(req: any, id: string): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - getCompletions(req: any, id: string, query: any): Promise<{ - items: ({ - student: { - id: number; - name: string; - gender: string; - class: { - id: number; - name: string; - }; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - create(req: any, dto: CreateTaskDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - update(req: any, id: string, dto: UpdateTaskDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - delete(req: any, id: string): Promise<{ - message: string; - }>; - sendReminder(req: any, id: string): Promise<{ - success: boolean; - message: string; - remindedCount?: undefined; - students?: undefined; - } | { - success: boolean; - message: string; - remindedCount: number; - students: { - id: number; - name: string; - }[]; - }>; - updateCompletion(req: any, taskId: string, studentId: string, dto: UpdateCompletionDto): Promise<{ - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - }>; - findAllTemplates(req: any, query: any): Promise<{ - items: ({ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - })[]; - total: number; - page: number; - pageSize: number; - }>; - findOneTemplate(req: any, id: string): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - getDefaultTemplate(req: any, taskType: string): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - createFromTemplate(req: any, dto: CreateFromTemplateDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/task/task.controller.js b/reading-platform-backend/dist/src/modules/task/task.controller.js deleted file mode 100644 index 7134097..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.controller.js +++ /dev/null @@ -1,462 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TeacherTaskController = exports.SchoolTaskController = void 0; -const common_1 = require("@nestjs/common"); -const task_service_1 = require("./task.service"); -const create_task_dto_1 = require("./dto/create-task.dto"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -const schedule_notification_service_1 = require("../notification/schedule-notification.service"); -let SchoolTaskController = class SchoolTaskController { - constructor(taskService, scheduleNotificationService) { - this.taskService = taskService; - this.scheduleNotificationService = scheduleNotificationService; - } - findAll(req, query) { - return this.taskService.findAll(req.user.tenantId, query); - } - getStats(req) { - return this.taskService.getStats(req.user.tenantId); - } - getStatsByType(req) { - return this.taskService.getStatsByType(req.user.tenantId); - } - getStatsByClass(req) { - return this.taskService.getStatsByClass(req.user.tenantId); - } - getMonthlyStats(req, months) { - return this.taskService.getMonthlyStats(req.user.tenantId, months ? +months : 6); - } - findOne(req, id) { - return this.taskService.findOne(req.user.tenantId, +id); - } - getCompletions(req, id, query) { - return this.taskService.getCompletions(req.user.tenantId, +id, query); - } - create(req, dto) { - return this.taskService.create(req.user.tenantId, req.user.userId, dto); - } - update(req, id, dto) { - return this.taskService.update(req.user.tenantId, +id, dto); - } - delete(req, id) { - return this.taskService.delete(req.user.tenantId, +id); - } - updateCompletion(req, taskId, studentId, dto) { - return this.taskService.updateCompletion(req.user.tenantId, +taskId, +studentId, dto); - } - sendReminder(req, id) { - return this.scheduleNotificationService.sendManualTaskReminder(req.user.tenantId, +id); - } - findAllTemplates(req, query) { - return this.taskService.findAllTemplates(req.user.tenantId, query); - } - findOneTemplate(req, id) { - return this.taskService.findOneTemplate(req.user.tenantId, +id); - } - getDefaultTemplate(req, taskType) { - return this.taskService.getDefaultTemplate(req.user.tenantId, taskType); - } - createTemplate(req, dto) { - return this.taskService.createTemplate(req.user.tenantId, req.user.userId, dto); - } - updateTemplate(req, id, dto) { - return this.taskService.updateTemplate(req.user.tenantId, +id, dto); - } - deleteTemplate(req, id) { - return this.taskService.deleteTemplate(req.user.tenantId, +id); - } - createFromTemplate(req, dto) { - return this.taskService.createFromTemplate(req.user.tenantId, req.user.userId, dto.templateId, { targetIds: dto.targetIds, targetType: dto.targetType, startDate: dto.startDate }); - } -}; -exports.SchoolTaskController = SchoolTaskController; -__decorate([ - (0, common_1.Get)('tasks'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('tasks/stats'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)('tasks/stats/by-type'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "getStatsByType", null); -__decorate([ - (0, common_1.Get)('tasks/stats/by-class'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "getStatsByClass", null); -__decorate([ - (0, common_1.Get)('tasks/stats/monthly'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('months')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "getMonthlyStats", null); -__decorate([ - (0, common_1.Get)('tasks/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "findOne", null); -__decorate([ - (0, common_1.Get)('tasks/:id/completions'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "getCompletions", null); -__decorate([ - (0, common_1.Post)('tasks'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_task_dto_1.CreateTaskDto]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "create", null); -__decorate([ - (0, common_1.Put)('tasks/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_task_dto_1.UpdateTaskDto]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "update", null); -__decorate([ - (0, common_1.Delete)('tasks/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "delete", null); -__decorate([ - (0, common_1.Put)('tasks/:taskId/completions/:studentId'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('taskId')), - __param(2, (0, common_1.Param)('studentId')), - __param(3, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, create_task_dto_1.UpdateCompletionDto]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "updateCompletion", null); -__decorate([ - (0, common_1.Post)('tasks/:id/remind'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "sendReminder", null); -__decorate([ - (0, common_1.Get)('task-templates'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "findAllTemplates", null); -__decorate([ - (0, common_1.Get)('task-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "findOneTemplate", null); -__decorate([ - (0, common_1.Get)('task-templates/default/:taskType'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('taskType')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "getDefaultTemplate", null); -__decorate([ - (0, common_1.Post)('task-templates'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_task_dto_1.CreateTaskTemplateDto]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "createTemplate", null); -__decorate([ - (0, common_1.Put)('task-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_task_dto_1.UpdateTaskTemplateDto]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "updateTemplate", null); -__decorate([ - (0, common_1.Delete)('task-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "deleteTemplate", null); -__decorate([ - (0, common_1.Post)('tasks/from-template'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_task_dto_1.CreateFromTemplateDto]), - __metadata("design:returntype", void 0) -], SchoolTaskController.prototype, "createFromTemplate", null); -exports.SchoolTaskController = SchoolTaskController = __decorate([ - (0, common_1.Controller)('school'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('school'), - __metadata("design:paramtypes", [task_service_1.TaskService, - schedule_notification_service_1.ScheduleNotificationService]) -], SchoolTaskController); -let TeacherTaskController = class TeacherTaskController { - constructor(taskService, scheduleNotificationService) { - this.taskService = taskService; - this.scheduleNotificationService = scheduleNotificationService; - } - findAll(req, query) { - return this.taskService.findAll(req.user.tenantId, query); - } - getUpcoming(req, query) { - return this.taskService.getUpcoming(req.user.tenantId, query); - } - getStats(req) { - return this.taskService.getStats(req.user.tenantId); - } - getStatsByType(req) { - return this.taskService.getStatsByType(req.user.tenantId); - } - getStatsByClass(req) { - return this.taskService.getStatsByClass(req.user.tenantId); - } - getMonthlyStats(req, months) { - return this.taskService.getMonthlyStats(req.user.tenantId, months ? +months : 6); - } - findByClass(req, classId, query) { - return this.taskService.findByClass(req.user.tenantId, +classId, query); - } - findOne(req, id) { - return this.taskService.findOne(req.user.tenantId, +id); - } - getCompletions(req, id, query) { - return this.taskService.getCompletions(req.user.tenantId, +id, query); - } - create(req, dto) { - return this.taskService.create(req.user.tenantId, req.user.userId, dto); - } - update(req, id, dto) { - return this.taskService.update(req.user.tenantId, +id, dto); - } - delete(req, id) { - return this.taskService.delete(req.user.tenantId, +id); - } - sendReminder(req, id) { - return this.scheduleNotificationService.sendManualTaskReminder(req.user.tenantId, +id); - } - updateCompletion(req, taskId, studentId, dto) { - return this.taskService.updateCompletion(req.user.tenantId, +taskId, +studentId, dto); - } - findAllTemplates(req, query) { - return this.taskService.findAllTemplates(req.user.tenantId, query); - } - findOneTemplate(req, id) { - return this.taskService.findOneTemplate(req.user.tenantId, +id); - } - getDefaultTemplate(req, taskType) { - return this.taskService.getDefaultTemplate(req.user.tenantId, taskType); - } - createFromTemplate(req, dto) { - return this.taskService.createFromTemplate(req.user.tenantId, req.user.userId, dto.templateId, { targetIds: dto.targetIds, targetType: dto.targetType, startDate: dto.startDate }); - } -}; -exports.TeacherTaskController = TeacherTaskController; -__decorate([ - (0, common_1.Get)('tasks'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('tasks/upcoming'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getUpcoming", null); -__decorate([ - (0, common_1.Get)('tasks/stats'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)('tasks/stats/by-type'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getStatsByType", null); -__decorate([ - (0, common_1.Get)('tasks/stats/by-class'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getStatsByClass", null); -__decorate([ - (0, common_1.Get)('tasks/stats/monthly'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('months')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getMonthlyStats", null); -__decorate([ - (0, common_1.Get)('classes/:classId/tasks'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('classId')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "findByClass", null); -__decorate([ - (0, common_1.Get)('tasks/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "findOne", null); -__decorate([ - (0, common_1.Get)('tasks/:id/completions'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getCompletions", null); -__decorate([ - (0, common_1.Post)('tasks'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_task_dto_1.CreateTaskDto]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "create", null); -__decorate([ - (0, common_1.Put)('tasks/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, create_task_dto_1.UpdateTaskDto]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "update", null); -__decorate([ - (0, common_1.Delete)('tasks/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "delete", null); -__decorate([ - (0, common_1.Post)('tasks/:id/remind'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "sendReminder", null); -__decorate([ - (0, common_1.Put)('tasks/:taskId/completions/:studentId'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('taskId')), - __param(2, (0, common_1.Param)('studentId')), - __param(3, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String, create_task_dto_1.UpdateCompletionDto]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "updateCompletion", null); -__decorate([ - (0, common_1.Get)('task-templates'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "findAllTemplates", null); -__decorate([ - (0, common_1.Get)('task-templates/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "findOneTemplate", null); -__decorate([ - (0, common_1.Get)('task-templates/default/:taskType'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('taskType')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "getDefaultTemplate", null); -__decorate([ - (0, common_1.Post)('tasks/from-template'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, create_task_dto_1.CreateFromTemplateDto]), - __metadata("design:returntype", void 0) -], TeacherTaskController.prototype, "createFromTemplate", null); -exports.TeacherTaskController = TeacherTaskController = __decorate([ - (0, common_1.Controller)('teacher'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('teacher'), - __metadata("design:paramtypes", [task_service_1.TaskService, - schedule_notification_service_1.ScheduleNotificationService]) -], TeacherTaskController); -//# sourceMappingURL=task.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/task.controller.js.map b/reading-platform-backend/dist/src/modules/task/task.controller.js.map deleted file mode 100644 index 21b5372..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"task.controller.js","sourceRoot":"","sources":["../../../../src/modules/task/task.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/task.module.d.ts b/reading-platform-backend/dist/src/modules/task/task.module.d.ts deleted file mode 100644 index e3cde0b..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class TaskModule { -} diff --git a/reading-platform-backend/dist/src/modules/task/task.module.js b/reading-platform-backend/dist/src/modules/task/task.module.js deleted file mode 100644 index 3fa0596..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.module.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TaskModule = void 0; -const common_1 = require("@nestjs/common"); -const task_controller_1 = require("./task.controller"); -const task_service_1 = require("./task.service"); -const notification_module_1 = require("../notification/notification.module"); -let TaskModule = class TaskModule { -}; -exports.TaskModule = TaskModule; -exports.TaskModule = TaskModule = __decorate([ - (0, common_1.Module)({ - imports: [notification_module_1.NotificationModule], - controllers: [task_controller_1.SchoolTaskController, task_controller_1.TeacherTaskController], - providers: [task_service_1.TaskService], - exports: [task_service_1.TaskService], - }) -], TaskModule); -//# sourceMappingURL=task.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/task.module.js.map b/reading-platform-backend/dist/src/modules/task/task.module.js.map deleted file mode 100644 index 448bb72..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"task.module.js","sourceRoot":"","sources":["../../../../src/modules/task/task.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uDAAgF;AAChF,iDAA6C;AAC7C,6EAAyE;AAQlE,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IANtB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,wCAAkB,CAAC;QAC7B,WAAW,EAAE,CAAC,sCAAoB,EAAE,uCAAqB,CAAC;QAC1D,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,OAAO,EAAE,CAAC,0BAAW,CAAC;KACvB,CAAC;GACW,UAAU,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/task.service.d.ts b/reading-platform-backend/dist/src/modules/task/task.service.d.ts deleted file mode 100644 index 08d0607..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.service.d.ts +++ /dev/null @@ -1,479 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { CreateTaskDto, UpdateTaskDto, UpdateCompletionDto, CreateTaskTemplateDto, UpdateTaskTemplateDto } from './dto/create-task.dto'; -export declare class TaskService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - findAll(tenantId: number, query: any): Promise<{ - items: { - targetCount: number; - completionCount: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(tenantId: number, id: number): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - create(tenantId: number, userId: number, dto: CreateTaskDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - update(tenantId: number, id: number, dto: UpdateTaskDto): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; - delete(tenantId: number, id: number): Promise<{ - message: string; - }>; - getCompletions(tenantId: number, taskId: number, query: any): Promise<{ - items: ({ - student: { - id: number; - name: string; - gender: string; - class: { - id: number; - name: string; - }; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - updateCompletion(tenantId: number, taskId: number, studentId: number, dto: UpdateCompletionDto): Promise<{ - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - }>; - getStudentTasks(tenantId: number, studentId: number, query: any): Promise<{ - items: ({ - task: { - id: number; - title: string; - taskType: string; - startDate: Date; - endDate: Date; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - total: number; - page: number; - pageSize: number; - }>; - getStats(tenantId: number): Promise<{ - totalTasks: number; - publishedTasks: number; - completedTasks: number; - inProgressTasks: number; - pendingCount: number; - totalCompletions: number; - completionRate: number; - }>; - getStatsByType(tenantId: number): Promise>; - getStatsByClass(tenantId: number): Promise<{ - classId: number; - className: string; - grade: string; - total: number; - completed: number; - rate: number; - }[]>; - getMonthlyStats(tenantId: number, months?: number): Promise<{ - month: string; - tasks: number; - completions: number; - completed: number; - rate: number; - }[]>; - findByClass(tenantId: number, classId: number, query: any): Promise<{ - items: { - completionCount: number; - completedCount: number; - progress: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getUpcoming(tenantId: number, query: any): Promise<{ - pendingCount: number; - daysRemaining: number; - _count: any; - course: { - id: number; - name: string; - }; - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }[]>; - sendReminder(tenantId: number, taskId: number): Promise<{ - message: string; - remindedCount: number; - students: { - studentId: number; - studentName: string; - parentPhone: string; - }[]; - }>; - findAllTemplates(tenantId: number, query: any): Promise<{ - items: ({ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - })[]; - total: number; - page: number; - pageSize: number; - }>; - findOneTemplate(tenantId: number, id: number): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - createTemplate(tenantId: number, userId: number, dto: CreateTaskTemplateDto): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - updateTemplate(tenantId: number, id: number, dto: UpdateTaskTemplateDto): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - deleteTemplate(tenantId: number, id: number): Promise<{ - message: string; - }>; - getDefaultTemplate(tenantId: number, taskType: string): Promise<{ - course: { - id: number; - name: string; - pictureBookName: string; - }; - } & { - id: number; - tenantId: number; - description: string | null; - taskType: string; - relatedCourseId: number | null; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - defaultDuration: number; - isDefault: boolean; - }>; - createFromTemplate(tenantId: number, userId: number, templateId: number, dto: { - targetIds: number[]; - targetType: string; - startDate?: string; - }): Promise<{ - course: { - id: number; - name: string; - }; - targets: ({ - task: { - id: number; - title: string; - }; - } & { - id: number; - classId: number | null; - taskId: number; - studentId: number | null; - })[]; - completions: ({ - student: { - id: number; - name: string; - }; - } & { - id: number; - status: string; - createdAt: Date; - taskId: number; - studentId: number; - completedAt: Date | null; - feedback: string | null; - parentFeedback: string | null; - })[]; - } & { - id: number; - tenantId: number; - title: string; - description: string | null; - taskType: string; - targetType: string; - relatedCourseId: number | null; - createdBy: number; - startDate: Date; - endDate: Date; - status: string; - createdAt: Date; - updatedAt: Date; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/task/task.service.js b/reading-platform-backend/dist/src/modules/task/task.service.js deleted file mode 100644 index 908a938..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.service.js +++ /dev/null @@ -1,786 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var TaskService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TaskService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const create_task_dto_1 = require("./dto/create-task.dto"); -let TaskService = TaskService_1 = class TaskService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(TaskService_1.name); - } - async findAll(tenantId, query) { - const { page = 1, pageSize = 10, status, taskType, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId: tenantId, - }; - if (status) { - where.status = status; - } - if (taskType) { - where.taskType = taskType; - } - if (keyword) { - where.OR = [ - { title: { contains: keyword } }, - { description: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.task.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - course: { - select: { - id: true, - name: true, - }, - }, - _count: { - select: { - targets: true, - completions: true, - }, - }, - }, - }), - this.prisma.task.count({ where }), - ]); - return { - items: items.map((task) => ({ - ...task, - targetCount: task._count.targets, - completionCount: task._count.completions, - _count: undefined, - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async findOne(tenantId, id) { - const task = await this.prisma.task.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - course: { - select: { - id: true, - name: true, - }, - }, - targets: { - include: { - task: { - select: { id: true, title: true }, - }, - }, - }, - completions: { - include: { - student: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }); - if (!task) { - throw new common_1.NotFoundException('任务不存在'); - } - return task; - } - async create(tenantId, userId, dto) { - const task = await this.prisma.task.create({ - data: { - tenantId: tenantId, - title: dto.title, - description: dto.description, - taskType: dto.taskType, - targetType: dto.targetType, - relatedCourseId: dto.relatedCourseId, - createdBy: userId, - startDate: new Date(dto.startDate), - endDate: new Date(dto.endDate), - status: create_task_dto_1.TaskStatus.PUBLISHED, - }, - }); - if (dto.targetIds && dto.targetIds.length > 0) { - for (const targetId of dto.targetIds) { - await this.prisma.taskTarget.create({ - data: { - taskId: task.id, - classId: dto.targetType === 'CLASS' ? targetId : null, - studentId: dto.targetType === 'STUDENT' ? targetId : null, - }, - }); - if (dto.targetType === 'CLASS') { - const students = await this.prisma.student.findMany({ - where: { classId: targetId, tenantId }, - select: { id: true }, - }); - for (const student of students) { - await this.prisma.taskCompletion.create({ - data: { - taskId: task.id, - studentId: student.id, - status: create_task_dto_1.CompletionStatus.PENDING, - }, - }); - } - } - else { - await this.prisma.taskCompletion.create({ - data: { - taskId: task.id, - studentId: targetId, - status: create_task_dto_1.CompletionStatus.PENDING, - }, - }); - } - } - } - this.logger.log(`Task created: ${task.id}`); - return this.findOne(tenantId, task.id); - } - async update(tenantId, id, dto) { - const existing = await this.prisma.task.findFirst({ - where: { id, tenantId }, - }); - if (!existing) { - throw new common_1.NotFoundException('任务不存在'); - } - const task = await this.prisma.task.update({ - where: { id }, - data: { - title: dto.title, - description: dto.description, - startDate: dto.startDate ? new Date(dto.startDate) : undefined, - endDate: dto.endDate ? new Date(dto.endDate) : undefined, - status: dto.status, - }, - }); - if (dto.targetIds) { - await this.prisma.taskTarget.deleteMany({ - where: { taskId: id }, - }); - for (const targetId of dto.targetIds) { - await this.prisma.taskTarget.create({ - data: { - taskId: id, - classId: existing.targetType === 'CLASS' ? targetId : null, - studentId: existing.targetType === 'STUDENT' ? targetId : null, - }, - }); - } - } - this.logger.log(`Task updated: ${id}`); - return this.findOne(tenantId, id); - } - async delete(tenantId, id) { - const existing = await this.prisma.task.findFirst({ - where: { id, tenantId }, - }); - if (!existing) { - throw new common_1.NotFoundException('任务不存在'); - } - await this.prisma.task.delete({ - where: { id }, - }); - this.logger.log(`Task deleted: ${id}`); - return { message: '删除成功' }; - } - async getCompletions(tenantId, taskId, query) { - const { page = 1, pageSize = 20, status } = query; - const where = { - taskId: taskId, - task: { tenantId }, - }; - if (status) { - where.status = status; - } - const skip = (page - 1) * pageSize; - const take = +pageSize; - const [items, total] = await Promise.all([ - this.prisma.taskCompletion.findMany({ - where, - skip, - take, - include: { - student: { - select: { - id: true, - name: true, - gender: true, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }, - }, - }), - this.prisma.taskCompletion.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async updateCompletion(tenantId, taskId, studentId, dto) { - const completion = await this.prisma.taskCompletion.findFirst({ - where: { - taskId: taskId, - studentId: studentId, - task: { tenantId }, - }, - }); - if (!completion) { - throw new common_1.NotFoundException('任务完成记录不存在'); - } - const updated = await this.prisma.taskCompletion.update({ - where: { - taskId_studentId: { - taskId: taskId, - studentId: studentId, - }, - }, - data: { - status: dto.status, - completedAt: dto.status === create_task_dto_1.CompletionStatus.COMPLETED ? new Date() : undefined, - feedback: dto.feedback, - parentFeedback: dto.parentFeedback, - }, - }); - this.logger.log(`Task completion updated: task=${taskId}, student=${studentId}`); - return updated; - } - async getStudentTasks(tenantId, studentId, query) { - const { page = 1, pageSize = 10, status } = query; - const where = { - studentId: studentId, - task: { tenantId, status: create_task_dto_1.TaskStatus.PUBLISHED }, - }; - if (status) { - where.status = status; - } - const skip = (page - 1) * pageSize; - const take = +pageSize; - const [items, total] = await Promise.all([ - this.prisma.taskCompletion.findMany({ - where, - skip, - take, - orderBy: { task: { createdAt: 'desc' } }, - include: { - task: { - select: { - id: true, - title: true, - taskType: true, - startDate: true, - endDate: true, - }, - }, - }, - }), - this.prisma.taskCompletion.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async getStats(tenantId) { - const [totalTasks, publishedTasks, completedTasks, inProgressTasks, pendingCount, totalCompletions] = await Promise.all([ - this.prisma.task.count({ where: { tenantId } }), - this.prisma.task.count({ where: { tenantId, status: create_task_dto_1.TaskStatus.PUBLISHED } }), - this.prisma.taskCompletion.count({ - where: { task: { tenantId }, status: create_task_dto_1.CompletionStatus.COMPLETED }, - }), - this.prisma.taskCompletion.count({ - where: { task: { tenantId }, status: create_task_dto_1.CompletionStatus.IN_PROGRESS }, - }), - this.prisma.taskCompletion.count({ - where: { task: { tenantId }, status: create_task_dto_1.CompletionStatus.PENDING }, - }), - this.prisma.taskCompletion.count({ - where: { task: { tenantId } }, - }), - ]); - const completionRate = totalCompletions > 0 - ? Math.round((completedTasks / totalCompletions) * 100) - : 0; - return { - totalTasks, - publishedTasks, - completedTasks, - inProgressTasks, - pendingCount, - totalCompletions, - completionRate, - }; - } - async getStatsByType(tenantId) { - const tasks = await this.prisma.task.findMany({ - where: { tenantId }, - select: { - taskType: true, - completions: { - select: { status: true }, - }, - }, - }); - const typeStats = {}; - for (const task of tasks) { - if (!typeStats[task.taskType]) { - typeStats[task.taskType] = { total: 0, completed: 0, rate: 0 }; - } - typeStats[task.taskType].total += task.completions.length; - typeStats[task.taskType].completed += task.completions.filter(c => c.status === create_task_dto_1.CompletionStatus.COMPLETED).length; - } - for (const type of Object.keys(typeStats)) { - const stat = typeStats[type]; - stat.rate = stat.total > 0 ? Math.round((stat.completed / stat.total) * 100) : 0; - } - return typeStats; - } - async getStatsByClass(tenantId) { - const classes = await this.prisma.class.findMany({ - where: { tenantId }, - select: { - id: true, - name: true, - grade: true, - }, - }); - const classStats = await Promise.all(classes.map(async (cls) => { - const completions = await this.prisma.taskCompletion.findMany({ - where: { - student: { classId: cls.id }, - task: { tenantId }, - }, - select: { status: true }, - }); - const total = completions.length; - const completed = completions.filter(c => c.status === create_task_dto_1.CompletionStatus.COMPLETED).length; - const rate = total > 0 ? Math.round((completed / total) * 100) : 0; - return { - classId: cls.id, - className: cls.name, - grade: cls.grade, - total, - completed, - rate, - }; - })); - return classStats.filter(s => s.total > 0); - } - async getMonthlyStats(tenantId, months = 6) { - const now = new Date(); - const startDate = new Date(now.getFullYear(), now.getMonth() - months + 1, 1); - const tasks = await this.prisma.task.findMany({ - where: { - tenantId, - createdAt: { gte: startDate }, - }, - select: { - createdAt: true, - completions: { - select: { status: true }, - }, - }, - }); - const monthlyData = {}; - for (let i = 0; i < months; i++) { - const date = new Date(now.getFullYear(), now.getMonth() - i, 1); - const key = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}`; - monthlyData[key] = { tasks: 0, completions: 0, completed: 0 }; - } - for (const task of tasks) { - const key = `${task.createdAt.getFullYear()}-${String(task.createdAt.getMonth() + 1).padStart(2, '0')}`; - if (monthlyData[key]) { - monthlyData[key].tasks += 1; - monthlyData[key].completions += task.completions.length; - monthlyData[key].completed += task.completions.filter(c => c.status === create_task_dto_1.CompletionStatus.COMPLETED).length; - } - } - return Object.entries(monthlyData) - .sort(([a], [b]) => a.localeCompare(b)) - .map(([month, data]) => ({ - month, - tasks: data.tasks, - completions: data.completions, - completed: data.completed, - rate: data.completions > 0 - ? Math.round((data.completed / data.completions) * 100) - : 0, - })); - } - async findByClass(tenantId, classId, query) { - const { page = 1, pageSize = 10, status } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId, - targets: { - some: { - classId: classId, - }, - }, - }; - if (status) { - where.status = status; - } - const [items, total] = await Promise.all([ - this.prisma.task.findMany({ - where, - skip, - take, - orderBy: { createdAt: 'desc' }, - include: { - course: { - select: { - id: true, - name: true, - }, - }, - _count: { - select: { - completions: true, - }, - }, - }, - }), - this.prisma.task.count({ where }), - ]); - const itemsWithProgress = await Promise.all(items.map(async (task) => { - const completedCount = await this.prisma.taskCompletion.count({ - where: { - taskId: task.id, - status: create_task_dto_1.CompletionStatus.COMPLETED, - }, - }); - return { - ...task, - completionCount: task._count.completions, - completedCount, - progress: task._count.completions > 0 - ? Math.round((completedCount / task._count.completions) * 100) - : 0, - _count: undefined, - }; - })); - return { - items: itemsWithProgress, - total, - page: +page, - pageSize: +pageSize, - }; - } - async getUpcoming(tenantId, query) { - const { days = 7, limit = 10 } = query; - const now = new Date(); - const endDate = new Date(); - endDate.setDate(now.getDate() + Number(days)); - const tasks = await this.prisma.task.findMany({ - where: { - tenantId, - status: create_task_dto_1.TaskStatus.PUBLISHED, - endDate: { - gte: now, - lte: endDate, - }, - }, - take: Number(limit), - orderBy: { endDate: 'asc' }, - include: { - course: { - select: { - id: true, - name: true, - }, - }, - _count: { - select: { - completions: { - where: { - status: { - not: create_task_dto_1.CompletionStatus.COMPLETED, - }, - }, - }, - }, - }, - }, - }); - return tasks.map((task) => ({ - ...task, - pendingCount: task._count.completions, - daysRemaining: Math.ceil((task.endDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24)), - _count: undefined, - })); - } - async sendReminder(tenantId, taskId) { - const task = await this.prisma.task.findFirst({ - where: { id: taskId, tenantId }, - include: { - completions: { - where: { - status: { - not: create_task_dto_1.CompletionStatus.COMPLETED, - }, - }, - include: { - student: { - select: { - id: true, - name: true, - parentPhone: true, - }, - }, - }, - }, - }, - }); - if (!task) { - throw new common_1.NotFoundException('任务不存在'); - } - const studentsToRemind = task.completions.map((c) => ({ - studentId: c.student.id, - studentName: c.student.name, - parentPhone: c.student.parentPhone, - })); - this.logger.log(`Reminder sent for task ${taskId} to ${studentsToRemind.length} students`); - return { - message: '提醒已发送', - remindedCount: studentsToRemind.length, - students: studentsToRemind, - }; - } - async findAllTemplates(tenantId, query) { - const { page = 1, pageSize = 10, taskType, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - tenantId: tenantId, - status: 'ACTIVE', - }; - if (taskType) { - where.taskType = taskType; - } - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { description: { contains: keyword } }, - ]; - } - const [items, total] = await Promise.all([ - this.prisma.taskTemplate.findMany({ - where, - skip, - take, - orderBy: [ - { isDefault: 'desc' }, - { createdAt: 'desc' }, - ], - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - }, - }), - this.prisma.taskTemplate.count({ where }), - ]); - return { - items, - total, - page: +page, - pageSize: +pageSize, - }; - } - async findOneTemplate(tenantId, id) { - const template = await this.prisma.taskTemplate.findFirst({ - where: { - id: id, - tenantId: tenantId, - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - }, - }); - if (!template) { - throw new common_1.NotFoundException('模板不存在'); - } - return template; - } - async createTemplate(tenantId, userId, dto) { - if (dto.isDefault) { - await this.prisma.taskTemplate.updateMany({ - where: { - tenantId, - taskType: dto.taskType, - isDefault: true, - }, - data: { isDefault: false }, - }); - } - const template = await this.prisma.taskTemplate.create({ - data: { - tenantId: tenantId, - name: dto.name, - description: dto.description, - taskType: dto.taskType, - relatedCourseId: dto.relatedCourseId, - defaultDuration: dto.defaultDuration || 7, - isDefault: dto.isDefault || false, - createdBy: userId, - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - }, - }); - this.logger.log(`Task template created: ${template.id}`); - return template; - } - async updateTemplate(tenantId, id, dto) { - const existing = await this.prisma.taskTemplate.findFirst({ - where: { id, tenantId }, - }); - if (!existing) { - throw new common_1.NotFoundException('模板不存在'); - } - if (dto.isDefault) { - await this.prisma.taskTemplate.updateMany({ - where: { - tenantId, - taskType: existing.taskType, - isDefault: true, - id: { not: id }, - }, - data: { isDefault: false }, - }); - } - const template = await this.prisma.taskTemplate.update({ - where: { id }, - data: { - name: dto.name, - description: dto.description, - relatedCourseId: dto.relatedCourseId, - defaultDuration: dto.defaultDuration, - isDefault: dto.isDefault, - status: dto.status, - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - }, - }); - this.logger.log(`Task template updated: ${id}`); - return template; - } - async deleteTemplate(tenantId, id) { - const existing = await this.prisma.taskTemplate.findFirst({ - where: { id, tenantId }, - }); - if (!existing) { - throw new common_1.NotFoundException('模板不存在'); - } - await this.prisma.taskTemplate.delete({ - where: { id }, - }); - this.logger.log(`Task template deleted: ${id}`); - return { message: '删除成功' }; - } - async getDefaultTemplate(tenantId, taskType) { - const template = await this.prisma.taskTemplate.findFirst({ - where: { - tenantId, - taskType, - isDefault: true, - status: 'ACTIVE', - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - }, - }, - }, - }); - return template; - } - async createFromTemplate(tenantId, userId, templateId, dto) { - const template = await this.findOneTemplate(tenantId, templateId); - const start = dto.startDate ? new Date(dto.startDate) : new Date(); - const end = new Date(start); - end.setDate(end.getDate() + template.defaultDuration); - const task = await this.create(tenantId, userId, { - title: template.name, - description: template.description, - taskType: template.taskType, - targetType: dto.targetType, - targetIds: dto.targetIds, - relatedCourseId: template.relatedCourseId, - startDate: start.toISOString().split('T')[0], - endDate: end.toISOString().split('T')[0], - }); - this.logger.log(`Task created from template: template=${templateId}, task=${task.id}`); - return task; - } -}; -exports.TaskService = TaskService; -exports.TaskService = TaskService = TaskService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], TaskService); -//# sourceMappingURL=task.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/task/task.service.js.map b/reading-platform-backend/dist/src/modules/task/task.service.js.map deleted file mode 100644 index b91d6f5..0000000 --- a/reading-platform-backend/dist/src/modules/task/task.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"task.service.js","sourceRoot":"","sources":["../../../../src/modules/task/task.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.d.ts b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.d.ts deleted file mode 100644 index 2a005ac..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.d.ts +++ /dev/null @@ -1,400 +0,0 @@ -import { TeacherCourseService } from './teacher-course.service'; -export declare class TeacherCourseController { - private readonly teacherCourseService; - constructor(teacherCourseService: TeacherCourseService); - getDashboard(req: any): Promise<{ - stats: { - classCount: number; - studentCount: number; - lessonCount: number; - courseCount: number; - }; - todayLessons: { - id: number; - courseId: number; - courseName: string; - pictureBookName: string; - classId: number; - className: string; - plannedDatetime: Date; - status: string; - duration: number; - }[]; - recommendedCourses: { - gradeTags: any[]; - id: number; - name: string; - pictureBookName: string; - coverImagePath: string; - duration: number; - usageCount: number; - avgRating: number; - }[]; - weeklyStats: { - lessonCount: number; - studentParticipation: number; - totalDuration: number; - avgRating: number; - }; - recentActivities: { - id: number; - type: string; - description: string; - time: Date; - }[]; - }>; - getTodayLessons(req: any): Promise<{ - id: number; - courseId: number; - courseName: string; - pictureBookName: string; - classId: number; - className: string; - plannedDatetime: Date; - status: string; - duration: number; - }[]>; - getRecommendedCourses(req: any): Promise<{ - gradeTags: any[]; - id: number; - name: string; - pictureBookName: string; - coverImagePath: string; - duration: number; - usageCount: number; - avgRating: number; - }[]>; - getWeeklyStats(req: any): Promise<{ - lessonCount: number; - studentParticipation: number; - totalDuration: number; - avgRating: number; - }>; - getLessonTrend(req: any, months?: string): Promise; - getCourseUsage(req: any): Promise<{ - name: string; - value: number; - }[]>; - findAll(req: any, query: any): Promise<{ - items: { - gradeTags: any; - domainTags: any; - id: number; - name: string; - pictureBookName: string; - coverImagePath: string; - duration: number; - usageCount: number; - avgRating: number; - publishedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getClasses(req: any): Promise<{ - id: number; - name: string; - grade: string; - studentCount: number; - lessonCount: number; - myRole: string; - isPrimary: boolean; - }[]>; - findOne(req: any, id: string): Promise<{ - gradeTags: any; - domainTags: any; - ebookPaths: any; - audioPaths: any; - videoPaths: any; - otherResources: any; - posterPaths: any; - tenantCourses: any; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - resources: { - id: number; - createdAt: Date; - sortOrder: number; - courseId: number; - resourceType: string; - resourceName: string; - fileUrl: string; - fileSize: number | null; - mimeType: string | null; - metadata: string | null; - }[]; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - pptPath: string | null; - pptName: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - getAllStudents(req: any, query: any): Promise<{ - items: { - id: number; - name: string; - gender: string; - birthDate: Date; - classId: number; - parentName: string; - parentPhone: string; - createdAt: Date; - class: { - id: number; - name: string; - grade: string; - }; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getClassStudents(req: any, id: string, query: any): Promise<{ - items: { - id: number; - name: string; - gender: string; - birthDate: Date; - parentName: string; - parentPhone: string; - lessonCount: number; - readingCount: number; - createdAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - class: { - id: number; - name: string; - studentCount: number; - lessonCount: number; - grade: string; - }; - }>; - getClassTeachers(req: any, id: string): Promise<{ - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }[]>; - getTeacherSchedules(req: any, query: any): Promise<{ - items: { - className: string; - courseName: string; - hasLesson: boolean; - lessonId: number; - lessonStatus: string; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - lessons: { - id: number; - status: string; - }[]; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getTeacherTimetable(req: any, startDate: string, endDate: string): Promise<{ - date: string; - weekDay: number; - schedules: any[]; - }[]>; - getTodaySchedules(req: any): Promise<{ - className: string; - courseName: string; - hasLesson: boolean; - lessonId: number; - lessonStatus: string; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - lessons: { - id: number; - status: string; - }[]; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }[]>; - createTeacherSchedule(req: any, dto: any): Promise<{ - className: string; - courseName: string; - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - updateTeacherSchedule(req: any, id: string, dto: any): Promise<{ - className: string; - courseName: string; - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - cancelTeacherSchedule(req: any, id: string): Promise<{ - message: string; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js deleted file mode 100644 index b5ef0f9..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js +++ /dev/null @@ -1,227 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TeacherCourseController = void 0; -const common_1 = require("@nestjs/common"); -const teacher_course_service_1 = require("./teacher-course.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -let TeacherCourseController = class TeacherCourseController { - constructor(teacherCourseService) { - this.teacherCourseService = teacherCourseService; - } - getDashboard(req) { - return this.teacherCourseService.getDashboard(req.user.userId, req.user.tenantId); - } - getTodayLessons(req) { - return this.teacherCourseService.getTodayLessons(req.user.userId, req.user.tenantId); - } - getRecommendedCourses(req) { - return this.teacherCourseService.getRecommendedCourses(req.user.tenantId); - } - getWeeklyStats(req) { - return this.teacherCourseService.getWeeklyStats(req.user.userId); - } - getLessonTrend(req, months) { - return this.teacherCourseService.getTeacherLessonTrend(req.user.userId, months ? parseInt(months, 10) : 6); - } - getCourseUsage(req) { - return this.teacherCourseService.getTeacherCourseUsage(req.user.userId); - } - findAll(req, query) { - return this.teacherCourseService.findAll(req.user.userId, req.user.tenantId, query); - } - getClasses(req) { - return this.teacherCourseService.getTeacherClasses(req.user.userId); - } - findOne(req, id) { - return this.teacherCourseService.findOne(+id, req.user.userId, req.user.tenantId); - } - getAllStudents(req, query) { - return this.teacherCourseService.getAllTeacherStudents(req.user.userId, query); - } - getClassStudents(req, id, query) { - return this.teacherCourseService.getClassStudents(req.user.userId, +id, query); - } - getClassTeachers(req, id) { - return this.teacherCourseService.getClassTeachers(req.user.userId, +id); - } - getTeacherSchedules(req, query) { - return this.teacherCourseService.getTeacherSchedules(req.user.userId, query); - } - getTeacherTimetable(req, startDate, endDate) { - return this.teacherCourseService.getTeacherTimetable(req.user.userId, startDate, endDate); - } - getTodaySchedules(req) { - return this.teacherCourseService.getTodaySchedules(req.user.userId); - } - createTeacherSchedule(req, dto) { - return this.teacherCourseService.createTeacherSchedule(req.user.userId, req.user.tenantId, dto); - } - updateTeacherSchedule(req, id, dto) { - return this.teacherCourseService.updateTeacherSchedule(req.user.userId, +id, dto); - } - cancelTeacherSchedule(req, id) { - return this.teacherCourseService.cancelTeacherSchedule(req.user.userId, +id); - } -}; -exports.TeacherCourseController = TeacherCourseController; -__decorate([ - (0, common_1.Get)('dashboard'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getDashboard", null); -__decorate([ - (0, common_1.Get)('dashboard/today'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getTodayLessons", null); -__decorate([ - (0, common_1.Get)('dashboard/recommend'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getRecommendedCourses", null); -__decorate([ - (0, common_1.Get)('dashboard/weekly'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getWeeklyStats", null); -__decorate([ - (0, common_1.Get)('dashboard/lesson-trend'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('months')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getLessonTrend", null); -__decorate([ - (0, common_1.Get)('dashboard/course-usage'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getCourseUsage", null); -__decorate([ - (0, common_1.Get)('courses'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('courses/classes'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getClasses", null); -__decorate([ - (0, common_1.Get)('courses/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "findOne", null); -__decorate([ - (0, common_1.Get)('students'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getAllStudents", null); -__decorate([ - (0, common_1.Get)('classes/:id/students'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getClassStudents", null); -__decorate([ - (0, common_1.Get)('classes/:id/teachers'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getClassTeachers", null); -__decorate([ - (0, common_1.Get)('schedules'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getTeacherSchedules", null); -__decorate([ - (0, common_1.Get)('schedules/timetable'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Query)('startDate')), - __param(2, (0, common_1.Query)('endDate')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, String]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getTeacherTimetable", null); -__decorate([ - (0, common_1.Get)('schedules/today'), - __param(0, (0, common_1.Request)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "getTodaySchedules", null); -__decorate([ - (0, common_1.Post)('schedules'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "createTeacherSchedule", null); -__decorate([ - (0, common_1.Put)('schedules/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __param(2, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String, Object]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "updateTeacherSchedule", null); -__decorate([ - (0, common_1.Delete)('schedules/:id'), - __param(0, (0, common_1.Request)()), - __param(1, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, String]), - __metadata("design:returntype", void 0) -], TeacherCourseController.prototype, "cancelTeacherSchedule", null); -exports.TeacherCourseController = TeacherCourseController = __decorate([ - (0, common_1.Controller)('teacher'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('teacher'), - __metadata("design:paramtypes", [teacher_course_service_1.TeacherCourseService]) -], TeacherCourseController); -//# sourceMappingURL=teacher-course.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js.map b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js.map deleted file mode 100644 index 6ae197a..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"teacher-course.controller.js","sourceRoot":"","sources":["../../../../src/modules/teacher-course/teacher-course.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.d.ts b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.d.ts deleted file mode 100644 index 239c825..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class TeacherCourseModule { -} diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js deleted file mode 100644 index a16bb52..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TeacherCourseModule = void 0; -const common_1 = require("@nestjs/common"); -const teacher_course_controller_1 = require("./teacher-course.controller"); -const teacher_course_service_1 = require("./teacher-course.service"); -let TeacherCourseModule = class TeacherCourseModule { -}; -exports.TeacherCourseModule = TeacherCourseModule; -exports.TeacherCourseModule = TeacherCourseModule = __decorate([ - (0, common_1.Module)({ - controllers: [teacher_course_controller_1.TeacherCourseController], - providers: [teacher_course_service_1.TeacherCourseService], - exports: [teacher_course_service_1.TeacherCourseService], - }) -], TeacherCourseModule); -//# sourceMappingURL=teacher-course.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js.map b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js.map deleted file mode 100644 index a214da0..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"teacher-course.module.js","sourceRoot":"","sources":["../../../../src/modules/teacher-course/teacher-course.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2EAAsE;AACtE,qEAAgE;AAOzD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAL/B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,mDAAuB,CAAC;QACtC,SAAS,EAAE,CAAC,6CAAoB,CAAC;QACjC,OAAO,EAAE,CAAC,6CAAoB,CAAC;KAChC,CAAC;GACW,mBAAmB,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.d.ts b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.d.ts deleted file mode 100644 index c91fb06..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.d.ts +++ /dev/null @@ -1,414 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -export interface TeacherLessonTrendItem { - month: string; - lessonCount: number; - avgRating: number; -} -export declare class TeacherCourseService { - private prisma; - private readonly logger; - constructor(prisma: PrismaService); - getDashboard(teacherId: number, tenantId: number): Promise<{ - stats: { - classCount: number; - studentCount: number; - lessonCount: number; - courseCount: number; - }; - todayLessons: { - id: number; - courseId: number; - courseName: string; - pictureBookName: string; - classId: number; - className: string; - plannedDatetime: Date; - status: string; - duration: number; - }[]; - recommendedCourses: { - gradeTags: any[]; - id: number; - name: string; - pictureBookName: string; - coverImagePath: string; - duration: number; - usageCount: number; - avgRating: number; - }[]; - weeklyStats: { - lessonCount: number; - studentParticipation: number; - totalDuration: number; - avgRating: number; - }; - recentActivities: { - id: number; - type: string; - description: string; - time: Date; - }[]; - }>; - private getTeacherStats; - getTodayLessons(teacherId: number, tenantId: number): Promise<{ - id: number; - courseId: number; - courseName: string; - pictureBookName: string; - classId: number; - className: string; - plannedDatetime: Date; - status: string; - duration: number; - }[]>; - getRecommendedCourses(tenantId: number): Promise<{ - gradeTags: any[]; - id: number; - name: string; - pictureBookName: string; - coverImagePath: string; - duration: number; - usageCount: number; - avgRating: number; - }[]>; - getWeeklyStats(teacherId: number): Promise<{ - lessonCount: number; - studentParticipation: number; - totalDuration: number; - avgRating: number; - }>; - private getRecentActivities; - private getActivityDescription; - getTeacherLessonTrend(teacherId: number, months?: number): Promise; - getTeacherCourseUsage(teacherId: number): Promise<{ - name: string; - value: number; - }[]>; - findAll(teacherId: number, tenantId: number, query: any): Promise<{ - items: { - gradeTags: any; - domainTags: any; - id: number; - name: string; - pictureBookName: string; - coverImagePath: string; - duration: number; - usageCount: number; - avgRating: number; - publishedAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - }>; - findOne(courseId: number, teacherId: number, tenantId: number): Promise<{ - gradeTags: any; - domainTags: any; - ebookPaths: any; - audioPaths: any; - videoPaths: any; - otherResources: any; - posterPaths: any; - tenantCourses: any; - scripts: { - interactionPoints: any; - resourceIds: any; - pages: { - resourceIds: any; - id: number; - createdAt: Date; - updatedAt: Date; - pageNumber: number; - scriptId: number; - questions: string | null; - interactionComponent: string | null; - teacherNotes: string | null; - }[]; - id: number; - createdAt: Date; - updatedAt: Date; - duration: number; - sortOrder: number; - courseId: number; - stepIndex: number; - stepName: string; - stepType: string; - objective: string | null; - teacherScript: string | null; - }[]; - activities: { - onlineMaterials: any; - objectives: any; - id: number; - createdAt: Date; - name: string; - duration: number | null; - sortOrder: number; - courseId: number; - domain: string | null; - domainTagId: number | null; - activityType: string; - offlineMaterials: string | null; - activityGuide: string | null; - }[]; - resources: { - id: number; - createdAt: Date; - sortOrder: number; - courseId: number; - resourceType: string; - resourceName: string; - fileUrl: string; - fileSize: number | null; - mimeType: string | null; - metadata: string | null; - }[]; - id: number; - description: string | null; - createdBy: number | null; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - pictureBookId: number | null; - pictureBookName: string | null; - coverImagePath: string | null; - pptPath: string | null; - pptName: string | null; - tools: string | null; - studentMaterials: string | null; - lessonPlanData: string | null; - activitiesData: string | null; - assessmentData: string | null; - duration: number; - version: string; - submittedAt: Date | null; - submittedBy: number | null; - reviewedAt: Date | null; - reviewedBy: number | null; - reviewComment: string | null; - reviewChecklist: string | null; - parentId: number | null; - isLatest: boolean; - usageCount: number; - teacherCount: number; - avgRating: number; - publishedAt: Date | null; - }>; - getTeacherClasses(teacherId: number): Promise<{ - id: number; - name: string; - grade: string; - studentCount: number; - lessonCount: number; - myRole: string; - isPrimary: boolean; - }[]>; - getClassTeachers(teacherId: number, classId: number): Promise<{ - teacherId: number; - teacherName: string; - teacherPhone: string; - role: string; - isPrimary: boolean; - }[]>; - getAllTeacherStudents(teacherId: number, query: any): Promise<{ - items: { - id: number; - name: string; - gender: string; - birthDate: Date; - classId: number; - parentName: string; - parentPhone: string; - createdAt: Date; - class: { - id: number; - name: string; - grade: string; - }; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getTeacherClassIds(teacherId: number): Promise; - getClassStudents(teacherId: number, classId: number, query: any): Promise<{ - items: { - id: number; - name: string; - gender: string; - birthDate: Date; - parentName: string; - parentPhone: string; - lessonCount: number; - readingCount: number; - createdAt: Date; - }[]; - total: number; - page: number; - pageSize: number; - class: { - id: number; - name: string; - studentCount: number; - lessonCount: number; - grade: string; - }; - }>; - private parseJsonArray; - getTeacherSchedules(teacherId: number, query: any): Promise<{ - items: { - className: string; - courseName: string; - hasLesson: boolean; - lessonId: number; - lessonStatus: string; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - lessons: { - id: number; - status: string; - }[]; - class: { - id: number; - name: string; - grade: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }[]; - total: number; - page: number; - pageSize: number; - }>; - getTeacherTimetable(teacherId: number, startDate: string, endDate: string): Promise<{ - date: string; - weekDay: number; - schedules: any[]; - }[]>; - getTodaySchedules(teacherId: number): Promise<{ - className: string; - courseName: string; - hasLesson: boolean; - lessonId: number; - lessonStatus: string; - course: { - id: number; - name: string; - pictureBookName: string; - duration: number; - }; - lessons: { - id: number; - status: string; - }[]; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }[]>; - private parseTimeToMinutes; - private isTimeOverlapping; - private checkScheduleConflict; - createTeacherSchedule(teacherId: number, tenantId: number, dto: any): Promise<{ - className: string; - courseName: string; - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - updateTeacherSchedule(teacherId: number, id: number, dto: any): Promise<{ - className: string; - courseName: string; - course: { - id: number; - name: string; - }; - class: { - id: number; - name: string; - }; - id: number; - tenantId: number; - createdBy: number; - status: string; - createdAt: Date; - updatedAt: Date; - classId: number; - teacherId: number | null; - courseId: number; - scheduledDate: Date | null; - scheduledTime: string | null; - weekDay: number | null; - repeatType: string; - repeatEndDate: Date | null; - source: string; - note: string | null; - reminderSent: boolean; - reminderSentAt: Date | null; - }>; - cancelTeacherSchedule(teacherId: number, id: number): Promise<{ - message: string; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js deleted file mode 100644 index dd4e02e..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js +++ /dev/null @@ -1,960 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var TeacherCourseService_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TeacherCourseService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -let TeacherCourseService = TeacherCourseService_1 = class TeacherCourseService { - constructor(prisma) { - this.prisma = prisma; - this.logger = new common_1.Logger(TeacherCourseService_1.name); - } - async getDashboard(teacherId, tenantId) { - const [stats, todayLessons, recommendedCourses, weeklyStats, recentActivities] = await Promise.all([ - this.getTeacherStats(teacherId, tenantId), - this.getTodayLessons(teacherId, tenantId), - this.getRecommendedCourses(tenantId), - this.getWeeklyStats(teacherId), - this.getRecentActivities(teacherId), - ]); - return { - stats, - todayLessons, - recommendedCourses, - weeklyStats, - recentActivities, - }; - } - async getTeacherStats(teacherId, tenantId) { - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { - teacherId: teacherId, - }, - include: { - class: { - select: { - id: true, - studentCount: true, - tenantId: true, - }, - }, - }, - }); - const classes = classTeachers.filter((ct) => ct.class.tenantId === tenantId); - const classCount = classes.length; - const studentCount = classes.reduce((sum, ct) => sum + ct.class.studentCount, 0); - const lessonCount = await this.prisma.lesson.count({ - where: { - teacherId: teacherId, - status: 'COMPLETED', - }, - }); - const courseCount = await this.prisma.tenantCourse.count({ - where: { - tenantId: tenantId, - authorized: true, - course: { - status: 'PUBLISHED', - }, - }, - }); - return { - classCount, - studentCount, - lessonCount, - courseCount, - }; - } - async getTodayLessons(teacherId, tenantId) { - const today = new Date(); - today.setHours(0, 0, 0, 0); - const tomorrow = new Date(today); - tomorrow.setDate(tomorrow.getDate() + 1); - const lessons = await this.prisma.lesson.findMany({ - where: { - teacherId: teacherId, - tenantId: tenantId, - plannedDatetime: { - gte: today, - lt: tomorrow, - }, - }, - orderBy: { - plannedDatetime: 'asc', - }, - include: { - course: { - select: { - id: true, - name: true, - pictureBookName: true, - duration: true, - }, - }, - class: { - select: { - id: true, - name: true, - }, - }, - }, - }); - return lessons.map((lesson) => ({ - id: lesson.id, - courseId: lesson.courseId, - courseName: lesson.course.name, - pictureBookName: lesson.course.pictureBookName, - classId: lesson.classId, - className: lesson.class.name, - plannedDatetime: lesson.plannedDatetime, - status: lesson.status, - duration: lesson.course.duration, - })); - } - async getRecommendedCourses(tenantId) { - const courses = await this.prisma.course.findMany({ - where: { - status: 'PUBLISHED', - tenantCourses: { - some: { - tenantId: tenantId, - authorized: true, - }, - }, - }, - orderBy: [ - { usageCount: 'desc' }, - { avgRating: 'desc' }, - ], - take: 6, - select: { - id: true, - name: true, - pictureBookName: true, - coverImagePath: true, - duration: true, - usageCount: true, - avgRating: true, - gradeTags: true, - }, - }); - return courses.map((course) => ({ - ...course, - gradeTags: this.parseJsonArray(course.gradeTags), - })); - } - async getWeeklyStats(teacherId) { - const now = new Date(); - const dayOfWeek = now.getDay(); - const monday = new Date(now); - monday.setDate(now.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1)); - monday.setHours(0, 0, 0, 0); - const sunday = new Date(monday); - sunday.setDate(monday.getDate() + 7); - const lessonCount = await this.prisma.lesson.count({ - where: { - teacherId: teacherId, - status: 'COMPLETED', - endDatetime: { - gte: monday, - lt: sunday, - }, - }, - }); - const studentRecords = await this.prisma.studentRecord.findMany({ - where: { - lesson: { - teacherId: teacherId, - status: 'COMPLETED', - endDatetime: { - gte: monday, - lt: sunday, - }, - }, - }, - select: { - studentId: true, - }, - distinct: ['studentId'], - }); - const studentParticipation = studentRecords.length; - const lessons = await this.prisma.lesson.findMany({ - where: { - teacherId: teacherId, - status: 'COMPLETED', - endDatetime: { - gte: monday, - lt: sunday, - }, - }, - select: { - actualDuration: true, - course: { - select: { - duration: true, - }, - }, - }, - }); - const totalDuration = lessons.reduce((sum, lesson) => { - return sum + (lesson.actualDuration || lesson.course.duration || 0); - }, 0); - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: { - teacherId: teacherId, - lesson: { - endDatetime: { - gte: monday, - lt: sunday, - }, - }, - }, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - }, - }); - let avgRating = 0; - if (feedbacks.length > 0) { - const totalRating = feedbacks.reduce((sum, f) => { - const ratings = [f.designQuality, f.participation, f.goalAchievement].filter(r => r !== null); - const avg = ratings.length > 0 ? ratings.reduce((s, r) => s + r, 0) / ratings.length : 0; - return sum + avg; - }, 0); - avgRating = Math.round((totalRating / feedbacks.length) * 10) / 10; - } - return { - lessonCount, - studentParticipation, - totalDuration, - avgRating, - }; - } - async getRecentActivities(teacherId, limit = 10) { - const lessons = await this.prisma.lesson.findMany({ - where: { - teacherId: teacherId, - }, - orderBy: { - updatedAt: 'desc', - }, - take: limit, - select: { - id: true, - status: true, - updatedAt: true, - course: { - select: { - name: true, - }, - }, - }, - }); - return lessons.map((lesson) => ({ - id: lesson.id, - type: lesson.status, - description: this.getActivityDescription(lesson.status, lesson.course?.name), - time: lesson.updatedAt, - })); - } - getActivityDescription(status, courseName) { - const course = courseName || '课程'; - switch (status) { - case 'COMPLETED': - return `完成《${course}》授课`; - case 'IN_PROGRESS': - return `正在进行《${course}》授课`; - case 'PLANNED': - return `计划《${course}》授课`; - case 'CANCELLED': - return `取消《${course}》授课`; - default: - return `操作《${course}》`; - } - } - async getTeacherLessonTrend(teacherId, months = 6) { - const result = []; - const now = new Date(); - for (let i = months - 1; i >= 0; i--) { - const startDate = new Date(now.getFullYear(), now.getMonth() - i, 1); - const endDate = new Date(now.getFullYear(), now.getMonth() - i + 1, 0, 23, 59, 59); - const lessonCount = await this.prisma.lesson.count({ - where: { - teacherId, - status: 'COMPLETED', - createdAt: { - gte: startDate, - lte: endDate, - }, - }, - }); - const feedbacks = await this.prisma.lessonFeedback.findMany({ - where: { - teacherId, - lesson: { - endDatetime: { - gte: startDate, - lte: endDate, - }, - }, - }, - select: { - designQuality: true, - participation: true, - goalAchievement: true, - }, - }); - let avgRating = 0; - if (feedbacks.length > 0) { - const totalRating = feedbacks.reduce((sum, f) => { - const ratings = [f.designQuality, f.participation, f.goalAchievement].filter((r) => r !== null); - const avg = ratings.length > 0 ? ratings.reduce((s, r) => s + r, 0) / ratings.length : 0; - return sum + avg; - }, 0); - avgRating = Math.round((totalRating / feedbacks.length) * 10) / 10; - } - const monthLabel = `${startDate.getFullYear()}-${String(startDate.getMonth() + 1).padStart(2, '0')}`; - result.push({ - month: monthLabel, - lessonCount, - avgRating, - }); - } - return result; - } - async getTeacherCourseUsage(teacherId) { - const lessons = await this.prisma.lesson.findMany({ - where: { - teacherId, - status: 'COMPLETED', - }, - select: { - courseId: true, - course: { - select: { - name: true, - }, - }, - }, - }); - const courseMap = new Map(); - lessons.forEach((lesson) => { - const courseName = lesson.course?.name || '未知课程'; - courseMap.set(courseName, (courseMap.get(courseName) || 0) + 1); - }); - const result = Array.from(courseMap.entries()) - .map(([name, value]) => ({ name, value })) - .sort((a, b) => b.value - a.value) - .slice(0, 6); - return result; - } - async findAll(teacherId, tenantId, query) { - const { page = 1, pageSize = 12, grade, domain, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - status: 'PUBLISHED', - tenantCourses: { - some: { - tenantId: tenantId, - authorized: true, - }, - }, - }; - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { pictureBookName: { contains: keyword } }, - ]; - } - if (grade) { - where.gradeTags = { - contains: grade, - }; - } - if (domain) { - where.domainTags = { - contains: domain, - }; - } - const [items, total] = await Promise.all([ - this.prisma.course.findMany({ - where, - skip, - take, - orderBy: { publishedAt: 'desc' }, - select: { - id: true, - name: true, - pictureBookName: true, - coverImagePath: true, - gradeTags: true, - domainTags: true, - duration: true, - avgRating: true, - usageCount: true, - publishedAt: true, - }, - }), - this.prisma.course.count({ where }), - ]); - const parsedItems = items.map((item) => ({ - ...item, - gradeTags: JSON.parse(item.gradeTags || '[]'), - domainTags: JSON.parse(item.domainTags || '[]'), - })); - return { - items: parsedItems, - total, - page: +page, - pageSize: +pageSize, - }; - } - async findOne(courseId, teacherId, tenantId) { - const course = await this.prisma.course.findUnique({ - where: { id: courseId }, - include: { - resources: { - orderBy: { sortOrder: 'asc' }, - }, - scripts: { - orderBy: { sortOrder: 'asc' }, - include: { - pages: { - orderBy: { pageNumber: 'asc' }, - }, - }, - }, - activities: { - orderBy: { sortOrder: 'asc' }, - }, - tenantCourses: { - where: { tenantId }, - }, - }, - }); - if (!course) { - throw new common_1.NotFoundException(`Course #${courseId} not found`); - } - if (course.status !== 'PUBLISHED') { - throw new common_1.ForbiddenException('该课程未发布'); - } - const tenantCourse = course.tenantCourses.find((tc) => tc.tenantId === tenantId); - if (!tenantCourse || !tenantCourse.authorized) { - throw new common_1.ForbiddenException('您的学校未获得此课程的授权'); - } - return { - ...course, - gradeTags: JSON.parse(course.gradeTags || '[]'), - domainTags: JSON.parse(course.domainTags || '[]'), - ebookPaths: course.ebookPaths ? JSON.parse(course.ebookPaths) : null, - audioPaths: course.audioPaths ? JSON.parse(course.audioPaths) : null, - videoPaths: course.videoPaths ? JSON.parse(course.videoPaths) : null, - otherResources: course.otherResources ? JSON.parse(course.otherResources) : null, - posterPaths: course.posterPaths ? JSON.parse(course.posterPaths) : null, - tenantCourses: undefined, - scripts: course.scripts.map((script) => ({ - ...script, - interactionPoints: script.interactionPoints ? JSON.parse(script.interactionPoints) : null, - resourceIds: script.resourceIds ? JSON.parse(script.resourceIds) : null, - pages: script.pages?.map((page) => ({ - ...page, - resourceIds: page.resourceIds ? JSON.parse(page.resourceIds) : null, - })), - })), - activities: course.activities.map((activity) => ({ - ...activity, - onlineMaterials: activity.onlineMaterials ? JSON.parse(activity.onlineMaterials) : null, - objectives: activity.objectives ? JSON.parse(activity.objectives) : null, - })), - }; - } - async getTeacherClasses(teacherId) { - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { teacherId }, - include: { - class: { - select: { - id: true, - name: true, - grade: true, - studentCount: true, - lessonCount: true, - }, - }, - }, - orderBy: [ - { isPrimary: 'desc' }, - { createdAt: 'asc' }, - ], - }); - return classTeachers.map((ct) => ({ - id: ct.class.id, - name: ct.class.name, - grade: ct.class.grade, - studentCount: ct.class.studentCount, - lessonCount: ct.class.lessonCount, - myRole: ct.role, - isPrimary: ct.isPrimary, - })); - } - async getClassTeachers(teacherId, classId) { - const teacherClass = await this.prisma.classTeacher.findFirst({ - where: { teacherId, classId }, - }); - if (!teacherClass) { - throw new common_1.ForbiddenException('您没有权限查看该班级'); - } - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { classId }, - include: { - teacher: { - select: { - id: true, - name: true, - phone: true, - }, - }, - }, - orderBy: [ - { isPrimary: 'desc' }, - { createdAt: 'asc' }, - ], - }); - return classTeachers.map((ct) => ({ - teacherId: ct.teacher.id, - teacherName: ct.teacher.name, - teacherPhone: ct.teacher.phone, - role: ct.role, - isPrimary: ct.isPrimary, - })); - } - async getAllTeacherStudents(teacherId, query) { - const { page = 1, pageSize = 20, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { teacherId }, - select: { classId: true }, - }); - const classIds = classTeachers.map((ct) => ct.classId); - if (classIds.length === 0) { - return { - items: [], - total: 0, - page: +page, - pageSize: +pageSize, - }; - } - const where = { - classId: { in: classIds }, - }; - if (keyword) { - where.name = { contains: keyword }; - } - const [students, total] = await Promise.all([ - this.prisma.student.findMany({ - where, - skip, - take, - select: { - id: true, - name: true, - gender: true, - birthDate: true, - classId: true, - parentName: true, - parentPhone: true, - createdAt: true, - class: { - select: { - id: true, - name: true, - grade: true, - }, - }, - }, - orderBy: { createdAt: 'desc' }, - }), - this.prisma.student.count({ where }), - ]); - return { - items: students.map((student) => ({ - id: student.id, - name: student.name, - gender: student.gender, - birthDate: student.birthDate, - classId: student.classId, - parentName: student.parentName, - parentPhone: student.parentPhone, - createdAt: student.createdAt, - class: student.class, - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async getTeacherClassIds(teacherId) { - const classTeachers = await this.prisma.classTeacher.findMany({ - where: { teacherId }, - select: { classId: true }, - }); - return classTeachers.map((ct) => ct.classId); - } - async getClassStudents(teacherId, classId, query) { - const { page = 1, pageSize = 20, keyword } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const teacherClass = await this.prisma.classTeacher.findFirst({ - where: { - teacherId, - classId, - }, - include: { - class: { - select: { - id: true, - name: true, - grade: true, - studentCount: true, - lessonCount: true, - }, - }, - }, - }); - if (!teacherClass) { - throw new common_1.ForbiddenException('您没有权限查看该班级或班级不存在'); - } - const classEntity = teacherClass.class; - const where = { - classId: classId, - }; - if (keyword) { - where.name = { contains: keyword }; - } - const [students, total] = await Promise.all([ - this.prisma.student.findMany({ - where, - skip, - take, - select: { - id: true, - name: true, - gender: true, - birthDate: true, - parentName: true, - parentPhone: true, - lessonCount: true, - readingCount: true, - createdAt: true, - }, - orderBy: { createdAt: 'desc' }, - }), - this.prisma.student.count({ where }), - ]); - return { - items: students.map(student => ({ - id: student.id, - name: student.name, - gender: student.gender, - birthDate: student.birthDate, - parentName: student.parentName, - parentPhone: student.parentPhone, - lessonCount: student.lessonCount, - readingCount: student.readingCount, - createdAt: student.createdAt, - })), - total, - page: +page, - pageSize: +pageSize, - class: classEntity, - }; - } - parseJsonArray(value) { - if (!value) - return []; - if (typeof value === 'string') { - try { - return JSON.parse(value); - } - catch { - return []; - } - } - return Array.isArray(value) ? value : []; - } - async getTeacherSchedules(teacherId, query) { - const { page = 1, pageSize = 20, startDate, endDate, status } = query; - const skip = (page - 1) * pageSize; - const take = +pageSize; - const where = { - teacherId, - status: status || 'ACTIVE', - }; - if (startDate || endDate) { - where.scheduledDate = {}; - if (startDate) - where.scheduledDate.gte = new Date(startDate); - if (endDate) - where.scheduledDate.lte = new Date(endDate); - } - const [items, total] = await Promise.all([ - this.prisma.schedulePlan.findMany({ - where, - skip, - take, - orderBy: { scheduledDate: 'asc' }, - include: { - class: { select: { id: true, name: true, grade: true } }, - course: { select: { id: true, name: true, pictureBookName: true, duration: true } }, - lessons: { - where: { teacherId }, - select: { id: true, status: true }, - take: 1, - }, - }, - }), - this.prisma.schedulePlan.count({ where }), - ]); - return { - items: items.map((item) => ({ - ...item, - className: item.class.name, - courseName: item.course.name, - hasLesson: item.lessons.length > 0, - lessonId: item.lessons[0]?.id, - lessonStatus: item.lessons[0]?.status, - })), - total, - page: +page, - pageSize: +pageSize, - }; - } - async getTeacherTimetable(teacherId, startDate, endDate) { - const schedules = await this.prisma.schedulePlan.findMany({ - where: { - teacherId, - status: 'ACTIVE', - scheduledDate: { - gte: new Date(startDate), - lte: new Date(endDate), - }, - }, - orderBy: [{ scheduledDate: 'asc' }, { scheduledTime: 'asc' }], - include: { - class: { select: { id: true, name: true, grade: true } }, - course: { select: { id: true, name: true, pictureBookName: true, duration: true } }, - lessons: { - where: { teacherId }, - select: { id: true, status: true }, - take: 1, - }, - }, - }); - const timetable = {}; - const start = new Date(startDate); - const end = new Date(endDate); - for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) { - const dateStr = d.toISOString().split('T')[0]; - timetable[dateStr] = []; - } - schedules.forEach((schedule) => { - const dateStr = schedule.scheduledDate.toISOString().split('T')[0]; - if (timetable[dateStr]) { - timetable[dateStr].push({ - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - hasLesson: schedule.lessons.length > 0, - lessonId: schedule.lessons[0]?.id, - lessonStatus: schedule.lessons[0]?.status, - }); - } - }); - return Object.entries(timetable).map(([date, items]) => ({ - date, - weekDay: new Date(date).getDay(), - schedules: items, - })); - } - async getTodaySchedules(teacherId) { - const today = new Date(); - today.setHours(0, 0, 0, 0); - const tomorrow = new Date(today); - tomorrow.setDate(tomorrow.getDate() + 1); - const schedules = await this.prisma.schedulePlan.findMany({ - where: { - teacherId, - status: 'ACTIVE', - scheduledDate: { - gte: today, - lt: tomorrow, - }, - }, - orderBy: { scheduledTime: 'asc' }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true, pictureBookName: true, duration: true } }, - lessons: { - where: { teacherId }, - select: { id: true, status: true }, - take: 1, - }, - }, - }); - return schedules.map((schedule) => ({ - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - hasLesson: schedule.lessons.length > 0, - lessonId: schedule.lessons[0]?.id, - lessonStatus: schedule.lessons[0]?.status, - })); - } - parseTimeToMinutes(timeStr) { - const [hours, minutes] = timeStr.split(':').map(Number); - return hours * 60 + minutes; - } - isTimeOverlapping(time1, time2) { - const [start1, end1] = time1.split('-').map(t => this.parseTimeToMinutes(t.trim())); - const [start2, end2] = time2.split('-').map(t => this.parseTimeToMinutes(t.trim())); - return start1 < end2 && start2 < end1; - } - async checkScheduleConflict(teacherId, scheduledDate, scheduledTime, excludeScheduleId) { - const dateStart = new Date(scheduledDate + 'T00:00:00.000Z'); - const dateEnd = new Date(scheduledDate + 'T23:59:59.999Z'); - const existingSchedules = await this.prisma.schedulePlan.findMany({ - where: { - teacherId, - scheduledDate: { - gte: dateStart, - lte: dateEnd, - }, - status: 'ACTIVE', - ...(excludeScheduleId && { id: { not: excludeScheduleId } }), - }, - include: { - class: { select: { name: true } }, - course: { select: { name: true } }, - }, - }); - for (const schedule of existingSchedules) { - if (schedule.scheduledTime && this.isTimeOverlapping(scheduledTime, schedule.scheduledTime)) { - return { - courseName: schedule.course.name, - className: schedule.class.name, - scheduledTime: schedule.scheduledTime, - }; - } - } - return null; - } - async createTeacherSchedule(teacherId, tenantId, dto) { - const classTeacher = await this.prisma.classTeacher.findFirst({ - where: { teacherId, classId: dto.classId }, - }); - if (!classTeacher) { - throw new common_1.ForbiddenException('您没有权限在此班级排课'); - } - const tenantCourse = await this.prisma.tenantCourse.findFirst({ - where: { tenantId, courseId: dto.courseId, authorized: true }, - }); - if (!tenantCourse) { - throw new common_1.ForbiddenException('该课程未授权或不存在'); - } - if (dto.scheduledDate && dto.scheduledTime) { - const conflict = await this.checkScheduleConflict(teacherId, dto.scheduledDate, dto.scheduledTime); - if (conflict) { - throw new common_1.ConflictException(`时间冲突:您在 ${conflict.scheduledTime} 已有排课「${conflict.courseName}」(${conflict.className}),请选择其他时间段`); - } - } - const schedule = await this.prisma.schedulePlan.create({ - data: { - tenantId, - classId: dto.classId, - courseId: dto.courseId, - teacherId, - scheduledDate: dto.scheduledDate ? new Date(dto.scheduledDate) : null, - scheduledTime: dto.scheduledTime, - weekDay: dto.weekDay, - repeatType: dto.repeatType || 'NONE', - repeatEndDate: dto.repeatEndDate ? new Date(dto.repeatEndDate) : null, - source: 'TEACHER', - createdBy: teacherId, - note: dto.note, - status: 'ACTIVE', - }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true } }, - }, - }); - this.logger.log(`Teacher schedule created: ${schedule.id} by teacher ${teacherId}`); - return { - ...schedule, - className: schedule.class.name, - courseName: schedule.course.name, - }; - } - async updateTeacherSchedule(teacherId, id, dto) { - const schedule = await this.prisma.schedulePlan.findFirst({ - where: { id, teacherId }, - }); - if (!schedule) { - throw new common_1.NotFoundException('排课计划不存在或无权限'); - } - const updated = await this.prisma.schedulePlan.update({ - where: { id }, - data: { - scheduledDate: dto.scheduledDate ? new Date(dto.scheduledDate) : undefined, - scheduledTime: dto.scheduledTime, - weekDay: dto.weekDay, - repeatType: dto.repeatType, - repeatEndDate: dto.repeatEndDate ? new Date(dto.repeatEndDate) : undefined, - note: dto.note, - status: dto.status, - }, - include: { - class: { select: { id: true, name: true } }, - course: { select: { id: true, name: true } }, - }, - }); - this.logger.log(`Teacher schedule updated: ${id}`); - return { - ...updated, - className: updated.class.name, - courseName: updated.course.name, - }; - } - async cancelTeacherSchedule(teacherId, id) { - const schedule = await this.prisma.schedulePlan.findFirst({ - where: { id, teacherId }, - }); - if (!schedule) { - throw new common_1.NotFoundException('排课计划不存在或无权限'); - } - await this.prisma.schedulePlan.update({ - where: { id }, - data: { status: 'CANCELLED' }, - }); - this.logger.log(`Teacher schedule cancelled: ${id}`); - return { message: '取消成功' }; - } -}; -exports.TeacherCourseService = TeacherCourseService; -exports.TeacherCourseService = TeacherCourseService = TeacherCourseService_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], TeacherCourseService); -//# sourceMappingURL=teacher-course.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js.map b/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js.map deleted file mode 100644 index 7314dee..0000000 --- a/reading-platform-backend/dist/src/modules/teacher-course/teacher-course.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"teacher-course.service.js","sourceRoot":"","sources":["../../../../src/modules/teacher-course/teacher-course.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.d.ts b/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.d.ts deleted file mode 100644 index 5b9e960..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -export declare class TenantQueryDto { - page?: number; - pageSize?: number; - keyword?: string; - status?: string; - packageType?: string; -} -export declare class CreateTenantDto { - name: string; - loginAccount: string; - password?: string; - address?: string; - contactPerson?: string; - contactPhone?: string; - packageType?: string; - teacherQuota?: number; - studentQuota?: number; - startDate?: string; - expireDate?: string; -} -export declare class UpdateTenantDto { - name?: string; - address?: string; - contactPerson?: string; - contactPhone?: string; - packageType?: string; - teacherQuota?: number; - studentQuota?: number; - startDate?: string; - expireDate?: string; - status?: string; -} -export declare class UpdateTenantQuotaDto { - packageType?: string; - teacherQuota?: number; - studentQuota?: number; -} -export declare class UpdateTenantStatusDto { - status: string; -} diff --git a/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js b/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js deleted file mode 100644 index 0edc9c6..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js +++ /dev/null @@ -1,206 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UpdateTenantStatusDto = exports.UpdateTenantQuotaDto = exports.UpdateTenantDto = exports.CreateTenantDto = exports.TenantQueryDto = void 0; -const class_validator_1 = require("class-validator"); -class TenantQueryDto { - constructor() { - this.page = 1; - this.pageSize = 10; - } -} -exports.TenantQueryDto = TenantQueryDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], TenantQueryDto.prototype, "page", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - (0, class_validator_1.Max)(100), - __metadata("design:type", Number) -], TenantQueryDto.prototype, "pageSize", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], TenantQueryDto.prototype, "keyword", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], TenantQueryDto.prototype, "status", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], TenantQueryDto.prototype, "packageType", void 0); -class CreateTenantDto { - constructor() { - this.packageType = 'STANDARD'; - this.teacherQuota = 20; - this.studentQuota = 200; - } -} -exports.CreateTenantDto = CreateTenantDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '学校名称不能为空' }), - __metadata("design:type", String) -], CreateTenantDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '登录账号不能为空' }), - (0, class_validator_1.Matches)(/^[a-zA-Z][a-zA-Z0-9_]{3,19}$/, { - message: '登录账号必须以字母开头,4-20位字母、数字或下划线', - }), - __metadata("design:type", String) -], CreateTenantDto.prototype, "loginAccount", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.Matches)(/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{6,20}$/, { - message: '密码至少6位,需包含字母和数字', - }), - __metadata("design:type", String) -], CreateTenantDto.prototype, "password", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateTenantDto.prototype, "address", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateTenantDto.prototype, "contactPerson", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.Matches)(/^1[3-9]\d{9}$/, { message: '请输入正确的手机号' }), - __metadata("design:type", String) -], CreateTenantDto.prototype, "contactPhone", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], CreateTenantDto.prototype, "packageType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], CreateTenantDto.prototype, "teacherQuota", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], CreateTenantDto.prototype, "studentQuota", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateTenantDto.prototype, "startDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], CreateTenantDto.prototype, "expireDate", void 0); -class UpdateTenantDto { -} -exports.UpdateTenantDto = UpdateTenantDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '学校名称不能为空' }), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "name", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "address", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "contactPerson", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - (0, class_validator_1.Matches)(/^1[3-9]\d{9}$/, { message: '请输入正确的手机号' }), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "contactPhone", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "packageType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], UpdateTenantDto.prototype, "teacherQuota", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], UpdateTenantDto.prototype, "studentQuota", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "startDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsDateString)(), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "expireDate", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTenantDto.prototype, "status", void 0); -class UpdateTenantQuotaDto { -} -exports.UpdateTenantQuotaDto = UpdateTenantQuotaDto; -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsString)(), - __metadata("design:type", String) -], UpdateTenantQuotaDto.prototype, "packageType", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], UpdateTenantQuotaDto.prototype, "teacherQuota", void 0); -__decorate([ - (0, class_validator_1.IsOptional)(), - (0, class_validator_1.IsInt)(), - (0, class_validator_1.Min)(1), - __metadata("design:type", Number) -], UpdateTenantQuotaDto.prototype, "studentQuota", void 0); -class UpdateTenantStatusDto { -} -exports.UpdateTenantStatusDto = UpdateTenantStatusDto; -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)({ message: '状态不能为空' }), - __metadata("design:type", String) -], UpdateTenantStatusDto.prototype, "status", void 0); -//# sourceMappingURL=tenant.dto.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js.map b/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js.map deleted file mode 100644 index 2bdf8fe..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/dto/tenant.dto.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tenant.dto.js","sourceRoot":"","sources":["../../../../../src/modules/tenant/dto/tenant.dto.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.controller.d.ts b/reading-platform-backend/dist/src/modules/tenant/tenant.controller.d.ts deleted file mode 100644 index 5a7c43d..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.controller.d.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { TenantService } from './tenant.service'; -import { TenantQueryDto, CreateTenantDto, UpdateTenantDto, UpdateTenantQuotaDto, UpdateTenantStatusDto } from './dto/tenant.dto'; -export declare class TenantController { - private readonly tenantService; - constructor(tenantService: TenantService); - findAll(query: TenantQueryDto): Promise<{ - items: { - id: number; - startDate: string; - status: string; - createdAt: Date; - name: string; - teacherCount: number; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - studentCount: number; - }[]; - total: number; - page: number; - pageSize: number; - totalPages: number; - }>; - getStats(): Promise<{ - totalCount: number; - activeCount: number; - expiredCount: number; - packageDistribution: { - packageType: string; - count: number; - }[]; - }>; - findOne(id: string): Promise<{ - storageQuota: string; - storageUsed: string; - id: number; - startDate: string; - status: string; - createdAt: Date; - updatedAt: Date; - _count: { - lessons: number; - teachers: number; - students: number; - classes: number; - }; - name: string; - teacherCount: number; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - logoUrl: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - studentCount: number; - teachers: { - id: number; - status: string; - name: string; - lessonCount: number; - phone: string; - email: string; - }[]; - students: { - id: number; - name: string; - classId: number; - gender: string; - readingCount: number; - }[]; - classes: { - id: number; - name: string; - studentCount: number; - grade: string; - }[]; - }>; - create(createTenantDto: CreateTenantDto): Promise<{ - tempPassword: string; - id: number; - startDate: string; - status: string; - createdAt: Date; - name: string; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - }>; - update(id: string, updateTenantDto: UpdateTenantDto): Promise<{ - id: number; - startDate: string; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - }>; - updateQuota(id: string, dto: UpdateTenantQuotaDto): Promise<{ - id: number; - name: string; - teacherCount: number; - packageType: string; - teacherQuota: number; - studentQuota: number; - studentCount: number; - }>; - updateStatus(id: string, dto: UpdateTenantStatusDto): Promise<{ - id: number; - status: string; - name: string; - }>; - resetPassword(id: string): Promise<{ - tempPassword: string; - }>; - remove(id: string): Promise<{ - success: boolean; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.controller.js b/reading-platform-backend/dist/src/modules/tenant/tenant.controller.js deleted file mode 100644 index b578707..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.controller.js +++ /dev/null @@ -1,126 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TenantController = void 0; -const common_1 = require("@nestjs/common"); -const tenant_service_1 = require("./tenant.service"); -const jwt_auth_guard_1 = require("../common/guards/jwt-auth.guard"); -const roles_guard_1 = require("../common/guards/roles.guard"); -const roles_decorator_1 = require("../common/decorators/roles.decorator"); -const tenant_dto_1 = require("./dto/tenant.dto"); -let TenantController = class TenantController { - constructor(tenantService) { - this.tenantService = tenantService; - } - findAll(query) { - return this.tenantService.findAllPaginated(query); - } - getStats() { - return this.tenantService.getStats(); - } - findOne(id) { - return this.tenantService.findOne(+id); - } - create(createTenantDto) { - return this.tenantService.create(createTenantDto); - } - update(id, updateTenantDto) { - return this.tenantService.update(+id, updateTenantDto); - } - updateQuota(id, dto) { - return this.tenantService.updateQuota(+id, dto); - } - updateStatus(id, dto) { - return this.tenantService.updateStatus(+id, dto); - } - resetPassword(id) { - return this.tenantService.resetPassword(+id); - } - remove(id) { - return this.tenantService.remove(+id); - } -}; -exports.TenantController = TenantController; -__decorate([ - (0, common_1.Get)(), - __param(0, (0, common_1.Query)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [tenant_dto_1.TenantQueryDto]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "findAll", null); -__decorate([ - (0, common_1.Get)('stats'), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", void 0) -], TenantController.prototype, "getStats", null); -__decorate([ - (0, common_1.Get)(':id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "findOne", null); -__decorate([ - (0, common_1.Post)(), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [tenant_dto_1.CreateTenantDto]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "create", null); -__decorate([ - (0, common_1.Put)(':id'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, tenant_dto_1.UpdateTenantDto]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "update", null); -__decorate([ - (0, common_1.Put)(':id/quota'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, tenant_dto_1.UpdateTenantQuotaDto]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "updateQuota", null); -__decorate([ - (0, common_1.Put)(':id/status'), - __param(0, (0, common_1.Param)('id')), - __param(1, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String, tenant_dto_1.UpdateTenantStatusDto]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "updateStatus", null); -__decorate([ - (0, common_1.Post)(':id/reset-password'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "resetPassword", null); -__decorate([ - (0, common_1.Delete)(':id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", void 0) -], TenantController.prototype, "remove", null); -exports.TenantController = TenantController = __decorate([ - (0, common_1.Controller)('admin/tenants'), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard), - (0, roles_decorator_1.Roles)('admin'), - __metadata("design:paramtypes", [tenant_service_1.TenantService]) -], TenantController); -//# sourceMappingURL=tenant.controller.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.controller.js.map b/reading-platform-backend/dist/src/modules/tenant/tenant.controller.js.map deleted file mode 100644 index dee78df..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tenant.controller.js","sourceRoot":"","sources":["../../../../src/modules/tenant/tenant.controller.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.module.d.ts b/reading-platform-backend/dist/src/modules/tenant/tenant.module.d.ts deleted file mode 100644 index 4e6342f..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class TenantModule { -} diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.module.js b/reading-platform-backend/dist/src/modules/tenant/tenant.module.js deleted file mode 100644 index b2c6181..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.module.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TenantModule = void 0; -const common_1 = require("@nestjs/common"); -const tenant_service_1 = require("./tenant.service"); -const tenant_controller_1 = require("./tenant.controller"); -const prisma_module_1 = require("../../database/prisma.module"); -let TenantModule = class TenantModule { -}; -exports.TenantModule = TenantModule; -exports.TenantModule = TenantModule = __decorate([ - (0, common_1.Module)({ - imports: [prisma_module_1.PrismaModule], - controllers: [tenant_controller_1.TenantController], - providers: [tenant_service_1.TenantService], - exports: [tenant_service_1.TenantService], - }) -], TenantModule); -//# sourceMappingURL=tenant.module.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.module.js.map b/reading-platform-backend/dist/src/modules/tenant/tenant.module.js.map deleted file mode 100644 index 260b2f0..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tenant.module.js","sourceRoot":"","sources":["../../../../src/modules/tenant/tenant.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,2DAAuD;AACvD,gEAA4D;AAQrD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IANxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,4BAAY,CAAC;QACvB,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACW,YAAY,CAAG"} \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.service.d.ts b/reading-platform-backend/dist/src/modules/tenant/tenant.service.d.ts deleted file mode 100644 index 89ff311..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.service.d.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { PrismaService } from '../../database/prisma.service'; -import { TenantQueryDto, CreateTenantDto, UpdateTenantDto, UpdateTenantQuotaDto, UpdateTenantStatusDto } from './dto/tenant.dto'; -export declare class TenantService { - private prisma; - constructor(prisma: PrismaService); - findAllPaginated(query: TenantQueryDto): Promise<{ - items: { - id: number; - startDate: string; - status: string; - createdAt: Date; - name: string; - teacherCount: number; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - studentCount: number; - }[]; - total: number; - page: number; - pageSize: number; - totalPages: number; - }>; - findAll(): Promise<{ - id: number; - startDate: string; - status: string; - createdAt: Date; - name: string; - teacherCount: number; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - studentCount: number; - }[]>; - findOne(id: number): Promise<{ - storageQuota: string; - storageUsed: string; - id: number; - startDate: string; - status: string; - createdAt: Date; - updatedAt: Date; - _count: { - lessons: number; - teachers: number; - students: number; - classes: number; - }; - name: string; - teacherCount: number; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - logoUrl: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - studentCount: number; - teachers: { - id: number; - status: string; - name: string; - lessonCount: number; - phone: string; - email: string; - }[]; - students: { - id: number; - name: string; - classId: number; - gender: string; - readingCount: number; - }[]; - classes: { - id: number; - name: string; - studentCount: number; - grade: string; - }[]; - }>; - create(dto: CreateTenantDto): Promise<{ - tempPassword: string; - id: number; - startDate: string; - status: string; - createdAt: Date; - name: string; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - }>; - update(id: number, dto: UpdateTenantDto): Promise<{ - id: number; - startDate: string; - status: string; - createdAt: Date; - updatedAt: Date; - name: string; - loginAccount: string; - address: string; - contactPerson: string; - contactPhone: string; - packageType: string; - teacherQuota: number; - studentQuota: number; - expireDate: string; - }>; - updateQuota(id: number, dto: UpdateTenantQuotaDto): Promise<{ - id: number; - name: string; - teacherCount: number; - packageType: string; - teacherQuota: number; - studentQuota: number; - studentCount: number; - }>; - updateStatus(id: number, dto: UpdateTenantStatusDto): Promise<{ - id: number; - status: string; - name: string; - }>; - resetPassword(id: number): Promise<{ - tempPassword: string; - }>; - remove(id: number): Promise<{ - success: boolean; - }>; - getStats(): Promise<{ - totalCount: number; - activeCount: number; - expiredCount: number; - packageDistribution: { - packageType: string; - count: number; - }[]; - }>; -} diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.service.js b/reading-platform-backend/dist/src/modules/tenant/tenant.service.js deleted file mode 100644 index 630a0bb..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.service.js +++ /dev/null @@ -1,392 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TenantService = void 0; -const common_1 = require("@nestjs/common"); -const prisma_service_1 = require("../../database/prisma.service"); -const bcrypt = __importStar(require("bcrypt")); -let TenantService = class TenantService { - constructor(prisma) { - this.prisma = prisma; - } - async findAllPaginated(query) { - const { page = 1, pageSize = 10, keyword, status, packageType } = query; - const skip = (page - 1) * pageSize; - const where = {}; - if (keyword) { - where.OR = [ - { name: { contains: keyword } }, - { loginAccount: { contains: keyword } }, - { contactPerson: { contains: keyword } }, - { contactPhone: { contains: keyword } }, - ]; - } - if (status) { - where.status = status; - } - if (packageType) { - where.packageType = packageType; - } - const [items, total] = await Promise.all([ - this.prisma.tenant.findMany({ - where, - select: { - id: true, - name: true, - loginAccount: true, - address: true, - contactPerson: true, - contactPhone: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - teacherCount: true, - studentCount: true, - startDate: true, - expireDate: true, - status: true, - createdAt: true, - }, - orderBy: { createdAt: 'desc' }, - skip, - take: pageSize, - }), - this.prisma.tenant.count({ where }), - ]); - return { - items, - total, - page, - pageSize, - totalPages: Math.ceil(total / pageSize), - }; - } - async findAll() { - return this.prisma.tenant.findMany({ - select: { - id: true, - name: true, - address: true, - contactPerson: true, - contactPhone: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - teacherCount: true, - studentCount: true, - startDate: true, - expireDate: true, - status: true, - createdAt: true, - }, - orderBy: { createdAt: 'desc' }, - }); - } - async findOne(id) { - const tenant = await this.prisma.tenant.findUnique({ - where: { id }, - select: { - id: true, - name: true, - loginAccount: true, - address: true, - contactPerson: true, - contactPhone: true, - logoUrl: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - storageQuota: true, - teacherCount: true, - studentCount: true, - storageUsed: true, - startDate: true, - expireDate: true, - status: true, - createdAt: true, - updatedAt: true, - teachers: { - select: { - id: true, - name: true, - phone: true, - email: true, - status: true, - lessonCount: true, - }, - take: 10, - orderBy: { createdAt: 'desc' }, - }, - students: { - select: { - id: true, - name: true, - classId: true, - gender: true, - readingCount: true, - }, - take: 10, - orderBy: { createdAt: 'desc' }, - }, - classes: { - select: { - id: true, - name: true, - grade: true, - studentCount: true, - }, - take: 10, - }, - _count: { - select: { - teachers: true, - students: true, - classes: true, - lessons: true, - }, - }, - }, - }); - if (!tenant) { - throw new common_1.NotFoundException(`租户 #${id} 不存在`); - } - return { - ...tenant, - storageQuota: tenant.storageQuota?.toString() || '0', - storageUsed: tenant.storageUsed?.toString() || '0', - }; - } - async create(dto) { - const existing = await this.prisma.tenant.findUnique({ - where: { loginAccount: dto.loginAccount }, - }); - if (existing) { - throw new common_1.ConflictException('登录账号已存在'); - } - const existingTeacher = await this.prisma.teacher.findUnique({ - where: { loginAccount: dto.loginAccount }, - }); - if (existingTeacher) { - throw new common_1.ConflictException('该账号已被教师使用'); - } - const defaultPassword = dto.password || '123456'; - const passwordHash = await bcrypt.hash(defaultPassword, 10); - const startDate = dto.startDate || new Date().toISOString().split('T')[0]; - const expireDate = dto.expireDate || - new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toISOString().split('T')[0]; - const tenant = await this.prisma.tenant.create({ - data: { - name: dto.name, - loginAccount: dto.loginAccount, - passwordHash, - address: dto.address, - contactPerson: dto.contactPerson, - contactPhone: dto.contactPhone, - packageType: dto.packageType || 'STANDARD', - teacherQuota: dto.teacherQuota || 20, - studentQuota: dto.studentQuota || 200, - startDate, - expireDate, - status: 'ACTIVE', - }, - select: { - id: true, - name: true, - loginAccount: true, - address: true, - contactPerson: true, - contactPhone: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - startDate: true, - expireDate: true, - status: true, - createdAt: true, - }, - }); - return { - ...tenant, - tempPassword: dto.password || '123456', - }; - } - async update(id, dto) { - const existing = await this.prisma.tenant.findUnique({ - where: { id }, - }); - if (!existing) { - throw new common_1.NotFoundException(`租户 #${id} 不存在`); - } - return this.prisma.tenant.update({ - where: { id }, - data: { - name: dto.name, - address: dto.address, - contactPerson: dto.contactPerson, - contactPhone: dto.contactPhone, - packageType: dto.packageType, - teacherQuota: dto.teacherQuota, - studentQuota: dto.studentQuota, - startDate: dto.startDate, - expireDate: dto.expireDate, - status: dto.status, - }, - select: { - id: true, - name: true, - loginAccount: true, - address: true, - contactPerson: true, - contactPhone: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - startDate: true, - expireDate: true, - status: true, - createdAt: true, - updatedAt: true, - }, - }); - } - async updateQuota(id, dto) { - const existing = await this.prisma.tenant.findUnique({ - where: { id }, - }); - if (!existing) { - throw new common_1.NotFoundException(`租户 #${id} 不存在`); - } - if (dto.teacherQuota !== undefined && dto.teacherQuota < existing.teacherCount) { - throw new common_1.BadRequestException(`教师配额不能小于当前已用数量 (${existing.teacherCount})`); - } - if (dto.studentQuota !== undefined && dto.studentQuota < existing.studentCount) { - throw new common_1.BadRequestException(`学生配额不能小于当前已用数量 (${existing.studentCount})`); - } - return this.prisma.tenant.update({ - where: { id }, - data: { - packageType: dto.packageType, - teacherQuota: dto.teacherQuota, - studentQuota: dto.studentQuota, - }, - select: { - id: true, - name: true, - packageType: true, - teacherQuota: true, - studentQuota: true, - teacherCount: true, - studentCount: true, - }, - }); - } - async updateStatus(id, dto) { - const existing = await this.prisma.tenant.findUnique({ - where: { id }, - }); - if (!existing) { - throw new common_1.NotFoundException(`租户 #${id} 不存在`); - } - return this.prisma.tenant.update({ - where: { id }, - data: { - status: dto.status, - }, - select: { - id: true, - name: true, - status: true, - }, - }); - } - async resetPassword(id) { - const existing = await this.prisma.tenant.findUnique({ - where: { id }, - }); - if (!existing) { - throw new common_1.NotFoundException(`租户 #${id} 不存在`); - } - const tempPassword = Math.random().toString(36).slice(-8); - const passwordHash = await bcrypt.hash(tempPassword, 10); - await this.prisma.tenant.update({ - where: { id }, - data: { - passwordHash, - }, - }); - return { - tempPassword, - }; - } - async remove(id) { - const existing = await this.prisma.tenant.findUnique({ - where: { id }, - }); - if (!existing) { - throw new common_1.NotFoundException(`租户 #${id} 不存在`); - } - await this.prisma.tenant.delete({ - where: { id }, - }); - return { success: true }; - } - async getStats() { - const [totalCount, activeCount, expiredCount] = await Promise.all([ - this.prisma.tenant.count(), - this.prisma.tenant.count({ where: { status: 'ACTIVE' } }), - this.prisma.tenant.count({ where: { status: { not: 'ACTIVE' } } }), - ]); - const packageDistribution = await this.prisma.tenant.groupBy({ - by: ['packageType'], - _count: { - id: true, - }, - }); - return { - totalCount, - activeCount, - expiredCount, - packageDistribution: packageDistribution.map((item) => ({ - packageType: item.packageType, - count: item._count.id, - })), - }; - } -}; -exports.TenantService = TenantService; -exports.TenantService = TenantService = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [prisma_service_1.PrismaService]) -], TenantService); -//# sourceMappingURL=tenant.service.js.map \ No newline at end of file diff --git a/reading-platform-backend/dist/src/modules/tenant/tenant.service.js.map b/reading-platform-backend/dist/src/modules/tenant/tenant.service.js.map deleted file mode 100644 index b8b7b75..0000000 --- a/reading-platform-backend/dist/src/modules/tenant/tenant.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tenant.service.js","sourceRoot":"","sources":["../../../../src/modules/tenant/tenant.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,kEAA8D;AAC9D,+CAAiC;AAU1B,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C,KAAK,CAAC,gBAAgB,CAAC,KAAqB;QAC1C,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QACxE,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;QAEnC,MAAM,KAAK,GAAQ,EAAE,CAAC;QAEtB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,EAAE,GAAG;gBACT,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBAC/B,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACvC,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACxC,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;aACxC,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC1B,KAAK;gBACL,MAAM,EAAE;oBACN,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,IAAI;oBACV,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,IAAI;oBACb,aAAa,EAAE,IAAI;oBACnB,YAAY,EAAE,IAAI;oBAClB,WAAW,EAAE,IAAI;oBACjB,YAAY,EAAE,IAAI;oBAClB,YAAY,EAAE,IAAI;oBAClB,YAAY,EAAE,IAAI;oBAClB,YAAY,EAAE,IAAI;oBAClB,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,IAAI;iBAChB;gBACD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC9B,IAAI;gBACJ,IAAI,EAAE,QAAQ;aACf,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,OAAO;YACL,KAAK;YACL,KAAK;YACL,IAAI;YACJ,QAAQ;YACR,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;SACxC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjC,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;aAChB;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACjD,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,IAAI;qBAClB;oBACD,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;iBAC/B;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,IAAI;wBACZ,YAAY,EAAE,IAAI;qBACnB;oBACD,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;iBAC/B;gBACD,OAAO,EAAE;oBACP,MAAM,EAAE;wBACN,EAAE,EAAE,IAAI;wBACR,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,IAAI;wBACX,YAAY,EAAE,IAAI;qBACnB;oBACD,IAAI,EAAE,EAAE;iBACT;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE;wBACN,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,IAAI;wBACd,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,IAAI;qBACd;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,0BAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAGD,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,GAAG;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,GAAG;SACnD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAoB;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAGD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3D,KAAK,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,0BAAiB,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;QAGD,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAG5D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,UAAU,GACd,GAAG,CAAC,UAAU;YACd,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7C,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,YAAY;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,UAAU;gBAC1C,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;gBACpC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG;gBACrC,SAAS;gBACT,UAAU;gBACV,MAAM,EAAE,QAAQ;aACjB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,MAAM;YACT,YAAY,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,GAAoB;QAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,IAAI;gBAClB,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;aAChB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,GAAyB;QAErD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAGD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC/E,MAAM,IAAI,4BAAmB,CAC3B,mBAAmB,QAAQ,CAAC,YAAY,GAAG,CAC5C,CAAC;QACJ,CAAC;QAED,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC/E,MAAM,IAAI,4BAAmB,CAC3B,mBAAmB,QAAQ,CAAC,YAAY,GAAG,CAC5C,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,GAA0B;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,YAAY;aACb;SACF,CAAC,CAAC;QAEH,OAAO;YACL,YAAY;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QAErB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,0BAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;SACnE,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3D,EAAE,EAAE,CAAC,aAAa,CAAC;YACnB,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI;aACT;SACF,CAAC,CAAC;QAEH,OAAO;YACL,UAAU;YACV,WAAW;YACX,YAAY;YACZ,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;aACtB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF,CAAA;AApZY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAEiB,8BAAa;GAD9B,aAAa,CAoZzB"} \ No newline at end of file diff --git a/reading-platform-backend/dist/tsconfig.tsbuildinfo b/reading-platform-backend/dist/tsconfig.tsbuildinfo deleted file mode 100644 index 7603367..0000000 --- a/reading-platform-backend/dist/tsconfig.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2021.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/subscription.d.ts","../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../node_modules/rxjs/dist/types/internal/operator.d.ts","../node_modules/rxjs/dist/types/internal/observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../node_modules/rxjs/dist/types/internal/notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../node_modules/@nestjs/config/dist/conditional.module.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-change-event.interface.d.ts","../node_modules/@nestjs/config/dist/types/config-object.type.d.ts","../node_modules/@nestjs/config/dist/types/config.type.d.ts","../node_modules/@nestjs/config/dist/types/no-infer.type.d.ts","../node_modules/@nestjs/config/dist/types/path-value.type.d.ts","../node_modules/@nestjs/config/dist/types/index.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-factory.interface.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/ts5.6/globals.typedarray.d.ts","../node_modules/@types/node/ts5.6/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/ts5.6/index.d.ts","../node_modules/dotenv-expand/lib/main.d.ts","../node_modules/@nestjs/config/dist/interfaces/config-module-options.interface.d.ts","../node_modules/@nestjs/config/dist/interfaces/index.d.ts","../node_modules/@nestjs/config/dist/config.module.d.ts","../node_modules/@nestjs/config/dist/config.service.d.ts","../node_modules/@nestjs/config/dist/utils/register-as.util.d.ts","../node_modules/@nestjs/config/dist/utils/get-config-token.util.d.ts","../node_modules/@nestjs/config/dist/utils/index.d.ts","../node_modules/@nestjs/config/dist/index.d.ts","../node_modules/@nestjs/config/index.d.ts","../node_modules/@nestjs/throttler/dist/throttler-storage-record.interface.d.ts","../node_modules/@nestjs/throttler/dist/throttler-storage.interface.d.ts","../node_modules/@nestjs/throttler/dist/throttler.guard.interface.d.ts","../node_modules/@nestjs/throttler/dist/throttler-module-options.interface.d.ts","../node_modules/@nestjs/throttler/dist/throttler.decorator.d.ts","../node_modules/@nestjs/throttler/dist/throttler.exception.d.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/common/constants.d.ts","../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../node_modules/@nestjs/core/injector/module-token-factory.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../node_modules/@nestjs/core/router/router-proxy.d.ts","../node_modules/@nestjs/core/helpers/context-creator.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../node_modules/@nestjs/core/guards/constants.d.ts","../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../node_modules/@nestjs/core/guards/index.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../node_modules/@nestjs/core/interceptors/index.d.ts","../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../node_modules/@nestjs/core/pipes/index.d.ts","../node_modules/@nestjs/core/helpers/context-utils.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../node_modules/@nestjs/core/inspector/index.d.ts","../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../node_modules/@nestjs/throttler/dist/throttler.guard.d.ts","../node_modules/@nestjs/throttler/dist/throttler.module.d.ts","../node_modules/@nestjs/throttler/dist/throttler.providers.d.ts","../node_modules/@nestjs/throttler/dist/throttler-storage-options.interface.d.ts","../node_modules/@nestjs/throttler/dist/throttler.service.d.ts","../node_modules/@nestjs/throttler/dist/utilities.d.ts","../node_modules/@nestjs/throttler/dist/index.d.ts","../node_modules/@prisma/client/runtime/library.d.ts","../node_modules/.prisma/client/index.d.ts","../node_modules/.prisma/client/default.d.ts","../node_modules/@prisma/client/default.d.ts","../src/database/prisma.service.ts","../src/database/prisma.module.ts","../node_modules/@types/jsonwebtoken/index.d.ts","../node_modules/@nestjs/jwt/dist/interfaces/jwt-module-options.interface.d.ts","../node_modules/@nestjs/jwt/dist/interfaces/index.d.ts","../node_modules/@nestjs/jwt/dist/jwt.errors.d.ts","../node_modules/@nestjs/jwt/dist/jwt.module.d.ts","../node_modules/@nestjs/jwt/dist/jwt.service.d.ts","../node_modules/@nestjs/jwt/dist/index.d.ts","../node_modules/@nestjs/jwt/index.d.ts","../node_modules/@nestjs/passport/dist/abstract.strategy.d.ts","../node_modules/@nestjs/passport/dist/interfaces/auth-module.options.d.ts","../node_modules/@nestjs/passport/dist/interfaces/type.interface.d.ts","../node_modules/@nestjs/passport/dist/interfaces/index.d.ts","../node_modules/@nestjs/passport/dist/auth.guard.d.ts","../node_modules/@nestjs/passport/dist/passport.module.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/passport/index.d.ts","../node_modules/@nestjs/passport/dist/passport/passport.serializer.d.ts","../node_modules/@nestjs/passport/dist/passport/passport.strategy.d.ts","../node_modules/@nestjs/passport/dist/index.d.ts","../node_modules/@nestjs/passport/index.d.ts","../node_modules/@types/bcrypt/index.d.ts","../src/modules/auth/auth.service.ts","../src/modules/common/guards/jwt-auth.guard.ts","../node_modules/class-validator/types/validation/validationerror.d.ts","../node_modules/class-validator/types/validation/validatoroptions.d.ts","../node_modules/class-validator/types/validation-schema/validationschema.d.ts","../node_modules/class-validator/types/container.d.ts","../node_modules/class-validator/types/validation/validationarguments.d.ts","../node_modules/class-validator/types/decorator/validationoptions.d.ts","../node_modules/class-validator/types/decorator/common/allow.d.ts","../node_modules/class-validator/types/decorator/common/isdefined.d.ts","../node_modules/class-validator/types/decorator/common/isoptional.d.ts","../node_modules/class-validator/types/decorator/common/validate.d.ts","../node_modules/class-validator/types/validation/validatorconstraintinterface.d.ts","../node_modules/class-validator/types/decorator/common/validateby.d.ts","../node_modules/class-validator/types/decorator/common/validateif.d.ts","../node_modules/class-validator/types/decorator/common/validatenested.d.ts","../node_modules/class-validator/types/decorator/common/validatepromise.d.ts","../node_modules/class-validator/types/decorator/common/islatlong.d.ts","../node_modules/class-validator/types/decorator/common/islatitude.d.ts","../node_modules/class-validator/types/decorator/common/islongitude.d.ts","../node_modules/class-validator/types/decorator/common/equals.d.ts","../node_modules/class-validator/types/decorator/common/notequals.d.ts","../node_modules/class-validator/types/decorator/common/isempty.d.ts","../node_modules/class-validator/types/decorator/common/isnotempty.d.ts","../node_modules/class-validator/types/decorator/common/isin.d.ts","../node_modules/class-validator/types/decorator/common/isnotin.d.ts","../node_modules/class-validator/types/decorator/number/isdivisibleby.d.ts","../node_modules/class-validator/types/decorator/number/ispositive.d.ts","../node_modules/class-validator/types/decorator/number/isnegative.d.ts","../node_modules/class-validator/types/decorator/number/max.d.ts","../node_modules/class-validator/types/decorator/number/min.d.ts","../node_modules/class-validator/types/decorator/date/mindate.d.ts","../node_modules/class-validator/types/decorator/date/maxdate.d.ts","../node_modules/class-validator/types/decorator/string/contains.d.ts","../node_modules/class-validator/types/decorator/string/notcontains.d.ts","../node_modules/@types/validator/lib/isboolean.d.ts","../node_modules/@types/validator/lib/isemail.d.ts","../node_modules/@types/validator/lib/isfqdn.d.ts","../node_modules/@types/validator/lib/isiban.d.ts","../node_modules/@types/validator/lib/isiso31661alpha2.d.ts","../node_modules/@types/validator/lib/isiso4217.d.ts","../node_modules/@types/validator/lib/isiso6391.d.ts","../node_modules/@types/validator/lib/istaxid.d.ts","../node_modules/@types/validator/lib/isurl.d.ts","../node_modules/@types/validator/index.d.ts","../node_modules/class-validator/types/decorator/string/isalpha.d.ts","../node_modules/class-validator/types/decorator/string/isalphanumeric.d.ts","../node_modules/class-validator/types/decorator/string/isdecimal.d.ts","../node_modules/class-validator/types/decorator/string/isascii.d.ts","../node_modules/class-validator/types/decorator/string/isbase64.d.ts","../node_modules/class-validator/types/decorator/string/isbytelength.d.ts","../node_modules/class-validator/types/decorator/string/iscreditcard.d.ts","../node_modules/class-validator/types/decorator/string/iscurrency.d.ts","../node_modules/class-validator/types/decorator/string/isemail.d.ts","../node_modules/class-validator/types/decorator/string/isfqdn.d.ts","../node_modules/class-validator/types/decorator/string/isfullwidth.d.ts","../node_modules/class-validator/types/decorator/string/ishalfwidth.d.ts","../node_modules/class-validator/types/decorator/string/isvariablewidth.d.ts","../node_modules/class-validator/types/decorator/string/ishexcolor.d.ts","../node_modules/class-validator/types/decorator/string/ishexadecimal.d.ts","../node_modules/class-validator/types/decorator/string/ismacaddress.d.ts","../node_modules/class-validator/types/decorator/string/isip.d.ts","../node_modules/class-validator/types/decorator/string/isport.d.ts","../node_modules/class-validator/types/decorator/string/isisbn.d.ts","../node_modules/class-validator/types/decorator/string/isisin.d.ts","../node_modules/class-validator/types/decorator/string/isiso8601.d.ts","../node_modules/class-validator/types/decorator/string/isjson.d.ts","../node_modules/class-validator/types/decorator/string/isjwt.d.ts","../node_modules/class-validator/types/decorator/string/islowercase.d.ts","../node_modules/class-validator/types/decorator/string/ismobilephone.d.ts","../node_modules/class-validator/types/decorator/string/isiso31661alpha2.d.ts","../node_modules/class-validator/types/decorator/string/isiso31661alpha3.d.ts","../node_modules/class-validator/types/decorator/string/ismongoid.d.ts","../node_modules/class-validator/types/decorator/string/ismultibyte.d.ts","../node_modules/class-validator/types/decorator/string/issurrogatepair.d.ts","../node_modules/class-validator/types/decorator/string/isurl.d.ts","../node_modules/class-validator/types/decorator/string/isuuid.d.ts","../node_modules/class-validator/types/decorator/string/isfirebasepushid.d.ts","../node_modules/class-validator/types/decorator/string/isuppercase.d.ts","../node_modules/class-validator/types/decorator/string/length.d.ts","../node_modules/class-validator/types/decorator/string/maxlength.d.ts","../node_modules/class-validator/types/decorator/string/minlength.d.ts","../node_modules/class-validator/types/decorator/string/matches.d.ts","../node_modules/libphonenumber-js/types.d.cts","../node_modules/libphonenumber-js/max/index.d.cts","../node_modules/class-validator/types/decorator/string/isphonenumber.d.ts","../node_modules/class-validator/types/decorator/string/ismilitarytime.d.ts","../node_modules/class-validator/types/decorator/string/ishash.d.ts","../node_modules/class-validator/types/decorator/string/isissn.d.ts","../node_modules/class-validator/types/decorator/string/isdatestring.d.ts","../node_modules/class-validator/types/decorator/string/isbooleanstring.d.ts","../node_modules/class-validator/types/decorator/string/isnumberstring.d.ts","../node_modules/class-validator/types/decorator/string/isbase32.d.ts","../node_modules/class-validator/types/decorator/string/isbic.d.ts","../node_modules/class-validator/types/decorator/string/isbtcaddress.d.ts","../node_modules/class-validator/types/decorator/string/isdatauri.d.ts","../node_modules/class-validator/types/decorator/string/isean.d.ts","../node_modules/class-validator/types/decorator/string/isethereumaddress.d.ts","../node_modules/class-validator/types/decorator/string/ishsl.d.ts","../node_modules/class-validator/types/decorator/string/isiban.d.ts","../node_modules/class-validator/types/decorator/string/isidentitycard.d.ts","../node_modules/class-validator/types/decorator/string/isisrc.d.ts","../node_modules/class-validator/types/decorator/string/islocale.d.ts","../node_modules/class-validator/types/decorator/string/ismagneturi.d.ts","../node_modules/class-validator/types/decorator/string/ismimetype.d.ts","../node_modules/class-validator/types/decorator/string/isoctal.d.ts","../node_modules/class-validator/types/decorator/string/ispassportnumber.d.ts","../node_modules/class-validator/types/decorator/string/ispostalcode.d.ts","../node_modules/class-validator/types/decorator/string/isrfc3339.d.ts","../node_modules/class-validator/types/decorator/string/isrgbcolor.d.ts","../node_modules/class-validator/types/decorator/string/issemver.d.ts","../node_modules/class-validator/types/decorator/string/isstrongpassword.d.ts","../node_modules/class-validator/types/decorator/string/istimezone.d.ts","../node_modules/class-validator/types/decorator/string/isbase58.d.ts","../node_modules/class-validator/types/decorator/string/is-tax-id.d.ts","../node_modules/class-validator/types/decorator/string/is-iso4217-currency-code.d.ts","../node_modules/class-validator/types/decorator/typechecker/isboolean.d.ts","../node_modules/class-validator/types/decorator/typechecker/isdate.d.ts","../node_modules/class-validator/types/decorator/typechecker/isnumber.d.ts","../node_modules/class-validator/types/decorator/typechecker/isenum.d.ts","../node_modules/class-validator/types/decorator/typechecker/isint.d.ts","../node_modules/class-validator/types/decorator/typechecker/isstring.d.ts","../node_modules/class-validator/types/decorator/typechecker/isarray.d.ts","../node_modules/class-validator/types/decorator/typechecker/isobject.d.ts","../node_modules/class-validator/types/decorator/array/arraycontains.d.ts","../node_modules/class-validator/types/decorator/array/arraynotcontains.d.ts","../node_modules/class-validator/types/decorator/array/arraynotempty.d.ts","../node_modules/class-validator/types/decorator/array/arrayminsize.d.ts","../node_modules/class-validator/types/decorator/array/arraymaxsize.d.ts","../node_modules/class-validator/types/decorator/array/arrayunique.d.ts","../node_modules/class-validator/types/decorator/object/isnotemptyobject.d.ts","../node_modules/class-validator/types/decorator/object/isinstance.d.ts","../node_modules/class-validator/types/decorator/decorators.d.ts","../node_modules/class-validator/types/validation/validationtypes.d.ts","../node_modules/class-validator/types/validation/validator.d.ts","../node_modules/class-validator/types/register-decorator.d.ts","../node_modules/class-validator/types/metadata/validationmetadataargs.d.ts","../node_modules/class-validator/types/metadata/validationmetadata.d.ts","../node_modules/class-validator/types/metadata/constraintmetadata.d.ts","../node_modules/class-validator/types/metadata/metadatastorage.d.ts","../node_modules/class-validator/types/index.d.ts","../src/modules/auth/dto/login.dto.ts","../src/modules/auth/auth.controller.ts","../node_modules/@types/passport-strategy/index.d.ts","../node_modules/@types/passport-jwt/index.d.ts","../src/modules/auth/strategies/jwt.strategy.ts","../src/modules/auth/auth.module.ts","../src/modules/course/course-validation.service.ts","../src/modules/course/course.service.ts","../src/modules/common/decorators/roles.decorator.ts","../src/modules/common/guards/roles.guard.ts","../src/modules/course/course.controller.ts","../src/modules/course/course.module.ts","../src/modules/tenant/dto/tenant.dto.ts","../src/modules/tenant/tenant.service.ts","../src/modules/tenant/tenant.controller.ts","../src/modules/tenant/tenant.module.ts","../src/modules/common/decorators/log-operation.decorator.ts","../src/modules/common/interceptors/log.interceptor.ts","../src/modules/common/operation-log.service.ts","../src/modules/common/operation-log.controller.ts","../src/modules/common/common.module.ts","../node_modules/@nestjs/platform-express/interfaces/nest-express-body-parser-options.interface.d.ts","../node_modules/@nestjs/platform-express/interfaces/nest-express-body-parser.interface.d.ts","../node_modules/@nestjs/platform-express/interfaces/serve-static-options.interface.d.ts","../node_modules/@nestjs/platform-express/adapters/express-adapter.d.ts","../node_modules/@nestjs/platform-express/adapters/index.d.ts","../node_modules/@nestjs/platform-express/interfaces/nest-express-application.interface.d.ts","../node_modules/@nestjs/platform-express/interfaces/index.d.ts","../node_modules/@nestjs/platform-express/multer/interfaces/multer-options.interface.d.ts","../node_modules/@nestjs/platform-express/multer/interceptors/any-files.interceptor.d.ts","../node_modules/@nestjs/platform-express/multer/interceptors/file-fields.interceptor.d.ts","../node_modules/@nestjs/platform-express/multer/interceptors/file.interceptor.d.ts","../node_modules/@nestjs/platform-express/multer/interceptors/files.interceptor.d.ts","../node_modules/@nestjs/platform-express/multer/interceptors/no-files.interceptor.d.ts","../node_modules/@nestjs/platform-express/multer/interceptors/index.d.ts","../node_modules/@nestjs/platform-express/multer/interfaces/files-upload-module.interface.d.ts","../node_modules/@nestjs/platform-express/multer/interfaces/index.d.ts","../node_modules/@nestjs/platform-express/multer/multer.module.d.ts","../node_modules/@nestjs/platform-express/multer/index.d.ts","../node_modules/@nestjs/platform-express/index.d.ts","../node_modules/@types/multer/index.d.ts","../src/modules/file-upload/file-upload.service.ts","../src/modules/file-upload/file-upload.controller.ts","../src/modules/file-upload/file-upload.module.ts","../src/modules/teacher-course/teacher-course.service.ts","../src/modules/teacher-course/teacher-course.controller.ts","../src/modules/teacher-course/teacher-course.module.ts","../src/modules/lesson/dto/create-lesson.dto.ts","../src/modules/lesson/dto/finish-lesson.dto.ts","../src/modules/lesson/lesson.service.ts","../src/modules/lesson/lesson.controller.ts","../src/modules/lesson/lesson.module.ts","../src/modules/school/dto/create-teacher.dto.ts","../src/modules/school/dto/create-student.dto.ts","../src/modules/school/dto/create-class.dto.ts","../src/modules/school/dto/class-teacher.dto.ts","../src/modules/school/dto/schedule.dto.ts","../node_modules/xlsx/types/index.d.ts","../src/modules/school/school.service.ts","../src/modules/school/school.controller.ts","../src/modules/school/stats.service.ts","../src/modules/school/stats.controller.ts","../src/modules/school/package.controller.ts","../src/modules/school/settings.service.ts","../src/modules/school/settings.controller.ts","../src/modules/school/export.service.ts","../src/modules/school/export.controller.ts","../src/modules/school/school.module.ts","../src/modules/resource/dto/create-resource.dto.ts","../src/modules/resource/resource.service.ts","../src/modules/resource/resource.controller.ts","../src/modules/resource/resource.module.ts","../src/modules/growth/dto/create-growth.dto.ts","../src/modules/growth/growth.service.ts","../src/modules/growth/growth.controller.ts","../src/modules/growth/growth.module.ts","../src/modules/task/dto/create-task.dto.ts","../src/modules/task/task.service.ts","../node_modules/@nestjs/schedule/dist/enums/cron-expression.enum.d.ts","../node_modules/@nestjs/schedule/dist/enums/index.d.ts","../node_modules/@types/luxon/src/zone.d.ts","../node_modules/@types/luxon/src/settings.d.ts","../node_modules/@types/luxon/src/_util.d.ts","../node_modules/@types/luxon/src/misc.d.ts","../node_modules/@types/luxon/src/duration.d.ts","../node_modules/@types/luxon/src/interval.d.ts","../node_modules/@types/luxon/src/datetime.d.ts","../node_modules/@types/luxon/src/info.d.ts","../node_modules/@types/luxon/src/luxon.d.ts","../node_modules/@types/luxon/index.d.ts","../node_modules/cron/dist/errors.d.ts","../node_modules/cron/dist/constants.d.ts","../node_modules/cron/dist/job.d.ts","../node_modules/cron/dist/types/utils.d.ts","../node_modules/cron/dist/types/cron.types.d.ts","../node_modules/cron/dist/time.d.ts","../node_modules/cron/dist/index.d.ts","../node_modules/@nestjs/schedule/dist/decorators/cron.decorator.d.ts","../node_modules/@nestjs/schedule/dist/decorators/interval.decorator.d.ts","../node_modules/@nestjs/schedule/dist/decorators/timeout.decorator.d.ts","../node_modules/@nestjs/schedule/dist/decorators/index.d.ts","../node_modules/@nestjs/schedule/dist/interfaces/schedule-module-options.interface.d.ts","../node_modules/@nestjs/schedule/dist/schedule.module.d.ts","../node_modules/@nestjs/schedule/dist/scheduler.registry.d.ts","../node_modules/@nestjs/schedule/dist/index.d.ts","../node_modules/@nestjs/schedule/index.d.ts","../src/modules/notification/notification.service.ts","../src/modules/notification/schedule-notification.service.ts","../src/modules/task/task.controller.ts","../src/modules/notification/notification.controller.ts","../src/modules/notification/notification.module.ts","../src/modules/task/task.module.ts","../src/modules/parent/parent.service.ts","../src/modules/parent/parent.controller.ts","../src/modules/parent/parent.module.ts","../node_modules/exceljs/index.d.ts","../src/modules/export/export.service.ts","../src/modules/export/export.controller.ts","../src/modules/export/export.module.ts","../src/modules/admin/admin-settings.service.ts","../src/modules/admin/admin-settings.controller.ts","../src/modules/admin/admin-stats.service.ts","../src/modules/admin/admin-stats.controller.ts","../src/modules/admin/admin.module.ts","../src/app.module.ts","../src/common/filters/http-exception.filter.ts","../src/main.ts","../src/modules/school/dto/import-students.dto.ts","../prisma/seed.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/passport-local/index.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/strip-bom/index.d.ts","../node_modules/@types/strip-json-comments/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[416,463,629],[416,463,628],[416,463,935],[416,463],[416,463,952],[307,416,463],[402,416,463],[57,308,309,310,311,312,313,314,315,316,317,318,319,320,416,463],[260,294,416,463],[267,416,463],[257,307,402,416,463],[325,326,327,328,329,330,331,332,416,463],[262,416,463],[307,402,416,463],[321,324,333,416,463],[322,323,416,463],[298,416,463],[262,263,264,265,416,463],[335,416,463],[280,416,463],[335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,416,463],[363,416,463],[358,359,416,463],[360,362,416,463,493],[56,266,307,334,357,362,364,371,394,399,401,416,463],[62,260,416,463],[61,416,463],[62,252,253,416,463,559,564],[252,260,416,463],[61,251,416,463],[260,373,416,463],[254,375,416,463],[251,255,416,463],[61,307,416,463],[259,260,416,463],[272,416,463],[274,275,276,277,278,416,463],[266,416,463],[266,267,282,286,416,463],[280,281,287,288,289,416,463],[58,59,60,61,62,252,253,254,255,256,257,258,259,260,261,267,272,273,279,286,290,291,292,294,302,303,304,305,306,416,463],[285,416,463],[268,269,270,271,416,463],[260,268,269,416,463],[260,266,267,416,463],[260,270,416,463],[260,298,416,463],[293,295,296,297,298,299,300,301,416,463],[58,260,416,463],[294,416,463],[58,260,293,297,299,416,463],[269,416,463],[295,416,463],[260,294,295,296,416,463],[284,416,463],[260,264,284,302,416,463],[282,283,285,416,463],[256,258,267,273,282,287,303,304,307,416,463],[62,256,258,261,303,304,416,463],[265,416,463],[251,416,463],[284,307,365,369,416,463],[369,370,416,463],[307,365,416,463],[307,365,366,416,463],[366,367,416,463],[366,367,368,416,463],[261,416,463],[386,387,416,463],[386,416,463],[387,388,389,390,391,392,416,463],[385,416,463],[377,387,416,463],[387,388,389,390,391,416,463],[261,386,387,390,416,463],[372,378,379,380,381,382,383,384,393,416,463],[261,307,378,416,463],[261,377,416,463],[261,377,402,416,463],[254,260,261,373,374,375,376,377,416,463],[251,307,373,374,395,416,463],[307,373,416,463],[397,416,463],[334,395,416,463],[395,396,398,416,463],[284,361,416,463],[293,416,463],[266,307,416,463],[400,416,463],[402,416,463,514],[251,404,409,416,463],[403,409,416,463,514,515,516,519],[409,416,463],[410,416,463,512],[404,410,416,463,513],[405,406,407,408,416,463],[416,463,517,518],[409,416,463,514,520],[416,463,520],[282,286,307,402,416,463],[416,463,528],[307,402,416,463,548,549],[416,463,530],[402,416,463,542,547,548],[416,463,552,553],[62,307,416,463,543,548,562],[402,416,463,529,555],[61,402,416,463,556,559],[307,416,463,543,548,550,561,563,567],[61,416,463,565,566],[416,463,556],[251,307,402,416,463,570],[307,402,416,463,543,548,550,562],[416,463,569,571,572],[307,416,463,548],[416,463,548],[307,402,416,463,570],[61,307,402,416,463],[307,402,416,463,542,543,548,568,570,573,576,581,582,595,596],[251,416,463,528],[416,463,555,558,597],[416,463,582,594],[56,416,463,529,550,551,554,557,589,594,598,601,605,606,607,609,611,617,619],[307,402,416,463,536,544,547,548],[307,416,463,540],[307,402,416,463,530,539,540,541,542,547,548,550,620],[416,463,542,543,546,548,584,593],[307,402,416,463,535,547,548],[416,463,583],[402,416,463,543,548],[402,416,463,536,543,547,588],[307,402,416,463,530,535,547],[402,416,463,541,542,546,586,590,591,592],[402,416,463,536,543,544,545,547,548],[260,402,416,463],[307,416,463,530,543,546,548],[416,463,547],[416,463,532,533,534,543,547,548,587],[416,463,539,588,599,600],[402,416,463,530,548],[402,416,463,530],[416,463,531,532,533,534,537,539],[416,463,536],[416,463,538,539],[402,416,463,531,532,533,534,537,538],[416,463,574,575],[307,416,463,543,548,550,562],[416,463,585],[291,416,463],[272,307,416,463,602,603],[416,463,604],[307,416,463,550],[307,416,463,543,550],[285,307,402,416,463,536,543,544,545,547,548],[282,284,307,402,416,463,529,543,550,588,606],[285,286,402,416,463,528,608],[416,463,578,579,580],[402,416,463,577],[416,463,610],[402,416,463,491],[416,463,613,615,616],[416,463,612],[416,463,614],[402,416,463,542,547,613],[416,463,560],[307,402,416,463,530,543,547,548,550,585,586,588,589],[416,463,618],[416,463,634,636,637,638,639],[416,463,635],[402,416,463,511,634],[402,416,463,635],[416,463,511,634,636],[416,463,640],[402,416,463,643,645],[416,463,642,645,646,647,660,661],[416,463,643,644],[402,416,463,643],[416,463,659],[416,463,645],[416,463,662],[282,286,307,402,416,463,477,479,528,827,828,829],[416,463,830],[416,463,831,833,844],[416,463,827,828,832],[402,416,463,477,479,658,827,828,829],[416,463,477],[416,463,840,842,843],[402,416,463,834],[416,463,835,836,837,838,839],[307,416,463,834],[416,463,841],[402,416,463,841],[416,463,902],[416,463,903,904,905],[416,463,884],[416,463,885,906,907,908,909],[402,416,463,907],[416,463,910],[416,463,523,525,526,527,621,622,623,625,626],[307,416,463,523,524],[416,463,522],[416,463,525],[402,416,463,523,524,525,620],[402,416,463,525],[402,416,463,523,525],[402,416,463,522,523,624],[416,463,630],[416,463,935,936,937,938,939],[416,463,935,937],[416,463,511],[416,463,477,511,656],[416,463,477,511],[416,463,941,944],[416,463,941,942,943],[416,463,944],[416,463,474,477,511,648,649,650],[416,463,649,651,655,657],[416,463,475,511],[416,463,947],[416,463,948],[416,463,954,957],[416,463,468,511],[416,463,894],[416,463,887],[416,463,886,888,890,891,895],[416,463,888,889,892],[416,463,886,889,892],[416,463,888,890,892],[416,463,886,887,889,890,891,892,893],[416,463,886,892],[416,463,888],[416,463,493,658],[416,460,463],[416,462,463],[416,463,468,496],[416,463,464,469,474,482,493,504],[416,463,464,465,474,482],[411,412,413,416,463],[416,463,466,505],[416,463,467,468,475,483],[416,463,468,493,501],[416,463,469,471,474,482],[416,462,463,470],[416,463,471,472],[416,463,473,474],[416,462,463,474],[416,463,474,475,476,493,504],[416,463,474,475,476,489,493,496],[416,463,471,474,477,482,493,504],[416,463,474,475,477,478,482,493,501,504],[416,463,477,479,493,501,504],[416,463,474,480],[416,463,481,504,509],[416,463,471,474,482,493],[416,463,483],[416,463,484],[416,462,463,485],[416,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510],[416,463,487],[416,463,488],[416,463,474,489,490],[416,463,489,491,505,507],[416,463,474,493,494,496],[416,463,495,496],[416,463,493,494],[416,463,496],[416,463,497],[416,460,463,493,498],[416,463,474,499,500],[416,463,499,500],[416,463,468,482,493,501],[416,463,502],[463],[414,415,416,417,418,419,420,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510],[416,463,482,503],[416,463,477,488,504],[416,463,468,505],[416,463,493,506],[416,463,481,507],[416,463,508],[416,458,463],[416,458,463,474,476,485,493,496,504,507,509],[416,463,493,510],[416,463,634,808],[416,463,658,659,808],[416,463,658,659],[416,463,477,658],[416,463,961,999],[416,463,961,984,999],[416,463,960,999],[416,463,999],[416,463,961],[416,463,961,985,999],[416,463,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998],[416,463,985,999],[416,463,475,493,511],[416,463,477,511,652,654],[416,463,475,493,511,653],[416,463,700,701,702,703,704,705,706,707,708],[416,463,1003],[416,463,672],[416,463,671,672,677],[416,463,673,674,675,676,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796],[416,463,672,709],[416,463,672,749],[416,463,671],[416,463,667,668,669,670,671,672,677,797,798,799,800,804],[416,463,677],[416,463,669,802,803],[416,463,671,801],[416,463,672,677],[416,463,667,668],[416,463,895,898,900,901],[416,463,895,900,901],[416,463,895,896,900],[416,463,464,895,897,898,899],[416,463,474,493],[416,463,950,956],[416,463,954],[416,463,951,955],[416,463,748],[416,463,953],[63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,79,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,132,133,134,135,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,186,195,197,198,199,200,201,202,204,205,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,416,463],[108,416,463],[64,67,416,463],[66,416,463],[66,67,416,463],[63,64,65,67,416,463],[64,66,67,224,416,463],[67,416,463],[63,66,108,416,463],[66,67,224,416,463],[66,232,416,463],[64,66,67,416,463],[76,416,463],[99,416,463],[120,416,463],[66,67,108,416,463],[67,115,416,463],[66,67,108,126,416,463],[66,67,126,416,463],[67,167,416,463],[67,108,416,463],[63,67,185,416,463],[63,67,186,416,463],[208,416,463],[192,194,416,463],[203,416,463],[192,416,463],[63,67,185,192,193,416,463],[185,186,194,416,463],[206,416,463],[63,67,192,193,194,416,463],[65,66,67,416,463],[63,67,416,463],[64,66,186,187,188,189,416,463],[108,186,187,188,189,416,463],[186,188,416,463],[66,187,188,190,191,195,416,463],[63,66,416,463],[67,210,416,463],[68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,416,463],[196,416,463],[416,430,434,463,504],[416,430,463,493,504],[416,425,463],[416,427,430,463,501,504],[416,463,482,501],[416,425,463,511],[416,427,430,463,482,504],[416,422,423,426,429,463,474,493,504],[416,430,437,463],[416,422,428,463],[416,430,451,452,463],[416,426,430,463,496,504,511],[416,451,463,511],[416,424,425,463,511],[416,430,463],[416,424,425,426,427,428,429,430,431,432,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,452,453,454,455,456,457,463],[416,430,445,463],[416,430,437,438,463],[416,428,430,438,439,463],[416,429,463],[416,422,425,430,463],[416,430,434,438,439,463],[416,434,463],[416,428,430,433,463,504],[416,422,427,430,437,463],[416,463,493],[416,425,430,451,463,509,511],[416,463,631,664],[402,416,463,521,627,633,811,817,821,826,849,852,857,873,877,881,916,917,920,924,929],[402,416,463,475,484,658],[402,416,463,632],[402,416,463,631],[402,416,463,484,521,620,845,930,931],[402,416,463,666,814,815,925],[402,416,463,666,814,815,927],[402,416,463,633,925,926,927,928],[402,416,463,665,666,806],[402,416,463,521,633,641,663,665,807,810],[402,416,463,632,641,664],[416,463,805],[402,416,463,521,663,809],[402,416,463,666,815,823,824,825],[402,416,463,620,663],[402,416,463,620,814],[251,402,416,463,620,632,822],[402,416,463,666,814,815,824],[402,416,463,666,813,814,815],[402,416,463,633,812,813,816],[402,416,463,632,812],[402,416,463,658,666,814,815,922],[402,416,463,922,923],[402,416,463,632,921],[402,416,463,845,846,847],[402,416,463,847,848],[402,416,463,475,484],[402,416,463,666,814,815,878,879],[402,416,463,879,880],[402,416,463,632,878],[402,416,463,666,814,815,853,854,855],[402,416,463,855,856],[402,416,463,632,853,854],[402,416,463,666,814,815,912],[402,416,463,911,912,913,915],[402,416,463,632,911,912],[402,416,463,666,814,815,918],[402,416,463,918,919],[402,416,463,666,814,815,874,875],[402,416,463,875,876],[402,416,463,632,874],[402,416,463,658,666,814,815,871],[402,416,463,632,863],[402,416,463,632,666,814,815],[402,416,463,666,814,815,822,823,845,858,859,860,861,862,864],[402,416,463,864,865,866,867,868,869,870,871,872],[402,416,463,632,664,858,859,860,861,862,863],[402,416,463,666,814,815,869],[402,416,463,666,814,815,866],[402,416,463,666,814,815,882,883,913],[402,416,463,883,914,916],[402,416,463,632,882],[402,416,463,666,814,815,850],[402,416,463,850,851],[402,416,463,666,814,815,818,819],[402,416,463,633,819,820],[402,416,463,632,664,818]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a66df3ab5de5cfcda11538cffddd67ff6a174e003788e270914c1e0248483cf","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"c91d3f9753a311284e76cdcb348cbb50bca98733336ec726b54d77b7361b34de","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"cf25d45c02d5fd5d7adb16230a0e1d6715441eef5c0a79a21bfeaa9bbc058939","impliedFormat":1},{"version":"54c3822eaf6436f2eddc92dd6e410750465aba218adbf8ce5d488d773919ec01","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"8b8b92781a6bf150f9ee83f3d8ee278b6cdb98b8308c7ab3413684fc5d9078ef","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"689390db63cb282e6d0e5ce9b8f1ec2ec0912d0e2e6dac7235699a15ad17d339","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"d928324d17146fce30b99a28d1d6b48648feac72bbd23641d3ce5ac34aefdfee","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"c33a88f2578e8df2fdf36c6a0482bbee615eb3234c8f084ba31a9a96bd306b7f","impliedFormat":1},{"version":"22cca068109eb0e6b4f8acc3fe638d1e6ac277e2044246438763319792b546a1","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"66cd33c4151ea27f6e17c6071652eadde9da1b3637dae65fd060212211c695ce","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"53b094f1afe442490555eeeb0384fc1ceb487560c83e31f9c64fb934c2dccd94","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"9ddf8e9069327faa75d20135cab675779844f66590249769c3d35dd2a38c2ba9","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"91bf47a209ad0eae090023c3ebc1165a491cf9758799368ffcbee8dbe7448f33","impliedFormat":1},{"version":"0abe2cd72812bbfc509975860277c7cd6f6e0be95d765a9da77fee98264a7e32","impliedFormat":1},{"version":"13286c0c8524606b17a8d68650970bab896fb505f348f71601abf0f2296e8913","impliedFormat":1},{"version":"fc2a131847515b3dff2f0e835633d9a00a9d03ed59e690e27eec85b7b0522f92","impliedFormat":1},{"version":"90433c678bc26751eb7a5d54a2bb0a14be6f5717f69abb5f7a04afc75dce15a4","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"f61963dc02ef27c48fb0e0016a413b1e00bcb8b97a3f5d4473cedc7b44c8dc77","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"2b82adc9eead34b824a3f4dad315203fbfa56bee0061ccf9b485820606564f70","impliedFormat":1},{"version":"eb47aaa5e1b0a69388bb48422a991b9364a9c206a97983e0227289a9e1fca178","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"db2108aea36e7faa83c38f6fe8225b9ad40835c0cba7fa38e969768299b83173","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"2828dabf17a6507d39ebcc58fef847e111dcf2d51b8e4ff0d32732c72be032b3","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"2ad163aaddfa29231a021de6838f59378a210501634f125ed04cfa7d066ffc53","impliedFormat":1},{"version":"6305acbe492b9882ec940f8f0c8e5d1e1395258852f99328efcb1cf1683ca817","impliedFormat":1},{"version":"7619b1f6087a4e9336b2c42bd784b05aa4a2204a364b60171e5a628f817a381e","impliedFormat":1},{"version":"15be9120572c9fbcd3c267bd93b4140354514c9e70734e6fcca65ff4a246f83a","impliedFormat":1},{"version":"412482ab85893cec1d6f26231359474d1f59f6339e2743c08da1b05fc1d12767","impliedFormat":1},{"version":"858e2315e58af0d28fcd7f141a2505aba6a76fd10378ba0ad169b0336fee33fc","impliedFormat":1},{"version":"02da6c1b34f4ae2120d70cf5f9268bf1aedf62e55529d34f5974f5a93655ce38","impliedFormat":1},{"version":"3ecf179ef1cc28f7f9b46c8d2e496d50b542c176e94ed0147bab147b4a961cd6","impliedFormat":1},{"version":"b145da03ce7e174af5ced2cbbd16e96d3d5c2212f9a90d3657b63a5650a73b7f","impliedFormat":1},{"version":"c7aadab66a2bc90eeb0ab145ca4daebcbc038e24359263de3b40e7b1c7affba6","impliedFormat":1},{"version":"99518dc06286877a7b716e0f22c1a72d3c62be42701324b49f27bcc03573efff","impliedFormat":1},{"version":"f4575fd196a7e33c7be9773a71bcc5fbe7182a2152be909f6b8e8e7ba2438f06","impliedFormat":1},{"version":"05cba5acd77a4384389b9c62739104b5a1693efd66e6abac6c5ffc53280ae777","impliedFormat":1},{"version":"acacda82ebd929fe2fe9e31a37f193fc8498a7393a1c31dc5ceb656e2b45b708","impliedFormat":1},{"version":"1b13e7c5c58ab894fe65b099b6d19bb8afae6d04252db1bf55fe6ba95a0af954","impliedFormat":1},{"version":"4355d326c3129e5853b56267903f294ad03e34cc28b75f96b80734882dedac80","impliedFormat":1},{"version":"37139a8d45342c05b6a5aa1698a2e8e882d6dca5fb9a77aa91f05ac04e92e70b","impliedFormat":1},{"version":"e37191297f1234d3ae54edbf174489f9a3091a05fe959724db36f8e58d21fb17","impliedFormat":1},{"version":"3fca8fb3aab1bc7abb9b1420f517e9012fdddcbe18803bea2dd48fad6c45e92e","impliedFormat":1},{"version":"d0b0779e0cac4809a9a3c764ba3bd68314de758765a8e3b9291fe1671bfeb8a1","impliedFormat":1},{"version":"d2116b5f989aa68e585ae261b9d6d836be6ed1be0b55b47336d9f3db34674e86","impliedFormat":1},{"version":"d79a227dd654be16d8006eac8b67212679d1df494dfe6da22ea0bd34a13e010c","impliedFormat":1},{"version":"b9c89b4a2435c171e0a9a56668f510a376cb7991eaecef08b619e6d484841735","impliedFormat":1},{"version":"44a298a6c52a7dab8e970e95a6dabe20972a7c31c340842e0dc57f2c822826eb","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"00b9ff040025f6b00e0f4ac8305fea1809975b325af31541bd9d69fa3b5e57b1","impliedFormat":1},{"version":"9f96b9fd0362a7bfe6a3aa70baa883c47ae167469c904782c99ccc942f62f0dc","impliedFormat":1},{"version":"54d91053dc6a2936bfd01a130cc3b524e11aa0349da082e8ac03a8bf44250338","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"55ae9554811525f24818e19bdc8779fa99df434be7c03e5fc47fa441315f0226","impliedFormat":1},{"version":"24abac81e9c60089a126704e936192b2309413b40a53d9da68dadd1dd107684e","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"ac10457b51ee4a3173b7165c87c795eadd094e024f1d9f0b6f0c131126e3d903","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"090fda1107e7d4f8f30a2b341834ed949f01737b5ec6021bb6981f8907330bdb","impliedFormat":1},{"version":"cc32874a27100c32e3706d347eb4f435d6dd5c0d83e547c157352f977bbc6385","impliedFormat":1},{"version":"e45b069d58c9ac341d371b8bc3db4fa7351b9eee1731bffd651cfc1eb622f844","impliedFormat":1},{"version":"7f3c74caad25bfb6dfbf78c6fe194efcf8f79d1703d785fc05cd606fe0270525","impliedFormat":1},{"version":"54f3f7ff36384ca5c9e1627118b43df3014b7e0f62c9722619d19cdb7e43d608","impliedFormat":1},{"version":"2f346f1233bae487f1f9a11025fc73a1bf9093ee47980a9f4a75b84ea0bb7021","impliedFormat":1},{"version":"013444d0b8c1f7b5115462c31573a699fee7458381b0611062a0069d3ef810e8","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"8c4df93dafcf06adc42a63477cc38b352565a3ed0a19dd8ef7dfacc253749327","impliedFormat":1},{"version":"22a35275abc67f8aba44efc52b2f4b1abc2c94e183d36647fdab5a5e7c1bdf23","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"32f19b665839b1382b21afc41917cda47a56e744cd3df9986b13a72746d1c522","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"dff93e0997c4e64ff29e9f70cad172c0b438c4f58c119f17a51c94d48164475a","impliedFormat":1},{"version":"fd1ddf926b323dfa439be49c1d41bbe233fe5656975a11183aeb3bf2addfa3bb","impliedFormat":1},{"version":"6dda11db28da6bcc7ff09242cd1866bdddd0ae91e2db3bea03ba66112399641a","impliedFormat":1},{"version":"ea4cd1e72af1aa49cf208b9cb4caf542437beb7a7a5b522f50a5f1b7480362ed","impliedFormat":1},{"version":"903a7d68a222d94da11a5a89449fdd5dd75d83cd95af34c0242e10b85ec33a93","impliedFormat":1},{"version":"e7fe2e7ed5c3a7beff60361632be19a8943e53466b7dd69c34f89faf473206d7","impliedFormat":1},{"version":"b4896cee83379e159f83021e262223354db79e439092e485611163e2082224ff","impliedFormat":1},{"version":"5243e79a643e41d9653011d6c66e95048fc0478eb8593dc079b70877a2e3990e","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"1456e80bd8a3870034d89f91bd7df12ac29acfb083e31c0bb1fb38ca7bf5fbc2","affectsGlobalScope":true,"impliedFormat":1},{"version":"a98aedd64ad81793f146d36d1611ed9ba61b8b49ff040f0d13a103ed626595d9","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"4b34bdb6f29a4347b7db9c0f8622686035fe25adb1c9e927acd8d22a2cbb6ccb","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e456fd5b101271183d99a9087875a282323e3a3ff0d7bcf1881537eaa8b8e63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"fad4e3c207fe23922d0b2d06b01acbfb9714c4f2685cf80fd384c8a100c82fd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"ddc734b4fae82a01d247e9e342d020976640b5e93b4e9b3a1e30e5518883a060","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"0ea329e5eab6719ff83bcb97e8bd03f1faab4feb74704010783b881fc9d80f92","impliedFormat":1},{"version":"08bb8fb1430620b088894ecbb0a6cb972f963d63911bb3704febfa0d3a2f6ea5","impliedFormat":1},{"version":"5e4631f04c72971410015548c8137d6b007256c071ec504de385372033fec177","impliedFormat":1},{"version":"eb234b3e285e8bc071bdddc1ec0460095e13ead6222d44b02c4e0869522f9ba3","impliedFormat":1},{"version":"ce4e58f029088cc5f0e6e7c7863f6ace0bc04c2c4be7bc6730471c2432bd5895","impliedFormat":1},{"version":"018421260380d05df31b567b90368e1eacf22655b2b8dc2c11e0e76e5fd8978f","impliedFormat":1},{"version":"ef803dca265d6ba37f97b46e21c66d055a3007f71c1995d9ef15d4a07b0d2ad0","impliedFormat":1},{"version":"3d4adf825b7ac087cfbf3d54a7dc16a3959877bb4f5080e14d5e9d8d6159eba8","impliedFormat":1},{"version":"f9e034b1ae29825c00532e08ea852b0c72885c343ee48d2975db0a6481218ab3","impliedFormat":1},{"version":"1193f49cbb883f40326461fe379e58ffa4c18d15bf6d6a1974ad2894e4fb20f3","impliedFormat":1},{"version":"8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","impliedFormat":1},{"version":"4f0424b7c6857793498a6e60041af2a38658e8193a403a701574e80df50a360a","impliedFormat":1},{"version":"034856eb35ba68a5b7190db2d8e743cc640996545b7200e6766e86b27a2fd527","impliedFormat":1},{"version":"adb4283721e37317d30627d9c31404e46a6bb0174e5806c43c59d08d8d91ea67","impliedFormat":1},{"version":"ec379d84f25c38ceaaa81715fd1b6a0b3a000386ea41155969dc49f88eab33ef","impliedFormat":1},{"version":"d02329b04183e4f319fd78e5726375b2154d4eab6ec90ee3706b4090f94d3d99","impliedFormat":1},{"version":"81477bb2c9b97a9dd5ce7750ab4ae655e74172f0d536d637be345ba76b41cd92","impliedFormat":1},{"version":"b8ad793dc17938bc462812e3522bbd3d62519d91d9b4a6422bed1383c2d3eb42","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"6c6bd91368169cfa94b4f8cc64ebca2b050685ec76bc4082c44ce125b5530cca","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"272af80940fcc0c8325e4a04322c50d11f8b8842f96ac66cbd440835e958dd14","impliedFormat":1},{"version":"1803e48a3ec919ccafbcafeef5e410776ca0644ae8c6c87beca4c92d8a964434","impliedFormat":1},{"version":"875c43c5409e197e72ee517cb1f8fd358406b4adf058dbdc1e50c8db93d68f26","impliedFormat":1},{"version":"8854713984b9588eac1cab69c9e2a6e1a33760d9a2d182169059991914dd8577","impliedFormat":1},{"version":"e333d487ca89f26eafb95ea4b59bea8ba26b357e9f2fd3728be81d999f9e8cf6","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"c503be3ddb3990ab27ca20c6559d29b547d9f9413e05d2987dd7c4bcf52f3736","impliedFormat":1},{"version":"598b15f0ae9a73082631d14cb8297a1285150ca325dbce98fc29c4f0b7079443","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"c94c1aa80687a277396307b80774ca540d0559c2f7ba340168c2637c82b1f766","impliedFormat":1},{"version":"ce7dbf31739cc7bca35ca50e4f0cbd75cd31fd6c05c66841f8748e225dc73aaf","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"6f6bdb523e5162216efc36ebba4f1ef8e845f1a9e55f15387df8e85206448aee","impliedFormat":1},{"version":"aa2d6531a04d6379318d29891de396f61ccc171bfd2f8448cc1649c184becdf2","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ab710f1ee2866e473454a348cffd8d5486e3c07c255f214e19e59a4f17eece4d","impliedFormat":1},{"version":"db7ff3459e80382c61441ea9171f183252b6acc82957ecb6285fff4dca55c585","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"2a899aef0c6c94cc3537fe93ec8047647e77a3f52ee7cacda95a8c956d3623fb","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"6a52170a5e4600bbb47a94a1dd9522dca7348ce591d8cdbb7d4fe3e23bbea461","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"16c144a21cd99926eeba1605aec9984439e91aa864d1c210e176ca668f5f586a","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"fd4107bd5c899165a21ab93768904d5cfb3e98b952f91fbf5a12789a4c0744e6","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"77165b117f552be305d3bc2ef83424ff1e67afb22bfabd14ebebb3468c21fcaa","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"d8ec19be7d6d3950992c3418f3a4aa2bcad144252bd7c0891462b5879f436e4e","impliedFormat":1},{"version":"db37aa3208b48bdcbc27c0c1ae3d1b86c0d5159e65543e8ab79cbfb37b1f2f34","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"2daf06d8e15cbca27baa6c106253b92dad96afd87af9996cf49a47103b97dc95","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"8109e0580fc71dbefd6091b8825acf83209b6c07d3f54c33afeafab5e1f88844","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"df29ade4994de2d9327a5f44a706bbe6103022a8f40316839afa38d3e078ee06","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"d38f45cb868a830d130ac8b87d3f7e8caff4961a3a1feae055de5e538e20879a","impliedFormat":1},{"version":"4c30a5cb3097befb9704d16aa4670e64e39ea69c5964a1433b9ffd32e1a5a3a1","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"7b3a5e25bf3c51af55cb2986b89949317aa0f6cbfb5317edd7d4037fa52219a9","impliedFormat":1},{"version":"3cd50f6a83629c0ec330fc482e587bfa96532d4c9ce85e6c3ddf9f52f63eee11","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"dadfa5fd3d5c511ca6bfe240243b5cf2e0f87e44ea63e23c4b2fce253c0d4601","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"cb5b0d51a7c42a3916d839e1ee149bcc18ffb9037f29636510fa433ff65684ca","impliedFormat":1},{"version":"b7d85dc2de8db4ca983d848c8cfad6cf4d743f8cb35afe1957bedf997c858052","impliedFormat":1},{"version":"83daad5d7ae60a0aede88ea6b9e40853abcbe279c10187342b25e96e35bc9f78","impliedFormat":1},{"version":"c39ddfb764058d817d0e8c4044363950edb075fa52ab0054d09dec01c5ec7267","impliedFormat":1},{"version":"3dffa83b578e67fcbfd7965c5ecb72476a293f9224608e17e0bca0eef53eb6b4","impliedFormat":1},{"version":"f7a5ab7b54bdc6a13cf1015e1b5d6eeb31d765d54045281bfeefcdfcc982a37c","impliedFormat":1},{"version":"39eaec2510829bd8503fd25defd6477575b08abd1e73bd12a73a4b1fa2ceb213","impliedFormat":1},{"version":"21247c958d397091ec30e63b27294baa1d1434c333da4fda697743190311dc62","impliedFormat":1},{"version":"4d40689c11256f894912c50f44b4d943e135393d45b34f161434b90491235c38","impliedFormat":1},{"version":"d5eb5865d4cbaa9985cc3cfb920b230cdcf3363f1e70903a08dc4baab80b0ce1","impliedFormat":1},{"version":"51ebca098538b252953b1ef83c165f25b52271bfb6049cd09d197dddd4cd43c5","impliedFormat":1},{"version":"ef5a57b347e022aa7049f34466d447c077ac2ec98b0d6fb112fd7a3294963639","signature":"07d984efaeb2286cfd7ab0ccc34e1e6deb3961c1c94129122aa63fe2ab7351eb"},{"version":"9223a0889abb0669020e94a9b8c1e68274cdc05533c1f79d84fe516450e94ebd","signature":"bbc394ad2a2ec9c5dbcd9f60d4b365bf809989c90dd3c202b20fddc20e699bdf"},{"version":"0bf811dcbddc95e2551f704cfd2afc267bf619f8b8f2b7bdbb94df96ec3cbfe3","impliedFormat":1},{"version":"243e3c271aff347e8461255546750cf7d413585016c510e33907e42a754d6937","impliedFormat":1},{"version":"7c14e702387296711c1a829bc95052ff02f533d4aa27d53cc0186c795094a3a9","impliedFormat":1},{"version":"4c72d080623b3dcd8ebd41f38f7ac7804475510449d074ca9044a1cbe95517ae","impliedFormat":1},{"version":"579f8828da42ae02db6915a0223d23b0da07157ff484fecdbf8a96fffa0fa4df","impliedFormat":1},{"version":"3f17ea1a2d703cfe38e9fecf8d8606717128454d2889cef4458a175788ad1b60","impliedFormat":1},{"version":"3ae3b86c48ae3b092e5d5548acbf4416b427fed498730c227180b5b1a8aa86e3","impliedFormat":1},{"version":"8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","impliedFormat":1},{"version":"ba63131c5e91f797736444933af16ffa42f9f8c150d859ec65f568f037a416ea","impliedFormat":1},{"version":"aa99b580bd92dcb2802c9067534ebc32381f0e1f681a65366bcf3adae208a3a4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"0e9aa853b5eb2ca09e0e3e3eb94cbd1d5fb3d682ab69817d4d11fe225953fc57","impliedFormat":1},{"version":"179683df1e78572988152d598f44297da79ac302545770710bba87563ce53e06","impliedFormat":1},{"version":"793c353144f16601da994fa4e62c09b7525836ce999c44f69c28929072ca206a","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"90407bbaa24977b8a6a90861148ac98d8652afe69992a90d823f29e9807fe2d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"ff155930718467b27e379e4a195e4607ce277f805cad9d2fa5f4fd5dec224df6","affectsGlobalScope":true,"impliedFormat":1},{"version":"599ac4a84b7aa6a298731179ec1663a623ff8ac324cdc1dabb9c73c1259dc854","impliedFormat":1},{"version":"3d348edaf4ef0169b476e42e1489ddc800ae03bd5dd3acb12354225718170774","impliedFormat":1},{"version":"585bc61f439c027640754dd26e480afa202f33e51db41ee283311a59c12c62e7","impliedFormat":1},{"version":"8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","impliedFormat":1},{"version":"160b24efb5a868df9c54f337656b4ef55fcbe0548fe15408e1c0630ec559c559","impliedFormat":1},{"version":"400ae7f601851117b675224e21262b8673dacdba1286a7817bc13db89a359241","signature":"e9e19d99ec3b9ddd69e313c682ad9f6e9d37ffa440a8c5328eb7f589b7e8b373"},"c1edbbc6df7fe0682a90cff315a25a90e4fe9ea4eb6a3df7a86b7e1aa4c8e876",{"version":"cb5eaaa2a079305b1c5344af739b29c479746f7a7aefffc7175d23d8b7c8dbb0","impliedFormat":1},{"version":"bd324dccada40f2c94aaa1ebc82b11ce3927b7a2fe74a5ab92b431d495a86e6f","impliedFormat":1},{"version":"56749bf8b557c4c76181b2fd87e41bde2b67843303ae2eabb299623897d704d6","impliedFormat":1},{"version":"5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","impliedFormat":1},{"version":"e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","impliedFormat":1},{"version":"6fc56a681a637069675b2e11b4aa105efe146f7a88876f23537e9ea139297cf9","impliedFormat":1},{"version":"33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","impliedFormat":1},{"version":"176d6f604b228f727afb8e96fd6ff78c7ca38102e07acfb86a0034d8f8a2064a","impliedFormat":1},{"version":"1b1a02c54361b8c222392054648a2137fc5983ad5680134a653b1d9f655fe43d","impliedFormat":1},{"version":"8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","impliedFormat":1},{"version":"e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","impliedFormat":1},{"version":"a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","impliedFormat":1},{"version":"6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","impliedFormat":1},{"version":"7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","impliedFormat":1},{"version":"7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","impliedFormat":1},{"version":"46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","impliedFormat":1},{"version":"8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","impliedFormat":1},{"version":"ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","impliedFormat":1},{"version":"45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","impliedFormat":1},{"version":"9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","impliedFormat":1},{"version":"b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","impliedFormat":1},{"version":"bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","impliedFormat":1},{"version":"7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","impliedFormat":1},{"version":"3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","impliedFormat":1},{"version":"1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","impliedFormat":1},{"version":"600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","impliedFormat":1},{"version":"32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","impliedFormat":1},{"version":"2426ed0e9982c3d734a6896b697adf5ae93d634b73eb15b48da8106634f6d911","impliedFormat":1},{"version":"057431f69d565fb44c246f9f64eac09cf309a9af7afb97e588ebef19cc33c779","impliedFormat":1},{"version":"960d026ca8bf27a8f7a3920ee50438b50ec913d635aa92542ca07558f9c59eca","impliedFormat":1},{"version":"71f5d895cc1a8a935c40c070d3d0fade53ae7e303fd76f443b8b541dee19a90c","impliedFormat":1},{"version":"252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","impliedFormat":1},{"version":"e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"2d2ec3235e01474f45a68f28cf826c2f5228b79f7d474d12ca3604cdcfdac80c","impliedFormat":1},{"version":"6dd249868034c0434e170ba6e0451d67a0c98e5a74fd57a7999174ee22a0fa7b","impliedFormat":1},{"version":"9716553c72caf4ff992be810e650707924ec6962f6812bd3fbdb9ac3544fd38f","impliedFormat":1},{"version":"506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","impliedFormat":1},{"version":"053c51bbc32db54be396654ab5ecd03a66118d64102ac9e22e950059bc862a5e","impliedFormat":1},{"version":"1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","impliedFormat":1},{"version":"627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","impliedFormat":1},{"version":"0f6e0b1a1deb1ab297103955c8cd3797d18f0f7f7d30048ae73ba7c9fb5a1d89","impliedFormat":1},{"version":"0a051f254f9a16cdde942571baab358018386830fed9bdfff42478e38ba641ce","impliedFormat":1},{"version":"17269f8dfc30c4846ab7d8b5d3c97ac76f50f33de96f996b9bf974d817ed025b","impliedFormat":1},{"version":"9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","impliedFormat":1},{"version":"083d6f3547ccbf25dfa37b950c50bee6691ed5c42107f038cc324dbca1e173ae","impliedFormat":1},{"version":"952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","impliedFormat":1},{"version":"8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","impliedFormat":1},{"version":"e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","impliedFormat":1},{"version":"893e5cfbae9ed690b75b8b2118b140665e08d182ed8531e1363ec050905e6cb2","impliedFormat":1},{"version":"6ae7c7ada66314a0c3acfbf6f6edf379a12106d8d6a1a15bd35bd803908f2c31","impliedFormat":1},{"version":"e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","impliedFormat":1},{"version":"97146bbe9e6b1aab070510a45976faaf37724c747a42d08563aeae7ba0334b4f","impliedFormat":1},{"version":"c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","impliedFormat":1},{"version":"09e64dea2925f3a0ef972d7c11e7fa75fec4c0824e9383db23eacf17b368532f","impliedFormat":1},{"version":"424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","impliedFormat":1},{"version":"a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","impliedFormat":1},{"version":"3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","impliedFormat":1},{"version":"ced02e78a2e10f89f4d70440d0a8de952a5946623519c54747bc84214d644bac","impliedFormat":1},{"version":"efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","impliedFormat":1},{"version":"29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","impliedFormat":1},{"version":"e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","impliedFormat":1},{"version":"582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","impliedFormat":1},{"version":"185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","impliedFormat":1},{"version":"0c0a02625cf59a0c7be595ccc270904042bea523518299b754c705f76d2a6919","impliedFormat":1},{"version":"c44fc1bbdb5d1c8025073cb7c5eab553aa02c069235a1fc4613cd096d578ab80","impliedFormat":1},{"version":"cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","impliedFormat":1},{"version":"3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","impliedFormat":1},{"version":"c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","impliedFormat":1},{"version":"2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","impliedFormat":1},{"version":"516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","impliedFormat":1},{"version":"07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","impliedFormat":1},{"version":"fa40d705f9813843d47f19321591499f14d1a18fa5e8ca9beaee5aac633c3d0d","impliedFormat":1},{"version":"a7a6330fb015f72d821e23004e63a3827e0c632b614ef3a310b3c81b66de61fd","impliedFormat":1},{"version":"89968316b7069339433bd42d53fe56df98b6990783dfe00c9513fb4bd01c2a1c","impliedFormat":1},{"version":"a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","impliedFormat":1},{"version":"62e62a477c56cda719013606616dd856cfdc37c60448d0feb53654860d3113bb","impliedFormat":1},{"version":"207c107dd2bd23fa9febac2fe05c7c72cdac02c3f57003ab2e1c6794a6db0c05","impliedFormat":1},{"version":"55133e906c4ddabecdfcbc6a2efd4536a3ac47a8fa0a3fe6d0b918cac882e0d4","impliedFormat":1},{"version":"2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","impliedFormat":1},{"version":"2eb4012a758b9a7ba9121951d7c4b9f103fe2fc626f13bec3e29037bb9420dc6","impliedFormat":1},{"version":"fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","impliedFormat":1},{"version":"cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","impliedFormat":1},{"version":"34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","impliedFormat":1},{"version":"6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","impliedFormat":1},{"version":"4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","impliedFormat":1},{"version":"07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","impliedFormat":1},{"version":"cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","impliedFormat":1},{"version":"195f855b39c8a6e50eb1f37d8f794fbd98e41199dffbc98bf629506b6def73d7","impliedFormat":1},{"version":"471386a0a7e4eb88c260bdde4c627e634a772bf22f830c4ec1dad823154fd6f5","impliedFormat":1},{"version":"108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","impliedFormat":1},{"version":"d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","impliedFormat":1},{"version":"d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","impliedFormat":1},{"version":"19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","impliedFormat":1},{"version":"c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","impliedFormat":1},{"version":"1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","impliedFormat":1},{"version":"079d3f1ddcaf6c0ff28cfc7851b0ce79fcd694b3590afa6b8efa6d1656216924","impliedFormat":1},{"version":"2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","impliedFormat":1},{"version":"682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","impliedFormat":1},{"version":"7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","impliedFormat":1},{"version":"7e9c4e62351e3af1e5e49e88ebb1384467c9cd7a03c132a3b96842ccdc8045c4","impliedFormat":1},{"version":"ea1f9c60a912065c08e0876bd9500e8fa194738855effb4c7962f1bfb9b1da86","impliedFormat":1},{"version":"903f34c920e699dacbc483780b45d1f1edcb1ebf4b585a999ece78e403bb2db3","impliedFormat":1},{"version":"100ebfd0470433805c43be5ae377b7a15f56b5d7181c314c21789c4fe9789595","impliedFormat":1},{"version":"12533f60d36d03d3cf48d91dc0b1d585f530e4c9818a4d695f672f2901a74a86","impliedFormat":1},{"version":"21d9968dad7a7f021080167d874b718197a60535418e240389d0b651dd8110e7","impliedFormat":1},{"version":"2ef7349b243bce723d67901991d5ad0dfc534da994af61c7c172a99ff599e135","impliedFormat":1},{"version":"fa103f65225a4b42576ae02d17604b02330aea35b8aaf889a8423d38c18fa253","impliedFormat":1},{"version":"1b9173f64a1eaee88fa0c66ab4af8474e3c9741e0b0bd1d83bfca6f0574b6025","impliedFormat":1},{"version":"1b212f0159d984162b3e567678e377f522d7bee4d02ada1cc770549c51087170","impliedFormat":1},{"version":"46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","impliedFormat":1},{"version":"86cb49eb242fe19c5572f58624354ffb8743ff0f4522428ebcabc9d54a837c73","impliedFormat":1},{"version":"fc2fb9f11e930479d03430ee5b6588c3788695372b0ab42599f3ec7e78c0f6d5","impliedFormat":1},{"version":"bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","impliedFormat":1},{"version":"817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","impliedFormat":1},{"version":"a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","impliedFormat":1},{"version":"9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","impliedFormat":1},{"version":"66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","impliedFormat":1},{"version":"293ca178fd6c23ed33050052c6544c9d630f9d3b11d42c36aa86218472129243","impliedFormat":1},{"version":"90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","impliedFormat":1},{"version":"fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","impliedFormat":1},{"version":"91324fe0902334523537221b6c0bef83901761cfd3bd1f140c9036fa6710fa2b","impliedFormat":1},{"version":"b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","impliedFormat":1},{"version":"41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","impliedFormat":1},{"version":"c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","impliedFormat":1},{"version":"a88ddea30fae38aa071a43b43205312dc5ff86f9e21d85ba26b14690dc19d95e","impliedFormat":1},{"version":"b5b2d0510e5455234016bbbaba3839ca21adbc715d1b9c3d6dede7d411a28545","impliedFormat":1},{"version":"5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","impliedFormat":1},{"version":"4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","impliedFormat":1},{"version":"441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa","impliedFormat":1},{"version":"9e48a0f685b26dc6ec290a84ee297390f1f43b16417e9c8099cb855b7ff113e3","signature":"0cf792151b307dea6804a38395b1fe7b4075687e38d13c234f2f485c315334d7"},{"version":"8f9880ff820d696eae8bfe379382ca6329827f3150a218bb96da4580ffa0d414","signature":"6d36c3b7ee878a43b16ed5e0d17bcd02fa6d72a27f4152366693cd1c085d7e5d"},{"version":"03c92769f389dbd9e45232f7eb01c3e0f482b62555aaf2029dcbf380d5cee9e4","impliedFormat":1},{"version":"32d7f70fd3498bc76a46dab8b03af4215f445f490f8e213c80cf06b636a4e413","impliedFormat":1},"b52a26461891c221a327525438fd3d48bf85de81bad9405876d777248ba56451",{"version":"d653424b032310532b686244e24ee88021102037a68be96cda2638016f8a49f9","signature":"a28b5c0c372fb375910b3fe3c3ce4331509bc18ccef7cc39c9ee9d8daf8225d1"},{"version":"1ad92dbc0673bd8c8cc4759c83ae0d76ea93df1f21fa467f0badd4d084a05aa4","signature":"289848ea7c82e6e560387447624ba321ad88764af8e1515044544d756cf9e590"},{"version":"7f432427f973d9585104f9a08189f0e9804bf35e8712f0678f674ffbc86cd211","signature":"4ca3229a0b7ab6f1951c621e07c500bbe7518f86e991a971b8063d27051c8809"},"8080391fc73ab433dcea7bfa51c3ab08e5bb1cab10572fcbc16481ed755d9fac","2a00b0fd7ecdebfe355032f424217c786fab24e10e1331d8895a77fb8795ac01",{"version":"1844f90cd5705c7962e7c9b4cf74aded930cec18f93ad8ac565981cdc160730c","signature":"f092be2d5edd3af4d2fbef0dee84ced262c0a65f9a1fb43d7a1f8a4f0b79cd15"},{"version":"86aa295b0bbbd43a40edf3f2b69fcbcb5e471e550e9c9caf596c5a482390cd68","signature":"89ca1fd1c04411c4031a09748b91cd80315f78b180dc089f29d7d4ae7ec7773a"},{"version":"0ccb4e37fd34c26883d9d011bd45112fc90c7fe6fb06a5025c3724da077f4a83","signature":"2954ad1bcc55ceb11ad6f46f51baf174d5af01dc78a1dc43696eae92852c2114"},{"version":"55dafcdac85183c45d8e20a9a5d5afe795b4f97ca96d0deb510b9c1990368fe4","signature":"89c4171f7148b8204d315052cc4e882de8a88f40a39d73042bf5bfa72077eeed"},{"version":"45ead1cd1e3b62955e4e403753704c49d13e9c1814f8ad463d57ee75dff59080","signature":"03f20dbbf4f996a7e1f7d6b8c75db32e2d39e09bc8497309718e8eb8a05e9baf"},{"version":"3c1690755a85170ada6d8299619191b0a67c41bf0bce8ad3fd8f78941a479626","signature":"5f7092ca69cd41b85746205cbd0a0506a11707c69db783d300dbbe00a452d627"},{"version":"b74ab927cdf427b9df76fc72f0fcc1d20f63ce6477fe72b55901fdad78d2c8fa","signature":"f3a9acde05f22c6a3e754437e693c1dda933a2e4c6614ad745d6633eff3bf0e7"},{"version":"2e342dd056db3b3b7662d7cda3f22c72351e622fe98996197e10be39089702b9","signature":"f0929a3b516c7f04c4b39502fcfacf2e5bbde2aaaf28544f0986dd5c1bfca61c"},{"version":"a82f4df4e59c05a4a43eacce801519080fa98db631b6c3d019fa7375129c5034","signature":"76efd0b1245c96aaa393c5265906b5b77466d5137cac031fcbc52e31c8b0fd4f"},{"version":"f69979dab109363bf1e92a702b5cfada4ba50ff540fc8153bbb44934eb0f6b88","signature":"5f67c50a5091418ae78028af3c4a53415b71c8e1d083320d9208950c7c3d967e"},{"version":"6bb392b98265954a6c72a3125c62c78261f2d4db5f39767b1571742ae0eb50a7","signature":"7214164cfa10573d2bf79da5174719e21aa58d3745730ba5464fd4491e9d5c6c"},{"version":"25e5c8b73c6ad21f39e8e72f954090f30b431a993252bccea5bdad4a3d93c760","impliedFormat":1},{"version":"5bf595f68b7c1d46ae8385e3363c6e0d4695b6da58a84c6340489fc07ffc73f8","impliedFormat":1},{"version":"b87682ddc9e2c3714ca66991cdd86ff7e18cae6fd010742a93bd612a07d19697","impliedFormat":1},{"version":"87d3ab3f2edb68849714195c008bf9be6067b081ef5a199c9c32f743c6871522","impliedFormat":1},{"version":"86bf2bfe29d0bc3fbc68e64c25ea6eab9bcb3c518ae941012ed75b1e87d391ae","impliedFormat":1},{"version":"8d9c4957c4feed3de73c44eb472f5e44dfb0f0cb75db6ea00f38939bd77f6e84","impliedFormat":1},{"version":"00b4f8b82e78f658b7e269c95d07e55d391235ce34d432764687441177ae7f64","impliedFormat":1},{"version":"57880096566780d72e02a5b34d8577e78cdf072bfd624452a95d65bd8f07cbe0","impliedFormat":1},{"version":"10ac50eaf9eb62c048efe576592b14830a757f7ea7ed28ee8deafc19c9845297","impliedFormat":1},{"version":"e75af112e5487476f7c427945fbd76ca46b28285586ad349a25731d196222d56","impliedFormat":1},{"version":"e91adad3da69c366d57067fcf234030b8a05bcf98c25a759a7a5cd22398ac201","impliedFormat":1},{"version":"d7d6e1974124a2dad1a1b816ba2436a95f44feeda0573d6c9fb355f590cf9086","impliedFormat":1},{"version":"464413fcd7e7a3e1d3f2676dc5ef4ebe211c10e3107e126d4516d79439e4e808","impliedFormat":1},{"version":"18f912e4672327b3dd17d70e91da6fcd79d497ba01dde9053a23e7691f56908c","impliedFormat":1},{"version":"2974e2f06de97e1d6e61d1462b54d7da2c03b3e8458ee4b3dc36273bc6dda990","impliedFormat":1},{"version":"d8c1697db4bb3234ff3f8481545284992f1516bc712421b81ee3ef3f226ae112","impliedFormat":1},{"version":"59b6cce93747f7eb2c0405d9f32b77874e059d9881ec8f1b65ff6c068fcce6f2","impliedFormat":1},{"version":"e2c3c3ca3818d610599392a9431e60ec021c5d59262ecd616538484990f6e331","impliedFormat":1},{"version":"e3cd60be3c4f95c43420be67eaa21637585b7c1a8129f9b39983bbd294f9513c","impliedFormat":1},{"version":"58564964bef3ffbd810241a8bd1c3a54347dd8adf04e1077ba49051009d3007d","affectsGlobalScope":true,"impliedFormat":1},"a0fd8814c82fb4096819a76c3b27e850c68d82fb4804e494e71213976b77b2eb","1af19032d045e05774bfba12057fd0fc753c7179fc476b7dcc884b33ea64c984","361fc6bc75790c61067bd897e1f4d5270db9b77405a6db186e5a5554d75f5472",{"version":"6afe7198e533196a050436bb5563e051314c3086e5b7453d31419b2e0eb8e209","signature":"ab733417a559cb00c9f0a68c547b00f58d11072c93156fab5ce61b7e7c499742"},{"version":"fa98dbde558043e9c9783dcf87be161f1740f8f1fa0d24d0ca7d25042ab2c3cd","signature":"54bd3bba489151adf372f94237cc6686c31189e361fa2bad11563f79eebe2e95"},{"version":"64ccee34285f80c9c992673033d53e08c35060dc98fb6852c6ee2a3aae40921e","signature":"ea5e4ebce73e576a6519eb2b96b8a3d229b6d3203566cc3b171973a665f00ac8"},{"version":"d073dc5181fec0351bdd2238a5ae0593eb36a29f5b10046a0184a1403f53abdb","signature":"f159a19c257f5f04efe47d8a0be66ddd81dba8aeb5b5f19384c4e1d8ffac3611"},{"version":"71d9030d18c220533761ff42670427461d77ac8271c20e5e16233bb7d05e0716","signature":"2a9c83e69b5e4540cb27403761673d1e680b89cd7e6b24d481bdb522c89bbc72"},{"version":"c1e988ce93bd94fc78c924e29b2135e504520ef2dd26f37178876d7787d2a674","signature":"aba1c160c3e33b9a8aa20c041f95411639623072c5703c9e091795d86ed17cce"},{"version":"c108746405cee9a1a577f6665fef8de82546f394a2a43478fd7acdd871fca319","signature":"5a4bc61db45f14789dc30f314d48350c7a3568a96b56ade650f32baeb90d3203"},{"version":"9b2db45ef6eac4814e892d12d4a17e52f5ea85432156561eca3e4969cca4ee07","signature":"248c3ace8b02af932506305729e31039ea318c65f892b349915bdb0af77d5d12"},{"version":"73aec672a832034ac697e37fdf1c8dccb38a89e64482daf8550a16ec4c89b8f2","signature":"d0155d8caad48502a93b23100da5539b39e0d3f33381e8e564b5d5060b8e488e"},{"version":"ee28ad3f10aba8c9165b1e8d670162b8a12f5ca3053894dbe7047bc11c5a65a7","signature":"442c18ea4feac01c872e38a7929812805baff27d202b56a5c9ed4dd931e12d86"},{"version":"2e7844f864245e2c2a001b751fa6674cbf9f466a92e87d7f7fddfbe3c698dfcf","signature":"9a4a5abc75b83581c2edca47a6598982855f895a7d90aef8a90953f2b9d217c5"},{"version":"b1a344a044a446623787fd9f9a88207550095a0d03c97f2077548a11e669c05a","signature":"2475b8bd761aa5c731fed548f6b03b3fdf85c461730bedaddffce54fdb98b35f"},{"version":"04e7debf207a5946a41311078939f88a7202dbf9d25ebc8aaacaca78cc7a86f9","signature":"71260753215e2bd66730264484a09052c251b81a16345b503fe85db47482a292"},{"version":"593654eebe902db28ca173f021f74ea9f77e8b344aebb0a80fa4d10f29bb3a9d","impliedFormat":1},{"version":"b0dcd18b79fa367830399ac2ae400058f83ea0d78238fee00d6bb42c6d29848a","signature":"6e4af890733e445e3918e88c0ccc46e6228ff1da98bc0ed651ce44dad94dd8e3"},{"version":"60af42b5919c4722eb06796d28d42d3d408a5aa5383654ddb25b892d0678f06a","signature":"504e48ced6908184624c4621259b93971608914e5ce8f1fa15d83ccc0e722101"},{"version":"c37d4dc39f3837d4246299b07f9266e21c93f9f85c88a883acc4d7a5f3482ae9","signature":"5a46641bf5e6b0573c322c061e5b10b775998611b691e54eb883b9b99d274519"},{"version":"cab1685580f9d3582a99704da92611cb7eeeb0316d00fd89667d19c6700c903e","signature":"b32476b42b1194d544d327a0d7d9ca2953cb1c93afc6d1e13218f054d7d12124"},{"version":"f05fc1e20083da5b77b0677ffb235607a11b51082f559c12e03a373c8316c586","signature":"accb6ee2cbdcd4d378165eeb6e887385565bcae3ece67ce57e4cf98f205cb28f"},{"version":"4a8956aa605ddb9348a9c79e34228d4acef80e4b37b2758bdae8a0153fe4cda4","signature":"ba880f8d021863d48a90e993830dae44c4b6f3e38656771035554566b0f1cb26"},{"version":"05e8b986b8a36bcfc86e45cb1279957b581614e787e25b65800b4c363ca9141e","signature":"fac5c5fea95bfbfff38408533a5e6e425f75c5c34733165ff0eb32b47af81966"},{"version":"c875eb597d43e07376dfdf52645fcb9514354829848a07cb9f2f57eae56d5d90","signature":"7fc9679b110f7cee4f036d243aae2a1ce0a0e4b01d2f77a59d4c85d97fb5a6c0"},{"version":"6157ea484ad157bae38cee49d495f96cb4f01a538b3e859f0059d4c7bc87e0e1","signature":"70ee758322961202383ecf5587d569f6795cb4c7a86e81ec92dbc0f81326aa06"},{"version":"2d975a3d9aca4b5475b5980444fa685c99a70a299cd698652c79153b28b2a784","signature":"7086ee60abfa239d0004effbaf95bc34c1b0bc086b187c7cb2f0e31fb92ed43a"},{"version":"d6ded480da3503d4e9be3669483e3b944106f4e81e4381610f86acda9f9c7275","signature":"b0079a176f9bdf828b121b557cbff9098e56eb1e195a3aeb0e70f449e3c2da33"},{"version":"f736944ed9470f842948f8347f89488f3a1fc14937e9f94fdd8c597e20916b07","signature":"2a342530dadf3fab9bc56bf6466702a36968e13d07e5298423ee8486199a4d82"},{"version":"4ef688f92ac4de773226cee4f975760d1b646b6cc5664d8fe1494b0ae4713b0b","signature":"a4db781c15bb55ab566d86f64eda02ced229894fa6fa5a685e0bb2865a321444"},{"version":"a6439d7c6737cd9a8477d2fc00876e4bacd0d950bde86150b710ac204f1e7474","signature":"0ebdb3234816edf412c8effdd07ea2f3a4be0a61f1e0b3b2617d53dcb1a8ec4c"},{"version":"ff74755fb3bd5df464d2037afe3914ff1f7f52d40c9a07f8138bc5995a301c8e","signature":"cd1ecb4eeb4b6bd2ed19483ea59aa42b7c48d5fb48e598296029c301f57d4ec5"},{"version":"850aa3d806326c88464f1765e34681019b5d686ec973bf12ef6311b85469e88a","signature":"aaaf1f03c9efcb14463a781ce855c0d954109c34587a0072c737f939602109b4"},{"version":"f5fb1dd57af67699093f9b6ffb598d0b8e6b1718b15e7f01fdeca782e290043d","signature":"cdbcbf3e0166201d9b0828c4fe038f761f6115a8475d1bc491e741d76c2c64c0"},{"version":"0ccc0059b15b5901fa7e0e8b53e5a5ddfed077e7b643d3cbb539131da1a9e203","signature":"ff6d1e239eded8ed48fe9d34189b850d6114b07989c0f67835b6316d81574558"},{"version":"5921b74e7f861e9d1322c0c4af3415e1b166da2f10f8db8d687af4a3d7a07aac","signature":"2793157341dba12ecc66141b2a610fe789941ea89c6c92ebe4eac1b601dabfbd"},{"version":"387b825a30dd66cddc4c0f5e1f821c06689c80450618c1c89b8c7f2bd818c723","signature":"0f8c482431d45c0b2a1ae6254cfdee24a8c115d946565a6278e2e8cadcad6942"},{"version":"953cbf62815703fa9970c9cfec3c8d033da04a90c2409af6070dcc6858cf6b98","impliedFormat":1},{"version":"68065ce3af3ef8599af8338068cf336be35249eff281ee393186a0ef40db3abf","impliedFormat":1},{"version":"5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","impliedFormat":1},{"version":"fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","impliedFormat":1},{"version":"24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","impliedFormat":1},{"version":"aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","impliedFormat":1},{"version":"1f2bddea07543ccda708134cca0600b4d9ac9bd774ec1ede0a69935b04df1496","impliedFormat":1},{"version":"6e8997d08f6798d0a9416df24312cafd084e6184a205d9283eba95ef56f8ef8b","impliedFormat":1},{"version":"ac6968717607889d24d6e407effb48dd5af82005925b4725b1d9eb52a8a047e2","impliedFormat":1},{"version":"26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","impliedFormat":1},{"version":"46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","impliedFormat":1},{"version":"84d02daa32c7a8bff4946bbc7d878ffb7114c19879f7bfceeeb39bef48e93c42","impliedFormat":1},{"version":"29723e0bc48036a127c3b8874f3abe9b695c56103f685f2b817fc532b8995e33","impliedFormat":1},{"version":"991cf4ed946cdf4c140ccaad45c61fc36a25b238a8fa95af51e93cb20c4b0503","impliedFormat":1},{"version":"81ef252ff5df76bccf7863bb355ccbb8af69f7d1064b3ef87b2b01c30fb2c1f4","impliedFormat":1},{"version":"0f17f5f14a5f53e5709404b5b59fe816eaad15a469412b73330e6f69834234e0","impliedFormat":1},{"version":"01edea77be9c2bef3a5f3fc46324c5e420e5bd72b499c5dec217c91866be5a99","impliedFormat":1},{"version":"39209d2b85d238810ef19ab3905c9498918343bc8f72a1dcae7fc0b08270d9a0","impliedFormat":1},{"version":"92a130d875262e78c581f98faa07c62f4510885df6d98213c72f3b83a1be93c1","impliedFormat":1},{"version":"367b818a25afccdbddf932a62a02012869f59fe66d359ff4aca78a7c2bb680aa","impliedFormat":1},{"version":"0aa14ffe353b8bab88046e64a92efa5cd039f095759fe884d188702956e2cba2","impliedFormat":1},{"version":"68d3eee1d509f45625e39ba325a72c6ce1d2116e3d5c3a40f513472e66622e02","impliedFormat":1},{"version":"4e5f1234308de112f09920e0a0b99f35a9780b3abbc13a84445f32a490d0bb87","impliedFormat":1},{"version":"9ac0e5aea87c4a1d37b4677145e9a75bc8e13bf887bd1148a4acb21ab7398d00","impliedFormat":1},{"version":"625b802ecd18feb6a9d69ef8ef58d6c08c9c9022b8105cdeaa3fc77acaab5667","impliedFormat":1},{"version":"2ac33d7f6999e0fb363d1e483d80f087d3e7d712ff6fcc2b4f7b18b5dab92f37","impliedFormat":1},{"version":"195749d135be639001a554e4b4025b66b3c5c627d90b68266c14399bde120cec","impliedFormat":1},{"version":"8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","impliedFormat":1},{"version":"e070102beb7e7ddc99f18f4a692a3bb5f3deaf6369347da8654de90b2845c2fd","signature":"3de7cab5e82823e5bb33fe904f8d17c17b21ebdf4d0255a20566644c54626117"},{"version":"b86edc85512b744a2e07c78035d8dda27bb7827af04c2c41756e94760f101bdf","signature":"0175f8bf07a59b69d80511dea1af06b9b510eb96b4aea5b38b41026cbf2e0690"},{"version":"4420d128dde4f2a3edde7ca2359978aac28889aa5f9d74dd90223e682a46bb78","signature":"7bff6f26cdc43e4a9b86cafdb471abc8cbffb9d1892561a52ab5d9d919a29034"},{"version":"6d21472eed61c5bd01b8d21bbdb5527ce7c146c23abc4f5f6585fcb56705291e","signature":"73057eb512792de1e125190cc4dd2dc54f8b431c4eca05324f854f079e409b65"},{"version":"d54a97df09469e477b23485a22fc4efacb0ebd911ba52d5b5830d8d60124bd91","signature":"0a9137fd1f6cc95a03dc750636d3c795b2a8f1c060aec6c4bd1eb1a55dce802e"},{"version":"001bafcaf7b89f75dd777cd273f9e8472623f44cc22f67a79fb3d01fa38706ce","signature":"e8f1bca3cc46ab477ded80ab60d1f1a79e912f0d6338b1af6b2635b5a0b4bff9"},{"version":"46bb64b34efb5ad48ccfc48ba46afbd439df11ac9bde903e92701ca41741e40d","signature":"94b4120adf8b0d746748c8e56a91b838f54696a0e707695a8222744278e7af5e"},{"version":"ebb14e7a0bc25e43bde017ef255d50edf38a70a01772df2b25544da129d78b2c","signature":"a5024050368af5ae1a93b0771e6d967e868779ec7720835f3ecb65e53545299e"},{"version":"948b13d67afc45b57f75f32be3650a43557cf8c46b7f28908da80f1309c800dd","signature":"9854225e5bb7e958d065b612330fcd9fa13fbce221f67546a653936c0540e4c3"},{"version":"d10d70b4fe21847c61cb0ab72b60162d2cc23ef64e5606822d110cce2dbc9dd8","impliedFormat":1},{"version":"c7500485ac44104d8e23d5849329d90ef93753faa41532cebf3073684e2404ba","signature":"e8eb71a6e2d4d2ee40e0e5a148932f666a8f431d392bffca7a4a44cac4ad2665"},{"version":"a56c2939526b2a9e29bf1cae321e5f84d1854d731cd264d310ddc4996c5ee51f","signature":"50da018f1984a1f044f21efbd648e567a87b84728f385c3e6036889fe2905d41"},{"version":"5fa4a13fa09465ba26ea3851755a05d91733548aa065a86eb9ed7f4827ca05a9","signature":"539ca8eb26ee7514a013b1a5e907a2b28d2dd745b484d0bec0f6a01d7d40a600"},{"version":"c7d7a47394dad98061274892fb0743ebce2cb0f0583eda6143ee8311cb5907ac","signature":"4b355fd9f17011adda2ae8e36e0cfac5ed7cc865adf7501ab5ac142bd449d8d8"},{"version":"92bb8a9aaccdfc7066947a04aff9eb6d830892391ca081663253140412ea6b3c","signature":"08d54e286cfe0b0ef741be1b7c4e638807a9b3f75ffc09a9fb3d500e980e1ea5"},{"version":"676e4e277b3e26d0e6b6f3aea74d22ccd0a84191ad177927718d4ae9a38a4576","signature":"8244896f24acb6519dc3bb4bd1000f0bdb47425af3a5212db1eb4cd2d6a82f45"},{"version":"2fa5b81d1b6028bfd6c02b1f2b1b1346f16b87cfd49d1417806c47ecaa0881af","signature":"a080f2a01cd5c6a3b6ed05daf3cb710f685513815f7cf3127813178acd33e1b7"},{"version":"354298d5865ed2e6698034c79b6171fcd270119da63416d6be2c460db1619c43","signature":"4cb17d629e7bb0df751ae3e10d78a23d59ea51fc7c02044f9a003ba6f36fedf7"},{"version":"df274a05b6c76765a4c2a0d489855d56b3885120bf108917580a420af8f11adb","signature":"b82491e2990291580288c5602d4c017238977749d52b17391f0e45d9a29be644"},"bc12722746bca513d15d6091ee505d8da6e159f22ff0b7210702cdb70ea65168",{"version":"4e471852c50148b8468b18813c8ca875b1feaa3eae8f4086163b3858516a3ebd","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"73a3b93d2b1c85f544d3b603f32ba4c4fa39bc3f65af411e302a184a196988b1","signature":"33bbc1924c4cfcae22f6220d9f9a2f5a8ebef1e4c85143a263501886b8dd7689"},{"version":"a0df771a66d5dc23fdac670c841b1dd1a7911cb09f6458887ff7c346f5aa2b4c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"e1028394c1cf96d5d057ecc647e31e457b919092f882ed0c7092152b077fed9d","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"17668c1aab598920796050ee5a00d961ede5e92595f6ac8908a975ed75a537e5","impliedFormat":1},{"version":"ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","impliedFormat":1},{"version":"20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","impliedFormat":1},{"version":"6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"4006c872e38a2c4e09c593bc0cdd32b7b4f5c4843910bea0def631c483fff6c5","impliedFormat":1},{"version":"ab6aa3a65d473871ee093e3b7b71ed0f9c69e07d1d4295f45c9efd91a771241d","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[632,633,665,666,806,807,[810,826],[847,862],[864,883],[912,920],[922,934]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":false,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":false,"strictNullChecks":false,"target":8,"useDefineForClassFields":false},"referencedMap":[[630,1],[629,2],[937,3],[935,4],[950,4],[953,5],[530,4],[319,4],[57,4],[308,6],[309,6],[310,4],[311,7],[321,8],[312,4],[313,9],[314,4],[315,4],[316,6],[317,6],[318,6],[320,10],[328,11],[330,4],[327,4],[333,12],[331,4],[329,4],[325,13],[326,14],[332,4],[334,15],[322,4],[324,16],[323,17],[263,4],[266,18],[262,4],[577,4],[264,4],[265,4],[351,19],[336,19],[343,19],[340,19],[353,19],[344,19],[350,19],[335,20],[354,19],[357,21],[348,19],[338,19],[356,19],[341,19],[339,19],[349,19],[345,19],[355,19],[342,19],[352,19],[337,19],[347,19],[346,19],[364,22],[360,23],[359,4],[358,4],[363,24],[402,25],[58,4],[59,4],[60,4],[559,26],[62,27],[565,28],[564,29],[252,30],[253,27],[373,4],[282,4],[283,4],[374,31],[254,4],[375,4],[376,32],[61,4],[256,33],[257,4],[255,34],[258,33],[259,4],[261,35],[273,36],[274,4],[279,37],[275,4],[276,4],[277,4],[278,4],[280,4],[281,38],[287,39],[290,40],[288,4],[289,4],[307,41],[291,4],[292,4],[608,42],[272,43],[270,44],[268,45],[269,46],[271,4],[299,47],[293,4],[302,48],[295,49],[300,50],[298,51],[301,52],[296,53],[297,54],[285,55],[303,56],[286,57],[305,58],[306,59],[294,4],[260,4],[267,60],[304,61],[370,62],[365,4],[371,63],[366,64],[367,65],[368,66],[369,67],[372,68],[388,69],[387,70],[393,71],[385,4],[386,72],[389,69],[390,73],[392,74],[391,75],[394,76],[379,77],[380,78],[383,79],[382,79],[381,78],[384,78],[378,80],[396,81],[395,82],[398,83],[397,84],[399,85],[361,55],[362,86],[284,4],[400,87],[377,88],[401,89],[403,7],[515,90],[516,91],[520,92],[404,4],[410,93],[513,94],[514,95],[405,4],[406,4],[409,96],[407,4],[408,4],[518,4],[519,97],[517,98],[521,99],[528,100],[529,101],[550,102],[551,103],[552,4],[553,104],[554,105],[563,106],[556,107],[560,108],[568,109],[566,7],[567,110],[557,111],[569,4],[571,112],[572,113],[573,114],[562,115],[558,116],[582,117],[570,118],[597,119],[555,120],[598,121],[595,122],[596,7],[620,123],[545,124],[541,125],[543,126],[594,127],[536,128],[584,129],[583,4],[544,130],[591,131],[548,132],[592,4],[593,133],[546,134],[540,135],[547,136],[542,137],[535,4],[588,138],[601,139],[599,7],[531,7],[587,140],[532,14],[533,103],[534,141],[538,142],[537,143],[600,144],[539,145],[576,146],[574,112],[575,147],[585,14],[586,148],[589,149],[604,150],[605,151],[602,152],[603,153],[606,154],[607,155],[609,156],[581,157],[578,158],[579,6],[580,147],[611,159],[610,160],[617,161],[549,7],[613,162],[612,7],[615,163],[614,4],[616,164],[561,165],[590,166],[619,167],[618,7],[640,168],[636,169],[635,170],[637,4],[638,171],[639,172],[641,173],[642,4],[646,174],[662,175],[643,7],[645,176],[644,4],[647,177],[660,178],[661,179],[663,180],[830,181],[831,182],[845,183],[833,184],[832,185],[827,186],[828,4],[829,4],[844,187],[835,188],[836,188],[837,188],[838,188],[840,189],[839,188],[841,190],[842,191],[834,4],[843,192],[903,193],[906,194],[904,4],[905,4],[884,4],[885,195],[910,196],[907,7],[908,197],[909,193],[911,198],[627,199],[525,200],[624,4],[522,4],[523,201],[526,202],[527,7],[621,203],[524,201],[622,204],[623,205],[625,206],[626,4],[631,207],[628,4],[952,4],[940,208],[936,3],[938,209],[939,3],[664,210],[657,211],[656,212],[945,213],[944,214],[943,215],[941,4],[651,216],[658,217],[946,218],[652,4],[947,4],[948,219],[949,220],[958,221],[942,4],[634,222],[895,223],[888,224],[892,225],[890,226],[893,227],[891,228],[894,229],[889,4],[887,230],[886,231],[653,4],[846,232],[460,233],[461,233],[462,234],[463,235],[464,236],[465,237],[411,4],[414,238],[412,4],[413,4],[466,239],[467,240],[468,241],[469,242],[470,243],[471,244],[472,244],[473,245],[474,246],[475,247],[476,248],[417,4],[477,249],[478,250],[479,251],[480,252],[481,253],[482,254],[483,255],[484,256],[485,257],[486,258],[487,259],[488,260],[489,261],[490,261],[491,262],[492,4],[493,263],[495,264],[494,265],[496,266],[497,267],[498,268],[499,269],[500,270],[501,271],[502,272],[416,273],[415,4],[511,274],[503,275],[504,276],[505,277],[506,278],[507,279],[508,280],[418,4],[419,4],[420,4],[459,281],[509,282],[510,283],[809,284],[959,285],[808,286],[659,287],[649,4],[650,4],[984,288],[985,289],[961,290],[964,291],[982,288],[983,288],[973,288],[972,292],[970,288],[965,288],[978,288],[976,288],[980,288],[960,288],[977,288],[981,288],[966,288],[967,288],[979,288],[962,288],[968,288],[969,288],[971,288],[975,288],[986,293],[974,288],[963,288],[999,294],[998,4],[993,293],[995,295],[994,293],[987,293],[988,293],[990,293],[992,293],[996,295],[997,295],[989,295],[991,295],[648,296],[655,297],[654,298],[1000,4],[1001,4],[1002,4],[709,299],[700,4],[701,4],[702,4],[703,4],[704,4],[705,4],[706,4],[707,4],[708,4],[1003,4],[1004,300],[421,4],[951,4],[670,4],[789,301],[793,301],[792,301],[790,301],[791,301],[794,301],[673,301],[685,301],[674,301],[687,301],[689,301],[683,301],[682,301],[684,301],[688,301],[690,301],[675,301],[686,301],[676,301],[678,302],[679,301],[680,301],[681,301],[697,301],[696,301],[797,303],[691,301],[693,301],[692,301],[694,301],[695,301],[796,301],[795,301],[698,301],[780,301],[779,301],[710,304],[711,304],[713,301],[757,301],[778,301],[714,304],[758,301],[755,301],[759,301],[715,301],[716,301],[717,304],[760,301],[754,304],[712,304],[761,301],[718,304],[762,301],[742,301],[719,304],[720,301],[721,301],[752,304],[724,301],[723,301],[763,301],[764,301],[765,304],[726,301],[728,301],[729,301],[735,301],[736,301],[730,304],[766,301],[753,304],[731,301],[732,301],[767,301],[733,301],[725,304],[768,301],[751,301],[769,301],[734,304],[737,301],[738,301],[756,304],[770,301],[771,301],[750,305],[727,301],[772,304],[773,301],[774,301],[775,301],[776,304],[739,301],[777,301],[743,301],[740,304],[741,304],[722,301],[744,301],[747,301],[745,301],[746,301],[699,301],[787,301],[781,301],[782,301],[784,301],[785,301],[783,301],[788,301],[786,301],[672,306],[805,307],[803,308],[804,309],[802,310],[801,301],[800,311],[669,4],[671,4],[667,4],[798,4],[799,312],[677,306],[668,4],[897,4],[896,4],[902,313],[898,314],[901,315],[900,316],[899,4],[512,210],[921,317],[957,318],[955,319],[956,320],[749,321],[748,4],[954,322],[56,4],[251,323],[224,4],[202,324],[200,324],[250,325],[215,326],[214,326],[115,327],[66,328],[222,327],[223,327],[225,329],[226,327],[227,330],[126,331],[228,327],[199,327],[229,327],[230,332],[231,327],[232,326],[233,333],[234,327],[235,327],[236,327],[237,327],[238,326],[239,327],[240,327],[241,327],[242,327],[243,334],[244,327],[245,327],[246,327],[247,327],[248,327],[65,325],[68,330],[69,330],[70,330],[71,330],[72,330],[73,330],[74,330],[75,327],[77,335],[78,330],[76,330],[79,330],[80,330],[81,330],[82,330],[83,330],[84,330],[85,327],[86,330],[87,330],[88,330],[89,330],[90,330],[91,327],[92,330],[93,330],[94,330],[95,330],[96,330],[97,330],[98,327],[100,336],[99,330],[101,330],[102,330],[103,330],[104,330],[105,334],[106,327],[107,327],[121,337],[109,338],[110,330],[111,330],[112,327],[113,330],[114,330],[116,339],[117,330],[118,330],[119,330],[120,330],[122,330],[123,330],[124,330],[125,330],[127,340],[128,330],[129,330],[130,330],[131,327],[132,330],[133,341],[134,341],[135,341],[136,327],[137,330],[138,330],[139,330],[144,330],[140,330],[141,327],[142,330],[143,327],[145,330],[146,330],[147,330],[148,330],[149,330],[150,330],[151,327],[152,330],[153,330],[154,330],[155,330],[156,330],[157,330],[158,330],[159,330],[160,330],[161,330],[162,330],[163,330],[164,330],[165,330],[166,330],[167,330],[168,342],[169,330],[170,330],[171,330],[172,330],[173,330],[174,330],[175,327],[176,327],[177,327],[178,327],[179,327],[180,330],[181,330],[182,330],[183,330],[201,343],[249,327],[186,344],[185,345],[209,346],[208,347],[204,348],[203,347],[205,349],[194,350],[192,351],[207,352],[206,349],[193,4],[195,353],[108,354],[64,355],[63,330],[198,4],[190,356],[191,357],[188,4],[189,358],[187,330],[196,359],[67,360],[216,4],[217,4],[210,4],[213,326],[212,4],[218,4],[219,4],[211,361],[220,4],[221,4],[184,362],[197,363],[53,4],[54,4],[11,4],[9,4],[10,4],[15,4],[14,4],[2,4],[16,4],[17,4],[18,4],[19,4],[20,4],[21,4],[22,4],[23,4],[3,4],[24,4],[4,4],[25,4],[29,4],[26,4],[27,4],[28,4],[30,4],[31,4],[32,4],[5,4],[33,4],[34,4],[35,4],[36,4],[6,4],[40,4],[37,4],[38,4],[39,4],[41,4],[7,4],[42,4],[47,4],[48,4],[43,4],[44,4],[45,4],[46,4],[8,4],[55,4],[52,4],[49,4],[50,4],[51,4],[1,4],[13,4],[12,4],[437,364],[447,365],[436,364],[457,366],[428,367],[427,368],[456,210],[450,369],[455,370],[430,371],[444,372],[429,373],[453,374],[425,375],[424,210],[454,376],[426,377],[431,378],[432,4],[435,378],[422,4],[458,379],[448,380],[439,381],[440,382],[442,383],[438,384],[441,385],[451,210],[433,386],[434,387],[443,388],[423,389],[446,380],[445,378],[449,4],[452,390],[863,4],[934,391],[930,392],[931,393],[633,394],[632,395],[932,396],[926,397],[925,394],[928,398],[927,394],[929,399],[807,400],[811,401],[665,402],[806,403],[810,404],[826,405],[822,7],[814,7],[666,406],[815,407],[823,408],[825,409],[824,394],[812,7],[816,410],[817,411],[813,412],[923,413],[924,414],[922,415],[848,416],[849,417],[847,418],[878,403],[880,419],[881,420],[879,421],[853,403],[854,403],[856,422],[857,423],[855,424],[915,425],[916,426],[912,394],[913,427],[919,428],[920,429],[918,394],[874,403],[876,430],[877,431],[875,432],[861,403],[860,403],[859,403],[858,403],[933,403],[862,403],[872,433],[871,434],[868,435],[865,436],[873,437],[864,438],[870,439],[869,394],[867,440],[866,394],[882,403],[914,441],[917,442],[883,443],[851,444],[852,445],[850,394],[818,403],[820,446],[821,447],[819,448]],"version":"5.6.3"} \ No newline at end of file diff --git a/reading-platform-backend/prisma/dev.db b/reading-platform-backend/prisma/dev.db index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2b5ce24cbff73bd439545d4b443b62910888991e 100644 GIT binary patch literal 372736 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