63 lines
3.0 KiB
C++
63 lines
3.0 KiB
C++
#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
|