EPA-004 Database Design
EAOS 数据库遵循“教育领域优先、审计优先、AI 可理解优先”。
Naming Rules
- 表名使用英文复数或明确领域名,避免拼音。
- 主键统一为
id。 - 所有核心表保留
createdAt、updatedAt。 - 需要审计的业务表保留
createdById、updatedById。 - 删除默认软删除,除非法律或安全要求硬删除。
Core Entity Families
| Family | Entities |
|---|---|
| Organization | Tenant, School, Campus, Department, Grade, ClassGroup |
| People | User, TeacherProfile, StudentProfile, GuardianProfile |
| Learning | Course, Lesson, Resource, KnowledgeNode, LearningPath |
| Offline Class | OfflineClass, OfflineEnrollment, OfflineProgress, OfflineSubmission |
| Assessment | Question, Paper, Homework, Exam, Submission, Rubric |
| AI | ModelProvider, ModelConfig, PromptTemplate, Agent, WorkflowRun, Evaluation |
| Commerce | Product, PricePlan, Order, Payment, Entitlement |
| Governance | AuditLog, DataPolicy, ConsentRecord, ReleaseNote |
Migration Principles
- 任何数据库变更都必须先更新文档和 Prisma schema。
- 破坏性迁移必须写出回滚方案。
- 涉及个人数据的字段必须声明用途、保留时间和访问范围。
- AI 训练或评估用数据必须可追溯来源和授权状态。
Offline Class Data Rules
线下课专区涉及手机号、现场学习进度和学员成果,生产数据库必须按私密班级处理。
| Entity | Retention and access |
|---|---|
OfflineClass | 老师和运营可管理;支持 lectureSeriesId/lectureNo 归入同一讲座系列;归档后仍保留授课记录 |
OfflineEnrollment | 仅保存手机号哈希或加密联系方式;普通后台默认脱敏 |
OfflineProgress | 用于现场进度和课后复访,可按班级导出统计 |
OfflineSubmission | 学员成果默认私密,仅老师、助教和授权运营可看 |
任何公开案例沉淀必须另走授权和匿名化流程,不能直接把线下课提交内容发布到论坛或宣传页。