Appearance
工资发放 → 个人记账自动同步
标记结算单 已发放(POST /acc/settlement/mark-paid,Web / 小程序「发放工资」)成功后,系统自动为相关用户写入 个人记账 流水(mini_book_entries),不经过 X-Site-Id,与 miniapp-bookkeeping-user-scope.md 一致。
记账规则
| 对象 | 条件 | 账本(自动创建) | 类型 | 分类 | 金额 |
|---|---|---|---|---|---|
| 领取工资的工人 | AccWorker.userId 已绑定系统用户 | 「工资」 | 收入 income | 工资 | 结算单 netAmount(元→分) |
| 确认发放的人 | 当前登录经理(mark-paid 操作者) | 「经营」 | 支出 expense | 工资发放 | 同上 |
- 业务时间:结算单
paidAt - 备注含
sync:acc_settlement_paid:{结算单id},同一结算单对同一用户只同步一次(幂等) - 工人 未绑定 系统账号:仅跳过工人侧,经理侧仍记支出
实现
backend/src/libs/shared/bookkeeping/bookkeeping-settlement-paid-sync.service.ts- 在
SettlementService.markPaid内safeSyncFromSettlementPaid(失败只打日志,不阻断发放)
验收
- 工人档案绑定系统用户;经理、工人各至少有一个账本或依赖自动创建「工资」「经营」。
- 小程序/Web 对「已结算」单上传凭证并标记发放。
- 工人微信登录 → 个人记账 →「工资」账本可见 收入 流水。
- 经理登录 → 个人记账 →「经营」账本可见 支出 流水(摘要含单号与工人名)。
bash
pnpm --filter taskflow-backend exec jest bookkeeping-settlement-paid-sync.service.spec.ts --no-cache