完善借款、编号、付款与预算并发及验收(09-06-release-gate-integrity)
汇总已落盘的借款本金与还款、兼容历史编号的周期化编号、付款责任与回单核验、报销进度和排序、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项公网义务仍开放。生产编号未启用、差旅仍冻结;不推送、不部署,不宣称发布资格。
这个提交包含在:
@@ -1,6 +1,6 @@
|
||||
Domain,Tier,Primary_Roles,PC_Routes,Mobile_WeCom_Routes,Server_Routes,Main_Flow,Exception_Flow,Permission_Flow,Current_Coverage,Known_Gaps,Best_Practice_Delta,Next_Action
|
||||
"认证与企业微信入口","P0","employee|manager|finance|admin","/login|/portal|/settings/profile","/mobile|/mobile/me","server/src/routes/auth.js|server/src/routes/wecomAuth.js|server/src/routes/me.js","账号登录或企业微信进入 OA,按设备进入 PC 或移动工作台。","未绑定、会话过期、OAuth 回跳失败。","员工看个人入口,管理员看系统入口。","wecom-entry|live-smoke|ME6 automation|MIF7TD","ME6-3 已关闭;R7 真实扩大试运行未启动。","企业微信只做入口、身份、消息和 deeplink。","R7E 前跑公网匿名、带凭据 live readiness 和角色只读核验。"
|
||||
"报销与票据","P0","employee|manager|finance","/reimbursements|/reimbursements/:id|/ap-operations","/mobile/reimbursements|/mobile/reimbursements/:id","server/src/routes/reimbursements.js|server/src/routes/invoicePool.js|server/src/routes/apOperations.js","员工建报销、加发票/附件、提交审批、财务复核或付款状态展示。","识别失败、重复票据、已归档、缺附件。","员工看本人,审批人处理分配任务,财务看财务范围。","RI6|FL6|PA6|MIF7|MIF7T","R7 真实扩大试运行未启动。","移动轻任务,PC 高密度复核。","R7E 前复跑核心业务流和公网移动矩阵。"
|
||||
"请假与采购","P0","employee|manager","/leave-requests|/purchase-requests|/workflow/tasks","/mobile/leave|/mobile/purchase-requests|/mobile/approvals","server/src/routes/leave.js|server/src/routes/purchaseRequests.js|server/src/routes/workflow.js","员工提交,请假/采购进入审批,审批人处理,员工看进度。","退回/驳回、缺预算池 warning、附件缺失。","自审和 admin-only 业务审批由服务端拒绝。","LP6|PS6|PA6|MIF7T","采购复杂预算、供应商准入、ERP 不在当前范围;移动采购创建如需进入 R7 后优化另拆 Issue。","状态和审批历史一致。","R7E 前复跑请假/采购列表、详情和返回语义。"
|
||||
"请假与采购","P0","employee|manager","/leave-requests|/purchase-requests|/workflow/tasks","/mobile/leave|/mobile/purchase-requests|/mobile/approvals","server/src/routes/leave.js|server/src/routes/purchaseRequests.js|server/src/routes/workflow.js","日常请假在企业微信办理,OA 保留只读记录与已授权应急边界;采购由员工提交并进入审批。","退回/驳回、缺预算池 warning、附件缺失。","自审和 admin-only 业务审批由服务端拒绝。","LP6|PS6|PA6|MIF7T","采购复杂预算与供应商准入按既有范围验收;ERP 专属实现已退役;移动采购创建不在本批范围。","状态和审批历史一致。","R7E 前复跑请假/采购列表、详情和返回语义。"
|
||||
"通知与审批效率","P0","employee|manager","/notifications|/workflow/tasks","/mobile/notifications|/mobile/approvals","server/src/routes/notifications.js|server/src/routes/workflow.js","通知事件直达详情;申请人可催办本人 pending 任务。","通知目标不存在、无权限、重复催办。","催办不改变审批状态,通知失败不回滚业务。","AP6|DG7|MIA7|MIF7","R7 真实扩大试运行未启动。","通知是事件收件箱,不是待办副本。","R7E 前复跑通知直达和审批/进度矩阵。"
|
||||
"系统治理和财务","P1","finance|admin","/system/*|/audit-logs|/ap-operations","/mobile/me","server/src/routes/audit.js|server/src/routes/featureFlags.js|server/src/routes/apOperations.js","管理员看配置和审计,财务看台账和导出。","权限不足、导出失败、审计缺口。","管理员不默认获得财务业务能力,财务不获得系统管理能力。","PA6|FL6|QG6","R7 真实执行未启动。","最小权限和可追溯。","R7 前确认人员、窗口和回滚联系人。"
|
||||
"系统治理和财务","P1","finance|admin","/system/reimbursement-templates|/system/users|/system/departments|/system/master-data|/system/payment-accounts|/system/notification-channels|/system/workspace|/system/settings|/system/approval-rules|/system/expense-standards|/system/feature-flags|/system/announcements|/system/workflow-definitions|/system/cutover|/audit-logs|/ap-operations","/mobile/me","server/src/routes/audit.js|server/src/routes/featureFlags.js|server/src/routes/apOperations.js","管理员看配置和审计,财务看台账和导出。","权限不足、导出失败、审计缺口。","管理员不默认获得财务业务能力,财务不获得系统管理能力。","PA6|FL6|QG6","R7 真实执行未启动。","最小权限和可追溯。","R7 前确认人员、窗口和回滚联系人。"
|
||||
|
||||
|
@@ -6,6 +6,14 @@
|
||||
|
||||
R5 公网验收后确认:正式发票/OCR 上传入口只接受 PDF 发票文件;图片和拍照直传不作为发票入口。附件材料仍可上传图片或 PDF,但必须与发票分离。重复票据、已使用票据和 OCR 失败必须进入可解释终态,不能长期停留在处理中。
|
||||
|
||||
## 业务编号(本地候选,尚未线上启用)
|
||||
|
||||
面向不足10人的团队,新规则采用“类型前缀+必要期间+流水”。报销按月,如 `BX-202609-0001`;付款批次按年,如 `PB-2026-0001`,报销付款与本金还款共用PB。借款、还款申请、采购、盘点及自动项目号分别为JK、HK、CG、PD、PRJ年度号。新固定资产用 `FA-0001` 永久递增,电子资产保留既有EA分类前缀并永久递增。正式合同、员工和外部原始编号不改。
|
||||
|
||||
已有单号、草稿、审批、付款材料及资产标签全部保留。切换前尚未编号的采购草稿和历史缺号报销沿用旧规则;采购仍在首次提交时取号。新批次可关联旧号报销,逐项显示来源原号。付款批次编号与实际付款日期分别展示,年中新序列的0001不表示公司当年实际第一笔付款。
|
||||
|
||||
四位是最小宽度,超过9999继续扩位。取消或删除会留下空号,不回收已发号码;号码也不等于业务数量或总账凭证号。跨月审批、跨年付款不换号。只有迁移和兼容代码部署、独立复核及切换授权齐备后才受控启用;本地验证不表示现有线上编号已改变。
|
||||
|
||||
## 总原则
|
||||
|
||||
- PC 与手机功能一致,只允许布局和控件形态不同。
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
|
||||
**文档状态**:当前操作手册,用于本地、公网、企业微信和真实 OCR 试运行验证。
|
||||
|
||||
## 备份恢复验证边界
|
||||
|
||||
2026-09-17,`08-23-isolated-backup-restore-drill`完成一次已批准的ARM受限影子恢复:来源与生产构建同为`b1d25d3c`,数据库恢复和影子认证只读应用通过;62条附件引用中仅1条精确已接受历史缺件,未知不一致0。清理及源/生产/监控后验通过,未修改生产。
|
||||
|
||||
- 整体结论为`PARTIAL_KNOWN_MISSING_AND_SENSITIVE_DECRYPTION_NOT_TESTED`,不是完整灾备PASS。历史缺件未找回、不删除引用;其余引用按已有大小/摘要字段验证,不把无SHA字段的存在性检查说成全量内容校验。
|
||||
- 应用证据是影子凭据经过真实认证/权限后的只读读取与恢复库比对,不是员工真实密码登录、浏览器全流程或敏感字段解密验收;生产密钥来源/保管与灾备可用性仍未证明,不索取聊天明文或擅自换密钥。
|
||||
- 实测RPO为7小时2分52秒。分阶段耗时不包含完整清理/后验及切换过程,不将阶段小计称为完整RTO或SLA。
|
||||
- 本次入口已消费,无需重跑。历史NO_GO与冻结包不改,当前状态按绑定review/execution/source三摘要的实际回执及task最新记录判断;后续扩大范围或再恢复需重新规划,不复用单次授权。
|
||||
|
||||
## 银行回单系统失败恢复
|
||||
|
||||
- `system_failed`、`key_failed`、`snapshot_failed`不是普通识别失败。管理员先依据安全原因码排查数据库可用性、密钥配置/版本或付款业务与银行快照;不输出账号、密钥或原始识别响应,不随意生成新密钥替换旧密钥。
|
||||
@@ -364,3 +373,25 @@ PROJECT_CLOSURE_CHECKLIST_ENABLED=true
|
||||
- task validate、Trellis governance 和任务要求的必要门禁通过。
|
||||
- 历史 Issue CSV 保持审计可追溯,但不要求作为当前状态合同。
|
||||
- 中文分批 commit。
|
||||
|
||||
|
||||
## 2026-09-17 本地借款与付款责任候选
|
||||
|
||||
本地源码新增公司向个人借入的人民币本金台账及还本;登记出借人/核实OA身份、上传原借入和核对材料、确认期初余额后,可将同一出借人的多笔借入分配到一笔还款。付款批次独立复核、线下网银制单/回单、登记成功后核销本金,会计交接单独确认。未知或在途银行结果保持占用;不得仅用取消理由解锁重付。此段描述待发布候选,不表示公网已具备该入口。
|
||||
|
||||
付款进度候选显示当前可处理人员、原站内提醒对象及脱敏发送记录。企微个人消息仅按`wecom_app_sent`成功认定已发送,不等于已读;无成功记录也不能单凭页面断言消息一定没有发出。多接收人anchor记录不能证明人人送达。真实批次接收人/送达仍须在另行授权的范围核实际记录。
|
||||
|
||||
ERP专属实现与后台同步已从本地候选移除,历史ERP数据保留只读且不能重试;共享企微、通知和outbox保留。历史`erp_sync=force_off`证据不改写;当前候选的运行时不再提供该开关对应的ERP执行能力。工资、绩效、预算和企微考勤摘要不在本次删除范围。
|
||||
|
||||
验证入口为`09-17-company-loan-principal-repayment`与`09-17-erp-exclusive-retirement`的implement回执;合成专库使用`RUN_ISOLATED_LOAN_DB_TEST=1 node scripts/qa/test-company-loan-db.cjs`,浏览器另设`RUN_ISOLATED_LOAN_BROWSER=1`且先构建client。BIFF8使用已有专用Python并传`PAYMENT_ORDER_PYTHON_BIN`,不自动安装或联网;所有身份、密钥和材料运行内生成,不读生产配置。独立只读复核、真实银行样本/恢复保管事实、迁移发布及真实录入付款仍是独立门禁。
|
||||
|
||||
|
||||
## 业务编号增量切换(准备,未启用生产)
|
||||
|
||||
执行合同为 `09-18-reimbursement-periodic-numbering`。先部署加法迁移和兼容新旧规则的所有写入实例,策略表无记录时仍发旧号,不重跑seed切换。旧单和未编号旧草稿不回填;不得清理编号计数表。切换前经另行批准取得格式分布/缺号及同格式占号摘要,完成独立复核,确认银行材料和来源快照兼容,再确定未来生效时刻;优先准备就绪后的月初,不预定某个日期上线。
|
||||
|
||||
管理入口 `node server/src/scripts/manage-business-numbering.js --help`;status只输出版本、启用状态、生效时刻及需要专门兼容复核的旧周期类型,activate需要含时区的未来ISO时间、操作人UUID、变更引用与 `--writers-compatible`。该标记只是操作人对全部写入实例兼容的明确确认,不能代替发布核验。首次激活在等待策略锁及检查后重新取时,已过期的生效点拒绝。若旧报销/采购/盘点取号配置本身已使用新月/年日期段,启用/恢复会保守拒绝并要求专门兼容处理,不能擅自清零或改写旧规则;这与源表里已有若干同格式号码的正常接续不同。入口不读取.env;正式数据库连接只能通过届时批准的注入方式提供,本轮不提供或执行生产连接命令。
|
||||
|
||||
pause/resume保留首次生效时刻、全部已发号码和高水位;暂停仅影响以后创建对象,已归属v2的采购草稿仍按v2首次提交取号。策略变更与既有审计同事务,启停等待已持策略锁的业务事务结束。回退代码必须仍兼容两类号,不删除新增表/版本字段、不减计数,也不重新导出旧批次为新编号。
|
||||
|
||||
本地验证命令:`cd server && npm run prisma:validate && npm test`;隔离PG为 `RUN_ISOLATED_NUMBERING_DB_TEST=1 node scripts/qa/test-business-numbering-db.cjs`,使用本机已备好的PostgreSQL镜像和合成运行环境,禁外联/宿主端口,包含合成借款HTTP整链及银行文件测试。需沿用已有受控Python运行环境;不得因缺依赖下载或读取真实配置。本次新证据在 `artifacts/qa-layout/business-numbering-20260918`,旧失败与冻结材料保留;仍须另行完成原G20完整门禁、独立复核及授权发布后的公网验收。
|
||||
|
||||
+2
-2
@@ -127,7 +127,7 @@ OAFLOW1 后,OA 主办的报销审批规则增加 `ownerSelfFallbackRole`。当
|
||||
|
||||
---
|
||||
|
||||
### 2.5 财务本人报销与独立付款复核(2026-09-12 已批准,待发布)
|
||||
### 2.5 财务本人报销与独立付款复核(2026-09-12 已部署229867f5)
|
||||
|
||||
财务本人报销的新提交及重提,由非申请人的在职总经理一次审批,不再重复经理、总经理、财务三个审批步骤。以报销归属人持有明确的 `finance` 角色识别,不硬编码姓名;财务代填其他员工的单据不属于此分支。存在第二位财务也不改变本规则。
|
||||
|
||||
@@ -135,7 +135,7 @@ OAFLOW1 后,OA 主办的报销审批规则增加 `ownerSelfFallbackRole`。当
|
||||
- 没有合法总经理时,预检和提交明确阻断,预算预检开关关闭也不能绕过。
|
||||
- 该单步任务只能转交给另一位合法总经理。审批时实际操作者及委托方仍须具备有效总经理资格,不因指定人分配、转交或委托免检。
|
||||
- 报销通过后仍由财务创建付款批次,包括财务自己的报销;非制单人的合格上级另行复核付款,财务再下载制单、通过网银付款并登记回单。报销审批不等于付款复核,下载成功不等于付款完成。
|
||||
- 普通员工原审批链及仅持CEO角色的负责人财务兜底不变;在途与历史快照不自动改写。此规则属于当前09-04任务的新候选,不宣称已部署。
|
||||
- 普通员工原审批链及仅持CEO角色的负责人财务兜底不变;在途与历史快照不自动改写。此规则由09-04任务的229867f5发布,公网和运行镜像检查通过;真实业务闭环证据仍来自部署前隔离数据库/浏览器验证,不混称为公网真人单据测试。
|
||||
|
||||
## 3. 入口与任务视图
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户