# #38 本地独立修复回归 — 2026-11-01 **本地37项Pass /0Fail;未部署,原staging Fail不覆盖。** Backend候选base473cc345,source digest `af64e859e8b54281a24f74b56c2185372b86fdfe31c06c7fd953e052895ce818`,services SHA `fb02b2b896ae61032067205a94c17cabd8fdda3ee95c96861b53812ec1fefb79`,tests SHA `06758d048f77bf8ec1c49e3edae85c041ef28de0866fa440f663c262554c3cd7`。执行前后全部hash一致;Backend工作区只有原owner两文件修改,QA未写产品文件。 执行时间:2026-11-01T01:31:55.087930+08:00。环境crm_backend;内存SQLite、禁repo env/网络/持久DB,使用真实Django URL→DRF APIClient→实际视图/ORM及真实xlsx生成/读取。**APIClient不等于网络HTTP;force_authenticate仅临时admin,不等于密码登录或真实销售身份验收。** 没有启动服务、浏览器、PG、迁移或测试站请求。 ## 实际覆盖 | 影响 | 独立观察 | 结果与限制 | | --- | --- | --- | | IMP106-05-HC01 | 全部/a/b/c/无匹配销售 × overview/companies/monthly/collection-status,共20项JSON视图观察 | 双销售仅B排除:baseline公司count2、候选count1;overview每销售各1。除排除数外完整响应相同。单销售/多销售/无归属/无匹配和重复ID均纳入;金额按既有原列表分摊权重保持,未另修历史重复归属。 | | IMP106-05-HC03 | 3项monthly按公司筛选,独立9/10/12月期望与原始响应核对 | 每公司/每月独立去重,空月0;年范围与月范围各用真实参数,未混淆。 | | IMP106-05-HC02 | 原pair本地全部计入/全部排除 × companies/monthly,共4项 | count0/2而非4,原income2000/cost600不变;70%及applicable=false/0基数正确;临时flag阶段后恢复。 | | IMP106-05-HC04 | 5种筛选 × companies-export/collection-status-export,共10项 | 实际返回xlsx经openpyxl读取,逐单元格与旧baseline一致;客户导出仍4列,没有排除数字列,不能宣称导出修复了不存在的字段。工作簿在内存解析,原始逐格值保留JSONL,不冒称已保存独立xlsx二进制文件。 | 总计37项独立参数化断言,74份candidate/baseline响应,独立规格oracle来自合成输入,不调用候选计算期望。逐条预期/实际/层级/影响/时间见`case-index.json`;原始数据`execution-result.json`、`request-responses-r2-oracle-corrected.jsonl`。全临时账号/角色/公司/项目/Task/Cost模型快照恢复后完全一致;每个只读视图阶段未改DB。临时测试库由finally销毁,不新建持久库或改现有业务数据。 首轮runner断言错误与纠正:`execution.log`及首2份响应保留。QA错误假设重复销售ID先归一化,但既有helper保留列表权重;candidate/baseline原金额相同。仅修QA oracle到既有权重,`execution-r2.log`通过,不计产品失败或第二修复轮。8项offline支持自检不加到37。 ## 原环境与剩余边界 原staging #35 journal356和#38 count2失败、真实截图全部保留,测试站尚未部署候选,不能把本地Pass说成线上已修或自动Closed。旧14项/其他角色未重跑,角色未测决定不变。PG/迁移/网络HTTP/浏览器新页面/真实供应商/性能均未覆盖;纯数值修复不要求额外测试发布。开发16Pass/red3Fail只引用owner证据,不与独立37相加。AOCI既有静态索引阻断不计业务失败或新增治理。 本轮QA可交primary审收据并决定后续;无source/config/Git/部署/生产/现有账号或业务fixture操作。Redmine38/35修复验证journal及读回见本目录writeback-receipt.json。