openapi: 3.1.0
info:
  title: Crystal／Northstar E2E 測試平台 API
  version: 1.0.0
  description: 主要讀者：前端工程師、後端工程師與 QA。範圍為專案、環境、群組、案例與六種步驟、計畫、觸發及執行結果。Sentry 是執行 library，沒有獨立服務 API。本合約依既有行為使用 GET／POST／PUT／DELETE；Northstar
    OPTIONS 與 GET 共用啟動方法。X-Idempotency-Key 與 RFC 9457 僅列為尚未實作的目標。EKS 開關與夜間全量編排沒有本範圍內已核實的 API。
servers:
- url: '{crystalBaseUrl}'
  description: Crystal 完整 base URL，包含部署 context path；佔位預設不可直接呼叫。
  variables:
    crystalBaseUrl:
      default: https://crystal.example.invalid
paths:
  /unauthApi/crystalForNorthstar/getSuiteWithCasesByPk/{suiteNum}:
    get:
      tags:
      - 執行服務內部介接
      summary: 讀取群組及案例定義
      operationId: CrystalForNorthstarController_getSuiteWithCasesByPk
      x-spring-methods:
      - GET
      security: []
      parameters:
      - name: suiteNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaC003Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/getDependOnCaseList:
    post:
      tags:
      - 執行服務內部介接
      summary: 取得相依案例
      operationId: CrystalForNorthstarController_getDependOnCaseList
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int64
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/QaC004Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/getTodoTestList:
    get:
      tags:
      - 執行服務內部介接
      summary: 取得待執行觸發器
      operationId: CrystalForNorthstarController_getTodoTestList
      x-spring-methods:
      - GET
      security: []
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/QaC007Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/getTestTriggerByPk/{triggerNum}:
    get:
      tags:
      - 執行服務內部介接
      summary: 取得指定觸發器
      operationId: CrystalForNorthstarController_getTestTriggerByPk
      x-spring-methods:
      - GET
      security: []
      parameters:
      - name: triggerNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaC007Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/updateTrigger:
    put:
      tags:
      - 執行服務內部介接
      summary: 更新觸發器
      operationId: CrystalForNorthstarController_updateTrigger
      x-spring-methods:
      - PUT
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC007VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertRun:
    post:
      tags:
      - 執行服務內部介接
      summary: 新增 Run 紀錄
      operationId: CrystalForNorthstarController_insertRun
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC008VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaC008Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/updateOneRunRecord:
    put:
      tags:
      - 執行服務內部介接
      summary: 更新 Run 紀錄
      operationId: CrystalForNorthstarController_updateOneRunRecord
      x-spring-methods:
      - PUT
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC008VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertRunSuite:
    post:
      tags:
      - 執行服務內部介接
      summary: 新增 Run Suite 紀錄
      operationId: CrystalForNorthstarController_insertRunSuite
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC009VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaC009Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/updateQaC010:
    put:
      tags:
      - 執行服務內部介接
      summary: 更新 Run Case 紀錄
      operationId: CrystalForNorthstarController_updateQaC010
      x-spring-methods:
      - PUT
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC010VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertQaC010:
    post:
      tags:
      - 執行服務內部介接
      summary: 新增 Run Case 紀錄
      operationId: CrystalForNorthstarController_insertQaC010
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC010VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaC010Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/updateRunStep:
    put:
      tags:
      - 執行服務內部介接
      summary: 更新 Run Step 紀錄
      operationId: CrystalForNorthstarController_updateRunStep
      x-spring-methods:
      - PUT
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC011VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertRunStep:
    post:
      tags:
      - 執行服務內部介接
      summary: 新增 Run Step 紀錄
      operationId: CrystalForNorthstarController_insertRunStep
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaC011VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaC011Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/genSqlCompareResultFile/{runNum}:
    post:
      tags:
      - 執行服務內部介接
      summary: 產生 SQL 比對結果檔
      operationId: CrystalForNorthstarController_genSqlCompareResultFile
      x-spring-methods:
      - POST
      security: []
      parameters:
      - name: runNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: '供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。


        產檔例外被記錄後仍回 Result.ok()；此回應不保證檔案已產生。'
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/getComInfoByComNum/{comNum}:
    get:
      tags:
      - 執行服務內部介接
      summary: 取得公司資料
      operationId: CrystalForNorthstarController_getComInfoByComNum
      x-spring-methods:
      - GET
      security: []
      parameters:
      - name: comNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/CoA010Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertQaUpload:
    post:
      tags:
      - 執行服務內部介接
      summary: 新增附件紀錄
      operationId: CrystalForNorthstarController_insertQaUpload
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaU001VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertQaR001:
    post:
      tags:
      - 執行服務內部介接
      summary: 新增 SQL 比對主紀錄
      operationId: CrystalForNorthstarController_insertQaR001
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaR001VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaR001Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/updateQaR001:
    put:
      tags:
      - 執行服務內部介接
      summary: 更新 SQL 比對主紀錄
      operationId: CrystalForNorthstarController_updateQaR001
      x-spring-methods:
      - PUT
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaR001VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/QaR001Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/queryQaR022:
    post:
      tags:
      - 執行服務內部介接
      summary: 查詢 SQL 比對篩選設定
      operationId: CrystalForNorthstarController_queryQaR022
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QaR022VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/QaR022Vo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/insertQaR002List:
    post:
      tags:
      - 執行服務內部介接
      summary: insertQaR002
      operationId: CrystalForNorthstarController_insertQaR002
      x-spring-methods:
      - POST
      security: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/QaR002VoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      type: integer
                      format: int64
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/crystalForNorthstar/sendReport/{runNum}:
    post:
      tags:
      - 執行服務內部介接
      summary: 要求寄送 Run 報告
      operationId: CrystalForNorthstarController_sendReport
      x-spring-methods:
      - POST
      security: []
      parameters:
      - name: runNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: '供執行服務透過共用測試核心呼叫；unauthApi 在來源安全設定中免登入，實際網路與 gateway 限制需依部署確認。


        回應僅表示 handler 返回，不保證收件端已收到郵件。'
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC001/query:
    get:
      tags:
      - 專案
      summary: 列出專案
      operationId: QaC001_getProjects
      x-spring-methods:
      - GET
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC001/query/keyword/{keyword}:
    get:
      tags:
      - 專案
      summary: 依關鍵字搜尋專案
      operationId: QaC001_findByKeyword
      x-spring-methods:
      - GET
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      parameters:
      - name: keyword
        in: path
        required: true
        schema:
          type: string
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC001/query/project/{code}:
    get:
      tags:
      - 專案
      summary: 取得專案
      operationId: QaC001_getProject
      x-spring-methods:
      - GET
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      parameters:
      - name: code
        in: path
        required: true
        schema:
          type: string
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/ProjectPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC001/edit:
    post:
      tags:
      - 專案
      summary: 建立專案
      operationId: QaC001_insertProject
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddProjectCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/ProjectPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 專案
      summary: 更新專案
      operationId: QaC001_updateProject
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyProjectCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC001/delete/project/{code}:
    delete:
      tags:
      - 專案
      summary: 刪除專案
      operationId: QaC001_deleteProject
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      parameters:
      - name: code
        in: path
        required: true
        schema:
          type: string
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC002/query:
    post:
      tags:
      - 環境與設定
      summary: 列出專案環境
      operationId: QaC002_getEnvironments
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCodeBaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/EnvironmentPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC002/edit:
    post:
      tags:
      - 環境與設定
      summary: 建立環境
      operationId: QaC002_insertEnvironment
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddEnvironmentCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/EnvironmentPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 環境與設定
      summary: 更新環境
      operationId: QaC002_updateEnvironment
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyEnvironmentCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC002/delete:
    delete:
      tags:
      - 環境與設定
      summary: 刪除環境
      operationId: QaC002_deleteEnvironment
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteEnvironmentCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC002/config/query:
    post:
      tags:
      - 環境與設定
      summary: 查詢環境設定
      operationId: QaC002_getConfig
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetConfigCoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/ConfigPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC002/config/edit:
    post:
      tags:
      - 環境與設定
      summary: 新增環境設定
      operationId: QaC002_insertConfig
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddConfigCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/ConfigPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 環境與設定
      summary: 更新環境設定
      operationId: QaC002_updateConfig
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyConfigCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC002/config/delete:
    delete:
      tags:
      - 環境與設定
      summary: 刪除環境設定
      operationId: QaC002_deleteConfig
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteConfigCoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/init:
    post:
      tags:
      - 測試群組 Suite
      summary: 取得群組初始化資料
      operationId: QaC003_init
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCodeBaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: object
                    properties:
                      suites:
                        type: array
                        items:
                          $ref: '#/components/schemas/SuitePo'
                      suiteCount:
                        type: integer
                      caseCount:
                        type: integer
                      suiteOptions:
                        type: array
                        items:
                          $ref: '#/components/schemas/SuitePo'
                      junitRootList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SuitePo'
                      argTypeClassFullNameList:
                        type: array
                        items:
                          type: object
                          properties:
                            value:
                              type: string
                            label:
                              type: string
                      invokeClassFullNameList:
                        type: array
                        items:
                          type: object
                          properties:
                            value:
                              type: string
                            label:
                              type: string
                      caseTypes:
                        type: object
                        additionalProperties:
                          type: string
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/junit/{projectCode}/suites/{parentNum}:
    get:
      tags:
      - 測試群組 Suite
      summary: 取得 JUnit 群組及案例統計
      operationId: QaC003_getJunitSuites
      x-spring-methods:
      - GET
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      parameters:
      - name: projectCode
        in: path
        required: true
        schema:
          type: string
        description: 路由識別／查詢值；型別依 Controller 宣告。
      - name: parentNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: object
                    properties:
                      junitSuites:
                        type: array
                        items:
                          $ref: '#/components/schemas/SuitePo'
                      junitSuiteCount:
                        type: integer
                      junitCaseCount:
                        type: integer
                      junitSuiteOptions:
                        type: array
                        items:
                          $ref: '#/components/schemas/SuitePo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/project/{projectCode}/edit/{suiteNum}:
    get:
      tags:
      - 測試群組 Suite
      summary: 取得群組
      operationId: QaC003_getSuite
      x-spring-methods:
      - GET
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      parameters:
      - name: projectCode
        in: path
        required: true
        schema:
          type: string
        description: 路由識別／查詢值；型別依 Controller 宣告。
      - name: suiteNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/SuitePo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/edit:
    post:
      tags:
      - 測試群組 Suite
      summary: 建立群組
      operationId: QaC003_insertSuite
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddSuiteCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/SuitePo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 測試群組 Suite
      summary: 更新群組
      operationId: QaC003_updateSuite
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifySuiteCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/delete:
    delete:
      tags:
      - 測試群組 Suite
      summary: 刪除平台群組並搬移案例
      operationId: QaC003_deleteSuite
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeletePlatformSuiteCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/junit/delete:
    delete:
      tags:
      - 測試群組 Suite
      summary: 刪除 JUnit 群組
      operationId: QaC003_deleteJunitSuite
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteSuiteCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/validate/delete:
    post:
      tags:
      - 測試群組 Suite
      summary: 檢查群組是否可刪除
      operationId: QaC003_validateDeleteSuite
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteSuiteCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC003/move:
    put:
      tags:
      - 測試群組 Suite
      summary: 調整群組順序
      operationId: QaC003_moveSuite
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveSuiteCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/init:
    get:
      tags:
      - 測試案例 Case 與步驟
      summary: 取得案例與步驟選項
      operationId: QaC004_init
      x-spring-methods:
      - GET
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: object
                    properties:
                      stepTypeList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      caseTypeList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      postProcTypeList:
                        type: object
                        additionalProperties:
                          type: array
                          items:
                            $ref: '#/components/schemas/SelectOption'
                      qaDatasourceList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      variableScopeTypeList:
                        type: array
                        items:
                          type: object
                          properties:
                            value:
                              type: integer
                            label:
                              type: string
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/query:
    post:
      tags:
      - 測試案例 Case 與步驟
      summary: 取得案例與步驟
      operationId: QaC004_getCaseWithSteps
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/CasePo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/getColumnInfo:
    post:
      tags:
      - 測試案例 Case 與步驟
      summary: 取得資料表欄位資訊
      operationId: QaC004_getColumnInfo
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              type: object
              properties:
                dataSource:
                  type: string
                  default: main
                  description: 省略或空白時由服務採 main。
                tableSchema:
                  type: string
                  pattern: \S
                tableName:
                  type: string
                  pattern: \S
              required:
              - tableSchema
              - tableName
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/QaC013Vo_Po_Column'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 'AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。


        服務層檢查 tableSchema/tableName 不可空白；Map 上的 @Valid 本身不定義欄位必填。'
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/trash:
    post:
      tags:
      - 測試案例 Case 與步驟
      summary: 取得回收區案例
      operationId: QaC004_getTrashCases
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrashCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/CasePo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/edit:
    post:
      tags:
      - 測試案例 Case 與步驟
      summary: 建立案例與步驟
      operationId: QaC004_insertCase
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/CasePo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 新增案例及其步驟；caseSteps 雖未標示必填，服務直接迭代，實際請求須提供陣列。新增後重新 query 取得步驟識別。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 測試案例 Case 與步驟
      summary: 更新案例與步驟
      operationId: QaC004_updateCase
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 送完整 caseSteps 清單：stepNum=null 新增；屬於本案例的既有 stepNum 更新；既有但未保留的步驟刪除；非本案例 stepNum 不會新增。修改 DTO 沒有
        caseType/suiteNum。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/move:
    put:
      tags:
      - 測試案例 Case 與步驟
      summary: 調整案例順序
      operationId: QaC004_updateCaseUpOrDown
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/changeSuite:
    put:
      tags:
      - 測試案例 Case 與步驟
      summary: 搬移案例至另一群組
      operationId: QaC004_updateCaseSuite
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifySuiteCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/delete:
    delete:
      tags:
      - 測試案例 Case 與步驟
      summary: 移除案例至回收區
      operationId: QaC004_deleteCase
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC004/restore:
    put:
      tags:
      - 測試案例 Case 與步驟
      summary: 還原案例
      operationId: QaC004_restoreCase
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC005/list:
    post:
      tags:
      - 測試計畫 Plan
      summary: 列出測試計畫
      operationId: QaC005_getPlans
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCodeBaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/PlanPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC005/query:
    post:
      tags:
      - 測試計畫 Plan
      summary: 取得計畫與案例
      operationId: QaC005_getPlanWithCases
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetPlanCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/PlanPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC005/edit:
    post:
      tags:
      - 測試計畫 Plan
      summary: 建立測試計畫
      operationId: QaC005_insertPlan
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddPlanCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/PlanPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 測試計畫 Plan
      summary: 更新測試計畫
      operationId: QaC005_updatePlan
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyPlanCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC005/delete:
    delete:
      tags:
      - 測試計畫 Plan
      summary: 刪除測試計畫
      operationId: QaC005_deletePlan
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeletePlanCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC006/noticeGroup:
    post:
      tags:
      - 觸發器 Trigger
      summary: 查詢通知群組收件人
      operationId: QaC006_getNoticeGrp
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetNoticeGroupCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/RecipientGroupDo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC006/query:
    post:
      tags:
      - 觸發器 Trigger
      summary: 列出專案觸發器
      operationId: QaC006_getTriggers
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCodeBaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/TriggerPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC006/edit:
    post:
      tags:
      - 觸發器 Trigger
      summary: 建立觸發器
      operationId: QaC006_insertTrigger
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTriggerCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/TriggerPo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    put:
      tags:
      - 觸發器 Trigger
      summary: 更新觸發器
      operationId: QaC006_updateTrigger
      x-spring-methods:
      - PUT
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyTriggerCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC006/delete:
    delete:
      tags:
      - 觸發器 Trigger
      summary: 刪除觸發器
      operationId: QaC006_deleteTrigger
      x-spring-methods:
      - DELETE
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteTriggerCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC006/invoke:
    post:
      tags:
      - 觸發器 Trigger
      summary: 人工立即觸發
      operationId: QaC006_manualTrigger
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 未啟用 @Valid；不可把 DTO 註記視為已生效的參數驗證。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvokeTriggerCoRequest'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: object
                    properties:
                      result:
                        type: string
                        enum:
                        - ok
                        - fail
                    required:
                    - result
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: 'AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。


        InvokeNorthstarMod 先檢查是否有 NEW/RUNNING 的 Run；有則拒絕（非入列等待）。prod/test 環境呼叫 Northstar；其他環境可直接回 ok 而不啟動。內層 result
        表示 HTTP 呼叫結果，外層 status=ok 不代表測試完成；沒有回傳 runNum。'
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
  /api/v1/QAC007/init:
    post:
      tags:
      - 執行結果 Run
      summary: 分頁查詢執行紀錄
      operationId: QaC007_findRuns
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRunsCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: object
                    properties:
                      totalPage:
                        type: integer
                        format: int32
                      currentPage:
                        type: integer
                        format: int32
                      perPageSize:
                        type: integer
                        format: int32
                      totalCount:
                        type: integer
                        format: int32
                      hasMore:
                        type: boolean
                      dataList:
                        type: array
                        items:
                          $ref: '#/components/schemas/RunListDo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC007/query:
    post:
      tags:
      - 執行結果 Run
      summary: 取得 Run 明細與統計
      operationId: QaC007_getRun
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRunCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/RunDetailDo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC007/query/case:
    post:
      tags:
      - 執行結果 Run
      summary: 取得執行案例與步驟結果
      operationId: QaC007_getRunCase
      x-spring-methods:
      - POST
      - OPTIONS
      security:
      - RawJwt: []
      - QaBasic: []
      requestBody:
        required: true
        description: JSON request body；Controller 啟用 @Valid。
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRunCaseCoRequestValidated'
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    $ref: '#/components/schemas/RunCaseDo'
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      description: AopResult 為伺服器注入上下文；不列為用戶端參數，comNum／empNum 由上下文取得。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC007/download/{uploadNum}:
    get:
      tags:
      - 執行結果 Run
      summary: 下載執行附件
      operationId: QaC007_downloadFile
      x-spring-methods:
      - GET
      security:
      - RawJwt: []
      - QaBasic: []
      parameters:
      - name: uploadNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 路由識別／查詢值；型別依 Controller 宣告。
      responses:
        '200':
          description: 附件內容；直接寫入 response stream，無 Result JSON 封裝。
          headers:
            Content-Disposition:
              description: attachment;filename=...
              schema:
                type: string
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /api/v1/QAC007/enums:
    get:
      tags:
      - 執行結果 Run
      summary: 取得執行狀態與步驟選項
      operationId: QaC007_getRunMapper
      x-spring-methods:
      - GET
      security:
      - RawJwt: []
      - QaBasic: []
      responses:
        '200':
          description: 處理完成；結果與業務成功條件依各操作說明。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                  result:
                    type: object
                    properties:
                      stepTypeList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      runStatusList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      caseStatusList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      stepStatusList:
                        type: array
                        items:
                          $ref: '#/components/schemas/SelectOption'
                      postProcTypeMap:
                        type: object
                        additionalProperties:
                          type: object
                          additionalProperties:
                            type: string
                required:
                - status
                description: Result 成功封裝；null 的 result 依 NON_NULL 設定省略。status=ok 不等同測試通過。
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ChannelClosed'
        default:
          description: 其他 Spring Security／容器／gateway 回應；未確認統一 JSON 格式。
      x-service: crystal
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /unauthApi/trigger/{triggerNum}:
    get:
      tags:
      - 啟動測試
      summary: 立即啟動測試
      operationId: TriggerController_test_get
      x-spring-methods:
      - GET
      - OPTIONS
      responses:
        '200':
          description: handler 已返回；不代表背景測試成功。
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    enum:
                    - ok
                required:
                - result
        default:
          description: 參數轉換、服務／安全設定／容器錯誤；此模組未確認統一錯誤 body，不套用 Crystal ErrorResp。
      security: []
      x-side-effects: true
      description: 呼叫 QaTestFlow.realtimeRun 非同步流程。Controller 明確把 GET 與 OPTIONS 對應同一方法；OPTIONS 若進入 handler 也可啟動測試，不可當成無副作用的預檢
        API。CORS／filter 是否先攔截依部署確認。重複呼叫不承諾冪等或去重；請至 Crystal Run API 查結果。
      parameters:
      - name: triggerNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 資料庫既有 triggerNum。
      - name: empNum
        in: query
        required: true
        schema:
          type: integer
          format: int64
        description: 本次啟動人員 empNum，必填。
      - name: needsCoverage
        in: query
        required: false
        schema:
          type: string
        description: 一般人工執行以 Y 要求 coverage；SYSTEM_USER 另有啟用條件。未限制 Y/N enum。
      - name: needsSendReport
        in: query
        required: false
        schema:
          type: string
        description: 一般人工執行以 Y 要求寄送報告；SYSTEM_USER 另有啟用條件。未限制 Y/N enum。
      - name: test
        in: query
        required: false
        schema:
          type: boolean
          default: false
        description: 選擇共用核心的 testApi（開發用 Crystal 路由）；仍會執行測試及寫入資料，不是 dry-run。
      servers:
      - url: '{northstarBaseUrl}'
        description: Northstar 完整 base URL，包含部署 context path。
        variables:
          northstarBaseUrl:
            default: https://northstar.example.invalid
      x-service: northstar
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
    options:
      tags:
      - 啟動測試
      summary: 以 OPTIONS 呼叫啟動 handler（有副作用）
      operationId: TriggerController_test_options
      x-spring-methods:
      - GET
      - OPTIONS
      responses:
        '200':
          description: handler 已返回；不代表背景測試成功。
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    enum:
                    - ok
                required:
                - result
        default:
          description: 參數轉換、服務／安全設定／容器錯誤；此模組未確認統一錯誤 body，不套用 Crystal ErrorResp。
      security: []
      x-side-effects: true
      description: 呼叫 QaTestFlow.realtimeRun 非同步流程。Controller 明確把 GET 與 OPTIONS 對應同一方法；OPTIONS 若進入 handler 也可啟動測試，不可當成無副作用的預檢
        API。CORS／filter 是否先攔截依部署確認。重複呼叫不承諾冪等或去重；請至 Crystal Run API 查結果。
      parameters:
      - name: triggerNum
        in: path
        required: true
        schema:
          type: integer
          format: int64
        description: 資料庫既有 triggerNum。
      - name: empNum
        in: query
        required: true
        schema:
          type: integer
          format: int64
        description: 本次啟動人員 empNum，必填。
      - name: needsCoverage
        in: query
        required: false
        schema:
          type: string
        description: 一般人工執行以 Y 要求 coverage；SYSTEM_USER 另有啟用條件。未限制 Y/N enum。
      - name: needsSendReport
        in: query
        required: false
        schema:
          type: string
        description: 一般人工執行以 Y 要求寄送報告；SYSTEM_USER 另有啟用條件。未限制 Y/N enum。
      - name: test
        in: query
        required: false
        schema:
          type: boolean
          default: false
        description: 選擇共用核心的 testApi（開發用 Crystal 路由）；仍會執行測試及寫入資料，不是 dry-run。
      servers:
      - url: '{northstarBaseUrl}'
        description: Northstar 完整 base URL，包含部署 context path。
        variables:
          northstarBaseUrl:
            default: https://northstar.example.invalid
      x-service: northstar
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
  /synthetics/health/detect:
    get:
      tags:
      - 健康檢查
      summary: 程序健康探測
      operationId: SyntheticsController_healthDetect_get
      x-spring-methods:
      - GET
      responses:
        '200':
          description: 回傳固定 status=ok；沒有檢查 DB、Crystal 或受測系統。
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - ok
                required:
                - status
        default:
          description: 參數轉換、服務／安全設定／容器錯誤；此模組未確認統一錯誤 body，不套用 Crystal ErrorResp。
      security: []
      description: 共享 SyntheticsController 由 NorthstarContextConfig @Import；XML 設定 /synthetics/** 為 permitAll，實際
        gateway 與網路限制依部署確認。
      servers:
      - url: '{northstarBaseUrl}'
        description: Northstar 完整 base URL，包含部署 context path。
        variables:
          northstarBaseUrl:
            default: https://northstar.example.invalid
      x-service: northstar
      x-target-error-response:
        description: 尚未實作，現況以 responses 為準。
        content:
          application/problem+json:
            schema:
              $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    SuitePo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        suiteNum:
          type: integer
          format: int64
          description: 測試群組ID (not null)
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        parentNum:
          type: integer
          format: int64
          description: 上層案例群組,根為0, 可巢狀
        suiteName:
          type: string
          description: 案例群組名稱 (not null)
        suiteDesc:
          type: string
          description: 案例群組描述
        suiteOrder:
          type: integer
          format: int32
          description: 順序 (not null)
        cases:
          type: array
          items:
            $ref: '#/components/schemas/CasePo'
        category:
          type: string
          description: '測試類別: 1.'
    CasePo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        caseNum:
          type: integer
          format: int64
          description: 測試案例ID
        suiteNum:
          type: integer
          format: int64
          description: 群組ID
        caseName:
          type: string
          description: 案例名稱
        caseDesc:
          type: string
          description: 案例描述
        caseType:
          type: string
          description: 案例步驟類型, 1.一般, 2.before_all, 3.before_each, 4.after_each, 5.after_all
        caseOrder:
          type: integer
          format: int32
          description: 順序
        dependsOn:
          type: array
          items:
            type: integer
            format: int64
          description: '依賴案例陣列[1, 2,...]: 前面案例成功才執行'
        caseSteps:
          type: array
          items:
            $ref: '#/components/schemas/CaseStepPo'
          description: 步驟 程式/SQL/參數
        isDeleted:
          type: boolean
          description: 軟刪除
        suitePo:
          $ref: '#/components/schemas/SuitePo'
        source:
          type: string
        category:
          type: string
    CaseStepPo:
      type: object
      properties:
        stepNum:
          type: integer
          format: int64
        caseNum:
          type: integer
          format: int64
        stepType:
          type: string
          description: '步驟類型: 影響StepExec的變換'
        stepExec:
          $ref: '#/components/schemas/QaC013Vo_Po_StepExecPo'
          description: 步驟執行
        stepOrder:
          type: integer
          format: int32
          description: 步驟順序
        stepRemark:
          type: string
        stepName:
          type: string
    QaC013Vo_Po_StepExecPo:
      type: object
      properties: {}
      description: stepType 決定執行設定。執行支援 1、2、3、4、6、7；舊的反序列化宣告仍含 5 且缺 7，因此保持開放物件，不宣稱所有多型讀寫已驗證。
      x-known-subtypes:
        '1':
          $ref: '#/components/schemas/QaC013Vo_Po_HttpStepPo'
        '2':
          $ref: '#/components/schemas/QaC013Vo_Po_SqlCompareStepPo'
        '3':
          $ref: '#/components/schemas/QaC013Vo_Po_PreSqlStepPo'
        '4':
          $ref: '#/components/schemas/QaC013Vo_Po_SqlTransferStepPo'
        '5':
          $ref: '#/components/schemas/QaC013Vo_Po_BackupTransferStepPo'
        '6':
          $ref: '#/components/schemas/QaC013Vo_Po_InvokeStepPo'
        '7':
          $ref: '#/components/schemas/QaC013Vo_Po_SqlSelectCompareStepPo'
    QaC003Vo:
      type: object
      properties:
        transId:
          type: string
        suiteNum:
          type: integer
          format: int64
          description: 測試群組ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        parentNum:
          type: integer
          format: int64
          description: 上層案例群組,根為0, 可巢狀
        suiteName:
          type: string
          description: 案例群組名稱 (not null)
        suiteDesc:
          type: string
          description: 案例群組描述
        suiteOrder:
          type: integer
          format: int32
          description: 順序 (not null)
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        category:
          type: string
          description: 測試類別:1.PLATFORM,2.JUNIT
        cases:
          type: array
          items:
            $ref: '#/components/schemas/QaC004Vo'
    QaC004Vo:
      type: object
      properties:
        transId:
          type: string
        caseNum:
          type: integer
          format: int64
          description: 測試案例ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        suiteNum:
          type: integer
          format: int64
          description: 群組ID (not null)
        caseName:
          type: string
          description: 案例名稱 (not null)
        caseDesc:
          type: string
          description: 案例描述
        caseType:
          type: string
          description: '案例步驟類型 1: 一般案例 在群組顯示 2. before_all只能一個 3. before_each只能一個 4. after_all只能一個 5. after_each只能一個
            (not null)'
        caseOrder:
          type: integer
          format: int32
          description: 順序 (not null)
        dependsOn:
          type: string
          description: '依賴案例陣列[1, 2,...]: 前面案例成功才執行 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。'
        isDeleted:
          type: boolean
          description: 軟刪除 (not null)
        category:
          type: string
          description: 測試種類:1.PLATFORM,2.JUNIT
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        stepList:
          type: array
          items:
            $ref: '#/components/schemas/QaC013Vo'
        qaC010Vo:
          $ref: '#/components/schemas/QaC010Vo'
    QaC013Vo:
      type: object
      properties:
        transId:
          type: string
        stepNum:
          type: integer
          format: int64
          description: 步驟流水號 (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人
        updateAt:
          type: string
          description: 更新時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 更新人
        caseNum:
          type: integer
          format: int64
          description: 案例ID 關聯qa_c004 (not null)
        stepOrder:
          type: integer
          format: int32
          description: 步驟順序
        stepType:
          type: string
          description: 步驟類型 1. 執行http 2. 執行sql比對 3. 執行PreSql 4. 執行倒資料 5. 執行備份資料
        stepExec:
          type: string
          description: 步驟執行內容 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。
        stepRemark:
          type: string
          description: 步驟備註
        stepName:
          type: string
          description: 步驟名稱
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        stepExecPo:
          $ref: '#/components/schemas/QaC013Vo_Po_StepExecPo'
          description: 步驟執行
    QaC010Vo:
      type: object
      properties:
        transId:
          type: string
        runCaseNum:
          type: integer
          format: int64
          description: 案例執行結果ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        runSuiteNum:
          type: integer
          format: int64
          description: 群組執行結果ID (not null)
        caseNum:
          type: integer
          format: int64
          description: 案例ID (not null)
        caseRecord:
          type: string
          description: case_record 原封不動 (not null) 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。
        caseStatus:
          type: string
          description: 狀態代碼為字串：0=SKIPPED, 1=NEW, 2=RUNNING, 3=PASSED, 4=FAILED, 5=ERROR, 6=DEPENDENT_FAILED, 7=ABORTED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
          x-code-values:
            '0': SKIPPED
            '1': NEW
            '2': RUNNING
            '3': PASSED
            '4': FAILED
            '5': ERROR
            '6': DEPENDENT_FAILED
            '7': ABORTED
        caseStartTime:
          type: string
          description: 執行起始時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        caseEndTime:
          type: string
          description: 執行結束時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        caseThrowable:
          type: string
          description: 案例錯誤及異常紀錄
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        runStepVos:
          type: array
          items:
            $ref: '#/components/schemas/QaC011Vo'
    QaC011Vo:
      type: object
      properties:
        transId:
          type: string
        runStepNum:
          type: integer
          format: int64
          description: 步驟執行結果ID (not null)
        runCaseNum:
          type: integer
          format: int64
          description: 案例執行結果ID (not null)
        stepOrder:
          type: integer
          format: int32
          description: 步驟順序 (not null)
        stepType:
          type: string
          description: '步驟類型: 1.http, 2.preSql, 3.sqlCompare, 4.dataTransfer (not null)'
        stepExec:
          type: string
          description: 步驟 (not null) 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。
        stepStatus:
          type: string
          description: 狀態代碼為字串：1=PASSED, 2=FAILED, 3=ERROR, 4=DISABLED。代碼表描述既有常數，不代表輸入已做 enum 驗證。
          x-code-values:
            '1': PASSED
            '2': FAILED
            '3': ERROR
            '4': DISABLED
        stepResult:
          type: string
          description: 回傳結果資料
        stepError:
          type: string
          description: 執行錯誤訊息
        stepStartTime:
          type: string
          description: 執行起始時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        stepEndTime:
          type: string
          description: 執行結束時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        stepNum:
          type: integer
          format: int64
          description: 步驟ID 關聯qa_c012
        postProcResp:
          type: string
          description: 後置處理結果
        createAt:
          type: string
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          type: integer
          format: int64
        createByName:
          type: string
        updateAt:
          type: string
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          type: integer
          format: int64
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        stepName:
          type: string
          description: 步驟名稱
    QaC007Vo:
      type: object
      properties:
        transId:
          type: string
        triggerNum:
          type: integer
          format: int64
          description: 計畫觸發ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        planNum:
          type: integer
          format: int64
          description: 測試計畫ID (not null)
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        noticeGroupCode:
          type: string
          description: 通知群組 (not null)
        triggerName:
          type: string
          description: 觸發名稱 (not null)
        triggerDesc:
          type: string
          description: 描述
        isEnabled:
          type: boolean
          description: 是否執行 (not null)
        isIncluded:
          type: boolean
          description: 是否寫入總表 (not null)
        cron:
          type: string
          description: 定時 (not null)
        nextRunTime:
          type: string
          description: 下次執行時間
        lastRunTime:
          type: string
          description: 最後執行時間
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        plan:
          $ref: '#/components/schemas/QaC005Vo'
        environment:
          $ref: '#/components/schemas/QaC002Vo'
        project:
          $ref: '#/components/schemas/QaC001Vo'
    QaC005Vo:
      type: object
      properties:
        transId:
          type: string
        planNum:
          type: integer
          format: int64
          description: 計畫ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        planName:
          type: string
          description: 名稱 (not null)
        planDesc:
          type: string
          description: 描述
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        project:
          $ref: '#/components/schemas/QaC001Vo'
        selectedCases:
          type: array
          items:
            $ref: '#/components/schemas/QaC004Vo'
    QaC001Vo:
      type: object
      properties:
        transId:
          type: string
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        comNum:
          type: integer
          format: int64
          description: 公司ID (not null)
        projectName:
          type: string
          description: 專案名稱 (not null)
        projectCode:
          type: string
          description: 專案縮寫 (not null)
        projectDesc:
          type: string
          description: 描述
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        suiteList:
          type: array
          items:
            $ref: '#/components/schemas/QaC003Vo'
    QaC002Vo:
      type: object
      properties:
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        envName:
          type: string
          description: 名稱 (not null)
        envDesc:
          type: string
          description: 描述
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        envConfigs:
          type: array
          items:
            $ref: '#/components/schemas/QaC012Vo'
    QaC012Vo:
      type: object
      properties:
        transId:
          type: string
        configNum:
          type: integer
          format: int64
          description: 變數設定ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        configKey:
          type: string
          description: 名稱 (not null)
        configValue:
          type: string
          description: 值 (not null)
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
    QaC007VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        triggerNum:
          anyOf:
          - type: integer
            format: int64
            description: 計畫觸發ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        planNum:
          anyOf:
          - type: integer
            format: int64
            description: 測試計畫ID (not null)
          - type: 'null'
        envNum:
          anyOf:
          - type: integer
            format: int64
            description: 環境ID (not null)
          - type: 'null'
        noticeGroupCode:
          anyOf:
          - type: string
            description: 通知群組 (not null)
          - type: 'null'
        triggerName:
          anyOf:
          - type: string
            description: 觸發名稱 (not null)
          - type: 'null'
        triggerDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        isEnabled:
          anyOf:
          - type: boolean
            description: 是否執行 (not null)
          - type: 'null'
        isIncluded:
          anyOf:
          - type: boolean
            description: 是否寫入總表 (not null)
          - type: 'null'
        cron:
          anyOf:
          - type: string
            description: 定時 (not null)
          - type: 'null'
        nextRunTime:
          anyOf:
          - type: string
            description: 下次執行時間
          - type: 'null'
        lastRunTime:
          anyOf:
          - type: string
            description: 最後執行時間
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        plan:
          anyOf:
          - $ref: '#/components/schemas/QaC005VoRequest'
          - type: 'null'
        environment:
          anyOf:
          - $ref: '#/components/schemas/QaC002VoRequest'
          - type: 'null'
        project:
          anyOf:
          - $ref: '#/components/schemas/QaC001VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC005VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        planNum:
          anyOf:
          - type: integer
            format: int64
            description: 計畫ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        projectNum:
          anyOf:
          - type: integer
            format: int64
            description: 專案ID (not null)
          - type: 'null'
        planName:
          anyOf:
          - type: string
            description: 名稱 (not null)
          - type: 'null'
        planDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        project:
          anyOf:
          - $ref: '#/components/schemas/QaC001VoRequest'
          - type: 'null'
        selectedCases:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC004VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC001VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        projectNum:
          anyOf:
          - type: integer
            format: int64
            description: 專案ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
            description: 公司ID (not null)
          - type: 'null'
        projectName:
          anyOf:
          - type: string
            description: 專案名稱 (not null)
          - type: 'null'
        projectCode:
          anyOf:
          - type: string
            description: 專案縮寫 (not null)
          - type: 'null'
        projectDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        suiteList:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC003VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC003VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        suiteNum:
          anyOf:
          - type: integer
            format: int64
            description: 測試群組ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        projectNum:
          anyOf:
          - type: integer
            format: int64
            description: 專案ID (not null)
          - type: 'null'
        parentNum:
          anyOf:
          - type: integer
            format: int64
            description: 上層案例群組,根為0, 可巢狀
          - type: 'null'
        suiteName:
          anyOf:
          - type: string
            description: 案例群組名稱 (not null)
          - type: 'null'
        suiteDesc:
          anyOf:
          - type: string
            description: 案例群組描述
          - type: 'null'
        suiteOrder:
          anyOf:
          - type: integer
            format: int32
            description: 順序 (not null)
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        category:
          anyOf:
          - type: string
            description: 測試類別:1.PLATFORM,2.JUNIT
          - type: 'null'
        cases:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC004VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC004VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        caseNum:
          anyOf:
          - type: integer
            format: int64
            description: 測試案例ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        suiteNum:
          anyOf:
          - type: integer
            format: int64
            description: 群組ID (not null)
          - type: 'null'
        caseName:
          anyOf:
          - type: string
            description: 案例名稱 (not null)
          - type: 'null'
        caseDesc:
          anyOf:
          - type: string
            description: 案例描述
          - type: 'null'
        caseType:
          anyOf:
          - type: string
            description: '案例步驟類型 1: 一般案例 在群組顯示 2. before_all只能一個 3. before_each只能一個 4. after_all只能一個 5. after_each只能一個
              (not null)'
          - type: 'null'
        caseOrder:
          anyOf:
          - type: integer
            format: int32
            description: 順序 (not null)
          - type: 'null'
        dependsOn:
          anyOf:
          - type: string
            description: '依賴案例陣列[1, 2,...]: 前面案例成功才執行'
          - type: 'null'
        isDeleted:
          anyOf:
          - type: boolean
            description: 軟刪除 (not null)
          - type: 'null'
        category:
          anyOf:
          - type: string
            description: 測試種類:1.PLATFORM,2.JUNIT
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        stepList:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC013VoRequest'
          - type: 'null'
        qaC010Vo:
          anyOf:
          - $ref: '#/components/schemas/QaC010VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC013VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        stepNum:
          anyOf:
          - type: integer
            format: int64
            description: 步驟流水號 (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 更新時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 更新人
          - type: 'null'
        caseNum:
          anyOf:
          - type: integer
            format: int64
            description: 案例ID 關聯qa_c004 (not null)
          - type: 'null'
        stepOrder:
          anyOf:
          - type: integer
            format: int32
            description: 步驟順序
          - type: 'null'
        stepType:
          anyOf:
          - type: string
            description: 步驟類型 1. 執行http 2. 執行sql比對 3. 執行PreSql 4. 執行倒資料 5. 執行備份資料
          - type: 'null'
        stepExec:
          anyOf:
          - type: string
            description: 步驟執行內容
          - type: 'null'
        stepRemark:
          anyOf:
          - type: string
            description: 步驟備註
          - type: 'null'
        stepName:
          anyOf:
          - type: string
            description: 步驟名稱
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        stepExecPo:
          anyOf:
          - $ref: '#/components/schemas/QaC013Vo_Po_StepExecPoRequest'
            description: 步驟執行
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC013Vo_Po_StepExecPoRequest:
      type: object
      properties: {}
      description: 步驟實際型別由 stepType 決定。CaseStepPo 的 JsonSubTypes 為 1..6（含 5）；執行用 QaC013StepType 為 1,2,3,4,6,7。兩者不一致，本版保留開放物件而不假設可互換。
      x-known-subtypes:
        '1':
          $ref: '#/components/schemas/QaC013Vo_Po_HttpStepPo'
        '2':
          $ref: '#/components/schemas/QaC013Vo_Po_SqlCompareStepPo'
        '3':
          $ref: '#/components/schemas/QaC013Vo_Po_PreSqlStepPo'
        '4':
          $ref: '#/components/schemas/QaC013Vo_Po_SqlTransferStepPo'
        '5':
          $ref: '#/components/schemas/QaC013Vo_Po_BackupTransferStepPo'
        '6':
          $ref: '#/components/schemas/QaC013Vo_Po_InvokeStepPo'
        '7':
          $ref: '#/components/schemas/QaC013Vo_Po_SqlSelectCompareStepPo'
    QaC010VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        runCaseNum:
          anyOf:
          - type: integer
            format: int64
            description: 案例執行結果ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        runSuiteNum:
          anyOf:
          - type: integer
            format: int64
            description: 群組執行結果ID (not null)
          - type: 'null'
        caseNum:
          anyOf:
          - type: integer
            format: int64
            description: 案例ID (not null)
          - type: 'null'
        caseRecord:
          anyOf:
          - type: string
            description: case_record 原封不動 (not null)
          - type: 'null'
        caseStatus:
          anyOf:
          - type: string
            description: '狀態: 1.建立, 2.執行, 3.成功, 4.失敗, 5.執行錯誤, 6.依賴失敗'
          - type: 'null'
          x-code-values:
            '0': SKIPPED
            '1': NEW
            '2': RUNNING
            '3': PASSED
            '4': FAILED
            '5': ERROR
            '6': DEPENDENT_FAILED
            '7': ABORTED
          description: 狀態代碼為字串：0=SKIPPED, 1=NEW, 2=RUNNING, 3=PASSED, 4=FAILED, 5=ERROR, 6=DEPENDENT_FAILED, 7=ABORTED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
        caseStartTime:
          anyOf:
          - type: string
            description: 執行起始時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        caseEndTime:
          anyOf:
          - type: string
            description: 執行結束時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        caseThrowable:
          anyOf:
          - type: string
            description: 案例錯誤及異常紀錄
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        runStepVos:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC011VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC011VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        runStepNum:
          anyOf:
          - type: integer
            format: int64
            description: 步驟執行結果ID (not null)
          - type: 'null'
        runCaseNum:
          anyOf:
          - type: integer
            format: int64
            description: 案例執行結果ID (not null)
          - type: 'null'
        stepOrder:
          anyOf:
          - type: integer
            format: int32
            description: 步驟順序 (not null)
          - type: 'null'
        stepType:
          anyOf:
          - type: string
            description: '步驟類型: 1.http, 2.preSql, 3.sqlCompare, 4.dataTransfer (not null)'
          - type: 'null'
        stepExec:
          anyOf:
          - type: string
            description: 步驟 (not null)
          - type: 'null'
        stepStatus:
          anyOf:
          - type: string
            description: '狀態: 0.尚未執行,1.成功, 2.失敗, 3.執行錯誤 (not null)'
          - type: 'null'
          x-code-values:
            '1': PASSED
            '2': FAILED
            '3': ERROR
            '4': DISABLED
          description: 狀態代碼為字串：1=PASSED, 2=FAILED, 3=ERROR, 4=DISABLED。代碼表描述既有常數，不代表輸入已做 enum 驗證。
        stepResult:
          anyOf:
          - type: string
            description: 回傳結果資料
          - type: 'null'
        stepError:
          anyOf:
          - type: string
            description: 執行錯誤訊息
          - type: 'null'
        stepStartTime:
          anyOf:
          - type: string
            description: 執行起始時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        stepEndTime:
          anyOf:
          - type: string
            description: 執行結束時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        stepNum:
          anyOf:
          - type: integer
            format: int64
            description: 步驟ID 關聯qa_c012
          - type: 'null'
        postProcResp:
          anyOf:
          - type: string
            description: 後置處理結果
          - type: 'null'
        createAt:
          anyOf:
          - type: string
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        stepName:
          anyOf:
          - type: string
            description: 步驟名稱
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC002VoRequest:
      type: object
      properties:
        envNum:
          anyOf:
          - type: integer
            format: int64
            description: 環境ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        projectNum:
          anyOf:
          - type: integer
            format: int64
            description: 專案ID (not null)
          - type: 'null'
        envName:
          anyOf:
          - type: string
            description: 名稱 (not null)
          - type: 'null'
        envDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        envConfigs:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC012VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC012VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        configNum:
          anyOf:
          - type: integer
            format: int64
            description: 變數設定ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        envNum:
          anyOf:
          - type: integer
            format: int64
            description: 環境ID (not null)
          - type: 'null'
        configKey:
          anyOf:
          - type: string
            description: 名稱 (not null)
          - type: 'null'
        configValue:
          anyOf:
          - type: string
            description: 值 (not null)
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC008VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        runNum:
          anyOf:
          - type: integer
            format: int64
            description: 執行 ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        projectNum:
          anyOf:
          - type: integer
            format: int64
            description: 專案ID (not null)
          - type: 'null'
        runName:
          anyOf:
          - type: string
            description: 名稱 (not null)
          - type: 'null'
        runDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        runStatus:
          anyOf:
          - type: string
            description: '1: 建立 2: 執行 3: 結束 4: 中斷 5: 待重試 6: 忽略 (not null)'
          - type: 'null'
          x-code-values:
            '1': NEW
            '2': RUNNING
            '3': FINISHED
            '4': INTERRUPTED
            '5': RETRY
            '6': SKIPPED
          description: 狀態代碼為字串：1=NEW, 2=RUNNING, 3=FINISHED, 4=INTERRUPTED, 5=RETRY, 6=SKIPPED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
        triggerNum:
          anyOf:
          - type: integer
            format: int64
            description: 計畫觸發ID (not null)
          - type: 'null'
        triggerRecord:
          anyOf:
          - type: string
            description: 計畫觸發 紀錄 (not null)
          - type: 'null'
        planNum:
          anyOf:
          - type: integer
            format: int64
            description: 測試計畫ID (not null)
          - type: 'null'
        planRecord:
          anyOf:
          - type: string
            description: 測試計畫 紀錄 (not null)
          - type: 'null'
        envNum:
          anyOf:
          - type: integer
            format: int64
            description: 環境ID (not null)
          - type: 'null'
        envRecord:
          anyOf:
          - type: string
            description: 環境 紀錄 (not null)
          - type: 'null'
        isIncluded:
          anyOf:
          - type: boolean
            description: 是否寫入總表 (not null)
          - type: 'null'
        excludeComment:
          anyOf:
          - type: string
            description: 不寫入總表原因
          - type: 'null'
        runStartTime:
          anyOf:
          - type: string
            description: 執行起始時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        runEndTime:
          anyOf:
          - type: string
            description: 執行結束時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        runLog:
          anyOf:
          - type: string
            description: 執行log
          - type: 'null'
        retryCount:
          anyOf:
          - type: integer
            format: int32
            description: 重試次數(目前預設3次) 超過3次就不retry
          - type: 'null'
        expectedSuiteCount:
          anyOf:
          - type: integer
            format: int32
            description: 預期執行群組數
          - type: 'null'
        expectedCaseCount:
          anyOf:
          - type: integer
            format: int32
            description: 預期執行案例數
          - type: 'null'
        pipelineInfo:
          anyOf:
          - type: string
            description: ci pipeline info
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        runSuiteVos:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC009VoRequest'
          - type: 'null'
        qaC001Vo:
          anyOf:
          - $ref: '#/components/schemas/QaC001VoRequest'
          - type: 'null'
        qaC002Vo:
          anyOf:
          - $ref: '#/components/schemas/QaC002VoRequest'
          - type: 'null'
        qaC005Vo:
          anyOf:
          - $ref: '#/components/schemas/QaC005VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC009VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        runSuiteNum:
          anyOf:
          - type: integer
            format: int64
            description: 群組執行結果ID (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間 (not null)
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員 (not null)
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        runNum:
          anyOf:
          - type: integer
            format: int64
            description: 執行ID (not null)
          - type: 'null'
        suiteNum:
          anyOf:
          - type: integer
            format: int64
            description: 案例群組ID (not null)
          - type: 'null'
        suiteRecord:
          anyOf:
          - type: string
            description: suite 原封不動 (not null)
          - type: 'null'
        suiteStatus:
          anyOf:
          - type: string
            description: '群組狀態: 1: 建立 2: 執行 3: 成功 4: 失敗'
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        runCaseVos:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/QaC010VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaC008Vo:
      type: object
      properties:
        transId:
          type: string
        runNum:
          type: integer
          format: int64
          description: 執行 ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        runName:
          type: string
          description: 名稱 (not null)
        runDesc:
          type: string
          description: 描述
        runStatus:
          type: string
          description: 狀態代碼為字串：1=NEW, 2=RUNNING, 3=FINISHED, 4=INTERRUPTED, 5=RETRY, 6=SKIPPED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
          x-code-values:
            '1': NEW
            '2': RUNNING
            '3': FINISHED
            '4': INTERRUPTED
            '5': RETRY
            '6': SKIPPED
        triggerNum:
          type: integer
          format: int64
          description: 計畫觸發ID (not null)
        triggerRecord:
          type: string
          description: 計畫觸發 紀錄 (not null)
        planNum:
          type: integer
          format: int64
          description: 測試計畫ID (not null)
        planRecord:
          type: string
          description: 測試計畫 紀錄 (not null) 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        envRecord:
          type: string
          description: 環境 紀錄 (not null) 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。
        isIncluded:
          type: boolean
          description: 是否寫入總表 (not null)
        excludeComment:
          type: string
          description: 不寫入總表原因
        runStartTime:
          type: string
          description: 執行起始時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        runEndTime:
          type: string
          description: 執行結束時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        runLog:
          type: string
          description: 執行log
        retryCount:
          type: integer
          format: int32
          description: 重試次數(目前預設3次) 超過3次就不retry
        expectedSuiteCount:
          type: integer
          format: int32
          description: 預期執行群組數
        expectedCaseCount:
          type: integer
          format: int32
          description: 預期執行案例數
        pipelineInfo:
          type: string
          description: ci pipeline info
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        runSuiteVos:
          type: array
          items:
            $ref: '#/components/schemas/QaC009Vo'
        qaC001Vo:
          $ref: '#/components/schemas/QaC001Vo'
        qaC002Vo:
          $ref: '#/components/schemas/QaC002Vo'
        qaC005Vo:
          $ref: '#/components/schemas/QaC005Vo'
    QaC009Vo:
      type: object
      properties:
        transId:
          type: string
        runSuiteNum:
          type: integer
          format: int64
          description: 群組執行結果ID (not null)
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        runNum:
          type: integer
          format: int64
          description: 執行ID (not null)
        suiteNum:
          type: integer
          format: int64
          description: 案例群組ID (not null)
        suiteRecord:
          type: string
          description: suite 原封不動 (not null) 此 VO/PO 欄位以字串保存 JSON；請勿直接改傳 JSON 物件／陣列。
        suiteStatus:
          type: string
          description: '群組狀態: 1: 建立 2: 執行 3: 成功 4: 失敗'
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        runCaseVos:
          type: array
          items:
            $ref: '#/components/schemas/QaC010Vo'
    CoA010Vo:
      type: object
      properties:
        transId:
          type: string
        comNum:
          type: integer
          format: int64
          description: dataType:Long columnName:com_num/
        rootComNum:
          type: integer
          format: int64
          description: dataType:Long columnName:root_com_num/
        parentComNum:
          type: integer
          format: int64
          description: dataType:Long columnName:parent_com_num/
        comId:
          type: string
          description: dataType:String columnName:com_id/
        comName:
          type: string
          description: dataType:String columnName:com_name/
        comSname:
          type: string
          description: dataType:String columnName:com_sname/
        comEname:
          type: string
          description: dataType:String columnName:com_ename/
        comTel:
          type: string
          description: dataType:String columnName:com_tel/
        comFax:
          type: string
          description: dataType:String columnName:com_fax/
        comZip:
          type: string
          description: dataType:String columnName:com_zip/
        comEmail:
          type: string
          description: dataType:String columnName:com_email/
        comAddr:
          type: string
          description: dataType:String columnName:com_addr/
        comRemark:
          type: string
          description: dataType:String columnName:com_remark/
        comCcount:
          type: string
          description: dataType:String columnName:com_ccount/
        comCmobile:
          type: string
          description: dataType:String columnName:com_cmobile/
        comCphone:
          type: string
          description: dataType:String columnName:com_cphone/
        comCfax:
          type: string
          description: dataType:String columnName:com_cfax/
        comScont:
          type: string
          description: dataType:String columnName:com_scont/
        comSemail:
          type: string
          description: dataType:String columnName:com_semail/
        comSphone:
          type: string
          description: dataType:String columnName:com_sphone/
        comRzip:
          type: string
          description: dataType:String columnName:com_rzip/
        comReturnaddr:
          type: string
          description: dataType:String columnName:com_returnaddr/
        comAcont:
          type: string
          description: dataType:String columnName:com_acont/
        comAemail:
          type: string
          description: dataType:String columnName:com_aemail/
        comAphone:
          type: string
          description: dataType:String columnName:com_aphone/
        comAfax:
          type: string
          description: dataType:String columnName:com_afax/
        comBank:
          type: string
          description: dataType:String columnName:com_bank/
        comBankCode:
          type: string
          description: dataType:String columnName:com_bank_code/
        comBranch:
          type: string
          description: dataType:String columnName:com_branch/
        comBranchCode:
          type: string
          description: dataType:String columnName:com_branch_code/
        comAccount:
          type: string
          description: dataType:String columnName:com_account/
        comAccountname:
          type: string
          description: dataType:String columnName:com_accountname/
        comPayment:
          type: string
          description: dataType:String columnName:com_payment/
        comPaymentType:
          type: string
          description: dataType:String columnName:com_payment_type/
        comPaymentRemark:
          type: string
          description: dataType:String columnName:com_payment_remark/
        comContract:
          type: string
          description: dataType:String columnName:com_contract/
        comStatus:
          type: string
          description: dataType:String columnName:com_status/
        comStopDate:
          type: string
          description: dataType:String columnName:com_stop_date/
        comStopUser:
          type: integer
          format: int64
          description: dataType:Long columnName:com_stop_user/
        comStopReason:
          type: string
          description: dataType:String columnName:com_stop_reason/
        comSequence:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_sequence/
        comVacation:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_vacation/
        comLocale:
          type: string
          description: dataType:String columnName:com_locale/
        comCountry:
          type: string
          description: dataType:String columnName:com_country/
        comTimezone:
          type: string
          description: dataType:String columnName:com_timezone/
        createBy:
          type: integer
          format: int64
          description: dataType:Long columnName:create_by/
        createAt:
          type: string
          description: dataType:String columnName:create_at/ 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: dataType:Long columnName:update_by/
        updateAt:
          type: string
          description: dataType:String columnName:update_at/ 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        comImg:
          type: string
          description: dataType:String columnName:com_img/
        comImg2:
          type: string
          description: dataType:String columnName:com_img2/
        openBackend:
          type: string
          description: dataType:String columnName:open_backend/
        apiSecretKey:
          type: string
          description: dataType:String columnName:api_secret_key/
        comAnnualStartHours:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_annual_start_hours/
        comAnnualStayMonth:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_annual_stay_month/
        comGroupOrder:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_group_order/
        comRepresentiveLine:
          type: string
          description: dataType:String columnName:com_representive_line/
        comGroupNum:
          type: integer
          format: int64
          description: dataType:Long columnName:com_group_num/
        comOvertimeCountUnit:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_overtime_count_unit/
        comOvertimeRestMinutes:
          type: integer
          format: int32
          description: dataType:Integer columnName:com_overtime_rest_minutes/
        empDefaultBreakType:
          type: string
          description: dataType:String columnName:emp_default_break_type/
        annualLeaveValidInitialSubmitTime:
          type: integer
          format: int32
          description: dataType:Integer columnName:annual_leave_valid_initial_submit_time/
        createByName:
          type: string
          description: Transient @return/
        updateByName:
          type: string
          description: Transient @return/
        supComNum:
          type: integer
          format: int64
        supComId:
          type: string
        supComName:
          type: string
        inContactName:
          type: string
        inContactTel:
          type: string
        createUser:
          type: string
        createDate:
          type: string
        updateUser:
          type: string
        updateDate:
          type: string
        phoneCode:
          type: string
        omsInfo:
          $ref: '#/components/schemas/CoA011Vo'
        supComList:
          type: array
          items:
            $ref: '#/components/schemas/CoA010Vo'
        comMAppList:
          type: array
          items:
            type: object
            additionalProperties: true
            description: 公司資料附屬 VO，本版未展開：CoR010Vo
            x-schema-status: unresolved
        receiveFormList:
          type: array
          items:
            type: object
            additionalProperties: true
            description: 公司資料附屬 VO，本版未展開：BfT011Vo
            x-schema-status: unresolved
        submitSftNumList:
          type: array
          items:
            type: integer
            format: int64
        designFormTypeList:
          type: array
          items:
            type: integer
            format: int64
        receiveSftNumList:
          type: array
          items:
            type: integer
            format: int64
        uploadImg:
          $ref: '#/components/schemas/Base64File'
        uploadImg2:
          $ref: '#/components/schemas/Base64File'
        systemPlatformInfo:
          $ref: '#/components/schemas/CoA011Vo'
          description: 新舊系統資料同步，切到新系統要拔掉
        coF010Vos:
          type: array
          items:
            type: object
            additionalProperties: true
            description: 公司資料附屬 VO，本版未展開：CoF010Vo
            x-schema-status: unresolved
        coF011Vos:
          type: array
          items:
            type: object
            additionalProperties: true
            description: 公司資料附屬 VO，本版未展開：CoF011Vo
            x-schema-status: unresolved
        virtualWhCodeList:
          type: array
          items:
            type: object
            additionalProperties: true
            description: 公司資料附屬 VO，本版未展開：WhA013Vo
            x-schema-status: unresolved
        isUseDetailStockProp:
          type: boolean
        coA011IsCheckFraudulent:
          type: boolean
        sysCode:
          type: string
        isAdmin:
          type: boolean
        isOmegaCom:
          type: boolean
        isOmegaAdmin:
          type: boolean
        showLocationHeight:
          type: boolean
        showLocationSize:
          type: boolean
        customizeColumnList:
          type: array
          items:
            type: object
            additionalProperties: {}
    CoA011Vo:
      type: object
      properties:
        transId:
          type: string
        comNum:
          type: integer
          format: int64
          description: 公司流水號 (not null)
        trlname:
          type: string
          description: 三方逆物流收件人姓名
        trltel:
          type: string
          description: 三方逆物流收件人電話
        trlzip:
          type: string
          description: 三方逆物流收件人郵遞區號
        trladdr:
          type: string
          description: 三方逆物流收件人地址
        poEndTime:
          type: string
          description: 當日出貨拋單截止時間 (not null)
        isOwner:
          type: boolean
          description: 是否為OMS貨主
        isTrl:
          type: boolean
          description: 是否為三方逆物流客戶 (not null)
        isSplitOrder:
          type: boolean
          description: 是否能拆單 (not null)
        isLimitImport:
          type: boolean
          description: 是否限制每日入倉量 (not null)
        isAutoPoOrder:
          type: boolean
          description: 是否缺貨訂單自動重拋 (not null)
        isArriveStoreSms:
          type: boolean
          description: 是否發送到店簡訊 (not null)
        isArriveStoreSms3:
          type: boolean
          description: 是否發送到店三天未取貨簡訊 (not null)
        isArriveStoreSms6:
          type: boolean
          description: 是否發送到店六天未取貨簡訊 (not null)
        isReturnSms:
          type: boolean
          description: 是否發送退貨簡訊 (not null)
        isCanSellTransform:
          type: boolean
          description: 是否依據允售日排程轉不良品 (not null)
        isBatchMailAlert:
          type: boolean
          description: 是否批次拋單寄信 (not null)
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        createAt:
          type: string
          description: 建立日期 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        updateAt:
          type: string
          description: 異動日期 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        isThirdManager:
          type: boolean
          description: 是否為第三方管理公司 (not null)
        isSyncPlStock:
          type: boolean
          description: 是否需要同步平台庫存 (not null)
        isApiShowZeroStock:
          type: boolean
          description: 是否API顯示0庫存 (not null)
        pgDtlMemo:
          type: string
          description: 客戶裝箱明細備註說明,For雅詩蘭黛打印字串
        isShipAfterExrdedt:
          type: boolean
          description: 是否卡控期望出貨日 (not null)
        isSvcCom:
          type: boolean
          description: 是否為外部服務商 (not null)
        custSvcName:
          type: string
          description: 貨主預設出貨貼紙客服名稱
        custSvcAddr:
          type: string
          description: 貨主預設出貨貼紙客服網址
        custSvcTel:
          type: string
          description: 貨主預設出貨貼紙客服電話
        isUseDefaultPlatformStockRatio:
          type: boolean
          description: 是否使用平台預設的庫存比例 (not null)
        poOrderLimitCount:
          type: integer
          format: int32
          description: 一天拋單數量限制 0為不開啟，大於0即為開啟 (not null)
        isOpenSubPdPrice:
          type: boolean
          description: 是否開啟組合商品金額調整
        defaultSerialControl:
          type: string
          description: 貨主預設貨品序號搜集控制 F –在倉庫內追蹤序號。 I –入庫追蹤（僅在入庫過程中在取得序列號）。 N –無。 O –出庫追蹤（僅在出庫流程中在接單時取得序列號）。 T –追蹤輸入/輸出（在接收點和領料點都取得序列號）/
        isCheckFraudulent:
          type: boolean
          description: 是否檢查盜刷訂單 (not null)
        fraudOrderCheckBaseTime:
          type: string
          description: 盜刷訂單檢查的基準時間
        excludePoCronText:
          type: string
          description: 特別排除不拋單的cron時間設定
        isDistributionExpireDateControl:
          type: boolean
          description: 是否啟用通路效期管制 (not null)
        isEnableCombineOrder:
          type: boolean
          description: 是否啟用彙總出貨 (not null)
        isAutoScrapExPd:
          type: boolean
          description: 是否自動報廢即期品 (not null)
        isArriveStoreSms2:
          type: boolean
          description: 是否發送到店2天未取貨簡訊 (not null)
        isArriveStoreSms4:
          type: boolean
          description: 是否發送到店4天未取貨簡訊 (not null)
        isArriveStoreSms5:
          type: boolean
          description: 是否發送到店5天未取貨簡訊 (not null)
        isHomeDelShipSms:
          type: boolean
          description: 是否發送宅配出貨簡訊 (not null)
        isSmsDefault:
          type: boolean
          description: 是否使用公版預設簡訊 (not null)
        isExchangeOrderRtnCopyItems:
          type: boolean
          description: 來回件的回件，是否從去件包裹複製明細 (not null)
        isInboundSplitAcceptReopen:
          type: boolean
          description: 入庫單是否可部分驗收關單重開 (not null)
        packageContent:
          type: string
          description: 預設包裹內容 如果取號成運商必須提供包裹內容，依此欄位給值
        maskingDays:
          type: integer
          format: int32
          description: 資料遮蔽天數(預設90天) (not null)
        poStartTime:
          type: string
          description: 開始拋訂單至wms的時間
        isOboActive:
          type: boolean
          description: 是否啟用原箱出貨
        isSellValidityExpireDateControl:
          type: boolean
          description: 是否啟用商品允售效期管制 (小於允售效期的庫存不允許配置)
        isSendOma100InboundComplete:
          type: boolean
          description: 是否要發送入庫單批次完成通知
        sendInboundCompleteTime:
          type: string
          description: 發送入庫單完成批次通知時間
        isOnSiteServiceSms:
          type: boolean
          description: 是否發送到府服務通知
        canThirdManagerDeleteOrder:
          type: boolean
          description: 第三方物流是否可以刪單 如為true，貨主將無法自由庫內刪單 需透由第三方物流刪單
        isInboundTransToDispatchJob:
          type: boolean
          description: 入庫單是不是可以轉為加工 為啟動開關 但實際上可不可以還是要看商品跟BOM表
        isBefSendWmsGenDelFile:
          type: boolean
          description: 是否在下發WMS前產生面單檔案
        isAutoDeleteInboundActive:
          type: boolean
          description: 是否啟用自動作廢入庫單
        skipSerialCodeCollectionKeyword:
          type: string
          description: 略過序號蒐集class json(出入庫共用 含是否開啟此功能)
        ownerStatus:
          type: string
          description: '貨主營運狀態 1: 營運中 2: 待停止服務 3: 已停止服務 4: 測試貨主'
        sendAddress:
          type: string
          description: 寄件人地址，如未設定預設帶出貨倉庫地址
        sendZip:
          type: string
          description: 寄件人郵遞區號，如未設定預設帶出貨倉庫郵遞區號
        syncCombineOrderLimitCount:
          type: integer
          format: int32
          description: 彙總單同步到wms限制，大於0即為開啟
        custNumToLogisticJson:
          type: string
          description: 依客戶設定特定流程單號給承運商json(保留未來擴充空間)
        poOrderLimitIgnoreSetting:
          type: string
          description: 拋單限制排除設定
        isInboundDefHaveValidPer:
          type: boolean
          description: 入庫建立商品時是否預設為有效期
        poTaskOneThreadCount:
          type: integer
          format: int32
          description: 拋單任務單一執行緒拋單數量
        poTaskThreadCountLimit:
          type: integer
          format: int32
          description: '拋單任務單次任務執行緒數量上限 Example: po_task_thread_count = 2000, po_task_thread_count_limit = 3, 一次任務拋單最大上限2000
            * 3 = 6000張訂單'
        allyAssignLogisticSetting:
          type: string
          description: 訂單需要給艾立指定logistic_type 設定
        poTaskSetting:
          type: string
          description: 拋單任務設定, 針對不同Schedule Task執行之參數, 可參照CoA011Vo.PoTaskId enum做設定
        apiAuthGroupNum:
          type: integer
          format: int64
          description: TOKEN API 權限群組(有設定代表建立Token 會預設該Api 群組的權限)
        isRecordStockCreateAndLastTime:
          type: boolean
          description: 是否紀錄庫存的初次入庫時間與最後出庫時間
        orderStockAllocType:
          type: string
          description: 訂單庫存配置類型 1. 直接By單扣庫 2. 以商品進行預配置 (not null)
        isReceiveOrderPoImmediately:
          type: boolean
          description: 是否一收到訂單立即拋單扣庫 (not null)
        isPdValidityPeriod:
          type: boolean
          description: 效期商品商品預設，true為預設為效期商品
        defaultProductPropSetting:
          type: string
          description: 客戶商品預設屬性設定
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        supComNumList:
          type: array
          items:
            type: integer
            format: int64
        id:
          type: string
        whNumList:
          type: array
          items:
            type: integer
            format: int64
        thirdWhMap:
          type: object
          additionalProperties:
            type: array
            items:
              type: integer
              format: int64
        shadeStartDate:
          type: string
        shadeEndDate:
          type: string
        lastCombineTime:
          type: string
        isLastCombineTimeActive:
          type: boolean
        poTaskExecuteSettingList:
          type: array
          items:
            $ref: '#/components/schemas/CoA011Vo_PoTaskSetting_PoTaskExecuteSetting'
    CoA011Vo_PoTaskSetting_PoTaskExecuteSetting:
      type: object
      properties:
        poTaskId:
          type: string
        poTaskIdDisplayName:
          type: string
        poTaskOneThreadCount:
          type: integer
          format: int32
        poTaskThreadCountLimit:
          type: integer
          format: int32
        isUseKafka:
          type: boolean
    Base64File:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        size:
          type: string
        base64:
          type: string
    QaU001VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        qaFileNum:
          anyOf:
          - type: integer
            format: int64
            description: 流水號 (not null)
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人員
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 異動日期
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 異動人員
          - type: 'null'
        sourceNum:
          anyOf:
          - type: integer
            format: int64
            description: 來源流水號 (not null)
          - type: 'null'
        sourceType:
          anyOf:
          - type: string
            description: '來源類型: 1: 執行測試(qa_c007) source_num = run_num (not null)'
          - type: 'null'
        fileName:
          anyOf:
          - type: string
            description: 檔案名稱
          - type: 'null'
        remoteFilePath:
          anyOf:
          - type: string
            description: 遠端檔案路徑
          - type: 'null'
        currentUploadNum:
          anyOf:
          - type: integer
            format: int64
            description: 將移除
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        uploadNum:
          anyOf:
          - type: integer
            format: int64
            description: temp instead of QaU002 uploadNum
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaR001VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        compareNum:
          anyOf:
          - type: integer
            format: int64
            description: 比對流水號 (not null)
          - type: 'null'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 更新人
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 更新時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        stepNum:
          anyOf:
          - type: integer
            format: int64
            description: 步驟流水號 關聯qa_c013 (not null)
          - type: 'null'
        caseNum:
          anyOf:
          - type: integer
            format: int64
            description: 案例流水號 關聯qa_c004 (not null)
          - type: 'null'
        runNum:
          anyOf:
          - type: integer
            format: int64
            description: 執行run流水號 關聯qa_c008 (not null)
          - type: 'null'
        expectTable:
          anyOf:
          - type: string
            description: 比對預期table (not null)
          - type: 'null'
        resultTable:
          anyOf:
          - type: string
            description: 實際結果table (not null)
          - type: 'null'
        compareSettingJson:
          anyOf:
          - type: string
            description: 比對設定快照
          - type: 'null'
        compareTotalCount:
          anyOf:
          - type: integer
            format: int64
            description: 比對總筆數
          - type: 'null'
        comparePassedCount:
          anyOf:
          - type: integer
            format: int64
            description: 比對通過筆數
          - type: 'null'
        compareFailedCount:
          anyOf:
          - type: integer
            format: int64
            description: 比對失敗筆數
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        qaR002Vo:
          anyOf:
          - $ref: '#/components/schemas/QaR002VoRequest'
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaR002VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        compareDtlNum:
          anyOf:
          - type: integer
            format: int64
            description: 比對明細流水號 (not null)
          - type: 'null'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 更新人
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 更新時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        compareNum:
          anyOf:
          - type: integer
            format: int64
            description: 比對流水號 (not null)
          - type: 'null'
        columnName:
          anyOf:
          - type: string
            description: 欄位名稱 (not null)
          - type: 'null'
        expectValue:
          anyOf:
          - type: string
            description: 期望值 (not null)
          - type: 'null'
        resultValue:
          anyOf:
          - type: string
            description: 結果值
          - type: 'null'
        resultType:
          anyOf:
          - type: string
            description: 比對結果 1. 成功 2. 失敗 3. 不需比對
          - type: 'null'
        columnDesc:
          anyOf:
          - type: string
          - type: 'null'
        columnType:
          anyOf:
          - type: string
            description: '欄位類型 1: 一般比對欄位 2: join 使用欄位 3: pk欄位/'
          - type: 'null'
        rowNum:
          anyOf:
          - type: integer
            format: int32
            description: 第幾筆資料
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaR001Vo:
      type: object
      properties:
        transId:
          type: string
        compareNum:
          type: integer
          format: int64
          description: 比對流水號 (not null)
        createBy:
          type: integer
          format: int64
          description: 建立人
        createAt:
          type: string
          description: 建立時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 更新人
        updateAt:
          type: string
          description: 更新時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        stepNum:
          type: integer
          format: int64
          description: 步驟流水號 關聯qa_c013 (not null)
        caseNum:
          type: integer
          format: int64
          description: 案例流水號 關聯qa_c004 (not null)
        runNum:
          type: integer
          format: int64
          description: 執行run流水號 關聯qa_c008 (not null)
        expectTable:
          type: string
          description: 比對預期table (not null)
        resultTable:
          type: string
          description: 實際結果table (not null)
        compareSettingJson:
          type: string
          description: 比對設定快照
        compareTotalCount:
          type: integer
          format: int64
          description: 比對總筆數
        comparePassedCount:
          type: integer
          format: int64
          description: 比對通過筆數
        compareFailedCount:
          type: integer
          format: int64
          description: 比對失敗筆數
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        qaR002Vo:
          $ref: '#/components/schemas/QaR002Vo'
    QaR002Vo:
      type: object
      properties:
        transId:
          type: string
        compareDtlNum:
          type: integer
          format: int64
          description: 比對明細流水號 (not null)
        createBy:
          type: integer
          format: int64
          description: 建立人
        createAt:
          type: string
          description: 建立時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 更新人
        updateAt:
          type: string
          description: 更新時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        compareNum:
          type: integer
          format: int64
          description: 比對流水號 (not null)
        columnName:
          type: string
          description: 欄位名稱 (not null)
        expectValue:
          type: string
          description: 期望值 (not null)
        resultValue:
          type: string
          description: 結果值
        resultType:
          type: string
          description: 比對結果 1. 成功 2. 失敗 3. 不需比對
        columnDesc:
          type: string
        columnType:
          type: string
          description: '欄位類型 1: 一般比對欄位 2: join 使用欄位 3: pk欄位/'
        rowNum:
          type: integer
          format: int32
          description: 第幾筆資料
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
    QaR022VoRequest:
      type: object
      properties:
        transId:
          anyOf:
          - type: string
          - type: 'null'
        excludeTableNum:
          anyOf:
          - type: integer
            format: int64
            description: 流水號 (not null)
          - type: 'null'
        createBy:
          anyOf:
          - type: integer
            format: int64
            description: 建立人
          - type: 'null'
        createAt:
          anyOf:
          - type: string
            description: 建立時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        updateBy:
          anyOf:
          - type: integer
            format: int64
            description: 更新人
          - type: 'null'
        updateAt:
          anyOf:
          - type: string
            description: 更新時間
          - type: 'null'
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        excludeTable:
          anyOf:
          - type: string
            description: 排除的table
          - type: 'null'
        excludeSchema:
          anyOf:
          - type: string
            description: 排除的table schema
          - type: 'null'
        createByName:
          anyOf:
          - type: string
          - type: 'null'
        updateByName:
          anyOf:
          - type: string
          - type: 'null'
        comId:
          anyOf:
          - type: string
          - type: 'null'
        comNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    QaR022Vo:
      type: object
      properties:
        transId:
          type: string
        excludeTableNum:
          type: integer
          format: int64
          description: 流水號 (not null)
        createBy:
          type: integer
          format: int64
          description: 建立人
        createAt:
          type: string
          description: 建立時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 更新人
        updateAt:
          type: string
          description: 更新時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        excludeTable:
          type: string
          description: 排除的table
        excludeSchema:
          type: string
          description: 排除的table schema
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
    ProjectPo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        comNum:
          type: integer
          format: int64
          description: 公司ID (not null)
        projectName:
          type: string
          description: 專案名稱 (not null)
        projectCode:
          type: string
          description: 專案縮寫 (not null)
        projectDesc:
          type: string
          description: 描述
    AddProjectCoRequestValidated:
      type: object
      properties:
        projectName:
          type: string
          description: 名稱
          minLength: 1
          pattern: \S
        projectCode:
          type: string
          description: 專案編碼
          minLength: 1
          pattern: \S
        projectDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
      required:
      - projectName
      - projectCode
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifyProjectCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編碼
          minLength: 1
          pattern: \S
        projectName:
          type: string
          description: 名稱
          minLength: 1
          pattern: \S
        projectDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
      required:
      - projectCode
      - projectName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ProjectCodeBaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
      required:
      - projectCode
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    EnvironmentPo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        envName:
          type: string
          description: 名稱 (not null)
        envDesc:
          type: string
          description: 描述
    AddEnvironmentCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          minLength: 1
          pattern: \S
        envName:
          type: string
          description: 名稱
          minLength: 1
          pattern: \S
        envDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
      required:
      - projectCode
      - envName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifyEnvironmentCoRequestValidated:
      type: object
      properties:
        envNum:
          type: integer
          format: int64
          description: 環境PK
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        envName:
          type: string
          description: 名稱 (not null)
          minLength: 1
          pattern: \S
        envDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
      required:
      - envNum
      - projectCode
      - envName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeleteEnvironmentCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        envNum:
          type: integer
          format: int64
          description: 環境PK
      required:
      - projectCode
      - envNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    GetConfigCoRequest:
      type: object
      properties:
        projectCode:
          anyOf:
          - type: string
            description: 專案編號
          - type: 'null'
        envNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    ConfigPo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        configNum:
          type: integer
          format: int64
        envNum:
          type: integer
          format: int64
        configKey:
          type: string
        configValue:
          type: string
    AddConfigCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        envNum:
          type: integer
          format: int64
        configKey:
          type: string
          minLength: 1
          pattern: \S
        configValue:
          type: string
          minLength: 1
          pattern: \S
      required:
      - projectCode
      - envNum
      - configKey
      - configValue
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifyConfigCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        configNum:
          type: integer
          format: int64
        envNum:
          type: integer
          format: int64
        configKey:
          type: string
          minLength: 1
          pattern: \S
        configValue:
          type: string
          minLength: 1
          pattern: \S
      required:
      - projectCode
      - configNum
      - envNum
      - configKey
      - configValue
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeleteConfigCoRequest:
      type: object
      properties:
        projectCode:
          anyOf:
          - type: string
            description: 專案編號
          - type: 'null'
        envNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        configNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    AddSuiteCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        suiteName:
          type: string
          description: 名稱
          minLength: 1
          pattern: \S
        suiteDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
      required:
      - projectCode
      - suiteName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifySuiteCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        suiteNum:
          type: integer
          format: int64
        suiteName:
          type: string
          description: 名稱
          minLength: 1
          pattern: \S
        suiteDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
      required:
      - projectCode
      - suiteNum
      - suiteName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeletePlatformSuiteCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        suiteNum:
          type: integer
          format: int64
        destSuiteNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
      required:
      - projectCode
      - suiteNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeleteSuiteCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        suiteNum:
          type: integer
          format: int64
      required:
      - projectCode
      - suiteNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    MoveSuiteCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        suiteNum:
          type: integer
          format: int64
          description: 群組ID
        upOrDown:
          type: string
          description: 順序
      required:
      - projectCode
      - suiteNum
      - upOrDown
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    SelectOption:
      type: object
      properties:
        value:
          type: string
        label:
          type: string
    GetCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        caseNum:
          type: integer
          format: int64
          description: 測試案例PK
      required:
      - projectCode
      - caseNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    QaC013Vo_Po_Column:
      type: object
      properties:
        columnName:
          type: string
        columnDesc:
          type: string
    TrashCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        category:
          type: string
        rootSuiteNum:
          anyOf:
          - type: integer
            format: int64
            description: 根群組編號，platform is null, junit is not null
          - type: 'null'
      required:
      - projectCode
      - category
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    AddCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        suiteNum:
          type: integer
          format: int64
          description: 群組ID
        caseName:
          type: string
          description: 案例名稱
          minLength: 1
          pattern: \S
        caseDesc:
          anyOf:
          - type: string
            description: 案例描述
          - type: 'null'
        caseType:
          type: string
          description: '案例類型: 1.一般案例, 2.before_all, 3.before_each, 4.after_each, 5.after_all'
        dependsOn:
          anyOf:
          - type: array
            items:
              type: integer
              format: int64
            description: '依賴案例陣列[1, 2,...]: 前面案例成功才執行'
          - type: 'null'
        caseSteps:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/AddStepCoRequest'
            description: 步驟
          - type: 'null'
      required:
      - projectCode
      - suiteNum
      - caseName
      - caseType
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    AddStepCoRequest:
      type: object
      properties:
        stepType:
          anyOf:
          - type: string
            description: '步驟類型: 影響StepExec的變換'
          - type: 'null'
        stepExec:
          anyOf:
          - description: 步驟執行
          - type: 'null'
          description: JsonNode；實際內容依 stepType 轉換。HTTP 格式見 QaC013Vo_Po_HttpStepPo。caseSteps 無 @Valid cascade，巢狀註記不可視為已啟用。
        stepOrder:
          anyOf:
          - type: integer
            format: int32
            description: 步驟順序
          - type: 'null'
        stepName:
          anyOf:
          - type: string
            description: 步驟名稱
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    ModifyCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        caseNum:
          type: integer
          format: int64
        caseName:
          type: string
          description: 案例名稱
          minLength: 1
          pattern: \S
        caseDesc:
          anyOf:
          - type: string
            description: 案例描述
          - type: 'null'
        caseSteps:
          type: array
          items:
            $ref: '#/components/schemas/ModifyStepCoRequest'
          description: 程式/SQL/參數
        dependsOn:
          anyOf:
          - type: array
            items:
              type: integer
              format: int64
            description: '依賴案例陣列[1, 2,...]: 前面案例成功才執行'
          - type: 'null'
      required:
      - projectCode
      - caseNum
      - caseName
      - caseSteps
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifyStepCoRequest:
      type: object
      properties:
        stepNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        stepType:
          anyOf:
          - type: string
            description: '步驟類型: 影響StepExec的變換'
          - type: 'null'
        stepExec:
          anyOf:
          - description: 步驟執行
          - type: 'null'
          description: JsonNode；實際內容依 stepType 轉換。HTTP 格式見 QaC013Vo_Po_HttpStepPo。caseSteps 無 @Valid cascade，巢狀註記不可視為已啟用。
        stepOrder:
          anyOf:
          - type: integer
            format: int32
            description: 步驟順序
          - type: 'null'
        stepRemark:
          anyOf:
          - type: string
          - type: 'null'
        stepName:
          anyOf:
          - type: string
          - type: 'null'
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。
    MoveCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        caseNum:
          type: integer
          format: int64
          description: 案例ID
        upOrDown:
          type: string
          description: 調整順序up or down
          minLength: 1
          pattern: \S
      required:
      - projectCode
      - caseNum
      - upOrDown
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifySuiteCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        caseNum:
          type: integer
          format: int64
          description: 測試案例PK
        destSuiteNum:
          type: integer
          format: int64
          description: 目標群組PK
      required:
      - projectCode
      - caseNum
      - destSuiteNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeleteCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        caseNum:
          type: integer
          format: int64
        category:
          type: string
          minLength: 1
          pattern: \S
      required:
      - projectCode
      - caseNum
      - category
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    RestoreCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        caseNum:
          type: integer
          format: int64
          description: 選擇的案例
        destSuiteNum:
          type: integer
          format: int64
          description: 目標群組
      required:
      - projectCode
      - caseNum
      - destSuiteNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    PlanPo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        selectedCaseNums:
          type: array
          items:
            type: integer
            format: int64
          readOnly: true
        planNum:
          type: integer
          format: int64
          description: 計畫ID (not null)
        projectNum:
          type: integer
          format: int64
          description: 專案ID (not null)
        planName:
          type: string
          description: 名稱 (not null)
        planDesc:
          type: string
          description: 描述
    GetPlanCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        planNum:
          type: integer
          format: int64
          description: 測試計畫PK
      required:
      - projectCode
      - planNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    AddPlanCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        planName:
          type: string
          description: 名稱 (not null)
          minLength: 1
          pattern: \S
        planDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        selectedCaseNums:
          anyOf:
          - type: array
            items:
              type: integer
              format: int64
            description: 案例選擇
          - type: 'null'
      required:
      - projectCode
      - planName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifyPlanCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        planNum:
          type: integer
          format: int64
        planName:
          type: string
          description: 名稱 (not null)
          minLength: 1
          pattern: \S
        planDesc:
          anyOf:
          - type: string
            description: 描述
          - type: 'null'
        selectedCaseNums:
          anyOf:
          - type: array
            items:
              type: integer
              format: int64
          - type: 'null'
      required:
      - projectCode
      - planNum
      - planName
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeletePlanCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        planNum:
          type: integer
          format: int64
      required:
      - projectCode
      - planNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    GetNoticeGroupCoRequestValidated:
      type: object
      properties:
        noticeGroupCode:
          anyOf:
          - type: string
          - type: 'null'
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    RecipientGroupDo:
      type: object
      properties:
        noticeGrpCode:
          type: string
          description: 通知群組
        remark:
          type: string
          description: 群組說明
        noticeToNum:
          type: integer
          format: int64
        isUpdByCom:
          type: boolean
        comNum:
          type: integer
          format: int64
    TriggerPo:
      type: object
      properties:
        createAt:
          type: string
          description: 建立時間 (not null) 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員 (not null)
        updateAt:
          type: string
          description: 異動時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        triggerNum:
          type: integer
          format: int64
          description: 計畫設定ID (not null)
        planNum:
          type: integer
          format: int64
          description: 測試計畫ID (not null)
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        noticeGroupCode:
          type: string
          description: 通知群組 (not null)
        triggerName:
          type: string
          description: 計畫設定名稱 (not null)
        triggerDesc:
          type: string
          description: 描述 (not null)
        isEnabled:
          type: boolean
          description: 是否執行 (not null)
        isIncluded:
          type: boolean
          description: 是否寫入總表 (not null)
        cron:
          type: string
          description: 定時 (not null)
        nextRunTime:
          type: string
          description: 下次執行時間
        lastRunTime:
          type: string
          description: 最後執行時間
        plan:
          $ref: '#/components/schemas/PlanPo'
          description: 測試計畫
        environment:
          $ref: '#/components/schemas/EnvironmentPo'
          description: 專案環境
    AddTriggerCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        planNum:
          type: integer
          format: int64
          description: 計畫plan (not null)
        envNum:
          type: integer
          format: int64
          description: 環境
        noticeGroupCode:
          type: string
          description: 通知群組
          minLength: 1
          pattern: \S
        triggerName:
          type: string
          description: 計畫設定名稱 (not null)
          minLength: 1
          pattern: \S
        triggerDesc:
          anyOf:
          - type: string
            description: 描述 (not null)
          - type: 'null'
        isEnabled:
          type: boolean
          description: 是否執行
        isIncluded:
          type: boolean
          description: 是否寫入總表
        cron:
          type: string
          description: 定時 (not null)
      required:
      - projectCode
      - planNum
      - envNum
      - noticeGroupCode
      - triggerName
      - isEnabled
      - isIncluded
      - cron
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    ModifyTriggerCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        triggerNum:
          type: integer
          format: int64
        envNum:
          type: integer
          format: int64
          description: 環境ID (not null)
        noticeGroupCode:
          type: string
          description: 通知群組 (not null)
        triggerName:
          type: string
          description: 計畫設定名稱 (not null)
          minLength: 1
          pattern: \S
        triggerDesc:
          anyOf:
          - type: string
            description: 描述 (not null)
          - type: 'null'
        isEnabled:
          type: boolean
          description: 是否執行
        isIncluded:
          type: boolean
          description: 是否寫入總表
        cron:
          type: string
          description: 定時 (not null)
      required:
      - projectCode
      - triggerNum
      - envNum
      - noticeGroupCode
      - triggerName
      - isEnabled
      - isIncluded
      - cron
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    DeleteTriggerCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        triggerNum:
          type: integer
          format: int64
      required:
      - projectCode
      - triggerNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    InvokeTriggerCoRequest:
      type: object
      properties:
        projectCode:
          anyOf:
          - type: string
            description: 專案編號
          - type: 'null'
        triggerNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        needsCoverage:
          anyOf:
          - type: string
          - type: 'null'
          description: 一般人工執行以字串 Y 要求對應功能；SYSTEM_USER 在執行流程中另有啟用條件。Controller 未限制為 Y/N enum。
        needsSendReport:
          anyOf:
          - type: string
          - type: 'null'
          description: 一般人工執行以字串 Y 要求對應功能；SYSTEM_USER 在執行流程中另有啟用條件。Controller 未限制為 Y/N enum。
      description: JavaBean 請求欄位；未啟用此層 Bean Validation；實際業務必填條件仍由服務／資料庫決定。 triggerNum 的 @NotEmpty 套於 Long，並非適用的驗證型別；若未來啟用
        @Valid，應先修正註記。
    GetRunsCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        envNum:
          anyOf:
          - type: integer
            format: int64
          - type: 'null'
        runStatus:
          anyOf:
          - type: string
          - type: 'null'
          x-code-values:
            '1': NEW
            '2': RUNNING
            '3': FINISHED
            '4': INTERRUPTED
            '5': RETRY
            '6': SKIPPED
          description: 狀態代碼為字串：1=NEW, 2=RUNNING, 3=FINISHED, 4=INTERRUPTED, 5=RETRY, 6=SKIPPED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
        pageNum:
          type: integer
          format: int32
          description: 當前頁
        pageSize:
          type: integer
          format: int32
          description: 每頁筆數
        startDate:
          anyOf:
          - type: string
          - type: 'null'
        endDate:
          anyOf:
          - type: string
          - type: 'null'
      required:
      - projectCode
      - pageNum
      - pageSize
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    RunListDo:
      type: object
      properties:
        runName:
          type: string
          description: 執行名稱
        planName:
          type: string
          description: 計畫名稱
        status:
          type: string
          description: 狀態代碼為字串：1=NEW, 2=RUNNING, 3=FINISHED, 4=INTERRUPTED, 5=RETRY, 6=SKIPPED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
          x-code-values:
            '1': NEW
            '2': RUNNING
            '3': FINISHED
            '4': INTERRUPTED
            '5': RETRY
            '6': SKIPPED
        runStartTime:
          type: string
          description: 執行起始時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        runEndTime:
          type: string
          description: 執行結束時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        envName:
          type: string
          description: 執行環境
        statusOfCases:
          type: object
          additionalProperties:
            type: integer
            format: int64
          description: 成功數/失敗數/錯誤數
        totalCases:
          type: integer
          format: int32
          description: 案例總數
        passRate:
          type: number
          description: 案例通過率
        runNum:
          type: integer
          format: int64
        duration:
          type: integer
          format: int64
        createBy:
          type: string
    GetRunCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        runNum:
          type: integer
          format: int64
      required:
      - projectCode
      - runNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    RunDetailDo:
      type: object
      properties:
        runNum:
          type: integer
          format: int64
        runName:
          type: string
          description: 執行名稱
        planName:
          type: string
          description: 計畫名稱
        status:
          type: string
          description: 狀態代碼為字串：1=NEW, 2=RUNNING, 3=FINISHED, 4=INTERRUPTED, 5=RETRY, 6=SKIPPED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
          x-code-values:
            '1': NEW
            '2': RUNNING
            '3': FINISHED
            '4': INTERRUPTED
            '5': RETRY
            '6': SKIPPED
        runStartTime:
          type: string
          description: 執行起始時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        runEndTime:
          type: string
          description: 執行結束時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        envName:
          type: string
          description: 執行環境
        statusOfCases:
          type: object
          additionalProperties:
            type: integer
            format: int64
          description: 成功數/失敗數/錯誤數
        totalCases:
          type: integer
          format: int32
          description: 案例總數
        passRate:
          type: number
          description: 案例通過率
        files:
          type: array
          items:
            $ref: '#/components/schemas/QaU001Vo'
          description: 檔案路徑
        runSuites:
          type: array
          items:
            $ref: '#/components/schemas/RunSuiteDetailDo'
        duration:
          type: integer
          format: int64
        totalSuites:
          type: integer
          format: int32
    QaU001Vo:
      type: object
      properties:
        transId:
          type: string
        qaFileNum:
          type: integer
          format: int64
          description: 流水號 (not null)
        createAt:
          type: string
          description: 建立時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        createBy:
          type: integer
          format: int64
          description: 建立人員
        updateAt:
          type: string
          description: 異動日期 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        updateBy:
          type: integer
          format: int64
          description: 異動人員
        sourceNum:
          type: integer
          format: int64
          description: 來源流水號 (not null)
        sourceType:
          type: string
          description: '來源類型: 1: 執行測試(qa_c007) source_num = run_num (not null)'
        fileName:
          type: string
          description: 檔案名稱
        remoteFilePath:
          type: string
          description: 遠端檔案路徑
        currentUploadNum:
          type: integer
          format: int64
          description: 將移除
        createByName:
          type: string
        updateByName:
          type: string
        comId:
          type: string
        comNum:
          type: integer
          format: int64
        uploadNum:
          type: integer
          format: int64
          description: temp instead of QaU002 uploadNum
    RunSuiteDetailDo:
      type: object
      properties:
        suite:
          $ref: '#/components/schemas/SuitePo'
        statusOfCases:
          type: object
          additionalProperties:
            type: integer
            format: int64
        runCases:
          type: array
          items:
            $ref: '#/components/schemas/RunCaseDo'
    RunCaseDo:
      type: object
      properties:
        casePo:
          $ref: '#/components/schemas/CasePo'
        runCaseNum:
          type: integer
          format: int64
        caseStatus:
          type: string
          description: 狀態代碼為字串：0=SKIPPED, 1=NEW, 2=RUNNING, 3=PASSED, 4=FAILED, 5=ERROR, 6=DEPENDENT_FAILED, 7=ABORTED。代碼表描述既有常數，不代表輸入已做
            enum 驗證。
          x-code-values:
            '0': SKIPPED
            '1': NEW
            '2': RUNNING
            '3': PASSED
            '4': FAILED
            '5': ERROR
            '6': DEPENDENT_FAILED
            '7': ABORTED
        caseStartTime:
          type: string
          description: 執行起始時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        caseEndTime:
          type: string
          description: 執行結束時間 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。
        duration:
          type: integer
          format: int64
        caseThrowable:
          type: string
        caseSteps:
          type: array
          items:
            $ref: '#/components/schemas/RunStepDo'
    RunStepDo:
      type: object
      properties:
        stepOrder:
          type: integer
          format: int32
        stepType:
          type: string
        stepExec:
          $ref: '#/components/schemas/QaC013Vo_Po_StepExecPo'
        stepResult:
          type: string
        stepError:
          type: string
        stepStatus:
          type: string
          x-code-values:
            '1': PASSED
            '2': FAILED
            '3': ERROR
            '4': DISABLED
          description: 狀態代碼為字串：1=PASSED, 2=FAILED, 3=ERROR, 4=DISABLED。代碼表描述既有常數，不代表輸入已做 enum 驗證。
        runStepNum:
          type: integer
          format: int64
        stepStartTime:
          type: string
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        stepEndTime:
          type: string
          description: ' 時間以既有字串傳遞；常用 yyyy-MM-dd HH:mm:ss.SSS，不宣告 RFC 3339 date-time。'
        duration:
          type: integer
          format: int64
        postProcResp:
          type: array
          items:
            $ref: '#/components/schemas/PostProcRespDo'
        stepName:
          type: string
    PostProcRespDo:
      type: object
      properties:
        order:
          type: integer
          format: int32
          description: 順序
        status:
          type: string
          description: 通過、失敗、中斷、未執行
        message:
          type: string
          description: 訊息
        statusLabel:
          type: string
    GetRunCaseCoRequestValidated:
      type: object
      properties:
        projectCode:
          type: string
          description: 專案編號
          minLength: 1
          pattern: \S
        runCaseNum:
          type: integer
          format: int64
      required:
      - projectCode
      - runCaseNum
      description: JavaBean 請求欄位；Controller 啟用 @Valid；required 依欄位註記，巢狀物件僅在 @Valid cascade 存在時套用。
    QaC013Vo_Po_HttpStepPo:
      type: object
      properties:
        qaSource:
          type: string
        method:
          type: string
        url:
          type: string
        input:
          $ref: '#/components/schemas/QaC013Vo_Po_HttpStepPo_HttpRequestPo'
        output:
          $ref: '#/components/schemas/QaC013Vo_Po_HttpStepPo_HttpResponsePo'
        postProcPos:
          type: array
          items:
            $ref: '#/components/schemas/HttpPostProcPo'
      description: HTTP 步驟以 postProcPos 作斷言。output 雖有欄位，現有 handler 不使用它驗證結果；input 的 params/headers 應提供空 object 而非
        null。
    QaC013Vo_Po_HttpStepPo_HttpRequestPo:
      type: object
      properties:
        params:
          type: object
          additionalProperties:
            type: string
        headers:
          type: object
          additionalProperties:
            type: string
        body:
          type: string
    QaC013Vo_Po_HttpStepPo_HttpResponsePo:
      type: object
      properties:
        status:
          type: integer
          format: int32
        body:
          type: object
          additionalProperties: {}
        headers:
          type: object
          additionalProperties:
            type: string
    HttpPostProcPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. http status assertion, 2. json assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
      description: 後處理的共同欄位；實際型別由 targetObject 決定，子型別詳見 x-known-subtypes。
      x-known-subtypes:
      - $ref: '#/components/schemas/HttpPostProcPo_JsonAssertionPostProcPo'
      - $ref: '#/components/schemas/HttpPostProcPo_HttpStatusAssertionPostProcPo'
      - $ref: '#/components/schemas/HttpPostProcPo_HttpWaitPostProcPo'
    QaC013Vo_Po_SqlCompareStepPo:
      type: object
      properties:
        qaSource:
          type: string
        schema:
          type: string
        table:
          type: string
          description: '對比檔名稱, 須另外建立相同名稱的預期結果Table (命名規則: DBxx.DTxxxxxx_QA)'
        columns:
          type: array
          items:
            type: string
          description: 要比對的欄位名稱，可自行輸入，並以逗號分隔欄為
        whereCond:
          type: string
          description: 查詢測試未通過紀錄的SQL條件， 執行結果table.column (XXTABLE.xxxx)預期結果table.column (XXTABLE_QA.xxxx)，
        joinMode:
          type: string
          description: '比對方式: 1. LEFT JOIN(以執行結果為主)，2. RIGHT JOIN(以預期結果為主)'
        joinOnCond:
          type: string
          description: ON 條件, 如未輸入則會以PK為主進行比對
        columnInfoList:
          type: array
          items:
            $ref: '#/components/schemas/QaC013Vo_Po_Column'
          description: 要比對的欄位名稱，可自行輸入，並以逗號分隔欄為
    QaC013Vo_Po_PreSqlStepPo:
      type: object
      properties:
        qaSource:
          type: string
          description: 資料來源
        sqlScript:
          type: string
          description: sql
        logEnabled:
          type: string
          description: log sql 結果
        resultToVarPos:
          type: array
          items:
            $ref: '#/components/schemas/QaC013Vo_Po_ResultToVarPo'
          description: sql 結果轉變數
    QaC013Vo_Po_ResultToVarPo:
      type: object
      properties:
        varKey:
          type: string
        varScope:
          type: integer
          format: int32
        jsonPath:
          type: string
    QaC013Vo_Po_SqlTransferStepPo:
      type: object
      properties:
        qaSource:
          type: string
        mode:
          type: integer
          format: int32
          description: 倒檔操作模式 1. DEL_INS, 2.INS
        source:
          type: string
          description: '來源檔 SCHEMA.TABLE: 1. 要倒入的TABLE 2. 要備份的TABLE'
        target:
          type: string
          description: 目的檔 SCHEMA.TABLE 1. 測試資料的TABLE 2. 備份TABLE
    QaC013Vo_Po_BackupTransferStepPo:
      type: object
      properties:
        dataSource:
          type: string
        mode:
          type: integer
          format: int32
          description: 倒檔操作模式 1. DEL_INS, 2. UPD, 3.INS
        source:
          type: string
          description: '來源檔 SCHEMA.TABLE: 要備份的TABLE'
        target:
          type: string
          description: 目的檔 SCHEMA.TABLE 備份TABLE
      deprecated: true
      description: 舊型別 5，執行 enum 已停用；保留供既有資料辨識，不供新增使用。
    QaC013Vo_Po_InvokeStepPo:
      type: object
      properties:
        qaSource:
          type: string
        systemName:
          type: string
          description: 系統別
        className:
          type: string
        beanName:
          type: string
        methodName:
          type: string
          description: 方法名稱
        args:
          type: array
          items:
            $ref: '#/components/schemas/QaC013Vo_Po_InvokeStepPo_InvokeArgPo'
          description: 輸入參數
        postProcPos:
          type: array
          items:
            $ref: '#/components/schemas/InvokePostProcPo'
    QaC013Vo_Po_InvokeStepPo_InvokeArgPo:
      type: object
      properties:
        type:
          type: string
          description: 參數名稱，要明確知道是什麼class
        body:
          type: string
          description: 參數實體
    InvokePostProcPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. result assertion, 2. exception assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
      description: 後處理的共同欄位；實際型別由 targetObject 決定，子型別詳見 x-known-subtypes。
      x-known-subtypes:
      - $ref: '#/components/schemas/InvokePostProcPo_ExceptionAssertionPo'
      - $ref: '#/components/schemas/InvokePostProcPo_ResultAssertionPo'
      - $ref: '#/components/schemas/InvokePostProcPo_InvokeWaitProcessPo'
    QaC013Vo_Po_SqlSelectCompareStepPo:
      type: object
      properties:
        qaSource:
          type: string
        expectedSqlScript:
          type: string
          description: 預期結果sql
        resultSqlScript:
          type: string
          description: 實際結果sql
        columnInfoList:
          type: array
          items:
            $ref: '#/components/schemas/QaC013Vo_Po_Column'
          description: 要比對的欄位名稱，可自行輸入，並以逗號分隔欄為
        whereCond:
          type: string
          description: SQL條件
        joinMode:
          type: string
          description: '比對方式: 1. LEFT JOIN(以執行結果為主)，2. RIGHT JOIN(以預期結果為主)'
        joinOnCond:
          type: string
          description: ON 條件
    HttpPostProcPo_JsonAssertionPostProcPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. http status assertion, 2. json assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
        expression:
          type: string
          description: json path
        assertion:
          type: string
          description: equals等等
        expected:
          type: string
          description: 預期結果
    HttpPostProcPo_HttpStatusAssertionPostProcPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. http status assertion, 2. json assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
        expected:
          type: integer
          format: int32
          description: 預期狀態 200
    HttpPostProcPo_HttpWaitPostProcPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. http status assertion, 2. json assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
        waitMs:
          type: integer
          format: int32
      description: ' 等待型別在現有處理器 enum/switch 停用，不可僅因模型存在就提供為可執行功能。'
    InvokePostProcPo_ExceptionAssertionPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. result assertion, 2. exception assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
        type:
          type: string
        assertion:
          type: string
        message:
          type: string
    InvokePostProcPo_ResultAssertionPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. result assertion, 2. exception assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
        type:
          type: string
        body:
          type: string
    InvokePostProcPo_InvokeWaitProcessPo:
      type: object
      properties:
        name:
          type: string
          description: 名稱(非必填)
        targetObject:
          type: string
          description: 1. result assertion, 2. exception assertion
        order:
          type: integer
          format: int32
          description: 順序
        enabled:
          type: string
          description: 是否啟用
        waitMs:
          type: integer
          format: int32
      description: ' 等待型別在現有處理器 enum/switch 停用，不可僅因模型存在就提供為可執行功能。'
    ErrorDetail:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    ErrorResp:
      type: object
      properties:
        status:
          type: string
          enum:
          - fail
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetail'
      required:
      - status
      - errors
    ProblemDetails:
      type: object
      description: 目標錯誤格式，尚未實作。四個必填欄位為本專案 profile，比 RFC 9457 基本規定更嚴格。
      x-implementation-status: proposed
      required:
      - type
      - title
      - status
      - detail
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
          minimum: 100
          maximum: 599
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        code:
          type: string
          description: 現有 E998／E999 等業務碼；本合約擴充。
        invalid_params:
          type: array
          items:
            type: object
            required:
            - name
            - reason
            properties:
              name:
                type: string
              reason:
                type: string
  securitySchemes:
    RawJwt:
      type: apiKey
      in: header
      name: Authorization
      description: 非 QA 設定的 /api/ JWT filter 直接解析 Authorization 值；原始 JWT，不自行加 Bearer。
    QaBasic:
      type: http
      scheme: basic
      description: QA security 設定採 HTTP Basic 並要求 HTTPS。與 RawJwt 是不同部署條件，不保證同時可用。
  responses:
    BadRequest:
      description: 400：Controller advice 處理的格式、參數驗證、重複／不存在／相依檢查錯誤。未找到資源在此 advice 可為 400，不統一改為 404。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResp'
    Unauthorized:
      description: 401：Controller AccessDeniedException 為 ErrorResp；驗證 filter 的 401 body 未確認。
      content:
        application/json:
          schema:
            anyOf:
            - $ref: '#/components/schemas/ErrorResp'
            - description: filter／容器產生的未確認 body
    UnsupportedMediaType:
      description: 415：進入 Crystal advice 的不支援媒體格式。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResp'
    ServerError:
      description: 500：未預期例外、資料存取、SQL 或 ModException。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResp'
    ChannelClosed:
      description: 503：ClosedChannelException handler 回 null，通常無回應本文。
  parameters:
    IdempotencyKey:
      name: X-Idempotency-Key
      in: header
      required: false
      description: 目標 UUIDv4 冪等鍵，目前沒有服務端處理；傳入此 header 不會防止重複執行。
      x-implementation-status: proposed
      schema:
        type: string
        format: uuid
        pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
