Project

General

Profile

QA验收 #1 » http-round2-results.json

Redmine Admin, 10/06/2026 04:28 PM

 
{
"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:25:16.992Z",
"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:25:16.992Z",
"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:25:17.811Z",
"actual": {
"status": 401,
"data": {
"error": {
"code": "UNAUTHENTICATED",
"message": "请先登录"
},
"requestId": "727c6e9f-eec0-4059-ae09-bd8e3a6ffd4b"
}
},
"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:25:17.814Z",
"actual": {
"status": 403,
"data": {
"error": {
"code": "CONTACT_NOT_BOUND",
"message": "请先绑定客户联系人"
},
"requestId": "1b04e380-2638-4bde-bbf8-562e538f5652"
}
},
"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:25:17.824Z",
"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:25:18.628Z",
"status": "Fail",
"actual": "{\"status\":502,\"data\":{\"error\":{\"code\":\"NDB_CONTRACT_ERROR\",\"message\":\"上游响应格式异常\"},\"requestId\":\"779c8c45-ea09-4ef1-86e0-beb00e029ebd\"}}"
}
],
"summary": {
"executed": 6,
"pass": 5,
"fail": 1
},
"fatal": "HTTP-006 failed",
"cleanup": {
"services": [
{
"role": "Backend",
"pid": 52331,
"exitCode": null,
"signal": "SIGTERM"
},
{
"role": "BFF",
"pid": 52333,
"exitCode": null,
"signal": "SIGTERM"
}
],
"container": "ndb-qa-minutes-http-20261007-56488",
"containerStopped": true
},
"boundaries": {
"realWechatLogin": false,
"miniUI": false,
"realEmails": 0,
"sharedBusinessDbWrites": 0
},
"mockNotifications": []
}
(42-42/78)