{
  "id": 51001,
  "approval_no": "APP-202511100201",
  "transaction": {
    "id": 91001,
    "transaction_no": "IN-20251110-0001"
  },
  "status": {
    "id": 2,
    "name": "진행중",
    "color": "#3B82F6",
    "is_blocking_next": true,
    "is_terminal": false
  },
  "current_step": {
    "id": 72003,
    "step_order": 3,
    "status": {
      "id": 2,
      "name": "진행중",
      "is_blocking_next": true,
      "is_terminal": false
    },
    "approver": {
      "id": 104,
      "employee_id": "E20250104",
      "employee_no": "E20250104",
      "name": "박팀장"
    },
    "assigned_at": "2025-09-18T07:10:00Z",
    "decided_at": null,
    "note": null
  },
  "requester": {
    "id": 77,
    "employee_id": "E20250077",
    "employee_no": "E20250077",
    "name": "김상신"
  },
  "requested_at": "2025-09-18T06:55:00Z",
  "decided_at": null,
  "note": "입고 5단계 결재",
  "is_active": true,
  "is_deleted": false,
  "steps": [
    {
      "id": 72001,
      "step_order": 1,
      "status": {
        "id": 3,
        "name": "승인",
        "is_blocking_next": false,
        "is_terminal": false
      },
      "approver": {
        "id": 101,
        "employee_id": "E20250101",
        "employee_no": "E20250101",
        "name": "이검토"
      },
      "assigned_at": "2025-09-18T06:58:00Z",
      "decided_at": "2025-09-18T06:59:30Z",
      "note": "조건부 승인"
    },
    {
      "id": 72002,
      "step_order": 2,
      "status": {
        "id": 3,
        "name": "승인",
        "is_blocking_next": false,
        "is_terminal": false
      },
      "approver": {
        "id": 102,
        "employee_id": "E20250102",
        "employee_no": "E20250102",
        "name": "최검수"
      },
      "assigned_at": "2025-09-18T07:00:00Z",
      "decided_at": "2025-09-18T07:04:10Z",
      "note": null
    },
    {
      "id": 72003,
      "step_order": 3,
      "status": {
        "id": 2,
        "name": "진행중",
        "is_blocking_next": true,
        "is_terminal": false
      },
      "approver": {
        "id": 104,
        "employee_id": "E20250104",
        "employee_no": "E20250104",
        "name": "박팀장"
      },
      "assigned_at": "2025-09-18T07:10:00Z",
      "decided_at": null,
      "note": null
    },
    {
      "id": 72004,
      "step_order": 4,
      "status": {
        "id": 1,
        "name": "대기",
        "is_blocking_next": true,
        "is_terminal": false
      },
      "approver": {
        "id": 105,
        "employee_id": "E20250105",
        "employee_no": "E20250105",
        "name": "정차장"
      },
      "assigned_at": "2025-09-18T07:10:00Z",
      "decided_at": null,
      "note": null
    },
    {
      "id": 72005,
      "step_order": 5,
      "status": {
        "id": 1,
        "name": "대기",
        "is_blocking_next": true,
        "is_terminal": false
      },
      "approver": {
        "id": 201,
        "employee_id": "E20250201",
        "employee_no": "E20250201",
        "name": "한임원"
      },
      "assigned_at": "2025-09-18T07:10:00Z",
      "decided_at": null,
      "note": null
    }
  ],
  "histories": [
    {
      "id": 93001,
      "action": {
        "id": 1,
        "name": "상신"
      },
      "from_status": null,
      "to_status": {
        "id": 1,
        "name": "대기",
        "is_blocking_next": true,
        "is_terminal": false
      },
      "approver": {
        "id": 77,
        "employee_id": "E20250077",
        "employee_no": "E20250077",
        "name": "김상신"
      },
      "action_at": "2025-09-18T06:55:00Z",
      "note": null
    },
    {
      "id": 93002,
      "action": {
        "id": 2,
        "name": "승인"
      },
      "from_status": {
        "id": 1,
        "name": "대기",
        "is_blocking_next": true,
        "is_terminal": false
      },
      "to_status": {
        "id": 3,
        "name": "승인",
        "is_blocking_next": false,
        "is_terminal": false
      },
      "approver": {
        "id": 101,
        "employee_id": "E20250101",
        "employee_no": "E20250101",
        "name": "이검토"
      },
      "action_at": "2025-09-18T06:59:30Z",
      "note": "조건 수용"
    },
    {
      "id": 93003,
      "action": {
        "id": 2,
        "name": "승인"
      },
      "from_status": {
        "id": 1,
        "name": "대기",
        "is_blocking_next": true,
        "is_terminal": false
      },
      "to_status": {
        "id": 3,
        "name": "승인",
        "is_blocking_next": false,
        "is_terminal": false
      },
      "approver": {
        "id": 102,
        "employee_id": "E20250102",
        "employee_no": "E20250102",
        "name": "최검수"
      },
      "action_at": "2025-09-18T07:04:10Z",
      "note": null
    }
  ],
  "created_at": "2025-09-18T06:55:00Z",
  "updated_at": "2025-09-18T07:10:00Z",
  "visibility": {
    "allowed_roles": [
      "requester",
      "completed_approver"
    ],
    "restricted_roles": [
      "pending_approver",
      "external"
    ]
  },
  "permissions": {
    "can_recall": true,
    "can_resubmit": false,
    "can_comment": true
  }
}
