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>
54 lines
2.2 KiB
Markdown
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
|
|
|
|
- 当价格模板、阶梯规则、费用组成、计划用水方案或必要来源数据缺失时,应阻断生成并返回失败原因。
|
|
- 失败语义必须与现有抄表开账类错误码口径一致,不得仅写日志而不在接口结果中表达。
|
|
- 异常复核、估抄、补抄、重录等场景只定义“是否允许进入生成”边界,不展开具体实现细节。
|