docs(api): 三维体/切片/异常 OpenAPI 设计稿(贴合存量 dsObject 面)
三件套 Swagger(JSON): - 三维体/切片 = 纯元数据 dsObject:增删改查/属性复用存量 dsObject 面, 各加 1 个登记端点;体素字节/切面数据全在客户端,后端零数据端点。 - 异常复用整套 /business/exception 端点(实体无关),异常体(consortium) 分组为存量已有;3D 仅扩展 location 几何(worldPts+plane)与截图(R88)。 - 归属结构 TM → 三维体(dd_voxel) → 切片(dd_slice),异常挂三维体。
This commit is contained in:
parent
c2ec1d34b4
commit
9d3b103e32
|
|
@ -0,0 +1,528 @@
|
|||
{
|
||||
"openapi": "3.0.3",
|
||||
"info": {
|
||||
"title": "Geopro3 三维视图 API(三维体 / 切片 / 异常 三件套)",
|
||||
"version": "0.4.0-draft",
|
||||
"description": "VTK 三维视图后端接口。归属结构(2026-06-23 定稿):**TM → 三维体(dd_voxel) → 切片(dd_slice)**,异常挂在三维体上(remarkSourceId=三维体 dsObjectId)。\n\n**总原则:实体无关的契约一律复用存量;只为各自特有、存量装不下的部分扩展。**\n- 三维体/切片对后端 = 纯元数据 dsObject:增删改查/属性复用存量 dsObject 面,各加 1 个登记端点;体素字节/切面数据全在客户端(算+存+取+渲染),后端零数据端点。\n- 异常复用整套存量 /business/exception 端点(端点不限实体类型,三维体 id 直接塞 remarkSourceId);**异常体(consortium)分组也是存量已有**(consortiumId/Name/Type)。3D 仅扩展两处:location 加 worldPts+plane(三维几何)、加截图(R88)。\n\n响应统一信封 `{ code:int, msg:string, data:object|array }`,code==200 成功;列表/集合放 data.value。\n\n依赖前提:异常 remarkSourceId 指向三维体,须等三维体登记出真 dsObjectId 后,3D 异常才能接真端点。"
|
||||
},
|
||||
"servers": [
|
||||
{ "url": "/", "description": "业务网关根(各路径已含 /business 前缀)" }
|
||||
],
|
||||
"tags": [
|
||||
{ "name": "dsObject-reuse", "description": "复用的存量统一面(三维体/切片共用增删改查+属性)" },
|
||||
{ "name": "voxel-new", "description": "三维体新增:仅登记记录(体素全在客户端)" },
|
||||
{ "name": "slice-new", "description": "切片新增:仅登记记录(切面全在客户端)" },
|
||||
{ "name": "exception-reuse", "description": "复用的存量异常面(端点不限实体类型;3D 仅扩展 location 几何+截图)" }
|
||||
],
|
||||
"paths": {
|
||||
"/business/projectStruct/queryProjectStruct/{projectId}": {
|
||||
"get": {
|
||||
"tags": ["dsObject-reuse"],
|
||||
"summary": "[复用] 查询项目结构树(GS/TM 骨架)",
|
||||
"description": "存量端点。提供三维体挂载所需的 TM 节点;三维体/切片作为派生数据另经 data/page 取。",
|
||||
"operationId": "queryProjectStruct",
|
||||
"parameters": [ { "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" } } ],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/StructNodeList" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/dsObject/data/page": {
|
||||
"post": {
|
||||
"tags": ["dsObject-reuse"],
|
||||
"summary": "[复用] 分页查询某父节点下的数据集行",
|
||||
"description": "存量端点(loadRowsAsync)。查三维体:structParentId=tmObjectId、structParentConfType=2;查某三维体下切片:structParentId=该三维体 dsObjectId。返回行 ddCode=dd_voxel / dd_slice。",
|
||||
"operationId": "dsObjectDataPage",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DsPageRequest" } } } },
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DsPage" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/dsObject/getDetail/{dsObjectId}": {
|
||||
"get": {
|
||||
"tags": ["dsObject-reuse"],
|
||||
"summary": "[复用] 数据集详情(描述 + attachedParameters)",
|
||||
"description": "存量端点。三维体构建参数(attachedParameters.voxelParams)、切片三点位姿(attachedParameters.slicePose)从这里读出。",
|
||||
"operationId": "dsObjectGetDetail",
|
||||
"parameters": [ { "$ref": "#/components/parameters/DsObjectIdPath" } ],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DsObjectDetail" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/dsObject/dynamicForm/{dsObjectId}": {
|
||||
"get": {
|
||||
"tags": ["dsObject-reuse"],
|
||||
"summary": "[复用] 数据集属性(动态表单)",
|
||||
"description": "存量端点。三维体/切片可读属性由后端为 dd_voxel/dd_slice 注册 formList 后从此返回,无需为属性新增固定字段接口。",
|
||||
"operationId": "dsObjectDynamicForm",
|
||||
"parameters": [ { "$ref": "#/components/parameters/DsObjectIdPath" } ],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/DynamicForm" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/dsObject/updateDsObject/": {
|
||||
"put": {
|
||||
"tags": ["dsObject-reuse"],
|
||||
"summary": "[复用] 更新数据集(描述 / attachedParameters)",
|
||||
"description": "存量端点。改名/改描述/改三维体参数/改切片位姿都走这条。注意 URL 末尾斜杠为服务端实证要求。",
|
||||
"operationId": "updateDsObject",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDsObjectRequest" } } } },
|
||||
"responses": { "200": { "$ref": "#/components/responses/StatusOk" } }
|
||||
}
|
||||
},
|
||||
"/business/dsObject/{dsObjectId}": {
|
||||
"delete": {
|
||||
"tags": ["dsObject-reuse"],
|
||||
"summary": "[复用] 删除数据集",
|
||||
"description": "存量端点。删三维体级联其下切片/异常记录(客户端另清本地体素落盘);删切片不影响异常(异常挂三维体、与切片解耦)。",
|
||||
"operationId": "deleteDsObject",
|
||||
"parameters": [ { "$ref": "#/components/parameters/DsObjectIdPath" } ],
|
||||
"responses": { "200": { "$ref": "#/components/responses/StatusOk" } }
|
||||
}
|
||||
},
|
||||
"/business/dsObject/voxel/generate": {
|
||||
"post": {
|
||||
"tags": ["voxel-new"],
|
||||
"summary": "[新增] 登记三维体记录",
|
||||
"description": "在 tmObjectId 下登记一条 dd_voxel dsObject(名称 + 构建参数写入 attachedParameters.voxelParams),返回新 dsObjectId。只建记录、不触发后端计算——体素插值/落盘/渲染全在客户端。",
|
||||
"operationId": "registerVoxel",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VoxelGenerateRequest" } } } },
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreatedRef" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/dsObject/slice/generate": {
|
||||
"post": {
|
||||
"tags": ["slice-new"],
|
||||
"summary": "[新增] 登记切片记录",
|
||||
"description": "在所属三维体下登记一条 dd_slice dsObject(名称 + 三点位姿写入 attachedParameters.slicePose),返回新 dsObjectId。只建记录、不触发后端计算——切面据「体+位姿」在客户端重采样渲染。",
|
||||
"operationId": "registerSlice",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SliceGenerateRequest" } } } },
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreatedRef" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/exceptionType/queryExceptionTypeByProjectIdAndType/{projectId}/{remarkSourceType}": {
|
||||
"get": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用] 异常类型列表",
|
||||
"description": "存量端点(queryExceptionTypeData)。按项目 + 标注形态(remarkSourceType=1点/2线/3面/4文字)查可用异常类型。与实体类型无关 → 3D 通用。data.value 为类型数组。",
|
||||
"operationId": "queryExceptionTypes",
|
||||
"parameters": [
|
||||
{ "name": "projectId", "in": "path", "required": true, "schema": { "type": "string" } },
|
||||
{ "name": "remarkSourceType", "in": "path", "required": true, "schema": { "type": "string", "enum": ["1", "2", "3", "4"] }, "description": "标注形态:1点/2线/3面/4文字" }
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ExceptionTypeList" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/exceptionType": {
|
||||
"post": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用] 新增异常类型",
|
||||
"description": "存量端点(addExceptionType)。异常属性 + 标注名称双 Tab 组装的类型定义(含图例/字段列表)。3D 直接复用。",
|
||||
"operationId": "addExceptionType",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddExceptionTypeRequest" } } } },
|
||||
"responses": { "200": { "$ref": "#/components/responses/StatusOk" } }
|
||||
}
|
||||
},
|
||||
"/business/exception/getExceptionName": {
|
||||
"post": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用] 取建议异常名称",
|
||||
"description": "存量端点(queryExceptionNameInProfileInversion)。按异常类型 + 被标注实体回填建议名。3D 把 remarkSourceId 填三维体 id 即可。data 为纯字符串(名称)。",
|
||||
"operationId": "getExceptionName",
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"required": ["exceptionTypeId", "remarkSourceId"],
|
||||
"properties": {
|
||||
"exceptionTypeId": { "type": "string" },
|
||||
"remarkSourceId": { "type": "string", "description": "2D=dsObjectId;3D=三维体 dsObjectId" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "type": "string", "description": "建议名称(纯字符串)" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/exception": {
|
||||
"post": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用+扩展] 新增异常",
|
||||
"description": "存量端点(newExceptionInProfileInversion)。2D 字段全复用;**3D 扩展**:location 增加 worldPts(三维几何) + plane(所在平面),并增加 screenshot(R88 截图)。remarkSourceId=三维体 dsObjectId;consortiumId 归入异常体(存量已有)。",
|
||||
"operationId": "newException",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewExceptionRequest" } } } },
|
||||
"responses": { "200": { "$ref": "#/components/responses/StatusOk" } }
|
||||
},
|
||||
"put": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用+扩展] 更新异常",
|
||||
"description": "存量端点(updateExceptionDataInProfileInversion)。改名/备注/几何;3D 同样可改扩展后的 location 与截图。",
|
||||
"operationId": "updateException",
|
||||
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateExceptionRequest" } } } },
|
||||
"responses": { "200": { "$ref": "#/components/responses/StatusOk" } }
|
||||
}
|
||||
},
|
||||
"/business/exception/{id}": {
|
||||
"delete": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用] 删除异常",
|
||||
"description": "存量端点(deleteExceptionDataInProfileInversion)。删异常体=按 consortiumId 循环删其下异常(无专用批删端点)。",
|
||||
"operationId": "deleteException",
|
||||
"parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } } ],
|
||||
"responses": { "200": { "$ref": "#/components/responses/StatusOk" } }
|
||||
}
|
||||
},
|
||||
"/business/exception/queryException/{remarkSourceId}": {
|
||||
"get": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用+扩展] 查某实体下的异常列表",
|
||||
"description": "存量端点。2D 传 dsObjectId、3D 传三维体 dsObjectId。返回该实体全部异常;客户端按 consortiumId 分组成异常体树。**3D 扩展**:返回项 location 含 worldPts+plane、并含 screenshot。",
|
||||
"operationId": "queryExceptionBySource",
|
||||
"parameters": [ { "name": "remarkSourceId", "in": "path", "required": true, "schema": { "type": "string" }, "description": "2D=dsObjectId;3D=三维体 dsObjectId" } ],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ExceptionList" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/business/exception/queryExceptionByTmObjectId/{tmObjectId}": {
|
||||
"get": {
|
||||
"tags": ["exception-reuse"],
|
||||
"summary": "[复用] 查某 TM 下全部异常(按异常体分组)",
|
||||
"description": "存量端点(loadExceptionsByTmAsync)。返回 TM 下全部异常,含 consortiumId/consortiumName/consortiumType(异常体分组,存量已有),客户端按 consortiumId 归组。",
|
||||
"operationId": "queryExceptionByTm",
|
||||
"parameters": [ { "name": "tmObjectId", "in": "path", "required": true, "schema": { "type": "string" } } ],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "成功",
|
||||
"content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Envelope" }, { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ExceptionList" } } } ] } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"components": {
|
||||
"parameters": {
|
||||
"DsObjectIdPath": {
|
||||
"name": "dsObjectId", "in": "path", "required": true,
|
||||
"schema": { "type": "string" }, "description": "数据集 dsObject id"
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"StatusOk": {
|
||||
"description": "操作状态",
|
||||
"content": { "application/json": { "schema": { "$ref": "#/components/schemas/Envelope" } } }
|
||||
}
|
||||
},
|
||||
"schemas": {
|
||||
"Envelope": {
|
||||
"type": "object",
|
||||
"required": ["code", "msg"],
|
||||
"properties": {
|
||||
"code": { "type": "integer", "example": 200, "description": "200=成功,其它=失败" },
|
||||
"msg": { "type": "string", "example": "操作成功" },
|
||||
"data": { "description": "业务载荷(对象或数组)", "nullable": true }
|
||||
}
|
||||
},
|
||||
"CreatedRef": {
|
||||
"type": "object",
|
||||
"required": ["dsObjectId"],
|
||||
"properties": { "dsObjectId": { "type": "string", "description": "新建数据集 id" } }
|
||||
},
|
||||
"Vec3": {
|
||||
"type": "array", "description": "世界系三分量(米)",
|
||||
"items": { "type": "number", "format": "double" }, "minItems": 3, "maxItems": 3
|
||||
},
|
||||
"Pt2": {
|
||||
"type": "object", "description": "2D 点(剖面系:x=距离, y=深度)",
|
||||
"properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" } }
|
||||
},
|
||||
"InterpModel": {
|
||||
"type": "string", "enum": ["Idw", "Kriging"], "default": "Idw",
|
||||
"description": "插值模型(本期仅 Idw 实现,Kriging 占位)"
|
||||
},
|
||||
"RemarkSourceType": {
|
||||
"type": "string", "enum": ["1", "2", "3", "4"],
|
||||
"description": "标注形态(非实体类型):1点/2线/3面/4文字"
|
||||
},
|
||||
"StructNodeList": {
|
||||
"type": "object", "description": "结构树信封内层(data.value)",
|
||||
"properties": { "value": { "type": "array", "items": { "$ref": "#/components/schemas/StructNode" } } }
|
||||
},
|
||||
"StructNode": {
|
||||
"type": "object", "description": "项目结构扁平节点(GS/TM),客户端按 parentId 建树",
|
||||
"properties": {
|
||||
"id": { "type": "string" }, "name": { "type": "string" }, "parentId": { "type": "string" },
|
||||
"typeName": { "type": "string" }, "confCode": { "type": "string" },
|
||||
"typeId": { "type": "string", "description": "类型 id(编辑时 getDynamicForm 必需)" },
|
||||
"type": { "type": "integer" }
|
||||
}
|
||||
},
|
||||
"DsPageRequest": {
|
||||
"type": "object", "description": "存量 dsObject/data/page 请求体",
|
||||
"required": ["projectId", "structParentId", "structParentConfType", "classifyTypeList", "pageNo", "pageSize"],
|
||||
"properties": {
|
||||
"projectId": { "type": "string" },
|
||||
"structParentId": { "type": "string", "description": "查三维体填 tmObjectId;查切片填所属三维体 dsObjectId" },
|
||||
"structParentConfType": { "type": "integer", "description": "父节点配置类型:TM=2(三维体场景)" },
|
||||
"classifyTypeList": { "type": "array", "items": { "type": "integer" }, "description": "数据类别过滤(dd_voxel/dd_slice 的 classify code 由后端定义)" },
|
||||
"pageNo": { "type": "integer", "default": 1 },
|
||||
"pageSize": { "type": "integer", "default": 20 }
|
||||
}
|
||||
},
|
||||
"DsPage": {
|
||||
"type": "object", "description": "分页结果",
|
||||
"properties": { "total": { "type": "integer" }, "value": { "type": "array", "items": { "$ref": "#/components/schemas/DsRow" } } }
|
||||
},
|
||||
"DsRow": {
|
||||
"type": "object", "description": "数据集行(列表/树节点)",
|
||||
"required": ["id", "ddCode"],
|
||||
"properties": {
|
||||
"id": { "type": "string" }, "dsName": { "type": "string" },
|
||||
"ddCode": { "type": "string", "enum": ["dd_voxel", "dd_slice"] },
|
||||
"typeName": { "type": "string", "example": "三维体" },
|
||||
"parentId": { "type": "string", "nullable": true, "description": "三维体=tmObjectId;切片=所属三维体 dsObjectId" }
|
||||
}
|
||||
},
|
||||
"DsObjectDetail": {
|
||||
"type": "object", "description": "存量 dsObject/getDetail 返回。三维体/切片机器参数搭车 attachedParameters。",
|
||||
"properties": {
|
||||
"dsObjectId": { "type": "string" }, "name": { "type": "string" },
|
||||
"description": { "type": "string", "nullable": true },
|
||||
"attachedParameters": {
|
||||
"type": "object", "description": "附加参数(自由结构化 blob)",
|
||||
"properties": {
|
||||
"deltaContent": { "type": "array", "items": { "type": "object" }, "description": "描述富文本(Quill delta ops)" },
|
||||
"voxelParams": { "allOf": [ { "$ref": "#/components/schemas/VolumeBuildParams" } ], "nullable": true, "description": "dd_voxel 专属:构建参数(体素字节在客户端本地)" },
|
||||
"slicePose": { "allOf": [ { "$ref": "#/components/schemas/SliceSpec" } ], "nullable": true, "description": "dd_slice 专属:三点位姿(切面在客户端重采样)" }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"DynamicForm": {
|
||||
"type": "object", "description": "ds 属性动态表单(存量统一模型)",
|
||||
"properties": {
|
||||
"formList": {
|
||||
"type": "array", "description": "分组列表",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string", "description": "分组名" },
|
||||
"values": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"UpdateDsObjectRequest": {
|
||||
"type": "object", "required": ["dsObjectId"],
|
||||
"properties": {
|
||||
"dsObjectId": { "type": "string" }, "description": { "type": "string" },
|
||||
"attachedParameters": {
|
||||
"type": "object", "description": "改三维体参数/切片位姿放这里",
|
||||
"properties": {
|
||||
"deltaContent": { "type": "array", "items": { "type": "object" } },
|
||||
"voxelParams": { "allOf": [ { "$ref": "#/components/schemas/VolumeBuildParams" } ], "nullable": true },
|
||||
"slicePose": { "allOf": [ { "$ref": "#/components/schemas/SliceSpec" } ], "nullable": true }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"VolumeBuildParams": {
|
||||
"type": "object", "description": "三维体构建参数(必存元数据;体素字节由客户端按此本地插值,不上后端)",
|
||||
"required": ["sourceDatasetIds"],
|
||||
"properties": {
|
||||
"sourceDatasetIds": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "源数据集 id(≥1,被引用即锁定不可改)" },
|
||||
"interpModel": { "$ref": "#/components/schemas/InterpModel" },
|
||||
"cellXY": { "type": "number", "format": "double", "default": 1.0, "description": "水平网格间距(米)" },
|
||||
"cellZ": { "type": "number", "format": "double", "default": 0.5, "description": "竖向网格间距(米)" },
|
||||
"power": { "type": "number", "format": "double", "default": 2.0, "description": "IDW 幂" },
|
||||
"maxDist": { "type": "number", "format": "double", "default": 4.0, "description": "超距 blank" },
|
||||
"colorScaleId": { "type": "string", "nullable": true, "description": "色阶来源 ds(空=取首个源色阶)" }
|
||||
}
|
||||
},
|
||||
"VoxelGenerateRequest": {
|
||||
"type": "object", "required": ["projectId", "tmObjectId", "name", "sourceDatasetIds"],
|
||||
"properties": {
|
||||
"projectId": { "type": "string" },
|
||||
"tmObjectId": { "type": "string", "description": "归属 TM —— 三维体挂在 TM 下(structParentConfType=2)" },
|
||||
"name": { "type": "string" },
|
||||
"sourceDatasetIds": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
|
||||
"interpModel": { "$ref": "#/components/schemas/InterpModel" },
|
||||
"cellXY": { "type": "number", "format": "double", "default": 1.0 },
|
||||
"cellZ": { "type": "number", "format": "double", "default": 0.5 },
|
||||
"power": { "type": "number", "format": "double", "default": 2.0 },
|
||||
"maxDist": { "type": "number", "format": "double", "default": 4.0 },
|
||||
"colorScaleId": { "type": "string", "nullable": true }
|
||||
}
|
||||
},
|
||||
"SliceSpec": {
|
||||
"type": "object",
|
||||
"description": "切面精确几何(三点+轴向)。法向=normalize((p1-o)×(p2-o)),可派生。存于 attachedParameters.slicePose。",
|
||||
"required": ["volumeDsId", "origin", "point1", "point2"],
|
||||
"properties": {
|
||||
"volumeDsId": { "type": "string", "description": "所属三维体 dsObjectId" },
|
||||
"axis": { "type": "integer", "enum": [0, 1, 2, 3], "default": 3, "description": "0 上下/1 前后/2 左右/3 任意" },
|
||||
"origin": { "$ref": "#/components/schemas/Vec3" },
|
||||
"point1": { "$ref": "#/components/schemas/Vec3" },
|
||||
"point2": { "$ref": "#/components/schemas/Vec3" },
|
||||
"colorScaleId": { "type": "string", "nullable": true }
|
||||
}
|
||||
},
|
||||
"SliceGenerateRequest": {
|
||||
"type": "object", "required": ["projectId", "volumeDsId", "name", "origin", "point1", "point2"],
|
||||
"properties": {
|
||||
"projectId": { "type": "string" },
|
||||
"volumeDsId": { "type": "string", "description": "所属三维体 dsObjectId —— 切片挂在三维体下" },
|
||||
"name": { "type": "string" },
|
||||
"axis": { "type": "integer", "enum": [0, 1, 2, 3], "default": 3 },
|
||||
"origin": { "$ref": "#/components/schemas/Vec3" },
|
||||
"point1": { "$ref": "#/components/schemas/Vec3" },
|
||||
"point2": { "$ref": "#/components/schemas/Vec3" },
|
||||
"colorScaleId": { "type": "string", "nullable": true }
|
||||
}
|
||||
},
|
||||
"ExceptionLocation": {
|
||||
"type": "object",
|
||||
"description": "异常几何载荷。2D 用 coordinate;**3D 扩展** worldPts+plane。后端须扩展 location schema 以往返保存 3D 字段。",
|
||||
"properties": {
|
||||
"coordinate": { "type": "array", "items": { "$ref": "#/components/schemas/Pt2" }, "description": "2D 剖面坐标点(存量)" },
|
||||
"worldPts": { "type": "array", "items": { "$ref": "#/components/schemas/Vec3" }, "description": "【3D 扩展】异常多边形/折线世界 3D 点" },
|
||||
"plane": {
|
||||
"type": "object", "nullable": true, "description": "【3D 扩展】异常所在平面",
|
||||
"properties": { "normal": { "$ref": "#/components/schemas/Vec3" }, "origin": { "$ref": "#/components/schemas/Vec3" } }
|
||||
}
|
||||
}
|
||||
},
|
||||
"ExceptionRecord": {
|
||||
"type": "object",
|
||||
"description": "异常记录(queryException 返回项)。前段为存量 2D 字段,末尾为 3D 扩展。",
|
||||
"properties": {
|
||||
"id": { "type": "string" },
|
||||
"exceptionName": { "type": "string" },
|
||||
"exceptionTypeId": { "type": "string" },
|
||||
"exceptionTypeName": { "type": "string" },
|
||||
"remark": { "type": "string", "nullable": true },
|
||||
"createTime": { "type": "string" },
|
||||
"markType": { "$ref": "#/components/schemas/RemarkSourceType" },
|
||||
"remarkSourceId": { "type": "string", "description": "2D=dsObjectId;3D=三维体 dsObjectId" },
|
||||
"remarkSourceType": { "$ref": "#/components/schemas/RemarkSourceType" },
|
||||
"location": { "$ref": "#/components/schemas/ExceptionLocation" },
|
||||
"latitudeLongitude": { "type": "object", "description": "经纬度坐标(存量展示用)", "properties": { "latLon": { "type": "array", "items": { "type": "object", "properties": { "longitude": { "type": "number" }, "latitude": { "type": "number" } } } } } },
|
||||
"geographicalCoordinates": { "type": "object", "description": "投影坐标(存量展示用)", "properties": { "coordinates": { "type": "array", "items": { "type": "object", "properties": { "northCoord": { "type": "number" }, "eastCoord": { "type": "number" } } } } } },
|
||||
"consortiumId": { "type": "string", "nullable": true, "description": "异常体分组 id(存量已有);空=未分组 loose" },
|
||||
"consortiumName": { "type": "string", "nullable": true },
|
||||
"consortiumType": { "type": "string", "nullable": true },
|
||||
"legend": { "type": "object", "description": "图例样式(颜色/线宽/虚实等)" },
|
||||
"screenshot": { "type": "string", "nullable": true, "description": "【3D 扩展 R88】异常截图(base64 或文件引用,传输方式由后端定)" }
|
||||
}
|
||||
},
|
||||
"ExceptionList": {
|
||||
"type": "object", "description": "异常列表信封内层(data.value)",
|
||||
"properties": { "value": { "type": "array", "items": { "$ref": "#/components/schemas/ExceptionRecord" } } }
|
||||
},
|
||||
"ExceptionTypeRow": {
|
||||
"type": "object", "description": "异常类型项",
|
||||
"properties": {
|
||||
"id": { "type": "string" },
|
||||
"exceptionTypeName": { "type": "string" },
|
||||
"exceptionTypeCode": { "type": "string" },
|
||||
"exceptionMarkType": { "$ref": "#/components/schemas/RemarkSourceType" },
|
||||
"legend": { "type": "object" }
|
||||
}
|
||||
},
|
||||
"ExceptionTypeList": {
|
||||
"type": "object", "description": "异常类型列表信封内层(data.value)",
|
||||
"properties": { "value": { "type": "array", "items": { "$ref": "#/components/schemas/ExceptionTypeRow" } } }
|
||||
},
|
||||
"AddExceptionTypeRequest": {
|
||||
"type": "object",
|
||||
"description": "新增异常类型(对照存量 addExceptionType 全字段)",
|
||||
"required": ["exceptionTypeName", "exceptionMarkType", "projectId"],
|
||||
"properties": {
|
||||
"exceptionTypeName": { "type": "string" },
|
||||
"exceptionTypeCode": { "type": "string" },
|
||||
"standardNumber": { "type": "string", "nullable": true },
|
||||
"standardName": { "type": "string", "nullable": true },
|
||||
"description": { "type": "string", "nullable": true },
|
||||
"legend": { "type": "object", "description": "按 markType 的图例样式" },
|
||||
"exceptionNameList": { "type": "array", "items": { "type": "object", "properties": { "fieldName": { "type": "string" }, "fieldCode": { "type": "string" }, "sort": { "type": "integer" } } } },
|
||||
"customFormat": { "type": "string", "nullable": true },
|
||||
"separatorSymbol": { "type": "string", "nullable": true },
|
||||
"projectId": { "type": "string" },
|
||||
"exceptionMarkType": { "$ref": "#/components/schemas/RemarkSourceType" },
|
||||
"type": { "type": "integer", "default": 2 }
|
||||
}
|
||||
},
|
||||
"NewExceptionRequest": {
|
||||
"type": "object",
|
||||
"description": "新增异常。存量字段 + 3D 扩展(location.worldPts/plane、screenshot)。",
|
||||
"required": ["exceptionName", "exceptionTypeId", "projectId", "remarkSourceId", "remarkSourceType", "location"],
|
||||
"properties": {
|
||||
"exceptionName": { "type": "string" },
|
||||
"exceptionTypeId": { "type": "string" },
|
||||
"projectId": { "type": "string" },
|
||||
"remarkSourceId": { "type": "string", "description": "2D=dsObjectId;3D=三维体 dsObjectId" },
|
||||
"remarkSourceType": { "$ref": "#/components/schemas/RemarkSourceType" },
|
||||
"remark": { "type": "string", "nullable": true },
|
||||
"location": { "$ref": "#/components/schemas/ExceptionLocation" },
|
||||
"consortiumId": { "type": "string", "nullable": true, "description": "归入异常体(存量已有;空=loose)" },
|
||||
"screenshot": { "type": "string", "nullable": true, "description": "【3D 扩展 R88】异常截图" }
|
||||
}
|
||||
},
|
||||
"UpdateExceptionRequest": {
|
||||
"type": "object",
|
||||
"description": "更新异常(对照存量 updateException)。",
|
||||
"required": ["id"],
|
||||
"properties": {
|
||||
"id": { "type": "string" },
|
||||
"exceptionName": { "type": "string" },
|
||||
"remark": { "type": "string", "nullable": true },
|
||||
"location": { "allOf": [ { "$ref": "#/components/schemas/ExceptionLocation" } ], "nullable": true },
|
||||
"consortiumId": { "type": "string", "nullable": true },
|
||||
"screenshot": { "type": "string", "nullable": true, "description": "【3D 扩展 R88】" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue