{
  "swagger": "2.0",
  "info": {
    "title": "产品服务",
    "version": "1.0.0"
  },
  "basePath": "/",
  "paths": {
    "/admin/product/booking-terms": {
      "post": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "创建预订条款",
        "description": "创建后默认启用",
        "operationId": "createUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "termsRequest",
            "description": "termsRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/预订条款请求",
              "originalRef": "预订条款请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«预订条款VO»",
              "originalRef": "统一响应结果«预订条款VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«预订条款VO»",
              "originalRef": "统一响应结果«预订条款VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/booking-terms/enabled": {
      "get": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "启用的预订条款列表",
        "description": "仅返回启用状态的条款，供产品设计时选择",
        "operationId": "listEnabledUsingGET",
        "produces": [
          "*/*"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«预订条款VO»»",
              "originalRef": "统一响应结果«List«预订条款VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«预订条款VO»»",
              "originalRef": "统一响应结果«List«预订条款VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/booking-terms/list": {
      "get": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "预订条款列表",
        "description": "返回所有预订条款（含禁用），按创建时间倒序",
        "operationId": "listUsingGET",
        "produces": [
          "*/*"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«预订条款VO»»",
              "originalRef": "统一响应结果«List«预订条款VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«预订条款VO»»",
              "originalRef": "统一响应结果«List«预订条款VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/booking-terms/{termsId}": {
      "get": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "预订条款详情",
        "operationId": "detailUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "termsId",
            "in": "path",
            "description": "预订条款ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«预订条款VO»",
              "originalRef": "统一响应结果«预订条款VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«预订条款VO»",
              "originalRef": "统一响应结果«预订条款VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "修改预订条款",
        "operationId": "updateUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "termsId",
            "in": "path",
            "description": "预订条款ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "termsRequest",
            "description": "termsRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/预订条款请求",
              "originalRef": "预订条款请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«预订条款VO»",
              "originalRef": "统一响应结果«预订条款VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«预订条款VO»",
              "originalRef": "统一响应结果«预订条款VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "删除预订条款",
        "description": "软删除，已绑定的产品不受影响（产品详情会显示为空）",
        "operationId": "deleteUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "termsId",
            "in": "path",
            "description": "预订条款ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/booking-terms/{termsId}/toggle": {
      "put": {
        "tags": [
          "预订条款管理"
        ],
        "summary": "启用/禁用预订条款",
        "description": "禁用后不再出现在产品设计的可选列表中，已绑定的产品不受影响",
        "operationId": "toggleUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "enabled",
            "in": "query",
            "description": "是否启用",
            "required": false,
            "type": "boolean",
            "allowEmptyValue": false
          },
          {
            "name": "termsId",
            "in": "path",
            "description": "预订条款ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/dining/{id}": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "更新餐饮推荐",
        "description": "更新餐饮推荐的餐厅、用餐类型（早/午/晚）、描述等信息。",
        "operationId": "updateDiningOptionUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "餐饮推荐ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "餐饮推荐请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/用餐选项请求",
              "originalRef": "用餐选项请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«用餐选项VO»",
              "originalRef": "统一响应结果«用餐选项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«用餐选项VO»",
              "originalRef": "统一响应结果«用餐选项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "行程管理"
        ],
        "summary": "删除餐饮推荐",
        "description": "删除指定的餐饮推荐记录。",
        "operationId": "deleteDiningOptionUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "餐饮推荐ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/district/search": {
      "get": {
        "tags": [
          "行政区划搜索"
        ],
        "summary": "搜索行政区划（城市/区县/镇）",
        "description": "通过高德地图 API 搜索行政区划，用于产品的出发城市和目的地城市选择。\n输入关键词（如\"丽江\"、\"黑山头\"），返回匹配的城市/区县/镇列表，包含行政区划编码。\n\n**关联字典**：\n- cities（城市）：搜索结果可用于产品行程中的城市预览\n- city（城市筛选）：搜索结果可用于资源面板城市筛选",
        "operationId": "searchUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "keywords",
            "in": "query",
            "description": "搜索关键词",
            "required": false,
            "type": "string",
            "allowEmptyValue": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«行政区划搜索结果»»",
              "originalRef": "统一响应结果«List«行政区划搜索结果»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«行政区划搜索结果»»",
              "originalRef": "统一响应结果«List«行政区划搜索结果»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/folder": {
      "post": {
        "tags": [
          "产品文件夹管理"
        ],
        "summary": "创建文件夹",
        "description": "创建产品文件夹，用于组织管理产品。支持多级目录结构。\n文件夹归属于创建人，普通管理员只能看到自己的文件夹。",
        "operationId": "createFolderUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "创建文件夹请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/创建文件夹请求",
              "originalRef": "创建文件夹请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品文件夹VO»",
              "originalRef": "统一响应结果«产品文件夹VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品文件夹VO»",
              "originalRef": "统一响应结果«产品文件夹VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/folder/tree": {
      "get": {
        "tags": [
          "产品文件夹管理"
        ],
        "summary": "获取文件夹树",
        "description": "获取当前用户可见的文件夹树形结构。\n普通管理员只能看到自己创建的文件夹，SUPER_ADMIN 可看到所有文件夹。\n返回结构为嵌套的树形列表，包含每个文件夹的子文件夹。",
        "operationId": "getFolderTreeUsingGET",
        "produces": [
          "*/*"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品文件夹VO»»",
              "originalRef": "统一响应结果«List«产品文件夹VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品文件夹VO»»",
              "originalRef": "统一响应结果«List«产品文件夹VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/folder/{folderId}": {
      "put": {
        "tags": [
          "产品文件夹管理"
        ],
        "summary": "更新文件夹",
        "description": "更新文件夹名称等信息。\n**权限说明**：普通管理员只能更新自己创建的文件夹，SUPER_ADMIN 可更新任何文件夹。",
        "operationId": "updateFolderUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "folderId",
            "in": "path",
            "description": "文件夹ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "更新文件夹请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/更新文件夹请求",
              "originalRef": "更新文件夹请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品文件夹VO»",
              "originalRef": "统一响应结果«产品文件夹VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品文件夹VO»",
              "originalRef": "统一响应结果«产品文件夹VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "产品文件夹管理"
        ],
        "summary": "删除文件夹",
        "description": "删除文件夹。如果文件夹下有产品，产品会自动移到根目录（folderId 置空）。\n普通管理员只能删除自己的文件夹，SUPER_ADMIN 可删除任何文件夹。",
        "operationId": "deleteFolderUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "folderId",
            "in": "path",
            "description": "文件夹ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/group": {
      "post": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "创建公式组",
        "description": "创建一个新的定价公式组。创建后默认为未激活状态。\n\n公式组编码（groupCode）在同一产品类型下必须唯一。\n建议命名规范：{产品类型}_PRICING_V{版本号}，如 CORE_PRICING_V2。\n\n**关联字典**：\n- product_type（产品类型，公式组所属类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "createGroupUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式组请求",
              "originalRef": "公式组请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式组VO»",
              "originalRef": "统一响应结果«公式组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式组VO»",
              "originalRef": "统一响应结果«公式组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/group/list": {
      "get": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "公式组列表",
        "description": "获取定价公式组列表，可按产品类型筛选。\n\n**公式引擎说明**：定价公式用于自动计算产品的成本价和售价。\n每种产品类型可以有多个公式组，但同一时间只能有一个激活的公式组。\n公式组包含多个步骤，按顺序执行，每步计算一个中间变量或最终结果。\n\n**关联字典**：\n- product_type（产品类型，筛选条件）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "listGroupsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productType",
            "in": "query",
            "description": "productType",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式组VO»»",
              "originalRef": "统一响应结果«List«公式组VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式组VO»»",
              "originalRef": "统一响应结果«List«公式组VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/group/{groupId}": {
      "get": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "公式组详情",
        "description": "获取公式组完整信息。\n\n**关联字典**：\n- product_type（产品类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "getGroupUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "groupId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式组VO»",
              "originalRef": "统一响应结果«公式组VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式组VO»",
              "originalRef": "统一响应结果«公式组VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "更新公式组",
        "description": "更新公式组信息。\n\n**关联字典**：\n- product_type（产品类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "updateGroupUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "groupId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式组请求",
              "originalRef": "公式组请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式组VO»",
              "originalRef": "统一响应结果«公式组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式组VO»",
              "originalRef": "统一响应结果«公式组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "删除公式组",
        "description": "删除公式组及其下所有步骤。\n**限制**：已激活的公式组不能删除，需先激活其他公式组。",
        "operationId": "deleteGroupUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "groupId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/group/{groupId}/activate": {
      "put": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "激活公式组",
        "description": "激活指定公式组，同时自动停用同产品类型下的其他公式组。\n\n同一产品类型下只能有一个激活的公式组，激活操作具有排他性。\n激活后，该产品类型的自动成本计算将使用此公式组。\n\n**关联字典**：\n- product_type（产品类型，同类型排他激活）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "activateGroupUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "groupId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/group/{groupId}/steps": {
      "get": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "公式步骤列表",
        "description": "获取公式组下所有步骤，按执行顺序（executionOrder）升序排列。\n步骤按顺序依次执行，前一步的输出变量可作为后续步骤的输入。",
        "operationId": "listStepsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "groupId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式步骤VO»»",
              "originalRef": "统一响应结果«List«公式步骤VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式步骤VO»»",
              "originalRef": "统一响应结果«List«公式步骤VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/step": {
      "post": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "创建公式步骤",
        "description": "在公式组中创建一个计算步骤。\n\n**表达式语法**：使用 Aviator 表达式引擎，支持数学运算、条件判断、内置函数等。\n示例：`baseCost = adultCount * adultUnitCost + childCount * childUnitCost`\n\n**输入变量**：可引用公式变量表中定义的变量，或前置步骤的输出变量。\n**输出变量**：每个步骤必须指定一个输出变量名，供后续步骤引用。",
        "operationId": "createStepUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式步骤请求",
              "originalRef": "公式步骤请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/step/{formulaId}": {
      "get": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "公式步骤详情",
        "description": "获取单个公式步骤的完整信息，包含表达式、输入/输出变量、执行顺序等。",
        "operationId": "getStepUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "formulaId",
            "in": "path",
            "description": "formulaId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "更新公式步骤",
        "description": "更新公式步骤的表达式、输入/输出变量等。\n每次更新会自动保存一个版本快照，可通过版本历史接口查看和回滚。",
        "operationId": "updateStepUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "formulaId",
            "in": "path",
            "description": "formulaId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式步骤请求",
              "originalRef": "公式步骤请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "删除公式步骤",
        "description": "删除指定的公式步骤。删除后其他步骤的执行顺序不会自动调整。\n**注意**：如果后续步骤引用了被删步骤的输出变量，执行时会报错。",
        "operationId": "deleteStepUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "formulaId",
            "in": "path",
            "description": "formulaId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/step/{formulaId}/rollback/{versionNum}": {
      "put": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "回滚公式步骤到指定版本",
        "description": "将公式步骤回滚到历史版本。\n回滚操作会用历史版本的表达式、变量等覆盖当前内容，并创建一个新的版本记录。",
        "operationId": "rollbackStepUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "formulaId",
            "in": "path",
            "description": "formulaId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "versionNum",
            "in": "path",
            "description": "versionNum",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式步骤VO»",
              "originalRef": "统一响应结果«公式步骤VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/step/{formulaId}/toggle": {
      "put": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "启用/禁用公式步骤",
        "description": "切换公式步骤的启用状态。\n禁用的步骤在公式执行时会被跳过，不影响其他步骤的执行。\n适用场景：临时跳过某个计算步骤进行调试或测试。",
        "operationId": "toggleStepUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "formulaId",
            "in": "path",
            "description": "formulaId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/step/{formulaId}/versions": {
      "get": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "公式步骤版本历史",
        "description": "获取公式步骤的所有历史版本列表，按版本号倒序。\n每次更新步骤表达式会自动创建新版本，方便追溯和回滚。",
        "operationId": "listVersionsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "formulaId",
            "in": "path",
            "description": "formulaId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式版本历史VO»»",
              "originalRef": "统一响应结果«List«公式版本历史VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式版本历史VO»»",
              "originalRef": "统一响应结果«List«公式版本历史VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/test": {
      "post": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "测试公式执行",
        "description": "使用自定义变量值测试公式组的执行结果，不影响任何业务数据。\n\n传入公式组ID和测试变量（变量名→值的映射），返回每个步骤的执行结果。\n适用于公式调试：验证表达式是否正确、计算结果是否符合预期。\n如果某步骤执行出错，会在结果中标明错误信息。",
        "operationId": "testFormulasUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式测试请求",
              "originalRef": "公式测试请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式测试结果VO»",
              "originalRef": "统一响应结果«公式测试结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式测试结果VO»",
              "originalRef": "统一响应结果«公式测试结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/var": {
      "post": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "创建公式变量",
        "description": "创建公式变量定义。变量名（varName）全局唯一，建议使用驼峰命名。\n可指定适用的产品类型列表（productTypes），为空则适用于所有类型。\n\n**关联字典**：\n- product_type（产品类型，变量适用范围）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "createVarUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式变量请求",
              "originalRef": "公式变量请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式变量VO»",
              "originalRef": "统一响应结果«公式变量VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式变量VO»",
              "originalRef": "统一响应结果«公式变量VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/var/list": {
      "get": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "公式变量列表",
        "description": "获取公式变量列表，可按变量分类筛选。\n\n**变量分类**：\n- INPUT：输入变量，从业务数据获取（如成人人数、资源单价）\n- INTERMEDIATE：中间变量，由公式步骤计算得出\n- OUTPUT：输出变量，最终报价结果（如总成本、售价）",
        "operationId": "listVarsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "description": "category",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式变量VO»»",
              "originalRef": "统一响应结果«List«公式变量VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«公式变量VO»»",
              "originalRef": "统一响应结果«List«公式变量VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/formula/var/{varId}": {
      "put": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "更新公式变量",
        "description": "更新公式变量定义。\n\n**关联字典**：\n- product_type（产品类型，变量适用范围）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "updateVarUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/公式变量请求",
              "originalRef": "公式变量请求"
            }
          },
          {
            "name": "varId",
            "in": "path",
            "description": "varId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式变量VO»",
              "originalRef": "统一响应结果«公式变量VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«公式变量VO»",
              "originalRef": "统一响应结果«公式变量VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "定价公式管理"
        ],
        "summary": "删除公式变量",
        "description": "删除公式变量定义。\n**注意**：如果有公式步骤引用了该变量，删除后步骤执行时会报错。建议先确认无引用再删除。",
        "operationId": "deleteVarUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "varId",
            "in": "path",
            "description": "varId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/hotel/{id}": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "更新每日住宿",
        "description": "更新住宿记录的酒店、房型、数量等信息。",
        "operationId": "updateHotelUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "住宿记录ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "每日住宿请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/每日酒店配置请求",
              "originalRef": "每日酒店配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«每日酒店VO»",
              "originalRef": "统一响应结果«每日酒店VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«每日酒店VO»",
              "originalRef": "统一响应结果«每日酒店VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "行程管理"
        ],
        "summary": "删除每日住宿",
        "description": "删除指定住宿记录。删除后该天的住宿成本会从报价中移除。",
        "operationId": "deleteHotelUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "住宿记录ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item": {
      "post": {
        "tags": [
          "产品管理"
        ],
        "summary": "创建产品（草稿）",
        "description": "创建一个新产品，初始状态为 DRAFT（草稿）。\n\n**产品类型说明**：\n- CORE：核心产品，标准旅游产品，支持上架/下架审批流程\n- GROUP：小蒙马拼团，需配合团期批次管理，按人头计价\n- CUSTOM：定制产品，由定制师为客户量身定制，按单计价\n- ROUTE：线路产品，预设线路模板，按单计价\n\n**注意事项**：\n- 创建后需依次完善行程、定价、价格日历等信息\n- CUSTOM/ROUTE 产品的价格日历存储的是整单总价，不按人头乘算\n- GROUP 产品需额外创建团期批次才能报名\n\n**关联字典**：\n- product_type（产品类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_category（产品分类）：family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾",
        "operationId": "createProductUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "创建产品请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/创建产品请求",
              "originalRef": "创建产品请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/list": {
      "get": {
        "tags": [
          "产品管理"
        ],
        "summary": "产品列表",
        "description": "分页查询产品列表，支持多维度筛选和排序。\n\n**权限说明**：\n- 普通管理员只能看到自己创建的产品\n- SUPER_ADMIN 可看到所有产品\n\n**筛选条件**：关键词（名称/副标题模糊匹配）、产品类型、状态、文件夹、产品线、季节、行程天数。\n支持多状态筛选（statuses 字段，逗号分隔）。\n\n**关联字典**：\n- product_type（产品类型，筛选条件）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status（产品状态，筛选条件+返回字段）：DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单",
        "operationId": "listProductsUsingGET_1",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "folderId",
            "in": "query",
            "description": "文件夹ID",
            "required": false,
            "type": "string",
            "x-example": "1893012345678901234"
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "搜索关键词",
            "required": false,
            "type": "string",
            "x-example": "丽江"
          },
          {
            "name": "lineId",
            "in": "query",
            "description": "产品线ID",
            "required": false,
            "type": "string",
            "x-example": "1893012345678901234"
          },
          {
            "name": "page",
            "in": "query",
            "description": "页码",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "每页条数",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 20
          },
          {
            "name": "productType",
            "in": "query",
            "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团",
            "required": false,
            "type": "string",
            "x-example": "CORE"
          },
          {
            "name": "season",
            "in": "query",
            "description": "季节筛选",
            "required": false,
            "type": "string",
            "x-example": "spring"
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "排序字段：name/tripDays/createTime/updateTime",
            "required": false,
            "type": "string",
            "x-example": "createTime"
          },
          {
            "name": "sortDir",
            "in": "query",
            "description": "排序方向：asc/desc",
            "required": false,
            "type": "string",
            "x-example": "desc"
          },
          {
            "name": "status",
            "in": "query",
            "description": "产品状态：DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED",
            "required": false,
            "type": "string",
            "x-example": "PUBLISHED"
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "多状态筛选（逗号分隔）",
            "required": false,
            "type": "string",
            "x-example": "PUBLISHED,COMPLETED"
          },
          {
            "name": "tripDays",
            "in": "query",
            "description": "行程天数",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 5
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«产品列表VO»»",
              "originalRef": "统一响应结果«分页结果«产品列表VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«产品列表VO»»",
              "originalRef": "统一响应结果«分页结果«产品列表VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/save": {
      "post": {
        "tags": [
          "产品管理"
        ],
        "summary": "保存产品（统一创建/更新）",
        "description": "统一的产品保存接口，根据是否传入 productId 自动判断创建或更新：\n\n- **不传 productId**：创建新产品（草稿），此时 productType 必填\n- **传入 productId**：更新已有产品，仅修改传入的字段\n\n**包含字段**：产品基本信息（名称/副标题/行程天数/出发城市等）、标签列表(tags)、季节列表(seasons)、轮播图/视频、展示开关、政策文本、定制师信息等全部产品属性。\n\n**权限说明**：\n- 创建：任何管理员可创建\n- 更新：普通管理员只能编辑自己创建的产品，SUPER_ADMIN 可编辑所有产品\n\n**关联字典**：\n- product_type（产品类型，创建时必填）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status（产品状态，返回字段）：DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单\n- product_category（产品分类）：family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾",
        "operationId": "saveProductUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "保存产品请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/保存产品请求（创建或更新）",
              "originalRef": "保存产品请求（创建或更新）"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}": {
      "get": {
        "tags": [
          "产品管理"
        ],
        "summary": "获取产品详情",
        "description": "获取产品完整信息，包括基本信息、行程天列表、定价配置、费用项等。\n返回数据包含关联的行程节点资源详情，适用于产品编辑页面。\n不过滤产品状态，所有状态的产品都可查看。\n\n**关联字典**：\n- product_type（产品类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status（产品状态）：DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单\n- product_category（产品分类）：family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾",
        "operationId": "getProductUsingGET_1",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "产品管理"
        ],
        "summary": "更新产品",
        "description": "更新产品基本信息，仅传入需要修改的字段，未传字段不会被覆盖。\n\n**权限说明**：\n- 普通管理员只能编辑自己创建的产品\n- SUPER_ADMIN 可编辑所有产品\n\n**注意**：行程、定价、价格日历等通过各自独立的接口管理，不在此接口中处理。\n\n**关联字典**：\n- product_type（产品类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_category（产品分类）：family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾",
        "operationId": "updateProductUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "更新产品请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/更新产品请求",
              "originalRef": "更新产品请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "产品管理"
        ],
        "summary": "删除产品",
        "description": "软删除产品（设置 deleted_at 字段）。\n\n**权限说明**：普通管理员只能删除自己创建的产品，SUPER_ADMIN 可删除所有产品。\n**限制**：已上架（PUBLISHED）的产品不能直接删除，需先下架。",
        "operationId": "deleteProductUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch": {
      "post": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "创建主批次",
        "description": "为 GROUP（小蒙马拼团）产品创建一个团期主批次。\n\n**仅适用于 GROUP 产品类型**。\n每个批次有独立的出发日期、报名截止日期、人数上限。\n创建后状态为 PENDING（待开放），需手动开启报名。\n\n**批次状态流转**：PENDING → ENROLLING（报名中）→ CONFIRMED（已成团）→ CLOSED（已关闭）\n任意报名状态均可被解散（DISBANDED）。\n\n**关联字典**：\n- product_type（产品类型，仅限GROUP）：GROUP=小蒙马拼团\n- batch_status（批次状态）：PENDING=待开放, ENROLLING=报名中, CONFIRMED=已成团, FULL=已满员, CLOSED=已关闭, DISBANDED=已解散, IN_PROGRESS=进行中, FINISHED=已结束",
        "operationId": "createBatchUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/创建拼团批次请求",
              "originalRef": "创建拼团批次请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次VO»",
              "originalRef": "统一响应结果«团批次VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次VO»",
              "originalRef": "统一响应结果«团批次VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/list": {
      "get": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "批次列表(树形)",
        "description": "获取产品所有批次，以树形结构返回（主批次包含子批次列表）。\n按出发日期升序排列，包含每个批次的报名人数和剩余名额。\n\n**关联字典**：\n- batch_status（批次状态，返回字段）：PENDING=待开放, ENROLLING=报名中, CONFIRMED=已成团, FULL=已满员, CLOSED=已关闭, DISBANDED=已解散, IN_PROGRESS=进行中, FINISHED=已结束",
        "operationId": "listBatchesUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次VO»»",
              "originalRef": "统一响应结果«List«团批次VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次VO»»",
              "originalRef": "统一响应结果«List«团批次VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}": {
      "get": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "批次详情",
        "description": "获取单个批次的完整信息，包括批次基本信息、服务人员配置、套餐组合等。\n\n**关联字典**：\n- batch_status（批次状态）：PENDING=待开放, ENROLLING=报名中, CONFIRMED=已成团, FULL=已满员, CLOSED=已关闭, DISBANDED=已解散, IN_PROGRESS=进行中, FINISHED=已结束\n- staff_type（人员类型，服务人员配置）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "getBatchDetailUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次详情VO»",
              "originalRef": "统一响应结果«团批次详情VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次详情VO»",
              "originalRef": "统一响应结果«团批次详情VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "更新批次",
        "description": "更新批次基本信息。仅传入需要修改的字段。\n已有报名人员的批次修改人数上限时，不能低于已报名人数。",
        "operationId": "updateBatchUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/更新拼团批次请求",
              "originalRef": "更新拼团批次请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次VO»",
              "originalRef": "统一响应结果«团批次VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次VO»",
              "originalRef": "统一响应结果«团批次VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "删除批次",
        "description": "删除批次（软删除）。\n**限制**：已有报名人员的批次不能直接删除，需先解散批次。",
        "operationId": "deleteBatchUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}/close": {
      "put": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "关闭报名(ENROLLING/CONFIRMED->CLOSED)",
        "description": "关闭批次报名，不再接受新的报名。\n已报名的订单不受影响，仅阻止新增报名。\n适用于报名截止日期到达或手动提前关闭的场景。",
        "operationId": "closeEnrollmentUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}/disband": {
      "post": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "解散批次",
        "description": "解散批次并处理已报名的订单。\n\n**重要**：解散操作会触发以下流程：\n1. 批次状态变更为 DISBANDED\n2. 通过 MQ 消息通知订单服务，自动取消该批次下的所有未完成订单\n3. 已支付订单会触发退款流程\n\n必须填写解散原因（如：报名人数不足、行程调整等）。",
        "operationId": "disbandBatchUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/解散批次请求",
              "originalRef": "解散批次请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}/open": {
      "put": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "开启报名(PENDING->ENROLLING)",
        "description": "将批次从 PENDING 状态变更为 ENROLLING（报名中）。\n开启后用户可在小程序端看到该团期并报名。\n前提条件：产品必须已上架（PUBLISHED）。",
        "operationId": "openEnrollmentUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}/staff": {
      "get": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "服务人员列表",
        "description": "**关联字典**：\n- staff_type（人员类型）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "listStaffUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»",
              "originalRef": "统一响应结果«List«团批次服务人员VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»",
              "originalRef": "统一响应结果«List«团批次服务人员VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "post": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "保存服务人员(全量替换)",
        "description": "保存批次的服务人员配置，采用全量替换模式（先删后增）。\n\n每次提交完整的人员列表，替换掉该批次原有的所有人员配置。\n人员来源于资源服务的人员库，通过 staffId 关联。\n**角色类型**：LEADER(领队)/PHOTOGRAPHER(摄影师)/DRIVER(司机)/OTHER(其他)\n\n**关联字典**：\n- staff_type（人员类型）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "saveStaffUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "requests",
            "description": "requests",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/批次服务人员分配请求",
                "originalRef": "批次服务人员分配请求"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»",
              "originalRef": "统一响应结果«List«团批次服务人员VO»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»",
              "originalRef": "统一响应结果«List«团批次服务人员VO»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}/staff/copy-from/{sourceId}": {
      "post": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "从其他批次复制服务人员",
        "description": "将源批次的服务人员配置复制到当前批次（全量替换当前批次已有人员）。\n适用场景：多个团期使用相同的服务人员班底。",
        "operationId": "copyStaffUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sourceId",
            "in": "path",
            "description": "sourceId",
            "required": true,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»",
              "originalRef": "统一响应结果«List«团批次服务人员VO»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»",
              "originalRef": "统一响应结果«List«团批次服务人员VO»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/batch/{batchId}/sub-batch": {
      "post": {
        "tags": [
          "拼团批次管理"
        ],
        "summary": "创建子批次(溢出)",
        "description": "当主批次人数满员时，创建子批次接收溢出报名。\n\n子批次共享主批次的出发日期和行程，但有独立的人数上限和报名人数。\n适用场景：某团期特别火爆，需要扩容但希望分开管理。\n子批次在列表中显示为主批次的子级节点。",
        "operationId": "createSubBatchUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "batchId",
            "in": "path",
            "description": "batchId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "productId",
            "required": true,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "request",
            "required": true,
            "schema": {
              "$ref": "#/definitions/创建拼团批次请求",
              "originalRef": "创建拼团批次请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次VO»",
              "originalRef": "统一响应结果«团批次VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«团批次VO»",
              "originalRef": "统一响应结果«团批次VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/copy": {
      "post": {
        "tags": [
          "产品管理"
        ],
        "summary": "复制产品",
        "description": "深度复制产品，包括行程天、行程节点、定价配置、住宿、餐饮、物资、人员配置等所有关联数据。\n\n复制后的产品状态为 DRAFT，名称自动添加\"(副本)\"后缀。\n适用场景：基于已有产品快速创建新产品。\n\n**关联字典**：\n- product_type（产品类型，返回字段）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status（产品状态，复制后固定为 DRAFT）",
        "operationId": "copyProductUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/cost-item": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "添加费用项",
        "description": "添加产品的费用包含/不包含说明项。\n\n用于在产品详情页展示\"费用包含\"和\"费用不包含\"信息。\n仅用于前端展示，不参与报价计算。",
        "operationId": "addCostItemUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "费用项请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/成本项请求",
              "originalRef": "成本项请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品成本项VO»",
              "originalRef": "统一响应结果«产品成本项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品成本项VO»",
              "originalRef": "统一响应结果«产品成本项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/cost-item/{itemId}": {
      "put": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "更新费用项",
        "description": "更新费用包含/不包含说明项的内容。仅用于前端展示，不参与报价计算。",
        "operationId": "updateCostItemUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "费用项ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "费用项请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/成本项请求",
              "originalRef": "成本项请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品成本项VO»",
              "originalRef": "统一响应结果«产品成本项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品成本项VO»",
              "originalRef": "统一响应结果«产品成本项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "删除费用项",
        "description": "删除费用包含/不包含说明项。",
        "operationId": "deleteCostItemUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "费用项ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/cost-items": {
      "get": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "获取费用项列表",
        "description": "获取产品的所有费用包含/不包含说明项列表。",
        "operationId": "listCostItemsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品成本项VO»»",
              "originalRef": "统一响应结果«List«产品成本项VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品成本项VO»»",
              "originalRef": "统一响应结果«List«产品成本项VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/custom-fee": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "添加自定义费用",
        "description": "添加产品级别的自定义费用项，直接设置金额，参与成本自动计算。\n\n与额外成本关联不同，自定义费用不关联资源服务的费用项，而是直接指定费用名称和金额。\n适用于临时性或一次性的费用。",
        "operationId": "addCustomFeeUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "自定义费用请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/自定义费用项请求",
              "originalRef": "自定义费用项请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»",
              "originalRef": "统一响应结果«产品自定义费用项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»",
              "originalRef": "统一响应结果«产品自定义费用项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/custom-fee/{feeId}": {
      "put": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "更新自定义费用",
        "description": "更新自定义费用项的名称、金额等信息。修改后会影响成本自动计算结果。",
        "operationId": "updateCustomFeeUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "feeId",
            "in": "path",
            "description": "自定义费用ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "自定义费用请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/自定义费用项请求",
              "originalRef": "自定义费用项请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»",
              "originalRef": "统一响应结果«产品自定义费用项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»",
              "originalRef": "统一响应结果«产品自定义费用项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "删除自定义费用",
        "description": "删除自定义费用项。删除后该费用不再计入成本自动计算。",
        "operationId": "deleteCustomFeeUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "feeId",
            "in": "path",
            "description": "自定义费用ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/custom-fees": {
      "get": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "获取自定义费用列表",
        "description": "获取产品的所有自定义费用项列表。",
        "operationId": "listCustomFeesUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品自定义费用项VO»»",
              "originalRef": "统一响应结果«List«产品自定义费用项VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品自定义费用项VO»»",
              "originalRef": "统一响应结果«List«产品自定义费用项VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "更新行程天",
        "description": "更新指定天的行程信息，如当天主题、概述等。\n行程天在创建产品时根据 tripDays 自动生成，不支持单独增删，只能更新。\ndayNumber 从 1 开始，对应第几天的行程。",
        "operationId": "updateDayUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "行程天请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/行程天请求",
              "originalRef": "行程天请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程天VO»",
              "originalRef": "统一响应结果«行程天VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程天VO»",
              "originalRef": "统一响应结果«行程天VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}/dining": {
      "get": {
        "tags": [
          "行程管理"
        ],
        "summary": "获取某天的餐厅推荐列表",
        "description": "获取指定天的所有餐饮推荐，包含餐厅名称、用餐类型、描述等信息。",
        "operationId": "listDiningUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«用餐选项VO»»",
              "originalRef": "统一响应结果«List«用餐选项VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«用餐选项VO»»",
              "originalRef": "统一响应结果«List«用餐选项VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "post": {
        "tags": [
          "行程管理"
        ],
        "summary": "添加每日餐厅推荐",
        "description": "为指定天添加餐饮推荐，关联资源服务中的餐厅。\n用于展示当天的用餐安排，可按早/午/晚分类。",
        "operationId": "addDiningOptionUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "餐饮推荐请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/用餐选项请求",
              "originalRef": "用餐选项请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«用餐选项VO»",
              "originalRef": "统一响应结果«用餐选项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«用餐选项VO»",
              "originalRef": "统一响应结果«用餐选项VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}/hotel": {
      "post": {
        "tags": [
          "行程管理"
        ],
        "summary": "添加每日住宿",
        "description": "为指定天添加住宿安排，关联资源服务中的酒店和房型。\n每天可以有多个住宿选项（如不同档次），参与成本自动计算。\n住宿费用会体现在价格日历的成本计算中。",
        "operationId": "addHotelUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "每日住宿请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/每日酒店配置请求",
              "originalRef": "每日酒店配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«每日酒店VO»",
              "originalRef": "统一响应结果«每日酒店VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«每日酒店VO»",
              "originalRef": "统一响应结果«每日酒店VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}/hotels": {
      "get": {
        "tags": [
          "行程管理"
        ],
        "summary": "获取某天的住宿列表",
        "description": "获取指定天的所有住宿安排，包含酒店名称、房型、数量等信息。",
        "operationId": "listHotelsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«每日酒店VO»»",
              "originalRef": "统一响应结果«List«每日酒店VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«每日酒店VO»»",
              "originalRef": "统一响应结果«List«每日酒店VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}/node": {
      "post": {
        "tags": [
          "行程管理"
        ],
        "summary": "添加行程节点",
        "description": "在指定天添加一个行程节点。节点是行程的最小单元，可关联资源服务中的景区、酒店、活动等。\n\n**节点类型**：TRANSPORT(交通)/SCENIC(景区)/RESTAURANT(餐厅)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)/SERVICE(服务)/NOTE(备注)\n\n**CUSTOM 定制产品特有**：可通过 familyIds 指定节点所属的家庭分组，实现按家庭分配行程。\n新建节点自动追加到当天最后位置，可通过排序接口调整顺序。\n\n**关联字典**：\n- city（城市，资源面板筛选用）：用于在添加节点时按城市筛选可选资源",
        "operationId": "createNodeUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "创建节点请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/创建行程节点请求",
              "originalRef": "创建行程节点请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}/nodes": {
      "get": {
        "tags": [
          "行程管理"
        ],
        "summary": "获取某天的节点列表",
        "description": "获取指定天的所有行程节点，按排序顺序返回。\n每个节点包含类型、名称、时间、关联资源信息、图片等完整数据。\n\n**关联字典**：\n- city（城市）：资源面板城市筛选\n- cities（城市ID映射）：城市名称预览",
        "operationId": "listNodesUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«行程节点VO»»",
              "originalRef": "统一响应结果«List«行程节点VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«行程节点VO»»",
              "originalRef": "统一响应结果«List«行程节点VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/day/{dayNumber}/nodes/sort": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "行程节点拖拽排序",
        "description": "重新排列指定天的所有行程节点顺序。前端拖拽排序后，将新的节点ID顺序全量提交。\nnodeIds 列表中的顺序即为新的排序顺序（从上到下）。",
        "operationId": "sortNodesUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "dayNumber",
            "in": "path",
            "description": "天数编号",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "节点排序请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/节点排序请求",
              "originalRef": "节点排序请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/days": {
      "get": {
        "tags": [
          "行程管理"
        ],
        "summary": "获取行程天列表",
        "description": "获取产品所有行程天的信息，按 dayNumber 升序排列。\n每一天包含当天主题、概述等信息，不包含节点详情（节点通过单独接口获取）。",
        "operationId": "listDaysUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«行程天VO»»",
              "originalRef": "统一响应结果«List«行程天VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«行程天VO»»",
              "originalRef": "统一响应结果«List«行程天VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/extra-cost": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "添加额外成本关联",
        "description": "关联资源服务中的费用项（cost_item）到产品，参与成本自动计算。\n\n额外成本是指不包含在行程节点中、但需要计入总成本的费用。\n例如：导游服务费、保险费、通讯费等固定运营开支。",
        "operationId": "addExtraCostUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "额外成本请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/额外成本请求",
              "originalRef": "额外成本请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品额外成本VO»",
              "originalRef": "统一响应结果«产品额外成本VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品额外成本VO»",
              "originalRef": "统一响应结果«产品额外成本VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/extra-cost/{ecId}": {
      "put": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "更新额外成本关联",
        "description": "更新额外成本关联的费用项、数量等信息。修改后会影响成本自动计算结果。",
        "operationId": "updateExtraCostUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "ecId",
            "in": "path",
            "description": "额外成本ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "额外成本请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/额外成本请求",
              "originalRef": "额外成本请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品额外成本VO»",
              "originalRef": "统一响应结果«产品额外成本VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品额外成本VO»",
              "originalRef": "统一响应结果«产品额外成本VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "删除额外成本关联",
        "description": "删除额外成本关联记录。删除后该费用项不再计入成本自动计算。",
        "operationId": "removeExtraCostUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "ecId",
            "in": "path",
            "description": "额外成本ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/extra-costs": {
      "get": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "获取额外成本关联列表",
        "description": "获取产品关联的所有额外成本项列表，包含费用项名称、金额等信息。",
        "operationId": "listExtraCostsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品额外成本VO»»",
              "originalRef": "统一响应结果«List«产品额外成本VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品额外成本VO»»",
              "originalRef": "统一响应结果«List«产品额外成本VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/families": {
      "get": {
        "tags": [
          "家庭分组管理"
        ],
        "summary": "获取家庭分组列表",
        "description": "获取产品的家庭分组列表，按排序序号升序。\n\n**仅适用于 CUSTOM（定制）产品**。\n家庭分组用于将定制产品的行程按家庭单位分配，每个家庭可以有不同的人数和行程安排。\n行程节点通过 familyIds 字段关联到具体的家庭分组。",
        "operationId": "listFamiliesUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«家庭分组VO»»",
              "originalRef": "统一响应结果«List«家庭分组VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«家庭分组VO»»",
              "originalRef": "统一响应结果«List«家庭分组VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/family": {
      "post": {
        "tags": [
          "家庭分组管理"
        ],
        "summary": "添加家庭分组",
        "description": "为 CUSTOM 定制产品添加一个家庭分组，指定家庭名称和各类型人数。\n添加后可在行程节点中关联此家庭，实现按家庭分配行程。",
        "operationId": "addFamilyUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "家庭分组请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/家庭分组保存请求",
              "originalRef": "家庭分组保存请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«家庭分组VO»",
              "originalRef": "统一响应结果«家庭分组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«家庭分组VO»",
              "originalRef": "统一响应结果«家庭分组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/family/{familyId}": {
      "put": {
        "tags": [
          "家庭分组管理"
        ],
        "summary": "更新家庭分组",
        "description": "更新家庭分组的名称、各类型人数等信息。\n**仅适用于 CUSTOM（定制）产品**。",
        "operationId": "updateFamilyUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "familyId",
            "in": "path",
            "description": "家庭ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "家庭分组请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/家庭分组保存请求",
              "originalRef": "家庭分组保存请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«家庭分组VO»",
              "originalRef": "统一响应结果«家庭分组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«家庭分组VO»",
              "originalRef": "统一响应结果«家庭分组VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "家庭分组管理"
        ],
        "summary": "删除家庭分组",
        "description": "删除家庭分组。如果有行程节点通过 familyIds 关联了该分组，需要手动移除关联。\n**仅适用于 CUSTOM（定制）产品**。",
        "operationId": "deleteFamilyUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "familyId",
            "in": "path",
            "description": "家庭ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/generate-route-map": {
      "post": {
        "tags": [
          "产品管理"
        ],
        "summary": "手动生成路径图",
        "description": "根据产品行程节点的经纬度信息，调用地图API生成行程路径图。\n\n通常在行程编辑完成后手动触发，生成结果为 OSS 图片 URL。\n如果行程节点没有经纬度信息，则无法生成路径图。",
        "operationId": "generateRouteMapUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«string»",
              "originalRef": "统一响应结果«string»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«string»",
              "originalRef": "统一响应结果«string»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/group-quote": {
      "get": {
        "tags": [
          "报价计算"
        ],
        "summary": "GROUP产品报价（按套餐组合）",
        "description": "为 GROUP（小蒙马拼团）产品按团期批次计算报价。\n\n**算价逻辑**：\n- 单房差 = 酒店总成本 ÷ 每房成人数（团期配置）\n- 成人价 = 单房差 + 人均成本 + 利润\n- 儿童价 = 人均成本 + 利润（不含酒店）\n- 空床补差 = (房间数×每房成人数 - 成人数) × 单房差\n- 总售价 = 成人价×成人数 + 儿童价×儿童数 + 空床补差\n\n**关联字典**：\n- product_type（产品类型，仅限GROUP）：GROUP=小蒙马拼团",
        "operationId": "calculateGroupQuoteUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "adultCount",
            "in": "query",
            "description": "成人人数",
            "required": false,
            "type": "integer",
            "default": 2,
            "format": "int32",
            "allowEmptyValue": false
          },
          {
            "name": "batchId",
            "in": "query",
            "description": "团期ID",
            "required": false,
            "type": "integer",
            "format": "int64",
            "allowEmptyValue": false
          },
          {
            "name": "childCount",
            "in": "query",
            "description": "儿童人数",
            "required": false,
            "type": "integer",
            "default": 0,
            "format": "int32",
            "allowEmptyValue": false
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "roomCount",
            "in": "query",
            "description": "房间数",
            "required": false,
            "type": "integer",
            "default": 1,
            "format": "int32",
            "allowEmptyValue": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«GROUP产品报价结果»",
              "originalRef": "统一响应结果«GROUP产品报价结果»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«GROUP产品报价结果»",
              "originalRef": "统一响应结果«GROUP产品报价结果»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/move": {
      "put": {
        "tags": [
          "产品管理"
        ],
        "summary": "移动产品到文件夹",
        "description": "将产品移动到指定文件夹，或移出文件夹（folderId 传空字符串或 null）。\n文件夹用于组织管理产品，不影响产品的业务逻辑。",
        "operationId": "moveProductUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "移动产品请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/产品移动请求",
              "originalRef": "产品移动请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/price-calendar": {
      "get": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "获取月度价格日历",
        "description": "获取指定月份的价格日历数据列表。\n\n每条数据包含：日期、成人售价/成本价、儿童售价/成本价、库存、状态（OPEN/CLOSED）等。\n**CORE/GROUP 产品**：价格为单人价格，按人头 × 价格计算总价。\n**CUSTOM/ROUTE 产品**：价格为整单总价，不乘以人头数。",
        "operationId": "getMonthCalendarUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "description": "月份",
            "required": false,
            "type": "integer",
            "format": "int32",
            "allowEmptyValue": false
          },
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "year",
            "in": "query",
            "description": "年份",
            "required": false,
            "type": "integer",
            "format": "int32",
            "allowEmptyValue": false
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»",
              "originalRef": "统一响应结果«List«产品价格日历VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»",
              "originalRef": "统一响应结果«List«产品价格日历VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "设置单日价格",
        "description": "设置或更新指定日期的价格和库存。如果该日期已有记录则更新，否则新建。\n\n可设置成人售价/成本价、儿童售价/成本价、库存数量、状态（OPEN/CLOSED）。\n状态为 CLOSED 的日期不会出现在小程序端的可选日期中。",
        "operationId": "setDayPriceUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "价格日历请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/价格日历请求",
              "originalRef": "价格日历请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品价格日历VO»",
              "originalRef": "统一响应结果«产品价格日历VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品价格日历VO»",
              "originalRef": "统一响应结果«产品价格日历VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/price-calendar/auto-calc": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "自动计算成本并同步到价格日历",
        "description": "根据出发日期和人数，自动计算成本并将结果写入价格日历。\n\n与测算预览不同，此接口会实际更新价格日历数据。\n计算逻辑：查询各资源的价格日历 → 汇总成本 → 应用公式和利润规则 → 写入结果。\n\n**关联字典**：\n- vehicle_type（车型）：车辆费用成本计算",
        "operationId": "autoCalcCostUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "报价请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/报价请求",
              "originalRef": "报价请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«报价结果VO»",
              "originalRef": "统一响应结果«报价结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«报价结果VO»",
              "originalRef": "统一响应结果«报价结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/price-calendar/batch": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "批量设置价格",
        "description": "批量设置日期范围内的价格和库存，支持按星期筛选。\n\n指定 startDate 和 endDate 日期范围，可选 selectedWeekdays 过滤星期几。\n示例：设置5月1日-5月31日的工作日（周一到周五=[1,2,3,4,5]）价格。\nselectedWeekdays 为空时，范围内所有日期都会被设置。",
        "operationId": "batchSetPricesUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "批量价格请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/批量设置价格日历请求",
              "originalRef": "批量设置价格日历请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»",
              "originalRef": "统一响应结果«List«产品价格日历VO»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»",
              "originalRef": "统一响应结果«List«产品价格日历VO»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/price-calendar/calc-preview": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "测算预览（不写入数据库）",
        "description": "根据行程中的资源价格日历，自动计算指定日期的成本价和售价，仅预览不保存。\n\n用于在设置价格日历前预览自动计算的结果。\n计算逻辑：汇总当天所有行程节点关联资源的价格 → 应用公式引擎 → 加上利润。\nGROUP 产品需要传 adultCount 参数（影响均摊计算）。\n\n**关联字典**：\n- vehicle_type（车型）：车辆费用成本测算",
        "operationId": "calcPreviewUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "测算预览请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/成本预览请求",
              "originalRef": "成本预览请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«成本预览VO»",
              "originalRef": "统一响应结果«成本预览VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«成本预览VO»",
              "originalRef": "统一响应结果«成本预览VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/price-calendar/recalculate": {
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "重新测算所有自动测算日期的价格",
        "description": "重新计算价格日历中所有 costAutoCalc=true 的日期的成本价和售价。\n\n适用场景：资源价格调整后，批量刷新所有自动计算的价格日历。\n返回更新的日期数量和详情。手动设置的价格（costAutoCalc=false）不受影响。",
        "operationId": "recalculateUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Map«string,object»»",
              "originalRef": "统一响应结果«Map«string,object»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Map«string,object»»",
              "originalRef": "统一响应结果«Map«string,object»»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/pricing": {
      "get": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "获取定价规则",
        "description": "获取产品的定价配置，包括定价模式、利润设置、儿童/婴儿价格、支付方式等。\n如果产品尚未设置定价规则，返回 null。\n\n**关联字典**：\n- vehicle_type（车型）：费用配置中车辆相关成本显示",
        "operationId": "getPricingUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品定价配置VO»",
              "originalRef": "统一响应结果«产品定价配置VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品定价配置VO»",
              "originalRef": "统一响应结果«产品定价配置VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "post": {
        "tags": [
          "定价与费用管理"
        ],
        "summary": "保存定价规则",
        "description": "保存或更新产品的定价配置（一个产品仅一条定价记录，重复调用为覆盖更新）。\n\n**定价模式**：\n- AUTO：自动计算，通过公式引擎根据行程资源价格自动测算成本和售价\n- MANUAL：手动定价，直接在价格日历中手动设置每日价格\n- CUSTOM：定制定价，设置整单总价（customTotalPrice），不按人头\n\n**利润模式**（AUTO 模式下生效）：\n- FIXED：固定金额加价，售价 = 成本 + profitAmount\n- PERCENT：百分比加价，售价 = 成本 × (1 + markupPercent/100)\n\n**支付方式**：FULL=全款支付，DEPOSIT=定金+尾款（需设置 depositRatio 或 depositAmount）\n\n**关联字典**：\n- vehicle_type（车型）：费用配置中车辆相关成本计算",
        "operationId": "savePricingUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "定价规则请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/定价配置请求",
              "originalRef": "定价配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品定价配置VO»",
              "originalRef": "统一响应结果«产品定价配置VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品定价配置VO»",
              "originalRef": "统一响应结果«产品定价配置VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/quote": {
      "post": {
        "tags": [
          "报价计算"
        ],
        "summary": "计算报价",
        "description": "根据出发日期和人数组合，计算产品的完整报价。\n\n**计算流程**：\n1. 从价格日历获取指定日期的单价\n2. 按人数类型分别计算：成人 × 成人价、儿童 × 儿童价\n3. 小童按儿童价 × 折扣比例（childDiscountPercent）计算\n4. 婴儿使用固定价格（babyPrice）\n5. 儿童加床（childNeedBed=true）额外加收 childWithBed 费用\n\n**CUSTOM/ROUTE 产品**：价格日历存的是整单总价，不按人头乘算。\n**GROUP 产品**：建议使用 group-quote 接口，支持套餐组合报价。\n\n**关联字典**：\n- product_type（产品类型，影响计算逻辑）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "calculateQuoteUsingPOST_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "报价请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/报价请求",
              "originalRef": "报价请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«报价结果VO»",
              "originalRef": "统一响应结果«报价结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«报价结果VO»",
              "originalRef": "统一响应结果«报价结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/share-link": {
      "post": {
        "tags": [
          "产品管理"
        ],
        "summary": "生成定制产品分享链接",
        "description": "为 CUSTOM（定制）产品生成小程序分享链接，用于定制师发送给客户查看方案。\n\n**限制**：仅 CUSTOM 类型且状态为 COMPLETED 的产品可生成。\n**权限**：普通管理员只能为自己创建的产品生成链接，SUPER_ADMIN 不受限制。",
        "operationId": "generateShareLinkUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分享链接响应»",
              "originalRef": "统一响应结果«分享链接响应»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分享链接响应»",
              "originalRef": "统一响应结果«分享链接响应»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/staff-config": {
      "post": {
        "tags": [
          "行程管理"
        ],
        "summary": "添加人员配置",
        "description": "为产品添加服务人员配置（如领队、摄影师、司机等），关联资源服务中的人员。\n人员配置是产品级别的模板，GROUP 产品的实际人员在团期批次中单独分配。\n人员费用参与成本自动计算。\n\n**关联字典**：\n- staff_type（人员类型）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "addStaffConfigUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "人员配置请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/人员配置请求",
              "originalRef": "人员配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品人员配置VO»",
              "originalRef": "统一响应结果«产品人员配置VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品人员配置VO»",
              "originalRef": "统一响应结果«产品人员配置VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/staff-configs": {
      "get": {
        "tags": [
          "行程管理"
        ],
        "summary": "获取产品人员配置列表",
        "description": "**关联字典**：\n- staff_type（人员类型）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "listStaffConfigsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品人员配置VO»»",
              "originalRef": "统一响应结果«List«产品人员配置VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品人员配置VO»»",
              "originalRef": "统一响应结果«List«产品人员配置VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/status": {
      "put": {
        "tags": [
          "产品管理"
        ],
        "summary": "产品状态变更（上架/下架/完成）",
        "description": "根据产品类型，状态流转规则不同：\n\n**核心产品(CORE) / 小蒙马(GROUP)**：支持上架/下架，需企微审批\n- DRAFT → PENDING_REVIEW → REVIEWED → PUBLISHED（上架）\n- PUBLISHED → UNPUBLISHED（下架）\n- UNPUBLISHED → PUBLISHED（重新上架）\n- REJECTED → DRAFT（驳回后重新编辑）\n\n**定制产品(CUSTOM)**：仅支持完成，无上架/下架概念\n- DRAFT → COMPLETED（定制师完成设计）\n- COMPLETED → ORDERED（客户下单，系统自动变更）\n- ORDERED → COMPLETED（订单取消/退款后回退）\n\n**关联字典**：\n- product_type（产品类型，影响状态流转规则）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status（产品状态，请求+返回字段）：DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单",
        "operationId": "changeStatusUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "状态变更请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/产品状态变更请求",
              "originalRef": "产品状态变更请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/item/{productId}/supplies": {
      "get": {
        "tags": [
          "行程管理"
        ],
        "summary": "获取产品物资列表",
        "description": "获取产品关联的所有物资配品，包含物资名称、数量、单价等信息。",
        "operationId": "listSuppliesUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品物资VO»»",
              "originalRef": "统一响应结果«List«产品物资VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品物资VO»»",
              "originalRef": "统一响应结果«List«产品物资VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "post": {
        "tags": [
          "行程管理"
        ],
        "summary": "添加物资配品",
        "description": "为产品添加物资配品（如帐篷、睡袋、登山杖等），关联资源服务中的物资。\n物资配品是产品级别的，不区分具体哪一天，参与成本计算。",
        "operationId": "addSuppliesUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "物资配品请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/物资配置请求",
              "originalRef": "物资配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品物资VO»",
              "originalRef": "统一响应结果«产品物资VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品物资VO»",
              "originalRef": "统一响应结果«产品物资VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/line": {
      "post": {
        "tags": [
          "产品线管理"
        ],
        "summary": "创建产品线",
        "description": "创建产品线，用于对产品进行业务分类（如：亲子游、蜜月游、探险游等）。\n产品线在小程序端可作为筛选条件，帮助用户快速找到感兴趣的产品类别。",
        "operationId": "createLineUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "request",
            "description": "创建产品线请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/创建产品线请求",
              "originalRef": "创建产品线请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品线VO»",
              "originalRef": "统一响应结果«产品线VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品线VO»",
              "originalRef": "统一响应结果«产品线VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/line/active": {
      "get": {
        "tags": [
          "产品线管理"
        ],
        "summary": "所有启用的产品线",
        "description": "获取所有启用状态的产品线，不分页。\n适用于产品编辑时的产品线下拉选择，以及小程序端的筛选项。",
        "operationId": "listAllActiveUsingGET",
        "produces": [
          "*/*"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品线VO»»",
              "originalRef": "统一响应结果«List«产品线VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«产品线VO»»",
              "originalRef": "统一响应结果«List«产品线VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/line/list": {
      "get": {
        "tags": [
          "产品线管理"
        ],
        "summary": "产品线列表（分页）",
        "description": "分页查询产品线列表，支持按名称关键词筛选。",
        "operationId": "listLinesUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "keyword",
            "in": "query",
            "description": "搜索关键词",
            "required": false,
            "type": "string",
            "x-example": "丽江"
          },
          {
            "name": "page",
            "in": "query",
            "description": "页码",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "每页条数",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 20
          },
          {
            "name": "status",
            "in": "query",
            "description": "产品线状态：ACTIVE=启用 INACTIVE=停用",
            "required": false,
            "type": "string",
            "x-example": "ACTIVE"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«产品线VO»»",
              "originalRef": "统一响应结果«分页结果«产品线VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«产品线VO»»",
              "originalRef": "统一响应结果«分页结果«产品线VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/line/{lineId}": {
      "get": {
        "tags": [
          "产品线管理"
        ],
        "summary": "产品线详情",
        "description": "获取指定产品线的完整信息。",
        "operationId": "getLineUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "lineId",
            "in": "path",
            "description": "产品线ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品线VO»",
              "originalRef": "统一响应结果«产品线VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品线VO»",
              "originalRef": "统一响应结果«产品线VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "产品线管理"
        ],
        "summary": "更新产品线",
        "description": "更新产品线名称、描述、状态等信息。",
        "operationId": "updateLineUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "lineId",
            "in": "path",
            "description": "产品线ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "更新产品线请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/更新产品线请求",
              "originalRef": "更新产品线请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品线VO»",
              "originalRef": "统一响应结果«产品线VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品线VO»",
              "originalRef": "统一响应结果«产品线VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "产品线管理"
        ],
        "summary": "删除产品线",
        "description": "删除产品线（软删除）。已关联产品的产品线仍可删除，但关联产品的产品线字段不会被清空。",
        "operationId": "deleteLineUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "lineId",
            "in": "path",
            "description": "产品线ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/node/{nodeId}": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "更新行程节点",
        "description": "更新行程节点信息，仅传入需要修改的字段。\n可修改节点名称、时间、关联资源、图片、描述等。\n\n**关联字典**：\n- city（城市）：资源面板城市筛选\n- cities（城市ID映射）：城市名称预览",
        "operationId": "updateNodeUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "nodeId",
            "in": "path",
            "description": "行程节点ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "更新节点请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/更新行程节点请求",
              "originalRef": "更新行程节点请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "行程管理"
        ],
        "summary": "删除行程节点",
        "description": "删除指定行程节点，同天其他节点的排序自动调整。",
        "operationId": "deleteNodeUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "nodeId",
            "in": "path",
            "description": "行程节点ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/node/{nodeId}/copy": {
      "post": {
        "tags": [
          "行程管理"
        ],
        "summary": "复制行程节点",
        "description": "复制指定节点到同一天的末尾位置，包括节点的所有属性（名称、资源关联、图片等）。\n适用场景：同一天有相似的行程安排时快速复制。",
        "operationId": "copyNodeUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "nodeId",
            "in": "path",
            "description": "行程节点ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/node/{nodeId}/move": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "移动行程节点到其他天",
        "description": "将节点从当前天移动到目标天的末尾位置。\n移动后原天和目标天的节点排序自动调整。",
        "operationId": "moveNodeUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "nodeId",
            "in": "path",
            "description": "行程节点ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "节点移动请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/节点移动请求",
              "originalRef": "节点移动请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«行程节点VO»",
              "originalRef": "统一响应结果«行程节点VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/staff-config/{id}": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "更新人员配置",
        "description": "**关联字典**：\n- staff_type（人员类型）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "updateStaffConfigUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "人员配置ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "人员配置请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/人员配置请求",
              "originalRef": "人员配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品人员配置VO»",
              "originalRef": "统一响应结果«产品人员配置VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品人员配置VO»",
              "originalRef": "统一响应结果«产品人员配置VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "行程管理"
        ],
        "summary": "删除人员配置",
        "description": "删除指定的人员配置记录。删除后该人员费用不再计入成本。\n\n**关联字典**：\n- staff_type（人员类型）：GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他",
        "operationId": "deleteStaffConfigUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "人员配置ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/supplies/{id}": {
      "put": {
        "tags": [
          "行程管理"
        ],
        "summary": "更新物资配品",
        "description": "更新物资配品的关联物资、数量等信息。修改后会影响成本自动计算结果。",
        "operationId": "updateSuppliesUsingPUT",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "物资配品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "物资配品请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/物资配置请求",
              "originalRef": "物资配置请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品物资VO»",
              "originalRef": "统一响应结果«产品物资VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品物资VO»",
              "originalRef": "统一响应结果«产品物资VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "行程管理"
        ],
        "summary": "删除物资配品",
        "description": "删除指定的物资配品记录。删除后该物资费用不再计入成本。",
        "operationId": "deleteSuppliesUsingDELETE",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "物资配品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/warm-tips": {
      "post": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "创建温馨提示",
        "description": "创建后默认启用",
        "operationId": "createUsingPOST_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "tipsRequest",
            "description": "tipsRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/温馨提示请求",
              "originalRef": "温馨提示请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«温馨提示VO»",
              "originalRef": "统一响应结果«温馨提示VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«温馨提示VO»",
              "originalRef": "统一响应结果«温馨提示VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/warm-tips/enabled": {
      "get": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "启用的温馨提示列表",
        "description": "仅返回启用状态的提示，供产品设计时选择",
        "operationId": "listEnabledUsingGET_1",
        "produces": [
          "*/*"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«温馨提示VO»»",
              "originalRef": "统一响应结果«List«温馨提示VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«温馨提示VO»»",
              "originalRef": "统一响应结果«List«温馨提示VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/warm-tips/list": {
      "get": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "温馨提示列表",
        "description": "返回所有温馨提示（含禁用），按创建时间倒序",
        "operationId": "listUsingGET_1",
        "produces": [
          "*/*"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«温馨提示VO»»",
              "originalRef": "统一响应结果«List«温馨提示VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«List«温馨提示VO»»",
              "originalRef": "统一响应结果«List«温馨提示VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/warm-tips/{tipsId}": {
      "get": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "温馨提示详情",
        "operationId": "detailUsingGET_1",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "tipsId",
            "in": "path",
            "description": "温馨提示ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«温馨提示VO»",
              "originalRef": "统一响应结果«温馨提示VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«温馨提示VO»",
              "originalRef": "统一响应结果«温馨提示VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "put": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "修改温馨提示",
        "operationId": "updateUsingPUT_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "tipsId",
            "in": "path",
            "description": "温馨提示ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "tipsRequest",
            "description": "tipsRequest",
            "required": true,
            "schema": {
              "$ref": "#/definitions/温馨提示请求",
              "originalRef": "温馨提示请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«温馨提示VO»",
              "originalRef": "统一响应结果«温馨提示VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«温馨提示VO»",
              "originalRef": "统一响应结果«温馨提示VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      },
      "delete": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "删除温馨提示",
        "description": "软删除，已绑定的产品不受影响（产品详情会显示为空）",
        "operationId": "deleteUsingDELETE_1",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "tipsId",
            "in": "path",
            "description": "温馨提示ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/admin/product/warm-tips/{tipsId}/toggle": {
      "put": {
        "tags": [
          "温馨提示管理"
        ],
        "summary": "启用/禁用温馨提示",
        "description": "禁用后不再出现在产品设计的可选列表中，已绑定的产品不受影响",
        "operationId": "toggleUsingPUT_1",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "enabled",
            "in": "query",
            "description": "是否启用",
            "required": false,
            "type": "boolean",
            "allowEmptyValue": false
          },
          {
            "name": "tipsId",
            "in": "path",
            "description": "温馨提示ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«Void»",
              "originalRef": "统一响应结果«Void»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/mp/product/list": {
      "get": {
        "tags": [
          "小程序-产品"
        ],
        "summary": "产品列表（C端）",
        "description": "小程序端产品列表接口，仅返回已上架（PUBLISHED）的产品。\n\n支持按产品类型、季节、行程天数、目的地、产品线、支付模式、定制师等筛选。\n默认按 sortOrder 排序，也可按价格或行程天数排序。\n\n**关联字典**：\n- product_type（产品类型，筛选条件）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品",
        "operationId": "listProductsUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "designerId",
            "in": "query",
            "description": "定制师ID（创建者ID）筛选",
            "required": false,
            "type": "integer",
            "format": "int64",
            "x-example": 1893012345678901234
          },
          {
            "name": "destination",
            "in": "query",
            "description": "目的地筛选",
            "required": false,
            "type": "string",
            "x-example": "丽江"
          },
          {
            "name": "keyword",
            "in": "query",
            "description": "搜索关键词（产品名称）",
            "required": false,
            "type": "string",
            "x-example": "丽江"
          },
          {
            "name": "lineId",
            "in": "query",
            "description": "产品线ID筛选",
            "required": false,
            "type": "string",
            "x-example": "1893012345678901234"
          },
          {
            "name": "page",
            "in": "query",
            "description": "页码",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "每页条数",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 10
          },
          {
            "name": "paymentMode",
            "in": "query",
            "description": "支付模式筛选：FULL=全款 DEPOSIT=定金+尾款 null=全部",
            "required": false,
            "type": "string",
            "x-example": "DEPOSIT"
          },
          {
            "name": "productType",
            "in": "query",
            "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团",
            "required": false,
            "type": "string",
            "x-example": "CORE"
          },
          {
            "name": "season",
            "in": "query",
            "description": "季节筛选",
            "required": false,
            "type": "string",
            "x-example": "spring"
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "排序字段：price/tripDays/default(默认按sortOrder)",
            "required": false,
            "type": "string",
            "x-example": "price"
          },
          {
            "name": "sortDir",
            "in": "query",
            "description": "排序方向：asc/desc",
            "required": false,
            "type": "string",
            "x-example": "asc"
          },
          {
            "name": "tripDays",
            "in": "query",
            "description": "行程天数筛选",
            "required": false,
            "type": "integer",
            "format": "int32",
            "x-example": 5
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«C端产品列表VO»»",
              "originalRef": "统一响应结果«分页结果«C端产品列表VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«分页结果«C端产品列表VO»»",
              "originalRef": "统一响应结果«分页结果«C端产品列表VO»»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/mp/product/{productId}": {
      "get": {
        "tags": [
          "小程序-产品"
        ],
        "summary": "产品详情（C端）",
        "description": "小程序端产品详情接口，仅返回已上架（PUBLISHED）的产品。\n包含完整的行程信息、定价配置、费用说明、创作者寄语等。\n未上架的产品会返回 404 错误。\n\n**关联字典**：\n- product_type（产品类型）：CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_category（产品分类）：family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾",
        "operationId": "getProductUsingGET",
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«产品详情VO»",
              "originalRef": "统一响应结果«产品详情VO»"
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    },
    "/mp/product/{productId}/quote": {
      "post": {
        "tags": [
          "小程序-产品"
        ],
        "summary": "报价计算（C端）",
        "description": "小程序端报价计算接口，根据用户选择的日期和人数计算总价。\n内部会校验产品是否存在且已上架。\n详细计算逻辑参见管理后台的报价计算接口说明。",
        "operationId": "calculateQuoteUsingPOST",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "*/*"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "description": "产品ID",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "in": "body",
            "name": "request",
            "description": "报价请求",
            "required": false,
            "schema": {
              "$ref": "#/definitions/报价请求",
              "originalRef": "报价请求"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«报价结果VO»",
              "originalRef": "统一响应结果«报价结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "responsesObject": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/统一响应结果«报价结果VO»",
              "originalRef": "统一响应结果«报价结果VO»"
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "deprecated": false,
        "x-order": "2147483647"
      }
    }
  },
  "definitions": {
    "C端产品列表VO": {
      "type": "object",
      "properties": {
        "coverImageUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "creatorAvatarUrl": {
          "type": "string",
          "description": "定制师头像URL"
        },
        "departureCity": {
          "type": "string",
          "description": "出发城市"
        },
        "destinationCity": {
          "type": "string",
          "description": "目的地城市"
        },
        "lineName": {
          "type": "string",
          "description": "产品线名称"
        },
        "name": {
          "type": "string",
          "description": "产品名称"
        },
        "paymentMode": {
          "type": "string",
          "description": "支付模式：FULL=全款 DEPOSIT=定金+尾款"
        },
        "productId": {
          "type": "string",
          "description": "产品ID"
        },
        "productType": {
          "type": "string",
          "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团"
        },
        "routeMapUrl": {
          "type": "string",
          "description": "路径图URL"
        },
        "seasonLabels": {
          "type": "array",
          "description": "适用季节列表(中文)",
          "items": {
            "type": "string"
          }
        },
        "seasons": {
          "type": "array",
          "description": "适用季节列表(编码)",
          "items": {
            "type": "string"
          }
        },
        "startPrice": {
          "type": "number",
          "description": "起步价（来自定价配置）"
        },
        "subtitle": {
          "type": "string",
          "description": "副标题"
        },
        "tags": {
          "type": "array",
          "description": "产品标签列表",
          "items": {
            "type": "string"
          }
        },
        "tripDays": {
          "type": "integer",
          "format": "int32",
          "description": "行程天数"
        },
        "tripNights": {
          "type": "integer",
          "format": "int32",
          "description": "行程晚数"
        }
      },
      "title": "C端产品列表VO"
    },
    "GROUP产品报价结果": {
      "type": "object",
      "properties": {
        "adultCostPrice": {
          "type": "number",
          "description": "成人成本价(单房差+每人费用)"
        },
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "description": "成人数"
        },
        "adultSellPrice": {
          "type": "number",
          "description": "成人售价"
        },
        "adultsPerRoom": {
          "type": "integer",
          "format": "int32",
          "description": "每间房入住成人数"
        },
        "childCostPrice": {
          "type": "number",
          "description": "儿童成本价(每人费用，不含酒店)"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "description": "儿童数"
        },
        "childSellPrice": {
          "type": "number",
          "description": "儿童售价"
        },
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "返回码: 0=成功, 1=非GROUP产品, 2=错误"
        },
        "dayCosts": {
          "type": "array",
          "description": "每日成本明细",
          "items": {
            "$ref": "#/definitions/每日成本明细",
            "originalRef": "每日成本明细"
          }
        },
        "emptyBedSupplement": {
          "type": "number",
          "description": "空床补差 = (房间数×每房成人数 - 成人数) × 单房差"
        },
        "extraCostItems": {
          "type": "array",
          "description": "额外成本明细列表",
          "items": {
            "$ref": "#/definitions/额外成本明细项",
            "originalRef": "额外成本明细项"
          }
        },
        "extraCostPerPerson": {
          "type": "number",
          "description": "额外成本（人均）"
        },
        "extraCostTotal": {
          "type": "number",
          "description": "额外成本总额（团队）"
        },
        "hotelCostTotal": {
          "type": "number",
          "description": "酒店总成本"
        },
        "message": {
          "type": "string",
          "description": "错误信息(code!=0时)"
        },
        "perPersonCost": {
          "type": "number",
          "description": "每人成本(不含酒店)"
        },
        "profitMode": {
          "type": "string",
          "description": "利润模式"
        },
        "roomCount": {
          "type": "integer",
          "format": "int32",
          "description": "选择的房间数"
        },
        "singleRoomSupplement": {
          "type": "number",
          "description": "单房差 = 成人售价 - 儿童售价"
        },
        "totalSellPrice": {
          "type": "number",
          "description": "总售价 = 成人价×成人数 + 儿童价×儿童数 + 空床补差"
        },
        "warnings": {
          "type": "array",
          "description": "警告信息",
          "items": {
            "type": "string"
          }
        }
      },
      "title": "GROUP产品报价结果"
    },
    "产品人员配置VO": {
      "type": "object",
      "properties": {
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "string",
          "description": "记录ID"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "description": "数量"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "staffType": {
          "type": "string",
          "description": "人员类型：GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER"
        },
        "staffTypeName": {
          "type": "string",
          "description": "人员类型名称"
        }
      },
      "title": "产品人员配置VO"
    },
    "产品价格日历VO": {
      "type": "object",
      "properties": {
        "adultCostPrice": {
          "type": "number",
          "description": "成人成本价"
        },
        "adultProfit": {
          "type": "number",
          "description": "成人利润"
        },
        "adultSellPrice": {
          "type": "number",
          "description": "成人售价"
        },
        "childCostPrice": {
          "type": "number",
          "description": "儿童成本价"
        },
        "childProfit": {
          "type": "number",
          "description": "儿童利润"
        },
        "childSellPrice": {
          "type": "number",
          "description": "儿童售价"
        },
        "costAutoCalc": {
          "type": "boolean",
          "description": "是否自动计算成本"
        },
        "date": {
          "type": "string",
          "format": "date",
          "description": "日期"
        },
        "id": {
          "type": "string",
          "description": "价格日历ID"
        },
        "profitRate": {
          "type": "number",
          "description": "利润率（百分比）"
        },
        "remark": {
          "type": "string",
          "description": "备注"
        },
        "sold": {
          "type": "integer",
          "format": "int32",
          "description": "已售数量"
        },
        "status": {
          "type": "string",
          "description": "状态：OPEN=开放 CLOSED=关闭"
        },
        "stock": {
          "type": "integer",
          "format": "int32",
          "description": "库存数量"
        }
      },
      "title": "产品价格日历VO"
    },
    "产品列表VO": {
      "type": "object",
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "description": "成人数（私人定制/路书）"
        },
        "approvalNo": {
          "type": "string",
          "description": "审批编号"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "description": "幼童数（私人定制/路书）"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "description": "儿童数（私人定制/路书）"
        },
        "coverImageUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "createBy": {
          "type": "string",
          "description": "创建人ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "departureCity": {
          "type": "string",
          "description": "出发城市"
        },
        "destinationCity": {
          "type": "string",
          "description": "目的地城市"
        },
        "folderId": {
          "type": "string",
          "description": "所属文件夹ID"
        },
        "groupRoomId": {
          "type": "string",
          "description": "企微群聊ID(用于会话存档展示群消息)"
        },
        "isBooking": {
          "type": "boolean",
          "description": "是否预约产品"
        },
        "lineId": {
          "type": "string",
          "description": "产品线ID"
        },
        "lineName": {
          "type": "string",
          "description": "产品线名称"
        },
        "maxAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "description": "每单最大成人数(null=不限)"
        },
        "maxChildPerOrder": {
          "type": "integer",
          "format": "int32",
          "description": "每单最大儿童数(null=不限)"
        },
        "mchId": {
          "type": "string",
          "description": "商户号"
        },
        "minAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "description": "每单最少成人数(null=默认1)"
        },
        "name": {
          "type": "string",
          "description": "产品名称"
        },
        "pendingStatus": {
          "type": "string",
          "description": "待审批目标状态"
        },
        "productId": {
          "type": "string",
          "description": "产品ID"
        },
        "productNo": {
          "type": "string",
          "description": "产品编号"
        },
        "productType": {
          "type": "string",
          "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团"
        },
        "seasonLabels": {
          "type": "array",
          "description": "适用季节列表(中文)",
          "items": {
            "type": "string"
          }
        },
        "seasons": {
          "type": "array",
          "description": "适用季节列表(编码)",
          "items": {
            "type": "string"
          }
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "status": {
          "type": "string",
          "description": "产品状态：DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED"
        },
        "subtitle": {
          "type": "string",
          "description": "副标题"
        },
        "tripDays": {
          "type": "integer",
          "format": "int32",
          "description": "行程天数"
        },
        "tripNights": {
          "type": "integer",
          "format": "int32",
          "description": "行程晚数"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "description": "小童数（私人定制/路书）"
        }
      },
      "title": "产品列表VO"
    },
    "产品定价配置VO": {
      "type": "object",
      "properties": {
        "adultExtraBed": {
          "type": "number",
          "description": "成人加床费"
        },
        "babyPrice": {
          "type": "number",
          "description": "婴儿价"
        },
        "balanceDueDays": {
          "type": "integer",
          "format": "int32",
          "description": "尾款支付截止天数（出发前N天）"
        },
        "childDiscountPercent": {
          "type": "number",
          "description": "儿童折扣百分比"
        },
        "childNoBed": {
          "type": "number",
          "description": "儿童不占床价"
        },
        "childWithBed": {
          "type": "number",
          "description": "儿童占床价"
        },
        "companionPrice": {
          "type": "number",
          "description": "陪同人员价格"
        },
        "customTotalPrice": {
          "type": "number",
          "description": "定制产品总价（CUSTOM模式下使用）"
        },
        "depositAmount": {
          "type": "number",
          "description": "定金金额"
        },
        "depositRatio": {
          "type": "integer",
          "format": "int32",
          "description": "定金比例（百分比）"
        },
        "extraCostPerPerson": {
          "type": "number",
          "description": "每人额外成本"
        },
        "insuranceFee": {
          "type": "number",
          "description": "保险费用"
        },
        "markupPercent": {
          "type": "number",
          "description": "加价百分比（PERCENT模式下使用）"
        },
        "maxGroupSize": {
          "type": "integer",
          "format": "int32",
          "description": "最大成团人数"
        },
        "mealBudget": {
          "type": "number",
          "description": "餐费预算"
        },
        "minGroupSize": {
          "type": "integer",
          "format": "int32",
          "description": "最小成团人数"
        },
        "paymentType": {
          "type": "string",
          "description": "支付方式：FULL=全款 DEPOSIT=定金+尾款"
        },
        "pricingId": {
          "type": "string",
          "description": "定价配置ID"
        },
        "pricingMode": {
          "type": "string",
          "description": "定价模式：AUTO=自动计算 MANUAL=手动定价 CUSTOM=定制定价"
        },
        "productId": {
          "type": "string",
          "description": "产品ID"
        },
        "profitAmount": {
          "type": "number",
          "description": "利润金额（FIXED模式下使用）"
        },
        "profitMode": {
          "type": "string",
          "description": "利润模式：FIXED=固定金额 PERCENT=百分比"
        },
        "singleRoomDiff": {
          "type": "number",
          "description": "单房差"
        },
        "vehicleModelIds": {
          "type": "array",
          "description": "车型ID列表",
          "items": {
            "type": "string"
          }
        },
        "vehicleWarning": {
          "type": "string",
          "description": "车辆绑定警告信息（为空表示绑定成功）"
        }
      },
      "title": "产品定价配置VO"
    },
    "产品成本项VO": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string",
          "description": "成本项类别：HOTEL/SCENIC/VEHICLE/ACTIVITY/SERVICE/DINING/OTHER"
        },
        "description": {
          "type": "string",
          "description": "成本项描述"
        },
        "id": {
          "type": "string",
          "description": "成本项ID"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "title": {
          "type": "string",
          "description": "成本项标题"
        },
        "type": {
          "type": "string",
          "description": "成本项类型：INCLUDED=费用包含 EXCLUDED=费用不含 SELF_PAY=自理费用"
        }
      },
      "title": "产品成本项VO"
    },
    "产品文件夹VO": {
      "type": "object",
      "properties": {
        "children": {
          "type": "array",
          "description": "子文件夹列表",
          "items": {
            "$ref": "#/definitions/产品文件夹VO",
            "originalRef": "产品文件夹VO"
          }
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "folderId": {
          "type": "string",
          "description": "文件夹ID"
        },
        "name": {
          "type": "string",
          "description": "文件夹名称"
        },
        "ownerId": {
          "type": "string",
          "description": "拥有者ID"
        },
        "ownerName": {
          "type": "string",
          "description": "拥有者姓名"
        },
        "parentId": {
          "type": "string",
          "description": "父文件夹ID"
        },
        "productCount": {
          "type": "integer",
          "format": "int32",
          "description": "文件夹内产品数量"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "产品文件夹VO"
    },
    "产品物资VO": {
      "type": "object",
      "properties": {
        "billingType": {
          "type": "string",
          "description": "计费方式：BY_PERSON=按人头 BY_COUNT=按次/按件"
        },
        "costPerPerson": {
          "type": "number",
          "description": "每人成本"
        },
        "coverUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "dayNumber": {
          "type": "integer",
          "format": "int32",
          "description": "天数编号（scope=DAY时生效）"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "string",
          "description": "记录ID"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "description": "数量"
        },
        "scope": {
          "type": "string",
          "description": "适用范围：ALL=整个行程 DAY=指定天"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "suppliesId": {
          "type": "string",
          "description": "物资ID"
        },
        "suppliesName": {
          "type": "string",
          "description": "物资名称"
        }
      },
      "title": "产品物资VO"
    },
    "产品状态变更请求": {
      "type": "object",
      "required": [
        "status"
      ],
      "properties": {
        "reason": {
          "type": "string",
          "example": "行程信息不完整，请补充",
          "description": "状态变更原因（驳回时必填；上架/下架审批时可填）"
        },
        "status": {
          "type": "string",
          "example": "PUBLISHED",
          "description": "目标状态。核心/小蒙马：DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED；定制产品：COMPLETED"
        }
      },
      "title": "产品状态变更请求"
    },
    "产品移动请求": {
      "type": "object",
      "properties": {
        "folderId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "目标文件夹ID，为空则移动到根目录"
        }
      },
      "title": "产品移动请求"
    },
    "产品线VO": {
      "type": "object",
      "properties": {
        "coverImageUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "createBy": {
          "type": "string",
          "description": "创建人ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "description": {
          "type": "string",
          "description": "产品线描述"
        },
        "lineId": {
          "type": "string",
          "description": "产品线ID"
        },
        "name": {
          "type": "string",
          "description": "产品线名称"
        },
        "productCount": {
          "type": "integer",
          "format": "int32",
          "description": "关联产品数量"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "status": {
          "type": "string",
          "description": "状态：ACTIVE=启用 INACTIVE=停用"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "产品线VO"
    },
    "产品自定义费用项VO": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "费用说明"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "feeAmount": {
          "type": "number",
          "description": "费用金额"
        },
        "feeName": {
          "type": "string",
          "description": "费用项名称"
        },
        "feeUnit": {
          "type": "string",
          "description": "费用单位"
        },
        "id": {
          "type": "string",
          "description": "费用项ID"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        }
      },
      "title": "产品自定义费用项VO"
    },
    "产品详情VO": {
      "type": "object",
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "description": "成人人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "description": "婴儿人数"
        },
        "benefitsDescription": {
          "type": "array",
          "description": "权益说明（静态，所有产品相同）",
          "items": {
            "$ref": "#/definitions/权益分组",
            "originalRef": "权益分组"
          }
        },
        "bookingTermsContent": {
          "type": "string",
          "description": "预订条款内容"
        },
        "bookingTermsId": {
          "type": "string",
          "description": "预订条款ID"
        },
        "bookingTermsName": {
          "type": "string",
          "description": "预订条款名称"
        },
        "carouselImages": {
          "type": "array",
          "description": "轮播图列表",
          "items": {
            "type": "string"
          }
        },
        "carouselVideoUrl": {
          "type": "string",
          "description": "轮播视频URL"
        },
        "chatMessages": {
          "type": "array",
          "description": "群聊消息列表",
          "items": {
            "$ref": "#/definitions/群聊消息VO",
            "originalRef": "群聊消息VO"
          }
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "description": "儿童人数"
        },
        "contactPhone": {
          "type": "string",
          "description": "联系电话（定制产品）"
        },
        "costItems": {
          "type": "array",
          "description": "成本项列表",
          "items": {
            "$ref": "#/definitions/产品成本项VO",
            "originalRef": "产品成本项VO"
          }
        },
        "coverImageUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "createBy": {
          "type": "string",
          "description": "创建人ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "creatorAvatarUrl": {
          "type": "string",
          "description": "定制师头像URL"
        },
        "creatorIntro": {
          "type": "string",
          "description": "创作者寄语"
        },
        "customFees": {
          "type": "array",
          "description": "自定义费用项列表",
          "items": {
            "$ref": "#/definitions/产品自定义费用项VO",
            "originalRef": "产品自定义费用项VO"
          }
        },
        "customerName": {
          "type": "string",
          "description": "客户姓名（定制产品）"
        },
        "customizerId": {
          "type": "string",
          "description": "定制师ID"
        },
        "departureCity": {
          "type": "string",
          "description": "出发城市"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "description": "出发日期（定制产品）"
        },
        "destinationCities": {
          "type": "array",
          "description": "途经城市列表（从行程节点资源去重提取）",
          "items": {
            "type": "string"
          }
        },
        "destinationCity": {
          "type": "string",
          "description": "目的地城市"
        },
        "families": {
          "type": "array",
          "description": "家庭分组列表（定制产品）",
          "items": {
            "$ref": "#/definitions/家庭分组VO",
            "originalRef": "家庭分组VO"
          }
        },
        "folderId": {
          "type": "string",
          "description": "所属文件夹ID"
        },
        "groupChatQrUrl": {
          "type": "string",
          "description": "群聊二维码URL"
        },
        "groupRoomId": {
          "type": "string",
          "description": "企微群聊ID(用于会话存档展示群消息)"
        },
        "isBooking": {
          "type": "boolean",
          "description": "是否预约产品"
        },
        "itineraryDays": {
          "type": "array",
          "description": "行程天列表",
          "items": {
            "$ref": "#/definitions/行程天VO",
            "originalRef": "行程天VO"
          }
        },
        "lineId": {
          "type": "string",
          "description": "产品线ID"
        },
        "lineName": {
          "type": "string",
          "description": "产品线名称"
        },
        "lineSubtitle": {
          "type": "string",
          "description": "产品线副标题"
        },
        "maxAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "description": "每单最大成人数(null=不限)"
        },
        "maxChildPerOrder": {
          "type": "integer",
          "format": "int32",
          "description": "每单最大儿童数(null=不限)"
        },
        "mchId": {
          "type": "string",
          "description": "商户号"
        },
        "minAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "description": "每单最少成人数(null=默认1)"
        },
        "name": {
          "type": "string",
          "description": "产品名称"
        },
        "paymentMode": {
          "type": "string",
          "description": "支付模式：FULL=全款 DEPOSIT=定金+尾款"
        },
        "pricing": {
          "description": "定价配置",
          "$ref": "#/definitions/产品定价配置VO",
          "originalRef": "产品定价配置VO"
        },
        "productId": {
          "type": "string",
          "description": "产品ID"
        },
        "productNo": {
          "type": "string",
          "description": "产品编号"
        },
        "productType": {
          "type": "string",
          "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团"
        },
        "publishedAt": {
          "type": "string",
          "format": "date-time",
          "description": "发布时间"
        },
        "refundPolicyId": {
          "type": "string",
          "description": "退款政策ID（已废弃，用refundPolicyIds替代）"
        },
        "refundPolicyIds": {
          "type": "object",
          "description": "退款政策映射（按退款类型绑定不同政策）。key=退款类型(FULL/DEPOSIT/BALANCE), value=政策ID",
          "additionalProperties": {
            "type": "string"
          }
        },
        "refundPolicyName": {
          "type": "string",
          "description": "退款政策名称（已废弃）"
        },
        "routeMapUrl": {
          "type": "string",
          "description": "路径图URL（后端自动生成）"
        },
        "seasonLabels": {
          "type": "array",
          "description": "适用季节列表(中文)",
          "items": {
            "type": "string"
          }
        },
        "seasons": {
          "type": "array",
          "description": "适用季节列表(编码)",
          "items": {
            "type": "string"
          }
        },
        "showChatGroup": {
          "type": "boolean",
          "description": "是否显示群聊入口"
        },
        "showReview": {
          "type": "boolean",
          "description": "是否显示评价"
        },
        "showTripDistance": {
          "type": "boolean",
          "description": "是否显示行程距离"
        },
        "showTripTime": {
          "type": "boolean",
          "description": "是否显示行程时间"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "staffConfigs": {
          "type": "array",
          "description": "人员配置列表（定制产品）",
          "items": {
            "$ref": "#/definitions/产品人员配置VO",
            "originalRef": "产品人员配置VO"
          }
        },
        "startPrice": {
          "type": "number",
          "description": "起步价：未来一年价格日历中最低成人售价"
        },
        "status": {
          "type": "string",
          "description": "产品状态：DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED"
        },
        "subtitle": {
          "type": "string",
          "description": "副标题"
        },
        "suppliesList": {
          "type": "array",
          "description": "物资列表",
          "items": {
            "$ref": "#/definitions/产品物资VO",
            "originalRef": "产品物资VO"
          }
        },
        "tags": {
          "type": "array",
          "description": "产品标签列表",
          "items": {
            "type": "string"
          }
        },
        "teamExperienceYears": {
          "type": "integer",
          "format": "int32",
          "description": "团队经验年数"
        },
        "tripDays": {
          "type": "integer",
          "format": "int32",
          "description": "行程天数"
        },
        "tripNights": {
          "type": "integer",
          "format": "int32",
          "description": "行程晚数"
        },
        "updateBy": {
          "type": "string",
          "description": "更新人ID"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        },
        "warmTipsContent": {
          "type": "string",
          "description": "温馨提示内容"
        },
        "warmTipsId": {
          "type": "string",
          "description": "温馨提示ID"
        },
        "warmTipsName": {
          "type": "string",
          "description": "温馨提示名称"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "description": "小童人数"
        }
      },
      "title": "产品详情VO"
    },
    "产品额外成本VO": {
      "type": "object",
      "properties": {
        "applyRole": {
          "type": "string",
          "description": "适用角色"
        },
        "categoryCode": {
          "type": "string",
          "description": "费用类别编码"
        },
        "costItemId": {
          "type": "string",
          "description": "费用项ID"
        },
        "costItemName": {
          "type": "string",
          "description": "费用项名称"
        },
        "daily": {
          "type": "boolean",
          "description": "是否按天计算：true=按天计算(乘以天数) false=整个行程一次"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "string",
          "description": "记录ID"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "description": "数量"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "unit": {
          "type": "string",
          "description": "单位"
        },
        "unitPrice": {
          "type": "number",
          "description": "单价"
        }
      },
      "title": "产品额外成本VO"
    },
    "人员配置请求": {
      "type": "object",
      "required": [
        "quantity",
        "staffType"
      ],
      "properties": {
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "数量"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "排序序号"
        },
        "staffType": {
          "type": "string",
          "example": "GUIDE",
          "description": "人员类型：GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER"
        }
      },
      "title": "人员配置请求"
    },
    "价格日历请求": {
      "type": "object",
      "required": [
        "date"
      ],
      "properties": {
        "adultCostPrice": {
          "type": "number",
          "example": 2800.0,
          "description": "成人成本价"
        },
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人人数（GROUP产品自动测算用）"
        },
        "adultSellPrice": {
          "type": "number",
          "example": 3980.0,
          "description": "成人售价"
        },
        "childCostPrice": {
          "type": "number",
          "example": 1800.0,
          "description": "儿童成本价"
        },
        "childSellPrice": {
          "type": "number",
          "example": 2680.0,
          "description": "儿童售价"
        },
        "costAutoCalc": {
          "type": "boolean",
          "example": true,
          "description": "是否自动计算成本（true时重新测算会自动更新此日期的价格）"
        },
        "date": {
          "type": "string",
          "format": "date",
          "example": "2026-05-01",
          "description": "日期"
        },
        "remark": {
          "type": "string",
          "example": "五一黄金周特价",
          "description": "备注"
        },
        "status": {
          "type": "string",
          "example": "OPEN",
          "description": "状态：OPEN=开放预订 CLOSED=关闭（不可预订）"
        },
        "stock": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "库存数量（CORE/GROUP按人头扣减，CUSTOM/ROUTE按单扣减）"
        }
      },
      "title": "价格日历请求"
    },
    "保存产品请求（创建或更新）": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "婴儿人数"
        },
        "bookingTermsId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "预订条款ID（关联预订条款模板）"
        },
        "carouselImages": {
          "type": "array",
          "description": "轮播图列表",
          "items": {
            "type": "string"
          }
        },
        "carouselVideoUrl": {
          "type": "string",
          "example": "https://oss.example.com/video.mp4",
          "description": "轮播视频URL"
        },
        "chatMessages": {
          "type": "array",
          "description": "群聊消息列表",
          "items": {
            "$ref": "#/definitions/群聊消息VO",
            "originalRef": "群聊消息VO"
          }
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "儿童人数"
        },
        "contactPhone": {
          "type": "string",
          "example": 13800138000,
          "description": "联系电话（定制产品）"
        },
        "coverImageUrl": {
          "type": "string",
          "example": "https://oss.example.com/cover.jpg",
          "description": "封面图URL"
        },
        "creatorAvatarUrl": {
          "type": "string",
          "example": "https://oss.example.com/avatar.jpg",
          "description": "定制师头像URL"
        },
        "creatorIntro": {
          "type": "string",
          "example": "带你体验最地道的丽江风情",
          "description": "创作者寄语"
        },
        "customerName": {
          "type": "string",
          "example": "张三",
          "description": "客户姓名（定制产品）"
        },
        "customizerId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "定制师ID"
        },
        "departureCity": {
          "type": "string",
          "example": "昆明",
          "description": "出发城市"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-07-01",
          "description": "出发日期（定制产品）"
        },
        "destinationCity": {
          "type": "string",
          "example": "丽江",
          "description": "目的地城市"
        },
        "folderId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "所属文件夹ID"
        },
        "groupChatQrUrl": {
          "type": "string",
          "example": "https://oss.example.com/qr.jpg",
          "description": "群聊二维码URL"
        },
        "groupRoomId": {
          "type": "string",
          "description": "企微群聊ID(用于会话存档展示群消息)"
        },
        "isBooking": {
          "type": "boolean",
          "example": false,
          "description": "是否预约产品"
        },
        "lineId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "产品线ID"
        },
        "lineSubtitle": {
          "type": "string",
          "example": "亲子游",
          "description": "产品线副标题"
        },
        "maxAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每单最大成人数(不填则不限制)"
        },
        "maxChildPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每单最大儿童数(不填则不限制)"
        },
        "mchId": {
          "type": "string",
          "example": "shanhe",
          "description": "商户号：shanhe/wenlu"
        },
        "minAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "每单最少成人数(不填默认1)"
        },
        "name": {
          "type": "string",
          "example": "丽江5日深度游",
          "description": "产品名称"
        },
        "productId": {
          "type": "integer",
          "format": "int64",
          "example": 1893012345678901234,
          "description": "产品ID（传入则更新，不传则创建）"
        },
        "productType": {
          "type": "string",
          "example": "CORE",
          "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团（创建时必填，更新时忽略）"
        },
        "refundPolicyId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "退款政策ID（已废弃，用refundPolicyIds替代）"
        },
        "refundPolicyIds": {
          "type": "object",
          "example": {
            "FULL": "1893012345678901234",
            "DEPOSIT": "1893012345678901235"
          },
          "description": "退款政策映射（按退款类型绑定不同政策）。key=退款类型(FULL/DEPOSIT/BALANCE), value=政策ID",
          "additionalProperties": {
            "type": "string"
          }
        },
        "seasons": {
          "type": "array",
          "example": [
            "春",
            "夏"
          ],
          "description": "适用季节列表，如 [\"春\",\"夏\",\"秋\",\"冬\"]",
          "items": {
            "type": "string"
          }
        },
        "showChatGroup": {
          "type": "boolean",
          "example": true,
          "description": "是否显示群聊入口"
        },
        "showReview": {
          "type": "boolean",
          "example": true,
          "description": "是否显示评价"
        },
        "showTripDistance": {
          "type": "boolean",
          "example": true,
          "description": "是否显示行程距离"
        },
        "showTripTime": {
          "type": "boolean",
          "example": true,
          "description": "是否显示行程时间"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        },
        "subtitle": {
          "type": "string",
          "example": "探访纳西文化，邂逅玉龙雪山",
          "description": "副标题"
        },
        "tags": {
          "type": "array",
          "example": [
            "亲子游",
            "摄影"
          ],
          "description": "产品标签列表，如 [\"亲子游\",\"摄影\"]",
          "items": {
            "type": "string"
          }
        },
        "teamExperienceYears": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "团队经验年数"
        },
        "tripDays": {
          "type": "integer",
          "format": "int32",
          "example": 5,
          "description": "行程天数"
        },
        "warmTipsId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "温馨提示ID（关联温馨提示模板）"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "小童人数"
        }
      },
      "title": "保存产品请求（创建或更新）"
    },
    "公式变量VO": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string",
          "description": "变量分类：INPUT/INTERMEDIATE/OUTPUT"
        },
        "defaultValue": {
          "type": "string",
          "description": "默认值"
        },
        "description": {
          "type": "string",
          "description": "描述"
        },
        "productTypes": {
          "type": "array",
          "description": "适用产品类型列表",
          "items": {
            "type": "string"
          }
        },
        "varId": {
          "type": "string",
          "description": "变量ID"
        },
        "varName": {
          "type": "string",
          "description": "变量名"
        },
        "varType": {
          "type": "string",
          "description": "变量类型：DECIMAL/INTEGER/BOOLEAN/STRING"
        }
      },
      "title": "公式变量VO"
    },
    "公式变量请求": {
      "type": "object",
      "required": [
        "category",
        "varName",
        "varType"
      ],
      "properties": {
        "category": {
          "type": "string",
          "example": "INPUT",
          "description": "变量分类：INPUT/INTERMEDIATE/OUTPUT"
        },
        "defaultValue": {
          "type": "string",
          "example": 0,
          "description": "默认值"
        },
        "description": {
          "type": "string",
          "example": "成人单价成本",
          "description": "描述"
        },
        "productTypes": {
          "type": "array",
          "example": [
            "CORE",
            "ROUTE"
          ],
          "description": "适用产品类型列表",
          "items": {
            "type": "string"
          }
        },
        "varName": {
          "type": "string",
          "example": "adultUnitCost",
          "description": "变量名"
        },
        "varType": {
          "type": "string",
          "example": "DECIMAL",
          "description": "变量类型：DECIMAL/INTEGER/BOOLEAN/STRING"
        }
      },
      "title": "公式变量请求"
    },
    "公式步骤VO": {
      "type": "object",
      "properties": {
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "description": {
          "type": "string",
          "description": "描述"
        },
        "executionOrder": {
          "type": "integer",
          "format": "int32",
          "description": "执行顺序"
        },
        "expression": {
          "type": "string",
          "description": "表达式"
        },
        "formulaId": {
          "type": "string",
          "description": "公式ID"
        },
        "groupId": {
          "type": "string",
          "description": "公式组ID"
        },
        "inputVars": {
          "type": "string",
          "description": "输入变量(逗号分隔)"
        },
        "isEnabled": {
          "type": "boolean",
          "description": "是否启用"
        },
        "outputVar": {
          "type": "string",
          "description": "输出变量名"
        },
        "stepCode": {
          "type": "string",
          "description": "步骤编码"
        },
        "stepName": {
          "type": "string",
          "description": "步骤名称"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "公式步骤VO"
    },
    "公式步骤请求": {
      "type": "object",
      "required": [
        "expression",
        "groupId",
        "outputVar",
        "stepCode",
        "stepName"
      ],
      "properties": {
        "changeNote": {
          "type": "string",
          "example": "初始创建",
          "description": "变更说明"
        },
        "description": {
          "type": "string",
          "example": "根据人数和单价计算基础成本",
          "description": "描述"
        },
        "executionOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "执行顺序"
        },
        "expression": {
          "type": "string",
          "example": "baseCost = adultCount * adultUnitCost + childCount * childUnitCost",
          "description": "Aviator表达式（支持数学运算、条件判断、内置函数；可引用前置步骤的输出变量和公式变量表中的变量）"
        },
        "groupId": {
          "type": "integer",
          "format": "int64",
          "example": 1893012345678901234,
          "description": "公式组ID"
        },
        "inputVars": {
          "type": "string",
          "example": "adultCount,adultUnitCost,childCount,childUnitCost",
          "description": "输入变量(逗号分隔)"
        },
        "outputVar": {
          "type": "string",
          "example": "baseCost",
          "description": "输出变量名"
        },
        "stepCode": {
          "type": "string",
          "example": "CALC_BASE_COST",
          "description": "步骤编码"
        },
        "stepName": {
          "type": "string",
          "example": "计算基础成本",
          "description": "步骤名称"
        }
      },
      "title": "公式步骤请求"
    },
    "公式测试结果VO": {
      "type": "object",
      "properties": {
        "errorMessage": {
          "type": "string",
          "description": "错误信息"
        },
        "finalVariables": {
          "type": "object",
          "description": "最终变量表"
        },
        "stepResults": {
          "type": "array",
          "description": "各步骤执行结果",
          "items": {
            "$ref": "#/definitions/步骤执行结果",
            "originalRef": "步骤执行结果"
          }
        },
        "success": {
          "type": "boolean",
          "description": "是否成功"
        },
        "totalTimeMs": {
          "type": "integer",
          "format": "int64",
          "description": "总耗时(毫秒)"
        }
      },
      "title": "公式测试结果VO"
    },
    "公式测试请求": {
      "type": "object",
      "required": [
        "groupId",
        "variables"
      ],
      "properties": {
        "groupId": {
          "type": "integer",
          "format": "int64",
          "example": 1893012345678901234,
          "description": "公式组ID"
        },
        "variables": {
          "type": "object",
          "description": "测试变量(变量名→值)"
        }
      },
      "title": "公式测试请求"
    },
    "公式版本历史VO": {
      "type": "object",
      "properties": {
        "changeNote": {
          "type": "string",
          "description": "变更说明"
        },
        "changedBy": {
          "type": "string",
          "description": "变更人ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "expression": {
          "type": "string",
          "description": "表达式"
        },
        "formulaId": {
          "type": "string",
          "description": "公式ID"
        },
        "versionId": {
          "type": "string",
          "description": "版本ID"
        },
        "versionNum": {
          "type": "integer",
          "format": "int32",
          "description": "版本号"
        }
      },
      "title": "公式版本历史VO"
    },
    "公式组VO": {
      "type": "object",
      "properties": {
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "description": {
          "type": "string",
          "description": "描述"
        },
        "groupCode": {
          "type": "string",
          "description": "公式组编码"
        },
        "groupId": {
          "type": "string",
          "description": "公式组ID"
        },
        "groupName": {
          "type": "string",
          "description": "公式组名称"
        },
        "isActive": {
          "type": "boolean",
          "description": "是否激活"
        },
        "productType": {
          "type": "string",
          "description": "适用产品类型"
        },
        "stepCount": {
          "type": "integer",
          "format": "int32",
          "description": "步骤数量"
        },
        "version": {
          "type": "integer",
          "format": "int32",
          "description": "版本号"
        }
      },
      "title": "公式组VO"
    },
    "公式组请求": {
      "type": "object",
      "required": [
        "groupCode",
        "groupName",
        "productType"
      ],
      "properties": {
        "description": {
          "type": "string",
          "example": "核心产品标准报价公式",
          "description": "描述"
        },
        "groupCode": {
          "type": "string",
          "example": "CORE_PRICING_V1",
          "description": "公式组编码"
        },
        "groupName": {
          "type": "string",
          "example": "核心产品定价公式",
          "description": "公式组名称"
        },
        "productType": {
          "type": "string",
          "example": "CORE",
          "description": "适用产品类型：CORE/ROUTE/CUSTOM/GROUP"
        }
      },
      "title": "公式组请求"
    },
    "分享链接响应": {
      "type": "object",
      "properties": {
        "expireTime": {
          "type": "object",
          "description": "链接过期时间(Unix时间戳)"
        },
        "productId": {
          "type": "integer",
          "format": "int64",
          "description": "产品ID"
        },
        "productName": {
          "type": "string",
          "description": "产品名称"
        },
        "urlLink": {
          "type": "string",
          "description": "微信URL Link"
        }
      },
      "title": "分享链接响应"
    },
    "分页结果«C端产品列表VO»": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "当前页码"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "example": 20,
          "description": "每页条数"
        },
        "records": {
          "type": "array",
          "description": "数据列表",
          "items": {
            "$ref": "#/definitions/C端产品列表VO",
            "originalRef": "C端产品列表VO"
          }
        },
        "total": {
          "type": "integer",
          "format": "int32",
          "example": 100,
          "description": "总记录数"
        }
      },
      "title": "分页结果«C端产品列表VO»"
    },
    "分页结果«产品列表VO»": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "当前页码"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "example": 20,
          "description": "每页条数"
        },
        "records": {
          "type": "array",
          "description": "数据列表",
          "items": {
            "$ref": "#/definitions/产品列表VO",
            "originalRef": "产品列表VO"
          }
        },
        "total": {
          "type": "integer",
          "format": "int32",
          "example": 100,
          "description": "总记录数"
        }
      },
      "title": "分页结果«产品列表VO»"
    },
    "分页结果«产品线VO»": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "当前页码"
        },
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "example": 20,
          "description": "每页条数"
        },
        "records": {
          "type": "array",
          "description": "数据列表",
          "items": {
            "$ref": "#/definitions/产品线VO",
            "originalRef": "产品线VO"
          }
        },
        "total": {
          "type": "integer",
          "format": "int32",
          "example": 100,
          "description": "总记录数"
        }
      },
      "title": "分页结果«产品线VO»"
    },
    "创建产品线请求": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "coverImageUrl": {
          "type": "string",
          "example": "https://oss.example.com/cover.jpg",
          "description": "封面图URL"
        },
        "description": {
          "type": "string",
          "example": "丽江古城及周边精品旅游线路",
          "description": "产品线描述"
        },
        "name": {
          "type": "string",
          "example": "丽江精品线路",
          "description": "产品线名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        }
      },
      "title": "创建产品线请求"
    },
    "创建产品请求": {
      "type": "object",
      "required": [
        "name",
        "productType"
      ],
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "婴儿人数"
        },
        "bookingTermsId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "预订条款ID（关联预订条款模板）"
        },
        "carouselImages": {
          "type": "array",
          "description": "轮播图列表",
          "items": {
            "type": "string"
          }
        },
        "carouselVideoUrl": {
          "type": "string",
          "example": "https://oss.example.com/video.mp4",
          "description": "轮播视频URL"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "儿童人数"
        },
        "contactPhone": {
          "type": "string",
          "example": 13800138000,
          "description": "联系电话（定制产品）"
        },
        "creatorAvatarUrl": {
          "type": "string",
          "example": "https://oss.example.com/avatar.jpg",
          "description": "定制师头像URL"
        },
        "creatorIntro": {
          "type": "string",
          "example": "带你体验最地道的丽江风情",
          "description": "创作者寄语"
        },
        "customerName": {
          "type": "string",
          "example": "张三",
          "description": "客户姓名（定制产品）"
        },
        "customizerId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "定制师ID"
        },
        "departureCity": {
          "type": "string",
          "example": "昆明",
          "description": "出发城市"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-07-01",
          "description": "出发日期（定制产品）"
        },
        "destinationCity": {
          "type": "string",
          "example": "丽江",
          "description": "目的地城市"
        },
        "folderId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "所属文件夹ID"
        },
        "groupChatQrUrl": {
          "type": "string",
          "example": "https://oss.example.com/qr.jpg",
          "description": "群聊二维码URL"
        },
        "groupRoomId": {
          "type": "string",
          "description": "企微群聊ID(用于会话存档展示群消息)"
        },
        "isBooking": {
          "type": "boolean",
          "example": false,
          "description": "是否预约产品"
        },
        "lineId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "产品线ID"
        },
        "maxAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每单最大成人数(不填则不限制)"
        },
        "maxChildPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每单最大儿童数(不填则不限制)"
        },
        "mchId": {
          "type": "string",
          "example": "shanhe",
          "description": "商户号：shanhe/wenlu"
        },
        "minAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "每单最少成人数(不填默认1)"
        },
        "name": {
          "type": "string",
          "example": "丽江5日深度游",
          "description": "产品名称"
        },
        "productType": {
          "type": "string",
          "example": "CORE",
          "description": "产品类型：CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团"
        },
        "refundPolicyId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "退款政策ID（已废弃，用refundPolicyIds替代）"
        },
        "refundPolicyIds": {
          "type": "object",
          "example": {
            "FULL": "1893012345678901234",
            "DEPOSIT": "1893012345678901235"
          },
          "description": "退款政策映射（按退款类型绑定不同政策）。key=退款类型(FULL/DEPOSIT/BALANCE), value=政策ID",
          "additionalProperties": {
            "type": "string"
          }
        },
        "seasons": {
          "type": "array",
          "description": "适用季节列表",
          "items": {
            "type": "string"
          }
        },
        "showChatGroup": {
          "type": "boolean",
          "example": true,
          "description": "是否显示群聊入口"
        },
        "showReview": {
          "type": "boolean",
          "example": true,
          "description": "是否显示评价"
        },
        "showTripDistance": {
          "type": "boolean",
          "example": true,
          "description": "是否显示行程距离"
        },
        "showTripTime": {
          "type": "boolean",
          "example": true,
          "description": "是否显示行程时间"
        },
        "subtitle": {
          "type": "string",
          "example": "探访纳西文化，邂逅玉龙雪山",
          "description": "副标题"
        },
        "tags": {
          "type": "array",
          "description": "产品标签列表",
          "items": {
            "type": "string"
          }
        },
        "tripDays": {
          "type": "integer",
          "format": "int32",
          "example": 5,
          "description": "行程天数"
        },
        "warmTipsId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "温馨提示ID（关联温馨提示模板）"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "小童人数"
        }
      },
      "title": "创建产品请求"
    },
    "创建拼团批次请求": {
      "type": "object",
      "required": [
        "batchName",
        "departureDate",
        "enrollmentDeadline",
        "maxParticipants",
        "maxRooms"
      ],
      "properties": {
        "adultsPerRoom": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每间房入住成人数（默认2，用于计算单房差：酒店总成本÷此值）"
        },
        "batchName": {
          "type": "string",
          "example": "7月20日第1批",
          "description": "批次名称"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-07-20",
          "description": "出发日期"
        },
        "enrollmentDeadline": {
          "type": "string",
          "format": "date",
          "example": "2026-07-15",
          "description": "报名截止日期，必须早于出发日期"
        },
        "maxParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "最大参团人数（报名人数达到上限后自动关闭报名）"
        },
        "maxRooms": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "总房间数（下单时扣减房间库存）"
        },
        "minParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "最低成团人数（0=不限制，达到此人数自动变为CONFIRMED状态）"
        },
        "remark": {
          "type": "string",
          "example": "暑期特别批次",
          "description": "备注说明"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "排序序号（越小越靠前）"
        }
      },
      "title": "创建拼团批次请求"
    },
    "创建文件夹请求": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "example": "国内线路",
          "description": "文件夹名称"
        },
        "parentId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "父文件夹ID，为空则为根文件夹"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        }
      },
      "title": "创建文件夹请求"
    },
    "创建行程节点请求": {
      "type": "object",
      "required": [
        "nodeName",
        "nodeType"
      ],
      "properties": {
        "description": {
          "type": "string",
          "example": "漫步古城，感受纳西文化",
          "description": "节点描述"
        },
        "distanceKm": {
          "type": "number",
          "example": 15.5,
          "description": "距离（公里）"
        },
        "durationMinutes": {
          "type": "integer",
          "format": "int32",
          "example": 120,
          "description": "时长（分钟）"
        },
        "emojiIcon": {
          "type": "string",
          "example": "city_sunset",
          "description": "表情图标"
        },
        "extraData": {
          "type": "string",
          "description": "扩展数据（JSON格式）"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（仅CUSTOM定制产品使用，实现按家庭分配行程节点）",
          "items": {
            "type": "string"
          }
        },
        "images": {
          "type": "array",
          "description": "节点图片列表",
          "items": {
            "type": "string"
          }
        },
        "latitude": {
          "type": "number",
          "example": 26.872108,
          "description": "纬度"
        },
        "longitude": {
          "type": "number",
          "example": 100.233026,
          "description": "经度"
        },
        "nodeName": {
          "type": "string",
          "example": "丽江古城游览",
          "description": "节点名称"
        },
        "nodeType": {
          "type": "string",
          "example": "SCENIC",
          "description": "节点类型：TRANSPORT(交通)/SCENIC(景区)/RESTAURANT(餐厅)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)/SERVICE(服务)/NOTE(备注)"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "数量"
        },
        "resourceId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "关联资源ID（来自资源服务，关联后节点名称和图片可自动同步）"
        },
        "resourceType": {
          "type": "string",
          "example": "SCENIC",
          "description": "关联资源类型（关联后可从资源服务获取价格参与成本计算）：SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE"
        },
        "startTime": {
          "type": "string",
          "example": "09:00",
          "description": "开始时间"
        }
      },
      "title": "创建行程节点请求"
    },
    "团批次VO": {
      "type": "object",
      "properties": {
        "adultsPerRoom": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每间房入住成人数（用于计算单房差）"
        },
        "batchId": {
          "type": "string",
          "example": 2026280000000000001,
          "description": "批次ID"
        },
        "batchLabel": {
          "type": "string",
          "example": "五一团",
          "description": "批次标签(简称)"
        },
        "batchName": {
          "type": "string",
          "example": "2026年五一黄金周第一批",
          "description": "批次名称"
        },
        "batchNo": {
          "type": "string",
          "example": "B20260501-01",
          "description": "批次编号"
        },
        "batchStatus": {
          "type": "string",
          "example": "ENROLLING",
          "description": "批次状态: PENDING/ENROLLING/CONFIRMED/FULL/CLOSED/IN_PROGRESS/FINISHED/DISBANDED"
        },
        "bookedRooms": {
          "type": "integer",
          "format": "int32",
          "example": 5,
          "description": "已预订房间数"
        },
        "createBy": {
          "type": "string",
          "example": 2026260000000000001,
          "description": "创建人ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-01",
          "description": "出发日期"
        },
        "endDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-05",
          "description": "结束日期"
        },
        "enrolledCount": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "已报名人数"
        },
        "enrollmentDeadline": {
          "type": "string",
          "format": "date",
          "example": "2026-04-25",
          "description": "报名截止日期"
        },
        "maxParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "最大人数"
        },
        "maxRooms": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "总房间数"
        },
        "minParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "最少成团人数"
        },
        "parentBatchId": {
          "type": "string",
          "example": 2026280000000000001,
          "description": "父批次ID(子批次时有值)"
        },
        "productId": {
          "type": "string",
          "example": 2026270000000000001,
          "description": "产品ID"
        },
        "remainingRooms": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "剩余房间数"
        },
        "remainingSlots": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "剩余名额"
        },
        "remark": {
          "type": "string",
          "description": "备注"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序"
        },
        "subBatches": {
          "type": "array",
          "description": "子批次列表(树形)",
          "items": {
            "$ref": "#/definitions/团批次VO",
            "originalRef": "团批次VO"
          }
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "团批次VO"
    },
    "团批次服务人员VO": {
      "type": "object",
      "properties": {
        "batchId": {
          "type": "string",
          "example": 2026280000000000001,
          "description": "批次ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "id": {
          "type": "string",
          "example": 2026280000000000020,
          "description": "记录ID"
        },
        "productId": {
          "type": "string",
          "example": 2026270000000000001,
          "description": "产品ID"
        },
        "remark": {
          "type": "string",
          "description": "备注"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序"
        },
        "staffId": {
          "type": "string",
          "example": 2026250000000000001,
          "description": "服务人员ID"
        },
        "staffName": {
          "type": "string",
          "example": "张导",
          "description": "姓名"
        },
        "staffPhone": {
          "type": "string",
          "example": 13800138000,
          "description": "手机号"
        },
        "staffRole": {
          "type": "string",
          "example": "GUIDE",
          "description": "角色: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER"
        }
      },
      "title": "团批次服务人员VO"
    },
    "团批次详情VO": {
      "type": "object",
      "properties": {
        "adultsPerRoom": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每间房入住成人数（用于计算单房差）"
        },
        "batchId": {
          "type": "string",
          "example": 2026280000000000001,
          "description": "批次ID"
        },
        "batchLabel": {
          "type": "string",
          "example": "五一团",
          "description": "批次标签(简称)"
        },
        "batchName": {
          "type": "string",
          "example": "2026年五一黄金周第一批",
          "description": "批次名称"
        },
        "batchNo": {
          "type": "string",
          "example": "B20260501-01",
          "description": "批次编号"
        },
        "batchStatus": {
          "type": "string",
          "example": "ENROLLING",
          "description": "批次状态: PENDING/ENROLLING/CONFIRMED/FULL/CLOSED/IN_PROGRESS/FINISHED/DISBANDED"
        },
        "bookedRooms": {
          "type": "integer",
          "format": "int32",
          "example": 5,
          "description": "已预订房间数"
        },
        "createBy": {
          "type": "string",
          "example": 2026260000000000001,
          "description": "创建人ID"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-01",
          "description": "出发日期"
        },
        "endDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-05",
          "description": "结束日期"
        },
        "enrolledCount": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "已报名人数"
        },
        "enrollmentDeadline": {
          "type": "string",
          "format": "date",
          "example": "2026-04-25",
          "description": "报名截止日期"
        },
        "maxParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "最大人数"
        },
        "maxRooms": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "总房间数"
        },
        "minParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "最少成团人数"
        },
        "parentBatchId": {
          "type": "string",
          "example": 2026280000000000001,
          "description": "父批次ID(子批次时有值)"
        },
        "productId": {
          "type": "string",
          "example": 2026270000000000001,
          "description": "产品ID"
        },
        "remainingRooms": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "剩余房间数"
        },
        "remainingSlots": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "剩余名额"
        },
        "remark": {
          "type": "string",
          "description": "备注"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序"
        },
        "staff": {
          "type": "array",
          "description": "服务人员列表",
          "items": {
            "$ref": "#/definitions/团批次服务人员VO",
            "originalRef": "团批次服务人员VO"
          }
        },
        "subBatches": {
          "type": "array",
          "description": "子批次列表(树形)",
          "items": {
            "$ref": "#/definitions/团批次VO",
            "originalRef": "团批次VO"
          }
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "团批次详情VO"
    },
    "定价配置请求": {
      "type": "object",
      "properties": {
        "adultExtraBed": {
          "type": "number",
          "example": 200.0,
          "description": "成人加床费"
        },
        "babyPrice": {
          "type": "number",
          "example": 300.0,
          "description": "婴儿固定价格（不随日期变化）"
        },
        "balanceDueDays": {
          "type": "integer",
          "format": "int32",
          "example": 7,
          "description": "尾款支付截止天数（出发前N天必须支付尾款，超时可能取消订单）"
        },
        "childDiscountPercent": {
          "type": "number",
          "example": 70.0,
          "description": "小童折扣百分比（小童价=儿童价×此百分比/100，如70表示打7折）"
        },
        "childNoBed": {
          "type": "number",
          "example": 1200.0,
          "description": "儿童不占床价（暂未使用，预留字段）"
        },
        "childWithBed": {
          "type": "number",
          "example": 1800.0,
          "description": "儿童加床费（childNeedBed=true时额外加收的费用）"
        },
        "companionPrice": {
          "type": "number",
          "example": 0.0,
          "description": "陪同人员价格"
        },
        "customTotalPrice": {
          "type": "number",
          "example": 28800.0,
          "description": "定制产品总价（CUSTOM定价模式下使用，代表整单总价）"
        },
        "depositAmount": {
          "type": "number",
          "example": 1000.0,
          "description": "定金金额（固定金额，与depositRatio二选一）"
        },
        "depositRatio": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "定金比例（百分比，如30代表30%。与depositAmount二选一，优先使用比例）"
        },
        "extraCostPerPerson": {
          "type": "number",
          "example": 50.0,
          "description": "每人额外成本"
        },
        "insuranceFee": {
          "type": "number",
          "example": 50.0,
          "description": "保险费用"
        },
        "markupPercent": {
          "type": "number",
          "example": 20.0,
          "description": "加价百分比（PERCENT模式下使用）"
        },
        "maxGroupSize": {
          "type": "integer",
          "format": "int32",
          "example": 16,
          "description": "最大成团人数（CORE/GROUP产品用）"
        },
        "mealBudget": {
          "type": "number",
          "example": 100.0,
          "description": "餐费预算"
        },
        "minGroupSize": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "最小成团人数（CORE/GROUP产品用，影响均摊成本计算）"
        },
        "paymentType": {
          "type": "string",
          "example": "FULL",
          "description": "支付方式：FULL=全款支付 DEPOSIT=定金+尾款分期支付"
        },
        "pricingMode": {
          "type": "string",
          "example": "AUTO",
          "description": "定价模式：AUTO=根据行程资源价格自动计算 MANUAL=手动在价格日历设置每日价格 CUSTOM=定制产品整单定价"
        },
        "profitAmount": {
          "type": "number",
          "example": 500.0,
          "description": "利润金额（FIXED模式下使用）"
        },
        "profitMode": {
          "type": "string",
          "example": "FIXED",
          "description": "利润模式（AUTO模式下生效）：FIXED=在成本基础上加固定金额 PERCENT=在成本基础上按百分比加价"
        },
        "singleRoomDiff": {
          "type": "number",
          "example": 300.0,
          "description": "单房差"
        },
        "vehicleModelIds": {
          "type": "array",
          "description": "车型ID列表",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "title": "定价配置请求"
    },
    "家庭分组VO": {
      "type": "object",
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "description": "成人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "description": "幼童数"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "description": "儿童数"
        },
        "familyId": {
          "type": "string",
          "description": "家庭ID"
        },
        "familyName": {
          "type": "string",
          "description": "家庭名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "description": "小童数"
        }
      },
      "title": "家庭分组VO"
    },
    "家庭分组保存请求": {
      "type": "object",
      "required": [
        "familyName"
      ],
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "幼童数"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "儿童数"
        },
        "familyName": {
          "type": "string",
          "example": "家庭1",
          "description": "家庭名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "排序序号"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "小童数"
        }
      },
      "title": "家庭分组保存请求",
      "description": "仅适用于CUSTOM定制产品，用于将行程按家庭单位分配"
    },
    "家庭成本明细": {
      "type": "object",
      "properties": {
        "activityCost": {
          "type": "number",
          "description": "活动成本"
        },
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "description": "成人数"
        },
        "babyCost": {
          "type": "number",
          "description": "婴儿固定成本"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "description": "幼童数"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "description": "儿童数"
        },
        "costPerPerson": {
          "type": "number",
          "description": "人均成本（家庭成本/付费人头）"
        },
        "customFeeCost": {
          "type": "number",
          "description": "自定义费用成本"
        },
        "extraCost": {
          "type": "number",
          "description": "额外成本"
        },
        "familyId": {
          "type": "string",
          "description": "家庭ID"
        },
        "familyName": {
          "type": "string",
          "description": "家庭名称"
        },
        "headcount": {
          "type": "integer",
          "format": "int32",
          "description": "人头数"
        },
        "hotelCost": {
          "type": "number",
          "description": "酒店成本"
        },
        "insuranceCost": {
          "type": "number",
          "description": "保险成本"
        },
        "payingHeadcount": {
          "type": "integer",
          "format": "int32",
          "description": "付费人头数（不含幼童）"
        },
        "personCosts": {
          "type": "array",
          "description": "每人分项成本列表",
          "items": {
            "$ref": "#/definitions/每人成本明细",
            "originalRef": "每人成本明细"
          }
        },
        "scenicCost": {
          "type": "number",
          "description": "景区成本"
        },
        "sellPricePerPerson": {
          "type": "number",
          "description": "人均售价（家庭售价/付费人头）"
        },
        "serviceCost": {
          "type": "number",
          "description": "服务成本"
        },
        "staffCost": {
          "type": "number",
          "description": "人员成本"
        },
        "suppliesCost": {
          "type": "number",
          "description": "物资成本"
        },
        "totalCost": {
          "type": "number",
          "description": "家庭成本合计"
        },
        "totalProfit": {
          "type": "number",
          "description": "家庭利润合计"
        },
        "totalSellPrice": {
          "type": "number",
          "description": "家庭售价合计"
        },
        "vehicleCost": {
          "type": "number",
          "description": "车辆成本"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "description": "小童数"
        }
      },
      "title": "家庭成本明细"
    },
    "成本项请求": {
      "type": "object",
      "required": [
        "category",
        "title",
        "type"
      ],
      "properties": {
        "category": {
          "type": "string",
          "example": "HOTEL",
          "description": "成本项类别：HOTEL/SCENIC/VEHICLE/ACTIVITY/SERVICE/DINING/OTHER"
        },
        "description": {
          "type": "string",
          "example": "含早餐，标准双人间",
          "description": "成本项描述"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        },
        "title": {
          "type": "string",
          "example": "丽江古城酒店住宿",
          "description": "成本项标题"
        },
        "type": {
          "type": "string",
          "example": "INCLUDED",
          "description": "成本项类型：INCLUDED=费用包含 EXCLUDED=费用不含 SELF_PAY=自理费用"
        }
      },
      "title": "成本项请求"
    },
    "成本预览VO": {
      "type": "object",
      "properties": {
        "adultCostPrice": {
          "type": "number",
          "description": "成人成本价"
        },
        "adultSellPrice": {
          "type": "number",
          "description": "成人售价"
        },
        "childCostPrice": {
          "type": "number",
          "description": "儿童成本价"
        },
        "childSellPrice": {
          "type": "number",
          "description": "儿童售价"
        },
        "warnings": {
          "type": "array",
          "description": "警告信息列表",
          "items": {
            "type": "string"
          }
        }
      },
      "title": "成本预览VO"
    },
    "成本预览请求": {
      "type": "object",
      "required": [
        "date"
      ],
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人人数（GROUP产品用）"
        },
        "date": {
          "type": "string",
          "format": "date",
          "example": "2026-05-01",
          "description": "日期"
        }
      },
      "title": "成本预览请求"
    },
    "批次服务人员分配请求": {
      "type": "object",
      "required": [
        "staffId",
        "staffRole"
      ],
      "properties": {
        "remark": {
          "type": "string",
          "example": "主导游",
          "description": "备注（如：主导游、备用摄影师等）"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "排序序号（越小越靠前）"
        },
        "staffId": {
          "type": "integer",
          "format": "int64",
          "example": 1760000000000001,
          "description": "人员ID（来自资源服务的人员库）"
        },
        "staffRole": {
          "type": "string",
          "example": "LEADER",
          "description": "在该批次中的角色：LEADER(领队)/PHOTOGRAPHER(摄影师)/DRIVER(司机)/OTHER(其他)"
        }
      },
      "title": "批次服务人员分配请求"
    },
    "批量设置价格日历请求": {
      "type": "object",
      "required": [
        "endDate",
        "startDate"
      ],
      "properties": {
        "adultCostPrice": {
          "type": "number",
          "example": 2800.0,
          "description": "成人成本价"
        },
        "adultSellPrice": {
          "type": "number",
          "example": 3980.0,
          "description": "成人售价"
        },
        "childCostPrice": {
          "type": "number",
          "example": 1800.0,
          "description": "儿童成本价"
        },
        "childSellPrice": {
          "type": "number",
          "example": 2680.0,
          "description": "儿童售价"
        },
        "costAutoCalc": {
          "type": "boolean",
          "example": true,
          "description": "是否自动计算成本"
        },
        "endDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-07",
          "description": "结束日期"
        },
        "remark": {
          "type": "string",
          "example": "五一黄金周特价",
          "description": "备注"
        },
        "selectedWeekdays": {
          "type": "array",
          "example": [
            1,
            2,
            3,
            4,
            5
          ],
          "description": "选中的星期(1=周一...7=周日)，为空或包含全部则不过滤",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "startDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-01",
          "description": "开始日期"
        },
        "status": {
          "type": "string",
          "example": "OPEN",
          "description": "状态：OPEN=开放 CLOSED=关闭"
        },
        "stock": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "库存数量"
        }
      },
      "title": "批量设置价格日历请求"
    },
    "报价结果VO": {
      "type": "object",
      "properties": {
        "customFeeCost": {
          "type": "number",
          "description": "自定义费用合计（定制产品）"
        },
        "dayCosts": {
          "type": "array",
          "description": "每日成本明细列表",
          "items": {
            "$ref": "#/definitions/每日成本明细",
            "originalRef": "每日成本明细"
          }
        },
        "extraCostItems": {
          "type": "array",
          "description": "额外成本明细列表",
          "items": {
            "$ref": "#/definitions/额外成本明细项",
            "originalRef": "额外成本明细项"
          }
        },
        "extraCostPerPerson": {
          "type": "number",
          "description": "每人额外成本"
        },
        "extraCostTotal": {
          "type": "number",
          "description": "额外成本合计"
        },
        "familyCosts": {
          "type": "array",
          "description": "家庭分组成本明细（定制产品，有分组时返回）",
          "items": {
            "$ref": "#/definitions/家庭成本明细",
            "originalRef": "家庭成本明细"
          }
        },
        "grandTotalCost": {
          "type": "number",
          "description": "总成本合计"
        },
        "grandTotalProfit": {
          "type": "number",
          "description": "总利润合计"
        },
        "grandTotalSellPrice": {
          "type": "number",
          "description": "总售价合计"
        },
        "insuranceFee": {
          "type": "number",
          "description": "保险费用"
        },
        "profitRate": {
          "type": "number",
          "description": "利润率（百分比）"
        },
        "staffCost": {
          "type": "number",
          "description": "人员成本"
        },
        "suppliesCost": {
          "type": "number",
          "description": "物资成本"
        },
        "totalAdultCost": {
          "type": "number",
          "description": "成人总成本"
        },
        "totalAdultProfit": {
          "type": "number",
          "description": "成人总利润"
        },
        "totalAdultSellPrice": {
          "type": "number",
          "description": "成人总售价"
        },
        "totalBabyCost": {
          "type": "number",
          "description": "婴儿总成本"
        },
        "totalBabySellPrice": {
          "type": "number",
          "description": "婴儿总售价"
        },
        "totalChildCost": {
          "type": "number",
          "description": "儿童总成本"
        },
        "totalChildSellPrice": {
          "type": "number",
          "description": "儿童总售价"
        },
        "totalYoungChildCost": {
          "type": "number",
          "description": "小童总成本"
        },
        "totalYoungChildSellPrice": {
          "type": "number",
          "description": "小童总售价"
        },
        "warnings": {
          "type": "array",
          "description": "警告信息列表",
          "items": {
            "type": "string"
          }
        }
      },
      "title": "报价结果VO"
    },
    "报价请求": {
      "type": "object",
      "required": [
        "adultCount",
        "departureDate"
      ],
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "婴儿人数（按固定 babyPrice 计算）"
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "儿童人数（占床，按儿童价计算）"
        },
        "childNeedBed": {
          "type": "boolean",
          "example": false,
          "description": "儿童是否加床（true 时额外加收 childWithBed 费用）"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-05-01",
          "description": "出发日期"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "小童人数（不占床，按儿童价 × childDiscountPercent 折扣比例计算）"
        }
      },
      "title": "报价请求"
    },
    "更新产品线请求": {
      "type": "object",
      "properties": {
        "coverImageUrl": {
          "type": "string",
          "example": "https://oss.example.com/cover.jpg",
          "description": "封面图URL"
        },
        "description": {
          "type": "string",
          "example": "丽江古城及周边精品旅游线路",
          "description": "产品线描述"
        },
        "name": {
          "type": "string",
          "example": "丽江精品线路",
          "description": "产品线名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        },
        "status": {
          "type": "string",
          "example": "ACTIVE",
          "description": "产品线状态：ACTIVE=启用 INACTIVE=停用"
        }
      },
      "title": "更新产品线请求"
    },
    "更新产品请求": {
      "type": "object",
      "properties": {
        "adultCount": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "成人人数"
        },
        "babyCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "婴儿人数"
        },
        "bookingTermsId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "预订条款ID（关联预订条款模板）"
        },
        "carouselImages": {
          "type": "array",
          "description": "轮播图列表",
          "items": {
            "type": "string"
          }
        },
        "carouselVideoUrl": {
          "type": "string",
          "example": "https://oss.example.com/video.mp4",
          "description": "轮播视频URL"
        },
        "chatMessages": {
          "type": "array",
          "description": "群聊消息列表",
          "items": {
            "$ref": "#/definitions/群聊消息VO",
            "originalRef": "群聊消息VO"
          }
        },
        "childCount": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "儿童人数"
        },
        "contactPhone": {
          "type": "string",
          "example": 13800138000,
          "description": "联系电话（定制产品）"
        },
        "creatorAvatarUrl": {
          "type": "string",
          "example": "https://oss.example.com/avatar.jpg",
          "description": "定制师头像URL"
        },
        "creatorIntro": {
          "type": "string",
          "example": "带你体验最地道的丽江风情",
          "description": "创作者寄语"
        },
        "customerName": {
          "type": "string",
          "example": "张三",
          "description": "客户姓名（定制产品）"
        },
        "customizerId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "定制师ID"
        },
        "departureCity": {
          "type": "string",
          "example": "昆明",
          "description": "出发城市"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-07-01",
          "description": "出发日期（定制产品）"
        },
        "destinationCity": {
          "type": "string",
          "example": "丽江",
          "description": "目的地城市"
        },
        "folderId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "所属文件夹ID"
        },
        "groupChatQrUrl": {
          "type": "string",
          "example": "https://oss.example.com/qr.jpg",
          "description": "群聊二维码URL"
        },
        "groupRoomId": {
          "type": "string",
          "description": "企微群聊ID(用于会话存档展示群消息)"
        },
        "isBooking": {
          "type": "boolean",
          "example": false,
          "description": "是否预约产品"
        },
        "lineId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "产品线ID"
        },
        "lineSubtitle": {
          "type": "string",
          "example": "亲子游",
          "description": "产品线副标题"
        },
        "maxAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每单最大成人数(不填则不限制)"
        },
        "maxChildPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每单最大儿童数(不填则不限制)"
        },
        "mchId": {
          "type": "string",
          "example": "shanhe",
          "description": "商户号：shanhe/wenlu"
        },
        "minAdultPerOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "每单最少成人数(不填默认1)"
        },
        "name": {
          "type": "string",
          "example": "丽江5日深度游",
          "description": "产品名称"
        },
        "refundPolicyId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "退款政策ID（已废弃，用refundPolicyIds替代）"
        },
        "refundPolicyIds": {
          "type": "object",
          "example": {
            "FULL": "1893012345678901234",
            "DEPOSIT": "1893012345678901235"
          },
          "description": "退款政策映射（按退款类型绑定不同政策）。key=退款类型(FULL/DEPOSIT/BALANCE), value=政策ID",
          "additionalProperties": {
            "type": "string"
          }
        },
        "seasons": {
          "type": "array",
          "description": "适用季节列表",
          "items": {
            "type": "string"
          }
        },
        "showChatGroup": {
          "type": "boolean",
          "example": true,
          "description": "是否显示群聊入口"
        },
        "showReview": {
          "type": "boolean",
          "example": true,
          "description": "是否显示评价"
        },
        "showTripDistance": {
          "type": "boolean",
          "example": true,
          "description": "是否显示行程距离"
        },
        "showTripTime": {
          "type": "boolean",
          "example": true,
          "description": "是否显示行程时间"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        },
        "subtitle": {
          "type": "string",
          "example": "探访纳西文化，邂逅玉龙雪山",
          "description": "副标题"
        },
        "tags": {
          "type": "array",
          "description": "产品标签列表",
          "items": {
            "type": "string"
          }
        },
        "teamExperienceYears": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "团队经验年数"
        },
        "tripDays": {
          "type": "integer",
          "format": "int32",
          "example": 5,
          "description": "行程天数"
        },
        "warmTipsId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "温馨提示ID（关联温馨提示模板）"
        },
        "youngChildCount": {
          "type": "integer",
          "format": "int32",
          "example": 0,
          "description": "小童人数"
        }
      },
      "title": "更新产品请求"
    },
    "更新拼团批次请求": {
      "type": "object",
      "properties": {
        "adultsPerRoom": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "每间房入住成人数（默认2，用于计算单房差）"
        },
        "batchName": {
          "type": "string",
          "example": "7月20日第1批",
          "description": "批次名称"
        },
        "departureDate": {
          "type": "string",
          "format": "date",
          "example": "2026-07-20",
          "description": "出发日期"
        },
        "enrollmentDeadline": {
          "type": "string",
          "format": "date",
          "example": "2026-07-15",
          "description": "报名截止日期"
        },
        "maxParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 30,
          "description": "最大参团人数（不能低于已报名人数）"
        },
        "maxRooms": {
          "type": "integer",
          "format": "int32",
          "example": 15,
          "description": "总房间数（不能低于已预订房间数）"
        },
        "minParticipants": {
          "type": "integer",
          "format": "int32",
          "example": 10,
          "description": "最低成团人数（0=不限制）"
        },
        "remark": {
          "type": "string",
          "description": "备注说明"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        }
      },
      "title": "更新拼团批次请求"
    },
    "更新文件夹请求": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "国内线路",
          "description": "文件夹名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "排序序号"
        }
      },
      "title": "更新文件夹请求"
    },
    "更新行程节点请求": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "example": "漫步古城，感受纳西文化",
          "description": "节点描述"
        },
        "distanceKm": {
          "type": "number",
          "example": 15.5,
          "description": "距离（公里）"
        },
        "durationMinutes": {
          "type": "integer",
          "format": "int32",
          "example": 120,
          "description": "时长（分钟）"
        },
        "emojiIcon": {
          "type": "string",
          "example": "city_sunset",
          "description": "表情图标"
        },
        "extraData": {
          "type": "string",
          "description": "扩展数据（JSON格式）"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "images": {
          "type": "array",
          "description": "节点图片列表",
          "items": {
            "type": "string"
          }
        },
        "latitude": {
          "type": "number",
          "example": 26.872108,
          "description": "纬度"
        },
        "longitude": {
          "type": "number",
          "example": 100.233026,
          "description": "经度"
        },
        "nodeName": {
          "type": "string",
          "example": "丽江古城游览",
          "description": "节点名称"
        },
        "nodeType": {
          "type": "string",
          "example": "SCENIC",
          "description": "节点类型：TRANSPORT(交通)/SCENIC(景区)/RESTAURANT(餐厅)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)/SERVICE(服务)/NOTE(备注)"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "数量"
        },
        "resourceId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "关联资源ID"
        },
        "resourceType": {
          "type": "string",
          "example": "SCENIC",
          "description": "关联资源类型：SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/STAFF"
        },
        "startTime": {
          "type": "string",
          "example": "09:00",
          "description": "开始时间"
        }
      },
      "title": "更新行程节点请求"
    },
    "权益分组": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "description": "权益项列表",
          "items": {
            "$ref": "#/definitions/权益项",
            "originalRef": "权益项"
          }
        },
        "title": {
          "type": "string",
          "description": "分组标题，如：儿童权益 (1.2m以下)"
        }
      },
      "title": "权益分组"
    },
    "权益项": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string",
          "description": "类别，如：门票、住宿、餐饮"
        },
        "description": {
          "type": "string",
          "description": "说明，如：含全部景点儿童票"
        }
      },
      "title": "权益项"
    },
    "步骤执行结果": {
      "type": "object",
      "properties": {
        "errorMessage": {
          "type": "string",
          "description": "错误信息"
        },
        "executionTimeMs": {
          "type": "integer",
          "format": "int64",
          "description": "执行耗时(毫秒)"
        },
        "expression": {
          "type": "string",
          "description": "表达式"
        },
        "outputValue": {
          "type": "object",
          "description": "输出值"
        },
        "outputVar": {
          "type": "string",
          "description": "输出变量名"
        },
        "stepCode": {
          "type": "string",
          "description": "步骤编码"
        },
        "stepName": {
          "type": "string",
          "description": "步骤名称"
        },
        "success": {
          "type": "boolean",
          "description": "是否成功"
        }
      },
      "title": "步骤执行结果"
    },
    "每人成本明细": {
      "type": "object",
      "properties": {
        "activityCost": {
          "type": "number",
          "description": "活动成本"
        },
        "babyCost": {
          "type": "number",
          "description": "婴儿固定成本"
        },
        "customFeeCost": {
          "type": "number",
          "description": "自定义费用成本"
        },
        "extraCost": {
          "type": "number",
          "description": "额外成本"
        },
        "hotelCost": {
          "type": "number",
          "description": "酒店成本"
        },
        "insuranceCost": {
          "type": "number",
          "description": "保险成本"
        },
        "label": {
          "type": "string",
          "description": "人员标签（如 成人1、儿童1、婴儿1）"
        },
        "personType": {
          "type": "string",
          "description": "人员类型：ADULT/CHILD/YOUNG_CHILD/BABY"
        },
        "scenicCost": {
          "type": "number",
          "description": "景区成本"
        },
        "serviceCost": {
          "type": "number",
          "description": "服务成本"
        },
        "staffCost": {
          "type": "number",
          "description": "人员成本"
        },
        "suppliesCost": {
          "type": "number",
          "description": "物资成本"
        },
        "totalCost": {
          "type": "number",
          "description": "个人成本合计"
        },
        "vehicleCost": {
          "type": "number",
          "description": "车辆成本"
        }
      },
      "title": "每人成本明细"
    },
    "每日成本明细": {
      "type": "object",
      "properties": {
        "activityCost": {
          "type": "number",
          "description": "活动成本"
        },
        "dayCostTotal": {
          "type": "number",
          "description": "当日成本合计"
        },
        "dayNumber": {
          "type": "integer",
          "format": "int32",
          "description": "天数编号"
        },
        "diningCost": {
          "type": "number",
          "description": "餐饮成本"
        },
        "extraCost": {
          "type": "number",
          "description": "额外成本"
        },
        "hotelCost": {
          "type": "number",
          "description": "酒店成本（整间价）"
        },
        "scenicCost": {
          "type": "number",
          "description": "景区成本"
        },
        "serviceCost": {
          "type": "number",
          "description": "服务成本"
        },
        "singleRoomSupplement": {
          "type": "number",
          "description": "单房差（当日酒店成本÷每房成人数，GROUP产品专用）"
        },
        "staffCost": {
          "type": "number",
          "description": "人员成本"
        },
        "vehicleCost": {
          "type": "number",
          "description": "车辆成本"
        }
      },
      "title": "每日成本明细"
    },
    "每日酒店VO": {
      "type": "object",
      "properties": {
        "coverUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "dayNumber": {
          "type": "integer",
          "format": "int32",
          "description": "天数编号"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（NULL=所有家庭共享）",
          "items": {
            "type": "string"
          }
        },
        "familyRoomConfig": {
          "type": "object",
          "description": "家庭房间分配：{familyId: roomCount}",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          }
        },
        "hotelId": {
          "type": "string",
          "description": "酒店ID"
        },
        "hotelName": {
          "type": "string",
          "description": "酒店名称"
        },
        "id": {
          "type": "string",
          "description": "记录ID"
        },
        "isDefault": {
          "type": "boolean",
          "description": "是否默认酒店"
        },
        "roomCount": {
          "type": "integer",
          "format": "int32",
          "description": "房间数量"
        },
        "roomTypeId": {
          "type": "string",
          "description": "房型ID"
        },
        "roomTypeName": {
          "type": "string",
          "description": "房型名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        }
      },
      "title": "每日酒店VO"
    },
    "每日酒店配置请求": {
      "type": "object",
      "required": [
        "hotelId"
      ],
      "properties": {
        "coverUrl": {
          "type": "string",
          "example": "https://oss.example.com/hotel-cover.jpg",
          "description": "封面图URL"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品，不传=所有家庭共享）",
          "items": {
            "type": "string"
          }
        },
        "familyRoomConfig": {
          "type": "object",
          "description": "家庭房间分配（定制产品）：{familyId: roomCount}，如 {\"123\": 2, \"456\": 1}",
          "additionalProperties": {
            "type": "integer",
            "format": "int32"
          }
        },
        "hotelId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "酒店ID"
        },
        "hotelName": {
          "type": "string",
          "example": "丽江和府洲际度假酒店",
          "description": "酒店名称"
        },
        "isDefault": {
          "type": "boolean",
          "example": true,
          "description": "是否默认酒店"
        },
        "roomCount": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "房间数量"
        },
        "roomTypeId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "关联房型ID（定制产品必填，核心产品为空）"
        },
        "roomTypeName": {
          "type": "string",
          "example": "豪华山景大床房",
          "description": "房型名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        }
      },
      "title": "每日酒店配置请求"
    },
    "温馨提示VO": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string",
          "description": "提示内容（富文本）"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "createdBy": {
          "type": "integer",
          "format": "int64",
          "description": "创建人ID"
        },
        "enabled": {
          "type": "boolean",
          "description": "是否启用"
        },
        "remark": {
          "type": "string",
          "description": "备注"
        },
        "tipsId": {
          "type": "integer",
          "format": "int64",
          "description": "温馨提示ID"
        },
        "tipsName": {
          "type": "string",
          "description": "提示名称"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "温馨提示VO"
    },
    "温馨提示请求": {
      "type": "object",
      "required": [
        "content",
        "tipsName"
      ],
      "properties": {
        "content": {
          "type": "string",
          "description": "提示内容（富文本）"
        },
        "remark": {
          "type": "string",
          "example": "适用于草原类产品",
          "description": "备注"
        },
        "tipsName": {
          "type": "string",
          "example": "草原游温馨提示",
          "description": "提示名称"
        }
      },
      "title": "温馨提示请求"
    },
    "物资配置请求": {
      "type": "object",
      "required": [
        "suppliesId"
      ],
      "properties": {
        "billingType": {
          "type": "string",
          "example": "BY_PERSON",
          "description": "计费方式：BY_PERSON=按人头 BY_COUNT=按次/按件"
        },
        "costPerPerson": {
          "type": "number",
          "example": 30.0,
          "description": "每人成本"
        },
        "coverUrl": {
          "type": "string",
          "description": "封面图URL"
        },
        "dayNumber": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "天数编号（scope=DAY时生效）"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "数量"
        },
        "scope": {
          "type": "string",
          "example": "ALL",
          "description": "适用范围：ALL=整个行程 DAY=指定天"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        },
        "suppliesId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "物资ID"
        },
        "suppliesName": {
          "type": "string",
          "example": "登山杖",
          "description": "物资名称"
        }
      },
      "title": "物资配置请求"
    },
    "用餐选项VO": {
      "type": "object",
      "properties": {
        "coverUrl": {
          "type": "string",
          "description": "餐食封面图URL"
        },
        "dayNumber": {
          "type": "integer",
          "format": "int32",
          "description": "天数编号"
        },
        "id": {
          "type": "string",
          "description": "记录ID"
        },
        "mealTypes": {
          "type": "string",
          "description": "餐次：早餐/午餐/晚餐"
        },
        "priceInfo": {
          "type": "string",
          "description": "价格信息"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "description": "数量"
        },
        "restaurantId": {
          "type": "string",
          "description": "餐厅ID"
        },
        "restaurantName": {
          "type": "string",
          "description": "餐厅/餐食名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "unitPrice": {
          "type": "number",
          "description": "餐食单价(元)"
        }
      },
      "title": "用餐选项VO"
    },
    "用餐选项请求": {
      "type": "object",
      "properties": {
        "coverUrl": {
          "type": "string",
          "example": "https://oss.example.com/meal.jpg",
          "description": "餐食封面图URL"
        },
        "mealTypes": {
          "type": "string",
          "example": "午餐",
          "description": "餐次：早餐/午餐/晚餐"
        },
        "priceInfo": {
          "type": "string",
          "example": "人均80元",
          "description": "价格信息"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "数量"
        },
        "restaurantId": {
          "type": "string",
          "example": 1893012345678901234,
          "description": "餐厅ID（GROUP产品可不传）"
        },
        "restaurantName": {
          "type": "string",
          "example": "纳西风味餐厅",
          "description": "餐厅/餐食名称"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        },
        "unitPrice": {
          "type": "number",
          "example": 80.0,
          "description": "餐食单价(元，GROUP产品用于成本计算)"
        }
      },
      "title": "用餐选项请求"
    },
    "统一响应结果«GROUP产品报价结果»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/GROUP产品报价结果",
          "originalRef": "GROUP产品报价结果"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«GROUP产品报价结果»"
    },
    "统一响应结果«List«产品人员配置VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品人员配置VO",
            "originalRef": "产品人员配置VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品人员配置VO»»"
    },
    "统一响应结果«List«产品价格日历VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品价格日历VO",
            "originalRef": "产品价格日历VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品价格日历VO»»"
    },
    "统一响应结果«List«产品成本项VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品成本项VO",
            "originalRef": "产品成本项VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品成本项VO»»"
    },
    "统一响应结果«List«产品文件夹VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品文件夹VO",
            "originalRef": "产品文件夹VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品文件夹VO»»"
    },
    "统一响应结果«List«产品物资VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品物资VO",
            "originalRef": "产品物资VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品物资VO»»"
    },
    "统一响应结果«List«产品线VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品线VO",
            "originalRef": "产品线VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品线VO»»"
    },
    "统一响应结果«List«产品自定义费用项VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品自定义费用项VO",
            "originalRef": "产品自定义费用项VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品自定义费用项VO»»"
    },
    "统一响应结果«List«产品额外成本VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/产品额外成本VO",
            "originalRef": "产品额外成本VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«产品额外成本VO»»"
    },
    "统一响应结果«List«公式变量VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/公式变量VO",
            "originalRef": "公式变量VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«公式变量VO»»"
    },
    "统一响应结果«List«公式步骤VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/公式步骤VO",
            "originalRef": "公式步骤VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«公式步骤VO»»"
    },
    "统一响应结果«List«公式版本历史VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/公式版本历史VO",
            "originalRef": "公式版本历史VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«公式版本历史VO»»"
    },
    "统一响应结果«List«公式组VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/公式组VO",
            "originalRef": "公式组VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«公式组VO»»"
    },
    "统一响应结果«List«团批次VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/团批次VO",
            "originalRef": "团批次VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«团批次VO»»"
    },
    "统一响应结果«List«团批次服务人员VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/团批次服务人员VO",
            "originalRef": "团批次服务人员VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«团批次服务人员VO»»"
    },
    "统一响应结果«List«家庭分组VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/家庭分组VO",
            "originalRef": "家庭分组VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«家庭分组VO»»"
    },
    "统一响应结果«List«每日酒店VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/每日酒店VO",
            "originalRef": "每日酒店VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«每日酒店VO»»"
    },
    "统一响应结果«List«温馨提示VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/温馨提示VO",
            "originalRef": "温馨提示VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«温馨提示VO»»"
    },
    "统一响应结果«List«用餐选项VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/用餐选项VO",
            "originalRef": "用餐选项VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«用餐选项VO»»"
    },
    "统一响应结果«List«行政区划搜索结果»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/行政区划搜索结果",
            "originalRef": "行政区划搜索结果"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«行政区划搜索结果»»"
    },
    "统一响应结果«List«行程天VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/行程天VO",
            "originalRef": "行程天VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«行程天VO»»"
    },
    "统一响应结果«List«行程节点VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/行程节点VO",
            "originalRef": "行程节点VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«行程节点VO»»"
    },
    "统一响应结果«List«预订条款VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "array",
          "description": "响应数据",
          "items": {
            "$ref": "#/definitions/预订条款VO",
            "originalRef": "预订条款VO"
          }
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«List«预订条款VO»»"
    },
    "统一响应结果«Map«string,object»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "object",
          "description": "响应数据"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«Map«string,object»»"
    },
    "统一响应结果«Void»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«Void»"
    },
    "统一响应结果«string»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "type": "string",
          "description": "响应数据"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«string»"
    },
    "统一响应结果«产品人员配置VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品人员配置VO",
          "originalRef": "产品人员配置VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品人员配置VO»"
    },
    "统一响应结果«产品价格日历VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品价格日历VO",
          "originalRef": "产品价格日历VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品价格日历VO»"
    },
    "统一响应结果«产品定价配置VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品定价配置VO",
          "originalRef": "产品定价配置VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品定价配置VO»"
    },
    "统一响应结果«产品成本项VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品成本项VO",
          "originalRef": "产品成本项VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品成本项VO»"
    },
    "统一响应结果«产品文件夹VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品文件夹VO",
          "originalRef": "产品文件夹VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品文件夹VO»"
    },
    "统一响应结果«产品物资VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品物资VO",
          "originalRef": "产品物资VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品物资VO»"
    },
    "统一响应结果«产品线VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品线VO",
          "originalRef": "产品线VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品线VO»"
    },
    "统一响应结果«产品自定义费用项VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品自定义费用项VO",
          "originalRef": "产品自定义费用项VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品自定义费用项VO»"
    },
    "统一响应结果«产品详情VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品详情VO",
          "originalRef": "产品详情VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品详情VO»"
    },
    "统一响应结果«产品额外成本VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/产品额外成本VO",
          "originalRef": "产品额外成本VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«产品额外成本VO»"
    },
    "统一响应结果«公式变量VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/公式变量VO",
          "originalRef": "公式变量VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«公式变量VO»"
    },
    "统一响应结果«公式步骤VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/公式步骤VO",
          "originalRef": "公式步骤VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«公式步骤VO»"
    },
    "统一响应结果«公式测试结果VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/公式测试结果VO",
          "originalRef": "公式测试结果VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«公式测试结果VO»"
    },
    "统一响应结果«公式组VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/公式组VO",
          "originalRef": "公式组VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«公式组VO»"
    },
    "统一响应结果«分享链接响应»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/分享链接响应",
          "originalRef": "分享链接响应"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«分享链接响应»"
    },
    "统一响应结果«分页结果«C端产品列表VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/分页结果«C端产品列表VO»",
          "originalRef": "分页结果«C端产品列表VO»"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«分页结果«C端产品列表VO»»"
    },
    "统一响应结果«分页结果«产品列表VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/分页结果«产品列表VO»",
          "originalRef": "分页结果«产品列表VO»"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«分页结果«产品列表VO»»"
    },
    "统一响应结果«分页结果«产品线VO»»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/分页结果«产品线VO»",
          "originalRef": "分页结果«产品线VO»"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«分页结果«产品线VO»»"
    },
    "统一响应结果«团批次VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/团批次VO",
          "originalRef": "团批次VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«团批次VO»"
    },
    "统一响应结果«团批次详情VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/团批次详情VO",
          "originalRef": "团批次详情VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«团批次详情VO»"
    },
    "统一响应结果«家庭分组VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/家庭分组VO",
          "originalRef": "家庭分组VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«家庭分组VO»"
    },
    "统一响应结果«成本预览VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/成本预览VO",
          "originalRef": "成本预览VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«成本预览VO»"
    },
    "统一响应结果«报价结果VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/报价结果VO",
          "originalRef": "报价结果VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«报价结果VO»"
    },
    "统一响应结果«每日酒店VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/每日酒店VO",
          "originalRef": "每日酒店VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«每日酒店VO»"
    },
    "统一响应结果«温馨提示VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/温馨提示VO",
          "originalRef": "温馨提示VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«温馨提示VO»"
    },
    "统一响应结果«用餐选项VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/用餐选项VO",
          "originalRef": "用餐选项VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«用餐选项VO»"
    },
    "统一响应结果«行程天VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/行程天VO",
          "originalRef": "行程天VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«行程天VO»"
    },
    "统一响应结果«行程节点VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/行程节点VO",
          "originalRef": "行程节点VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«行程节点VO»"
    },
    "统一响应结果«预订条款VO»": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "example": 200,
          "description": "状态码"
        },
        "data": {
          "description": "响应数据",
          "$ref": "#/definitions/预订条款VO",
          "originalRef": "预订条款VO"
        },
        "message": {
          "type": "string",
          "example": "成功",
          "description": "响应消息"
        }
      },
      "title": "统一响应结果«预订条款VO»"
    },
    "群聊消息VO": {
      "type": "object",
      "properties": {
        "avatar": {
          "type": "string",
          "description": "用户头像URL（type=user时有效）"
        },
        "text": {
          "type": "string",
          "description": "消息内容"
        },
        "type": {
          "type": "string",
          "description": "消息类型: user/creator"
        }
      },
      "title": "群聊消息VO"
    },
    "自定义费用项请求": {
      "type": "object",
      "required": [
        "feeName"
      ],
      "properties": {
        "description": {
          "type": "string",
          "example": "含专车接机及导游服务",
          "description": "费用说明"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "feeAmount": {
          "type": "number",
          "example": 200.0,
          "description": "费用金额"
        },
        "feeName": {
          "type": "string",
          "example": "接机服务费",
          "description": "费用项名称"
        },
        "feeUnit": {
          "type": "string",
          "example": "元/人",
          "description": "费用单位"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        }
      },
      "title": "自定义费用项请求"
    },
    "节点排序请求": {
      "type": "object",
      "required": [
        "nodeIds"
      ],
      "properties": {
        "nodeIds": {
          "type": "array",
          "description": "节点ID有序列表，按期望排序顺序排列",
          "items": {
            "type": "string"
          }
        }
      },
      "title": "节点排序请求"
    },
    "节点移动请求": {
      "type": "object",
      "required": [
        "targetDayNumber"
      ],
      "properties": {
        "targetDayNumber": {
          "type": "integer",
          "format": "int32",
          "example": 2,
          "description": "目标天数编号"
        }
      },
      "title": "节点移动请求"
    },
    "行政区划搜索结果": {
      "type": "object",
      "properties": {
        "adcode": {
          "type": "string",
          "description": "行政区编码"
        },
        "fullPath": {
          "type": "string",
          "description": "全路径（省/市/区/镇，用于显示区分重名）"
        },
        "level": {
          "type": "string",
          "description": "级别: city/district/street"
        },
        "levelName": {
          "type": "string",
          "description": "级别中文名: 市/区/县/镇/乡/街道"
        },
        "name": {
          "type": "string",
          "description": "行政区名称（最后一级，用于保存）"
        }
      },
      "title": "行政区划搜索结果"
    },
    "行程天VO": {
      "type": "object",
      "properties": {
        "dayId": {
          "type": "string",
          "description": "行程天ID"
        },
        "dayNumber": {
          "type": "integer",
          "format": "int32",
          "description": "天数编号"
        },
        "dayTitle": {
          "type": "string",
          "description": "天标题"
        },
        "hotels": {
          "type": "array",
          "description": "当日酒店列表",
          "items": {
            "$ref": "#/definitions/每日酒店VO",
            "originalRef": "每日酒店VO"
          }
        },
        "nodes": {
          "type": "array",
          "description": "行程节点列表",
          "items": {
            "$ref": "#/definitions/行程节点VO",
            "originalRef": "行程节点VO"
          }
        },
        "restaurants": {
          "type": "array",
          "description": "当日用餐列表",
          "items": {
            "$ref": "#/definitions/用餐选项VO",
            "originalRef": "用餐选项VO"
          }
        },
        "routeSummary": {
          "type": "string",
          "description": "路线概览"
        }
      },
      "title": "行程天VO"
    },
    "行程天请求": {
      "type": "object",
      "properties": {
        "dayTitle": {
          "type": "string",
          "example": "Day1 丽江古城漫步",
          "description": "天标题"
        },
        "routeSummary": {
          "type": "string",
          "example": "丽江古城 → 束河古镇 → 白沙古镇",
          "description": "路线概览"
        }
      },
      "title": "行程天请求"
    },
    "行程节点VO": {
      "type": "object",
      "properties": {
        "costPrice": {
          "type": "number",
          "description": "资源成本价（来自资源价格日历）"
        },
        "dayId": {
          "type": "string",
          "description": "所属行程天ID"
        },
        "description": {
          "type": "string",
          "description": "节点描述"
        },
        "distanceKm": {
          "type": "number",
          "description": "距离（公里）"
        },
        "durationMinutes": {
          "type": "integer",
          "format": "int32",
          "description": "时长（分钟）"
        },
        "emojiIcon": {
          "type": "string",
          "description": "表情图标"
        },
        "extraData": {
          "type": "string",
          "description": "扩展数据（JSON格式）"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "images": {
          "type": "array",
          "description": "节点图片列表",
          "items": {
            "type": "string"
          }
        },
        "latitude": {
          "type": "number",
          "description": "纬度"
        },
        "longitude": {
          "type": "number",
          "description": "经度"
        },
        "nodeId": {
          "type": "string",
          "description": "节点ID"
        },
        "nodeName": {
          "type": "string",
          "description": "节点名称"
        },
        "nodeType": {
          "type": "string",
          "description": "节点类型：TRANSPORT(交通)/SCENIC(景区)/RESTAURANT(餐厅)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)/SERVICE(服务)/NOTE(备注)"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "description": "数量"
        },
        "resourceDetail": {
          "description": "绑定资源的详细信息（含图片、地址等）",
          "$ref": "#/definitions/资源详情",
          "originalRef": "资源详情"
        },
        "resourceId": {
          "type": "string",
          "description": "关联资源ID"
        },
        "resourceName": {
          "type": "string",
          "description": "关联资源名称"
        },
        "resourceType": {
          "type": "string",
          "description": "关联资源类型：SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/STAFF"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "description": "排序序号"
        },
        "startTime": {
          "type": "string",
          "description": "开始时间"
        }
      },
      "title": "行程节点VO"
    },
    "解散批次请求": {
      "type": "object",
      "required": [
        "reason"
      ],
      "properties": {
        "reason": {
          "type": "string",
          "example": "报名人数不足",
          "description": "解散原因（如：报名人数不足、行程调整等）"
        }
      },
      "title": "解散批次请求"
    },
    "资源详情": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "description": "地址"
        },
        "city": {
          "type": "string",
          "description": "所在城市"
        },
        "cover": {
          "type": "string",
          "description": "封面图URL"
        },
        "description": {
          "type": "string",
          "description": "简介/描述"
        },
        "featureIntro": {
          "type": "string",
          "description": "图文详情（featureIntro JSON）"
        },
        "images": {
          "type": "array",
          "description": "图片URL列表（轮播图）",
          "items": {
            "type": "string"
          }
        },
        "latitude": {
          "type": "number",
          "description": "纬度"
        },
        "longitude": {
          "type": "number",
          "description": "经度"
        },
        "name": {
          "type": "string",
          "description": "资源名称"
        },
        "rating": {
          "type": "number",
          "description": "评分"
        },
        "resourceId": {
          "type": "string",
          "description": "资源ID"
        },
        "resourceType": {
          "type": "string",
          "description": "资源类型: SCENIC_SPOT/HOTEL/RESTAURANT/ACTIVITY"
        },
        "subtitle": {
          "type": "string",
          "description": "副标题"
        },
        "tags": {
          "type": "array",
          "description": "标签列表",
          "items": {
            "type": "string"
          }
        }
      },
      "title": "资源详情"
    },
    "预订条款VO": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string",
          "description": "条款内容（富文本）"
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "创建时间"
        },
        "createdBy": {
          "type": "integer",
          "format": "int64",
          "description": "创建人ID"
        },
        "enabled": {
          "type": "boolean",
          "description": "是否启用"
        },
        "remark": {
          "type": "string",
          "description": "备注"
        },
        "termsId": {
          "type": "integer",
          "format": "int64",
          "description": "预订条款ID"
        },
        "termsName": {
          "type": "string",
          "description": "条款名称"
        },
        "updateTime": {
          "type": "string",
          "format": "date-time",
          "description": "更新时间"
        }
      },
      "title": "预订条款VO"
    },
    "预订条款请求": {
      "type": "object",
      "required": [
        "content",
        "termsName"
      ],
      "properties": {
        "content": {
          "type": "string",
          "description": "条款内容（富文本）"
        },
        "remark": {
          "type": "string",
          "example": "适用于所有国内游产品",
          "description": "备注"
        },
        "termsName": {
          "type": "string",
          "example": "国内游预订条款",
          "description": "条款名称"
        }
      },
      "title": "预订条款请求"
    },
    "额外成本明细项": {
      "type": "object",
      "properties": {
        "costItemName": {
          "type": "string",
          "description": "成本项名称"
        },
        "daily": {
          "type": "boolean",
          "description": "是否按天计算"
        },
        "days": {
          "type": "integer",
          "format": "int32",
          "description": "天数（按天计算时）"
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "description": "数量"
        },
        "subtotal": {
          "type": "number",
          "description": "小计金额"
        },
        "unitPrice": {
          "type": "number",
          "description": "单价"
        }
      },
      "title": "额外成本明细项"
    },
    "额外成本请求": {
      "type": "object",
      "required": [
        "costItemId"
      ],
      "properties": {
        "costItemId": {
          "type": "integer",
          "format": "int64",
          "example": 1893012345678901234,
          "description": "额外成本项ID（关联费用项资源）"
        },
        "daily": {
          "type": "boolean",
          "example": true,
          "description": "是否按天计算：true=按天计算(乘以天数) false=整个行程一次"
        },
        "familyIds": {
          "type": "array",
          "description": "所属家庭ID列表（定制产品按家庭分配）",
          "items": {
            "type": "string"
          }
        },
        "quantity": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "数量"
        },
        "sortOrder": {
          "type": "integer",
          "format": "int32",
          "example": 1,
          "description": "排序序号"
        }
      },
      "title": "额外成本请求"
    }
  }
}