{
  "subject": "对账管理：新增余额查询与账户流水查询",
  "description": "## 需求背景\n\n当前现金、补贴、赠送、消费、充值和退款等资金数据分散在不同业务记录中，缺少统一的管理后台对账入口。财务、餐厅管理员和审计人员无法方便地查询人员历史日终余额，也难以沿完整余额链追溯每次账户变化。\n\n## 需求内容\n\n### 一、模块结构\n\n新增一级模块“对账管理”，包含两个二级模块：\n\n1. 余额查询\n2. 流水查询\n\n### 二、余额查询\n\n- 支持按日期范围、人员、部门和账户类型筛选。\n- 日期范围内每一天都展示，每人每天一条余额快照。\n- 历史日期的快照时间统一为当日 23:59:59；查询当天时显示“实时暂估”，不能标记为已结算日终快照。\n- 分别展示现金余额、补贴余额、赠送余额和总余额。\n- 总余额 = 现金余额 + 补贴余额 + 赠送余额。\n- 同时展示人员当前归属部门和快照发生时归属部门。\n- 部门筛选支持“按当前归属”和“按发生时归属”两种口径。\n- 展示当日入账、当日出账和快照状态。\n- 支持从某人某日余额跳转查看对应当日流水。\n\n### 三、流水查询\n\n- 覆盖现金充值、充值赠送、补贴发放、消费、退款、余额退还、提现、管理员调账、补贴或赠送失效等所有账户变化。\n- 支持按发生时间、人员、部门及部门口径、账户类型、变动类型、收支方向、业务单号、流水号和操作人筛选。\n- 每笔流水展示唯一流水号、发生时间、人员、当前部门、发生时部门、账户类型、变动类型、收支方向、期初余额、变动金额、变化后余额、业务单号、来源渠道、操作人和备注。\n- 入账金额为正，出账金额为负。\n- 流水详情保留业务发生时快照，关联订单后续变化或不可用时仍能查看历史信息。\n\n### 四、数据与一致性要求\n\n- 所有现金、补贴和赠送余额变化入口必须统一写入完整账户流水。\n- 余额更新与流水写入必须处于同一数据库事务。\n- 每笔满足：变化后余额 = 期初余额 + 变动金额。\n- 同一账户相邻流水满足：后一笔期初余额 = 前一笔变化后余额。\n- 增加每人每日的日终余额快照，任务支持幂等执行、失败重试、异常告警和按日期/人员补算。\n- 人员姓名、工号和发生时部门保存历史快照，不能因人员改名或调部门改写历史记录。\n- 新数据必须完整记录期初、变化和期末余额。\n\n### 五、历史数据要求\n\n- 目标是尽可能展示全部历史余额和流水。\n- 能通过现有订单、充值记录或补贴流水证明的数据标记为“已回填”。\n- 只能逆推的数据标记为“推算”，不得作为强审计证据。\n- 数据链不完整时显示“--”并标记“历史数据缺失”，不能填 0。\n- 当前赠送金额与实充金额合并进入现金余额，历史消费没有拆分现金本金与赠送余额扣减份额。无法可靠拆分时，保留“现金含赠送余额合计”，赠送余额单项标记为“不可拆分”。\n\n### 六、权限与导出\n\n- 接入现有菜单权限、功能权限和人员/部门/门店数据权限。\n- 查看、详情和导出权限分别控制，后端接口必须再次校验数据范围。\n- 导出结果必须与页面相同筛选条件下的条数和金额一致。\n- 查询和导出操作记录审计日志。\n\n## 验收要点\n\n- 选择日期范围后，每人每天最多一条余额快照。\n- 某人某日可查看现金、补贴、赠送和总余额，并可联动查看当日流水。\n- 当前部门和发生时部门均正确展示，人员调部门后历史归属不变化。\n- 每笔新流水均有唯一流水号、账户类型、期初余额、变动金额和变化后余额。\n- 消费、充值、赠送、补贴、退款、提现、调账和失效等场景均可查询。\n- 并发消费或充值后余额链连续，重复回调不产生重复入账。\n- 日终任务重复执行不产生重复快照，失败后可以补算。\n- 页面、详情和导出遵守同一数据权限，不能跨部门或跨门店查询。\n- 页面与导出结果一致。\n\n## 待确认事项\n\n- 消费时现金、补贴、赠送余额的扣减顺序。\n- 该扣减顺序是否适用于全部历史时期，以决定历史赠送余额能否可靠回算。\n\n## 资料说明\n\n完整需求分析已在本地形成：`PRD-account-reconciliation.md` 和 `account-reconciliation-requirement-analysis.html`。",
  "descriptionFormat": "MARKDOWN",
  "formatType": "MARKDOWN",
  "assignedTo": "635755195dc8531eeb2e33d9",
  "participant": [
    "635755195dc8531eeb2e33d9"
  ],
  "status": "100005",
  "space": "dd2f708d1702891ff45b6f5d99",
  "spaceIdentifier": "dd2f708d1702891ff45b6f5d99",
  "spaceType": "Project",
  "category": "Req",
  "workitemType": "9uy29901re573f561d69jn40",
  "viewSpaceId": "dd2f708d1702891ff45b6f5d99",
  "spaceId": "dd2f708d1702891ff45b6f5d99",
  "workitemTypeId": "9uy29901re573f561d69jn40",
  "workItemTypeId": "9uy29901re573f561d69jn40",
  "workitemTypeIdentifier": "9uy29901re573f561d69jn40"
}
