geopro/src/data/api/Api3dRepository.hpp

63 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <functional>
#include <string>
#include <vector>
#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<void(VolumeGrid)> onOk,
OnError onErr) override;
void loadSection(const std::string& dsId, std::function<void(SectionData)> onOk,
OnError onErr) override;
void loadTerrainPaths(std::function<void(TerrainPaths)> onOk, OnError onErr) override;
// 切片 CRUD后端未就绪 → 变更走 onErr
void createSlice(const SliceSpec& spec, const std::string& name,
std::function<void(std::string)> onOk, OnError onErr) override;
void saveSlice(const std::string& dsId, const SliceSpec& spec,
std::function<void()> onOk, OnError onErr) override;
void deleteSlice(const std::string& dsId,
std::function<void()> onOk, OnError onErr) override;
// 异常 / 异常体(后端未就绪 → load 回空树,变更走 onErr
void loadAnomalyTree(const std::string& objectId,
std::function<void(AnomalyTree)> onOk, OnError onErr) override;
void saveAnomaly(const geopro::core::Anomaly& a, const std::string& screenshotPngPath,
std::function<void(std::string)> onOk, OnError onErr) override;
void deleteAnomaly(const std::string& anomalyId,
std::function<void()> onOk, OnError onErr) override;
void deleteAnomalyGroup(const std::string& bodyId,
std::function<void()> onOk, OnError onErr) override;
// 任务管理(后端未就绪 → load 回空列表)
void loadTaskRecords(const std::string& dsId,
std::function<void(std::vector<TaskRecord>)> onOk,
OnError onErr) override;
void loadUsableTasks(const std::string& ddCode,
std::function<void(std::vector<UsableTask>)> onOk,
OnError onErr) override;
private:
IAsyncDatasetRepository& dsRepo_;
};
} // namespace geopro::data