feat(core-edu): admin/dashboard/leave-requests 模块 + gRPC + 状态机测试 + nextstep 文档

This commit is contained in:
SpecialX
2026-07-14 15:56:10 +08:00
parent d260df864c
commit 7dd5c44406
23 changed files with 3344 additions and 2 deletions

View File

@@ -263,3 +263,55 @@ CREATE TABLE IF NOT EXISTS classes (
INDEX idx_classes_grade_id (grade_id),
INDEX idx_classes_head_teacher (head_teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ============================================================================
-- P3.13 新增表:考试草稿、考试违规、请假申请
-- ============================================================================
-- 考试草稿表(学生考试过程中的自动保存)
CREATE TABLE IF NOT EXISTS core_edu_exam_drafts (
id CHAR(36) NOT NULL PRIMARY KEY,
exam_id CHAR(36) NOT NULL,
student_id CHAR(36) NOT NULL,
answers JSON,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uniq_exam_student_draft (exam_id, student_id),
INDEX idx_exam_drafts_student (student_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 考试违规表(防作弊事件记录)
CREATE TABLE IF NOT EXISTS core_edu_exam_violations (
id CHAR(36) NOT NULL PRIMARY KEY,
exam_id CHAR(36) NOT NULL,
student_id CHAR(36) NOT NULL,
violation_type VARCHAR(40) NOT NULL,
detail TEXT,
severity INT NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_exam_violations_exam (exam_id),
INDEX idx_exam_violations_student (student_id),
INDEX idx_exam_violations_type (violation_type)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 请假申请表
CREATE TABLE IF NOT EXISTS core_edu_leave_requests (
id CHAR(36) NOT NULL PRIMARY KEY,
student_id CHAR(36) NOT NULL,
class_id CHAR(36) NOT NULL,
leave_type VARCHAR(20) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
reason TEXT NOT NULL,
status VARCHAR(20) NOT NULL DEFAULT 'pending',
submitted_by CHAR(36) NOT NULL,
reviewed_by CHAR(36),
review_comment TEXT,
school_id CHAR(36) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_leave_requests_student (student_id),
INDEX idx_leave_requests_class (class_id),
INDEX idx_leave_requests_status (status),
INDEX idx_leave_requests_school (school_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;