Bỏ qua

Thuộc Tài Liệu API — EP-06: Báo cáo & Thống kê

API Chi Tiết — EP-06: Báo Cáo & Thống Kê

Use Cases: UC-RPT-001, UC-RPT-002 Module: module-report


Báo Cáo Chồng Chéo & Phân Mảnh

GET /api/v1/reports/overlap

Mục đích: Báo cáo các Data Element đang bị lưu trùng tại nhiều đơn vị (chồng chéo).

Tham chiếu: UC-RPT-001, Feature EP-06-001

Phân quyền: Role: Manager, Approver

Query Parameters:

Parameter Kiểu Mô tả
domainId Long Lọc theo Domain
orgId Long Lọc theo đơn vị
minOverlap Integer Số đơn vị tối thiểu (mặc định: 2)
page, size, sort Phân trang

Response 200:

{
  "success": true,
  "data": {
    "items": [
      {
        "dataElement": { "id": 101, "code": "DE001-DM1.1", "name": "Số CCCD" },
        "domain": "Con người",
        "overlapCount": 5,
        "organizations": [
          { "orgId": 1, "orgName": "Công an TP", "isOwner": true },
          { "orgId": 6, "orgName": "BHXH", "isOwner": false },
          { "orgId": 5, "orgName": "Sở Y tế", "isOwner": false },
          { "orgId": 2, "orgName": "Sở Tài chính", "isOwner": false },
          { "orgId": 3, "orgName": "Cục Thuế", "isOwner": false }
        ]
      }
    ],
    "meta": { "page": 0, "size": 20, "totalElements": 85 },
    "summary": {
      "totalOverlappedDe": 85,
      "avgOverlapCount": 3.2,
      "maxOverlapCount": 8
    }
  }
}

GET /api/v1/reports/fragmentation

Mục đích: Báo cáo các Data Element chỉ có ở một số ít đơn vị (phân mảnh).

Tham chiếu: UC-RPT-001, Feature EP-06-001

Phân quyền: Role: Manager, Approver

Query Parameters:

Parameter Kiểu Mô tả
domainId Long Lọc theo Domain
maxOrgCount Integer Số đơn vị tối đa (mặc định: 1 — chỉ ở 1 đơn vị)
page, size Phân trang

Response 200:

{
  "success": true,
  "data": {
    "items": [
      {
        "dataElement": { "id": 203, "code": "DE003-DM1.2", "name": "Nhóm máu" },
        "domain": "Con người",
        "orgCount": 1,
        "organizations": [
          { "orgId": 5, "orgName": "Sở Y tế" }
        ]
      }
    ],
    "meta": { "page": 0, "size": 20, "totalElements": 42 },
    "summary": {
      "totalFragmentedDe": 42,
      "singleOrgCount": 30,
      "twoOrgCount": 12
    }
  }
}

Báo Cáo Tiến Độ

GET /api/v1/reports/progress/by-org

Mục đích: Tiến độ quy hoạch theo đơn vị: tỉ lệ DE đã mapping, đã chốt chủ quản, đã ban hành.

Tham chiếu: UC-RPT-001, Feature EP-06-002

Phân quyền: Role: Manager, Approver

Query Parameters: domainId (lọc), page, size, sort

Response 200:

{
  "success": true,
  "data": {
    "items": [
      {
        "org": { "id": 1, "name": "Công an TP", "code": "ID01.01" },
        "totalDe": 120,
        "mappedDe": 110,
        "confirmedDe": 100,
        "publishedDe": 95,
        "mappedPercent": 91.7,
        "confirmedPercent": 83.3,
        "publishedPercent": 79.2
      }
    ],
    "meta": { "page": 0, "size": 20, "totalElements": 40 }
  }
}

GET /api/v1/reports/progress/by-domain

Mục đích: Tiến độ quy hoạch theo Domain.

Phân quyền: Role: Manager, Approver

Response 200: Tương tự by-org nhưng nhóm theo Domain thay vì đơn vị.


Dashboard Maturity Score

GET /api/v1/reports/maturity-score

Mục đích: Heatmap mức độ trưởng thành chuẩn hoá dữ liệu theo ma trận Sở ngành (hàng) × Domain (cột).

Tham chiếu: UC-RPT-002, Feature EP-06-003

Phân quyền: Role: Manager, Approver

Response 200:

{
  "success": true,
  "data": {
    "domains": [
      { "id": 1, "code": "DM1", "name": "Con người" },
      { "id": 2, "code": "DM2", "name": "Tổ chức" },
      { "id": 3, "code": "DM3", "name": "Đất đai" }
    ],
    "organizations": [
      { "id": 1, "name": "Công an TP" },
      { "id": 5, "name": "Sở Y tế" }
    ],
    "matrix": [
      {
        "orgId": 1,
        "scores": [
          { "domainId": 1, "score": 4.2, "level": "HIGH" },
          { "domainId": 2, "score": 3.1, "level": "MEDIUM" },
          { "domainId": 3, "score": 0.5, "level": "LOW" }
        ],
        "avgScore": 2.6
      },
      {
        "orgId": 5,
        "scores": [
          { "domainId": 1, "score": 3.8, "level": "HIGH" },
          { "domainId": 2, "score": 1.2, "level": "LOW" },
          { "domainId": 3, "score": 0.0, "level": "NONE" }
        ],
        "avgScore": 1.7
      }
    ],
    "scoreLevels": {
      "NONE": "0.0 — Chưa có dữ liệu",
      "LOW": "0.1–2.0 — Dưới chuẩn",
      "MEDIUM": "2.1–3.5 — Đang phát triển",
      "HIGH": "3.6–5.0 — Trưởng thành"
    }
  }
}

Ghi chú: Score tính dựa trên: % DE đã có chủ quản, đã có định nghĩa đầy đủ, đã PUBLISHED.


GET /api/v1/reports/maturity-score/drill-down

Mục đích: Drill-down theo Domain hoặc đơn vị để xem chi tiết.

Phân quyền: Role: Manager, Approver

Query Parameters:

Parameter Kiểu Bắt buộc Mô tả
orgId Long Có (1 trong 2) Drill-down theo đơn vị
domainId Long Có (1 trong 2) Drill-down theo Domain

Response 200:

{
  "success": true,
  "data": {
    "org": { "id": 1, "name": "Công an TP" },
    "domain": { "id": 1, "code": "DM1", "name": "Con người" },
    "score": 4.2,
    "breakdown": {
      "totalDe": 120,
      "withOwner": 115,
      "withDefinition": 110,
      "published": 100,
      "ownerPercent": 95.8,
      "definitionPercent": 91.7,
      "publishedPercent": 83.3
    },
    "dataElements": [
      {
        "id": 101,
        "code": "DE001-DM1.1",
        "name": "Số CCCD",
        "hasOwner": true,
        "hasDefinition": true,
        "isPublished": true
      }
    ]
  }
}

Cập nhật lần cuối: 2026-04-08