Repository navigation
iPaper 1.12.1 — 额度边界修复(时间增额、部署上限、重译计划、实际用量)
iPaper 1.12.1 修复 1.12.0 独立复核确认的四类额度边界缺陷。仅 Web 变化;Translation/Document Worker 复用已验证的 1.2.0 摘要。
R1 仅延长时间也能继续;时间耗尽不再被判为可续跑
- 续跑计划独立判定时间维度:有计划中工作且累计时间已用满时返回
sufficient=false、time.exhausted=true、overage.seconds.required = 已用+1(下限,不是剩余耗时估计)。 POST …/resume在时间耗尽且仍有工作时拒绝入队(budget_time_exhausted带minimum),不会入队后立刻再次超时;只调整小时数即可继续,其他维度无需改动,累计用量不清零。- 前端"是否确有变化"改为考虑四个维度(此前遗漏
seconds,只延长小时数时按钮仍禁用),并显示"累计执行时间已用完(X 分钟 / 上限 Y 分钟)"。 - 反向也同样修正:已无待发请求时续跑只做发布,不因时间耗尽失败(状态/取消检查与执行时间检查分离,逐块循环只在真正需要工作时检查时间)。
R2 所有预算路径都受部署上限约束
IPAPER_TRANSLATION_MAX_*明确是最大值;校验作用于最终合成额度(默认、空预算、部分字段、显式预算四条路径逐维度比对)。- 上限低于内置默认值时有效默认值被压到该上限(启动日志说明,预览返回
defaultCappedByCeiling),不会出现"上限 100、默认 500 仍准入";显式超限返回invalid_budget并指出维度;合成异常超限返回 500 类invalid_budget_configuration,不静默通过。
R3 单块重译的续跑计划与执行一致
resume_plan使用与执行侧相同的force=True(kind == 'retranslate')重译语义:旧成功译文不再被当作本次重译已完成,当前任务已保存的有效子单元仍从估算中扣除;预览与执行对同一块给出相同请求数。
R4 实际用量按输入/输出分别记完整性
actual_usage分别统计输入与输出(inputComplete/outputComplete、各自缺失次数);只有两个维度都有合法供应商数据才complete。单项缺失显示未知/部分统计,未按 0 记,也未改变事前预留或推断未计费。
回归
- 复核的四项私有复现已纳入
tests/test_translation_budget.py,并按修复后的契约补充:降上限后较小范围可准入、四条预算路径均受上限约束、无待发请求时耗尽时钟仍能完成发布、五种供应商用量形状、零请求与进行中请求。 - 修正两处弱断言:截图量级执行改用真实预扣的计数假模型(
usage.requests == calls且200 ≤ requests ≤ 245);"低于已用量"分支改用两请求任务真正走到。 tests/test_daily_scheduler_state.py改为按运行时日期推导期望(此前硬编码日期,跨过"今天"后会误判)。- 浏览器套件新增 R1 回归:耗尽时间的任务只把累计小时数从 1 改到 4、其余维度不动即可提交成功。
组件
| 仓库 | 版本 | Registry 摘要 |
|---|---|---|
ifzzh520/ipaper |
1.12.1 | sha256:0d04b51819dcc79c4b29aaaa66f3017681a094ba9136259cfa95faa6b72e2ad1 |
ifzzh520/ipaper-translation-worker |
1.2.0 | sha256:a5fa3b4316802c15e99a7387baa49604166fb6092a1aca34b8c5e34de3d52003 |
ifzzh520/ipaper-document-worker |
1.2.0 | sha256:2c501ad68bdfc2e282518a813c46e548f598b1af85acc1069058741a45587298 |
源码提交 d8748f0。
限制与回退
- 时间维度只能判断"是否已耗尽",无法预估剩余时长;额度仍是准入上限,不承诺必然完成。
- 回退基线 Web 1.12.0 + Workers 1.2.0;无 schema 改动,回退只切镜像。