HstockPlus

๊ณต๊ธ‰์—…์ฒด API ๊ฐ€์ด๋“œ: ์ˆ˜๋™ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ

Sarah JohnsonSarah Johnson
โ€ข2026๋…„ 1์›” 5์ผโ€ข19 ๋ถ„ ์ฝ๊ธฐโ€ข172 ์กฐํšŒ

ํ•„์ˆ˜ ์กฐ๊ฑด

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ํ™•์ธํ•˜์„ธ์š”:

  • API ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ณต๊ธ‰์—…์ฒด ๊ณ„์ •
  • API ํ‚ค (๊ณต๊ธ‰์—…์ฒด ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ƒ์„ฑ ๊ฐ€๋Šฅ)
  • Admin API v2 ์—”๋“œํฌ์ธํŠธ ์ ‘๊ทผ ๊ถŒํ•œ

๋‹จ๊ณ„ 1: API ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ

  1. ๊ณต๊ธ‰์—…์ฒด ๋Œ€์‹œ๋ณด๋“œ์— ๋กœ๊ทธ์ธํ•˜์„ธ์š”
  2. API ์„ค์ •(/api-settings)์œผ๋กœ ์ด๋™ํ•˜์„ธ์š”
  3. API ํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด "API ํ‚ค ์ƒ์„ฑ"์„ ํด๋ฆญํ•˜์„ธ์š”
  4. API ํ‚ค๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜์„ธ์š”

์ค‘์š”: API ํ‚ค๋Š” ๋น„๋ฐ€๋กœ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐœ์ ์œผ๋กœ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์„ธ์š”.

๋‹จ๊ณ„ 2: ์ˆ˜๋™ ์ฃผ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ

GET /api/admin/v2/orders ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ธฐ ์ค‘ ๋ฐ ์ฒ˜๋ฆฌ ์ค‘์ธ ์ˆ˜๋™ ์ฃผ๋ฌธ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

API ์š”์ฒญ

curl -X GET "https://your-domain.com/api/admin/v2/orders?status=pending,processing&productType=manual&limit=50&offset=0" \
  -H "X-Api-Key: YOUR_API_KEY"

์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜

  • status (์„ ํƒ์‚ฌํ•ญ): ์ฃผ๋ฌธ ์ƒํƒœ ํ•„ํ„ฐ. ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’ ์ง€์›: pending,processing
  • productType (์ˆ˜๋™ ์ฃผ๋ฌธ ํ•„์ˆ˜): manual๋กœ ์„ค์ •
  • entityType (์„ ํƒ์‚ฌํ•ญ): product ๋˜๋Š” smm_service๋กœ ํ•„ํ„ฐ๋ง
  • subCategory (์„ ํƒ์‚ฌํ•ญ): ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„์œผ๋กœ ํ•„ํ„ฐ๋ง
  • limit (์„ ํƒ์‚ฌํ•ญ): ๋ฐ˜ํ™˜ํ•  ์ฃผ๋ฌธ ์ˆ˜ (์ตœ๋Œ€ 500, ๊ธฐ๋ณธ๊ฐ’ 50)
  • offset (์„ ํƒ์‚ฌํ•ญ): ํŽ˜์ด์ง€๋„ค์ด์…˜ ์˜คํ”„์…‹ (๊ธฐ๋ณธ๊ฐ’ 0)

์‘๋‹ต ์˜ˆ์‹œ

{
  "orders": [
    {
      "id": 12345,
      "order": 12345,
      "status": "pending",
      "paymentStatus": "completed",
      "quantity": 10,
      "user": {
        "id": "507f1f77bcf86cd799439011",
        "email": "customer@example.com",
        "name": "John Doe"
      },
      "items": [
        {
          "product": {
            "id": "507f1f77bcf86cd799439012",
            "name": "Instagram Followers",
            "type": "product"
          },
          "quantity": 10,
          "unitPrice": 5.00,
          "totalPrice": 50.00
        }
      ],
      "createdAt": "2024-01-01T10:00:00.000Z"
    }
  ],
  "count": 1,
  "total": 1
}

์ค‘์š” ์‚ฌํ•ญ

  • paymentStatus: "completed"์ธ ์ฃผ๋ฌธ๋งŒ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค
  • ์ค‘๋ณต ์ฒ˜๋ฆฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋ฌธ์ด ํ•„ํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค (30๋ถ„ ๊ฐ„๊ฒฉ)
  • ๊ณต๊ธ‰์—…์ฒด๋กœ์„œ ๊ท€ํ•˜์—๊ฒŒ ์†ํ•œ ์ œํ’ˆ/์„œ๋น„์Šค์˜ ์ฃผ๋ฌธ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๋‹จ๊ณ„ 3: ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๋ฐ ๊ณ„์ • ์ œ์ถœ

์ฃผ๋ฌธ์„ ๊ฐ€์ ธ์˜จ ํ›„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ณ„์ • ์ž๊ฒฉ ์ฆ๋ช…์„ ์ค€๋น„ํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ POST /api/admin/v2/orders-update ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์ •์„ ์ œ์ถœํ•˜๊ณ  ์ฃผ๋ฌธ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

API ์š”์ฒญ

curl -X POST "https://your-domain.com/api/admin/v2/orders-update" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order": 12345,
    "status": "completed",
    "accounts": [
      "username1:password1",
      "username2:password2",
      "username3:password3"
    ],
    "supplierOrderId": "SUP-ORDER-12345"
  }'

์š”์ฒญ ๋ณธ๋ฌธ ๋งค๊ฐœ๋ณ€์ˆ˜

  • order (ํ•„์ˆ˜): ์ฃผ๋ฌธ ID (์ˆซ์ž)
  • status (์„ ํƒ์‚ฌํ•ญ): ์ƒˆ๋กœ์šด ์ฃผ๋ฌธ ์ƒํƒœ. ์œ ํšจํ•œ ๊ฐ’: pending, processing, completed, partial, cancelled, error
  • accounts (์„ ํƒ์‚ฌํ•ญ, ์ œํ’ˆ ์ฃผ๋ฌธ์šฉ): "username:password" ๋˜๋Š” "email:password" ํ˜•์‹์˜ ๊ณ„์ • ์ž๊ฒฉ ์ฆ๋ช… ๋ฐฐ์—ด
  • supplierOrderId (์„ ํƒ์‚ฌํ•ญ): ์ถ”์ ์„ ์œ„ํ•œ ๋‚ด๋ถ€ ์ฃผ๋ฌธ ID

๊ณ„์ • ํ˜•์‹

์ œํ’ˆ ์ฃผ๋ฌธ์˜ ๊ฒฝ์šฐ ๊ณ„์ •์€ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์€ ํ•˜๋‚˜์˜ ๊ณ„์ •์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค:

  • ํ˜•์‹: "username:password" ๋˜๋Š” "email:password"
  • ์˜ˆ์‹œ: ["user1:pass123", "user2:pass456"]
  • ์ˆ˜๋Ÿ‰: ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ณ„์ •์„ ์ œ๊ณตํ•˜์„ธ์š”

์™„์ „ํ•œ ์›Œํฌํ”Œ๋กœ ์˜ˆ์‹œ

๋‹ค์Œ์€ JavaScript/Node.js๋ฅผ ์‚ฌ์šฉํ•œ ์™„์ „ํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

const axios = require('axios');

const API_BASE_URL = 'https://your-domain.com/api/admin/v2';
const API_KEY = 'YOUR_API_KEY';

// ๋‹จ๊ณ„ 1: ๋Œ€๊ธฐ ์ค‘ ๋ฐ ์ฒ˜๋ฆฌ ์ค‘์ธ ์ˆ˜๋™ ์ฃผ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ
async function getOrders() {
  try {
    const response = await axios.get(`${API_BASE_URL}/orders`, {
      params: {
        status: 'pending,processing',
        productType: 'manual',
        limit: 50,
        offset: 0
      },
      headers: {
        'X-Api-Key': API_KEY
      }
    });
    
    return response.data.orders;
  } catch (error) {
    console.error('์ฃผ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ค๋ฅ˜:', error.response?.data || error.message);
    throw error;
  }
}

// ๋‹จ๊ณ„ 2: ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๋ฐ ๊ณ„์ • ์ œ์ถœ
async function updateOrder(orderId, accounts, supplierOrderId) {
  try {
    const response = await axios.post(
      `${API_BASE_URL}/orders-update`,
      {
        order: orderId,
        status: 'completed',
        accounts: accounts,
        supplierOrderId: supplierOrderId
      },
      {
        headers: {
          'X-Api-Key': API_KEY,
          'Content-Type': 'application/json'
        }
      }
    );
    
    return response.data;
  } catch (error) {
    console.error('์ฃผ๋ฌธ ์—…๋ฐ์ดํŠธ ์˜ค๋ฅ˜:', error.response?.data || error.message);
    throw error;
  }
}

// ๋ฉ”์ธ ์›Œํฌํ”Œ๋กœ
async function processOrders() {
  try {
    // ์ฃผ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ
    const orders = await getOrders();
    console.log(`์ฒ˜๋ฆฌํ•  ์ฃผ๋ฌธ ${orders.length}๊ฐœ ๋ฐœ๊ฒฌ`);
    
    // ๊ฐ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ
    for (const order of orders) {
      console.log(`์ฃผ๋ฌธ ${order.id} ์ฒ˜๋ฆฌ ์ค‘...`);
      
      // ๊ณ„์ • ์ค€๋น„ (์—ฌ๊ธฐ์„œ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ถ€๋ถ„)
      const accounts = [
        'user1:pass1',
        'user2:pass2',
        // ... order.quantity์™€ ์ผ์น˜ํ•˜๋Š” ๋” ๋งŽ์€ ๊ณ„์ •
      ];
      
      // ๊ณ„์ •์œผ๋กœ ์ฃผ๋ฌธ ์—…๋ฐ์ดํŠธ ๋ฐ ์™„๋ฃŒ๋กœ ํ‘œ์‹œ
      const updatedOrder = await updateOrder(
        order.id,
        accounts,
        `SUP-${order.id}`
      );
      
      console.log(`์ฃผ๋ฌธ ${order.id} ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋จ`);
    }
  } catch (error) {
    console.error('์›Œํฌํ”Œ๋กœ ์˜ค๋ฅ˜:', error);
  }
}

// ์›Œํฌํ”Œ๋กœ ์‹คํ–‰
processOrders();

์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜

  1. ์ž˜๋ชป๋œ API ํ‚ค
    {
          "error": "INVALID_API_KEY",
          "message": "์ž˜๋ชป๋œ API ํ‚ค"
        }

    ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: API ํ‚ค๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ํ™œ์„ฑ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”.

  2. ์ฃผ๋ฌธ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ
    {
          "error": "ORDER_NOT_FOUND",
          "message": "์ฃผ๋ฌธ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ"
        }

    ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ฃผ๋ฌธ ID๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ท€ํ•˜์—๊ฒŒ ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  3. ์ ‘๊ทผ ๊ฑฐ๋ถ€๋จ
    {
          "error": "ACCESS_DENIED",
          "message": "์ด ์ฃผ๋ฌธ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค"
        }

    ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ฃผ๋ฌธ์— ๊ท€ํ•˜์—๊ฒŒ ์†ํ•œ ์ œํ’ˆ/์„œ๋น„์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  4. ์ž˜๋ชป๋œ ๊ณ„์ •
    {
          "error": "INVALID_ACCOUNTS",
          "message": "์ค‘๋ณต ์ œ๊ฑฐ ํ›„ ์œ ํšจํ•œ ๊ณ„์ •์ด ์ œ๊ณต๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค"
        }

    ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๊ณ„์ • ๋ฐฐ์—ด์ด ๋น„์–ด ์žˆ์ง€ ์•Š๊ณ  ์œ ํšจํ•œ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋ชจ๋ฒ” ์‚ฌ๋ก€

  1. ํด๋ง ๋นˆ๋„: ๋„ˆ๋ฌด ์ž์ฃผ ํด๋งํ•˜์ง€ ๋งˆ์„ธ์š”. API๋Š” 30๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์ค‘๋ณต ์ฒ˜๋ฆฌ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ: ํ•ญ์ƒ ์ ์ ˆํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ์žฌ์‹œ๋„ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์„ธ์š”.
  3. ๊ณ„์ • ๊ฒ€์ฆ: ์ œ์ถœํ•˜๊ธฐ ์ „์— ๊ณ„์ •์ด ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์ธ์ง€ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ฆํ•˜์„ธ์š”.
  4. ์ฃผ๋ฌธ ์ถ”์ : ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์ฃผ๋ฌธ์„ ์ถ”์ ํ•˜๋ ค๋ฉด supplierOrderId๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  5. ์ƒํƒœ ์—…๋ฐ์ดํŠธ: ์ƒํƒœ๋ฅผ ์ ์ง„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
    • ์ฒ˜๋ฆฌ ์‹œ์ž‘ ์‹œ ๋จผ์ € processing์œผ๋กœ ์„ค์ •
    • ๊ณ„์ • ์ค€๋น„ ์™„๋ฃŒ ์‹œ completed๋กœ ์„ค์ •
  6. ๋ถ€๋ถ„ ์ฃผ๋ฌธ: ์ฃผ๋ฌธ์˜ ์ผ๋ถ€๋งŒ ์ดํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ƒํƒœ๋ฅผ partial๋กœ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณ„์ •์„ ์ œ์ถœํ•˜์„ธ์š”.

์š”์•ฝ

์ „์ฒด ์›Œํฌํ”Œ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ์ฃผ๋ฌธ ๊ฐ€์ ธ์˜ค๊ธฐ: GET /api/admin/v2/orders?status=pending,processing&productType=manual
  2. ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ: ๊ฐ ์ฃผ๋ฌธ์— ๋Œ€ํ•œ ๊ณ„์ • ์ค€๋น„
  3. ๊ณ„์ • ์ œ์ถœ: ๊ณ„์ •๊ณผ status: "completed"๋ฅผ ํฌํ•จํ•œ POST /api/admin/v2/orders-update

์ด ๊ฐ„๋‹จํ•œ 3๋‹จ๊ณ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ฃผ๋ฌธ ์ดํ–‰ ์›Œํฌํ”Œ๋กœ๋ฅผ ์™„์ „ํžˆ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋‘˜ ๋‹ค ํ•ต์‹ฌ ๊ณต๊ธ‰์—…์ฒด ๋ฌธ์„œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋“ค์„ ์—ฐ๊ฒฐํ•˜๋ฉด ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์ œํ’ˆ ์„ค์ •์—์„œ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ๋กœ ์›ํ™œํ•˜๊ฒŒ ์ด๋™ํ•˜๋ฉฐ ๋…ผ๋ฆฌ์ ์ธ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œํ’ˆ ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ.

#API#Supplier#Documentation#Manual Orders#Integration
Sarah Johnson

Sarah Johnson

Digital marketing expert with 10+ years of experience in social media strategy. Passionate about helping businesses grow their online presence through effective marketing techniques.

Related Posts

์™„์ „ ๊ฐ€์ด๋“œ: ๊ณต๊ธ‰์—…์ฒด๋กœ ์ฐธ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์™„์ „ ๊ฐ€์ด๋“œ: ๊ณต๊ธ‰์—…์ฒด๋กœ ์ฐธ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด ์™„๋ฒฝํ•œ ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ๋กœ ๊ณต๊ธ‰์—…์ฒด๋กœ ์ฐธ์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ณด์„ธ์š”. ์ƒ์  ์„ค์ •, ์ƒํ’ˆ ์ถ”๊ฐ€, ์ฃผ๋ฌธ ๊ด€๋ฆฌ, ๊ณต๊ธ‰์—…์ฒด API ์—ฐ๊ฒฐ, ๊ทธ๋ฆฌ๊ณ  ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜์ต์„ ์ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

HstockPlus ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ”Œ๋žซํผ ๊ฐœ์š”

HstockPlus ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ”Œ๋žซํผ ๊ฐœ์š”

HstockPlus๋Š” ๊ณต๊ธ‰์—…์ฒด์™€ ๊ณ ๊ฐ์„ ์œ„ํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์œผ๋กœ, ์•ˆ์ „ํ•œ ๋Œ€์‹œ๋ณด๋“œ, ์ฒด๊ณ„์ ์ธ ์ฃผ๋ฌธ ๊ด€๋ฆฌ, ์™„์ „ํ•œ PerfectPanel API ํ˜ธํ™˜์„ฑ์„ ํŠน์ง•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ธ‰์—…์ฒด ์ œํ’ˆ ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ: ์ œํ’ˆ ์ƒ์„ฑ, ํ•˜์œ„ ์ œํ’ˆ ์ดํ•ด ๋ฐ ์žฌ๊ณ  ๊ด€๋ฆฌ

๊ณต๊ธ‰์—…์ฒด ์ œํ’ˆ ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ: ์ œํ’ˆ ์ƒ์„ฑ, ํ•˜์œ„ ์ œํ’ˆ ์ดํ•ด ๋ฐ ์žฌ๊ณ  ๊ด€๋ฆฌ

๊ณต๊ธ‰์—…์ฒด๋ฅผ ์œ„ํ•œ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ์ œํ’ˆ ์ƒ์„ฑ ๋ฐฉ๋ฒ•, ์„œ๋ธŒ์ œํ’ˆ ์ดํ•ด, ์žฌ๊ณ  ๋ฐ ์ˆ˜๋™ ์ œํ’ˆ ์œ ํ˜• ์„ ํƒ, ํšจ๊ณผ์ ์ธ ์žฌ๊ณ  ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„๋ณ„ ์ง€์นจ๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.