160 lines
5.4 KiB
Markdown

# Data Model: REV-006 催缴事件与通知协同设计
## 1. Reminder Candidate
### Purpose
表示进入催缴评估范围的欠费账单或客户对象集合,是催缴任务生成的输入对象。
### Key Fields
| Field | Description | Rule |
|---|---|---|
| `custId` | 客户标识 | 必填;关联客户主档 |
| `chargeId` | 账单标识 | 必填;关联欠费账单 |
| `billPeriod` | 账期 | 必填;用于催缴分组和历史查询 |
| `arrearsAmount` | 欠费金额 | 必填;用于策略匹配 |
| `agingBucket` | 欠费账龄分组 | 必填;用于策略筛选 |
| `customerCategory` | 客户类别 | 必填;用于差异化催缴 |
| `contactChannelSet` | 可用联系方式集合 | 至少存在一个有效触达渠道 |
| `strategyCode` | 命中的催缴策略编码 | 必填;来源于策略规则 |
### Relationships
- 来自 `biz_charge` / `biz_charge_detail`
- 关联客户主档与联系方式
- 可生成一个或多个 `Reminder Task`
## 2. Reminder Strategy
### Purpose
定义催缴对象筛选、任务分组、触达渠道和频控约束的业务规则。
### Key Fields
| Field | Description | Rule |
|---|---|---|
| `strategyCode` | 策略编码 | 唯一 |
| `agingRule` | 账龄匹配规则 | 必填 |
| `amountRule` | 金额匹配规则 | 必填 |
| `customerCategoryRule` | 客户类别匹配规则 | 可为空;为空表示通用 |
| `channelPriority` | 触达渠道优先级 | 必填;至少 1 个渠道 |
| `dedupeWindow` | 重复触达拦截窗口 | 必填 |
| `escalationFlag` | 是否触发后续处置关注 | 必填 |
### Relationships
- 一个 `Reminder Strategy` 可匹配多个 `Reminder Candidate`
- 一个 `Reminder Strategy` 可驱动多个 `Reminder Task`
## 3. Reminder Task
### Purpose
表示一次正式催缴执行单元,负责承接业务触发、协同下发和结果回写。
### Key Fields
| Field | Description | Rule |
|---|---|---|
| `taskNo` | 催缴任务号 | 唯一;正式业务主键 |
| `interfaceCode` | 正式接口编号 | 固定使用 `IF-REV-013` |
| `eventNo` | 业务事件号 | 唯一;用于与 `SYS-010` 协同 |
| `custId` | 客户标识 | 必填 |
| `chargeId` | 账单标识 | 必填 |
| `strategyCode` | 策略编码 | 必填 |
| `channelType` | 触达渠道 | 必填;短信/微信公众号/站内信等 |
| `triggerType` | 触发方式 | 必填;自动/人工 |
| `status` | 当前任务状态 | 必填;`PENDING` / `SUCCESS` / `FAIL` / `MANUAL_VERIFIED` |
| `sourceType` | 任务来源 | 必填;系统任务/人工补发/核查回补 |
| `createdTime` | 创建时间 | 必填 |
| `lastResultTime` | 最近结果时间 | 可为空;初次发送前为空 |
### State Transitions
| From | To | Condition |
|---|---|---|
| 新建 | `PENDING` | 已生成任务并发起协同 |
| `PENDING` | `SUCCESS` | 收到成功回写 |
| `PENDING` | `FAIL` | 收到失败回写或确认失败 |
| `PENDING` | `MANUAL_VERIFIED` | 人工核查后确认结果 |
| `FAIL` | `MANUAL_VERIFIED` | 人工核查补记结果 |
### Relationships
- 由一个 `Reminder Candidate` 和一个 `Reminder Strategy` 组合产生
- 关联一个或多个 `Reminder Result`
- 可关联一个 `Disposal Link`
## 4. Reminder Result
### Purpose
表示 `SYS-010` 回传或人工核查得到的触达结果。
### Key Fields
| Field | Description | Rule |
|---|---|---|
| `eventNo` | 业务事件号 | 必填;与 `Reminder Task` 对应 |
| `status` | 结果状态 | 必填;仅允许四态 |
| `failureReason` | 失败原因 | `FAIL` 时必填 |
| `resultChannel` | 实际触达渠道 | 必填 |
| `resultTime` | 结果时间 | 必填 |
| `verifiedBy` | 核查人 | `MANUAL_VERIFIED` 时必填 |
| `verifiedNote` | 核查说明 | `MANUAL_VERIFIED` 时建议填写 |
### Relationships
- 归属于一个 `Reminder Task`
- 结果会回写到任务状态与历史查询记录
## 5. Reminder History Record
### Purpose
为历史查询和迁移验收提供最小保留信息集合。
### Key Fields
| Field | Description | Rule |
|---|---|---|
| `custId` | 客户标识 | 必填 |
| `billPeriod` | 账期 | 必填 |
| `channelType` | 催缴方式 | 必填 |
| `messageContentRef` | 触达内容引用 | 必填;可为模板或摘要引用 |
| `receiver` | 接收目标 | 必填;手机号/OpenID/站内信对象 |
| `status` | 执行结果 | 必填;使用四态或历史映射值 |
| `sendTime` | 发送时间 | 必填 |
| `operatorSource` | 操作来源 | 必填;自动/人工/历史迁移 |
| `relatedChargeId` | 关联账单 | 必填 |
| `relatedDisposalRef` | 关联处置引用 | 可为空;用于停复水/工单追溯 |
### Relationships
- 可由 `Reminder Task``Reminder Result` 聚合生成
- 同时承接历史催缴记录、停水记录、预存短信记录的查询口径
## 6. Disposal Link
### Purpose
记录催缴结果与停水、复水、工单或人工处置之间的追溯关系。
### Key Fields
| Field | Description | Rule |
|---|---|---|
| `eventNo` | 关联业务事件号 | 必填 |
| `disposalType` | 处置类型 | 必填;停水/复水/工单/人工跟进 |
| `triggerCondition` | 触发条件摘要 | 必填 |
| `disposalRefNo` | 下游处置引用号 | 可为空;未创建时为空 |
| `disposalStatus` | 下游处置状态 | 可为空;仅作追溯,不定义内部流程 |
| `linkedTime` | 建立关联时间 | 必填 |
### Relationships
- 一个 `Reminder Task` 最多关联一个当前生效的 `Disposal Link`
- 不替代下游业务对象,只做引用和追溯