#pragma once #include #include #include #include "repo/I3dSceneRepository.hpp" namespace geopro::data { class IAsyncDatasetRepository; // 真实后端实现 I3dSceneRepository: // loadSection(帘面) 走真实 ERT 反演端点 —— 复用 ApiDatasetRepository(loaderKey="inversion.grid"), // 不重复网络层;命中 core::ContourPayload{grid, scale, anomalies},取 grid+scale 填 SectionData。 // dimensionOf 同步纯函数(ddCode→维度,同 LocalSample3dRepository 映射)。 // 三维体/地形/切片/异常/任务端点后端尚未就绪 → 暂 stub: // - load 类(loadTree/loadRecords/loadTasks) 回调空,避免 UI 崩; // - loadVolume/loadTerrainPaths 及一切 create/save/delete 变更 → 走 onErr("后端未就绪"), // 给用户明确"未实现"而非假成功。 class Api3dRepository : public I3dSceneRepository { public: explicit Api3dRepository(IAsyncDatasetRepository& dsRepo); DsDimension dimensionOf(const DsRow& ds) const override; void loadVolume(const std::string& dsId, std::function onOk, OnError onErr) override; void loadSection(const std::string& dsId, std::function onOk, OnError onErr) override; void loadTerrainPaths(std::function onOk, OnError onErr) override; // 切片 CRUD(后端未就绪 → 变更走 onErr) void createSlice(const SliceSpec& spec, const std::string& name, std::function onOk, OnError onErr) override; void saveSlice(const std::string& dsId, const SliceSpec& spec, std::function onOk, OnError onErr) override; void deleteSlice(const std::string& dsId, std::function onOk, OnError onErr) override; // 异常 / 异常体(后端未就绪 → load 回空树,变更走 onErr) void loadAnomalyTree(const std::string& objectId, std::function onOk, OnError onErr) override; void saveAnomaly(const geopro::core::Anomaly& a, const std::string& screenshotPngPath, std::function onOk, OnError onErr) override; void deleteAnomaly(const std::string& anomalyId, std::function onOk, OnError onErr) override; void deleteAnomalyGroup(const std::string& bodyId, std::function onOk, OnError onErr) override; // 任务管理(后端未就绪 → load 回空列表) void loadTaskRecords(const std::string& dsId, std::function)> onOk, OnError onErr) override; void loadUsableTasks(const std::string& ddCode, std::function)> onOk, OnError onErr) override; private: IAsyncDatasetRepository& dsRepo_; }; } // namespace geopro::data