Commit Graph

30 Commits

Author SHA1 Message Date
kkfluous
67c5f9d281 support mileage batch multi-select
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-18 10:18:35 +08:00
kkfluous
91202bdf71 fix asset module database migration
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
2026-06-17 11:53:39 +08:00
kkfluous
6b7f0eedd9 Revert "fix(mileage): 已到期年度按期末里程统计"
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This reverts commit feb950dd59.
2026-06-03 15:40:13 +08:00
kkfluous
5bb3ceb47a fix(mileage): 交投高里程车辆标红
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-03 15:10:36 +08:00
kkfluous
74d6efe261 Revert "fix(mileage): 区分年度累计里程和计入完成"
This reverts commit 3f0edfaaf5.
2026-06-03 14:53:54 +08:00
kkfluous
a124e31fab Revert "fix(mileage): 未到期年度累计对齐实时监控"
This reverts commit a3dfe7ab8c.
2026-06-03 14:53:54 +08:00
kkfluous
a3dfe7ab8c fix(mileage): 未到期年度累计对齐实时监控
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-03 11:32:50 +08:00
kkfluous
3f0edfaaf5 fix(mileage): 区分年度累计里程和计入完成
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-03 11:18:48 +08:00
kkfluous
feb950dd59 fix(mileage): 已到期年度按期末里程统计
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-03 11:13:40 +08:00
kkfluous
2d82918d73 fix(mileage): 年度考核区间按批次展示
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-02 15:33:08 +08:00
kkfluous
482243e052 feat(mileage): 支持车型按考核年度查看
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2026-06-02 15:30:13 +08:00
kkfluous
69168abdf8 chore(mileage): 粤AGP5681 运营区域改为华东区域
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 15:36:54 +08:00
kkfluous
331ad1a1da fix(mileage): totalKm 当日为空时回填该车 ln_vehicle_day_total_pg 最近一条
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
视图 v_vehicle_daily_stats.total_km 仅当日有 TBOX 记录才有值,
否则原样为 NULL。新增 fetchLatestPgTotalMileageMap 在应用层按车牌
取最近一条非空 total_mileage(queryDateMileage 限定 dates <= 查询日,
保证历史日不取未来值),插入 gpsTotal → latestPgTotal → bizTotal 的
回退链,让 totalKm 显示连续。

MySQL 5.7 无窗口函数,用 INNER JOIN + GROUP BY MAX(dates) 取每车最近一条;
本地 dev 实测 1004 辆车 cache 刷新 ~16s,不再有 SQL 解析错。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:17:16 +08:00
05c99fc57a revert 1357296f28
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
revert fix(mileage): totalKm 当日为空时回填该车 ln_vehicle_day_total_pg 最近一条

视图 v_vehicle_daily_stats.total_km 仅当日有 TBOX 记录才有值,
否则原样为 NULL。新增 fetchLatestPgTotalMileageMap 在应用层按车牌
取最近一条非空 total_mileage(queryDateMileage 限定 dates <= 查询日,
保证历史日不取未来值),插入 gpsTotal → latestPgTotal → bizTotal 的
回退链,让 totalKm 显示连续。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 07:13:16 +00:00
kkfluous
1357296f28 fix(mileage): totalKm 当日为空时回填该车 ln_vehicle_day_total_pg 最近一条
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
视图 v_vehicle_daily_stats.total_km 仅当日有 TBOX 记录才有值,
否则原样为 NULL。新增 fetchLatestPgTotalMileageMap 在应用层按车牌
取最近一条非空 total_mileage(queryDateMileage 限定 dates <= 查询日,
保证历史日不取未来值),插入 gpsTotal → latestPgTotal → bizTotal 的
回退链,让 totalKm 显示连续。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:07:39 +08:00
kkfluous
433a75f9d1 fix(mileage): 7天里程趋势忽略负值脏数据
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
v_vehicle_daily_stats.daily_km 偶发负值(粤A00828F 在 5.1 录得 -82061km),
源于里程表回滚 / 换 GPS 设备。SQL 聚合时把负值置 0,避免一辆脏数据车
拖垮整组的当日趋势柱。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 10:33:25 +08:00
kkfluous
97ac92a0da feat(mileage): 车辆明细弹窗新增时间范围切换、骨架加载与下滑关闭
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 后端 vehicle/:plate/recent 支持 start/end 任意区间,最长 366 天
- 前端弹窗加 segmented control: 近 15 天 / 本月 / 本季度,切换重新加载
- 加载时柱状图与每日明细均显示骨架,区间合计/日均/有数据天 KPI 同步骨架
- 数据回来后柱条与每行进度条带渐入动画
- 顶部加 iOS 风格 drag handle(小白条),按住下滑超过 100px 或大速度触发关闭
- 保留点击背景与 X 按钮两种关闭方式

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 17:14:47 +08:00
kkfluous
7ca8ef24dc feat(mileage): 点击车辆卡片展示近 15 日行驶里程明细
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 后端新增 GET /api/mileage/vehicle/:plate/recent,返回近 N 天 + 今日的每日里程
- 缺失日补全为 dailyKm=0 + isDataSynced=false
- 前端新增 VehicleDetailModal:头部信息、合计/日均/有数据天 KPI、近 N 日柱状图、每日明细列表
- 移动端从底部弹起;缺失日柱条置灰,明细行标注「未对接」
- 卡片点击改为打开弹窗(不再复制车牌)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 16:16:54 +08:00
kkfluous
cab86556f3 feat(mileage): 区域与车牌列表级联,并自动剔除越界车牌
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 后端: 选中 region 时基于该区域车辆重算 filters,车牌列表只展示该区域
- 前端: filterOptions.plates 收窄后自动从已选车牌中剔除不属于新区域的项

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 15:31:12 +08:00
kkfluous
3809e785c1 feat(mileage): 外部三选筛选 + 车牌多选粘贴 + 运营区域 + xlsx 下载
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 外部行改为 批次型号 / 运营区域 / 车牌多选;按部门、按客户移入详情面板
- 车牌多选支持从 Excel 粘贴(换行/逗号/空格分隔),未匹配项显示警告
- 新增运营区域筛选:基于 136 批次区域映射(华东/华南/西南/西北)
- 新增 xlsx 数据下载,导出当前筛选结果(带表头样式与列宽)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 15:19:00 +08:00
kkfluous
d6c31dd2b6 fix: 实时监控累计总里程少算,G7S 数据源 total_km 为 NULL 时用业务库 vehicle_total_mileage 兜底
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 10:22:19 +08:00
kkfluous
9c9d7a3805 feat: 全局客户名称脱敏(首尾保留+中间三个*)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 2-3字: 首字+*** (徐***)
- 4-6字: 首2字+***+末1字 (嘉兴***司)
- 7字+: 首4字+***+末2字 (嘉兴市乍***公司)
- 覆盖所有接口: monitoring, targets, vehicles, weekly-detail

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 20:23:24 +08:00
kkfluous
2575778293 feat: 后端用户认证和权限过滤
- 新增 auth 模块:jumpToken 代理交换、用户信息获取、JWT 签发
- 三级权限:full(所有权限/数智中心/BI-Leader)、department(BI-Leader-Dep)、personal
- 添加 managerId 到车辆数据模型,支持个人级别按 userId 精确过滤
- auth 中间件保护所有 /api/* 端点(跳过 /api/health 和 /api/auth/*)
- 所有路由集成 filterByPermission 权限过滤

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:35:29 +08:00
kkfluous
6dbd36dcd3 refactor: replace mileage monolith with modular route files
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 13:35:58 +08:00
kkfluous
7ec422c13a refactor: create targets route handler 2026-04-02 13:33:14 +08:00
kkfluous
890050ed55 refactor: create trend route handler 2026-04-02 13:33:05 +08:00
kkfluous
ac2a16e7b7 refactor: create monitoring route handler
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 13:32:32 +08:00
kkfluous
459b0400b4 refactor: extract monitoring cache module 2026-04-02 13:31:07 +08:00
kkfluous
1a169feaa6 refactor: extract vehicle-info query module 2026-04-02 13:30:19 +08:00
kkfluous
bc1e0ea32e refactor: extract mileage shared types 2026-04-02 13:30:02 +08:00