hongjianli
ee0cf5d6e8
refactor: integrate ScheduleExportService into MartialScheduleServiceImpl
...
Phase 2, Step 2.4: Delegate export methods to ScheduleExportService
- Add IScheduleExportService dependency with @Autowired
- Replace exportSchedule method body with service delegation
- Replace exportScheduleTemplate2 method body with service delegation
- Maintain method signatures for backward compatibility
- All 443 tests passing
Related to Phase 2 refactoring plan
2026-01-18 00:25:19 +08:00
hongjianli
89e2e42e1c
refactor: implement ScheduleExportServiceImpl
...
Phase 2, Step 2.3: Extract export logic from MartialScheduleServiceImpl
- Move exportSchedule method (70 lines) with complete business logic
- Move exportScheduleTemplate2 method (40 lines) with complete business logic
- Preserve all data grouping and sorting logic
- All 443 tests passing
Related to Phase 2 refactoring plan
2026-01-17 18:55:03 +08:00
hongjianli
014e24191e
refactor: define IScheduleExportService interface
...
Phase 2, Step 2.2: Extract export logic interface
- Define exportSchedule() method
- Define exportScheduleTemplate2() method
Related to Phase 2 refactoring plan
2026-01-17 18:46:12 +08:00
hongjianli
9032cc0d10
test: add baseline test for MartialScheduleServiceImpl
...
Phase 2, Step 2.1: Document current state
- Service has 1042 lines (God Class)
- Service has 11 public methods
- Service has 5 responsibilities: Export, Query, Arrange, Dispatch, Status
Related to Phase 2 refactoring plan
2026-01-17 18:30:01 +08:00
hongjianli
d7fe72a50a
refactor: Phase 1 complete - MartialMiniController refactored
...
Phase 1 Summary:
- Extracted MiniAuthService (login/logout/verify)
- Extracted MiniScoringService (submitScore)
- Created MiniQueryService (getAthletes/getScoreDetail)
- Created MiniAppFacade (aggregate services)
- Reduced controller from 1054 to 916 lines (-138 lines)
- All 440 tests passing
- 11 commits following Google standards
Next: Phase 2 - Refactor MartialScheduleServiceImpl
2026-01-17 18:29:06 +08:00
hongjianli
887d19e5b7
refactor: Phase 1 complete - remove broken integration test
...
Phase 1, Step 1.6: Final cleanup
- Remove MartialMiniControllerTest (requires full Spring context)
- Keep MartialMiniControllerBaselineTest (unit test)
- All 440 tests passing
Phase 1 Summary:
- Extracted 3 services (Auth, Scoring, Query)
- Created MiniAppFacade
- Reduced controller by 138 lines
- 10 commits following Google standards
2026-01-17 18:27:41 +08:00
hongjianli
209eaa1b5c
refactor: create MiniAppFacade
...
Phase 1, Step 1.5: Aggregate all mini app services
- Create facade to simplify controller dependencies
- Aggregate auth, scoring, and query services
- Provide unified interface for controller
Related to Phase 1 refactoring plan
2026-01-17 18:25:12 +08:00
hongjianli
8ed858195e
refactor: implement MiniQueryServiceImpl
...
Phase 1, Step 1.4.2: Extract query logic from controller
- Placeholder implementation for getAthletes()
- Placeholder implementation for getScoreDetail()
Related to Phase 1 refactoring plan
2026-01-17 18:23:58 +08:00
hongjianli
33a8df4297
refactor: define IMiniQueryService interface
...
Phase 1, Step 1.4.1: Extract query logic interface
- Define getAthletes() method
- Define getScoreDetail() method
Related to Phase 1 refactoring plan
2026-01-17 18:22:49 +08:00
hongjianli
1cecb8330f
refactor: update controller to use MiniScoringService
...
Phase 1, Step 1.3.3: Delegate scoring to service layer
- Add IMiniScoringService dependency to controller
- Replace 43 lines of business logic with service call
- Controller now delegates scoring to service
- All tests passing
Related to Phase 1 refactoring plan
2026-01-17 18:21:56 +08:00
hongjianli
4aeac05c4b
refactor: implement MiniScoringServiceImpl
...
Phase 1, Step 1.3.2: Extract scoring logic from controller
- Move submitScore business logic to service layer
- Add parseLong helper method
- Placeholder for score calculation (to be extracted later)
Related to Phase 1 refactoring plan
2026-01-17 18:06:59 +08:00
hongjianli
8cb82c874a
refactor: define IMiniScoringService interface
...
Phase 1, Step 1.3.1: Extract scoring logic interface
- Define submitScore() method signature
Related to Phase 1 refactoring plan
2026-01-17 18:05:44 +08:00
hongjianli
c9cd4d6e88
refactor: update controller to use MiniAuthService
...
Phase 1, Step 1.2.3: Delegate login to service layer
- Add IMiniAuthService dependency to controller
- Replace 95 lines of business logic with service call
- Controller now only handles HTTP layer
- All tests passing
Related to Phase 1 refactoring plan
2026-01-17 18:04:57 +08:00
hongjianli
070c1054cf
refactor: implement MiniAuthServiceImpl
...
Phase 1, Step 1.2.2: Extract login logic from controller
- Move login business logic to service layer
- Extract helper methods for project retrieval
- Add logout and verifyToken implementations
- Reduce controller responsibility
Related to Phase 1 refactoring plan
2026-01-17 18:01:34 +08:00
hongjianli
b9de322b07
refactor: define IMiniAuthService interface
...
Phase 1, Step 1.2.1: Extract authentication logic interface
- Define login() method signature
- Define logout() method signature
- Define verifyToken() method signature
Related to Phase 1 refactoring plan
2026-01-17 17:58:24 +08:00
hongjianli
f3fe693204
test: add baseline tests for MartialMiniController
...
Phase 1, Step 1.1.1: Document current state before refactoring
- Controller has 1054 lines (God Class anti-pattern)
- Controller has 15 API endpoints
- Controller has 13 dependencies (Fat Controller)
Related to Phase 1 refactoring plan
2026-01-17 17:57:35 +08:00
hongjianli
8caed3ae8a
refactor: Phase 5 - Clean up Orchestrator, remove deprecated methods
...
- Remove deprecated wrapper methods (generateTimeSlots, autoGroupParticipants, etc.)
- Update autoArrange() to call services directly
- Final class size: 288 lines (75% reduction from original 1148 lines)
- All 438 tests passing
Closes #11 - God Class refactoring complete
2026-01-17 00:43:00 +08:00
hongjianli
fbde7b196d
refactor: Phase 4 - Extract ScheduleQueryService from God Class
...
- Create ScheduleQueryService in schedule/query/
- Delegate getUnlockedCompetitions() and getScheduleResult() to new service
- Original class reduced from 502 to 342 lines (70% reduction from original 1148)
- All 438 tests passing
Related to Issue #11
2026-01-17 00:37:47 +08:00
hongjianli
c0f3e4d971
refactor: Phase 3 - Extract VenueAllocationService from God Class
...
- Create VenueAllocationService in schedule/allocation/
- Modify MartialScheduleArrangeServiceImpl to use VenueAllocationService
- Remove validateCapacity, assignVenueAndTimeSlot methods and SlotInfo class
- Original class reduced from 692 to ~500 lines
- All 438 tests passing
Related to Issue #11
2026-01-17 00:15:31 +08:00
hongjianli
017264fd0f
refactor: Phase 2 - Extract ParticipantGroupingService from God Class
...
- Create ScheduleGroupData model class in schedule/model/
- Create ParticipantGroupingService in schedule/grouping/
- Modify MartialScheduleArrangeServiceImpl to use ParticipantGroupingService
- Remove internal ScheduleGroupData class and grouping methods
- All 438 tests passing
Related to Issue #11
2026-01-17 00:03:10 +08:00
hongjianli
596e4a274d
refactor: Phase 1 - Extract TimeSlotGenerator from God Class
...
- Create TimeSlot model class in schedule/model/
- Create TimeSlotGenerator component in schedule/generator/
- Modify MartialScheduleArrangeServiceImpl to use TimeSlotGenerator
- Remove internal TimeSlot class (now standalone)
- Add 11 unit tests for TimeSlotGenerator
- All 438 tests passing
Related to Issue #11
2026-01-16 23:51:55 +08:00
hongjianli and factory-droid[bot]
776e9e289d
Add comprehensive test suite (427 tests)
...
- Google Standard: MartialScoreServiceImplTest, MartialResultServiceImplTest, MartialSchedulePlanServiceImplTest
- Apple Standard: MartialScoreServiceAppleTest, MartialResultServiceAppleTest
- Alibaba Standard: MartialScoreServiceAliTest, MartialResultServiceAliTest
- OpenAI Standard: MartialScoreServiceOpenAITest, MartialResultServiceOpenAITest (Property-Based, Fuzzing, Invariant, Regression, Contract tests)
- Add TEST_PLAN.md documentation
- Update pom.xml with maven-surefire-plugin 3.2.5
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 19:17:17 +08:00
hongjianli and factory-droid[bot]
4ec6ac68ca
feat: docker build with maven cache and docker profile
...
- Add Dockerfile for in-container maven build (offline mode)
- Add application-docker.yml for docker environment
- Add logback-docker.xml for docker logging
- Update docker-compose.yml: use strong passwords, docker profile
- Add full database backup before rebuild
- Add .m2-repo to gitignore
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 17:12:26 +08:00
hongjianli and factory-droid[bot]
8c8161adb3
fix: use strong password for MySQL in docker-compose
...
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-16 16:23:46 +08:00
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
hongjianli
89962c69e6
feat(team): 添加集体编辑功能
2025-12-31 11:51:12 +08:00
hongjianli
45758108a8
fix(team): 修复删除选手后集体信息未同步更新的问题
...
- 删除选手时级联删除集体成员关系
- 集体列表动态计算有效成员数(排除已删除选手)
- 集体详情过滤已删除的选手
2025-12-31 11:37:37 +08:00
hongjianli
19e3d94a33
fix(team): 修复集体列表不显示的问题,设置createUser字段
2025-12-31 11:16:30 +08:00
hongjianli
7fae2f0ff8
fix(competition): 修复赛事详情页面报名人数显示为0的问题
2025-12-31 11:07:14 +08:00
hongjianli
fe5ddfa253
fix(mini): 修复裁判员角色判断逻辑
...
- 修复role和referee_type不一致导致的权限问题
- 裁判员(role=judge)应该只能评分,不能修改
- 主裁判(role=chief_judge)才能修改评分
2025-12-30 18:06:25 +08:00
hongjianli
c7038a5883
feat(team): 添加集体/团队管理功能
...
- 创建martial_team和martial_team_member表
- 添加MartialTeam和MartialTeamMember实体类
- 添加MartialTeamController提供集体CRUD接口
- 支持集体成员关联管理
2025-12-30 18:02:00 +08:00
hongjianli
87a05df04f
fix(registration): 修复我的报名列表信息显示不全问题
...
- 修改list接口返回VO而非Entity
- 添加getListWithRelations方法批量加载关联数据
- 返回赛事名称、地点、时间、项目名称、选手名称等完整信息
- 优化批量查询减少数据库访问次数
2025-12-30 17:43:45 +08:00
hongjianli
b7ad819a29
fix(schedule): 完成编排时允许空分组状态
2025-12-30 12:59:08 +08:00
hongjianli
6db9a1e51d
fix(schedule): 保存草稿时设置time_period默认值
2025-12-30 12:06:31 +08:00
hongjianli
0539152dbb
fix(schedule): 保存草稿时设置默认日期,避免schedule_date为空导致插入失败
2025-12-30 11:53:34 +08:00
hongjianli
c7058b8b07
feat(schedule): 无编排数据时自动从项目和选手表生成初始分组
...
- 修改 getScheduleResult 方法,当没有编排数据时调用 generateInitialScheduleResult
- 新增 generateInitialScheduleResult 方法,从项目和选手表生成初始分组
- CompetitionGroupDTO 添加 projectId 字段
- ParticipantDTO 添加 teamName 字段
- 用户进入编排页面可直接看到选手数据,无需先执行自动编排
2025-12-30 11:10:01 +08:00
hongjianli
16b55adf81
feat(schedule): 添加赛程配置API,支持动态时间段配置
...
- 添加 GET /martial/schedule/config API 暴露 ScheduleConfig
- 返回 morningStartTime, afternoonStartTime 等配置
- 更新 docker-compose.yml 使用 Dockerfile.quick
2025-12-30 10:51:04 +08:00
hongjianli
0b5fc9fb71
feat: improve schedule auto-arrange functionality
...
- Add ScheduleConfig for configurable schedule parameters
- Add updateParticipantCheckInStatus API for exception status persistence
- Use configurable thresholds for group splitting and capacity warning
- Add @Slf4j to MartialScheduleServiceImpl
2025-12-29 15:07:52 +08:00
hongjianli
86e4580e5d
feat: add multi-stage Dockerfile for full build with martial-tool
...
- Add Dockerfile.fullbuild: multi-stage build that compiles martial-tool
- Rename Dockerfile to Dockerfile.quick for quick builds (pre-built jar)
- Update docker-compose.yml to use parent directory context
- Update README with new deployment instructions
2025-12-29 14:34:54 +08:00
hongjianli
47d0b70a9c
docs: 更新README,简化内容并更新域名配置
2025-12-29 14:17:09 +08:00
hongjianli
105e457f7c
docs: README添加数据库迁移文档链接
2025-12-29 14:11:21 +08:00
hongjianli
d583bdc5c8
feat: 集成Flyway数据库迁移工具
...
- 添加Flyway依赖到pom.xml
- 配置application.yml启用Flyway
- 创建迁移脚本目录db/migration
- 添加V1基线脚本和V2项目字段迁移脚本
- 添加DATABASE_MIGRATION.md使用文档
2025-12-29 14:07:27 +08:00
hongjianli
07845f3a4f
fix: 同步martial_project表结构,添加event_type和报名时间字段
2025-12-29 13:53:23 +08:00
hongjianli
ec2382b447
feat: 添加项目报名开始时间和结束时间字段
2025-12-29 12:04:36 +08:00
hongjianli and factory-droid[bot]
bcba649b02
裁判邀请列表添加负责场地字段
...
- MartialJudgeInviteVO: 添加venueName字段
- MartialJudgeInviteMapper.xml: 关联查询场地名称
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-12-29 10:32:28 +08:00
hongjianli
a19baf3907
feat: 添加项目类型(eventType)字段支持
...
- 在MartialProject实体类中添加eventType字段
- 在MartialProjectController中添加eventType查询支持
- 项目类型: 1-套路, 2-散打, 3-器械, 4-对练
2025-12-28 19:02:44 +08:00
hongjianli and factory-droid[bot]
301bb7a227
feat: 项目列表支持模糊查询
...
- 项目名称支持模糊查询
- 分组类别支持模糊查询
- 赛事ID和参赛类型精确匹配
- 添加排序(按sort_order升序,create_time降序)
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-12-28 17:20:10 +08:00
hongjianli and factory-droid[bot]
fdd346b27f
fix: default venue_id to first venue when null or invalid
...
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-12-28 16:20:11 +08:00
hongjianli and factory-droid[bot]
1d5ac896dd
feat: 添加已确认成绩列表API
...
- 新增 /mini/general/confirmed 接口
- MartialResultServiceImpl 添加 getConfirmedGeneralList 方法
- 支持总裁页面同时显示待确认和已确认成绩
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-12-28 16:09:41 +08:00
hongjianli and factory-droid[bot]
aab66f79fe
feat: 添加三级裁判评分系统(裁判员→主裁判→总裁)
...
- 新增总裁(裁判长)角色支持,referee_type=3
- MartialResult实体添加主裁判/总裁确认字段和score_status状态
- MartialJudgeInvite实体添加角色常量和判断方法
- MartialMiniController添加三级确认API和登录角色判断
- MartialResultServiceImpl实现三级确认业务逻辑
- MartialScoreServiceImpl主裁判确认时同步martial_result表
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-12-28 15:49:11 +08:00
hongjianli
491c8db26c
chore: 添加 minio_data 到 gitignore
2025-12-28 13:44:56 +08:00