{
  "repo": "tidbcloud/test-automation",
  "binary": "showmeb",
  "binary_path": "src/main/java/com/pingcap/showmeb/ShowmebApplication.java",
  "dependencies": {
    "Runtime ShowmebApplication.AutomationRuntime": {
      "infrastructure": {
        "mysql": {
          "conditions": [
            "Always, through the default and multiple datasource configurations"
          ],
          "operations": [
            {
              "operation": "SELECT / INSERT / UPDATE / DELETE",
              "trigger": "Serve automation dashboards, reports, datasets, issue summaries, and job metadata",
              "conditions": [
                "REST controllers invoke MyBatis mappers or service-layer logic"
              ],
              "implementation": "dao/*Mapper.java with datasource entries in application.yml"
            }
          ]
        },
        "websocket": {
          "conditions": [
            "When the frontend subscribes to live updates"
          ],
          "operations": [
            {
              "operation": "WEBSOCKET PUSH",
              "trigger": "Broadcast task or pipeline updates",
              "conditions": [
                "Clients connect to /my-websocket"
              ],
              "implementation": "configuration/WebSocketConfig.java and MyWebSocketHandler"
            }
          ]
        },
        "scheduler": {
          "conditions": [
            "Always, because scheduling is enabled at startup"
          ],
          "operations": [
            {
              "operation": "RUN SCHEDULED JOBS",
              "trigger": "Execute API sync, HA sync, Jira, auto pipeline, and upgrade related jobs",
              "conditions": [
                "The application is running"
              ],
              "implementation": "task/* and service/QuartzService with @EnableScheduling"
            }
          ]
        }
      },
      "services": [
        {
          "name": "jira",
          "protocol": "https",
          "target_interface": "Jira REST APIs",
          "purpose": "Create and query issue-related automation data"
        },
        {
          "name": "jenkins",
          "protocol": "http",
          "target_interface": "Jenkins APIs",
          "purpose": "Trigger and inspect automation pipelines"
        },
        {
          "name": "minio",
          "protocol": "http",
          "target_interface": "MinIO object storage",
          "purpose": "Store and retrieve automation artifacts"
        }
      ]
    }
  }
}
