Skip to content

feat(公交表结构): 删除台账相关存储过程, 增加索引, 增加字段长度 - #61

Merged
xiaorongnie merged 1 commit into
masterfrom
feat/new-versio20260420/nxr
Jul 29, 2026
Merged

feat(公交表结构): 删除台账相关存储过程, 增加索引, 增加字段长度#61
xiaorongnie merged 1 commit into
masterfrom
feat/new-versio20260420/nxr

Conversation

@xiaorongnie

Copy link
Copy Markdown
Contributor

No description provided.

@xiaorongnie
xiaorongnie marked this pull request as ready for review July 29, 2026 02:04
@xiaorongnie xiaorongnie changed the title feat(公交表结构): 删除存储过程, 增加索引, 增加字段长度 feat(公交表结构): 删除台账相关存储过程, 增加索引, 增加字段长度 Jul 29, 2026
@xiaorongnie

xiaorongnie commented Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

PR #61 代码审查报告

1. PR 概述

本次变更针对公交(cbus)产品的初始化表结构脚本 mysql8/initdb/03-cbus-init-table.sql,主要完成三件事:

  • 删除台账相关存储过程:共移除 9 个 procedure_ledger_* 存储过程(日/月维度、车/企业/员工/线路/明细)。
  • 新增索引:在 ledger_daily_carledger_daily_employee 上新增按企业与车辆的复合索引。
  • 扩展字段长度basic_device_type.protocolsystem_av_rtp.node_idsystem_module.pathsystem_module_datav.path 等字段长度增加。
  • 新增列:在 ledger_daily_companyledger_monthly_company 中新增 gps_mileage 字段。

已通过本地校验:

node scripts/check-init-sql.js
# 未发现列数不匹配的 INSERT。

2. 审查结论

总体可接受,但建议在合并前补充迁移脚本,并澄清数据类型不一致问题。


3. 代码质量与风格

  • 正面
    • 移除了大量历史存储过程,显著降低初始化脚本的维护成本和体积(-1525 行)。
    • 新增的 gps_mileage 字段均带有中文注释与默认值,符合现有风格。
    • 索引命名遵循 idx_ 前缀,与现有索引风格一致。
    • 字段长度扩展保守,128/32 属于常见安全值。
  • 待改进
    • gps_mileageledger_daily_company/ledger_monthly_company 中声明为 decimal(11, 3) UNSIGNED,但同表其他里程字段为 decimal(18, 3) 且未使用 UNSIGNED,类型不统一,建议统一或说明原因。

4. 具体建议

位置 建议
ledger_daily_company / ledger_monthly_companygps_mileage 若该字段用于汇总 ledger_daily_car.gps_mileage,建议保持相同类型 decimal(11, 3) UNSIGNED,避免混合精度/符号带来的隐式转换问题。
idx_date_car (company_id, is_deleted, work_date, car_id) is_deleted 作为第二列选择性极低(基本只有 0/1)。建议调整为与 idx_date_route 一致的顺序:company_id, work_date, car_id, is_deleted,以更好支持按日期范围查询。
idx_date_emp (company_id, is_deleted, work_date, emp_id) 同上,建议改为 company_id, work_date, emp_id, is_deleted
删除的 9 个存储过程 确认后端代码(gateway-web / gateway-dispatch 等)已不再 CALL 这些过程。若线上仍有调用,需要配套升级 SQL 删除并迁移逻辑。
字段长度扩展 请确认应用层/前端对 pathnode_idprotocol 的长度校验已同步放宽,否则可能出现插入成功但业务校验失败或截断的情况。

5. 潜在风险

  1. 初始化脚本不作用于已部署实例
    mysql8/initdb/ 仅在全新数据卷首次启动时执行。本次的字段变更、索引新增、存储过程删除不会影响已上线的数据库。若需要同步到现网,必须提供独立的升级 SQL 或 migration 脚本。

  2. 功能回退风险
    删除存储过程后,如果仍有旧代码、报表或定时任务依赖这些过程,业务将直接报错。建议全局搜索 procedure_ledger_ 引用并确认清零。

  3. 索引写放大
    ledger_daily_car / ledger_daily_employee 属于高频写入的日台账表,新增复合索引会增加写入开销和磁盘占用。请根据实际查询收益评估是否值得;若查询条件中 is_deleted 恒为 0,可考虑将其放到索引末尾甚至不加进索引。

  4. 类型不一致导致汇总误差
    ledger_daily_companygps_mileagetotal_mileage/real_mileage 等字段精度/符号不一致,未来做跨字段 SUM/AVG 时可能出现精度截断或隐式转换。


6. 合并前建议 checklist

  • 确认后端/调度代码不再调用被删除的 9 个存储过程。
  • 统一 gps_mileage 字段类型,或与团队确认保持 decimal(11, 3) UNSIGNED 的合理性。
  • 根据实际 SQL 调整 idx_date_car / idx_date_emp 的列顺序,提升索引利用率。
  • 补充现网升级 SQL(ALTER TABLE ... ADD COLUMN/ADD INDEX; DROP PROCEDURE IF EXISTS ...)。
  • 确认 system_module.pathsystem_module_datav.pathsystem_av_rtp.node_id 的应用层长度校验已同步更新。

完成以上检查后,本 PR 可以合并。

@xiaorongnie
xiaorongnie merged commit 8c378f3 into master Jul 29, 2026
2 checks passed
@xiaorongnie
xiaorongnie deleted the feat/new-versio20260420/nxr branch July 29, 2026 03:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants