From 99935242ecccd94e76978e2b71cbc46b87d31dc6 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期五, 09 十月 2026 11:17:44 +0800
Subject: [PATCH] 推式来源的工步与循环改为从采样段推导

---
 battery-device-api/src/main/java/com/battery/device/api/TestDataObservationAdapter.java |   21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/battery-device-api/src/main/java/com/battery/device/api/TestDataObservationAdapter.java b/battery-device-api/src/main/java/com/battery/device/api/TestDataObservationAdapter.java
index e8d0ea8..22b3918 100644
--- a/battery-device-api/src/main/java/com/battery/device/api/TestDataObservationAdapter.java
+++ b/battery-device-api/src/main/java/com/battery/device/api/TestDataObservationAdapter.java
@@ -19,7 +19,11 @@
      */
     CollectorRealtime latestCollector(String adapterCode, String collectorCode);
 
-    /** 返回设备直接提供的工步统计,不从实时采样推导。 */
+    /**
+     * 返回该通道的工步统计。来源有工步层时读设备工步层并原样交出;来源没有工步层时由适配器
+     * 从采样段推导(ADR-0067),此时记录里的方向是推导出的方向名称(见 {@link StepRecord})。
+     * 未结束的段不交出,也不推导来源根本没有的工步层。
+     */
     List<StepRecord> stepRecords(ChannelIdentity channel);
 
     /**
@@ -31,6 +35,13 @@
 
     /** 返回适配器定义的实时持久化槽位间隔。 */
     long persistenceIntervalMillis(ChannelIdentity channel);
+
+    /**
+     * 返回工步与循环这些汇总记录的读取间隔。默认与实时持久化间隔一致;来源的汇总产出节奏与
+     * 数据行节奏不同的实现覆盖它——推式来源的落地表在本地(实时行按展示节奏取),
+     * 而汇总最快也要等来源写下下一行才可能变化,按展示节奏重算只是空跑。
+     */
+    default long aggregateIntervalMillis(ChannelIdentity channel) { return persistenceIntervalMillis(channel); }
 
     /** 返回设备计划方案;设备未提供时保持为空,不推导计划。 */
     default TestPlan testPlan(ChannelIdentity channel) { return null; }
@@ -89,8 +100,12 @@
             Instant serverReceivedAt, String metricCode, BigDecimal value, String unit) { }
 
     /**
-     * 一条设备工步层记录。{@code stepType} 保留设备给出的原始类型(新威为数字枚举),
-     * 方向由调用方按该类型解释,不由适配器按电流符号推断。
+     * 一条设备工步层记录。来源给出工步类型时 {@code stepType} 原样保留(新威为数字枚举),
+     * 方向由调用方按该类型解释,适配器不按电流符号改写它。
+     *
+     * <p>来源**没有**工步类型列时(推式来源的厂商库里既没有工步层也没有循环汇总表,ADR-0067),
+     * 适配器交出的是按已核对列语义判定出的方向名称({@code charge} / {@code discharge} / {@code rest}),
+     * 判定不出来时留空;此时该工步的其余一切仍是设备采样行上的原文事实。
      *
      * <p>{@code endVoltageV} 与 {@code endCurrentA} 是该工步结束时的设备读数。
      * {@code capacityAh} 与 {@code energyWh} 是该工步自身累计的单项值,只在方向已确认时给出;

--
Gitblit v1.7.1