{
  "schema_version": 1,
  "diagram_type": "erd",
  "meta": {
    "title": "Quan hệ giám hộ — mô hình logic đề xuất",
    "locale": "vi",
    "output": "docs/ssa-miniapp/archify/data-core.html",
    "quality_profile": "showcase",
    "repository": {
      "url": "git@github.com:skan2026/ssa.git",
      "revision": "05bb7ca2dfe249d1bfb325b901ee8d7d2958d19e",
      "link_mode": "local-only"
    }
  },
  "layout": {
    "gapX": 110,
    "gapY": 100,
    "entityW": 300,
    "mode": "grid"
  },
  "entities": [
    {
      "id": "guardian",
      "label": "Guardian",
      "row": 0,
      "col": 0,
      "attributes": [
        {
          "name": "guardian_id"
        },
        {
          "name": "phone không là PK"
        }
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 164,
          "end_line": 180,
          "label": "Thiết kế logic SSA"
        }
      ]
    },
    {
      "id": "link",
      "label": "Liên kết đã xác minh",
      "row": 0,
      "col": 1,
      "attributes": [
        {
          "name": "guardian_id, student_id"
        },
        {
          "name": "status, evidence, auth_version"
        }
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 164,
          "end_line": 180,
          "label": "Thiết kế logic SSA"
        }
      ]
    },
    {
      "id": "student",
      "label": "Student",
      "row": 0,
      "col": 2,
      "attributes": [
        {
          "name": "student_id"
        },
        {
          "name": "source_system, external_student_id"
        }
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 164,
          "end_line": 180,
          "label": "Thiết kế logic SSA"
        }
      ]
    },
    {
      "id": "identity",
      "label": "Danh tính Zalo",
      "row": 1,
      "col": 0,
      "attributes": [
        {
          "name": "app_id, zalo_user_id"
        },
        {
          "name": "guardian; session riêng"
        }
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 164,
          "end_line": 180,
          "label": "Thiết kế logic SSA"
        }
      ]
    },
    {
      "id": "history",
      "label": "Lịch sử liên kết",
      "row": 1,
      "col": 1,
      "attributes": [
        {
          "name": "effective dates"
        },
        {
          "name": "verified_by; revoke"
        }
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 164,
          "end_line": 180,
          "label": "Thiết kế logic SSA"
        }
      ]
    },
    {
      "id": "learning",
      "label": "Dữ liệu học tập",
      "row": 1,
      "col": 2,
      "attributes": [
        {
          "name": "attendance / reports"
        },
        {
          "name": "student; kỳ / revision"
        }
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 164,
          "end_line": 180,
          "label": "Thiết kế logic SSA"
        }
      ]
    }
  ],
  "relationships": [
    {
      "id": "rel0",
      "from": "guardian",
      "to": "link",
      "fromCardinality": "one",
      "toCardinality": "many"
    },
    {
      "id": "rel1",
      "from": "link",
      "to": "student",
      "fromCardinality": "many",
      "toCardinality": "one"
    },
    {
      "id": "rel2",
      "from": "guardian",
      "to": "identity",
      "fromCardinality": "one",
      "toCardinality": "many"
    },
    {
      "id": "rel3",
      "from": "link",
      "to": "history",
      "fromCardinality": "one",
      "toCardinality": "many"
    },
    {
      "id": "rel4",
      "from": "student",
      "to": "learning",
      "fromCardinality": "one",
      "toCardinality": "many"
    }
  ],
  "cards": [
    {
      "dot": "amber",
      "title": "Phạm vi và điều kiện",
      "items": [
        "Các nhóm logic, chưa phải schema vật lý. Attendance/reports được gộp; grain và constraints đầy đủ ở PLAN §5.1. Import không tự xác minh hay hồi sinh quyền đã thu hồi."
      ]
    }
  ]
}
