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.
- package/README.md +26 -21
- package/cli-data.mjs +535 -40
- package/cli-doctor.mjs +456 -17
- package/cli.mjs +214 -12
- package/dist/assets/AcademicYearFilter-DUUGpDKt.js +1 -0
- package/dist/assets/ActivityWorkspaceWidget-5PzyxF6a.js +1 -0
- package/dist/assets/AdminDirectoryView-BCtmQTEK.js +5 -0
- package/dist/assets/AssessmentCenter-B43ojHG-.js +1 -0
- package/dist/assets/BatchPickerModal-CbmjInp7.js +1 -0
- package/dist/assets/ClassesView-DEnMaDOt.js +32 -0
- package/dist/assets/ClassroomCountdownWidget-CHq4983w.js +2 -0
- package/dist/assets/CloudDriveModal-D2t3Uyzr.js +1 -0
- package/dist/assets/ComputerLabView-YtnoT5Rb.js +1 -0
- package/dist/assets/CourseManagement-DOXyJ_j-.js +1 -0
- package/dist/assets/CourseWizardModal-Dbi6Caw2.js +3 -0
- package/dist/assets/CoursewareHubPanel-CyxDIJAF.js +1 -0
- package/dist/assets/Dashboard-2rLu_ZBy.js +8 -0
- package/dist/assets/ExportWeightModal-BrmAh6VX.js +1 -0
- package/dist/assets/GLTFLoader-CZJbo_y1.js +1 -0
- package/dist/assets/HelpTour-D_q1z_MI.js +1 -0
- package/dist/assets/HelpView-CVBrKDrd.js +204 -0
- package/dist/assets/ImportLessonsModal-PhHtX31R.js +1 -0
- package/dist/assets/ImportModal-DqjqNeH4.js +2 -0
- package/dist/assets/InteractiveCoursewareViewer-Vi6lLz7a.js +1 -0
- package/dist/assets/InteractiveWhiteboard-lTzeayX5.js +65 -0
- package/dist/assets/LazyCourseware-KIt0rGtW.js +2 -0
- package/dist/assets/LazyWhiteboard-CCN3pYcW.js +2 -0
- package/dist/assets/LessonEditorView-D_GVhHuM.js +1 -0
- package/dist/assets/LiveClassroomView-BRsZ6QEq.js +61 -0
- package/dist/assets/NotificationDetailModal-tY5rxYCN.js +1 -0
- package/dist/assets/OrbitControls-CQjN_uwS.js +1 -0
- package/dist/assets/PluginView-CedpAW6d.js +77 -0
- package/dist/assets/ProcessLogsModal-Cfr-T9Gd.js +1 -0
- package/dist/assets/QuizGeneratorModal-bUA002kP.js +1 -0
- package/dist/assets/StudentAssignmentView-BhAz6Hfk.js +1 -0
- package/dist/assets/StudentLessonView-DC1yX4kG.js +1 -0
- package/dist/assets/StudentView-PHKxIV9T.js +2 -0
- package/dist/assets/SystemResourceLibraryModal-DgXYe6_x.js +1 -0
- package/dist/assets/TeacherView-DscJtOJ9.js +2 -0
- package/dist/assets/TimetableView-D2ozoj_D.js +6 -0
- package/dist/assets/UTIF-FfCsrHhe.js +1 -0
- package/dist/assets/__vite-optional-peer-dep_ai_ooxml-ui-BIHI7g3E.js +1 -0
- package/dist/assets/browser-DEI0QxZC.js +1 -0
- package/dist/assets/html2canvas-pro.esm-Bo50djkB.js +12 -0
- package/dist/assets/index-2676X8YB.js +131 -0
- package/dist/assets/index-C6hlh8pw.css +1 -0
- package/dist/assets/{index.es-C5eWEO4o.js → index.es-DyEF0CZ9.js} +1 -1
- package/dist/assets/pluginParsers-e4PSm2Iy.js +1 -0
- package/dist/assets/react_pptx-react-viewer-BIHI7g3E.js +1 -0
- package/dist/assets/teaching-modes-client-BeVaDdJ-.js +1 -0
- package/dist/assets/three.module-iOYB3rD4.js +4228 -0
- package/dist/assets/timeline-duration-BgdJCSrW.js +1 -0
- package/dist/assets/{vendor-charts-qLbgF1eL.js → vendor-charts-SrpBsvM3.js} +2 -2
- package/dist/assets/{vendor-icons-BRmhY6fg.js → vendor-icons-CXrZ3R2V.js} +2 -2
- package/dist/assets/{vendor-konva-CEOq4dcl.js → vendor-konva-Dne0Z-WC.js} +1 -1
- package/dist/assets/{vendor-pdf-D7rGevI1.js → vendor-pdf-C1Vh2Aqq.js} +56 -56
- package/dist/assets/vendor-pptx-Bzn6whfK.js +11311 -0
- package/dist/assets/vendor-pptx-DIWdXF1L.css +1 -0
- package/dist/assets/{vendor-react-B0t7H3hh.js → vendor-react-Kv_JATwr.js} +1 -1
- package/dist/assets/vendor-utils-aM7aYvPP.js +1 -0
- package/dist/cli-migrator.cjs +310 -0
- package/dist/env-validation.cjs +351 -0
- package/dist/index.html +13 -10
- package/dist/plugin-net-preload.cjs +263 -0
- package/dist/server.cjs +51140 -27229
- package/migrations/000_initial_schema.sql +410 -0
- package/migrations/001_add_execution_mode.sql +6 -0
- package/migrations/002_add_client_session_expiry.sql +6 -0
- package/migrations/003_classroom_runtime.sql +33 -0
- package/migrations/004_courseware_score_config.sql +26 -0
- package/migrations/005_assignment_hub.sql +155 -0
- package/migrations/006_classroom_event_bus.sql +28 -0
- package/migrations/007_interactive_classroom.sql +119 -0
- package/migrations/008_teaching_modes.sql +36 -0
- package/migrations/009_classroom_peer_review.sql +159 -0
- package/migrations/010_class_groups.sql +33 -0
- package/migrations/011_classroom_feed.sql +34 -0
- package/migrations/012_auto_record_score.sql +48 -0
- package/migrations/013_score_source_strategy.sql +81 -0
- package/migrations/014_performance_indexes.sql +21 -0
- package/migrations/015_demo_data_registry.sql +26 -0
- package/migrations/016_preset_polls_and_passcode_expiry.sql +33 -0
- package/migrations/017_pacing_signals_segment.sql +6 -0
- package/migrations/018_processes_plugin_owner.sql +26 -0
- package/migrations/019_plugins_version.sql +61 -0
- package/migrations/020_upload_max_file_mb.sql +14 -0
- package/migrations/021_class_owner_and_password_gate.sql +11 -0
- package/migrations/022_plugin_public_routes.sql +14 -0
- package/migrations/023_encrypt_class_passcodes.sql +18 -0
- package/migrations/024_segment_gates.sql +37 -0
- package/migrations/025_assignment_lookup_indexes.sql +11 -0
- package/migrations/026_plugin_grants.sql +21 -0
- package/migrations/027_academic_year.sql +26 -0
- package/migrations/028_classroom_indexes.sql +14 -0
- package/migrations/029_clean_lesson_think_artifacts.sql +13 -0
- package/migrations/030_backfill_academic_year.sql +30 -0
- package/migrations/031_assessment_core.sql +158 -0
- package/migrations/032_progress_verification.sql +17 -0
- package/migrations/033_student_lock_mode.sql +9 -0
- package/migrations/034_plugin_orphan_data.sql +27 -0
- package/migrations/035_icebreaker_checkins.sql +26 -0
- package/migrations/036_student_read_notifications_created_at.sql +19 -0
- package/migrations/037_plugin_config_scopes.sql +40 -0
- package/migrations/038_assessment_ai_grading_suggestion.sql +10 -0
- package/migrations/039_question_bank_sharing_and_papers.sql +14 -0
- package/migrations/040_assignment_grade_history.sql +37 -0
- package/migrations/041_course_package_idempotency.sql +33 -0
- package/migrations/042_assignment_grade_resubmit_audit.sql +12 -0
- package/migrations/043_mark_sha256_passwords.sql +31 -0
- package/migrations/README.md +61 -0
- package/migrations/schema-golden.json +640 -0
- package/package.json +54 -28
- package/dist/assets/AdminDirectoryView-DY--WM5Z.js +0 -1
- package/dist/assets/BatchPickerModal-BpWu0Lil.js +0 -1
- package/dist/assets/ClassesView-KbHEqJto.js +0 -22
- package/dist/assets/ClassroomCountdownWidget-96WFRO9A.js +0 -2
- package/dist/assets/CloudDriveModal-DEQ1nkNk.js +0 -1
- package/dist/assets/ComputerLabView-1qWDNRQ2.js +0 -1
- package/dist/assets/CourseManagement-D3ZpxY0l.js +0 -1
- package/dist/assets/CourseWizardModal-Ck_-M8pk.js +0 -3
- package/dist/assets/CoursewareHubPanel-CaEizhxl.js +0 -1
- package/dist/assets/Dashboard-CYbpbofV.js +0 -8
- package/dist/assets/ExportWeightModal-DW2bu9Zz.js +0 -1
- package/dist/assets/HelpTour-CMJbbGne.js +0 -1
- package/dist/assets/HelpView-CtzdqhBq.js +0 -204
- package/dist/assets/ImportLessonsModal-jBuIK453.js +0 -1
- package/dist/assets/ImportModal-D7L-KNhZ.js +0 -1
- package/dist/assets/InteractiveCoursewareViewer-Bj7ahXMs.js +0 -1
- package/dist/assets/InteractiveWhiteboard-B7JcJvDu.js +0 -77
- package/dist/assets/LazyCourseware-CuiPxhDg.js +0 -2
- package/dist/assets/LazyWhiteboard-BJwCEZAU.js +0 -2
- package/dist/assets/LessonEditorView-DFrOp2qp.js +0 -1
- package/dist/assets/LiveClassroomView-BZ5nGee3.js +0 -59
- package/dist/assets/NotificationDetailModal-Baqnc5pU.js +0 -1
- package/dist/assets/PluginView-CCbIuZ24.js +0 -66
- package/dist/assets/ProcessLogsModal-DmFXg9mG.js +0 -1
- package/dist/assets/QuizGeneratorModal-BBEDssp7.js +0 -1
- package/dist/assets/StudentAssignmentView-DgIjUsXz.js +0 -1
- package/dist/assets/StudentLessonView-CBJbI5x6.js +0 -1
- package/dist/assets/StudentPreviewModal-Bh8OZs0t.js +0 -1
- package/dist/assets/StudentView--uGxc5TJ.js +0 -2
- package/dist/assets/SystemResourceLibraryModal-BVCclcqA.js +0 -1
- package/dist/assets/TeacherView-D4Zsc0eZ.js +0 -2
- package/dist/assets/TimetableView-BQG-rEb5.js +0 -6
- package/dist/assets/index-BKBCBKvy.js +0 -217
- package/dist/assets/index-CvGu7LSj.css +0 -1
- package/dist/assets/purify.es-CYR4BTuT.js +0 -3
- package/dist/assets/vendor-pptx-C5-U7ieS.js +0 -39
- 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
|
-
|
|
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`
|
|
137
|
-
| `pnpm build`
|
|
138
|
-
| `pnpm start`
|
|
139
|
-
| `pnpm test`
|
|
140
|
-
| `pnpm lint`
|
|
141
|
-
| `pnpm lint:eslint` | ESLint 代码规范检查
|
|
142
|
-
| `pnpm format`
|
|
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`
|
|
153
|
-
| `PORT`
|
|
154
|
-
| `OPENLEARN_DB_PATH` |
|
|
155
|
-
| `ALLOWED_ORIGINS`
|
|
156
|
-
| `LOG_LEVEL`
|
|
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
|
-
|