- 逐项记录修复内容、提交号与对应验收测试 - 记录全量测试结果(后端 87 passed/覆盖率 88.50%、E2E 3 passed、 lint/构建/迁移一致性/pip-audit 通过)与环境限制项(LibreOffice、 npm audit 网络、PostgreSQL 并发门禁) - 明确仍开放的功能缺口与外部门禁不变
5.1 KiB
5.1 KiB
剩余问题修复记录 · 2026-09-26
对应 docs/remaining-issues-2026-09-26.html 第三节(F01–F08)的修复交付记录。
分支:fix/remaining-issues-2026-09-26(基线 0ac0c4e 起逐项小步提交)。
修复状态
| 编号 | 状态 | 提交 | 说明 |
|---|---|---|---|
| F01 · P0 · 符号链接清理 | 已修复 | 36fd5f3 |
根目录/用户目录/目标文件先 lstat 完整校验(拒绝符号链接与非目录/非普通文件),校验失败不删除任何磁盘文件;失败清理只处理本次登记的受控文件并通过 O_NOFOLLOW 目录描述符 unlink,目录被换成符号链接时拒绝删除。测试覆盖用户目录链接、目标链接、运行中目录被换成链接(受保护文件字节不变)、失败后重试成功。 |
| F02 · P1 · 清理失败与孤儿 | 已修复 | 54dc58d |
清理受阻时记录不含敏感数据的 WARNING(任务编号+文件名)并保留 job.path 使残留可追踪;cleanup_formula_exports 新增孤儿 .xlsx 回收:超过 24h 保留期且不属于未过期成功任务的文件统一回收,不触碰活动任务。测试含 unlink 权限错误注入→告警→恢复权限后回收且其他任务文件不受影响。 |
| F03 · P1 · 证据弹窗卡加载 | 已修复 | 6cf236a |
同期间同页点击直接返回;第二页点击当前期间回第一页刷新;失败显示错误+重试按钮;空结果显示空态行。E2E 覆盖重复点击、快速切换、第二页切期间、失败重试、空列表。 |
| F04 · P1 · 载入定义丢上下文 | 已修复 | 9a5ab26 |
载入定义时以“用户消息+助手确认”把名称/含义/范围/缺失处理/表达式写入可见对话上下文(需勾选同意才发送),修改后仍需重新确认;选择空选项同步清理定义与上下文。服务端单条消息上限 1000→2000 容纳完整定义。E2E 验证模型请求包含原定义且“乘以 100”修改生效。 |
| F05 · P1 · 定义库并发与审计 | 已修复 | 0aaa87e |
迁移 0005 增加 revision;保存在单事务内锁定用户所属行:配额(50/数据集)原子化、同名更新必须携带匹配 revision(409 冲突)、审计与变更同事务回滚;保存限流 30/h。前端保存同名定义携带 revision 并明示覆盖行为。PostgreSQL 并发配额用例作为独立门禁(本机 SQLite 自动跳过)。 |
| F06 · P1 · 工作簿可解释性 | 已修复 | 9962573 |
参数页“产品毛利率”改为只读快照(可编辑列全部为“否”),写明调整位置是计算明细 MarginRate 列;参数页新增维度键-显示名完整对照;使用说明新增输入字典(Revenue/Cost/GrossInput/MarginRate/ListAmount 的单位、来源字段、修改位置、缺失含义)与固定结构边界行。 |
| F07 · P1 · 对账容差 | 已修复 | 649fec4 |
对账检查页新增容差列:人数严格相等、金额 0.01、比率 0.0001,状态公式按 ABS(差异)<=容差 判定;自定义列用 to_decimal 白名单表达式解释器(不执行代码)计算 Decimal 服务器参考,不再标注“需业务验收”;参数页写明容差规则与“调整需财务负责人批准”。 |
| F08 · P1 · 撤权与生命周期 | 已修复 | 5ebe83a |
worker 执行前重新核验账号 is_active 与 admin/analyst 角色(撤权/停用后排队任务失败、不发布);导出状态/下载接口补齐角色白名单(降为 viewer 后 403);import_worker 对超过 15 分钟的 processing 任务重新认领(PG 依赖咨询锁立即恢复),崩溃重启不再无限停留。 |
本轮完整测试记录(2026-09-26,SQLite 隔离环境)
- 后端:87 passed,7 skipped,90.3 秒;finance 覆盖率 88.50%(85% 门槛通过)。
跳过项:4 项 LibreOffice 重算(本机未安装 soffice,环境门禁,CI 中执行)、1 项 PostgreSQL 并发配额(依赖 PG 行锁,生产库单独验证)、1 项原附件全量 UI(未设置
REFERENCE_DATASET_NAME)。 - 浏览器 E2E:3 passed,1 skipped,21.0 秒。 新隔离数据库(
var/e2e-test.sqlite3+ 独立 MEDIA_ROOT),覆盖追问、保存定义、关闭重开、载入定义修改后生成(乘以 100)、下载,含 F03 全部交互回归(重复点击/快速切换/失败重试/空列表/翻页)、桌面与手机。 - Ruff check / ruff format、TypeScript(tsc --noEmit)、Vite 构建、Django check、
makemigrations --check(迁移一致)、collectstatic:全部通过。 pip-audit:无已知漏洞。npm audit --omit=dev:本机 registry 访问失败(网络受限,CI 中执行),记录为环境限制项。
仍开放的事项(与报告一致,非本轮代码范围)
- 第四节功能缺口(网页主汇总表新列、草稿续聊、原附件 332,830 行导出、高基数与可访问性专项等)与第五节外部门禁(目标 Excel 实机、财务口径签字、AI 真实联调、生产基础设施、PostgreSQL/SLA、安全运营)仍按原报告执行,责任人与关闭证据不变。
- F07 容差数值(金额 0.01 / 比率 0.0001)为工程默认,仍需财务负责人确认或调整后才视为财务口径关闭。