# 武术比赛管理系统 - 数据库字段检查报告 检查时间: 2025-11-29 检查人: Claude Code ## 检查方法 对比三个前端系统(martial-mini, martial-admin-mini, martial-web)的业务需求,检查数据库表字段是否完整。 --- ## 1. martial_competition (赛事表) ✅ 完整 ### 现有字段 (29个) - ✅ id - 主键 - ✅ competition_name - 赛事名称 - ✅ competition_code - 赛事编码(裁判登录用) - ✅ organizer - 主办单位 - ✅ location - 地区 - ✅ venue - 详细地点 - ✅ registration_start_time - 报名开始时间 - ✅ registration_end_time - 报名结束时间 - ✅ competition_start_time - 比赛开始时间 - ✅ competition_end_time - 比赛结束时间 - ✅ introduction - 赛事简介 - ✅ poster_images - 宣传图片(JSON) - ✅ contact_person - 联系人 - ✅ contact_phone - 联系电话 - ✅ contact_email - 联系邮箱 - ✅ rules - 竞赛规则 - ✅ requirements - 参赛要求 - ✅ awards - 奖项设置 - ✅ regulation_files - 规程文件(JSON) - ✅ total_participants - 报名总人数 - ✅ total_amount - 报名总金额 - ✅ status - 状态 - ✅ BladeX标准字段(8个) ### 前端需求对比 - martial-web/competition/create.vue (4步向导) - ✅ 所有字段齐全 - martial-mini/event-detail.vue - ✅ 所有字段齐全 ### 结论: ✅ 无缺失字段 --- ## 2. martial_athlete (参赛选手表) ⚠️ 需要补充 ### 现有字段 (29个) - ✅ id - ✅ order_id - 订单ID - ✅ competition_id - 赛事ID - ✅ project_id - 项目ID - ✅ player_name - 姓名 - ✅ player_no - 参赛编号 - ✅ gender - 性别 - ✅ age - 年龄 - ✅ id_card - 身份证号 - ✅ contact_phone - 联系电话 - ✅ organization - 所属单位 - ✅ team_name - 队伍名称 - ✅ category - 组别 - ✅ order_num - 出场顺序 - ✅ introduction - 选手简介 - ✅ attachments - 附件(JSON) - ✅ photo_url - 照片 - ✅ registration_status - 报名状态 - ✅ competition_status - 比赛状态 - ✅ total_score - 总分 - ✅ ranking - 排名 - ✅ remark - 备注 - ✅ BladeX标准字段(7个) ### 前端需求对比 - martial-mini/add-player.vue - 需要添加选手 - martial-web/participant/manage.vue - 维护选手信息 ### ⚠️ 发现问题 **问题1: 证件类型缺失** 前端可能需要支持多种证件(身份证、护照等) - 建议添加: `id_card_type` int (1-身份证,2-护照,3-其他) **问题2: 民族字段缺失** 武术比赛通常需要记录民族信息 - 建议添加: `nation` varchar(50) - 民族 **问题3: 出生日期缺失** 只有age字段,但前端可能需要精确的出生日期 - 建议添加: `birth_date` date - 出生日期 **问题4: 单位类别缺失** 前端显示"学校/单位",可能需要区分类型 - 建议添加: `organization_type` int (1-学校,2-协会,3-俱乐部,4-其他) ### 建议SQL ```sql ALTER TABLE martial_athlete ADD COLUMN id_card_type int DEFAULT 1 COMMENT '证件类型(1-身份证,2-护照,3-其他)' AFTER id_card, ADD COLUMN nation varchar(50) DEFAULT NULL COMMENT '民族' AFTER age, ADD COLUMN birth_date date DEFAULT NULL COMMENT '出生日期' AFTER age, ADD COLUMN organization_type int DEFAULT 1 COMMENT '单位类别(1-学校,2-协会,3-俱乐部,4-其他)' AFTER organization; ``` --- ## 3. martial_registration_order (报名订单表) ⚠️ 需要补充 ### 现有字段 (22个) - ✅ id - ✅ order_no - 订单号 - ✅ competition_id - 赛事ID - ✅ user_id - 用户ID - ✅ user_name - 用户名 - ✅ contact_person - 联系人 - ✅ contact_phone - 联系电话 - ✅ organization - 所属单位 - ✅ total_participants - 参赛总人数 - ✅ total_amount - 订单总金额 - ✅ paid_amount - 已支付金额 - ✅ payment_method - 支付方式 - ✅ payment_time - 支付时间 - ✅ status - 状态 - ✅ remark - 备注 - ✅ BladeX标准字段(7个) ### 前端需求对比 - martial-mini/event-register.vue - 3步报名流程 - martial-web/order/list.vue - 订单管理 ### ⚠️ 发现问题 **问题1: 支付交易号缺失** 需要记录第三方支付平台的交易号 - 建议添加: `transaction_no` varchar(100) - 支付交易号 **问题2: 退款信息缺失** status=3表示已退款,但缺少退款详情 - 建议添加: `refund_amount` decimal(10,2) - 退款金额 - 建议添加: `refund_time` datetime - 退款时间 - 建议添加: `refund_reason` varchar(500) - 退款原因 **问题3: 发票信息缺失** 企业单位报名可能需要发票 - 建议添加: `invoice_type` int - 发票类型(0-不需要,1-普通,2-增值税) - 建议添加: `invoice_title` varchar(200) - 发票抬头 - 建议添加: `invoice_tax_no` varchar(50) - 税号 ### 建议SQL ```sql ALTER TABLE martial_registration_order ADD COLUMN transaction_no varchar(100) DEFAULT NULL COMMENT '支付交易号' AFTER payment_time, ADD COLUMN refund_amount decimal(10,2) DEFAULT 0.00 COMMENT '退款金额' AFTER paid_amount, ADD COLUMN refund_time datetime DEFAULT NULL COMMENT '退款时间' AFTER payment_time, ADD COLUMN refund_reason varchar(500) DEFAULT NULL COMMENT '退款原因' AFTER refund_time, ADD COLUMN invoice_type int DEFAULT 0 COMMENT '发票类型(0-不需要,1-普通,2-增值税)' AFTER organization, ADD COLUMN invoice_title varchar(200) DEFAULT NULL COMMENT '发票抬头' AFTER invoice_type, ADD COLUMN invoice_tax_no varchar(50) DEFAULT NULL COMMENT '税号' AFTER invoice_title; ``` --- ## 4. martial_score (评分表) ⚠️ 需要补充 ### 现有字段 (19个) - ✅ id - ✅ competition_id - 赛事ID - ✅ athlete_id - 选手ID - ✅ project_id - 项目ID - ✅ schedule_id - 赛程ID - ✅ judge_id - 裁判ID - ✅ judge_name - 裁判姓名 - ✅ score - 评分 - ✅ deduction_items - 扣分项(JSON) - ✅ note - 备注 - ✅ score_time - 评分时间 - ✅ status - 状态 - ✅ BladeX标准字段(7个) ### 前端需求对比 - martial-admin-mini/score-detail.vue - 评分详情 - martial-web/score/index.vue - 评分管理 ### ⚠️ 发现问题 **问题1: 场地ID缺失** 评分时需要知道是在哪个场地评的 - 建议添加: `venue_id` bigint - 场地ID **问题2: 修改历史缺失** status=2表示已修改,但没有记录原始分数 - 建议添加: `original_score` decimal(10,3) - 原始评分 - 建议添加: `modify_reason` varchar(500) - 修改原因 - 建议添加: `modify_time` datetime - 修改时间 **问题3: IP地址缺失** 安全审计需要 - 建议添加: `ip_address` varchar(50) - 评分IP地址 ### 建议SQL ```sql ALTER TABLE martial_score ADD COLUMN venue_id bigint DEFAULT NULL COMMENT '场地ID' AFTER schedule_id, ADD COLUMN original_score decimal(10,3) DEFAULT NULL COMMENT '原始评分' AFTER score, ADD COLUMN modify_reason varchar(500) DEFAULT NULL COMMENT '修改原因' AFTER note, ADD COLUMN modify_time datetime DEFAULT NULL COMMENT '修改时间' AFTER score_time, ADD COLUMN ip_address varchar(50) DEFAULT NULL COMMENT '评分IP地址' AFTER modify_time, ADD INDEX idx_venue (venue_id); ``` --- ## 5. martial_judge (裁判表) ✅ 完整 ### 现有字段 (18个) - ✅ id - ✅ name - 姓名 - ✅ gender - 性别 - ✅ phone - 手机号 - ✅ id_card - 身份证号 - ✅ referee_type - 裁判类型 - ✅ level - 等级职称 - ✅ specialty - 擅长项目 - ✅ photo_url - 照片 - ✅ remark - 备注 - ✅ status - 状态 - ✅ BladeX标准字段(7个) ### 前端需求对比 - martial-admin-mini/login.vue - 裁判登录 - martial-web/referee/list.vue - 裁判管理 ### 结论: ✅ 无缺失字段 --- ## 6. martial_judge_invite (裁判邀请码表) ⚠️ 需要补充 ### 现有字段 (15个) - ✅ id - ✅ competition_id - 赛事ID - ✅ judge_id - 裁判ID - ✅ invite_code - 邀请码 - ✅ role - 角色 - ✅ venue_id - 场地ID - ✅ projects - 项目(JSON) - ✅ expire_time - 过期时间 - ✅ is_used - 是否已使用 - ✅ use_time - 使用时间 - ✅ status - 状态 - ✅ BladeX标准字段(4个) ### ⚠️ 发现问题 **问题1: 使用设备信息缺失** 需要记录裁判登录的设备信息 - 建议添加: `device_info` varchar(500) - 设备信息 - 建议添加: `login_ip` varchar(50) - 登录IP **问题2: Token缺失** 裁判登录后需要保存token - 建议添加: `access_token` varchar(500) - 访问令牌 - 建议添加: `token_expire_time` datetime - token过期时间 ### 建议SQL ```sql ALTER TABLE martial_judge_invite ADD COLUMN device_info varchar(500) DEFAULT NULL COMMENT '设备信息' AFTER use_time, ADD COLUMN login_ip varchar(50) DEFAULT NULL COMMENT '登录IP' AFTER device_info, ADD COLUMN access_token varchar(500) DEFAULT NULL COMMENT '访问令牌' AFTER login_ip, ADD COLUMN token_expire_time datetime DEFAULT NULL COMMENT 'token过期时间' AFTER access_token; ``` --- ## 7. martial_schedule (赛程编排表) ✅ 基本完整 ### 现有字段 (24个) - ✅ id - ✅ competition_id - 赛事ID - ✅ order_id - 订单ID - ✅ group_title - 分组标题 - ✅ group_code - 分组编码 - ✅ group_type - 分组类型 - ✅ venue_id - 场地ID - ✅ project_id - 项目ID - ✅ schedule_date - 比赛日期 - ✅ time_slot - 时间段 - ✅ start_time - 开始时间 - ✅ end_time - 结束时间 - ✅ participant_count - 参赛数量 - ✅ estimated_duration - 预估时长 - ✅ is_confirmed - 是否已确认 - ✅ status - 状态 - ✅ remark - 备注 - ✅ BladeX标准字段(7个) ### 前端需求对比 - martial-web/schedule/list.vue - 赛程编排 - martial-web/dispatch/list.vue - 赛程调度 ### 结论: ✅ 无缺失字段 --- ## 8. martial_result (成绩表) ⚠️ 需要补充 ### 现有字段 (21个) - ✅ id - ✅ competition_id - 赛事ID - ✅ athlete_id - 选手ID - ✅ project_id - 项目ID - ✅ venue_id - 场地ID - ✅ player_name - 选手姓名 - ✅ team_name - 队伍名称 - ✅ total_score - 总分 - ✅ original_score - 原始总分 - ✅ adjusted_score - 调整后总分 - ✅ adjust_range - 允许调整范围 - ✅ adjust_note - 调整说明 - ✅ ranking - 排名 - ✅ medal - 奖牌 - ✅ is_final - 是否最终成绩 - ✅ publish_time - 发布时间 - ✅ BladeX标准字段(6个) ### ⚠️ 发现问题 **问题1: 去掉最高最低分的记录缺失** 体育比赛常用规则 - 建议添加: `max_score` decimal(10,3) - 最高分 - 建议添加: `min_score` decimal(10,3) - 最低分 - 建议添加: `valid_score_count` int - 有效评分数 **问题2: 难度系数缺失** 某些项目可能有难度系数 - 建议添加: `difficulty_coefficient` decimal(5,2) - 难度系数 - 建议添加: `final_score` decimal(10,3) - 最终得分(总分*系数) ### 建议SQL ```sql ALTER TABLE martial_result ADD COLUMN max_score decimal(10,3) DEFAULT NULL COMMENT '最高分' AFTER total_score, ADD COLUMN min_score decimal(10,3) DEFAULT NULL COMMENT '最低分' AFTER max_score, ADD COLUMN valid_score_count int DEFAULT 0 COMMENT '有效评分数' AFTER min_score, ADD COLUMN difficulty_coefficient decimal(5,2) DEFAULT 1.00 COMMENT '难度系数' AFTER adjusted_score, ADD COLUMN final_score decimal(10,3) DEFAULT NULL COMMENT '最终得分' AFTER difficulty_coefficient; ``` --- ## 9. martial_project (比赛项目表) ⚠️ 需要补充 ### 现有字段 (20个) - ✅ id - ✅ competition_id - 赛事ID - ✅ project_name - 项目名称 - ✅ project_code - 项目编码 - ✅ category - 组别 - ✅ type - 类型 - ✅ min_participants - 最少人数 - ✅ max_participants - 最多人数 - ✅ estimated_duration - 预估时长 - ✅ price - 报名费 - ✅ description - 描述 - ✅ sort_order - 排序 - ✅ status - 状态 - ✅ BladeX标准字段(7个) ### ⚠️ 发现问题 **问题1: 年龄限制缺失** 不同项目可能有年龄要求 - 建议添加: `min_age` int - 最小年龄 - 建议添加: `max_age` int - 最大年龄 **问题2: 性别限制缺失** - 建议添加: `gender_limit` int - 性别限制(0-不限,1-仅男,2-仅女) **问题3: 报名截止时间缺失** 每个项目可能有独立的报名截止时间 - 建议添加: `registration_deadline` datetime - 报名截止时间 ### 建议SQL ```sql ALTER TABLE martial_project ADD COLUMN min_age int DEFAULT NULL COMMENT '最小年龄' AFTER max_participants, ADD COLUMN max_age int DEFAULT NULL COMMENT '最大年龄' AFTER min_age, ADD COLUMN gender_limit int DEFAULT 0 COMMENT '性别限制(0-不限,1-仅男,2-仅女)' AFTER max_age, ADD COLUMN registration_deadline datetime DEFAULT NULL COMMENT '报名截止时间' AFTER price; ``` --- ## 10. martial_venue (场地表) ✅ 完整 ### 现有字段 (12个) - ✅ id - ✅ competition_id - ✅ venue_name - ✅ venue_code - ✅ location - ✅ capacity - ✅ facilities - ✅ status - ✅ BladeX标准字段(7个) ### 结论: ✅ 无缺失字段 --- ## 11. martial_banner (轮播图表) ⚠️ 需要补充 ### 现有字段 (12个) - ✅ id - ✅ title - 标题 - ✅ image_url - 图片URL - ✅ link_url - 跳转链接 - ✅ sort_order - 排序 - ✅ status - 状态 - ✅ BladeX标准字段(7个) ### ⚠️ 发现问题 **问题1: 显示位置缺失** 轮播图可能用于不同位置 - 建议添加: `position` int - 显示位置(1-首页,2-赛事详情,3-其他) **问题2: 有效期缺失** 轮播图可能需要定时上下架 - 建议添加: `start_time` datetime - 开始显示时间 - 建议添加: `end_time` datetime - 结束显示时间 **问题3: 点击统计缺失** - 建议添加: `click_count` int - 点击次数 ### 建议SQL ```sql ALTER TABLE martial_banner ADD COLUMN position int DEFAULT 1 COMMENT '显示位置(1-首页,2-赛事详情,3-其他)' AFTER title, ADD COLUMN start_time datetime DEFAULT NULL COMMENT '开始显示时间' AFTER sort_order, ADD COLUMN end_time datetime DEFAULT NULL COMMENT '结束显示时间' AFTER start_time, ADD COLUMN click_count int DEFAULT 0 COMMENT '点击次数' AFTER end_time; ``` --- ## 12. martial_info_publish (信息发布表) ⚠️ 需要补充 ### 现有字段 (15个) - ✅ id - ✅ competition_id - ✅ title - 标题 - ✅ info_type - 信息类型 - ✅ content - 内容 - ✅ images - 图片 - ✅ publish_time - 发布时间 - ✅ is_published - 是否已发布 - ✅ sort_order - 排序 - ✅ status - 状态 - ✅ BladeX标准字段(6个) ### ⚠️ 发现问题 **问题1: 阅读统计缺失** - 建议添加: `view_count` int - 阅读次数 **问题2: 附件支持缺失** 除了图片,可能需要上传PDF等文件 - 建议添加: `attachments` varchar(1000) - 附件(JSON) **问题3: 发布人信息缺失** - 建议添加: `publisher_name` varchar(50) - 发布人姓名 ### 建议SQL ```sql ALTER TABLE martial_info_publish ADD COLUMN view_count int DEFAULT 0 COMMENT '阅读次数' AFTER sort_order, ADD COLUMN attachments varchar(1000) DEFAULT NULL COMMENT '附件(JSON)' AFTER images, ADD COLUMN publisher_name varchar(50) DEFAULT NULL COMMENT '发布人姓名' AFTER publish_time; ``` --- ## 13. martial_live_update (比赛实况表) ✅ 基本完整 ### 现有字段 (15个) - ✅ id - ✅ competition_id - ✅ schedule_id - ✅ athlete_id - ✅ update_type - 实况类型 - ✅ title - 标题 - ✅ content - 内容 - ✅ images - 图片 - ✅ score_info - 比分信息 - ✅ update_time - 更新时间 - ✅ sort_order - 排序 - ✅ BladeX标准字段(5个) ### 结论: ✅ 无缺失字段 --- ## 14. martial_activity_schedule (活动日程表) ✅ 完整 ### 现有字段 (15个) - ✅ id - ✅ competition_id - ✅ schedule_date - ✅ schedule_time - ✅ event_name - ✅ venue - ✅ description - ✅ remark - ✅ sort_order - ✅ status - ✅ BladeX标准字段(6个) ### 结论: ✅ 无缺失字段 --- ## 15. martial_deduction_item (扣分项表) ✅ 完整 ### 现有字段 (14个) - ✅ id - ✅ item_name - ✅ item_code - ✅ deduction_point - ✅ category - ✅ applicable_projects - ✅ description - ✅ sort_order - ✅ status - ✅ BladeX标准字段(6个) ### 结论: ✅ 无缺失字段 --- ## 16. martial_schedule_athlete (选手赛程关联表) ✅ 完整 ### 现有字段 (12个) - ✅ id - ✅ schedule_id - ✅ athlete_id - ✅ competition_id - ✅ order_num - ✅ is_completed - ✅ is_refereed - ✅ BladeX标准字段(6个) ### 结论: ✅ 无缺失字段 --- ## 总结 ### ✅ 完整的表 (9个) 1. martial_competition 2. martial_judge 3. martial_schedule 4. martial_venue 5. martial_live_update 6. martial_activity_schedule 7. martial_deduction_item 8. martial_schedule_athlete ### ⚠️ 需要补充的表 (7个) 1. martial_athlete - 建议添加4个字段 2. martial_registration_order - 建议添加7个字段 3. martial_score - 建议添加5个字段 4. martial_result - 建议添加5个字段 5. martial_project - 建议添加4个字段 6. martial_banner - 建议添加4个字段 7. martial_info_publish - 建议添加3个字段 8. martial_judge_invite - 建议添加4个字段 ### 统计 - **总表数**: 16个 - **完整表**: 8个 (50%) - **需补充表**: 8个 (50%) - **建议新增字段总数**: 36个 ### 优先级建议 #### 🔴 高优先级(必须添加) 1. **martial_score** - 添加venue_id(评分必须知道场地) 2. **martial_registration_order** - 添加transaction_no(支付必须有交易号) 3. **martial_athlete** - 添加birth_date(年龄验证需要) #### 🟡 中优先级(建议添加) 1. **martial_result** - 添加max_score, min_score(去掉最高最低分规则) 2. **martial_project** - 添加age/gender限制(报名验证需要) 3. **martial_judge_invite** - 添加token相关字段(登录认证需要) #### 🟢 低优先级(可选添加) 1. **martial_banner** - 添加统计字段 2. **martial_info_publish** - 添加阅读统计 3. **martial_athlete** - 添加民族等非必需字段 --- ## 完整修复SQL 见下一部分的完整SQL脚本。