Files
martial-master/docs/数据库字段检查报告.md
宅房 f01c5c6a6a
Some checks failed
continuous-integration/drone/push Build is failing
Merge remote-tracking branch 'origin/main'
解决目录重组冲突:
- doc/ → docs/ (文档目录重命名)
- doc/sql/ → database/ (数据库脚本目录重组)
- doc/script/ → scripts/ (脚本目录重组)

保留本地新增的武术比赛系统文件:
- docs/sql/mysql/martial-*.sql (4个数据库脚本)
- docs/后端开发完成报告.md
- docs/数据库字段检查报告.md
- docs/问题修复报告.md

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 12:13:15 +08:00

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_type int (1-身份证,2-护照,3-其他)

问题2: 民族字段缺失 武术比赛通常需要记录民族信息

  • 建议添加: nation varchar(50) - 民族

问题3: 出生日期缺失 只有age字段,但前端可能需要精确的出生日期

  • 建议添加: birth_date date - 出生日期

问题4: 单位类别缺失 前端显示"学校/单位",可能需要区分类型

  • 建议添加: organization_type int (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_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

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

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

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

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

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

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

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脚本。