17 KiB
17 KiB
武术比赛管理系统 - 数据库字段检查报告
检查时间: 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_typeint (1-身份证,2-护照,3-其他)
问题2: 民族字段缺失 武术比赛通常需要记录民族信息
- 建议添加:
nationvarchar(50) - 民族
问题3: 出生日期缺失 只有age字段,但前端可能需要精确的出生日期
- 建议添加:
birth_datedate - 出生日期
问题4: 单位类别缺失 前端显示"学校/单位",可能需要区分类型
- 建议添加:
organization_typeint (1-学校,2-协会,3-俱乐部,4-其他)
建议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_novarchar(100) - 支付交易号
问题2: 退款信息缺失 status=3表示已退款,但缺少退款详情
- 建议添加:
refund_amountdecimal(10,2) - 退款金额 - 建议添加:
refund_timedatetime - 退款时间 - 建议添加:
refund_reasonvarchar(500) - 退款原因
问题3: 发票信息缺失 企业单位报名可能需要发票
- 建议添加:
invoice_typeint - 发票类型(0-不需要,1-普通,2-增值税) - 建议添加:
invoice_titlevarchar(200) - 发票抬头 - 建议添加:
invoice_tax_novarchar(50) - 税号
建议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_idbigint - 场地ID
问题2: 修改历史缺失 status=2表示已修改,但没有记录原始分数
- 建议添加:
original_scoredecimal(10,3) - 原始评分 - 建议添加:
modify_reasonvarchar(500) - 修改原因 - 建议添加:
modify_timedatetime - 修改时间
问题3: IP地址缺失 安全审计需要
- 建议添加:
ip_addressvarchar(50) - 评分IP地址
建议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_infovarchar(500) - 设备信息 - 建议添加:
login_ipvarchar(50) - 登录IP
问题2: Token缺失 裁判登录后需要保存token
- 建议添加:
access_tokenvarchar(500) - 访问令牌 - 建议添加:
token_expire_timedatetime - token过期时间
建议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_scoredecimal(10,3) - 最高分 - 建议添加:
min_scoredecimal(10,3) - 最低分 - 建议添加:
valid_score_countint - 有效评分数
问题2: 难度系数缺失 某些项目可能有难度系数
- 建议添加:
difficulty_coefficientdecimal(5,2) - 难度系数 - 建议添加:
final_scoredecimal(10,3) - 最终得分(总分*系数)
建议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_ageint - 最小年龄 - 建议添加:
max_ageint - 最大年龄
问题2: 性别限制缺失
- 建议添加:
gender_limitint - 性别限制(0-不限,1-仅男,2-仅女)
问题3: 报名截止时间缺失 每个项目可能有独立的报名截止时间
- 建议添加:
registration_deadlinedatetime - 报名截止时间
建议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: 显示位置缺失 轮播图可能用于不同位置
- 建议添加:
positionint - 显示位置(1-首页,2-赛事详情,3-其他)
问题2: 有效期缺失 轮播图可能需要定时上下架
- 建议添加:
start_timedatetime - 开始显示时间 - 建议添加:
end_timedatetime - 结束显示时间
问题3: 点击统计缺失
- 建议添加:
click_countint - 点击次数
建议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_countint - 阅读次数
问题2: 附件支持缺失 除了图片,可能需要上传PDF等文件
- 建议添加:
attachmentsvarchar(1000) - 附件(JSON)
问题3: 发布人信息缺失
- 建议添加:
publisher_namevarchar(50) - 发布人姓名
建议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个)
- martial_competition
- martial_judge
- martial_schedule
- martial_venue
- martial_live_update
- martial_activity_schedule
- martial_deduction_item
- martial_schedule_athlete
⚠️ 需要补充的表 (7个)
- martial_athlete - 建议添加4个字段
- martial_registration_order - 建议添加7个字段
- martial_score - 建议添加5个字段
- martial_result - 建议添加5个字段
- martial_project - 建议添加4个字段
- martial_banner - 建议添加4个字段
- martial_info_publish - 建议添加3个字段
- martial_judge_invite - 建议添加4个字段
统计
- 总表数: 16个
- 完整表: 8个 (50%)
- 需补充表: 8个 (50%)
- 建议新增字段总数: 36个
优先级建议
🔴 高优先级(必须添加)
- martial_score - 添加venue_id(评分必须知道场地)
- martial_registration_order - 添加transaction_no(支付必须有交易号)
- martial_athlete - 添加birth_date(年龄验证需要)
🟡 中优先级(建议添加)
- martial_result - 添加max_score, min_score(去掉最高最低分规则)
- martial_project - 添加age/gender限制(报名验证需要)
- martial_judge_invite - 添加token相关字段(登录认证需要)
🟢 低优先级(可选添加)
- martial_banner - 添加统计字段
- martial_info_publish - 添加阅读统计
- martial_athlete - 添加民族等非必需字段
完整修复SQL
见下一部分的完整SQL脚本。