汇总已落盘的借款本金与还款、兼容历史编号的周期化编号、付款责任与回单核验、报销进度和排序、PWA/采购事务、错误原因与日期校验及ERP退役。 统一共享预算池锁序和锁后判断,恢复差旅原预算选择,补原因码固定夹具及反向完整性检查。 纳入配套迁移、测试、受管QA、分层验收合同、规约及任务记录;原始证据留在ignored artifacts。 关联任务:09-17-company-loan-principal-repayment、09-17-erp-exclusive-retirement、09-18-reimbursement-periodic-numbering、09-08-reimbursement-payment-closeout、09-18-local-concurrency-product-fixes、09-19-budget-pool-concurrency、09-05-error-explainability-payment-readiness。 预算补审由Claude定向验证2文件928项通过,原4446/28及r6结果仍仅对应各自历史输入;本轮未重跑测试。 完整新候选门禁、R1真实入口接入与12项公网义务仍开放。生产编号未启用、差旅仍冻结;不推送、不部署,不宣称发布资格。
4.5 KiB
4.5 KiB
报销单周期编号与历史兼容
Goal
面向不足10人的科技初创公司,核对国内财务、OA、ERP的公开编号规则,形成简短、稳定、易核对的本项目编号方案;保留历史编号、审批、付款及审计引用。报销按月已由用户选择,其他类型按已复核矩阵实施。
Background
用户指出现行报销序号长期累计不合适。实施前documentSequence默认BX/YYYYMMDD/4位/none,issueDocumentNumber仅原子递增,不执行周期重置;seed-config保留none。报销创建草稿时取号,提交仅为历史缺号单补号。不能只改reset_period元数据就声称已支持周期重置。
用户进一步明确已经按旧规则生成多个实际业务。历史兼容是切换前提,不能要求重建单据、重走审批、重新付款或重贴旧资产标签。付款导出的客户流水号由持久化batch_no派生(paymentOrderXls.js:24),批次明细保存entity_code快照(paymentBatches.js:1726),禁止仅改显示号而让银行材料、通知与原记录失配。
Scope
- 报销周期已由用户明确选择按月,形式BX-202609-0001,下一月BX-202610-0001。后续用户要求先调研国内产品惯例与不足10人公司的适用规则;2026-09-18用户授权复核适合后实施,矩阵已通过主会话多角度复核。
- 生效后新创建的报销草稿使用新规则;已创建草稿和所有已有编号保留,不重排历史审批/付款引用。
- 使用既有业务时区,规则归属在创建时固定;即时取号使用该次业务时刻,采购仍在首次提交时确定日期段;序号允许因取消或删除留下空档,已用号码不回收。
- 同一周期并发创建必须唯一;数据库失败不能产生重复编号。历史缺号补号的归属规则随最终设计明确。
- 采用增量切换:旧已编号业务全状态保留原号;切换前未编号的既有草稿保留旧规则资格,延续原取号时机;新建对象才采用批准的新规则。新付款批次可以包含旧号报销,逐项保留来源编号。
- 固定、可追溯的切换点与规则选择须持久化,不能依靠每次打开/审批时的当前日期重算编号。方案建议在准备就绪后的月初统一启用,具体日期待上线条件满足,不自动预约或部署。
- 新增只读调研:付款批次、借款/还款、采购、资产/盘点、项目、合同、人员/主数据与外部来源标识;核对实际在用取号路径与官方公开文档,区分厂商可配能力、产品默认值和本项目建议。
- 除已选择的报销按月外,其他内部编号按design矩阵纳入本轮本地实施;冻结差旅、真实外部来源标识不自动纳入改号。
Out of Scope
历史全量改号、线上数据回填、真实配置/密钥/备份读取、提交推送部署。本轮已获批的特定付款批次线上只读查询不是编号发布授权。
Acceptance
- N1:完成有来源的跨系统调研及本项目编号矩阵,报销按月选择保留;明确其余建议、执行起点和历史缺号处理。
- N2:未占用的新周期首张为0001,否则接续同格式历史占号;同周期递增,日期段与周期一致,午夜/年界按既有业务时区判定。
- N3:真实隔离PG并发唯一性/事务失败边界通过;不靠先读最大号再无锁加一。
- N4:历史单号、已有草稿及其审批/付款引用原样保留,范围外单据编号不变。
- N5:列表/详情/搜索/自然排序及报销审批付款链兼容两种格式,本地通过不代表上线。
- N6:旧待复核批次、已导出制单的客户流水号与行绑定、entity_code快照、审计/通知引用均保持;新批次关联旧报销及新旧混合来源完整通过。
- N7:已编号与未编号旧草稿、切换边界并发/在途请求、回退再启用、同格式已有号码冲突分别验证;旧计数与新计数隔离且已用号码不回收。
Test Plan
先检查documentSequence.service.test.js、草稿创建/补号路由及现有搜索排序消费者;复用合成独占PG合同验证并发、周期边界和回滚。依照design定稿与implement执行,不再重复索取同范围批准。
Open Questions
- 范围已批准。生产启用日期、生产只读摘要与独立复核另行落实,不妨碍本地实施。
本地验收依据见implement末尾回执。N5的API/消费者及构建兼容已检查,浏览器完整验收已随09-06 g20-full-r6的372/372通过;独立复核PENDING。本task不据本地代码完成而归档或声明已上线。