openlearn-next 0.4.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +26 -21
  2. package/cli-data.mjs +535 -40
  3. package/cli-doctor.mjs +456 -17
  4. package/cli.mjs +214 -12
  5. package/dist/assets/AcademicYearFilter-DUUGpDKt.js +1 -0
  6. package/dist/assets/ActivityWorkspaceWidget-5PzyxF6a.js +1 -0
  7. package/dist/assets/AdminDirectoryView-BCtmQTEK.js +5 -0
  8. package/dist/assets/AssessmentCenter-B43ojHG-.js +1 -0
  9. package/dist/assets/BatchPickerModal-CbmjInp7.js +1 -0
  10. package/dist/assets/ClassesView-DEnMaDOt.js +32 -0
  11. package/dist/assets/ClassroomCountdownWidget-CHq4983w.js +2 -0
  12. package/dist/assets/CloudDriveModal-D2t3Uyzr.js +1 -0
  13. package/dist/assets/ComputerLabView-YtnoT5Rb.js +1 -0
  14. package/dist/assets/CourseManagement-DOXyJ_j-.js +1 -0
  15. package/dist/assets/CourseWizardModal-Dbi6Caw2.js +3 -0
  16. package/dist/assets/CoursewareHubPanel-CyxDIJAF.js +1 -0
  17. package/dist/assets/Dashboard-2rLu_ZBy.js +8 -0
  18. package/dist/assets/ExportWeightModal-BrmAh6VX.js +1 -0
  19. package/dist/assets/GLTFLoader-CZJbo_y1.js +1 -0
  20. package/dist/assets/HelpTour-D_q1z_MI.js +1 -0
  21. package/dist/assets/HelpView-CVBrKDrd.js +204 -0
  22. package/dist/assets/ImportLessonsModal-PhHtX31R.js +1 -0
  23. package/dist/assets/ImportModal-DqjqNeH4.js +2 -0
  24. package/dist/assets/InteractiveCoursewareViewer-Vi6lLz7a.js +1 -0
  25. package/dist/assets/InteractiveWhiteboard-lTzeayX5.js +65 -0
  26. package/dist/assets/LazyCourseware-KIt0rGtW.js +2 -0
  27. package/dist/assets/LazyWhiteboard-CCN3pYcW.js +2 -0
  28. package/dist/assets/LessonEditorView-D_GVhHuM.js +1 -0
  29. package/dist/assets/LiveClassroomView-BRsZ6QEq.js +61 -0
  30. package/dist/assets/NotificationDetailModal-tY5rxYCN.js +1 -0
  31. package/dist/assets/OrbitControls-CQjN_uwS.js +1 -0
  32. package/dist/assets/PluginView-CedpAW6d.js +77 -0
  33. package/dist/assets/ProcessLogsModal-Cfr-T9Gd.js +1 -0
  34. package/dist/assets/QuizGeneratorModal-bUA002kP.js +1 -0
  35. package/dist/assets/StudentAssignmentView-BhAz6Hfk.js +1 -0
  36. package/dist/assets/StudentLessonView-DC1yX4kG.js +1 -0
  37. package/dist/assets/StudentView-PHKxIV9T.js +2 -0
  38. package/dist/assets/SystemResourceLibraryModal-DgXYe6_x.js +1 -0
  39. package/dist/assets/TeacherView-DscJtOJ9.js +2 -0
  40. package/dist/assets/TimetableView-D2ozoj_D.js +6 -0
  41. package/dist/assets/UTIF-FfCsrHhe.js +1 -0
  42. package/dist/assets/__vite-optional-peer-dep_ai_ooxml-ui-BIHI7g3E.js +1 -0
  43. package/dist/assets/browser-DEI0QxZC.js +1 -0
  44. package/dist/assets/html2canvas-pro.esm-Bo50djkB.js +12 -0
  45. package/dist/assets/index-2676X8YB.js +131 -0
  46. package/dist/assets/index-C6hlh8pw.css +1 -0
  47. package/dist/assets/{index.es-C5eWEO4o.js → index.es-DyEF0CZ9.js} +1 -1
  48. package/dist/assets/pluginParsers-e4PSm2Iy.js +1 -0
  49. package/dist/assets/react_pptx-react-viewer-BIHI7g3E.js +1 -0
  50. package/dist/assets/teaching-modes-client-BeVaDdJ-.js +1 -0
  51. package/dist/assets/three.module-iOYB3rD4.js +4228 -0
  52. package/dist/assets/timeline-duration-BgdJCSrW.js +1 -0
  53. package/dist/assets/{vendor-charts-qLbgF1eL.js → vendor-charts-SrpBsvM3.js} +2 -2
  54. package/dist/assets/{vendor-icons-BRmhY6fg.js → vendor-icons-CXrZ3R2V.js} +2 -2
  55. package/dist/assets/{vendor-konva-CEOq4dcl.js → vendor-konva-Dne0Z-WC.js} +1 -1
  56. package/dist/assets/{vendor-pdf-D7rGevI1.js → vendor-pdf-C1Vh2Aqq.js} +56 -56
  57. package/dist/assets/vendor-pptx-Bzn6whfK.js +11311 -0
  58. package/dist/assets/vendor-pptx-DIWdXF1L.css +1 -0
  59. package/dist/assets/{vendor-react-B0t7H3hh.js → vendor-react-Kv_JATwr.js} +1 -1
  60. package/dist/assets/vendor-utils-aM7aYvPP.js +1 -0
  61. package/dist/cli-migrator.cjs +310 -0
  62. package/dist/env-validation.cjs +351 -0
  63. package/dist/index.html +13 -10
  64. package/dist/plugin-net-preload.cjs +263 -0
  65. package/dist/server.cjs +51140 -27229
  66. package/migrations/000_initial_schema.sql +410 -0
  67. package/migrations/001_add_execution_mode.sql +6 -0
  68. package/migrations/002_add_client_session_expiry.sql +6 -0
  69. package/migrations/003_classroom_runtime.sql +33 -0
  70. package/migrations/004_courseware_score_config.sql +26 -0
  71. package/migrations/005_assignment_hub.sql +155 -0
  72. package/migrations/006_classroom_event_bus.sql +28 -0
  73. package/migrations/007_interactive_classroom.sql +119 -0
  74. package/migrations/008_teaching_modes.sql +36 -0
  75. package/migrations/009_classroom_peer_review.sql +159 -0
  76. package/migrations/010_class_groups.sql +33 -0
  77. package/migrations/011_classroom_feed.sql +34 -0
  78. package/migrations/012_auto_record_score.sql +48 -0
  79. package/migrations/013_score_source_strategy.sql +81 -0
  80. package/migrations/014_performance_indexes.sql +21 -0
  81. package/migrations/015_demo_data_registry.sql +26 -0
  82. package/migrations/016_preset_polls_and_passcode_expiry.sql +33 -0
  83. package/migrations/017_pacing_signals_segment.sql +6 -0
  84. package/migrations/018_processes_plugin_owner.sql +26 -0
  85. package/migrations/019_plugins_version.sql +61 -0
  86. package/migrations/020_upload_max_file_mb.sql +14 -0
  87. package/migrations/021_class_owner_and_password_gate.sql +11 -0
  88. package/migrations/022_plugin_public_routes.sql +14 -0
  89. package/migrations/023_encrypt_class_passcodes.sql +18 -0
  90. package/migrations/024_segment_gates.sql +37 -0
  91. package/migrations/025_assignment_lookup_indexes.sql +11 -0
  92. package/migrations/026_plugin_grants.sql +21 -0
  93. package/migrations/027_academic_year.sql +26 -0
  94. package/migrations/028_classroom_indexes.sql +14 -0
  95. package/migrations/029_clean_lesson_think_artifacts.sql +13 -0
  96. package/migrations/030_backfill_academic_year.sql +30 -0
  97. package/migrations/031_assessment_core.sql +158 -0
  98. package/migrations/032_progress_verification.sql +17 -0
  99. package/migrations/033_student_lock_mode.sql +9 -0
  100. package/migrations/034_plugin_orphan_data.sql +27 -0
  101. package/migrations/035_icebreaker_checkins.sql +26 -0
  102. package/migrations/036_student_read_notifications_created_at.sql +19 -0
  103. package/migrations/037_plugin_config_scopes.sql +40 -0
  104. package/migrations/038_assessment_ai_grading_suggestion.sql +10 -0
  105. package/migrations/039_question_bank_sharing_and_papers.sql +14 -0
  106. package/migrations/040_assignment_grade_history.sql +37 -0
  107. package/migrations/041_course_package_idempotency.sql +33 -0
  108. package/migrations/042_assignment_grade_resubmit_audit.sql +12 -0
  109. package/migrations/043_mark_sha256_passwords.sql +31 -0
  110. package/migrations/README.md +61 -0
  111. package/migrations/schema-golden.json +640 -0
  112. package/package.json +54 -28
  113. package/dist/assets/AdminDirectoryView-DY--WM5Z.js +0 -1
  114. package/dist/assets/BatchPickerModal-BpWu0Lil.js +0 -1
  115. package/dist/assets/ClassesView-KbHEqJto.js +0 -22
  116. package/dist/assets/ClassroomCountdownWidget-96WFRO9A.js +0 -2
  117. package/dist/assets/CloudDriveModal-DEQ1nkNk.js +0 -1
  118. package/dist/assets/ComputerLabView-1qWDNRQ2.js +0 -1
  119. package/dist/assets/CourseManagement-D3ZpxY0l.js +0 -1
  120. package/dist/assets/CourseWizardModal-Ck_-M8pk.js +0 -3
  121. package/dist/assets/CoursewareHubPanel-CaEizhxl.js +0 -1
  122. package/dist/assets/Dashboard-CYbpbofV.js +0 -8
  123. package/dist/assets/ExportWeightModal-DW2bu9Zz.js +0 -1
  124. package/dist/assets/HelpTour-CMJbbGne.js +0 -1
  125. package/dist/assets/HelpView-CtzdqhBq.js +0 -204
  126. package/dist/assets/ImportLessonsModal-jBuIK453.js +0 -1
  127. package/dist/assets/ImportModal-D7L-KNhZ.js +0 -1
  128. package/dist/assets/InteractiveCoursewareViewer-Bj7ahXMs.js +0 -1
  129. package/dist/assets/InteractiveWhiteboard-B7JcJvDu.js +0 -77
  130. package/dist/assets/LazyCourseware-CuiPxhDg.js +0 -2
  131. package/dist/assets/LazyWhiteboard-BJwCEZAU.js +0 -2
  132. package/dist/assets/LessonEditorView-DFrOp2qp.js +0 -1
  133. package/dist/assets/LiveClassroomView-BZ5nGee3.js +0 -59
  134. package/dist/assets/NotificationDetailModal-Baqnc5pU.js +0 -1
  135. package/dist/assets/PluginView-CCbIuZ24.js +0 -66
  136. package/dist/assets/ProcessLogsModal-DmFXg9mG.js +0 -1
  137. package/dist/assets/QuizGeneratorModal-BBEDssp7.js +0 -1
  138. package/dist/assets/StudentAssignmentView-DgIjUsXz.js +0 -1
  139. package/dist/assets/StudentLessonView-CBJbI5x6.js +0 -1
  140. package/dist/assets/StudentPreviewModal-Bh8OZs0t.js +0 -1
  141. package/dist/assets/StudentView--uGxc5TJ.js +0 -2
  142. package/dist/assets/SystemResourceLibraryModal-BVCclcqA.js +0 -1
  143. package/dist/assets/TeacherView-D4Zsc0eZ.js +0 -2
  144. package/dist/assets/TimetableView-BQG-rEb5.js +0 -6
  145. package/dist/assets/index-BKBCBKvy.js +0 -217
  146. package/dist/assets/index-CvGu7LSj.css +0 -1
  147. package/dist/assets/purify.es-CYR4BTuT.js +0 -3
  148. package/dist/assets/vendor-pptx-C5-U7ieS.js +0 -39
  149. package/dist/assets/vendor-utils-m0Urvtws.js +0 -1
package/README.md CHANGED
@@ -73,7 +73,6 @@
73
73
 
74
74
  ---
75
75
 
76
-
77
76
  ## 快速开始
78
77
 
79
78
  ### 一键运行(无需 clone 项目)
@@ -99,7 +98,11 @@ openlearn-next # 启动
99
98
  npm update -g openlearn-next # 更新
100
99
  ```
101
100
 
102
- 默认账号:`admin` / `admin`(管理员)、`teacher` / `teacher`(教师)。
101
+ 种子账号用户名仍是 `admin`(管理员)和 `teacher`(教师),但**不再使用与用户名相同的默认密码**。首次空库启动时:
102
+
103
+ - 若设置了 `OPENLEARN_ADMIN_PASSWORD` / `OPENLEARN_TEACHER_PASSWORD`,使用该口令。口令若仍等于用户名,登录后必须立刻修改,期间除改密、登出和会话查询外,其余 `/api` 请求(含 GET)返回 403。
104
+ - 未设置时随机生成 20 位口令,明文只打印一次,并写入 `storage/bootstrap-credentials.txt`(权限 600)。请在首次登录后修改并删除该文件。
105
+ - 已有数据库若口令仍是 `admin` / `teacher`,可以登录,但同样被强制改密拦住,直到 `POST /api/auth/change-password` 成功。不要在生产环境设置 `PLAYWRIGHT_TEST`(该变量会保留测试用默认口令并跳过改密门禁)。
103
106
 
104
107
  ### 本地开发
105
108
 
@@ -113,6 +116,7 @@ pnpm dev
113
116
  # 浏览器访问
114
117
  open http://localhost:9000
115
118
  ```
119
+
116
120
  > 首次启动后,可在管理后台「AI Provider 管理」中配置您的大模型 API 密钥(DeepSeek、OpenAI、Ollama 等)。
117
121
 
118
122
  ---
@@ -131,29 +135,29 @@ chmod +x deploy.sh
131
135
 
132
136
  ## 常用开发命令 (CLI Scripts)
133
137
 
134
- | 命令 | 说明 |
135
- | :--- | :--- |
136
- | `pnpm dev` | 启动全栈开发服务(Express + Vite HMR,端口 9000) |
137
- | `pnpm build` | 生产级全量构建(Vite 前端构建 ➔ 插件打包 ➔ esbuild 服务端打包) |
138
- | `pnpm start` | 运行生产打包服务(从 `dist/server.cjs` 启动) |
139
- | `pnpm test` | 执行 Vitest 自动化测试套件(支持并行 worker 隔离 SQLite 测试库) |
140
- | `pnpm lint` | TypeScript 静态类型检查(`tsc --noEmit`) |
141
- | `pnpm lint:eslint` | ESLint 代码规范检查 |
142
- | `pnpm format` | Prettier 代码自动化格式化 |
143
- | `pnpm db:backup` | 数据库安全在线冷备 |
144
- | `pnpm db:reset` | 重置本地测试数据库环境 |
138
+ | 命令 | 说明 |
139
+ | :----------------- | :--------------------------------------------------------------- |
140
+ | `pnpm dev` | 启动全栈开发服务(Express + Vite HMR,端口 9000) |
141
+ | `pnpm build` | 生产级全量构建(Vite 前端构建 ➔ 插件打包 ➔ esbuild 服务端打包) |
142
+ | `pnpm start` | 运行生产打包服务(从 `dist/server.cjs` 启动) |
143
+ | `pnpm test` | 执行 Vitest 自动化测试套件(支持并行 worker 隔离 SQLite 测试库) |
144
+ | `pnpm lint` | TypeScript 静态类型检查(`tsc --noEmit`) |
145
+ | `pnpm lint:eslint` | ESLint 代码规范检查 |
146
+ | `pnpm format` | Prettier 代码自动化格式化 |
147
+ | `pnpm db:backup` | 数据库安全在线冷备 |
148
+ | `pnpm db:reset` | 重置本地测试数据库环境 |
145
149
 
146
150
  ---
147
151
 
148
152
  ## ⚙️ 环境变量
149
153
 
150
- | 变量 | 必需 | 默认值 | 说明 |
151
- | :--- | :---: | :---: | :--- |
152
- | `ENCRYPTION_KEY` | ✅ | — | 64 位 Hex 字符串,用于 AI Provider API Key 加密(`deploy.sh` 会自动生成) |
153
- | `PORT` | — | `9000` | HTTP 服务监听端口 |
154
- | `OPENLEARN_DB_PATH` | — | `./packages/core/db/educational_os.db` | SQLite 数据库文件路径(npx 运行时默认为 `~/openlearn-next/data.db`) |
155
- | `ALLOWED_ORIGINS` | — | `*` | CORS 跨域白名单(逗号分隔) |
156
- | `LOG_LEVEL` | — | `info` | 系统日志输出级别(`debug` / `info` / `warn` / `error`) |
154
+ | 变量 | 必需 | 默认值 | 说明 |
155
+ | :------------------ | :--: | :------------------------------------: | :------------------------------------------------------------------------ |
156
+ | `ENCRYPTION_KEY` | ✅ | — | 64 位 Hex 字符串,用于 AI Provider API Key 加密(`deploy.sh` 会自动生成) |
157
+ | `PORT` | — | `9000` | HTTP 服务监听端口 |
158
+ | `OPENLEARN_DB_PATH` | — | `./packages/core/db/educational_os.db` | SQLite 数据库文件路径(npx 运行时默认为 `~/openlearn-next/data.db`) |
159
+ | `ALLOWED_ORIGINS` | — | `*` | CORS 跨域白名单(逗号分隔) |
160
+ | `LOG_LEVEL` | — | `info` | 系统日志输出级别(`debug` / `info` / `warn` / `error`) |
157
161
 
158
162
  ---
159
163
 
@@ -162,6 +166,7 @@ chmod +x deploy.sh
162
166
  根据平台近期代码与架构深度审计结果(相关一致性由 [架构文档漂移审计](docs/developer-guide/docs-drift-audit.md) 在 CI 中持续看守),OpenLearn 制定了分阶段的演进路线:
163
167
 
164
168
  ### 🎯 阶段一:稳固与安全收敛 (v0.3.21 - 当前阶段)
169
+
165
170
  - [x] **P0 严重安全缺陷彻底闭环**:
166
171
  - [x] 为 `/api/plugins/execute-command` 挂载全局有效会话鉴权(`requireAuth()`),消除未授权命令执行面
167
172
  - [x] 插件更新检查器(`version-fetcher.ts`)消除 Shell 命令注入,采用安全参数化执行(`execFileSync`)与仓库白名单正则校验
@@ -176,6 +181,7 @@ chmod +x deploy.sh
176
181
  - [ ] **自动化测试体系清理**:解耦对未提交外部目录的物理路径硬依赖,使 215 个套件的全量测试达到 100% 绿灯
177
182
 
178
183
  ### 🚀 阶段二:K12 课堂交互与智能伴随深化 (v0.4.0 - 中期演进)
184
+
179
185
  - [ ] **课件状态双向镜像与远程协助**:
180
186
  - 教师端可按需拉取单个学生的课件作答实时快照(DOM/Canvas 镜像)
181
187
  - 支持教师端一键向指定学生或全班推送课件交互指令(如强制锁屏、重置题目、跳转指定页)
@@ -205,4 +211,3 @@ chmod +x deploy.sh
205
211
  ## 📄 开源许可证
206
212
 
207
213
  本项目基于 MIT License 开源发布(声明见 [package.json](package.json) 的 `license` 字段)。
208
-