動作
Bug #1458
進行中[Backend Bug] 進行中交易的充電時長誤計算至查詢日午夜
開始日期:
2026-09-01
完成日期:
預估工時:
概述
問題¶
A17 管理後台的「充電記錄列表」對進行中的交易顯示錯誤充電時長。
2026-09-01 19:51 查詢 Connector CBDAX50A-25L-A6-A072-001 時,交易 788:
- 開始時間:
2026-09-01 17:38:12 - 結束時間:尚未結束
- 畫面充電時長:
6時21分 - 當時實際經過時間:約
2時12分
重現方式¶
- 讓 Connector 存在一筆當日開始、尚未結束的 ACTIVE transaction。
- 進入 Branch Admin → Connector → 充電記錄列表。
- 使用預設日期範圍,結束日期為今天。
- 查詢記錄。
- 觀察進行中交易的「充電時長」。
根因¶
ConnectorService.searchConnectorTx 將結束日期正規化為半開區間的隔日 00:00:
end = dto.getEndDate().plusDays(1).atStartOfDay();
此正規化本身正確;錯誤位於 TransactionService.computeConnectorBillDetail:當 stopTimestamp == null 時,直接把查詢區間終點 end 當成交易結束時間。
LocalDateTime transactionEnd = tx.getStopTimestamp() == null ? end : tx.getStopTimestamp();
因此本例計算成:
2026-09-02 00:00:00 - 2026-09-01 17:38:12
= 6時21分48秒
前端截斷秒數後顯示為「6時21分」。
此回歸由 commit 21df2495(#1416 跨月 MeterValue 分段結算)引入。
建議修正¶
進行中交易的 duration 終點應限制為查詢當下時間與查詢區間終點的較早者:
ACTIVE: min(now, queryEnd)
COMPLETED: min(stopTimestamp, queryEnd)
保留 [start, end) 半開查詢區間,不要將結束日期改回 23:59:59。
驗收條件¶
- endDate=今天且交易尚未結束時,duration 不得超過 API 查詢當下時間。
- 本案例在 19:51 查詢時應約為 2時12分,不得顯示到隔日 00:00 的 6時21分。
- 已完成交易仍使用實際
stopTimestamp,並正確受查詢區間裁切。 - 跨日/跨月查詢的半開區間與 #1416 MeterValue 分段結算行為不得退化。
- 新增單元測試與 E2E regression catalog case。
是由 陳國瑋 於 30 天 前更新
實作與測試準備¶
- 已修正 ACTIVE transaction duration,終點改為單次查詢固定的
now,並保留[queryStart, queryEnd)裁切。 - 已新增 4 個 duration 邊界 Unit Test;Maven testCompile 成功,尚未執行。
-
mvn -DskipTests package:BUILD SUCCESS。 - E2E Impact:新增
CHG-046(P1、Active)。 - Catalog validator:PASS(177 cases;P0=56、P1=70、P2=46、P3=5)。
依 SOP,下一步等待 Ken 啟動測試計畫。
是由 陳國瑋 於 30 天 前更新
Unit Test 結果¶
執行:
mvn -Dtest=TransactionServiceChargingRecordDurationTest,MeterValueTariffCalculationServiceTest test
結果:16 tests、0 failures、0 errors、0 skipped,BUILD SUCCESS。
- 新增 duration regression:4/4 PASS。
- #1416 MeterValue/Tariff regression:12/12 PASS。
- Catalog validator:PASS(177 cases)。
- 正式報告:
test_report/20260901_001_redmine-1458-active-duration.md。 - 尚未部署,API/UI E2E 尚未執行,不列為 PASS。
目前等待測試報告確認 gate。
是由 陳國瑋 於 30 天 前更新
Commit 與 push¶
- Commit:
a4aac29—fix(#1458): 修正進行中交易充電時長 - Branch:
feature/redmine-1458-active-duration - 已 push 至
origin - Unit Test:16/16 PASS
- Build:
mvn -DskipTests packagePASS - Catalog validator:PASS(177 cases)
- E2E Impact:新增
CHG-046(P1、Active) - 未建立或合併 MR
尚待事項:測試環境部署後,需另依 SOP 啟動 Standard Release pack/CHG-046 API 與 UI E2E;目前不得記為 E2E PASS。
動作