docs(api): vtk-3d-openapi 对齐实测实现(0.6.1)

按客户端实测口径修正文档偏差:
- DsPage: 行在 data.list(非 data.value)+total;补注与 structNode/exception 用 data.value 的差异
- DsRow: 从5字段扩为实测解析全字段——name(=类型名,JSON键是name非typeName)/dsTypeCode/createTime/
  sourceShowParentId(+parentId回退)/structParentId/structParentConfType/properties(泛型JSON,数组或对象)/
  file;ddCode 是通用 dd 码(非仅 voxel/slice),data/page 返回各类 dsObject
- data/page 描述补实测:行在list/返回各类ds/classifyType==1走file·page/**业务字段值(含装置arrayType)不在行上**
  (装置属测线脚本配置)→ 类型筛选改按 typeName/dsTypeCode 范围筛
- registerSlice 描述补:客户端 mock 当前 projectId 为空,接真后端需补 nav.currentProjectId

未变(已与实现一致):VoxelGenerateRequest/SliceGenerateRequest/SliceSpec/VolumeBuildParams/DsPageRequest/
StructNode(L)/ExceptionList(均 data.value)
This commit is contained in:
gaozheng 2026-06-25 22:20:43 +08:00
parent 2f6ec7dae2
commit cdd7613d53
1 changed files with 25 additions and 10 deletions

View File

@ -2,7 +2,7 @@
"openapi": "3.0.3", "openapi": "3.0.3",
"info": { "info": {
"title": "Geopro3 三维视图 API三维体 / 切片 / 异常 三件套)", "title": "Geopro3 三维视图 API三维体 / 切片 / 异常 三件套)",
"version": "0.6.0-draft", "version": "0.6.1-draft",
"description": "VTK 三维视图后端接口。归属结构(2026-06-24 修订)**GS/项目根/TM → 三维体(dd_voxel) → 切片(dd_slice)**(三维体生成位置由用户在生成对话框选择,默认单GS挂该GS/跨GS挂项目根,可改为项目内任意 GS/TM源数据集与归属解耦),异常挂在三维体上(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 异常才能接真端点。" "description": "VTK 三维视图后端接口。归属结构(2026-06-24 修订)**GS/项目根/TM → 三维体(dd_voxel) → 切片(dd_slice)**(三维体生成位置由用户在生成对话框选择,默认单GS挂该GS/跨GS挂项目根,可改为项目内任意 GS/TM源数据集与归属解耦),异常挂在三维体上(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": [ "servers": [
@ -34,7 +34,7 @@
"post": { "post": {
"tags": ["dsObject-reuse"], "tags": ["dsObject-reuse"],
"summary": "[复用] 分页查询某父节点下的数据集行", "summary": "[复用] 分页查询某父节点下的数据集行",
"description": "存量端点(loadRowsAsync)。查三维体structParentId=生成位置节点 id(GS/项目根/TM)、structParentConfType=1或2查某三维体下切片structParentId=该三维体 dsObjectId。返回行 ddCode=dd_voxel / dd_slice。", "description": "存量端点(loadRowsAsync)。查三维体structParentId=生成位置节点 id(GS/项目根/TM)、structParentConfType=1或2查某三维体下切片structParentId=该三维体 dsObjectId。\n\n**实测口径(2026-06-25)**:①行在 `data.list`(非 data.value);②返回项目结构下**各类** dsObject(文件/网格/反演/三维体/切片/异常…),行 ddCode 非仅 voxel/slice③客户端用 classifyType==1 时改打 `/business/dsObject/file/page`(文件型),否则 `data/page`;④**行不返回业务字段值**(properties 为文件元数据或 null)**装置类型(arrayType) 不在 data/page 行上**——它属测线脚本配置(ScriptInfoVO),故客户端「类型筛选」改按行自带的 typeName/dsTypeCode 范围筛,而非 arrayType。",
"operationId": "dsObjectDataPage", "operationId": "dsObjectDataPage",
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DsPageRequest" } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DsPageRequest" } } } },
"responses": { "responses": {
@ -114,7 +114,7 @@
"post": { "post": {
"tags": ["slice-new"], "tags": ["slice-new"],
"summary": "[新增] 登记切片记录", "summary": "[新增] 登记切片记录",
"description": "在所属三维体下登记一条 dd_slice dsObject(名称 + 三点位姿写入 attachedParameters.slicePose),返回新 dsObjectId。只建记录、不触发后端计算——切面据「体+位姿」在客户端重采样渲染。", "description": "在所属三维体下登记一条 dd_slice dsObject(名称 + 三点位姿写入 attachedParameters.slicePose),返回新 dsObjectId。只建记录、不触发后端计算——切面据「体+位姿」在客户端重采样渲染。\n\n**实测(2026-06-25)**:客户端 mock 仓储无项目上下文,当前打印的请求体 projectId 为空;接真后端前客户端需补 nav.currentProjectId()。其余字段(volumeDsId/name/axis/三点/colorScaleId)与本 schema 一致。",
"operationId": "registerSlice", "operationId": "registerSlice",
"requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SliceGenerateRequest" } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SliceGenerateRequest" } } } },
"responses": { "responses": {
@ -311,17 +311,32 @@
} }
}, },
"DsPage": { "DsPage": {
"type": "object", "description": "分页结果", "type": "object", "description": "分页结果。**注意**data/page 的行在 `data.list`(不是 data.value与 structNode/exception 等集合用 data.value 不同(实测客户端按 data.list 解析)。",
"properties": { "total": { "type": "integer" }, "value": { "type": "array", "items": { "$ref": "#/components/schemas/DsRow" } } } "properties": { "total": { "type": "integer" }, "list": { "type": "array", "items": { "$ref": "#/components/schemas/DsRow" } } }
}, },
"DsRow": { "DsRow": {
"type": "object", "description": "数据集行(列表/树节点)", "type": "object",
"description": "数据集行(data/page 通用 dsObject 行;客户端 parseDsRows 实测口径)。data/page 返回项目结构下**各类** dsObject(文件/网格/反演/三维体/切片/异常…),非仅三维体/切片。",
"required": ["id", "ddCode"], "required": ["id", "ddCode"],
"properties": { "properties": {
"id": { "type": "string" }, "dsName": { "type": "string" }, "id": { "type": "string" },
"ddCode": { "type": "string", "enum": ["dd_voxel", "dd_slice"] }, "dsName": { "type": "string", "description": "数据集名" },
"typeName": { "type": "string", "example": "三维体" }, "name": { "type": "string", "example": "电阻率反演数据", "description": "**数据集类型名**(客户端映射为 typeName注意 JSON 键是 name非 typeName)。类型筛选即按此值的范围筛。" },
"parentId": { "type": "string", "nullable": true, "description": "三维体=生成位置节点 id(GS/项目根/TM);切片=所属三维体 dsObjectId" } "ddCode": { "type": "string", "description": "通用 dd 码dd_voxel/dd_slice/dd_anomaly/dd_section/dd_inversion_data/dd_grid/dd_file 等(非仅 voxel/slice)" },
"dsTypeCode": { "type": "string", "nullable": true, "description": "数据集类型代码(如 'ERT platform inversion data'分段按它归类typeName 缺失时筛选回退它)" },
"createTime": { "type": "string", "nullable": true, "description": "创建时间(列表副标题/时间筛选用)" },
"sourceShowParentId": { "type": "string", "nullable": true, "description": "显示树父(派生数据挂源数据下);客户端 parentId 优先取它,缺则回退 parentId" },
"parentId": { "type": "string", "nullable": true, "description": "sourceShowParentId 的回退" },
"structParentId": { "type": "string", "nullable": true, "description": "结构归属父(项目根/GS/TM)——分段树据此把 ds 挂到 GS/TM 容器下" },
"structParentConfType": { "type": "integer", "nullable": true, "description": "结构父配置类型1=GS/项目根 2=TM" },
"properties": {
"description": "字段值(泛型 JSON)。**两种形态都可能**:数组 [{confFieldId,value}] 或对象 {confFieldId:value};文件型 ds 此处可能是文件元数据;派生数据可能为 null。**实测 data/page 多不返回业务字段值(装置/采集时间等),故装置类型不在此**。",
"nullable": true
},
"file": {
"type": "object", "nullable": true, "description": "文件型 ds 的文件信息",
"properties": { "name": { "type": "string" }, "url": { "type": "string" }, "size": { "type": "integer" } }
}
} }
}, },
"DsObjectDetail": { "DsObjectDetail": {