shishengliang
|
fd514177c6
|
ui: remove footer hints and floating feedback entry points
|
2026-09-23 18:35:31 +08:00 |
|
shishengliang
|
3d4749f28f
|
fix(assets): restore classic UI while retaining inventory subsets and AI
ci/woodpecker/push/woodpecker Pipeline was successful
|
2026-09-23 14:44:12 +08:00 |
|
shishengliang
|
822aabf2ca
|
feat(assets): migrate asset views and reconcile inventory drilldowns
|
2026-09-23 14:16:22 +08:00 |
|
shishengliang
|
6ea1b3d5dd
|
revert: restore v1.1.14 (37a9f303)
ci/woodpecker/push/woodpecker Pipeline failed
|
2026-09-16 09:29:30 +08:00 |
|
shishengliang
|
7c8e886663
|
fix(energy): 无车牌或未关联羚牛车辆的订单不再计入待核对
待核对原先只看「未核对 + 期初之后」,会把没有核对对象的流水也算进
待核对笔数与金额,虚高 KPI 并污染下钻列表。
在 unverified 过滤条件里补两条限定:
- NULLIF(TRIM(license_plate), '') IS NOT NULL:无车牌无核对对象
- COALESCE(vehicle_id, 0) <> 0:vehicle_id 为 NULL/0 即未关联羚牛车辆库
条件加在 buildFilterClauses 的 unverified 分支,汇总 KPI 与下钻共用,
因此两处口径自动一致;all / verified 不受影响。下钻弹窗提示同步说明口径。
|
2026-09-11 11:26:55 +08:00 |
|
shishengliang
|
c4e2c03348
|
fix(energy): 待核对上线期初改为 2026-01-01,并统一前后端口径
待核对订单的起算日原先硬编码为 2026-05-01,散落在后端 SQL、看板诊断卡
和下钻提示三处,改一处就会与另两处口径不一致。
- 新增 shared/hydrogen-verify.ts 的 HYDROGEN_VERIFY_START_DATE 作为唯一来源
- repository 的 unverified 过滤条件改为引用该常量,起算日提前到 2026-01-01
- 看板桌面/移动诊断卡与待核对下钻提示同步显示新日期
- 契约测试锁定字面量,防止日期被无意改动
仅影响 verifyScope=unverified;all / verified 口径不变。
|
2026-09-11 11:17:38 +08:00 |
|
dsh-agent
|
507bc90ed2
|
refactor(stage5): 合并重复实现,移除失效的演示能力
Excel 导出(原先 4 份各自拼装 workbook)
- 新增 src/shared/xlsx.ts 作为唯一实现:文件名统一 .xlsx、sheet 名截断到 31 字符,
对外提供 buildAoaSheet / buildJsonSheet / writeWorkbook / exportAoaSheet / exportJsonSheet。
只收敛"组装与写出"这一层,各调用方仍自行决定列宽、冻结与数字格式,导出样式不变。
- 迁移 assets(内联 json_to_sheet + writeFile)、mileage/xlsx-export、
hydrogen 的两份 helper(prototype-download.ts 与 download-xls.js,均已删除)。
高德地图(原先 2 份近乎逐行复制)
- 新增 src/shared/amap.ts:SDK 版本、插件列表、安全码注入、底图参数、
控件位置与热力图色带只在此处定义;两个画布只保留各自的半径/透明度。
- 图例渐变条原先把同一组色值又写了一遍,改为复用 shared 的常量,图例与地图不会漂移。
数值格式化
- 两个下钻视图各自复制了同样的 formatNumber/format(共 42 处调用),
统一到 hydrogen/model/display-format.ts 的 formatFixed;默认路径与既有行为逐字一致。
- 原 display-format.ts 里的 finiteNumber/formatNumber/formatScaled 无任何生产调用方,
只被自己的测试引用;改为 formatFixed + blankForMissing 显式选项,
既保留了"真零 vs 不可用"的区分能力,也不再留无人使用的导出。测试同步重写。
失效的演示能力
- Blur / DemoModeProvider 恒为 enabled=false,等于永久 no-op:
移除 13 个文件里 50 处 <Blur> 包裹(渲染结果不变)、删除 components/Blur.tsx
与 Shell 中的 Provider,调用方直接渲染原表达式。
未做(刻意)
- src/lib/cn.ts 不引入 tailwind-merge:全仓只有 2 处调用,不值得新增传递依赖。已在文档说明。
架构守护新增 2 条:只有 shared/amap.ts 可加载高德 SDK;
modules/** 不得再出现 book_new / book_append_sheet / writeFile(。
lint / test(137) / build 全绿,可达性仍为 0 未引用文件。
|
2026-09-11 10:28:32 +08:00 |
|
dsh-agent
|
5d14a28b0f
|
refactor(stage6): 去掉热力图写死的默认区间与线上文件的演示数据
热力图默认区间
- 新增 src/shared/date-range.ts(近 N 天滚动窗口,按本地自然日)。
- 前端两个热力图与后端两个 query 模型原先都把默认区间写死为
2026-01-01 ~ 2026-07-13,会随时间永久指向一段历史数据;
现改为"近 30 天"滚动,并把 now 作为可注入参数以便测试。
- 两个 model 测试改为注入固定时钟并断言滚动窗口,不再硬编码日期。
氢能看板去演示数据(board/EnergyBiBoardApp.tsx,6554 -> 3765 行)
- 取消线上路径的 mock 兜底:省份下拉、站点汇总表、客户费用汇总表、
区域排行在 overview 未就绪时显示空,而不是假的 25 个站点 / Top30 账单。
- 删除已确认"零渲染点"的死代码(用 TypeScript AST 精确定位声明范围,
避免手工推断括号边界):
KpiDrillModal / CustomerBillDrillModal / StationBillDrillModal /
DrillPeriodControls / getYearTimeRange / getDrillTimeRange /
MOCK_STATION_SUMMARY_LIST / MOCK_CUSTOMER_SUMMARY_LIST
这些组件内含大量写死的 2026-08-08 快照日期与假流水,均不可达。
线上 KPI 下钻走的是 PrototypeDrillModal(真实 API)。
- 单站日报"最后更新时间"初值不再用伪造时间戳,改为与接口空态一致的文案。
注:本次未改动任何 DOM 结构与 CSS 类名;删除的均为不可达分支。
lint / test(134) / build 全绿。
|
2026-09-11 10:23:31 +08:00 |
|
dsh-agent
|
b28ca49491
|
refactor(stage7): 后端目录分层、架构守护测试与文档
后端目录
- db/:mysql / hydrogen / heatmap 连接与氢能只读 SQL 守卫收拢到一处。
- middleware/:auth(JWT → 注入 user)与 read-only 归位。
- 相关测试随文件移动(middleware/read-only.test.ts、db/hydrogen-read-only.test.ts)。
import 改写由一次性 codemod 完成,未改变任何逻辑。
架构守护
- 新增 src/architecture.test.ts,断言 6 条分层铁律:
server 不依赖 modules、前端不依赖 server、shared 为叶子层、
无 vendor 引用、model.ts 不依赖 react、@ts-nocheck 仅限已登记的原型快照。
豁免清单只减不增。
测试基建
- npm test 的 glob 同时匹配 .test.ts 与 .test.tsx(此前 .tsx 测试会被静默漏掉)。
文档
- 新增根 README.md:入口、快速开始、命令、目录、部署注意事项
(JWT_SECRET 必须注入且 >=32 字符,否则拒绝启动)。
- 新增 docs/ARCHITECTURE.md:依赖方向、6 条硬规则、业务域形状、
中间件顺序、新增模块步骤,以及"已知未尽事项"的诚实清单。
lint / test(134) / build 全绿。
|
2026-09-11 10:20:47 +08:00 |
|
dsh-agent
|
680c7e0662
|
refactor(stage3): 下线 5 个无调用方的 legacy 氢能接口
先确认调用方再删:/hydrogen/station-board 被单站日报页面(StationDailyApp /
StationDailyDetailView)实际使用,必须保留;其余 5 个确认零调用方。
- 删服务端路由 hydrogen-overview / -overview-detail / -daily / -daily-detail /
-settlement(约 1,080 行),energy/index.ts 保留原有注册顺序语义。
- 删客户端对应请求函数与类型:api.ts 由 202 行精简为 74 行;
types.ts 由 291 行精简为 112 行(只保留 StationBoard / Electric / ETC 闭包)。
- 顺带修正命名:HydrogenDailyQuery -> EnergyRangeQuery(它服务于电能按月接口)。
- routes.test.ts 同步收敛:删除 settlement / overview 两个已下线接口的测试,
'四个处理器' 改为只覆盖电能;路由顺序断言更新为现存 9 条。
电能 SQL 指纹沿用原值,证明取数口径未变。
测试 131 -> 128(删掉的 3 个用例覆盖的是已下线接口)。lint / test / build 全绿。
|
2026-09-11 10:16:43 +08:00 |
|
dsh-agent
|
7556dbcebc
|
refactor(stage2): 生产代码移出 src/vendor,氢能收敛为分层 feature
src/vendor 语义是'第三方/参考',却装着线上氢能看板并反向 import
src/modules,依赖方向倒挂。本次把生产代码归位并建立氢能分层:
src/modules/energy/hydrogen/
index.tsx 导航入口(原 HydrogenModule.tsx)
api.ts types.ts HTTP 与 DTO
dev-mock-api.ts 仅 dev 的 vite 插件(仍由 vite.config.ts 引用)
model/ 纯逻辑(format / bearing-labels / daily-detail-format)
board/ 经营看板 UI(原 vendor energy-h2-bi-board)
station-daily/ 单站日报 UI(原 vendor energy-h2-station-daily)
drill/ 下钻弹层 UI(原 hydrogen-bi-v2 的 UI 部分)
common/ 工具与共享组件(原 vendor common + prototype-download)
fonts/ JetBrains Mono(原 vendor resources/design-system)
- UI 与 CSS 逐字节保留,仅移动位置与改写相对 import。
- 删除自挂载原型入口后遗留的 2 个 annotation-source.json。
- vite.config.ts 与 tsconfig 的路径/exclude 同步清理。
- independent-entry.test.ts 不再硬编码路径,改为断言'两个入口解析到同一文件'。
导入改写用一次性 codemod 完成(按旧位置解析、按新位置重写),
lint / test(131) / build 全绿,可达性分析仍为 0 未引用文件。
|
2026-09-11 10:14:37 +08:00 |
|
dsh-agent
|
3daa9808ce
|
refactor(stage1): 删除已证实无引用的死代码
按 import 图可达性分析(从 main.tsx / server index+local / vite.config 出发)
删除 0 引用的文件,删除后可达性分析 UNREACHABLE 归零。
- 删旧氢能实现:PrototypeBoard / HydrogenBiV2App / prototype-adapter /
prototype-source 全部 / HydrogenView+Overview+Daily+Settlement+BoardChrome+
StationBoard / hydrogen-overview / hydrogen-daily
- 删死 CSS 4 个(约 12k 行)、删死 vendor 残留(自挂载 index.tsx、AccessGate、SdDatePicker)
- 删 server/mileage-db.ts(含硬编码凭据的死模块)
- DailyRangeControls:移除从未被传入的 vehicleScope/onVehicleScopeChange 死分支
- tsconfig:移除指向已删除/不存在路径的 exclude
测试 146 -> 131(删掉的 3 个测试文件覆盖的是被删的死代码)。
lint / test / build 全绿。
|
2026-09-11 10:11:33 +08:00 |
|
 kfluousandHiFox Agent
|
89dca5c5a4
|
feat(energy): rotate phone fullscreen drill tables for wider viewing
ci/woodpecker/push/woodpecker Pipeline was successful
Co-authored-by: HiFox Agent <agents-noreply@hifox.com>
|
2026-09-05 18:42:57 +08:00 |
|
 kfluousandHiFox Agent
|
df259fc12b
|
feat(energy): improve hydrogen drill workspace and verification cutoff
Co-authored-by: HiFox Agent <agents-noreply@hifox.com>
|
2026-09-05 18:04:33 +08:00 |
|
 kfluousandHiFox Agent
|
a177781fe7
|
feat(energy): integrate self-operated station customers and receipts
ci/woodpecker/push/woodpecker Pipeline was canceled
Co-authored-by: HiFox Agent <agents-noreply@hifox.com>
|
2026-09-05 17:03:15 +08:00 |
|
 kfluousandHiFox Agent
|
98efde3f75
|
fix(energy): checkpoint validated drill pagination and read-only preview
Co-authored-by: HiFox Agent <agents-noreply@hifox.com>
|
2026-09-05 15:36:09 +08:00 |
|
 kfluousandHiFox Agent
|
6c91a6694a
|
fix(energy): deliver prototype-aligned hydrogen board and acceptance fixes
ci/woodpecker/push/woodpecker Pipeline was successful
Co-authored-by: HiFox Agent <agents-noreply@hifox.com>
|
2026-09-03 22:27:23 +08:00 |
|
kkfluous
|
62efef0ab9
|
feat(energy): rebuild hydrogen BI board and drill-through
ci/woodpecker/push/woodpecker Pipeline was successful
|
2026-08-20 13:59:03 +08:00 |
|
kkfluous
|
06fe75b4c7
|
refactor: modularize application domains
|
2026-08-13 12:03:34 +08:00 |
|
lingniu
|
a558db5795
|
Polish mobile BI filters and summaries
ci/woodpecker/push/woodpecker Pipeline was successful
|
2026-06-27 22:43:43 +08:00 |
|
lingniu
|
b0caa5afcb
|
feat: polish BI dashboards and bump version
ci/woodpecker/push/woodpecker Pipeline was successful
|
2026-06-27 21:59:33 +08:00 |
|
lnljyang
|
e7ba5315e1
|
拆分菜单 通过url区分访问
ci/woodpecker/push/woodpecker Pipeline was successful
|
2026-05-14 17:44:04 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
f06b0d21eb
|
perf(energy): SWR 缓存 + 自调度刷新,氢能总览 6s → 13ms
ci/woodpecker/push/woodpecker Pipeline was successful
接口侧:
- cache.ts 改为 stale-while-revalidate:每个 key 自调度,TTL 到期前 5s 后台刷新,用户永远命中热缓存
- 闲置 10 分钟后停止调度,避免空跑
- loader 失败保留旧值 + 10s 后退避重试
- 所有 4 个端点支持 ?force=1 强制绕过缓存
前端 HydrogenOverview:
- 顶部加 RefreshCw 按钮(强刷绕过缓存),带旋转动画
- 显示"更新于 X 秒前"相对时间
- 刷新中:顶部 0.5px 流光进度条,不替换内容、不闪烁
- 60s 静默自动刷新(命中后端热缓存)
实测:cold 6.1s → 命中 13ms(470× 提速)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 17:43:24 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
6ad4b5e2a4
|
feat(energy): 氢能总览补全维度(5KPI+收支+客户/加氢站全量+年份切换)
ci/woodpecker/push/woodpecker Pipeline was successful
按 BI 页面 (https://bi.lnh2e.com/lingniu/decision/link/0iqP) 完整还原:
- 5 张 KPI:累计加氢量 / 累计加氢费 / 时享加氢获利 / 本月加氢 / 本日加氢
- 月度收支对比柱图:成本支出 vs 客户收入双柱
- 加氢站加氢汇总(全量 55 站):加氢量+占比+氢费收入+收入占比,进度条
- 客户账单 Top 30:承担方 / 加氢量 / 成本支出 / 应收
- 年份切换(2025/2026),全量数据按选定年份重算
- 关键修正:用 cost_type 区分客户单/我司单(cost_type=2 客户单,cost_type=3 我司单),获利口径与 BI 对齐
后端 /hydrogen/overview 重写:
- 增加 customers/stations/availableYears/year 字段
- KPI 含 yearProfit/monthProfit/todayProfit
- monthly 含 fee/revenue/profit
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 16:43:05 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
ad8ec50038
|
refactor(energy): 氢能总览参照 BI 重构 + 月度趋势 + 高密度 KPI
ci/woodpecker/push/woodpecker Pipeline was successful
参考 https://bi.lnh2e.com/lingniu/decision/link/0iqP 重新设计:
- 4 张高密度 KPI 卡:累计加氢量 / 累计加氢费 / 本月加氢 / 本日加氢
每张含主指标 + 2 行明细(我司/客户、加氢费/占比)
- 新增年内月度加氢量柱图(缺失月份补 0)
- 数字格式化:万元/亿元/T 单位自动切换,tabular-nums 对齐
- 后端 /hydrogen/overview 增加 monthly 字段
- 骨架屏同步更新
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:54:35 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
dc6f541c8b
|
fix(energy): 桌面 sticky 失效 —— overflow:hidden 限定到移动端横屏
ci/woodpecker/push/woodpecker Pipeline was successful
原因:父容器一直挂着 landscape:overflow-hidden,意图是手机横屏全屏
体验。但 Tailwind 的 landscape: 是纯方向匹配(含桌面横屏显示器),
所以桌面也命中 overflow:hidden,sticky 完全失效,滚动时头部 tab
全部消失,看起来像「半截被遮挡」。
修复:把 landscape: 修饰符改为 max-md:landscape: ,仅在移动端
(< 768px)+ 横屏时生效。桌面恢复正常 overflow:visible,sticky
头部能稳稳停在顶部。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:42:32 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
034654265c
|
style(energy): sticky 头部底部缓冲 pb-2 → pb-4
ci/woodpecker/push/woodpecker Pipeline was successful
不再尝试把日期速选并入 sticky 头部(之前的方案撤回)。
仅增加一点底部 padding 当作缓冲,保持简洁。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:37:49 +08:00 |
|
kkfluous
|
5958bb581e
|
Revert "fix(energy): 日期速选并入 sticky 头部,避免滚动时被遮挡"
This reverts commit 4153f329b8.
|
2026-04-30 15:37:17 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
4153f329b8
|
fix(energy): 日期速选并入 sticky 头部,避免滚动时被遮挡
ci/woodpecker/push/woodpecker Pipeline was successful
之前「本周/本月/近 15 天」放在 HydrogenDaily/ElectricDaily 的
内容区第一行,sticky 头部独占顶部。滚动后这一行会从 sticky
头部下方钻过去,露出半截,看起来像被切。
修复:把日期速选行也放进 sticky 头部白卡里:
- EnergyModule 持有 hydroPick / electricPick state
- 头部第三行(border-t 分割)渲染速选按钮,仅 daily 模式显示
- HydrogenView/ElectricView/ElectricDaily/HydrogenDaily 改为
通过 pick prop 接收,组件内不再 useState
现在头部「Top Tab + Sub Tab + 日期速选」是同一张白卡,
滚动时整体一起 sticky,不再有半截遮挡。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:34:41 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
ee981639eb
|
fix(energy): sticky 头部不再半透明,避免快捷选按钮"半截露脸"+ 文案改「每日加氢量」
ci/woodpecker/push/woodpecker Pipeline was successful
问题 1:sticky 头部 bg-[#F8F9FB]/85 backdrop-blur-md 半透明,
下方「本周/本月/近15天」快捷选按钮在滚动时透过 sticky 条隐约可见,
看起来像被遮罩切掉一半,效果差。
修复:把头部背景改为不透明页面色 bg-[#F8F9FB],去掉 backdrop-blur,
加上一条很淡的下投影 shadow(仅在头部下边缘)作为分割线,
既不再透出后面的内容,也保留了一点层次感。
问题 2:氢能 daily 图表标题「时段每日加氢量」→「每日加氢量」更简洁。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:28:23 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
fe70ec389b
|
refactor(energy): 电能整体页面对齐氢能:每日 / 总览 子 tab 切换
ci/woodpecker/push/woodpecker Pipeline was successful
- ElectricView 改为受控组件接收 sub prop(与 HydrogenView 对齐)
- EnergyModule sticky 头部统一显示 sub-tabs:氢能、电能都给 每日 / 总览
ETC 仍不显示子 tab(建设中页)
- 共享 sub state 抽 helper:activeTab 切换时自动用对应的 sub
- 龙王路停车场充电站信息条移入 ElectricOverview 顶部(同氢能"数据自...")
进入电能默认显示「每日」(与氢能一致),切换「总览」看 KPI + 柱图
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:22:02 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
c3b463d9ca
|
feat(energy): 外部车辆 tab 暂时显示「数据未就绪」占位
ci/woodpecker/push/woodpecker Pipeline was successful
新系统的外部车辆数据尚未接通,按零填充会显示一长串 0,体验差。
当 customer=external 且全期总量为 0 时:
- 隐藏柱图与明细表
- 显示「外部车辆 · 数据未就绪」友好占位
(Plug 图标 + 蓝色脉冲点 + 文案「新系统的外部车辆 X 数据还在准备中」)
氢能/电能 daily 都加。一旦后端接通真实外部数据,totalKg/totalKwh > 0,
占位自动消失,恢复正常表格视图。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:18:14 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
f2acb73033
|
style(energy): 加氢站单价固定显示在站名下一行
ci/woodpecker/push/woodpecker Pipeline was successful
之前 mobile 用 inline-flex flex-wrap 让单价跟在站名后,空间不够才换行。
统一改为站名独占第一行(whitespace-nowrap),单价 amber 徽章固定在
第二行(mt-1),结构更稳定一眼能看到。
行整体改 items-start 顶部对齐。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:15:07 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
015ff9bc7e
|
fix(energy): 站名长名称不再换行 + 「羚牛/外部」改为「羚牛车辆/外部车辆」
ci/woodpecker/push/woodpecker Pipeline was successful
问题 1:广州新锋交通联新加氢站 等长名称在右侧空间足够时仍折行
- mobile 列宽过宽:120px (kg) + 88px (chainPct) 占去 232px
- 子行 pl-9 缩进 (36px) 也吃掉空间
修复:
- mobile 列宽收紧 84/80,gap 缩到 2,子行缩进 pl-6
- 名字 + 单价徽章改为 inline-flex(whitespace-nowrap)
名字一行写完,单价徽章紧跟其后;空间不够时单价徽章自动换到下一行
- desktop 列宽 140/120/104(之前 140/140/120)
问题 2:氢/电 daily 客户类型 segmented control
「羚牛」→「羚牛车辆」,「外部」→「外部车辆」更明确
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:11:19 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
d24ce55a59
|
fix(energy): 顶部双 sticky 间隙泄露 + 加氢站名单价完整显示
ci/woodpecker/push/woodpecker Pipeline was successful
问题 1:原本「氢能/电能/ETC」与「每日/总览」是两个独立的 sticky
元素,分别 top:0 / top:[58px],中间 gap-3 +位置不精确导致滚动时
图表内容从 14px 缝隙里穿过。
修复:
- 把 HydrogenView 内部的 sub-tab 状态提到 EnergyModule
- top tab + 子 tab 合并到「同一张白色 rounded-2xl 卡片」里,无内部间隙
- 外层 sticky 容器 frosted glass:bg-[#F8F9FB]/85 + backdrop-blur-md
-mx -mt 扩到页面边,消除左右上的微缝
- HydrogenView 改为受控组件(接收 sub prop)
问题 2:站点行 mobile 上 name + ' · 价格' 共用一格还 truncate,
导致长名称(广州新锋交通联新…/上海浦江加氢站…)截断、单价不可见。
修复:
- 行改为「站名换行 + 下方单价 chip」纵向排列
- 单价用 amber 小徽章「单价 X 元/Kg」,不再 inline 跟着名字
- name 用 break-words 允许折行,items-start 顶部对齐
- 单价为 0(免费/赠送)时不显示徽章,desktop 列里显示「—」
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 15:08:22 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
e0183986ee
|
feat(energy): 氢/电统一时间速选为「本周/本月/近15天」+ 缺失日补 0
ci/woodpecker/push/woodpecker Pipeline was successful
- 后端 Range 类型精简到 thisWeek / thisMonth / last15
rangeClause 同步精简;删除 today / thisQuarter / last7 / last30 分支
- 新增 enumerateDates(range):列出 range 内全部日期,用于补零
- /hydrogen/daily:用 enumerateDates 补齐缺失日期 totalKg=0、stations=[]
补零后基于完整日期序列重算环比(0→上一日有值时显示 -100%)
- /electric/monthly:增加 range 参数,扁平日聚合 + 月份分组
缺失日期同样补零;环比基于补零序列重算
- 默认 range 改 last15
前端
- HydrogenDaily QUICK_PICK_OPTIONS 收紧到 3 项,默认 last15
- ElectricDaily 之前没有日期速选,现按氢能样式加上同样 3 项
类型 DateQuickPick 改 'thisWeek' | 'thisMonth' | 'last15'
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 14:56:13 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
234b44ea03
|
feat(energy): 能源管理新增 ETC tab,建设中占位页
ci/woodpecker/push/woodpecker Pipeline was successful
- EnergyModule TopTab 加 'etc',用 lucide Receipt 图标
- TABS 数据驱动渲染,加新 tab 不用复制粘贴
- 新增 ETCView:可爱的「建设中」占位
- 大号 Construction 图标 + 顶上的 Hammer 摆动动画
- 文案「ETC 模块建设中」+ 副标说明
- 4 步进度(需求评审/数据对接/页面开发/正式上线)
已完成项绿点、进行中项黄点 + 脉冲,未来项灰点
- 底部专属 RotatingFooterHint,5 条 ETC 上下文文案
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 14:42:00 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
e8f1604c11
|
feat: 全局反馈系统 + 各模块底部统一动态提示
ci/woodpecker/push/woodpecker Pipeline was successful
- 新增 components/RotatingFooterHint:统一文案+蓝色脉冲,4 秒轮换
- 新增 components/FeedbackFab:右下角悬浮按钮(渐变 + 心形信封 + 黄色脉冲点),
点击打开 4 步引导式弹窗
Step 1 选类型(💡新维度 / 🐛bug / 🎨界面 / 📝其他)
Step 2 描述需求 + 选当前板块(chip)
Step 3 留联系方式(可选)+ 提交概览
Step 4 ❤️ 成功页(弹簧 √ 动画)
顶部 spring 进度条,底部上一步/下一步,下拉手柄,背景点击或 X 关闭
- 后端 routes/feedback:bi_user_feedback 表(自动建表,含 status 字段)
POST /api/feedback/submit + GET /api/feedback/list
- Shell 全局挂载 FeedbackFab,自动从 hash 检测当前模块
- 各模块底部追加 RotatingFooterHint:
AssetsModule / MileageModule / SchedulingModule / EleImportPage
HydrogenOverview / HydrogenDaily / ElectricOverview / ElectricDaily
(HydrogenOverview 旧的内嵌实现已替换为共享组件)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-30 13:50:39 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
08f21b7e24
|
chore(energy): 电能总览删除「今日」KPI 卡
ci/woodpecker/push/woodpecker Pipeline was successful
KPI 头从 3 列改为 2 列,仅保留累计与本月。
今日卡常被遮罩(手工导入的数据滞后),且与本月信息重复,先去掉。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 20:57:24 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
3d4d862d73
|
feat(energy): 氢能总览删除 4 张 KPI 卡,底部加动态幽默提示
ci/woodpecker/push/woodpecker Pipeline was successful
- 删除:年加氢量 / 年加氢费 / 累计羚牛承担 / 本月-今日 四张顶部 KPI 卡
(及对应的 Skeleton 占位、未用的 Fuel/Wallet/Coins/CalendarClock import 与 fmt 工具函数)
- 新增 RotatingFooterHint:底部居中蓝色脉冲点 + 6 条幽默文案 4s 轮换淡入
例如「更多统计维度接入中,欢迎您的建议 ~」「数据科学家正在深夜挖掘新维度…」
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 20:10:27 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
23a7722583
|
chore(energy): 氢能总览删除「我方/客户产生」副统计
ci/woodpecker/push/woodpecker Pipeline was successful
年加氢量、年加氢费 卡片移除以下副信息:
- 我方 XXX
- 客户产生 XXX
只保留主标题与大数字。其他卡片(累计羚牛承担、本月/今日)保持不变。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 20:04:56 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
213037c2ac
|
fix(energy): 氢能 Top5 排名圆点左侧被 SVG 视窗切掉
ci/woodpecker/push/woodpecker Pipeline was successful
之前 cx=-178 + YAxis.width=190 + margin.left=0:
Y 轴线 pivot 在 chart x=190;圆点 abs x=12,半径 9 → 左缘 abs x=3
紧贴 SVG viewBox 左边界,渲染时被切掉一半。
新值:margin.left=12,YAxis.width=188,circle cx=-172,text x=-154
pivot=200,圆点 abs x=28,左缘=19,离左边界 19px 缓冲,圆点完整可见。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 20:03:24 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
3efa701395
|
feat(energy): 氢能总览加载骨架屏,缓解 1-2s 初始等待
ci/woodpecker/push/woodpecker Pipeline was successful
之前数据回来前只显示一行「加载中…」纯文本,1-2 秒等待体感差。
新增 HydrogenOverviewSkeleton:
- 4 张 KPI 卡占位(含标题/数值/副信息行)
- Top5 横向条形图占位(5 行 圆点 + 站名 + 渐变条 + 数值)
- 区域占比环 + 图例占位
- 底部蓝色脉冲点 +「正在加载氢能总览…」
全部用 animate-pulse,结构与真实页面保持一致,避免回填时跳动。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 20:00:48 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
e775acb8fe
|
fix(energy): 氢能 Top5 排名圆点与站名重叠修复
ci/woodpecker/push/woodpecker Pipeline was successful
YAxis 宽度 170→190,圆点 cx 从 -158 → -178,文字 x 从 -144 → -160。
间距从 14px 拉到 18px+,避免在窄屏上圆点压住站名首字。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 19:59:37 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
c788dd4577
|
fix(energy): 单价直接取 MAX(cost_price),不重算不返 null
ci/woodpecker/push/woodpecker Pipeline was successful
之前用 MIN=MAX...ELSE NULL 判定,再 NULLIF 排零,遇到「1 笔 0 元免费单 + 多笔 35 元正价单」
仍可能误判混合,最终页面显示「—」(如佛山豪汇石油加氢站)。
按业务约定:单价就是订单上记录的成本价,不做"统一性"判定,也不返 null。
改用 MAX(b.cost_price):
- 自然忽略 0 元免费/赠送单(被正价 max 掉)
- 同价组等于原价
- 极少数真正混合价组也展示该日付出过的最高单价(仍是订单上的真实数字)
回退类型:HydrogenStationRow.pricePerKg 重新固定为 number。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 19:56:26 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
3851335843
|
fix(energy): 氢能单价不再加权,混合价组显示「—」并修复 hydrogen_time 歧义
ci/woodpecker/push/woodpecker Pipeline was successful
- pricePerKg 改为 CASE WHEN MIN=MAX THEN MIN ELSE NULL,
同价组返回原价(无小数误读),混合价组返回 null
- 类型 HydrogenStationRow.pricePerKg: number | null
- 前端 mobile/desktop 两处展示在 null 时显示「—」
- 修复 ER_NON_UNIQ_ERROR:tab_import_hydrogen_order 也有 hydrogen_time 字段,
把 SELECT/ORDER BY 中 ${HYDROGEN_LOCAL} 替换为显式 b.hydrogen_time 限定
- 实测:712 个站点-日组中 682 个同价直接显示原价,30 个混合显示「—」
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 19:51:41 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
9a20a7cb79
|
refactor(energy): 电能仅展示充电量,电/氢 daily 表格统一列宽
ci/woodpecker/push/woodpecker Pipeline was successful
- 电能去掉「充电费用(元)」列,只保留 月份/日期 | 充电量(度) | 环比
原列宽 auto+auto+auto 在窄屏会挤压重叠
- 改用固定 minmax(0,1fr)/120/88(移动)和 1fr/160/120(桌面)
- 氢能 daily 同步统一列宽:1fr/120/88(移动)和 1fr/140/140/120(桌面)
- 单价表头改为「单价 (元/Kg)」全展示,移动端站点行价格作为副信息缩小展示
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 19:37:26 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
d1d79f1c7c
|
feat(energy): 电能统计切到 bi_ele_charge_record,外部数据接通
ci/woodpecker/push/woodpecker Pipeline was successful
- /api/energy/electric/overview & /electric/monthly 不再读 tab_energy_electricity_bill
- 改读 bi_ele_charge_record:kwh/fee/start_time
- 外部/我司用 vehicle_kind 区分(external/internal)
- 电能默认 customer 由 'external' 改 'lingniu',与导入页约定一致
- ElectricDaily 移除「数据对接中…」友好空状态(外部已有数据)
ele 导入页同步收紧:
- 命中系统车辆=internal,未命中(含车牌为空)一律 external
- 移除 unknown 分类、KPI 卡、批次列、过滤按钮、UploadResult 字段
- 历史 unknown 行已 UPDATE 为 external
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 19:11:52 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
d8189329ac
|
chore(energy): 羚牛 tab 置前并默认选中(氢能/电能一致)
ci/woodpecker/push/woodpecker Pipeline was successful
- HydrogenDaily/ElectricDaily 默认 customer 改为 'lingniu'
- segmented control 顺序改为 ['lingniu', 'external']
- 进入页面立刻看到我司数据,避免空状态首屏
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 18:53:22 +08:00 |
|
 kkfluousandClaude Opus 4.7
|
e2d04db06d
|
chore(energy): 重新放开电能 tab
ci/woodpecker/push/woodpecker Pipeline was successful
- 取消之前的临时屏蔽,恢复氢能/电能两个顶部 tab
- 电能内部已和氢能同时支持 truck_id 区分外部/我司,外部空数据会展示「数据对接中…」
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-29 18:52:11 +08:00 |
|