{
  "run": "2026-10-07 isolated real HTTP",
  "ports": {
    "postgres": 56488,
    "backend": 18000,
    "bff": 13000,
    "notificationMock": 13001
  },
  "fixture": {
    "meetings": {
      "A_started": 1,
      "B1_minutes_attend": 2,
      "B2_attend_minutes": 3,
      "D_paid_no_contract": 4
    },
    "contact_id": 2,
    "contract_count": 0
  },
  "checks": [
    {
      "id": "HTTP-001",
      "name": "Real NDB+BFF channel readiness",
      "precondition": "Dedicated ports/databases",
      "action": "GET /health/ready",
      "expected": "NDB signed ping and PG both up",
      "at": "2026-10-06T16:26:07.205Z",
      "actual": {
        "status": "ok",
        "channelDb": "up",
        "ndb": "up"
      },
      "status": "Pass"
    },
    {
      "id": "HTTP-002",
      "name": "Synthetic zero-contract empty baseline",
      "precondition": "Fresh migration and seed",
      "action": "Read isolated ORM snapshot",
      "expected": "0 Registration, 0 Tasks, 0 Contracts",
      "at": "2026-10-06T16:26:07.205Z",
      "actual": {
        "registrations": [],
        "tasks": [],
        "contract_count": 0
      },
      "status": "Pass"
    },
    {
      "id": "HTTP-003",
      "name": "Anonymous minutes write denied",
      "precondition": "No JWT",
      "action": "PUT A minutes",
      "expected": "401 UNAUTHENTICATED, no mutation",
      "at": "2026-10-06T16:26:07.988Z",
      "actual": {
        "status": 401,
        "data": {
          "error": {
            "code": "UNAUTHENTICATED",
            "message": "请先登录"
          },
          "requestId": "5b0eba33-be90-453c-94e7-8cd54ae9f0a9"
        }
      },
      "status": "Pass"
    },
    {
      "id": "HTTP-004",
      "name": "Unbound synthetic JWT denied",
      "precondition": "User lacks phone/contact",
      "action": "PUT A minutes",
      "expected": "403 CONTACT_NOT_BOUND",
      "at": "2026-10-06T16:26:07.990Z",
      "actual": {
        "status": 403,
        "data": {
          "error": {
            "code": "CONTACT_NOT_BOUND",
            "message": "请先绑定客户联系人"
          },
          "requestId": "d6fc51dc-c9be-4257-8bed-1865ca970fbe"
        }
      },
      "status": "Pass"
    },
    {
      "id": "HTTP-005",
      "name": "Legacy subscription is not reservation",
      "precondition": "Only old channel subscription seeded",
      "action": "GET A minutes",
      "expected": "JSON null, no NDB Task",
      "at": "2026-10-06T16:26:08.000Z",
      "actual": {
        "reservation": null,
        "taskCount": 0
      },
      "status": "Pass"
    },
    {
      "id": "HTTP-006",
      "name": "A started free minutes-only created",
      "precondition": "A started,0h,no contract",
      "action": "PUT A minutes",
      "expected": "reserved+unified Registration/Task",
      "at": "2026-10-06T16:26:08.827Z",
      "status": "Fail",
      "actual": "{\"status\":502,\"data\":{\"error\":{\"code\":\"NDB_CONTRACT_ERROR\",\"message\":\"上游响应格式异常\"},\"requestId\":\"c7586089-567e-4a07-8c1c-63832cead135\"}}",
      "diagnostic": {
        "upstreamStatus": 200,
        "upstreamBody": {
          "code": 200,
          "message": "操作成功",
          "data": {
            "id": 1,
            "meeting_id": 1,
            "client_contact_id": 2,
            "task_id": 1,
            "status": "reserved",
            "attendance": "pending",
            "attend_requested": false,
            "minutes_requested": true,
            "task_status": "ongoing",
            "charge_status": "unbilled",
            "payment_status": "not_required",
            "created_at": "2026-10-07T00:26:08.883534"
          }
        },
        "isolatedSnapshot": {
          "registrations": [
            {
              "id": 1,
              "meeting_id": 1,
              "client_contact_id": 2,
              "task_id": 1,
              "attend_requested": false,
              "minutes_requested": true,
              "status": "confirmed"
            }
          ],
          "tasks": [
            {
              "id": 1,
              "status": "ongoing",
              "contract_id": null,
              "charge_total_hours": "0.0000",
              "actual_price": "0.00",
              "total_price": "0.00"
            }
          ],
          "contract_count": 0
        }
      }
    }
  ],
  "summary": {
    "executed": 6,
    "pass": 5,
    "fail": 1
  },
  "fatal": "HTTP-006 failed",
  "cleanup": {
    "services": [
      {
        "role": "Backend",
        "pid": 52464,
        "exitCode": null,
        "signal": "SIGTERM"
      },
      {
        "role": "BFF",
        "pid": 52466,
        "exitCode": null,
        "signal": "SIGTERM"
      }
    ],
    "container": "ndb-qa-minutes-http-20261007-56488",
    "containerStopped": true
  },
  "boundaries": {
    "realWechatLogin": false,
    "miniUI": false,
    "realEmails": 0,
    "sharedBusinessDbWrites": 0
  },
  "mockNotifications": []
}
