tangweijie 20afae2255 docs: align rev002 billing generation evidence
Document the existing REV-002 backend billing-generation path and preserve a conservative partial-implementation judgment so the design stays aligned with current code evidence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 17:52:15 +08:00

54 lines
2.2 KiB
Markdown

# Contract: REV-002 开账计费与账单生成缺口补齐
## 1. Formal Interface Allocation
| Interface | Role | Direction |
|---|---|---|
| `IF-REV-005` | `REV-002` 开账计费与账单生成的正式业务接口 | `SYS-002` 内部正式业务接口 |
约束:
- `IF-REV-005` 保持为 `REV-002` 的正式账单生成接口编号,不新增新的开账生成接口编号。
- 本接口只承接开账计费与账单生成,不扩展到收费核销、发票申请或催缴触发。
## 2. Request Contract
| Field | Meaning | Required |
|---|---|---|
| `billPeriod` | 账期 | 是 |
| `readingBatchNo` | 抄表批次号 | 否 |
| `customerIds` | 客户集合 | 否 |
| `meterReadIds` | 抄表任务集合 | 否 |
| `dueDate` | 应收截止日期 | 是 |
| `operatorId` | 发起人 | 否 |
补充约束:
- 请求前提是抄表数据已通过校验或异常复核允许进入开账。
- 至少应提供批次、客户范围或抄表任务范围中的一种有效筛选条件。
## 3. Response Contract
| Field | Meaning |
|---|---|
| `generateCount` | 成功生成账单数量 |
| `successList` | 成功明细集合 |
| `successList[].chargeId` | 账单主键 |
| `successList[].chargeCode` | 账单编号 |
| `successList[].custId` | 客户标识 |
| `successList[].totalAmount` | 账单总金额 |
| `failureList` | 失败明细集合 |
| `failureList[].reason` | 失败原因 |
## 4. Result Boundary Contract
- 账单生成结果统一以 `biz_charge` 作为主结果、`biz_charge_detail` 作为明细结果承接。
- 特殊开账、无码客户开账或罚款类开账应通过来源类型、业务类型或依据说明纳入统一账单主模型,不单独发明平行主表。
- 账单生成成功后只表达“已生成营业账”的结果边界,后续收费、催缴、开票由下游模块继续承接。
## 5. Exception Contract
- 当价格模板、阶梯规则、费用组成、计划用水方案或必要来源数据缺失时,应阻断生成并返回失败原因。
- 失败语义必须与现有抄表开账类错误码口径一致,不得仅写日志而不在接口结果中表达。
- 异常复核、估抄、补抄、重录等场景只定义“是否允许进入生成”边界,不展开具体实现细节。