# Báo cáo khách hàng

> Base URL: `https://pos.pages.fm/api/v1`. Xác thực bằng tham số truy vấn `api_key`.

## Báo cáo tổng quan khách hàng

`GET /shops/{SHOP_ID}/customer_analytics/report`

Lấy toàn bộ số liệu bảng Tổng quan khách hàng (màn Thống kê -> Khách hàng) trong một lần gọi:
số lượng & chi tiêu KH cũ/mới, giới tính, độ tuổi, cấp độ khách hàng,
phân bố theo số đơn thành công, chu kỳ mua hàng và danh sách khách hàng (phân trang).

Nếu chỉ cần phân trang / sắp xếp / tìm kiếm danh sách khách hàng (không tính lại các khối tổng quan),
gọi cùng endpoint với `section=customer_orders` — response khi đó chỉ chứa `customer_orders`.

### Tham số

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `SHOP_ID` | path | integer | yes | Mã shop |
| `startDate` | query | integer |  | Thời gian bắt đầu thống kê (unix timestamp, giây). Khách tạo từ thời điểm này được tính là khách mới. |
| `endDate` | query | integer |  | Thời gian kết thúc thống kê (unix timestamp, giây) |
| `page` | query | integer |  | Trang của danh sách khách hàng (mặc định 1) |
| `pageSize` | query | integer |  | Số khách hàng mỗi trang (mặc định 10) |
| `data_sort` | query | string |  | Sắp xếp danh sách khách hàng. Object mã hoá JSON: - `sort_by`: `order_count` (số đơn) \| `order_success` (số đơn thành công) \| `order_return` (số đơn hoàn) \| `order_success_amount` (số tiền đã chi — mặc định) - `asc_desc`: `asc` \| `desc` (mặc định) |
| `search` | query | string |  | Tìm kiếm danh sách khách hàng theo tên hoặc số điện thoại |
| `section` | query | string |  | Truyền `customer_orders` để chỉ trả về danh sách khách hàng (phân trang) Values: `customer_orders`. |
| `sale_form` | query | string |  | Lọc theo hình thức bán (khách lẻ / khách buôn, dựa trên cấu hình tag khách buôn của shop) Values: `all`, `retail`, `wholesale`. |
| `warehouse_id[]` | query | string[] |  | Lọc đơn theo kho hàng |
| `order_sources[]` | query | string[] |  | Lọc theo nguồn đơn. Mỗi phần tử là object mã hoá JSON `{"order_sources": "<nguồn>", "account": "<mã tài khoản>"}`. Giá trị nguồn giống trên web (xem endpoint `/shops/{SHOP_ID}/order_source`). |
| `is_filter_exclude_source` | query | string |  | Loại trừ (thay vì lọc theo) các nguồn trong `order_sources[]` Values: `true`, `false`. |
| `order_tag[]` | query | string[] |  | Lọc đơn theo mã tag đơn hàng. Giá trị đặc biệt `no_tag` lọc đơn không có tag. |
| `is_filter_tag_by_or` | query | string |  | `true` (mặc định): đơn chứa MỘT trong các tag ở `order_tag[]`; `false`: đơn phải chứa TẤT CẢ các tag Values: `true`, `false`. |
| `is_filter_exclude` | query | string |  | Loại trừ (thay vì lọc theo) các tag trong `order_tag[]` Values: `true`, `false`. |
| `selectedLevel[]` | query | string[] |  | Lọc theo mã cấp độ khách hàng (xem endpoint `/shops/{SHOP_ID}/customer_levels`) |
| `gender[]` | query | string[] |  | Lọc theo giới tính khách hàng (`none` = chưa có thông tin) |
| `typeCustomer[]` | query | string[] |  | Lọc theo loại khách: `online` (có liên kết tài khoản MXH) / `offline` |

### Phản hồi

- `200` Success (object)

```json
{
  "success": true,
  "data": {
    "customer": {
      "new_customer": 2,
      "old_customer": 6
    },
    "customer_purchased": {
      "new_customer": "1006000",
      "old_customer": "5870098"
    },
    "customer_gender": {
      "male": 0,
      "female": 0,
      "unknown": 8
    },
    "customer_age": {
      "under_18": 0,
      "revenue_under_18": null,
      "from_18_to_24": 0,
      "revenue_from_18_to_24": null,
      "from_25_to_34": 0,
      "revenue_from_25_to_34": null,
      "from_35_to_44": 0,
      "revenue_from_35_to_44": null,
      "from_45_to_54": 0,
      "revenue_from_45_to_54": null,
      "over_55": 0,
      "revenue_over_55": null,
      "havent_birthday": 8,
      "revenue_total": 6824089
    },
    "customer_level": [
      {
        "id": "2d058084-4219-4ef3-bf4c-e7b77889224c",
        "count": 2,
        "total_amount": "4070000"
      },
      {
        "id": "6c7f0d31-4f5a-43b1-a0d6-b30081e48f5a",
        "count": 1,
        "total_amount": "1050000"
      },
      {
        "id": null,
        "count": 5,
        "total_amount": "1756098"
      }
    ],
    "customer_order_count": [
      {
        "order_success_quantity": 0,
        "customer_count": 8,
        "amount": "0"
      }
    ],
    "new_customer": {
      "old_customer": 6,
      "analytic_new_customer": {
        "count": 2,
        "count_1": 2,
        "count_2": 0,
        "count_tags": 0
      }
    },
    "customer_analytic": [
      {
        "range": 0,
        "from_1_to_30": 0,
        "from_31_to_60": 7,
        "from_61_to_90": 0,
        "under_90": 121,
        "total": 128
      },
      {
        "range": 1,
        "from_1_to_30": 0,
        "from_31_to_60": 2,
        "from_61_to_90": 0,
        "under_90": 7,
        "total": 9
      },
      {
        "range": 31,
        "from_1_to_30": 0,
        "from_31_to_60": 2,
        "from_61_to_90": 0,
        "under_90": 3,
        "total": 5
      },
      {
        "range": 61,
        "from_1_to_30": 0,
        "from_31_to_60": 0,
        "from_61_to_90": 0,
        "under_90": 1,
        "total": 1
      },
      {
        "range": 91,
        "from_1_to_30": 0,
        "from_31_to_60": 0,
        "from_61_to_90": 0,
        "under_90": 3,
        "total": 3
      }
    ],
    "customer_orders": {
      "success": true,
      "page_number": 1,
      "page_size": 30,
      "total_entries": 8,
      "total_pages": null,
      "data": [
        {
          "id": "330fdf15-7301-4d9c-86e6-f6ea21ed37bf",
          "name": "khách colombia",
          "currency": null,
          "phone_number": [
            "0982342873"
          ],
          "customer": {
            "id": "af55aee2-3846-43d7-8f46-13d768462731",
            "name": "khách colombia",
            "global_id": null,
            "fb_id": null,
            "psid": null
          },
          "order_count": 1,
          "order_return_count": 0,
          "order_success_amount": 0,
          "order_success_count": 0
        },
        {
          "id": "941e822e-fc98-4852-bdea-3a8f806cf362",
          "name": "Hoang Anhbcde",
          "currency": "VND",
          "phone_number": [
            "0999999999"
          ],
          "customer": {
            "id": "db647f48-b20d-4fcf-95b4-eb277a2087b9",
            "name": "Hoang Anh",
            "global_id": null,
            "fb_id": null,
            "psid": null
          },
          "order_count": 7,
          "order_return_count": 0,
          "order_success_amount": 0,
          "order_success_count": 0
        }
      ]
    }
  }
}
```
