跳到主要内容

DeleteHistoryRange

按时间区间删除历史数据.

法规约束

数据删除是高敏感操作, 多数行业法规 (GMP / FDA / ISO) 要求"永不删除"或"删除必须留审计". 服务端实现可能加额外保护.

签名

Status DeleteHistoryRange(
std::string const& node_id,
int64_t start_ft,
int64_t end_ft,
bool delete_modified_too = false);
参数说明
node_id目标 NodeId
start_ft区间起 (FileTime)
end_ft区间止 (FileTime)
delete_modified_tootrue = 同时删修改记录; false = 只删原始, 保留修改记录

用法

constexpr int64_t WIN_EPOCH_OFFSET = 116444736000000000LL;

auto now_ns = std::chrono::duration_cast<std::chrono::nanoseconds>(
std::chrono::system_clock::now().time_since_epoch()).count();
int64_t now_ft = WIN_EPOCH_OFFSET + now_ns / 100;

// 删除 [30 天前, 7 天前] 的数据
int64_t end_ft = now_ft - 7LL * 24 * 3600 * 10000000;
int64_t start_ft = now_ft - 30LL * 24 * 3600 * 10000000;

auto st = s.DeleteHistoryRange("ns=2;s=Temperature", start_ft, end_ft);
if (st != Status::Good) {
std::cerr << "Delete failed: 0x" << std::hex << static_cast<uint32_t>(st) << "\n";
}

DeleteAtTime / DeleteEvents (后续版本)

按指定时间点列表删 / 按 EventId 列表删事件, 当前 SDK 通过 UpdateHistory(..., HistoryUpdateType::Remove, ...) 实现; 高层 wrapper API 在后续版本提供.


法规约束

  • 永不删除 (只允许标记 obsolete)
  • 删除必须留审计 (谁删的, 何时, 原因)

服务端实现可能加额外保护. 客户端可能拿到 Status::BadUserAccessDenied.

性能

  • 大区间 Delete 服务端可能阻塞数秒到数分钟 (重建索引)
  • 长时间操作建议放后台 std::thread, 避免 UI 卡死

下一步