教学闭环运行与验收

本地 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。学生可保存正文草稿、提交多版;开始批改后须教师退回才能重交。成绩发布与保存分开,改已公开结果形成新的公开记录,历史结果保留对应版本。课堂成员移除后不能凭旧码恢复访问;码可重置关闭。归档不可恢复且只读。