hongjianli and factory-droid[bot]
81e2cbc33b
chore: update database backups and add V6 migration
...
- Clean old database backup files
- Add fresh backups (2026-01-16):
- martial_full_20260116.sql (34 martial tables)
- blade_full_20260116.sql (38 blade tables)
- other_tables_full_20260116.sql (16 mt_* + flyway tables)
- Add V6 migration: add project_id to martial_deduction_item
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 16:15:53 +08:00
hongjianli and factory-droid[bot]
03074c381b
fix: 集体项目展开后显示队员列表
...
- 添加 MartialTeamMapper 和 MartialTeam 依赖
- 修改查询逻辑:通过 team_name 关联 martial_team 表
- 正确查询 martial_team_member 获取队员信息
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 13:46:36 +08:00
hongjianli and factory-droid[bot]
b95c038971
fix: export preview missing athleteName and timeSlot data
...
- JOIN martial_athlete table to get player names
- Calculate timeSlot from time_slot_index (0=08:30, 1=13:30, 2=18:30)
- Use COALESCE to fallback to athlete table when participant name is null
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 12:44:05 +08:00
hongjianli
af513ce83a
Revert "添加estimatedDuration计算逻辑和调试日志"
...
This reverts commit 4debc07111ecd57cc8282f08618c734467cd8860.
2026-01-16 11:53:56 +08:00
hongjianli and factory-droid[bot]
33819a362d
添加estimatedDuration计算逻辑和调试日志
...
在generateInitialScheduleResult方法中添加estimatedDuration计算
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 11:53:56 +08:00
hongjianli and factory-droid[bot]
32bde3ae53
fix: 调度页面状态列从后端获取真实状态值
...
- 在CompetitionGroupDTO中添加status字段(0-未开始,1-进行中,2-已完成)
- 在MartialScheduleServiceImpl中添加calculateGroupStatus方法计算分组状态
- 状态根据参赛人员签到情况自动计算
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 11:53:56 +08:00
hongjianli
254b22c969
fix: 优化重复报名检查逻辑 - 只检查registration_status=1的记录,跳过而非拒绝重复报名
2026-01-15 17:30:01 +08:00
hongjianli
b9d1d2987e
fix: 防止重复报名 - 个人项目和集体项目都添加重复检查
...
- 个人项目:检测到重复报名时返回错误而非更新
- 集体项目:添加重复报名检查
- 新增 /martial/athlete/registered API 用于查询已报名选手
Closes #3
2026-01-15 15:56:29 +08:00
hongjianli and factory-droid[bot]
c6bf0d3404
fix: 移除MartialAthleteMapper中排除集体项目的过滤条件
...
- 删除 AND (a.team_name IS NULL OR a.player_name != a.team_name) 条件
- 使统计页面能够正确包含集体项目数据
- 修复Issue #3 : 统计页面未包含集体项目数据
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:29 +08:00
hongjianli and factory-droid[bot]
868b4be356
fix: 修复generateInitialScheduleResult方法,根据maxParticipants拆分单人项目分组
...
- 当单人项目参赛人数超过maxParticipants时,自动拆分成多个分组
- 添加createSingleGroup辅助方法
- 修复Issue #1 : 编排分组算法使用错误字段导致分组数计算不准确
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:29 +08:00
hongjianli and factory-droid[bot]
106e563f2e
fix: save draft schedule with negative IDs from auto-arrange
...
- Handle negative groupId by creating new schedule groups
- Extract projectId from code format C{competitionId}-P{projectId}
- Save project type, participant count, and team count
- Query participants by participant_id instead of primary key
- Create new participant records if not exists
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:29 +08:00
hongjianli and factory-droid[bot]
ba9b8609e9
fix: 在编排结果中添加 projectId 字段
...
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:29 +08:00
hongjianli and factory-droid[bot]
8f588d1214
chore: add database backup with test data (30 athletes + 5 teams)
...
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
30c05f3e54
feat: scheduling improvements and export enhancements
...
- Improved auto-scheduling with venue load balancing
- Added evening time slots support
- Enhanced export controller
- Updated captcha token granter
- Added minio_data to gitignore
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
fd3cc6aa54
Add Flyway migrations V3-V5 and database backup
...
- V3: Add venue_type, result fields, project venue_id
- V4: Create contact, exception_event, judge_project, team tables
- V5: Create schedule_plan, slot, conflict, adjustment_log tables
- Add full database backup 20260113
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
77b324cd4c
出场顺序:显示预计出场时间和评分完成状态
...
- LineupParticipantVO添加estimatedTime字段
- 根据出场顺序计算预计出场时间(每人5分钟)
- 根据martial_result.score_status判断已完成状态
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
42b25a7cf2
添加导出Excel组别字段、isMe标记、小程序出场顺序优化
...
- ScheduleGroupData添加category字段
- 编排保存时写入组别(男子/女子/混合)
- LineupParticipantVO添加isMe字段标记当前用户选手
- 修复SQL participant_id映射
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
15837dff9d
docs: 更新建表语句
...
1. martial_schedule_detail添加time_slot_index字段
2. martial_schedule_participant添加check_in_status、schedule_status字段
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
bc235b8fbe
feat: 添加编排预计时长显示
...
1. CompetitionGroupDTO添加estimatedDuration字段
2. ScheduleGroupDetailVO添加estimatedDuration字段
3. SQL查询添加estimated_duration
4. 前端场地视图显示合计时间
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli and factory-droid[bot]
82ae96503d
feat: 优化编排分组逻辑
...
1. 根据项目分组类别(男子/女子/混合)过滤运动员
2. 使用项目的category字段显示分组名称
3. 按team_name统计队伍数量(集体项目)
4. 添加场地容量约束和负载均衡分配
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-15 15:56:28 +08:00
hongjianli
aee06393d7
feat(schedule): 优化编排时间分配逻辑
...
- 添加晚上时段(19:00-22:00, 180分钟)
- 调整时段容量: 上午240分钟, 下午240分钟, 晚上180分钟
- 按实际时长累加分配,同一时段可安排多个项目
- 同一项目的所有分组优先安排在同一场地同一时段
2026-01-15 15:56:28 +08:00
hongjianli
8b0305997e
feat(schedule): 优化编排逻辑,同一项目尽量在同一时间段完成
...
- 按项目为单位进行分配,而不是按分组
- 计算每个项目的总时长,优先找能容纳整个项目的时间段
- 如果项目总时长不超过时间段容量(480分钟),所有分组都在同一时间段
- 只有当项目总时长超过单个时间段容量时才分散到多个时间段
- 分散时优先选择同一场地的连续时间段
2026-01-15 15:56:28 +08:00
hongjianli
529ac81131
feat(schedule): 同一项目优先分配到同一场地
...
- 新增projectVenueMap记录每个项目首次分配的场地
- 同一项目的后续分组优先分配到相同场地
- 只有当优先场地容量不足时才分配到其他场地
- 新增日志输出项目-场地分配情况
2026-01-15 15:56:28 +08:00
hongjianli
df7efac819
fix(schedule): 修复集体项目类型显示为双人的问题
...
- 修改MartialScheduleServiceImpl中type=2的显示文本从双人改为集体
- 保持与前端项目管理页面的类型定义一致(1=单人,2=集体)
2026-01-09 12:58:28 +08:00
hongjianli and factory-droid[bot]
559dea702a
feat: 项目编码自动生成
...
- 新增项目时自动生成编码,格式: C{赛事ID}-P{序号}
- 移除手动输入项目编码
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-08 17:19:23 +08:00
hongjianli and factory-droid[bot]
c40ca5b35b
fix: 修复联系人默认唯一性问题 & 添加单位统计API
...
- 问题1: 设置默认联系人时自动取消其他默认联系人
- 问题3: 新增 /organization-stats API 按单位统计运动员、项目、金额
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-08 16:08:31 +08:00
hongjianli and factory-droid[bot]
742272026b
重构项2: 优化编排规则
...
变更点1 - 使用项目maxParticipants:
- 优先使用项目配置的单位容纳人数进行分组
- 未配置时回退到全局配置(35人)
- 添加日志记录使用的容纳人数
变更点2 - 实现集体优先策略:
- 集体项目(projectType=2)优先于单人项目(projectType=1)
- 同类型项目按预计时长降序排列
- 添加排序结果日志便于调试
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-08 15:50:21 +08:00
hongjianli and factory-droid[bot]
496537ceef
重构项4: 添加出场顺序显示功能
...
后端:
- 新增LineupGroupVO和LineupParticipantVO类
- 在MartialMiniController中添加/schedule/status和/schedule/lineup接口
- 注入MartialScheduleStatusMapper和MartialScheduleGroupMapper
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-08 15:42:47 +08:00
hongjianli and factory-droid[bot]
e0d3572e34
feat: add score VO with deduction items and player number assignment
...
- Add selectScoreVOPage for score list with deduction items text
- Add chiefJudgeScore and scoreStatus fields to MartialScoreVO
- Add player number assignment in saveAndLockSchedule method
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-07 14:56:25 +08:00
hongjianli and factory-droid[bot]
a262ca9279
fix: 修复安全配置,移除/**通配符放行
...
- 移除skip-url中的/**通配符,恢复接口认证
- 添加必要的公开接口放行路径
- 修复AuthUtil.getUserId()返回-1的问题
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-07 13:05:46 +08:00
hongjianli and factory-droid[bot]
b94ac501de
feat: 编排保存时同步更新项目的venue_id
...
- 在saveDraftSchedule方法中添加同步逻辑
- 保存编排详情后自动更新martial_project.venue_id
- 保持编排系统和项目管理的数据一致性
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-07 11:55:03 +08:00
hongjianli and factory-droid[bot]
ea50330a5d
fix: 场地无项目时返回空列表而非所有项目
...
- 修改login和refreshLoginInfo方法中的项目获取逻辑
- 当场地没有关联项目时返回空列表
- 初始化projects变量为空ArrayList
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-07 11:31:27 +08:00
hongjianli and factory-droid[bot]
e3f158985a
fix: 添加@Slf4j注解修复编译错误
...
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-07 11:05:49 +08:00
hongjianli and factory-droid[bot]
eefe7167ee
fix: 报名时检查是否已存在相同选手记录,避免重复创建
...
- 在提交报名时,先检查是否已存在相同选手+比赛+项目的记录
- 如果存在则更新订单ID,而不是创建新记录
- 解决添加选手后再报名导致重复记录的问题
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-06 16:24:23 +08:00
hongjianli and factory-droid[bot]
550802a029
feat: 添加场地类型(venueType)字段支持
...
- MartialVenue实体添加venueType字段
- 支持室内/室外场地类型区分
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-06 15:18:00 +08:00
hongjianli
ac44bd45fa
fix(deduction): 修复扣分项编辑时赛事ID未携带的问题
...
- 实体类添加competitionId字段
- Controller查询时从关联项目获取competitionId
- 修复project为null时的空指针异常
2026-01-06 14:56:07 +08:00
hongjianli and factory-droid[bot]
8193baf314
fix: 添加报名时间和比赛结束时间校验
...
- 报名时检查报名时间是否在有效范围内
- 报名时检查比赛是否已结束
- 如果比赛已结束,返回错误提示
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-05 17:50:38 +08:00
hongjianli and factory-droid[bot]
3af34506ba
fix(mini): ensure general judge sees all projects regardless of venue
...
- Add check for refereeType == 3 or role == general_judge before filtering by venue
- General judges now always get all projects for the competition
- Prevents issue where general judge assigned to a venue would see no projects
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-05 16:38:30 +08:00
hongjianli and factory-droid[bot]
55ccf08246
fix(mini): 根据场地获取项目列表,解决同一项目显示在多个场地的问题
...
- 在MartialProject实体添加venueId字段
- 数据库martial_project表添加venue_id列
- 修改MartialMiniController:当裁判未指定项目时,根据venue_id获取该场地的项目
- 新增getProjectsByVenue方法
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-05 15:51:38 +08:00
hongjianli and factory-droid[bot]
29e9fb4e0a
feat: add contact management and judge project assignment features
...
- Add MartialContact entity, mapper, service, and controller for contact management
- Add updateProjects endpoint to MartialJudgeInviteController for project assignment
- Fix MartialRegistrationOrderController for multi-project registration
- Update MartialJudgeInviteVO with projects field
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-05 15:10:27 +08:00
hongjianli
9fa5eb46df
fix(score): 按场地统计裁判数量而非按项目
2025-12-31 17:32:13 +08:00
hongjianli
d3c7dccf05
fix(mini): 修复裁判类型判断逻辑 - refereeType=1为主裁判
2025-12-31 16:55:22 +08:00
hongjianli
370cdc8e1e
feat(judgeInvite): 支持按场地过滤裁判邀请列表
2025-12-31 16:20:29 +08:00
hongjianli
e70dbd1144
fix(athlete): 选手列表过滤掉集体报名记录
2025-12-31 15:56:24 +08:00
hongjianli
760b7d0039
feat(registration): 报名成功后自动确认选手状态
2025-12-31 15:47:04 +08:00
hongjianli
e50b71a13d
fix(registration): 根据赛事时间动态计算报名状态
...
- 1: 待开始 (赛事未开始)
- 2: 进行中 (赛事进行中)
- 3: 已结束 (赛事已结束)
2025-12-31 15:10:37 +08:00
hongjianli
e1bf9a4351
fix(registration): 查询选手时过滤已删除记录
2025-12-31 14:42:09 +08:00
hongjianli
2f9fbbb2aa
fix(schedule): 修复集体项目类型显示为单人的问题
...
- 修改autoGroupParticipants方法中的projectType判断逻辑
- type=2(双人)或type=3(集体)都映射为projectType=2(集体)
- 之前只处理了type=3的情况,导致type=2的集体项目被错误标记为单人
2025-12-31 14:15:26 +08:00
hongjianli
f45fee050e
feat(registration): 支持集体项目报名
...
- DTO添加teamIds字段接收集体ID列表
- Controller处理集体报名逻辑
- 为每个集体创建martial_athlete记录用于编排
2025-12-31 13:48:04 +08:00
hongjianli
18895dcb76
fix(team): 修复编辑集体变成新增的问题
...
- 将DTO中的id字段改为teamId,避免uni-app对id字段的特殊处理
- 使用String类型接收teamId,避免JavaScript大数精度丢失
- 添加日志记录便于调试
2025-12-31 13:09:43 +08:00