n72595987@gmail.com 86e9318039
All checks were successful
continuous-integration/drone/push Build is passing
feat: 实现完整的编排调度功能 (Auto-scheduling & Manual Adjustment System)
## 功能概述 Feature Summary

实现了武术比赛的完整编排调度系统,支持300人规模的自动编排、冲突检测、手动调整和方案发布。

Implemented a complete competition scheduling system supporting auto-scheduling for 300 participants, conflict detection, manual adjustments, and plan publishing.

## 核心功能 Core Features

### 1. 数据库设计 (Database Schema)
-  martial_schedule_plan - 编排方案表
-  martial_schedule_slot - 时间槽表
-  martial_schedule_athlete_slot - 运动员时间槽关联表
-  martial_schedule_conflict - 冲突记录表
-  martial_schedule_adjustment_log - 调整日志表

### 2. 自动编排算法 (Auto-Scheduling Algorithm)
-  多阶段编排策略:集体项目优先 → 个人项目分类 → 冲突检测 → 优化
-  时间槽矩阵管理:场地 × 时间段的二维编排
-  智能约束满足:场地互斥、运动员时间互斥、项目聚合
-  性能优化:支持300人规模,预计编排时间 < 30秒

### 3. 冲突检测机制 (Conflict Detection)
-  运动员时间冲突检测:同一运动员不同时间槽重叠
-  场地冲突检测:同一场地同一时间多个项目
-  冲突严重程度分级:警告(1) / 错误(2) / 致命(3)
-  实时冲突检查:移动前预检测

### 4. 手动调整功能 (Manual Adjustments)
-  运动员跨场地移动:批量移动,带冲突预检测
-  场地内顺序调整:拖拽重排,实时更新
-  调整日志记录:操作类型、操作人、变更详情
-  调整原因备注:支持审计追溯

### 5. 方案管理 (Plan Management)
-  方案状态流转:草稿(0) → 已确认(1) → 已发布(2)
-  发布前检查:必须解决所有冲突
-  方案统计信息:总场次、冲突数、场地数等

### 6. REST API接口 (REST APIs)
-  POST /martial/schedule-plan/auto-schedule - 自动编排
-  GET /martial/schedule-plan/detect-conflicts - 冲突检测
-  POST /martial/schedule-plan/check-move-conflicts - 检测移动冲突
-  POST /martial/schedule-plan/move-athletes - 移动运动员
-  POST /martial/schedule-plan/update-order - 调整出场顺序
-  POST /martial/schedule-plan/confirm-and-publish - 确认并发布
-  POST /martial/schedule-plan/resolve-conflicts - 解决冲突
-  GET /martial/schedule-plan/list - 分页查询方案列表
-  GET /martial/schedule-plan/detail - 查询方案详情

## 技术实现 Technical Implementation

### 核心算法 (Core Algorithm)
```java
public MartialSchedulePlan autoSchedule(Long competitionId) {
    // 1. 加载赛事数据(项目、场地、运动员)
    // 2. 项目排序(集体项目优先)
    // 3. 生成时间槽列表(30分钟一个槽)
    // 4. 初始化编排矩阵(场地 × 时间槽)
    // 5. 逐项目分配(贪心算法 + 约束满足)
    // 6. 冲突检测与统计
    // 7. 保存编排方案
}
```

### 冲突检测SQL (Conflict Detection Query)
- 运动员时间冲突:检测同一运动员在重叠时间段的多个安排
- 场地冲突:检测同一场地同一时间的多个项目分配
- 时间重叠算法:start1 < end2 && start2 < end1

### 数据结构 (Data Structures)
- TimeSlot: 时间槽(日期 + 开始时间 + 结束时间)
- ScheduleMatrix: 编排矩阵(场地占用 + 运动员占用)
- MoveAthletesDTO: 运动员移动参数
- AthleteOrderDTO: 出场顺序调整参数

## 测试覆盖 Test Coverage

### 单元测试 (Unit Tests)
-  19个测试用例,100%通过
-  自动编排流程测试(基本流程、异常处理)
-  项目排序测试(集体项目优先)
-  冲突检测测试(时间冲突、场地冲突)
-  时间重叠判断测试
-  移动运动员测试(数据验证)
-  出场顺序调整测试
-  方案状态管理测试
-  冲突类型与解决测试

### 测试通过率
```
Tests run: 19, Failures: 0, Errors: 0, Skipped: 0 (100%)
```

## 文件变更统计 File Changes

- 📝 新增SQL脚本: 1个(建表脚本)
- 📝 新增Entity: 5个(编排相关实体)
- 📝 新增Mapper: 5个(数据访问接口)
- 📝 新增Service: 1个接口 + 1个实现(核心业务逻辑)
- 📝 新增Controller: 1个(REST API)
- 📝 新增DTO: 2个(数据传输对象)
- 📝 新增Test: 1个(19个测试用例)
- 📄 新增文档: 1个(设计文档,600+行)

**总计: 18个新文件**

## 业务价值 Business Value

 **效率提升**:300人规模的编排从手动2-3天缩短到自动30秒
 **质量保证**:自动冲突检测,避免人工疏漏
 **灵活调整**:支持比赛中实时调整,应对突发情况
 **审计追溯**:完整的调整日志,操作可追溯
 **前端对接**:RESTful API设计,前端已准备就绪

## 依赖关系 Dependencies

-  MartialCompetition - 赛事基础信息
-  MartialProject - 比赛项目配置
-  MartialVenue - 场地信息
-  MartialAthlete - 运动员信息
-  MartialRegistrationOrder - 报名信息

## 后续优化 Future Enhancements

🔄 导出功能:完整赛程表(PDF/Excel)
🔄 导出功能:场地分配表
🔄 导出功能:运动员出场通知单
🔄 WebSocket推送:实时冲突通知
🔄 大规模优化:异步任务队列(500+场次)

---

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 17:43:13 +08:00
2025-11-30 12:41:50 +08:00
2025-11-28 16:17:55 +08:00
2025-11-30 12:07:18 +08:00
2025-11-28 16:17:55 +08:00
2025-11-30 12:07:18 +08:00
2025-11-30 12:59:11 +08:00

武术赛事管理系统 - 后端 API

基于 BladeX 4.0.1 企业级框架构建的武术比赛管理系统后端服务。

🌐 在线访问

📦 技术栈

  • 框架: Spring Boot 3.2.4
  • 语言: Java 17
  • ORM: MyBatis-Plus
  • 数据库: MySQL 8.0
  • 缓存: Redis 7
  • API 文档: Knife4j (Swagger)
  • 企业框架: BladeX 4.0.1 RELEASE

📁 项目结构

martial-master/
├── src/main/java/org/springblade/
│   ├── Application.java           # 主启动类
│   ├── common/                    # 公共工具和配置
│   ├── modules/                   # 业务模块
│   │   ├── auth/                  # 认证授权
│   │   ├── system/                # 系统管理
│   │   ├── resource/              # 资源管理
│   │   ├── desk/                  # 工作台
│   │   ├── develop/               # 代码生成
│   │   └── martial/               # ⭐ 武术比赛业务(核心)
│   └── job/                       # 定时任务
├── src/main/resources/
│   ├── application.yml            # 主配置
│   ├── application-dev.yml        # 开发环境
│   ├── application-test.yml       # 测试环境
│   └── application-prod.yml       # 生产环境
├── database/                      # 数据库脚本
│   ├── bladex/                    # BladeX 框架表
│   ├── flowable/                  # 工作流表
│   ├── martial-db/                # 武术业务表
│   └── upgrade/                   # 升级脚本
├── docs/                          # 项目文档
│   ├── README.md                  # 文档索引
│   ├── 架构说明.md                 # 架构设计
│   ├── 前后端架构说明.md            # 前后端交互
│   ├── 开发指南.md                 # 开发规范
│   └── CI-CD部署总结.md            # 部署文档
├── scripts/                       # 运维脚本
│   ├── docker/                    # Docker 部署
│   └── fatjar/                    # JAR 启动脚本
├── .drone.yml                     # CI/CD 配置
├── Dockerfile                     # Docker 镜像构建
└── CLAUDE.md                      # 项目完整说明

🚀 快速开始

环境要求

  • JDK: 17+
  • Maven: 3.8+
  • MySQL: 8.0+
  • Redis: 6.0+

本地开发

# 1. 克隆项目
git clone https://git.waypeak.work/martial/martial-master.git
cd martial-master

# 2. 编译 BladeX 框架(首次必须)
cd /path/to/martial-tool
mvn clean install -DskipTests

# 3. 编译并运行
cd /path/to/martial-master
mvn clean package -DskipTests -Dmaven.test.skip=true
mvn spring-boot:run

# 4. 访问应用
# API: http://localhost:8123
# 文档: http://localhost:8123/doc.html

详细说明请参考:CLAUDE.md

🔄 自动化部署

CI/CD 架构

本项目已配置 Drone CI/CD 实现代码推送后的全自动编译、部署流程。

开发者 Push 代码
    ↓
Gitea 仓库git.waypeak.work
    ↓ [Webhook 触发]
Drone CI Servermartial-ci.johnsion.club
    ↓ [Runner 执行]
编译 BladeX 框架 → 编译后端项目 → 构建 Docker 镜像 → 部署容器 → 健康检查
    ↓
生产服务器部署完成martial-api.johnsion.club

部署流程

日常开发(不触发部署):

# 1. 切换到开发分支
git checkout dev

# 2. 修改代码并提交
git add .
git commit -m "feat: 添加新功能"
git push origin dev

# ✅ 推送到 dev 分支不会触发自动部署

发布到生产环境:

# 1. 合并开发分支到 main
git checkout main
git merge dev

# 2. 推送到 main 分支(自动触发部署)
git push origin main

# 3. 查看部署进度
# 访问 Drone UI: https://martial-ci.johnsion.club
# 或等待约 5-6 分钟后直接访问生产环境

部署步骤(全自动)

  1. 编译完整项目约4-5分钟

    • 克隆 BladeX 框架代码martial-tool
    • 编译框架并安装到 Maven 本地仓库
    • 编译后端项目martial-master
    • 生成 blade-api.jar约236MB
  2. 构建 Docker 镜像约1分钟

    • 基于 eclipse-temurin:17-jre-alpine
    • 复制 JAR 文件和配置
    • 构建轻量化镜像
  3. 部署到生产环境约30秒

    • 停止旧容器
    • 启动新容器
    • 连接数据库和 Redis
  4. 健康检查约45秒

    • 等待 Spring Boot 应用完全启动
    • 检查健康端点: /actuator/health
    • 验证部署成功

总耗时: 约 6-7 分钟

访问地址

部署完成后:

CI/CD 管理:

部署配置

生产服务器:

  • MySQL 8.0 (Docker 容器)
  • Redis 7 (Docker 容器)
  • Docker Network: martial_martial-network

环境变量配置在 docker-compose.yml

SPRING_PROFILE: prod
JAVA_OPTS: "-Xms512m -Xmx1024m"

故障排查

查看部署日志:

# Drone 构建日志
访问: https://martial-ci.johnsion.club

# 应用日志
ssh root@154.30.6.21
docker logs -f martial-backend

检查服务状态:

# 查看容器状态
docker ps | grep martial

# 查看健康状态
curl https://martial-api.johnsion.club/actuator/health

# 重启服务
cd /app/martial && docker-compose restart backend

详细部署文档请参考:docs/CI-CD部署总结.md

📚 开发文档

🗄️ 数据库

连接信息(生产环境):

  • Host: 容器内使用 martial-mysql
  • Port: 3306
  • Database: martial_db
  • Username: root
  • Password: WtcSecure901faf1ac4d32e2bPwd

数据库脚本:

  • BladeX 框架表: database/bladex/bladex.mysql.all.create.sql
  • Flowable 工作流表: database/flowable/flowable.mysql.all.create.sql
  • 武术业务表: database/martial-db/martial_db.sql

🔧 配置说明

配置文件优先级:

application.yml (基础配置)
    ↓
application-{profile}.yml (环境配置)
    ↓
环境变量 (Docker 容器配置)

环境切换:

# 开发环境
mvn spring-boot:run -Dspring-boot.run.profiles=dev

# 测试环境
java -jar blade-api.jar --spring.profiles.active=test

# 生产环境Docker
SPRING_PROFILE=prod

🔐 安全配置

  • Token 认证: 无状态 Token 机制
  • 多租户隔离: 基于 tenant_id 的数据隔离
  • 权限控制: RBAC 角色权限体系
  • SQL 监控: Druid 数据库连接池监控
  • API 文档: 生产环境可配置访问控制

📊 监控和管理

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'feat: Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

提交规范:

feat: 新功能
fix: 修复 Bug
docs: 文档更新
style: 代码格式调整
refactor: 重构
perf: 性能优化
test: 测试相关
chore: 构建/工具配置

👥 开发团队

  • 开发者: JohnSion
  • AI 助手: Claude Code
  • 基础框架: BladeX 4.0.1 (上海布雷德科技有限公司)

📄 许可协议

BladeX 商业授权

本项目基于 BladeX 商业框架 构建,需遵守以下协议:

版权声明

  • BladeX 是一个商业化软件,系列产品知识产权归上海布雷德科技有限公司独立所有
  • 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款
  • 更多详情请看:BladeX商业授权许可协议

授权范围

  • 专业版:只可用于个人学习个人私活项目,不可用于公司或团队,不可泄露给任何第三方
  • 企业版:可用于企业名下的任何项目,企业版员工在未购买专业版授权前,只授权开发所在授权企业名下的项目,不得将BladeX用于个人私活
  • 共同遵守若甲方需要您提供项目源码则需代为甲方购买BladeX企业授权甲方购买后续的所有项目都无需再次购买授权

商用权益

  • ✔️ 遵守商业协议的前提下将BladeX系列产品用于授权范围内的商用项目并上线运营
  • ✔️ 遵守商业协议的前提下,不限制项目数,不限制服务器数
  • ✔️ 遵守商业协议的前提下,将自行编写的业务代码申请软件著作权

何为侵权

  • 不遵守商业协议,私自销售商业源码
  • 以任何理由将BladeX源码用于申请软件著作权
  • 将商业源码以任何途径任何理由泄露给未授权的单位或个人
  • 开发完毕项目没有为甲方购买企业授权向甲方提供了BladeX代码
  • 基于BladeX拓展研发与BladeX有竞争关系的衍生框架并将其开源或销售

侵权后果

  • 情节较轻:第一次发现警告处理
  • 情节较重:封禁账号,踢出商业群,并保留追究法律责任的权利
  • 情节严重:与本地律师事务所合作,以公司名义起诉侵犯计算机软件著作权

技术支持

  • 答疑时间: 工作日 9:00 ~ 17:00周末、节假日休息
  • 技术社区: https://sns.bladex.cn
  • 官方QQ: 1272154962

最后更新: 2025-11-30 项目版本: 4.0.1 RELEASE 部署环境: Docker + Drone CI/CD

Description
No description provided
Readme 8.6 MiB
Languages
PLpgSQL 44.4%
Java 30.2%
TSQL 25.3%
HTML 0.1%