Project

General

Profile

Actions

缺陷 #36

open
RA

QA验收 #35: CNB #106|Task毛利率排除与KM零成本提醒|本地独立验收

QA106-EDIT-DRIFT-01 已付Task普通编辑标记重算结算与credit

缺陷 #36: QA106-EDIT-DRIFT-01 已付Task普通编辑标记重算结算与credit

Added by Redmine Admin 12 days ago. Updated 12 days ago.

Status:
新建
Priority:
普通
Assignee:
-
Start date:
10/30/2026
Due date:
% Done:

0%

Estimated time:

Description

QA106-EDIT-DRIFT-01:已付Task普通编辑仅切统计标记会重算结算字段

候选:Backend源集7dfbb450759c、Web82d775f32784;两仓feature/issue-106-gross-margin-exclusion,未提交。本机127.0.0.1:8000/8888,现有ndb_issue105_20261030;仅QA106合成Task21/成本23,Space53管理员。

复现:Task21 status=finished/payment_status=paid、成本23paid且冻结。打开/project_tasks/21/edit,仅把“不计入毛利率”从true取消,点击保存。真实1次PUT /v1/tasks/21,字段仅status/industry_subject/memo/exclude_from_gross_margin;0次成本PUT,HTTP200/code200。独立GET比较前后。

预期:仅统计标记/毛利投影改变,已付Task其他金融/业绩字段及成本不变。

实际:tax_rate null→0.00000;charge_days null→30;credit 0.000→2.339。另interview_subject/cpe_dept/cpe_interview_id null→空字符串。成本全字段未变。仅切标记不应触发结算/业绩重算。真实快编单字段路径已通过,不能覆盖普通编辑失败;本轮未造ongoing+paid分支。

证据:outputs/issue-106-implementation-20261030/qa/ordinary-edit-drift-defect.json、round-22-ui-ordinary-edit-requests.json、round-22-ui-ordinary-edit-before-result.json、round-22-ui-ordinary-edit-after-result.json。

待owner核实:Web非关键payload带未变化status=finished等字段;Backend singleton flag bypass以外仍走_sync_task_finance_amounts及credit计算。此为候选根因,QA不直接分配源码owner。未回滚/修代码,保持合成对象现场。无生产/真实资金/审批通知/提交部署。

RA Updated by Redmine Admin 12 days ago Actions #1

主任务已确认DEF106-01,Backend为唯一业务源码修复owner;QA不分派/修改源码。精确JSON类型与金额对照已补至 outputs/issue-106-implementation-20261030/qa/ordinary-edit-drift-defect.json:tax_rate null(null)→0.00000(string),charge_days null→30(number),credit 0.000(string)→2.339(string);actual_price/total_price/tax/currency和成本全字段原值分别保留可核。原Fail不覆盖。已仅离线准备def106-01-restore-plan.json,以真实before/after值guard;待Ops加载修复manifest后按primary授权受控恢复本轮Task21原null/credit哨兵,再用同普通UI验证,防止已被默认值归一掩盖回归。当前未恢复现场、未再次执行失败写。第1修复轮,最多3轮不收敛交primary。

RA Updated by Redmine Admin 12 days ago Actions #2

主任务决定补充:DEF106-01 / Redmine #36 的唯一业务修复owner为 NDB Backend Agent责任线程 01a09aab-60e4-7632-b0a2-ac457725369d,第1修复轮已开始;不猜测/指定Redmine人类账号。根因、原Fail及null→0/30、credit0→2.339证据保持。待Backend freeze与Ops加载新manifest后,QA受控恢复同Task21原null/0/propertyNone哨兵,再实际普通UI及paid/processing安全metadata/API、金融混写拒绝回归;创建/导出/提醒等未受影响证据复用。临时Permission/name_en及服务保持供回归,现不清理。截图新批次5张及Task27/28/29/21、公司2/year2026映射已整理 outputs/issue-106-implementation-20261030/qa/ui-review-batch.json,交primary并入主索引后一次送UI;前2张既有截图不重复送审。

RA Updated by Redmine Admin 12 days ago Actions #3

DEF106-01 第1修复轮真实本地复测结果

  • 候选:Backend源5a33f07499a4763e8d681dfa552a89ec3ed410535203ae74281a350e9375de12,Web82d775f32784不变,实际Ops frame a19e523d959e81e49d8dbc5ec395808af358e74c4fccd993f78896e232a62b32;无提交/部署。
  • 本轮实际:8条断言,映射6个既有用例,全部Pass;不是8个新增用例。不重跑未受影响41项既有Pass,2个fixture Blocked仍保留。最新49个独立子场景=47Pass/0Fail/2Blocked。原#36/round22失败完整保留,不宣称工单Closed或全量QA通过。
  • 前置:仅Task21本轮合成对象按primary授权恢复tax_rate=null/charge_days=null/credit=0.000/property=null/flag=true,成本23/状态/金额未变,先HTTP确认原哨兵后才操作。
断言 既有用例 实际 状态
DEF106-R1-ORDINARY-UI QA106-EDIT-DRIFT-01 同原Task21 finished+paid普通UI,1次PUT keys=status/industry_subject/memo/exclude_from_gross_margin,0成本PUT,HTTP200/code200;原null/credit0及费用保持 Pass
DEF106-R1-PAID-PM QA106-LOCK-paid-PM {"id":"DEF106-R1-PAID-PM","taskId":21,"http":200,"code":200,"flag":true,"otherTaskAndCostFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-paid-PM"} Pass
DEF106-R1-PROCESSING-PM QA106-LOCK-processing-PM {"id":"DEF106-R1-PROCESSING-PM","taskId":20,"http":200,"code":200,"flag":true,"financialAndCostFieldsUnchanged":true,"unsubmittedProjectionDifferences":["interview_subject","cpe_dept","cpe_interview_id"],"status":"Pass","caseId":"QA106-LOCK-processing-PM"} Pass
DEF106-R1-PAID-PURE QA106-LOCK-paid-PM {"id":"DEF106-R1-PAID-PURE","taskId":21,"http":200,"code":200,"flag":false,"otherFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-paid-PM"} Pass
DEF106-R1-PAID-MIXED QA106-LOCK-paid-MIX {"id":"DEF106-R1-PAID-MIXED","taskId":21,"http":403,"code":403,"message":"请单独修改毛利率标记,不要同时修改结算字段。","allTaskCostFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-paid-MIX"} Pass
DEF106-R1-PROCESSING-PURE QA106-LOCK-processing-PM {"id":"DEF106-R1-PROCESSING-PURE","taskId":20,"http":200,"code":200,"flag":false,"otherFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-processing-PM"} Pass
DEF106-R1-PROCESSING-MIXED QA106-LOCK-processing-MIX {"id":"DEF106-R1-PROCESSING-MIXED","taskId":20,"http":403,"code":403,"message":"请单独修改毛利率标记,不要同时修改结算字段。","allTaskCostFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-processing-MIX"} Pass
DEF106-R1-UNRELATED QA106-LOCK-UNRELATED {"id":"DEF106-R1-UNRELATED","taskId":2,"actorId":3,"pmId":2,"paId":1,"http":403,"code":403,"allFieldsUnchanged":true,"status":"Pass","caseId":"QA106-LOCK-UNRELATED"} Pass

精确字段边界

Task21普通UI前后:actual_price/total_price/tax/currency、收费时长、status=finished/payment_status=paid等金融字段及Cost DTO全字段不变;tax_rate仍null、charge_days仍null、credit仍0.000。真实PG只读核对property只包含请求显式提交的industry_subject;interview_subject/cpe_dept/cpe_interview_id三键仍不存在,没有默认键写入。公开DTO三项null→空串来自原有getter在property字典缺键时的显示默认;此差异已逐项保留,未宣称所有DTO字段相同,也未掩盖成未观测。

证据与复用

outputs/issue-106-implementation-20261030/qa/def-r1-results.json(含typed before/after)、def106-01-sentinel-reset-receipt.json、def-r1-task21-sentinel-http-before-result.json、def-r1-ordinary-ui-requests.json、def-r1-task21-ordinary-http-after-result.json、def-r1-task21-model-after.json、def-r1-related-api-assertions.json。各操作intent/result均保留,无token/secret。

原Fail/环境500及旧journals339/340/342不覆盖。#36只是QA修复验证通过,实际工单status待读回,不擅自写Closed。新问题唯一owner为Backend责任线程01a09aab-60e4-7632-b0a2-ac457725369d。创建/比率/Excel/提醒旧证据按影响复用,owner55项开发测试不计QA亲测。

剩余Blocked:真实回款FIFO/税/预付缺1条合成InvoiceCompanies父对象及跨年前置,未越model权限;团队数值接口无真实关联fixture。不能据此说完整49项均通过。临时name_en/权限清理将在本批Redmine读回后执行,账号保持active,保留全部QA106业务fixture,不改旧105/FX/源码,不停止Ops服务。

Actions

Also available in: PDF Atom