明确回单自动核验范围并接收独立复核(09-17-company-loan-principal-repayment)
接收 4c37fcee..1c4633b6 共 62 个文件的独立只读复核,记录 REVIEWED_NO_BLOCKER,保留原报告及未重跑测试的边界。
本期保留 N1 的保守策略:报销图片回单与无可提取文字的扫描件 PDF 需财务核对付款依据并由合格人员独立复核;可读 PDF 仍须满足全部自动核验条件。补齐业务规则文档。
三项 P3 留作后续,锁内解析性能问题优先评估;部署后增加本地 PDF 解析冒烟计划。
仅文档改动。任务、治理、流程和差异检查通过;文档注册保留原有 22 项未登记告警。复用 1c4633b6 已通过的代码验证,不重复全量业务测试。
第五轮 PASS 仍只绑定 1c4633b6,最终发布候选须取得匹配的门禁回执。真实还款及生产启用未验收,仅本地提交。
这个提交包含在:
@@ -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 协议错误,尚未执行手机登录;不能把这一结果写成认证故障。
|
||||
|
||||
@@ -158,6 +158,7 @@ R5 公网验收后确认:正式发票/OCR 上传入口只接受 PDF 发票文
|
||||
- 付款批次详情按报销单分组,先显示报销单摘要,再显示费用类型、发生日期、说明、金额和明细小计,最后显示脱敏收款信息与付款结果。费用明细只用于复核,不改写冻结的批次付款金额;二者不一致时提示返回原报销单核对。
|
||||
- 付款批次列表不加载费用明细、回单文件名或其他高敏材料,只在授权详情中按需读取。
|
||||
- PDF、JPG、PNG、WEBP 银行回单可在付款批次详情中在线查看。在线查看由系统记录固定用途“付款批次内在线预览”并写审计,不要求用户重复填写。
|
||||
- 本期报销回单自动核验仅支持可从原件提取文字、且同时满足正式回单、明确成功和字段匹配等检查的 PDF。JPG、PNG、WEBP 和没有可提取文字的扫描件 PDF 仍可上传、在线查看及提取 OCR 字段;财务须核对完整原件并录入付款依据,再由另一名符合本单独立性要求的人员复核,才能继续登记付款。没有合格独立复核人时保持待核对;人工核对不能覆盖已知的非最终说明或其他阻断条件。
|
||||
- 回单下载到本地仍要求填写用途并写下载审计;治理标签使用“下载需说明用途”。在线查看和下载都必须重新检查权限、部门范围、作废/隔离状态、大小、存储对象和实际文件内容,不直接暴露存储路径。
|
||||
- 付款核验分别判断凭证性质、字段和交易归属。载明“不作为最终依据”或仅表示提交、受理的回执不能用于登记付款完成,即使金额、账号和成功字样能识别;公司收到款项的借入回单也不能证明公司已经还款。机器无法判断凭证性质时,应核对完整原件,不能默认按正式付款回单处理。
|
||||
- 正式回单没有“交易成功”字样,但原件明确记录本公司已经发生的支出时,财务可选择“正式回单记载公司已记账支出”,填写票面记账日期和依据说明,再由本批次适用的确认人核对。不要补写银行未记载的成功状态;非最终说明、方向矛盾、归属不清或重复交易不能通过此方式绕过。核验确认本身不登记付款,最终登记仍须重验;旧核验缺少凭证性质时须在详情中显式更新并重新核对。
|
||||
|
||||
在新工单中引用
屏蔽一个用户