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:
SpecialX
2026-06-17 14:21:24 +08:00
parent f013337ff7
commit baf8f679bf
18 changed files with 3751 additions and 3406 deletions

View File

@@ -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. 作业与权限测试覆盖补齐(第二阶段)