Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
21
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
智能排课系统(Smart Schedule Core V2)是一个基于 Spring Boot 3.5.9 的智能排课核心服务,使用 PostgreSQL 数据库。系统采用 MyBatis Plus 进行数据访问,使用 JSONB 字段存储复杂数据关系。
# 清理并编译项目 mvn clean compile # 运行测试 mvn test # 运行单个测试类 mvn test -Dtest=ClassName # 打包项目 mvn clean package # 跳过测试打包 mvn clean package -DskipTests # 运行应用 mvn spring-boot:run # 或者运行打包后的 JAR java -jar target/smart-schedule-coreV2-0.0.1-SNAPSHOT.jar
项目采用 MyBatis Plus 标准三层架构:
DO 层(Model):数据对象
src/main/java/io/github/flashlack1314/smartschedulecorev2/model/*DO.java@TableName 指定表名,@TableId 标识主键,@TableField 映射字段@Data 和 @Accessors(chain = true) 支持链式调用Mapper 层:数据访问接口
src/main/java/io/github/flashlack1314/smartschedulecorev2/mapper/*Mapper.javaBaseMapper<*DO>@Mapper 注解DAO 层:数据访问服务
src/main/java/io/github/flashlack1314/smartschedulecorev2/dao/*DAO.javaServiceImpl<*Mapper, *DO> 并实现 IService<*DO>@Slf4j 和 @Repository 注解sc_course_qualification:课程-教师多对多关联(原 sc_course.qualified_teacher_uuids)sc_teaching_class_class:教学班-行政班多对多关联(原 sc_teaching_class.class_uuids)sc_schedule.weeks_json:上课周次数组(JSONB 类型)sc_teacher.like_time:教师时间偏好(varchar 字符串格式)sc_schedule 表冗余存储课程、教师、教室信息以减少 JOINsc_semester(学期)→ sc_department(学院)→ sc_major(专业)→ sc_class(行政班级)sc_student(学生)- 关联到行政班级sc_teacher(教师)- 包含时间偏好和工作量限制sc_academic_admin(教务管理)- 关联到学院sc_building(教学楼)→ sc_classroom(教室)sc_course(课程)- 课程基本信息sc_course_qualification(课程教师资格)- 课程与教师的多对多关联表sc_teaching_class(教学班)- 排课的业务主体,关联课程、教师、学期sc_teaching_class_class(教学班-行政班关联)- 教学班与行政班的多对多关联表sc_schedule(排课记录)- 存储最终课表,包含时间、地点冗余字段sc_schedule_conflict(冲突记录)- 记录排课冲突行政班级 vs 教学班:
sc_class):学生的固定组织单位(如"计科2101班")sc_teaching_class):临时的上课组织单位(如"高等数学-张老师-计科2101+2102")项目包含自动数据库初始化功能:
DatabaseInitPropertiesDatabaseInitializationConfigsrc/main/resources/sql/*.sqlDatabaseInitProperties.initializeDefaultTables() 中定义配置前缀:
database.init
enabled:是否启用数据库初始化dropAndCreate:是否强制重新创建表(生产环境请勿开启)dropAllOnMissing:是否在发现缺失表时删除所有表重建failFast:是否初始化失败时终止应用启动项目使用
com.x-lf.utility:general-utils:1.0.9-beta.2.5 库,该库已包含:
因此不需要单独添加 MyBatis Plus 依赖。
表必须按依赖顺序创建(在
DatabaseInitProperties 中定义):
@Accessors(chain = true))@Slf4j 注解