# 申请单关联归档状态概念文档 ## 功能一句话 申请单审批完成后先进入关联单据状态,只有关联的报销单完成付款归档后,申请单才同步归档。 ## 背景与问题 当前费用申请单审批完成后,部分列表和进度展示会把申请单视为归档;但业务上申请单只是完成了事前审批,还需要等待后续报销单关联、报销审批、付款完成后,申请单生命周期才真正闭环。 这会导致用户看到报销单仍在处理、申请单却已归档,或者报销单已完成但申请单还停留在进行中的割裂状态。 ## 目标 1. 申请单审批完成不直接进入归档中心。 2. 申请单进度在归档前增加“关联单据状态”节点。 3. 已有关联报销单但未付款完成时,该节点显示“关联中”。 4. 没有关联报销单时,该节点显示“未关联”。 5. 关联报销单付款完成后,申请单同步进入“申请归档”。 ## 非目标 1. 不新增数据库表。 2. 不改变报销单本身的审批、付款权限。 3. 不改变申请单审批通过自动生成报销草稿的现有能力。 ## 用户与场景 涉及角色: - 申请人:查看申请单是否已经关联后续报销单。 - 审批人:审批申请单后不再误以为该申请已经归档。 - 财务人员:付款完成报销单时,同步闭环关联申请单。 关键场景: 1. 申请单审批通过,但未生成或未关联报销单:显示“关联单据状态 / 未关联”。 2. 申请单审批通过,并已生成报销草稿或报销单仍在流程中:显示“关联单据状态 / 关联中”。 3. 关联报销单已付款:报销单进入已付款,申请单进入“申请归档”。 ## 方案设计 后端: - 申请单 `approved + 审批完成` 不再被归档查询命中。 - 申请单只有 `approved + 申请归档` 才属于归档。 - 报销单付款完成时,从 `application_handoff` 或 `application_link` 风险事件中读取关联申请单。 - 找到关联申请单后,追加同步归档事件,并将申请单阶段置为“申请归档”。 前端: - 申请单进度增加“关联单据状态”和“已归档”节点。 - 审批完成但未归档的申请单,当前节点停留在“关联单据状态”。 - 根据申请单自身的 `generated_draft_claim_no` 或报销单侧关联事件显示“关联中 / 未关联”。 - 只有“申请归档”阶段才展示归档完成。 ## 算法与公式 当前功能不涉及显式数学公式。 关联状态判断: ```text has_linked_reimbursement = exists(application.generated_draft_claim_no) or exists(reimbursement.risk_flags.application_claim_id/no == application.id/no) application_archived = application.status in {approved, completed} and application.approval_stage == "申请归档" ``` ## 测试方案 1. 后端状态测试:审批完成申请单不归档,申请归档才归档。 2. 后端付款测试:关联报销单付款后,申请单同步进入“申请归档”。 3. 前端进度测试:审批完成申请单显示“关联单据状态”和“已归档”。 4. 前端归档判断测试:`审批完成` 申请单不算归档,`申请归档` 才算归档。 ## 验收标准 1. 单据中心普通视图仍能看到审批完成但未归档的申请单。 2. 归档中心不会提前出现仅审批完成的申请单。 3. 申请单进度在审批完成后能看到“关联单据状态”。 4. 报销单付款完成后,关联申请单同步显示为归档。 ## 风险与开放问题 - 旧数据中可能存在已经把申请单审批完成当作归档的数据,本次按新业务规则修正展示与查询口径。 - 如果历史申请单缺少关联报销事件,只能展示“未关联”,不做自动猜测。