教学闭环实施规划

状态:已批准需求下的技术设计,实施中;不得将本规划视为完成报告。

Summary

实现依据为 ../teaching-spec-001.md。按课程与任务阅读、报告提交、批改反馈三个增量交付。业务和授权留在 core;web 仅呈现服务端状态与可执行操作。

Technical Context

沿用 pom/package 锁定的 Spring Security、JPA、Flyway、JUnit、MockMvc、Next/Refine/Ant Design、Playwright,无框架升级;附件类型检测使用已接受 ADR-007 的 Tika Core 3.2.3。数据库沿用 PostgreSQL;附件在明确容量上限内使用受保护 bytea 存储,跟随现有数据库卷持久化,业务内容不进镜像。时间策略注入 Clock,测试显式推进时间。

Constitution Check

原则 Gate 问题 设计前 设计后 Evidence
分层 业务状态是否只由 core 判断 通过 通过 本文
框架优先 是否复用安全/事务/乐观锁/表单与测试工具 通过 通过 research.md
范围 教学扩容是否获得用户批准 通过 通过 ../teaching-spec-001.md、宪法0.3.0
授权测试 是否测试归属与状态组合 通过 通过 tests-evidence.json
附件 类型识别和存储是否完成评审 偏离 通过:ADR-007 已采用并测试 ../../adr/007-teaching-attachments.md

Project Structure

core/src/main/java/team/lab_edu/teaching/:课程、成员、任务、报告、评分领域与控制器。 core/src/test/java/team/lab_edu/teaching/:政策单元测试;core/src/test/java/team/lab_edu/:真实数据库 API 测试。 web/src/app/(protected)/courses/ 与 assignments/:课程和任务页面;web/tests/:教学浏览器验收。 infra/:附件持久卷与隔离验收栈;docs/specs/teaching-001/:唯一教学技术设计与契约。

Complexity Tracking

附件初期尚未放行;现经 ADR-007 采用 Tika Core 与受限 bytea 存储,已接入验证。原比较:原样公开目录、只信客户端 MIME 两种简单方案均无法满足受保护下载和类型验证。后续选择必须附 ADR;不以缺少附件设计为由做无验证上传。

Phase 0/1

research.md 记录技术选择;data-model.md 记录状态约束;contracts.md 记录交互与授权;quickstart.md 记录验证入口;tasks.md 持续登记真实进度。