From 995f4ecfbd3786b447088cebf1652531afce85e4 Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Thu, 4 Jun 2026 11:50:25 +0800 Subject: [PATCH] feat: add four new student modules (rotation, skill-video, exam-prep, academic) with backend APIs and frontend pages; add exam-prep question history with DB persistence --- .ai-switch/rules/rules.json | 810 ++ .cursorrules | 112 + .env.example | 24 + .gitignore | 44 + .kiro/specs/college-ai-center/.config.kiro | 1 + .kiro/specs/college-ai-center/design.md | 641 ++ .kiro/specs/college-ai-center/requirements.md | 279 + .kiro/specs/college-ai-center/tasks.md | 275 + .vscode/settings.json | 2 + .windsurfrules | 112 + 0.md | 32 + baidu-backup.sh | 347 + collegeAIcenter.code-workspace | 9 + frontend/.gitignore | 6 + frontend/README.md | 52 + frontend/next.config.mjs | 16 + frontend/package-lock.json | 1664 ++++ frontend/package.json | 25 + frontend/postcss.config.mjs | 9 + frontend/src/app/admin/compliance/page.tsx | 145 + frontend/src/app/admin/layout.tsx | 26 + frontend/src/app/admin/page.tsx | 45 + frontend/src/app/admin/skills/page.tsx | 322 + frontend/src/app/globals.css | 41 + frontend/src/app/layout.tsx | 23 + frontend/src/app/login/page.tsx | 233 + frontend/src/app/mentor/comments/page.tsx | 112 + frontend/src/app/mentor/layout.tsx | 27 + frontend/src/app/mentor/page.tsx | 50 + frontend/src/app/mentor/review/page.tsx | 104 + frontend/src/app/mentor/students/page.tsx | 160 + frontend/src/app/page.tsx | 25 + frontend/src/app/student/career/page.tsx | 304 + frontend/src/app/student/clinical/page.tsx | 220 + .../src/app/student/collaboration/page.tsx | 219 + frontend/src/app/student/layout.tsx | 42 + .../src/app/student/learning-space/page.tsx | 209 + frontend/src/app/student/page.tsx | 73 + frontend/src/app/student/practice/page.tsx | 319 + frontend/src/app/student/profile/page.tsx | 94 + frontend/src/app/student/research/page.tsx | 332 + frontend/src/components/app-shell.tsx | 201 + frontend/src/components/display.tsx | 181 + frontend/src/components/nav-icons.tsx | 167 + frontend/src/components/ui.tsx | 78 + frontend/src/lib/api.ts | 105 + frontend/src/lib/auth-context.tsx | 108 + frontend/src/lib/services.ts | 267 + frontend/src/lib/types.ts | 366 + frontend/tailwind.config.ts | 26 + frontend/tsconfig.json | 23 + nest-cli.json | 7 + package-lock.json | 8570 +++++++++++++++++ package.json | 73 + src/app.module.spec.ts | 21 + src/app.module.ts | 77 + src/common/errors/app-error.ts | 45 + src/common/errors/authorization-error.ts | 42 + src/common/errors/error-kind.ts | 15 + src/common/errors/errors.spec.ts | 60 + src/common/errors/generation-error.ts | 61 + src/common/errors/index.ts | 6 + src/common/errors/system-error.ts | 36 + src/common/errors/validation-error.ts | 44 + src/common/http/app-error.http.ts | 61 + src/common/http/index.ts | 1 + src/common/index.ts | 3 + src/common/pagination/index.ts | 1 + src/common/pagination/pagination.spec.ts | 42 + src/common/pagination/pagination.ts | 47 + src/common/result/index.ts | 1 + src/common/result/result.spec.ts | 77 + src/common/result/result.ts | 79 + src/infra/ai-gateway/ai-gateway.module.ts | 30 + src/infra/ai-gateway/ai-gateway.types.ts | 59 + src/infra/ai-gateway/index.ts | 4 + src/infra/ai-gateway/mock-ai-gateway.spec.ts | 45 + src/infra/ai-gateway/mock-ai-gateway.ts | 73 + src/infra/ai-gateway/openai-ai-gateway.ts | 108 + src/infra/database/database.config.ts | 30 + src/infra/database/database.module.ts | 35 + src/infra/database/persistence.util.ts | 19 + src/infra/index.ts | 4 + src/infra/reference-source/index.ts | 3 + .../mock-reference-source.adapter.spec.ts | 71 + .../mock-reference-source.adapter.ts | 77 + .../reference-source.module.ts | 22 + .../reference-source.types.ts | 61 + ...evement-profile-career.integration.spec.ts | 211 + .../core-invariants.integration.spec.ts | 239 + .../cross-cutting.integration.spec.ts | 277 + src/integration/integration-harness.ts | 331 + .../skill-graph-profile.integration.spec.ts | 275 + src/main.ts | 48 + src/modules/README.md | 26 + src/modules/academic/academic.controller.ts | 24 + src/modules/academic/academic.module.ts | 11 + src/modules/academic/academic.service.ts | 71 + src/modules/academic/index.ts | 2 + .../ai-collaboration.controller.ts | 94 + .../ai-collaboration/ai-collaboration.dto.ts | 66 + .../ai-collaboration.e2e.spec.ts | 229 + .../ai-collaboration.module.ts | 99 + .../ai-collaboration.service.spec.ts | 568 ++ .../ai-collaboration.service.ts | 548 ++ .../ai-collaboration.types.ts | 381 + .../ai-collaboration/assessment-error.ts | 96 + .../collaboration-assessment.entity.ts | 73 + .../collaboration-mentor-comment.entity.ts | 45 + src/modules/ai-collaboration/index.ts | 11 + .../in-memory-ai-collaboration.repository.ts | 130 + .../typeorm-ai-collaboration.repository.ts | 171 + .../system-collaboration-clock.ts | 17 + .../ai-evaluation.error-paths.spec.ts | 332 + .../ai-evaluation/ai-evaluation.module.ts | 31 + .../ai-evaluation.service.spec.ts | 269 + .../ai-evaluation/ai-evaluation.service.ts | 455 + .../ai-evaluation/ai-evaluation.types.ts | 216 + src/modules/ai-evaluation/evaluation-error.ts | 97 + src/modules/ai-evaluation/index.ts | 4 + src/modules/ai-trust/ai-trust.module.ts | 19 + src/modules/ai-trust/ai-trust.service.spec.ts | 268 + src/modules/ai-trust/ai-trust.service.ts | 160 + src/modules/ai-trust/ai-trust.types.ts | 194 + src/modules/ai-trust/index.ts | 3 + src/modules/auth/auth-error.ts | 76 + src/modules/auth/auth.config.ts | 35 + src/modules/auth/auth.controller.ts | 72 + src/modules/auth/auth.e2e.spec.ts | 149 + src/modules/auth/auth.module.ts | 123 + src/modules/auth/auth.service.spec.ts | 159 + src/modules/auth/auth.service.ts | 231 + src/modules/auth/auth.types.ts | 156 + src/modules/auth/bcrypt-password-hasher.ts | 24 + src/modules/auth/decorators.ts | 39 + src/modules/auth/dto.ts | 55 + .../auth/entities/user-account.entity.ts | 42 + src/modules/auth/index.ts | 14 + src/modules/auth/jwt-auth.guard.ts | 69 + .../repositories/in-memory-auth.repository.ts | 49 + .../repositories/typeorm-auth.repository.ts | 64 + src/modules/auth/roles.guard.ts | 43 + src/modules/auth/seed-accounts.ts | 51 + src/modules/career-module/career-error.ts | 122 + .../career-module/career.controller.ts | 80 + src/modules/career-module/career.dto.ts | 40 + src/modules/career-module/career.e2e.spec.ts | 137 + src/modules/career-module/career.module.ts | 106 + .../career-module/career.service.spec.ts | 991 ++ src/modules/career-module/career.service.ts | 590 ++ src/modules/career-module/career.types.ts | 540 ++ .../career-goal-association.entity.ts | 40 + src/modules/career-module/index.ts | 13 + .../mock-competency-model.provider.ts | 264 + .../mock-learning-resource.provider.ts | 127 + src/modules/career-module/plan-error.ts | 93 + .../in-memory-career.repository.ts | 73 + .../repositories/typeorm-career.repository.ts | 85 + .../career-module/system-career-clock.ts | 17 + .../case-reasoning.controller.ts | 37 + .../case-reasoning/case-reasoning.module.ts | 15 + .../case-reasoning/case-reasoning.service.ts | 210 + src/modules/case-reasoning/index.ts | 2 + .../clinical-dialogue.controller.ts | 73 + .../clinical-dialogue.dto.ts | 22 + .../clinical-dialogue.e2e.spec.ts | 181 + .../clinical-dialogue.module.ts | 128 + .../clinical-dialogue.service.spec.ts | 559 ++ .../clinical-dialogue.service.ts | 725 ++ .../clinical-dialogue.types.ts | 379 + .../entities/dialogue-report.entity.ts | 66 + .../entities/dialogue-session.entity.ts | 72 + src/modules/clinical-dialogue/index.ts | 11 + .../mock-clinical-scenario.provider.ts | 144 + .../in-memory-clinical-dialogue.repository.ts | 105 + .../typeorm-clinical-dialogue.repository.ts | 175 + .../system-dialogue-clock.ts | 17 + .../competency-graph.module.ts | 99 + .../competency-graph.types.ts | 297 + .../competency-mapping.service.spec.ts | 279 + .../competency-mapping.service.ts | 170 + .../competency-overview.service.spec.ts | 364 + .../competency-overview.service.ts | 163 + .../competency-tag.service.spec.ts | 221 + .../competency-tag.service.ts | 149 + .../entities/competency-dimension.entity.ts | 28 + .../entities/competency-mapping.entity.ts | 47 + .../entities/competency-tag.entity.ts | 36 + .../entities/mapping-rejection.entity.ts | 45 + src/modules/competency-graph/index.ts | 11 + .../in-memory-competency-graph.repository.ts | 115 + .../typeorm-competency-graph.repository.ts | 184 + .../compliance/audit-log.service.spec.ts | 328 + src/modules/compliance/audit-log.service.ts | 174 + .../compliance-access.service.spec.ts | 292 + .../compliance/compliance-access.service.ts | 213 + .../compliance/compliance.controller.ts | 79 + src/modules/compliance/compliance.e2e.spec.ts | 124 + src/modules/compliance/compliance.module.ts | 84 + src/modules/compliance/compliance.types.ts | 652 ++ .../compliance/consent.service.spec.ts | 477 + src/modules/compliance/consent.service.ts | 300 + .../entities/access-denial-event.entity.ts | 48 + .../compliance/entities/audit-log.entity.ts | 74 + .../entities/consent-record.entity.ts | 45 + src/modules/compliance/index.ts | 11 + .../in-memory-compliance.repository.ts | 141 + .../typeorm-compliance.repository.ts | 199 + .../exam-prep/entities/exam-record.entity.ts | 39 + src/modules/exam-prep/exam-prep.controller.ts | 51 + src/modules/exam-prep/exam-prep.module.ts | 38 + src/modules/exam-prep/exam-prep.service.ts | 317 + src/modules/exam-prep/exam-prep.types.ts | 22 + src/modules/exam-prep/index.ts | 2 + .../in-memory-exam-prep.repository.ts | 27 + .../typeorm-exam-prep.repository.ts | 58 + .../entities/achievement.entity.ts | 65 + .../entities/milestone.entity.ts | 31 + src/modules/learning-space/index.ts | 9 + .../learning-space.archive-milestone.spec.ts | 366 + .../learning-space.controller.ts | 99 + .../learning-space/learning-space.dto.ts | 154 + .../learning-space/learning-space.e2e.spec.ts | 183 + .../learning-space/learning-space.module.ts | 68 + .../learning-space.retrieval-tags.spec.ts | 378 + .../learning-space.service.spec.ts | 342 + .../learning-space/learning-space.service.ts | 535 + .../learning-space/learning-space.types.ts | 405 + .../in-memory-learning-space.repository.ts | 120 + .../typeorm-learning-space.repository.ts | 147 + src/modules/medical-knowledge/index.ts | 2 + .../medical-knowledge.controller.ts | 24 + .../medical-knowledge.module.ts | 15 + .../medical-knowledge.service.ts | 89 + src/modules/medication-safety/index.ts | 2 + .../medication-safety.controller.ts | 33 + .../medication-safety.module.ts | 14 + .../medication-safety.service.ts | 159 + .../entities/achievement-comment.entity.ts | 44 + .../entities/mentorship-relation.entity.ts | 24 + src/modules/mentor/index.ts | 13 + src/modules/mentor/mentor-error.ts | 93 + src/modules/mentor/mentor.controller.ts | 100 + src/modules/mentor/mentor.dto.ts | 36 + src/modules/mentor/mentor.e2e.spec.ts | 140 + src/modules/mentor/mentor.module.ts | 113 + src/modules/mentor/mentor.service.spec.ts | 488 + src/modules/mentor/mentor.service.ts | 294 + src/modules/mentor/mentor.types.ts | 117 + .../in-memory-mentor.repository.ts | 47 + .../in-memory-mentorship.repository.ts | 45 + .../repositories/typeorm-mentor.repository.ts | 67 + .../typeorm-mentorship.repository.ts | 46 + src/modules/mentor/system-mentor-clock.ts | 17 + .../entities/practice-report.entity.ts | 86 + .../entities/practice-session.entity.ts | 69 + .../question-generation-rejection.entity.ts | 48 + .../entities/question.entity.ts | 94 + src/modules/practice-engine/index.ts | 13 + .../mock-course-content.provider.ts | 161 + .../practice-engine.controller.ts | 130 + .../practice-engine/practice-engine.dto.ts | 45 + .../practice-engine.e2e.spec.ts | 219 + .../practice-engine/practice-engine.module.ts | 135 + .../practice-engine.practice.spec.ts | 617 ++ .../practice-engine.review.spec.ts | 326 + .../practice-engine.service.spec.ts | 403 + .../practice-engine.service.ts | 1034 ++ .../practice-engine/practice-engine.types.ts | 686 ++ .../in-memory-practice-engine.repository.ts | 203 + .../typeorm-practice-engine.repository.ts | 352 + .../practice-engine/system-practice-clock.ts | 17 + src/modules/profile-engine/index.ts | 6 + .../profile-engine.controller.ts | 55 + .../profile-engine/profile-engine.dto.ts | 16 + .../profile-engine/profile-engine.e2e.spec.ts | 114 + .../profile-engine/profile-engine.module.ts | 33 + .../profile-engine.property.spec.ts | 147 + .../profile-engine.service.spec.ts | 487 + .../profile-engine/profile-engine.service.ts | 309 + .../profile-engine/profile-engine.types.ts | 237 + src/modules/profile-engine/profile-error.ts | 65 + src/modules/research-query/citation-error.ts | 69 + .../entities/search-query.entity.ts | 51 + src/modules/research-query/export-error.ts | 86 + src/modules/research-query/index.ts | 16 + src/modules/research-query/medical-lexicon.ts | 213 + src/modules/research-query/question-error.ts | 92 + .../in-memory-research-query.repository.ts | 55 + .../typeorm-research-query.repository.ts | 73 + .../research-query.controller.ts | 119 + .../research-query/research-query.dto.ts | 159 + .../research-query/research-query.e2e.spec.ts | 183 + .../research-query/research-query.module.ts | 99 + .../research-query.property.spec.ts | 208 + .../research-query.service.spec.ts | 573 ++ .../research-query/research-query.service.ts | 856 ++ .../research-query.summary.spec.ts | 603 ++ .../research-query/research-query.types.ts | 464 + src/modules/research-query/source-error.ts | 82 + src/modules/research-query/summary-error.ts | 93 + src/modules/research-query/summary-support.ts | 230 + .../system-research-query-clock.ts | 17 + src/modules/rotation/index.ts | 2 + src/modules/rotation/rotation.controller.ts | 24 + src/modules/rotation/rotation.module.ts | 11 + src/modules/rotation/rotation.service.ts | 47 + src/modules/skill-center/builtin-skills.ts | 273 + .../entities/skill-audit-log.entity.ts | 47 + .../entities/skill-definition.entity.ts | 53 + src/modules/skill-center/index.ts | 14 + .../knowledge-source-availability.ts | 44 + .../in-memory-skill-center.repository.ts | 68 + .../typeorm-skill-center.repository.ts | 108 + .../skill-center/skill-center.controller.ts | 108 + src/modules/skill-center/skill-center.dto.ts | 60 + .../skill-center/skill-center.e2e.spec.ts | 128 + .../skill-center/skill-center.module.ts | 96 + .../skill-center/skill-center.types.ts | 382 + .../skill-center/skill-competency-tags.ts | 61 + .../skill-definition.service.spec.ts | 277 + .../skill-center/skill-definition.service.ts | 218 + .../skill-governance.service.spec.ts | 337 + .../skill-center/skill-governance.service.ts | 281 + .../skill-invocation.service.spec.ts | 414 + .../skill-center/skill-invocation.service.ts | 451 + src/modules/skill-video/index.ts | 2 + .../skill-video/skill-video.controller.ts | 20 + src/modules/skill-video/skill-video.module.ts | 11 + .../skill-video/skill-video.service.ts | 40 + tsconfig.build.json | 4 + tsconfig.json | 30 + web/.env.example | 2 + web/.gitignore | 27 + web/README.md | 37 + web/components.json | 20 + web/next.config.mjs | 18 + web/package-lock.json | 6379 ++++++++++++ web/package.json | 35 + web/postcss.config.mjs | 7 + web/src/app/admin/compliance/page.tsx | 187 + web/src/app/admin/layout.tsx | 17 + web/src/app/admin/page.tsx | 68 + web/src/app/admin/skills/page.tsx | 372 + web/src/app/globals.css | 325 + web/src/app/layout.tsx | 40 + web/src/app/login/page.tsx | 298 + web/src/app/mentor/comments/page.tsx | 151 + web/src/app/mentor/layout.tsx | 17 + web/src/app/mentor/page.tsx | 52 + web/src/app/mentor/review/page.tsx | 134 + web/src/app/mentor/students/page.tsx | 193 + web/src/app/page.tsx | 21 + web/src/app/student/academic/page.tsx | 214 + web/src/app/student/career/page.tsx | 354 + web/src/app/student/case-reasoning/page.tsx | 306 + web/src/app/student/clinical/page.tsx | 243 + web/src/app/student/collaboration/page.tsx | 265 + web/src/app/student/exam-prep/page.tsx | 447 + web/src/app/student/knowledge/page.tsx | 218 + web/src/app/student/layout.tsx | 17 + web/src/app/student/learning-space/page.tsx | 235 + web/src/app/student/medication/page.tsx | 282 + web/src/app/student/page.tsx | 104 + web/src/app/student/practice/page.tsx | 378 + web/src/app/student/profile/page.tsx | 151 + web/src/app/student/research/page.tsx | 370 + web/src/app/student/rotation/page.tsx | 219 + web/src/app/student/skill-video/page.tsx | 159 + web/src/components/charts.tsx | 231 + web/src/components/display.tsx | 274 + web/src/components/feature-grid.tsx | 73 + web/src/components/feedback.tsx | 99 + web/src/components/layout/app-shell.tsx | 184 + web/src/components/layout/header.tsx | 277 + web/src/components/learning-progress.tsx | 138 + web/src/components/providers.tsx | 51 + web/src/components/quick-actions.tsx | 133 + web/src/components/skeletons.tsx | 80 + web/src/components/theme-toggle.tsx | 56 + web/src/components/ui/badge.tsx | 41 + web/src/components/ui/button.tsx | 55 + web/src/components/ui/card.tsx | 83 + web/src/components/ui/input.tsx | 19 + web/src/components/ui/label.tsx | 18 + web/src/components/ui/select.tsx | 27 + web/src/components/ui/separator.tsx | 22 + web/src/components/ui/skeleton.tsx | 13 + web/src/components/ui/sonner.tsx | 40 + web/src/components/ui/textarea.tsx | 18 + web/src/components/usage-guide.tsx | 91 + web/src/components/welcome-banner.tsx | 56 + web/src/lib/api.ts | 108 + web/src/lib/navigation.ts | 202 + web/src/lib/services.ts | 390 + web/src/lib/types.ts | 366 + web/src/lib/utils.ts | 23 + web/src/stores/auth.ts | 92 + web/tsconfig.json | 23 + 399 files changed, 73529 insertions(+) create mode 100644 .ai-switch/rules/rules.json create mode 100644 .cursorrules create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 .kiro/specs/college-ai-center/.config.kiro create mode 100644 .kiro/specs/college-ai-center/design.md create mode 100644 .kiro/specs/college-ai-center/requirements.md create mode 100644 .kiro/specs/college-ai-center/tasks.md create mode 100644 .vscode/settings.json create mode 100644 .windsurfrules create mode 100644 0.md create mode 100755 baidu-backup.sh create mode 100644 collegeAIcenter.code-workspace create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/next.config.mjs create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.mjs create mode 100644 frontend/src/app/admin/compliance/page.tsx create mode 100644 frontend/src/app/admin/layout.tsx create mode 100644 frontend/src/app/admin/page.tsx create mode 100644 frontend/src/app/admin/skills/page.tsx create mode 100644 frontend/src/app/globals.css create mode 100644 frontend/src/app/layout.tsx create mode 100644 frontend/src/app/login/page.tsx create mode 100644 frontend/src/app/mentor/comments/page.tsx create mode 100644 frontend/src/app/mentor/layout.tsx create mode 100644 frontend/src/app/mentor/page.tsx create mode 100644 frontend/src/app/mentor/review/page.tsx create mode 100644 frontend/src/app/mentor/students/page.tsx create mode 100644 frontend/src/app/page.tsx create mode 100644 frontend/src/app/student/career/page.tsx create mode 100644 frontend/src/app/student/clinical/page.tsx create mode 100644 frontend/src/app/student/collaboration/page.tsx create mode 100644 frontend/src/app/student/layout.tsx create mode 100644 frontend/src/app/student/learning-space/page.tsx create mode 100644 frontend/src/app/student/page.tsx create mode 100644 frontend/src/app/student/practice/page.tsx create mode 100644 frontend/src/app/student/profile/page.tsx create mode 100644 frontend/src/app/student/research/page.tsx create mode 100644 frontend/src/components/app-shell.tsx create mode 100644 frontend/src/components/display.tsx create mode 100644 frontend/src/components/nav-icons.tsx create mode 100644 frontend/src/components/ui.tsx create mode 100644 frontend/src/lib/api.ts create mode 100644 frontend/src/lib/auth-context.tsx create mode 100644 frontend/src/lib/services.ts create mode 100644 frontend/src/lib/types.ts create mode 100644 frontend/tailwind.config.ts create mode 100644 frontend/tsconfig.json create mode 100644 nest-cli.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/app.module.spec.ts create mode 100644 src/app.module.ts create mode 100644 src/common/errors/app-error.ts create mode 100644 src/common/errors/authorization-error.ts create mode 100644 src/common/errors/error-kind.ts create mode 100644 src/common/errors/errors.spec.ts create mode 100644 src/common/errors/generation-error.ts create mode 100644 src/common/errors/index.ts create mode 100644 src/common/errors/system-error.ts create mode 100644 src/common/errors/validation-error.ts create mode 100644 src/common/http/app-error.http.ts create mode 100644 src/common/http/index.ts create mode 100644 src/common/index.ts create mode 100644 src/common/pagination/index.ts create mode 100644 src/common/pagination/pagination.spec.ts create mode 100644 src/common/pagination/pagination.ts create mode 100644 src/common/result/index.ts create mode 100644 src/common/result/result.spec.ts create mode 100644 src/common/result/result.ts create mode 100644 src/infra/ai-gateway/ai-gateway.module.ts create mode 100644 src/infra/ai-gateway/ai-gateway.types.ts create mode 100644 src/infra/ai-gateway/index.ts create mode 100644 src/infra/ai-gateway/mock-ai-gateway.spec.ts create mode 100644 src/infra/ai-gateway/mock-ai-gateway.ts create mode 100644 src/infra/ai-gateway/openai-ai-gateway.ts create mode 100644 src/infra/database/database.config.ts create mode 100644 src/infra/database/database.module.ts create mode 100644 src/infra/database/persistence.util.ts create mode 100644 src/infra/index.ts create mode 100644 src/infra/reference-source/index.ts create mode 100644 src/infra/reference-source/mock-reference-source.adapter.spec.ts create mode 100644 src/infra/reference-source/mock-reference-source.adapter.ts create mode 100644 src/infra/reference-source/reference-source.module.ts create mode 100644 src/infra/reference-source/reference-source.types.ts create mode 100644 src/integration/achievement-profile-career.integration.spec.ts create mode 100644 src/integration/core-invariants.integration.spec.ts create mode 100644 src/integration/cross-cutting.integration.spec.ts create mode 100644 src/integration/integration-harness.ts create mode 100644 src/integration/skill-graph-profile.integration.spec.ts create mode 100644 src/main.ts create mode 100644 src/modules/README.md create mode 100644 src/modules/academic/academic.controller.ts create mode 100644 src/modules/academic/academic.module.ts create mode 100644 src/modules/academic/academic.service.ts create mode 100644 src/modules/academic/index.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.controller.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.dto.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.e2e.spec.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.module.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.service.spec.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.service.ts create mode 100644 src/modules/ai-collaboration/ai-collaboration.types.ts create mode 100644 src/modules/ai-collaboration/assessment-error.ts create mode 100644 src/modules/ai-collaboration/entities/collaboration-assessment.entity.ts create mode 100644 src/modules/ai-collaboration/entities/collaboration-mentor-comment.entity.ts create mode 100644 src/modules/ai-collaboration/index.ts create mode 100644 src/modules/ai-collaboration/repositories/in-memory-ai-collaboration.repository.ts create mode 100644 src/modules/ai-collaboration/repositories/typeorm-ai-collaboration.repository.ts create mode 100644 src/modules/ai-collaboration/system-collaboration-clock.ts create mode 100644 src/modules/ai-evaluation/ai-evaluation.error-paths.spec.ts create mode 100644 src/modules/ai-evaluation/ai-evaluation.module.ts create mode 100644 src/modules/ai-evaluation/ai-evaluation.service.spec.ts create mode 100644 src/modules/ai-evaluation/ai-evaluation.service.ts create mode 100644 src/modules/ai-evaluation/ai-evaluation.types.ts create mode 100644 src/modules/ai-evaluation/evaluation-error.ts create mode 100644 src/modules/ai-evaluation/index.ts create mode 100644 src/modules/ai-trust/ai-trust.module.ts create mode 100644 src/modules/ai-trust/ai-trust.service.spec.ts create mode 100644 src/modules/ai-trust/ai-trust.service.ts create mode 100644 src/modules/ai-trust/ai-trust.types.ts create mode 100644 src/modules/ai-trust/index.ts create mode 100644 src/modules/auth/auth-error.ts create mode 100644 src/modules/auth/auth.config.ts create mode 100644 src/modules/auth/auth.controller.ts create mode 100644 src/modules/auth/auth.e2e.spec.ts create mode 100644 src/modules/auth/auth.module.ts create mode 100644 src/modules/auth/auth.service.spec.ts create mode 100644 src/modules/auth/auth.service.ts create mode 100644 src/modules/auth/auth.types.ts create mode 100644 src/modules/auth/bcrypt-password-hasher.ts create mode 100644 src/modules/auth/decorators.ts create mode 100644 src/modules/auth/dto.ts create mode 100644 src/modules/auth/entities/user-account.entity.ts create mode 100644 src/modules/auth/index.ts create mode 100644 src/modules/auth/jwt-auth.guard.ts create mode 100644 src/modules/auth/repositories/in-memory-auth.repository.ts create mode 100644 src/modules/auth/repositories/typeorm-auth.repository.ts create mode 100644 src/modules/auth/roles.guard.ts create mode 100644 src/modules/auth/seed-accounts.ts create mode 100644 src/modules/career-module/career-error.ts create mode 100644 src/modules/career-module/career.controller.ts create mode 100644 src/modules/career-module/career.dto.ts create mode 100644 src/modules/career-module/career.e2e.spec.ts create mode 100644 src/modules/career-module/career.module.ts create mode 100644 src/modules/career-module/career.service.spec.ts create mode 100644 src/modules/career-module/career.service.ts create mode 100644 src/modules/career-module/career.types.ts create mode 100644 src/modules/career-module/entities/career-goal-association.entity.ts create mode 100644 src/modules/career-module/index.ts create mode 100644 src/modules/career-module/mock-competency-model.provider.ts create mode 100644 src/modules/career-module/mock-learning-resource.provider.ts create mode 100644 src/modules/career-module/plan-error.ts create mode 100644 src/modules/career-module/repositories/in-memory-career.repository.ts create mode 100644 src/modules/career-module/repositories/typeorm-career.repository.ts create mode 100644 src/modules/career-module/system-career-clock.ts create mode 100644 src/modules/case-reasoning/case-reasoning.controller.ts create mode 100644 src/modules/case-reasoning/case-reasoning.module.ts create mode 100644 src/modules/case-reasoning/case-reasoning.service.ts create mode 100644 src/modules/case-reasoning/index.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.controller.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.dto.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.e2e.spec.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.module.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.service.spec.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.service.ts create mode 100644 src/modules/clinical-dialogue/clinical-dialogue.types.ts create mode 100644 src/modules/clinical-dialogue/entities/dialogue-report.entity.ts create mode 100644 src/modules/clinical-dialogue/entities/dialogue-session.entity.ts create mode 100644 src/modules/clinical-dialogue/index.ts create mode 100644 src/modules/clinical-dialogue/mock-clinical-scenario.provider.ts create mode 100644 src/modules/clinical-dialogue/repositories/in-memory-clinical-dialogue.repository.ts create mode 100644 src/modules/clinical-dialogue/repositories/typeorm-clinical-dialogue.repository.ts create mode 100644 src/modules/clinical-dialogue/system-dialogue-clock.ts create mode 100644 src/modules/competency-graph/competency-graph.module.ts create mode 100644 src/modules/competency-graph/competency-graph.types.ts create mode 100644 src/modules/competency-graph/competency-mapping.service.spec.ts create mode 100644 src/modules/competency-graph/competency-mapping.service.ts create mode 100644 src/modules/competency-graph/competency-overview.service.spec.ts create mode 100644 src/modules/competency-graph/competency-overview.service.ts create mode 100644 src/modules/competency-graph/competency-tag.service.spec.ts create mode 100644 src/modules/competency-graph/competency-tag.service.ts create mode 100644 src/modules/competency-graph/entities/competency-dimension.entity.ts create mode 100644 src/modules/competency-graph/entities/competency-mapping.entity.ts create mode 100644 src/modules/competency-graph/entities/competency-tag.entity.ts create mode 100644 src/modules/competency-graph/entities/mapping-rejection.entity.ts create mode 100644 src/modules/competency-graph/index.ts create mode 100644 src/modules/competency-graph/repositories/in-memory-competency-graph.repository.ts create mode 100644 src/modules/competency-graph/repositories/typeorm-competency-graph.repository.ts create mode 100644 src/modules/compliance/audit-log.service.spec.ts create mode 100644 src/modules/compliance/audit-log.service.ts create mode 100644 src/modules/compliance/compliance-access.service.spec.ts create mode 100644 src/modules/compliance/compliance-access.service.ts create mode 100644 src/modules/compliance/compliance.controller.ts create mode 100644 src/modules/compliance/compliance.e2e.spec.ts create mode 100644 src/modules/compliance/compliance.module.ts create mode 100644 src/modules/compliance/compliance.types.ts create mode 100644 src/modules/compliance/consent.service.spec.ts create mode 100644 src/modules/compliance/consent.service.ts create mode 100644 src/modules/compliance/entities/access-denial-event.entity.ts create mode 100644 src/modules/compliance/entities/audit-log.entity.ts create mode 100644 src/modules/compliance/entities/consent-record.entity.ts create mode 100644 src/modules/compliance/index.ts create mode 100644 src/modules/compliance/repositories/in-memory-compliance.repository.ts create mode 100644 src/modules/compliance/repositories/typeorm-compliance.repository.ts create mode 100644 src/modules/exam-prep/entities/exam-record.entity.ts create mode 100644 src/modules/exam-prep/exam-prep.controller.ts create mode 100644 src/modules/exam-prep/exam-prep.module.ts create mode 100644 src/modules/exam-prep/exam-prep.service.ts create mode 100644 src/modules/exam-prep/exam-prep.types.ts create mode 100644 src/modules/exam-prep/index.ts create mode 100644 src/modules/exam-prep/repositories/in-memory-exam-prep.repository.ts create mode 100644 src/modules/exam-prep/repositories/typeorm-exam-prep.repository.ts create mode 100644 src/modules/learning-space/entities/achievement.entity.ts create mode 100644 src/modules/learning-space/entities/milestone.entity.ts create mode 100644 src/modules/learning-space/index.ts create mode 100644 src/modules/learning-space/learning-space.archive-milestone.spec.ts create mode 100644 src/modules/learning-space/learning-space.controller.ts create mode 100644 src/modules/learning-space/learning-space.dto.ts create mode 100644 src/modules/learning-space/learning-space.e2e.spec.ts create mode 100644 src/modules/learning-space/learning-space.module.ts create mode 100644 src/modules/learning-space/learning-space.retrieval-tags.spec.ts create mode 100644 src/modules/learning-space/learning-space.service.spec.ts create mode 100644 src/modules/learning-space/learning-space.service.ts create mode 100644 src/modules/learning-space/learning-space.types.ts create mode 100644 src/modules/learning-space/repositories/in-memory-learning-space.repository.ts create mode 100644 src/modules/learning-space/repositories/typeorm-learning-space.repository.ts create mode 100644 src/modules/medical-knowledge/index.ts create mode 100644 src/modules/medical-knowledge/medical-knowledge.controller.ts create mode 100644 src/modules/medical-knowledge/medical-knowledge.module.ts create mode 100644 src/modules/medical-knowledge/medical-knowledge.service.ts create mode 100644 src/modules/medication-safety/index.ts create mode 100644 src/modules/medication-safety/medication-safety.controller.ts create mode 100644 src/modules/medication-safety/medication-safety.module.ts create mode 100644 src/modules/medication-safety/medication-safety.service.ts create mode 100644 src/modules/mentor/entities/achievement-comment.entity.ts create mode 100644 src/modules/mentor/entities/mentorship-relation.entity.ts create mode 100644 src/modules/mentor/index.ts create mode 100644 src/modules/mentor/mentor-error.ts create mode 100644 src/modules/mentor/mentor.controller.ts create mode 100644 src/modules/mentor/mentor.dto.ts create mode 100644 src/modules/mentor/mentor.e2e.spec.ts create mode 100644 src/modules/mentor/mentor.module.ts create mode 100644 src/modules/mentor/mentor.service.spec.ts create mode 100644 src/modules/mentor/mentor.service.ts create mode 100644 src/modules/mentor/mentor.types.ts create mode 100644 src/modules/mentor/repositories/in-memory-mentor.repository.ts create mode 100644 src/modules/mentor/repositories/in-memory-mentorship.repository.ts create mode 100644 src/modules/mentor/repositories/typeorm-mentor.repository.ts create mode 100644 src/modules/mentor/repositories/typeorm-mentorship.repository.ts create mode 100644 src/modules/mentor/system-mentor-clock.ts create mode 100644 src/modules/practice-engine/entities/practice-report.entity.ts create mode 100644 src/modules/practice-engine/entities/practice-session.entity.ts create mode 100644 src/modules/practice-engine/entities/question-generation-rejection.entity.ts create mode 100644 src/modules/practice-engine/entities/question.entity.ts create mode 100644 src/modules/practice-engine/index.ts create mode 100644 src/modules/practice-engine/mock-course-content.provider.ts create mode 100644 src/modules/practice-engine/practice-engine.controller.ts create mode 100644 src/modules/practice-engine/practice-engine.dto.ts create mode 100644 src/modules/practice-engine/practice-engine.e2e.spec.ts create mode 100644 src/modules/practice-engine/practice-engine.module.ts create mode 100644 src/modules/practice-engine/practice-engine.practice.spec.ts create mode 100644 src/modules/practice-engine/practice-engine.review.spec.ts create mode 100644 src/modules/practice-engine/practice-engine.service.spec.ts create mode 100644 src/modules/practice-engine/practice-engine.service.ts create mode 100644 src/modules/practice-engine/practice-engine.types.ts create mode 100644 src/modules/practice-engine/repositories/in-memory-practice-engine.repository.ts create mode 100644 src/modules/practice-engine/repositories/typeorm-practice-engine.repository.ts create mode 100644 src/modules/practice-engine/system-practice-clock.ts create mode 100644 src/modules/profile-engine/index.ts create mode 100644 src/modules/profile-engine/profile-engine.controller.ts create mode 100644 src/modules/profile-engine/profile-engine.dto.ts create mode 100644 src/modules/profile-engine/profile-engine.e2e.spec.ts create mode 100644 src/modules/profile-engine/profile-engine.module.ts create mode 100644 src/modules/profile-engine/profile-engine.property.spec.ts create mode 100644 src/modules/profile-engine/profile-engine.service.spec.ts create mode 100644 src/modules/profile-engine/profile-engine.service.ts create mode 100644 src/modules/profile-engine/profile-engine.types.ts create mode 100644 src/modules/profile-engine/profile-error.ts create mode 100644 src/modules/research-query/citation-error.ts create mode 100644 src/modules/research-query/entities/search-query.entity.ts create mode 100644 src/modules/research-query/export-error.ts create mode 100644 src/modules/research-query/index.ts create mode 100644 src/modules/research-query/medical-lexicon.ts create mode 100644 src/modules/research-query/question-error.ts create mode 100644 src/modules/research-query/repositories/in-memory-research-query.repository.ts create mode 100644 src/modules/research-query/repositories/typeorm-research-query.repository.ts create mode 100644 src/modules/research-query/research-query.controller.ts create mode 100644 src/modules/research-query/research-query.dto.ts create mode 100644 src/modules/research-query/research-query.e2e.spec.ts create mode 100644 src/modules/research-query/research-query.module.ts create mode 100644 src/modules/research-query/research-query.property.spec.ts create mode 100644 src/modules/research-query/research-query.service.spec.ts create mode 100644 src/modules/research-query/research-query.service.ts create mode 100644 src/modules/research-query/research-query.summary.spec.ts create mode 100644 src/modules/research-query/research-query.types.ts create mode 100644 src/modules/research-query/source-error.ts create mode 100644 src/modules/research-query/summary-error.ts create mode 100644 src/modules/research-query/summary-support.ts create mode 100644 src/modules/research-query/system-research-query-clock.ts create mode 100644 src/modules/rotation/index.ts create mode 100644 src/modules/rotation/rotation.controller.ts create mode 100644 src/modules/rotation/rotation.module.ts create mode 100644 src/modules/rotation/rotation.service.ts create mode 100644 src/modules/skill-center/builtin-skills.ts create mode 100644 src/modules/skill-center/entities/skill-audit-log.entity.ts create mode 100644 src/modules/skill-center/entities/skill-definition.entity.ts create mode 100644 src/modules/skill-center/index.ts create mode 100644 src/modules/skill-center/knowledge-source-availability.ts create mode 100644 src/modules/skill-center/repositories/in-memory-skill-center.repository.ts create mode 100644 src/modules/skill-center/repositories/typeorm-skill-center.repository.ts create mode 100644 src/modules/skill-center/skill-center.controller.ts create mode 100644 src/modules/skill-center/skill-center.dto.ts create mode 100644 src/modules/skill-center/skill-center.e2e.spec.ts create mode 100644 src/modules/skill-center/skill-center.module.ts create mode 100644 src/modules/skill-center/skill-center.types.ts create mode 100644 src/modules/skill-center/skill-competency-tags.ts create mode 100644 src/modules/skill-center/skill-definition.service.spec.ts create mode 100644 src/modules/skill-center/skill-definition.service.ts create mode 100644 src/modules/skill-center/skill-governance.service.spec.ts create mode 100644 src/modules/skill-center/skill-governance.service.ts create mode 100644 src/modules/skill-center/skill-invocation.service.spec.ts create mode 100644 src/modules/skill-center/skill-invocation.service.ts create mode 100644 src/modules/skill-video/index.ts create mode 100644 src/modules/skill-video/skill-video.controller.ts create mode 100644 src/modules/skill-video/skill-video.module.ts create mode 100644 src/modules/skill-video/skill-video.service.ts create mode 100644 tsconfig.build.json create mode 100644 tsconfig.json create mode 100644 web/.env.example create mode 100644 web/.gitignore create mode 100644 web/README.md create mode 100644 web/components.json create mode 100644 web/next.config.mjs create mode 100644 web/package-lock.json create mode 100644 web/package.json create mode 100644 web/postcss.config.mjs create mode 100644 web/src/app/admin/compliance/page.tsx create mode 100644 web/src/app/admin/layout.tsx create mode 100644 web/src/app/admin/page.tsx create mode 100644 web/src/app/admin/skills/page.tsx create mode 100644 web/src/app/globals.css create mode 100644 web/src/app/layout.tsx create mode 100644 web/src/app/login/page.tsx create mode 100644 web/src/app/mentor/comments/page.tsx create mode 100644 web/src/app/mentor/layout.tsx create mode 100644 web/src/app/mentor/page.tsx create mode 100644 web/src/app/mentor/review/page.tsx create mode 100644 web/src/app/mentor/students/page.tsx create mode 100644 web/src/app/page.tsx create mode 100644 web/src/app/student/academic/page.tsx create mode 100644 web/src/app/student/career/page.tsx create mode 100644 web/src/app/student/case-reasoning/page.tsx create mode 100644 web/src/app/student/clinical/page.tsx create mode 100644 web/src/app/student/collaboration/page.tsx create mode 100644 web/src/app/student/exam-prep/page.tsx create mode 100644 web/src/app/student/knowledge/page.tsx create mode 100644 web/src/app/student/layout.tsx create mode 100644 web/src/app/student/learning-space/page.tsx create mode 100644 web/src/app/student/medication/page.tsx create mode 100644 web/src/app/student/page.tsx create mode 100644 web/src/app/student/practice/page.tsx create mode 100644 web/src/app/student/profile/page.tsx create mode 100644 web/src/app/student/research/page.tsx create mode 100644 web/src/app/student/rotation/page.tsx create mode 100644 web/src/app/student/skill-video/page.tsx create mode 100644 web/src/components/charts.tsx create mode 100644 web/src/components/display.tsx create mode 100644 web/src/components/feature-grid.tsx create mode 100644 web/src/components/feedback.tsx create mode 100644 web/src/components/layout/app-shell.tsx create mode 100644 web/src/components/layout/header.tsx create mode 100644 web/src/components/learning-progress.tsx create mode 100644 web/src/components/providers.tsx create mode 100644 web/src/components/quick-actions.tsx create mode 100644 web/src/components/skeletons.tsx create mode 100644 web/src/components/theme-toggle.tsx create mode 100644 web/src/components/ui/badge.tsx create mode 100644 web/src/components/ui/button.tsx create mode 100644 web/src/components/ui/card.tsx create mode 100644 web/src/components/ui/input.tsx create mode 100644 web/src/components/ui/label.tsx create mode 100644 web/src/components/ui/select.tsx create mode 100644 web/src/components/ui/separator.tsx create mode 100644 web/src/components/ui/skeleton.tsx create mode 100644 web/src/components/ui/sonner.tsx create mode 100644 web/src/components/ui/textarea.tsx create mode 100644 web/src/components/usage-guide.tsx create mode 100644 web/src/components/welcome-banner.tsx create mode 100644 web/src/lib/api.ts create mode 100644 web/src/lib/navigation.ts create mode 100644 web/src/lib/services.ts create mode 100644 web/src/lib/types.ts create mode 100644 web/src/lib/utils.ts create mode 100644 web/src/stores/auth.ts create mode 100644 web/tsconfig.json diff --git a/.ai-switch/rules/rules.json b/.ai-switch/rules/rules.json new file mode 100644 index 0000000..2f39701 --- /dev/null +++ b/.ai-switch/rules/rules.json @@ -0,0 +1,810 @@ +{ + "version": "2.0.0", + "rules": [ + { + "id": "b123a808-7c9e-420c-bd3e-bed82344f765", + "name": "高级前端开发者", + "category": "agent", + "content": "## 角色定义\n你是一名高级前端开发者,精通 Vue 3、TypeScript、Tailwind CSS,具备丰富的大型 SPA 项目经验。\n\n## 专长领域\n- Vue 3 Composition API + `