Project

General

Profile

QA验收 #40 » results.json

Redmine Admin, 11/03/2026 05:22 AM

 
{
"task": "THREE-20261103",
"issue": 40,
"scope": "HOME/BLACKLIST/CNHK local isolated integrated candidate",
"at": "2026-11-03T05:22:05.040Z",
"timezone": "Asia/Shanghai",
"environment": {
"api": "http://127.0.0.1:18073/v1",
"web": "http://127.0.0.1:18074",
"database": "ndb_three_20261103",
"schema": "current models sync; not full migration graph validation",
"receipt": "ops/environment-receipt.json"
},
"candidate": {
"branch": "feature/home-blacklist-income-integration",
"backendBase": "52a00635480872694faf4b13c692a114104f87e2",
"frontendBase": "1a756e16b128b84f9a6d89b32e567e9ca39e06d4",
"manifest": "candidate-after-THREE-DEF-02.json",
"delta": "THREE-DEF-02-candidate-delta.json",
"all14FileHashesMatched": true,
"uncommitted": true
},
"summary": {
"latestUniqueCases": 20,
"Pass": 20,
"Fail": 0,
"Blocked": 0,
"Skipped": 0,
"layers": {
"normalHTTP": 5,
"PGRegression": 6,
"browser": 9
},
"initialUniqueCases": {
"Pass": 19,
"Fail": 1
},
"initialBrowser": {
"Pass": 8,
"Fail": 1
},
"regressionSubchecks": 8,
"pagination": "BL-05 layer closure, not a new business case",
"redmineReadbackPending": true
},
"cases": [
{
"id": "BL-API-PERMISSIONS",
"name": "BL-API-PERMISSIONS",
"impact": "BLACKLIST原管理action/父权限隔离",
"layer": "正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL",
"preconditions": "本任务loopback服务和manifest隔离身份/fixture",
"steps": "正常密码登录PM6/limited7,读取本轮候选列表",
"expected": "PM200,父权限-only403",
"actual": "PM200;limited403",
"status": "Pass",
"evidence": [
"api-blacklist-permissions.json",
"api-wire.json"
],
"executionTimeSource": "api-start.json / api-results.json (2026-11-03)",
"candidate": "original candidate.json; single form binding delta does not affect API"
},
{
"id": "BL-API-QUERY-PAGINATION",
"name": "BL-API-QUERY-PAGINATION",
"impact": "BLACKLIST查询和分页",
"layer": "正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL",
"preconditions": "本任务loopback服务和manifest隔离身份/fixture",
"steps": "对合成专家3/4按编号、姓名、手机号及page1/2各1条查询",
"expected": "参数与精确ID相符,两页不重叠",
"actual": "页1[4]/页2[3];编号[3]/姓名[4,3]/手机号[3]。保存响应已离线按manifest核对",
"status": "Pass",
"evidence": [
"api-blacklist-query.json",
"api-wire.json"
],
"executionTimeSource": "api-start.json / api-results.json (2026-11-03)",
"candidate": "original candidate.json; single form binding delta does not affect API"
},
{
"id": "BL-API-REASON",
"name": "BL-API-REASON",
"impact": "BLACKLIST原因/审计",
"layer": "正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL",
"preconditions": "本任务loopback服务和manifest隔离身份/fixture",
"steps": "对专家3提交空白加入原因,前后读回",
"expected": "拒绝且状态及历史不变",
"actual": "code400;前后详情完全一致",
"status": "Pass",
"evidence": [
"api-blacklist-reason.json",
"api-wire.json"
],
"executionTimeSource": "api-start.json / api-results.json (2026-11-03)",
"candidate": "original candidate.json; single form binding delta does not affect API"
},
{
"id": "CNHK-HTTP-01",
"name": "CNHK-HTTP-01",
"impact": "CNHK01/02/03 账期公司聚合",
"layer": "正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL",
"preconditions": "本任务loopback服务和manifest隔离身份/fixture",
"steps": "管理员all/unpaid及2026-11/10月份请求,与同PG原函数oracle比较",
"expected": "CN+HK=旧总收入,旧金额/余额/回款一致",
"actual": "4组真实HTTP一致;C0全期CN257/HK507.01;11月CN257/HK107.01",
"status": "Pass",
"evidence": [
"api-billing-observations.json",
"api-wire.json"
],
"executionTimeSource": "api-start.json / api-results.json (2026-11-03)",
"candidate": "original candidate.json; single form binding delta does not affect API"
},
{
"id": "CNHK-HTTP-02",
"name": "CNHK-HTTP-02",
"impact": "CNHK02/03 权限销售过滤/下钻",
"layer": "正常密码/JWT鉴权 + 真实本地HTTP + PostgreSQL",
"preconditions": "本任务loopback服务和manifest隔离身份/fixture",
"steps": "PM全客户范围、admin sales_id=5、11月公司2未出账项目GET",
"expected": "PM只公司2;sales5只公司3;原项目下钻保持原口径",
"actual": "过滤符合;下钻HTTP200,原全周期项目值问题另列THREE-DEF-01",
"status": "Pass",
"evidence": [
"api-billing-filter-detail.json",
"api-wire.json"
],
"executionTimeSource": "api-start.json / api-results.json (2026-11-03)",
"candidate": "original candidate.json; single form binding delta does not affect API"
},
{
"id": "CNHK-PG-01",
"name": "账期all客户纳入",
"impact": "CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻",
"layer": "PostgreSQL Django APIRequestFactory;不冒充正常HTTP鉴权",
"preconditions": "本任务test_ndb_three_20261103临时测试库",
"steps": "api.finance.tests.FinancialUnchargedCompaniesViewTests.test_all_scope_includes_companies_with_income_or_payment_activity",
"expected": "原回归断言全部通过",
"actual": "该用例OK;6项执行exit0;专用test库正常销毁",
"status": "Pass",
"evidence": [
"legacy-pg-results.json",
"legacy-pg-stderr.log",
"legacy-pg-stdout.log"
],
"executionTimeSource": "legacy-pg-*.log (2026-11-03)",
"candidate": "candidate.json; form binding only delta unrelated"
},
{
"id": "CNHK-PG-02",
"name": "销售过滤及Task时间",
"impact": "CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻",
"layer": "PostgreSQL Django APIRequestFactory;不冒充正常HTTP鉴权",
"preconditions": "本任务test_ndb_three_20261103临时测试库",
"steps": "api.finance.tests.FinancialUnchargedCompaniesViewTests.test_company_list_filters_salesman_and_uses_task_start_time",
"expected": "原回归断言全部通过",
"actual": "该用例OK;6项执行exit0;专用test库正常销毁",
"status": "Pass",
"evidence": [
"legacy-pg-results.json",
"legacy-pg-stderr.log",
"legacy-pg-stdout.log"
],
"executionTimeSource": "legacy-pg-*.log (2026-11-03)",
"candidate": "candidate.json; form binding only delta unrelated"
},
{
"id": "CNHK-PG-03",
"name": "销售姓名",
"impact": "CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻",
"layer": "PostgreSQL Django APIRequestFactory;不冒充正常HTTP鉴权",
"preconditions": "本任务test_ndb_three_20261103临时测试库",
"steps": "api.finance.tests.FinancialUnchargedCompaniesViewTests.test_company_result_includes_salesman_name",
"expected": "原回归断言全部通过",
"actual": "该用例OK;6项执行exit0;专用test库正常销毁",
"status": "Pass",
"evidence": [
"legacy-pg-results.json",
"legacy-pg-stderr.log",
"legacy-pg-stdout.log"
],
"executionTimeSource": "legacy-pg-*.log (2026-11-03)",
"candidate": "candidate.json; form binding only delta unrelated"
},
{
"id": "CNHK-PG-04",
"name": "总已回款",
"impact": "CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻",
"layer": "PostgreSQL Django APIRequestFactory;不冒充正常HTTP鉴权",
"preconditions": "本任务test_ndb_three_20261103临时测试库",
"steps": "api.finance.tests.FinancialUnchargedCompaniesViewTests.test_company_result_includes_total_paid_amount",
"expected": "原回归断言全部通过",
"actual": "该用例OK;6项执行exit0;专用test库正常销毁",
"status": "Pass",
"evidence": [
"legacy-pg-results.json",
"legacy-pg-stderr.log",
"legacy-pg-stdout.log"
],
"executionTimeSource": "legacy-pg-*.log (2026-11-03)",
"candidate": "candidate.json; form binding only delta unrelated"
},
{
"id": "CNHK-PG-05",
"name": "月份筛选聚合/下钻/回款",
"impact": "CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻",
"layer": "PostgreSQL Django APIRequestFactory;不冒充正常HTTP鉴权",
"preconditions": "本任务test_ndb_three_20261103临时测试库",
"steps": "api.finance.tests.FinancialUnchargedCompaniesViewTests.test_month_range_filters_company_metrics_details_and_payments",
"expected": "原回归断言全部通过",
"actual": "该用例OK;6项执行exit0;专用test库正常销毁",
"status": "Pass",
"evidence": [
"legacy-pg-results.json",
"legacy-pg-stderr.log",
"legacy-pg-stdout.log"
],
"executionTimeSource": "legacy-pg-*.log (2026-11-03)",
"candidate": "candidate.json; form binding only delta unrelated"
},
{
"id": "CNHK-PG-06",
"name": "三类未回款合计",
"impact": "CNHK02/03;唯一账期聚合调用方及旧字段/过滤/回款/下钻",
"layer": "PostgreSQL Django APIRequestFactory;不冒充正常HTTP鉴权",
"preconditions": "本任务test_ndb_three_20261103临时测试库",
"steps": "api.finance.tests.FinancialUnchargedCompaniesViewTests.test_total_unpaid_detail_combines_three_unpaid_categories",
"expected": "原回归断言全部通过",
"actual": "该用例OK;6项执行exit0;专用test库正常销毁",
"status": "Pass",
"evidence": [
"legacy-pg-results.json",
"legacy-pg-stderr.log",
"legacy-pg-stdout.log"
],
"executionTimeSource": "legacy-pg-*.log (2026-11-03)",
"candidate": "candidate.json; form binding only delta unrelated"
},
{
"id": "HOME-01",
"name": "HOME-01",
"impact": "HOME卡顺序",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "管理员首页刷新,读各卡顺序,桌面及390px下部衔接",
"expected": "提醒卡在所有卡后,含出账项目之后",
"actual": "Admin reminder last after billing projects; refresh 9 synthetic rows; screenshot home-admin-desktop.png",
"status": "Pass",
"evidence": [
"screenshots/home-admin-desktop.png",
"screenshots/home-admin-narrow-bottom-v2.png"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "BL-01",
"name": "BL-01",
"impact": "BLACKLIST入口迁移",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "专家3加入后查看原列表/详情及设置页",
"expected": "原页面保留状态/合作提示、无管理按钮;设置页可管",
"actual": "Old expert list/detail retain blacklist status, no join/remove management button; own candidate3 observed blacklisted",
"status": "Pass",
"evidence": [
"browser-expert-detail.txt",
"browser-old-list.txt"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "BL-04",
"name": "BL-04",
"impact": "BLACKLIST状态/审计",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "专家3空原因校验,UI加入再解除,读刷新与两历史",
"expected": "真实加入/解除成功,结束normal,历史保留",
"actual": "UI empty reason rejected; real add and remove candidate3; reasons and two history entries; final normal; dialog remains open displaying updated history (expected)",
"status": "Pass",
"evidence": [
"browser-blacklist-added.txt",
"browser-blacklist-restored.txt",
"session-cleanup-receipt.json"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "CNHK-04",
"name": "CNHK-04",
"impact": "CNHK04 Web列/金额/交互",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "正常账期页查两列/合计、独立排序、月份/范围/销售筛选和原项目下钻",
"expected": "CN/HK显示RMB且金额/合计正确、独立排序和筛选正常;下钻保持基线",
"actual": "CN317.00/HK547.01; November CN317.00/HK147.01; CN/HK independently sorted; month/customer scope/sales UI filters; sales5 only company3; detail original full-project amounts retained (primary baseline attribution); original mismatch THREE-DEF-01 separate",
"status": "Pass",
"evidence": [
"browser-billing-initial.txt",
"browser-billing-sorts.json",
"browser-billing-november.txt",
"browser-billing-sales-filter.txt",
"browser-billing-drilldown.txt"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "HOME-02",
"name": "HOME-02",
"impact": "HOME非财务/原行为",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "PM首页显示及刷新;admin实际点击共享提醒组件Task9链接",
"expected": "PM末尾显示8条归属任务;共享链接进入/project_tasks/9",
"actual": "PM last reminder card,8 own synthetic rows; refresh preserves results. Shared unchanged component link actually clicked as admin on #9, reached /project_tasks/9; PM-specific link click not repeated. Only one page (8/20), UI next-page disabled; no second-page fixture expansion.",
"status": "Pass",
"evidence": [
"browser-home-pm.txt",
"browser-home-task-link.txt"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "HOME-03",
"name": "HOME-03",
"impact": "HOME财务排除",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "正常finance8登录并reload,观察卡及资源请求",
"expected": "卡不显示,zero-cost-reminders请求0",
"actual": "Finance role8 normal login, reminder absent and zero /tasks/zero-cost-reminders resource requests after reload",
"status": "Pass",
"evidence": [
"browser-home-finance.json",
"screenshots/home-finance-clean-desktop.png"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "BL-02",
"name": "BL-02",
"impact": "BLACKLIST非admin action",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "PM6按原action进入设置页查询并打开管理历史",
"expected": "真实PM可查看管理页面/原因历史",
"actual": "Real PM role6 with original action enters settings blacklist, queries normal experts and opens candidate3 reason/history modal",
"status": "Pass",
"evidence": [
"browser-blacklist-pm.txt",
"browser-blacklist-pm-history.txt"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "BL-03",
"name": "BL-03",
"impact": "BLACKLIST父级权限隔离",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "limited7查看菜单并直达黑名单页",
"expected": "菜单隐藏、直达拒绝、零候选查询",
"actual": "Settings-only role7 menu hidden; direct route redirected /settings with permission denial; candidateRequests0",
"status": "Pass",
"evidence": [
"browser-settings-only.json",
"browser-settings-only.txt"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "原候选证据;表单model单文件差异与其无关,复用有效"
},
{
"id": "BL-05",
"name": "BL-05",
"impact": "BLACKLIST查询/分页/恢复",
"layer": "正常身份 + 本地真实浏览器UI + 真实HTTP/PG;ego Space3",
"preconditions": "现有admin5/PM6/finance8/limited7和本任务精确合成对象",
"steps": "初测姓名查询失败;修复后8子项;21条分页下一页/上一页;临时19行软删除",
"expected": "查询按钮/Enter正确参数各1GET,非法ID0GET;21条分20+1不重叠;恢复原2条",
"actual": "初测Fail保留;DEF02第1轮8子检查Pass;真实UI翻页Pass,精确19临时行已软删除,最终[3,4]",
"status": "Pass",
"evidence": [
"THREE-DEF-02-browser.json",
"THREE-DEF-02-regression.json",
"pagination-ui-proof.json",
"browser-blacklist-injected-error.txt",
"browser-blacklist-recovered.txt"
],
"executionTimeSource": "browser artifacts / regression and pagination receipts (2026-11-03)",
"candidate": "candidate-after-THREE-DEF-02.json",
"history": {
"initialStatus": "Fail",
"defect": "THREE-DEF-02",
"regressionRound": 1,
"regressionStatus": "Pass"
}
}
],
"planCoverage": [
{
"id": "HOME-01",
"status": "Pass",
"caseIds": [
"HOME-01"
]
},
{
"id": "HOME-02",
"status": "Pass",
"caseIds": [
"HOME-02"
]
},
{
"id": "HOME-03",
"status": "Pass",
"caseIds": [
"HOME-03"
]
},
{
"id": "BL-01",
"status": "Pass",
"caseIds": [
"BL-01"
]
},
{
"id": "BL-02",
"status": "Pass",
"caseIds": [
"BL-02",
"BL-API-PERMISSIONS"
]
},
{
"id": "BL-03",
"status": "Pass",
"caseIds": [
"BL-03",
"BL-API-PERMISSIONS"
]
},
{
"id": "BL-04",
"status": "Pass",
"caseIds": [
"BL-04",
"BL-API-REASON"
]
},
{
"id": "BL-05",
"status": "Pass",
"caseIds": [
"BL-05",
"BL-API-QUERY-PAGINATION"
]
},
{
"id": "CNHK-01",
"status": "Pass",
"caseIds": [
"CNHK-HTTP-01"
]
},
{
"id": "CNHK-02",
"status": "Pass",
"caseIds": [
"CNHK-HTTP-01",
"CNHK-HTTP-02"
]
},
{
"id": "CNHK-03",
"status": "Pass",
"caseIds": [
"CNHK-HTTP-01",
"CNHK-HTTP-02",
"CNHK-PG-01",
"CNHK-PG-02",
"CNHK-PG-03",
"CNHK-PG-04",
"CNHK-PG-05",
"CNHK-PG-06"
],
"evidence": [
"billing-oracle-comparisons.json",
"billing-oracle-provenance.json"
]
},
{
"id": "CNHK-04",
"status": "Pass",
"caseIds": [
"CNHK-04"
]
}
],
"reusedEvidence": [
{
"source": "preparation-plan.md/evidence-reuse.md and specs",
"coverage": "HOME lint/format/build; BLACKLIST prior19 API+manager/5page; CNHK5BE/2Web; old billing other5 passed",
"newRuns": 0
},
{
"source": "ui/receipt.json",
"coverage": "23 native screenshots visual review Pass incl2 delta closure; not business-test count",
"newRuns": 0
},
{
"source": "billing-oracle-comparisons.json",
"coverage": "6 same-PG old/new baseline52a00635 pairs; all old fields/types equal and CN+HK reconcile",
"notHTTP": true
},
{
"source": "THREE-DEF-02-regression.json",
"coverage": "Only changed form binding retested; 8 other browser/5HTTP/6PG retained",
"newBusinessCases": 0
}
],
"observations": [
{
"id": "THREE-DEF-01",
"status": "Original adjacent discrepancy, not fixed",
"actual": "November C0 unbilled364.01 vs project modal764.01 inclOct400",
"attribution": "Unchanged FinancialProjectsView and ProjectsListSerializers at baseline52a00635; primary decides preserve old behavior this scope",
"evidence": [
"THREE-DEF-01.md",
"../defect-attribution.json",
"browser-billing-november.txt",
"browser-billing-drilldown.txt"
]
},
{
"id": "THREE-DEF-02",
"initial": "Fail",
"fixRound": 1,
"latest": "Pass",
"sha256": "87c3f82d0c2baeb68f4e680c180693034a190b83fa411928615b383f42bdae3f",
"evidence": [
"THREE-DEF-02-regression.json",
"pagination-ui-proof.json"
]
}
],
"boundaries": [
"No staging/production deployment or real external provider/approval/payment/notification verification",
"Schema model-sync, full migration graph not validated; this diff has no migration",
"PM-specific task link click not repeated; actual admin click of shared unchanged component retained at UI layer",
"Browser real pagination gap now closed, no remaining required local case pending",
"Dedicated accounts retained active; sessions cleared; original financial fixtures retained; temporary19 candidates soft-deleted precisely",
"No product edits by QA, no Git writes/commit/push/deploy; no external business data writes"
],
"supportHistory": [
{
"file": "seed-attempt-01-error.json",
"fact": "QA Projects.pm field error, transaction rolled back; manage_by correction then one successful seed"
},
{
"fact": "Old-task context drift was read-only: unrelated old local records/Memory and #13 journal read; no old issue/file/data write or Space action. Current package resumed from its exact artifacts, no replay"
},
{
"file": "session-cleanup-attempt01-error.json",
"fact": "QA Accounts.is_deleted field check failed before token update; transaction aborted; QA-only actual field correction, four own sessions then cleared"
},
{
"fact": "Bounded locator/text/wait support errors preserved in browser trace; continued from observed state, not product failure or repeated business writes"
}
],
"cleanup": {
"sessions": "session-cleanup-receipt.json",
"vault": "account-final-vault-reference.json",
"pagination": "pagination-cleanup-receipt.json",
"normalBrowserLogout": true,
"spaceFinishPending": true,
"servicesRemainRunningForOps": true
}
}
(2-2/12)