教学闭环运行与验收¶
本地 Docker 运行¶
Prerequisites:JDK21/Node24的源码构建环境或Docker Compose、四个兄弟仓库、受限的本地secret。仅用于本机测试,不能指向生产库。
Steps:在 infra 执行:
sh prepare-local-secrets.sh
docker compose -f compose.yaml -f compose.local.yaml -f compose.bootstrap.yaml up --build -d --wait
docker compose -f compose.yaml -f compose.local.yaml up -d --wait
Expected output:四服务健康,在本机8088登录后出现“我的课程”。已有安装升级的角色认证版本提升,用户须重新登录。附件使用现有数据库卷,不需要新增公开文件目录。
Validation:学生注册后默认只能加入课程和提交;由管理员将教师账号分配为teacher;教师创建课程、发放课程码,学生直接加入;教师创建任务,选择材料类型与评分项并发布;学生保存草稿、上传允许的文件并正式提交;教师开始批改、保存评分、确认发布,学生看到本人版本成绩。
以上Compose为既有源码运行入口;本轮实际端到端结果来自以下隔离数据库和主机JVM/Next生产构建,不将其混称为新镜像验收。
后端全量测试¶
Prerequisites:独立数据库名必须以 lab_edu_acceptance 开头。将 LAB_EDU_TEST_DATABASE_URL、USER、PASSWORD(或PASSWORD_FILE)配置为独立测试库;测试会清夹具,严禁使用业务库。
Steps:在 core 执行:
mvn clean verify
Expected output:77 tests,failures/errors/skipped全部0。
Validation:target/surefire-reports 中应包含 TeachingPolicyTest、CourseServiceTest、CourseApiTest、AssignmentConfigurationTest、AssignmentApiTest、ReportApiTest、TeachingBoundaryApiTest、MaterialValidatorTest及全部既有测试;ReportApiTest额外核对正式教学OpenAPI响应。CI需同时提供lab.edu.contract与lab.edu.teaching-contract两个文件路径。
本机如注入全局代理,测试JVM须清除代理属性,避免本机数据库连接走代理;不修改产品代码绕过。
浏览器全量回归¶
Prerequisites:独立、已初始化管理员的测试应用,Chromium;仅测试账户,无真实教学数据。LAB_EDU_E2E_BASE_URL指向验收入口,LAB_EDU_E2E_ADMIN_PASSWORD_FILE指向测试管理员密码文件。
Steps:在 web 执行:
npm run lint
npm run typecheck
npm run build
npm run test:acceptance
Expected output:13 passed,0 failed,单worker、无重试与跳过;包含12项既有管理/鉴权场景及1项完整教学闭环。
Validation:test-results/results.json中教学场景必须通过;学生的截图出现本人已发布分数,教师的草稿在发布前对学生不可见。本轮全套使用本机18090前端、8080后端和55434的全新专用PostgreSQL数据库。
材料与使用边界¶
教师从平台支持集合选择文件类型,单个最多20MiB、每份最多5个;平台不执行源码/Notebook、不在线打开Office/PDF。学生可保存正文草稿、提交多版;开始批改后须教师退回才能重交。成绩发布与保存分开,改已公开结果形成新的公开记录,历史结果保留对应版本。课堂成员移除后不能凭旧码恢复访问;码可重置关闭。归档不可恢复且只读。