{
  "name": "Items API CRUD Flow Test",
  "description": "통합 품목(Items) API 전체 CRUD 플로우 테스트 - 목록조회, 생성, 수정, 삭제, 일괄삭제",
  "version": "1.0",
  "config": {
    "baseUrl": "",
    "timeout": 30000,
    "stopOnFailure": true
  },
  "variables": {
    "user_id": "{{$env.FLOW_TESTER_USER_ID}}",
    "user_pwd": "{{$env.FLOW_TESTER_USER_PWD}}",
    "test_code": "FLOWTEST-{{$timestamp}}",
    "test_name": "플로우테스트_품목_{{$timestamp}}"
  },
  "steps": [
    {
      "id": "login",
      "name": "1. 로그인",
      "method": "POST",
      "endpoint": "/login",
      "body": {
        "user_id": "{{user_id}}",
        "user_pwd": "{{user_pwd}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.access_token": "@isString"
        }
      },
      "extract": {
        "token": "$.access_token"
      }
    },
    {
      "id": "list_items_before",
      "name": "2. 품목 목록 조회 (전체)",
      "method": "GET",
      "endpoint": "/items",
      "params": {
        "size": "20"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "list_items_fg",
      "name": "3. 품목 목록 조회 (FG 필터)",
      "method": "GET",
      "endpoint": "/items",
      "params": {
        "type": "FG",
        "size": "10"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "create_item_fg",
      "name": "4. 완제품(FG) 생성",
      "method": "POST",
      "endpoint": "/items",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "body": {
        "code": "{{test_code}}-FG",
        "name": "{{test_name}}_완제품",
        "product_type": "FG",
        "unit": "EA",
        "description": "Flow Test 완제품",
        "is_sellable": true,
        "is_purchasable": false,
        "is_producible": true,
        "safety_stock": 10,
        "lead_time": 5
      },
      "expect": {
        "status": [200, 201],
        "jsonPath": {
          "$.success": true,
          "$.data.id": "@isNumber"
        }
      },
      "extract": {
        "fg_id": "$.data.id",
        "fg_code": "$.data.code"
      }
    },
    {
      "id": "create_item_pt",
      "name": "5. 반제품(PT) 생성",
      "method": "POST",
      "endpoint": "/items",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "body": {
        "code": "{{test_code}}-PT",
        "name": "{{test_name}}_반제품",
        "product_type": "PT",
        "unit": "EA",
        "description": "Flow Test 반제품",
        "is_sellable": false,
        "is_purchasable": false,
        "is_producible": true,
        "safety_stock": 20
      },
      "expect": {
        "status": [200, 201],
        "jsonPath": {
          "$.success": true,
          "$.data.id": "@isNumber"
        }
      },
      "extract": {
        "pt_id": "$.data.id"
      }
    },
    {
      "id": "create_item_rm",
      "name": "6. 원자재(RM) 생성",
      "method": "POST",
      "endpoint": "/items",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "body": {
        "code": "{{test_code}}-RM",
        "name": "{{test_name}}_원자재",
        "product_type": "RM",
        "unit": "KG",
        "description": "Flow Test 원자재",
        "is_sellable": false,
        "is_purchasable": true,
        "is_producible": false,
        "material_code": "MAT-{{$timestamp}}",
        "specification": "100mm x 50mm",
        "is_inspection": "Y"
      },
      "expect": {
        "status": [200, 201],
        "jsonPath": {
          "$.success": true,
          "$.data.id": "@isNumber"
        }
      },
      "extract": {
        "rm_id": "$.data.id"
      }
    },
    {
      "id": "show_item_fg",
      "name": "7. 완제품(FG) 단건 조회",
      "method": "GET",
      "endpoint": "/items/{{create_item_fg.fg_id}}",
      "params": {
        "item_type": "FG"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true,
          "$.data.id": "@isNumber"
        }
      }
    },
    {
      "id": "show_item_by_code",
      "name": "8. Code 기반 품목 조회",
      "method": "GET",
      "endpoint": "/items/code/{{create_item_fg.fg_code}}",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "show_item_with_price",
      "name": "9. 단가 포함 품목 조회",
      "method": "GET",
      "endpoint": "/items/{{create_item_fg.fg_id}}",
      "params": {
        "item_type": "FG",
        "include_price": "true"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "update_item_fg",
      "name": "10. 완제품(FG) 수정",
      "method": "PUT",
      "endpoint": "/items/{{create_item_fg.fg_id}}",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "body": {
        "item_type": "FG",
        "name": "{{test_name}}_완제품_수정됨",
        "description": "Flow Test 완제품 - 수정됨",
        "safety_stock": 15,
        "lead_time": 7
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "update_item_rm",
      "name": "11. 원자재(RM) 수정",
      "method": "PUT",
      "endpoint": "/items/{{create_item_rm.rm_id}}",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "body": {
        "item_type": "RM",
        "name": "{{test_name}}_원자재_수정됨",
        "specification": "150mm x 75mm",
        "remarks": "수정된 원자재 비고"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "verify_update",
      "name": "12. 수정 확인 - 단건 재조회",
      "method": "GET",
      "endpoint": "/items/{{create_item_fg.fg_id}}",
      "params": {
        "item_type": "FG"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "search_items",
      "name": "13. 품목 검색 (키워드)",
      "method": "GET",
      "endpoint": "/items",
      "params": {
        "q": "플로우테스트",
        "size": "20"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "delete_item_pt",
      "name": "14. 반제품(PT) 단건 삭제",
      "method": "DELETE",
      "endpoint": "/items/{{create_item_pt.pt_id}}",
      "params": {
        "item_type": "PT"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "batch_delete_items",
      "name": "15. 품목 일괄 삭제 (FG, RM)",
      "method": "DELETE",
      "endpoint": "/items/batch",
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "body": {
        "item_type": "FG",
        "ids": ["{{create_item_fg.fg_id}}"]
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "delete_item_rm",
      "name": "16. 원자재(RM) 삭제",
      "method": "DELETE",
      "endpoint": "/items/{{create_item_rm.rm_id}}",
      "params": {
        "item_type": "RM"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    },
    {
      "id": "verify_cleanup",
      "name": "17. 정리 확인 - 목록 재조회",
      "method": "GET",
      "endpoint": "/items",
      "params": {
        "q": "FLOWTEST",
        "size": "20"
      },
      "headers": {
        "Authorization": "Bearer {{login.token}}"
      },
      "expect": {
        "status": [200],
        "jsonPath": {
          "$.success": true
        }
      }
    }
  ]
}