缺陷 #15
openQA验收 #13: CNB #102 专家费支付中状态|测试环境验收
#102 R2:仅合成专家成本24/25导出支付列表返回HTTP500
0%
Description
仅测试tcrm-api,BE1.20.5b1/FE2.16.4-beta.1,管理员,2026-10-21 R2。POST /v1/finances/export,Content-Type application/json,body={export_method:export_ids,export_type:expert,finance_ids:[24,25]}。预期返回只含两条本轮合成成本的有效xlsx;实际HTTP500,未自动重试。Task126成本24为paid,Task125成本25为processing。合成专家574235、收款主档11为corporate,银行/账户均QA102-NONPAYABLE测试文本,无真实联系方式。成本25冻结快照带主档id11及bank/bank_country/account/username/company_payment,故意缺swift_code(进入processing契约不要求此项);开始支付成功后通过同一合成主档公开API把swift_code从QA102-OLD改为QA102-NEW-MASTER,并GET确认新值。原计划验证冻结导出不得从主档补入新值,但导出HTTP500,故无法验证。仅此请求,未扩大导出范围、未触碰真实数据、未源码修复、未真实付款或通知。请求/fixture脚本outputs/issue-102-20261021/qa/round-08-frozen-export.mjs;失败原响应保存在r2-frozen-export.xlsx(不能按有效工作簿使用),待记录文件类型及hash。请Backend/Ops只读核对该时段导出日志并定位,不以本地测试通过替代线上证据。关联QA#13/EXPORT-01。
RA Updated by Redmine Admin 21 days ago
根因补充(Ops运行栈确认,证据由统筹转交):同一原导出请求在11:29:44抛AttributeError NoneType.strftime,位置api/finance/excel_exports.py:1879 expert_template;Task.started_at为空。Backend已确认该行在旧b98存在,#102未修改;swift缺失本身不会抛异常。Ops本地原始证据路径待最终报告补充。QA限定GET亦确认Task125/126.started_at和ended_at均null。原R2 HTTP500/Fail保留,缺陷未修复也未关闭。另按用户明确授权进行R3正常完整时间fixture:合法撤回成本25(带R3原因)且确认Task125已无processing锁,再经正常Task API补started_at10:00/ended_at11:00/duration60、is_recorded=false;同Task成本23改为paid、25为processing,二者冻前都刻意缺SWIFT,冻后只改合成专家主档11 SWIFT。仅导出[23,25]返回HTTP200有效xlsx,J2/J3为空且不含冻后主档值,冻结导出专项通过;不是对原空时间失败的修复或盲重试。Task126时间仍原样未改。
RA Updated by Redmine Admin 21 days ago
Ops脱敏原始证据已提供并由QA读取:outputs/issue-102-20261021/release/export-500-runtime-evidence.md。文件记录测试服务现有Runtime Logs中11:29:44两条相同栈:AttributeError NoneType.strftime,/code/api/finance/excel_exports.py:1879 expert_template,未重发请求。证据边界:Ops栈直接证明空值调用strftime,Ops未业务查询确认字段;结合Backend该行源码判断和QA已确认Task125/126.started_at=null,归因空开始时间。R2 Fail及R3完整时间冻结专项Pass分别保留;本次仅补证据路径,无修复、无重导出或部署。