明确回单自动核验范围并接收独立复核(09-17-company-loan-principal-repayment)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s

接收 4c37fcee..1c4633b6 共 62 个文件的独立只读复核,记录 REVIEWED_NO_BLOCKER,保留原报告及未重跑测试的边界。
本期保留 N1 的保守策略:报销图片回单与无可提取文字的扫描件 PDF 需财务核对付款依据并由合格人员独立复核;可读 PDF 仍须满足全部自动核验条件。补齐业务规则文档。
三项 P3 留作后续,锁内解析性能问题优先评估;部署后增加本地 PDF 解析冒烟计划。

仅文档改动。任务、治理、流程和差异检查通过;文档注册保留原有 22 项未登记告警。复用 1c4633b6 已通过的代码验证,不重复全量业务测试。
第五轮 PASS 仍只绑定 1c4633b6,最终发布候选须取得匹配的门禁回执。真实还款及生产启用未验收,仅本地提交。
这个提交包含在:
2026-10-09 12:49:22 +08:00
父节点 1c4633b62a
当前提交 beb9f02c19
共修改 3 个文件,包含 39 行新增和 0 行删除
@@ -1,3 +1,33 @@
## 2026-10-09 N3 独立复核接收与文档收尾
已接收用户回传的 Claude 独立只读复核,范围为 `4c37fcee..1c4633b6` 的 62 个文件,结论 **REVIEWED_NO_BLOCKER**,无 P0/P1。主会话核对交审包后确认:当前只有本文件新增复核记录,其余 61 个文件摘要仍一致;原始复核文字保留在下节。复核人未重新运行测试,不把第五轮结果写成独立测试结果。
- **P2 本期采用现有保守策略**:依据已批准 N1 设计第 2 条,图片与无可提取文字的扫描件 PDF 可继续上传、预览和 OCR 字段提取,但报销回单须由财务核对原件、录入付款依据,再由另一名合格人员独立复核;可读 PDF 仍须满足全部付款凭证条件才可自动核验。没有合格独立复核人时保持待核对,不能把借款关联确认推广到普通报销或要求技术员工参与。已补入 `docs/报销发票附件规则.md`,不修改程序,不扩大借款关联模式的适用范围。
- **P3 后续安排**:优先评估把文件读取及 PDF 解析移到锁外,锁内保留摘要、版本和全部状态重验,须以并发反例验证后单独实施;旧记录缺少云端限制字段的重检差异保留为已知限制;记账日期下限须先区分正常付款和历史补记等语义,再决定提示或硬校验。本轮三项均未实施。
- **验证依据**:`1c4633b6` 第五轮完整门禁及只读回执重验 PASS;82 迁移、服务端 4558 通过/1 项既有可选跳过、浏览器 372 通过且零失败/跳过/重试,源码一致性和专用资源清理通过。当前只收尾规则和任务文档,复用未变代码的验证,另做文档/治理检查,不重复全量业务测试。
- **提交与候选边界**:沿既有 N3 本地提交授权单独保存本次三份文档,实际提交和检查结果写入准备目录的接收回执。原第五轮 PASS 仍只绑定 `1c4633b6`;文档收尾提交不冒用该回执取得新 SHA 的发布资格。N4 冻结最终发布候选后须按现行门禁取得有效回执,不修改原回执或门禁规则。
- **下一阶段**:N4 发布准备纳入部署后的本地 PDF 解析冒烟:使用合成正式付款 PDF 检查解析依赖和工作线程可用,不调用真实云 OCR、不写业务。生产只读核实、推送、部署及 N5/N6 真实台账/付款仍按各自明确授权办理。整体任务继续 `in_progress`;下方“独立复核待完成”为各历史时点。
## 2026-10-09 独立只读代码复核(Claude,非实施会话)
范围按 `readonly-review-handoff-r5.json`:`4c37fcee..1c4633b6` 共 62 个文件,复核时逐个核对摘要,均与交审包一致。第五轮门禁 `1c4633b6` 为 PASS(82 迁移、服务端 4558/1 既有可选跳过、浏览器 372/372),本次复核未重跑测试,也未改动源码。
**结论:未发现阻断问题(无 P0/P1)**;有 1 项需要产品确认,3 项为低优先级,均可在启用前或后续处理。
- 已核对且无发现的部分:
- 迁移只做增量:关联授权与范围、事件不可改删;`approval_mode` 冻结后不可转换;所有决定记录在数据库层都校验授权版本/事件、`purpose`、确认人与经办人分离、范围一致。经办触发器拒绝确认人担任经办,同时禁用 Q6。
- 服务端 `decisionFields`/`assertDecision` 已接入以下消费者:付款审批/退回、清单、归属、终态、未付款、SR、晚到/追回、人工回单、最终核销/取消,覆盖完整。冲突原因只豁免收款人,已作废回单的上传人仍计入冲突。退回在数据库层禁止进入 `reviewed`。
- 锁序保持"批次 → 回单 advisory/附件 → 出借人 → 人员",授权停用只锁出借人,未发现逆序。
- 凭证分类采取保守策略:非最终、贷方、矛盾、多回单都会阻断,人工不能覆盖;`booked_debit` 不补造成功文字;PDF 解析在受限 worker 中运行,出错时视为未知。
- 4 处 e2e 修正(R106 就绪、企微 Worker 隔离、PWA 属性断言、报销人工回单 `paymentProof`)语义与原断言等价或更严,没有放宽期限、增加重试或删除断言。
- **P2 待产品确认**:共享报销消费者的行为有变化。`paymentDocumentReady` 的自动路径只接受 `pdf_text`,因此 JPG/PNG/WEBP 及扫描件 PDF 的报销回单不再自动核验。这类回单一律需要人工录入 `paymentProof` 并经独立复核(`server/src/services/paymentReceiptDocument.js` 的 `paymentDocumentReady`;`paymentReceiptManualReview.js` 中 `paymentProof` 会强制 `requiresIndependentReview`)。design 第 2 条隐含了这一点,但 `docs/报销发票附件规则.md` 仍写着回单支持 JPG/PNG/WEBP,没有说明图片回单不能自动核验。请确认可以接受,并补充规则说明。
- P3:`document-check` 在 `lockContext` 取得全局回单 advisory 锁(键 1)后,才读文件、解析 PDF 页数并运行最长 5 秒的 worker(`paymentReceiptManualPersistence.js` 的 `refreshReceiptDocument`)。这段时间内全系统的回单认领、人工核验和执行都要排队,默认 5 秒超时的并发事务可能失败。建议把读取和解析移到加锁之前,加锁后只复核摘要和版本。
- P3:旧记录重检只用本地 PDF 文本重新分类。原云端字段没有留存,所以 `withProviderRestrictions` 无法再次施加;若本地文本能判为正式回单并显示成功,旧记录可以直接自动匹配。风险低,因为是同一原件,但与新上传的双重检查不完全一致。
- P3:`booked_debit` 的 `bookedOn` 只限制不晚于今天,没有与批次审批或导出时间做下限比对。目前依靠字段匹配和交易唯一来兜底,可以考虑增加"不早于审批日"的提示或校验。
- 观察(非缺陷):所有经理/CEO 的导航都会出现"公司借款",非指定人员打开后只看到空的授权列表。单测已明确断言这一行为,视为产品选择。另外,生产镜像在构建时用 `npm ci` 安装 `pdfjs-dist` 及 ARM 版 canvas 可选依赖,部署后应实测一次 PDF 分类不是一律 unknown;若一律 unknown 不会造成错误放行,只会全部转人工。
独立复核状态:**REVIEWED_NO_BLOCKER**。真实还款、生产启用、推送和部署仍按原授权边界处理,本复核不构成公网或交付验收。
## 2026-10-09 N3 第四轮结果及第五轮候选验证
第四轮候选 `8e17e8df` 完整门禁为 **FAIL**:82 迁移、服务端 4558 通过/1 项既有可选跳过、静态/构建及业务回归通过;浏览器 371 通过/1 失败、零跳过/重试。报销付款主链路、PWA 升级和企微历史三项均通过,环境、源码一致性及自有资源清理通过。
@@ -1,5 +1,13 @@
# 公司借款台账与本金归还
## 2026-10-09 N3 独立复核接收与 P2 口径确认
已接收 `4c37fcee..1c4633b6` 共 62 文件的独立只读复核,结论 **REVIEWED_NO_BLOCKER**;复核前摘要一致,复核人未改源码、未重跑测试。代码验证依据仍为 `1c4633b6` 第五轮完整门禁 PASS,具体接收、P3 后续项及原始报告见 implement 顶部。
本期接受已批准 N1 保守策略的共享报销影响,并补齐规则事实源:JPG/PNG/WEBP 及无可提取文字的扫描件 PDF 继续支持上传、预览和 OCR 字段提取,付款依据须由财务核对并由另一名合格人员独立复核;可读 PDF 也须满足全部自动核验条件。此处不改变程序、权限或借款关联模式。P3 的锁内解析、旧证据字段差异和记账日期下限留作后续,未实施。
本次仅三份文档收尾,沿既有授权本地提交并做文档/治理检查;未变代码不重复全量测试。原 PASS 只绑定 `1c4633b6`,最终发布候选须在 N4 取得与其提交一致的门禁回执。独立代码复核已完成,真实还款、生产启用和公网验收仍未完成;整体任务保持 `in_progress`,生产查询、推送、部署及真实业务写入另按明确授权办理。
## 2026-10-09 N3 第四轮结果及手机截图前置检查
候选 `8e17e8df` 第四轮完整门禁为 FAIL:82 迁移、服务端 4558 通过/1 项既有可选跳过,静态/构建及业务回归通过;浏览器 371 通过/1 失败、零跳过/重试。报销付款、PWA 升级和企微历史三项均通过。唯一失败为 R106 手机登录前首次截图的 Chromium 协议错误,尚未执行手机登录;不能把这一结果写成认证故障。