{
  "schema_version": 1,
  "diagram_type": "architecture",
  "meta": {
    "title": "Фасад: один вход, три соседа",
    "quality_profile": "showcase",
    "viewBox": [
      1260,
      800
    ],
    "repository": {
      "url": "https://github.com/krus210/freelance-marketplace",
      "revision": "780cd6a10ff6a1db318795c601ae229c8116344c"
    }
  },
  "components": [
    {
      "id": "facade",
      "type": "backend",
      "label": "worker-facade",
      "sublabel": "GetWorkersBatch / SearchBySkills",
      "pos": [
        65,
        320
      ],
      "size": [
        250,
        82
      ],
      "sources": [
        {
          "path": "services/worker-facade/usecase/facade.go",
          "line": 71,
          "label": "Открыть код / документ"
        }
      ]
    },
    {
      "id": "profile",
      "type": "backend",
      "label": "worker-profile",
      "sublabel": "Профиль и city_id",
      "pos": [
        750,
        70
      ],
      "size": [
        250,
        82
      ],
      "sources": [
        {
          "path": "services/worker-profile/repository/memory.go",
          "line": 1,
          "label": "Открыть код / документ"
        }
      ]
    },
    {
      "id": "portfolio",
      "type": "backend",
      "label": "portfolio-service",
      "sublabel": "Навыки и работы",
      "pos": [
        750,
        320
      ],
      "size": [
        250,
        82
      ],
      "sources": [
        {
          "path": "services/portfolio-service/repository/memory.go",
          "line": 1,
          "label": "Открыть код / документ"
        }
      ]
    },
    {
      "id": "verify",
      "type": "backend",
      "label": "verification-service",
      "sublabel": "Статус проверки",
      "pos": [
        750,
        570
      ],
      "size": [
        250,
        82
      ],
      "sources": [
        {
          "path": "services/verification-service/repository/memory.go",
          "line": 1,
          "label": "Открыть код / документ"
        }
      ]
    }
  ],
  "connections": [
    {
      "to": "profile",
      "label": "GetProfile",
      "from": "facade"
    },
    {
      "to": "portfolio",
      "label": "GetPortfolio",
      "from": "facade",
      "labelAt": [
        625,
        361
      ]
    },
    {
      "to": "verify",
      "label": "GetStatus",
      "from": "facade"
    }
  ],
  "cards": [
    {
      "dot": "amber",
      "title": "Ловушка внутри фасада",
      "items": [
        "GetWorkersBatch вызывает getWorkerInternal в цикле.",
        "Для N кандидатов — 3N исходящих RPC; batch-имя не гарантирует batch."
      ]
    }
  ]
}