refactor: 迁移脚本系统重构 + 新增 db 脚本 + 工作日志
- 清理全部旧迁移文件(0000-0011)和 meta 目录 - 使用 drizzle-kit generate 从 schema 重新生成单一迁移文件 - 0000_perfect_pestilence.sql: 包含全部 49 张表 - 修复 0011_ai_providers.sql 未在 journal 注册导致 migrate 失败的问题 - 修复缺少 snapshot 文件的问题 - 移除复杂 PREPARE/EXECUTE 条件 SQL,使用标准 CREATE TABLE - package.json 新增脚本: - db:create: 创建数据库 - db:push: 直接同步 schema(开发用) - db:setup: 一键 create → migrate → seed - 干净数据库全流程测试通过: create → migrate → seed - 更新工作日志(docs/work_log.md)
This commit is contained in:
@@ -1,5 +1,58 @@
|
||||
# Work Log
|
||||
|
||||
## 2026-06-17
|
||||
|
||||
### 1. Next.js 16 Proxy 修复
|
||||
- `src/proxy.ts` 导出函数从 `middleware` 重命名为 `proxy`(Next.js 16 要求)
|
||||
- 修复 `getToken()` 在 edge 运行时缺少 `secret` 导致的 `MissingSecret` 错误
|
||||
- 显式传入 `secret: process.env.NEXTAUTH_SECRET`
|
||||
- 主要修改:[proxy.ts](file:///e:/Desktop/CICD/src/proxy.ts)
|
||||
|
||||
### 2. MySQL 端口切换 + 数据库创建脚本
|
||||
- `.env` 中 MySQL 端口从 13002 改为 14013
|
||||
- 新增 `scripts/create-db.ts`:连接 MySQL(不指定库)后执行 `CREATE DATABASE IF NOT EXISTS next_edu`,字符集 utf8mb4_unicode_ci
|
||||
- 主要修改:[.env](file:///e:/Desktop/CICD/.env)、[create-db.ts](file:///e:/Desktop/CICD/scripts/create-db.ts)
|
||||
|
||||
### 3. 种子脚本完全重写(小学场景)
|
||||
- 完全重写 `scripts/seed.ts`,实现小学完整场景初始化
|
||||
- 数据规模:
|
||||
- 1 所学校(实验小学)、2 个年级(一/二年级)、每年级 2 个班级
|
||||
- 8 名教师(每班 2 名:1 班主任 + 1 科任,跨班覆盖语数外 3 科)
|
||||
- 24 名学生(每班 6 名)+ 24 名家长
|
||||
- 3 科教材(语数外各 1 本)+ 章节 + 知识点
|
||||
- 15 道题目(每科 5 道:单选/文本/判断)
|
||||
- 2 套试卷(语文/数学)+ 24 份提交 + 120 个答案
|
||||
- 2 套作业 + 6 份提交 + 30 个答案
|
||||
- 课表、成绩、考勤、课程计划、公告等完整数据
|
||||
- 6 个角色 + 47 个权限点的 RBAC 映射(149 条记录)
|
||||
- 17 个顺序步骤,耗时约 127s
|
||||
- 主要修改:[seed.ts](file:///e:/Desktop/CICD/scripts/seed.ts)
|
||||
|
||||
### 4. 迁移脚本系统重构
|
||||
- **问题**:旧迁移系统存在多个缺陷
|
||||
- `0011_ai_providers.sql` 未在 `_journal.json` 中注册,导致 `drizzle-kit migrate` 失败
|
||||
- 缺少多数 snapshot 文件(仅存 0008、0009)
|
||||
- 迁移 SQL 使用复杂 PREPARE/EXECUTE 条件模式,维护困难
|
||||
- **修复**:清理全部旧迁移文件与 meta 目录,使用 `drizzle-kit generate` 从 schema 重新生成
|
||||
- 生成单一迁移文件 `0000_perfect_pestilence.sql`,包含全部 49 张表
|
||||
- journal 重置为单条记录,snapshot 完整
|
||||
- **新增 npm 脚本**(package.json):
|
||||
- `db:create`:创建数据库
|
||||
- `db:push`:直接同步 schema(开发用)
|
||||
- `db:setup`:一键 create → migrate → seed
|
||||
- 主要修改:[package.json](file:///e:/Desktop/CICD/package.json)、drizzle/ 目录
|
||||
|
||||
### 5. 验证
|
||||
- 干净数据库全流程测试:`db:create` → `db:migrate` → `db:seed` 全部通过
|
||||
- 49 张表成功创建,种子数据完整写入
|
||||
- 测试账号(密码均为 123456):
|
||||
- 管理员: admin@xiaoxue.edu.cn
|
||||
- 语文老师/一年级1班班主任: t_chinese_1@xiaoxue.edu.cn
|
||||
- 数学老师: t_math_1@xiaoxue.edu.cn
|
||||
- 英语老师: t_english_1@xiaoxue.edu.cn
|
||||
- 学生: student_g1c1_1@xiaoxue.edu.cn
|
||||
- 家长: parent_g1c1_1@xiaoxue.edu.cn
|
||||
|
||||
## 2026-03-19
|
||||
|
||||
### 1. 作业与权限测试覆盖补齐(第二阶段)
|
||||
|
||||
Reference in New Issue
Block a user