{
  "schema_version": 1,
  "diagram_type": "architecture",
  "meta": {
    "title": "SSA: VPS Việt Nam và Cloudflare",
    "quality_profile": "showcase",
    "viewBox": [
      850,
      446
    ],
    "output": "docs/ssa-miniapp/archify/runtime.html",
    "repository": {
      "url": "git@github.com:skan2026/ssa.git",
      "revision": "05bb7ca2dfe249d1bfb325b901ee8d7d2958d19e",
      "link_mode": "local-only"
    }
  },
  "components": [
    {
      "id": "parent-app",
      "type": "frontend",
      "label": "Zalo Mini App",
      "sublabel": "React / ZaUI / zmp-sdk",
      "pos": [
        36,
        94
      ],
      "size": [
        166,
        65
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 86,
          "end_line": 152
        }
      ]
    },
    {
      "id": "vn-proxy",
      "type": "security",
      "label": "VPS proxy Việt Nam",
      "sublabel": "TLS / origin identity",
      "pos": [
        342,
        94
      ],
      "size": [
        166,
        65
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 86,
          "end_line": 152
        }
      ]
    },
    {
      "id": "ssa-api",
      "type": "backend",
      "label": "Cloudflare API Worker",
      "sublabel": "Session / quyền từng trẻ",
      "pos": [
        648,
        94
      ],
      "size": [
        166,
        65
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 86,
          "end_line": 152
        }
      ]
    },
    {
      "id": "relational-store",
      "type": "database",
      "label": "D1 / R2 private",
      "sublabel": "Giao dịch / files / audit",
      "pos": [
        648,
        317
      ],
      "size": [
        166,
        65
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 86,
          "end_line": 152
        }
      ]
    },
    {
      "id": "delivery-jobs",
      "type": "messagebus",
      "label": "Jobs / Queues / Cron",
      "sublabel": "Đọc outbox đã commit",
      "pos": [
        342,
        317
      ],
      "size": [
        166,
        65
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 86,
          "end_line": 152
        }
      ]
    },
    {
      "id": "outbound-providers",
      "type": "external",
      "label": "OA / ZBS / email",
      "sublabel": "Consent / quyền đã duyệt",
      "pos": [
        36,
        317
      ],
      "size": [
        166,
        65
      ],
      "sources": [
        {
          "path": "docs/ssa-miniapp/PLAN.md",
          "line": 86,
          "end_line": 152
        }
      ]
    }
  ],
  "connections": [
    {
      "id": "parent-app-to-vn-proxy",
      "from": "parent-app",
      "to": "vn-proxy",
      "label": "HTTPS"
    },
    {
      "id": "vn-proxy-to-ssa-api",
      "from": "vn-proxy",
      "to": "ssa-api",
      "label": "HTTPS / xác minh proxy"
    },
    {
      "id": "ssa-api-to-relational-store",
      "from": "ssa-api",
      "to": "relational-store",
      "label": "DB / private files",
      "labelDy": 79
    },
    {
      "id": "relational-store-to-delivery-jobs",
      "from": "relational-store",
      "to": "delivery-jobs",
      "label": "Outbox / event ID"
    },
    {
      "id": "delivery-jobs-to-outbound-providers",
      "from": "delivery-jobs",
      "to": "outbound-providers",
      "label": "Gửi / retry / dedupe"
    }
  ],
  "cards": [
    {
      "dot": "amber",
      "title": "Phương án A có điều kiện",
      "items": [
        "Chỉ dữ liệu tổng hợp trước G0.",
        "VPS proxy không chứng minh residency D1/R2."
      ]
    },
    {
      "dot": "cyan",
      "title": "Ranh giới quyền",
      "items": [
        "Chặn gọi origin bỏ qua proxy.",
        "Admin auth riêng; API kiểm quyền từng trẻ."
      ]
    },
    {
      "dot": "emerald",
      "title": "Tính đúng",
      "items": [
        "Audit và outbox cùng transaction.",
        "Không hứa exactly-once với nhà cung cấp."
      ]
    }
  ]
}
