126 lines
4.9 KiB
Markdown

# Data Model: REV-006 催缴与通知事件设计收口
## 1. Reminder Candidate
**说明**: 催缴任务的输入对象,由欠费账单和客户上下文组合形成。
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| candidateId | String | 候选对象标识 | 可由任务生成阶段派生,不要求独立持久化主键 |
| custId | String | 客户标识 | 必填 |
| accountId | String | 账户标识 | 必填 |
| chargeIds | List<String> | 命中的欠费账单集合 | 至少 1 条 |
| billPeriods | List<String> | 账期集合 | 必填 |
| arrearsAmount | Decimal | 欠费总金额 | 必须大于 0 |
| agingBucket | String | 账龄分组 | 必填 |
| custCategory | String | 客户类别 | 必填 |
| preferredChannels | List<String> | 渠道偏好 | 至少 1 个渠道 |
| strategyCode | String | 命中的催缴策略编码 | 必填 |
| frequencyWindow | String | 频控窗口 | 用于重复触达拦截 |
**关系**:
- 一个 `Reminder Candidate` 可生成一个或多个 `Reminder Task`
- `Reminder Candidate` 来源于 `biz_charge``biz_charge_detail` 等营业账对象
## 2. Reminder Strategy
**说明**: 约束候选对象筛选、任务分组和渠道优先级的规则集合。
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| strategyCode | String | 策略编码 | 唯一 |
| strategyName | String | 策略名称 | 必填 |
| agingRule | String | 账龄规则 | 必填 |
| amountRule | String | 金额规则 | 必填 |
| custCategoryRule | String | 客户类别规则 | 可为空,表示不限 |
| channelPriority | List<String> | 渠道优先级 | 至少 1 项 |
| frequencyControl | String | 频控规则 | 必填 |
| disposalAttentionFlag | Boolean | 是否关注后续处置 | 必填 |
**状态转换**:
- 启用
- 停用
## 3. Reminder Task
**说明**: 正式催缴执行单元,是 `IF-REV-013` 的核心业务对象。
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| taskNo | String | 催缴任务号 | 唯一、必填 |
| eventNo | String | 业务事件号 | 唯一、必填 |
| strategyCode | String | 策略编码 | 必填 |
| channelType | String | 执行渠道 | 必填 |
| triggerType | String | 触发类型 | 自动 / 人工 |
| status | String | 当前状态 | 仅允许 `PENDING` / `SUCCESS` / `FAIL` / `MANUAL_VERIFIED` |
| chargeIds | List<String> | 关联账单 | 至少 1 条 |
| receiver | String | 触达对象 | 可为手机号、微信标识或站内账号 |
| sendTime | Datetime | 发送发起时间 | 可空,待触发后填写 |
| lastCallbackTime | Datetime | 最近结果回写时间 | 可空 |
| failReason | String | 失败原因 | `FAIL` 时建议记录 |
| manualVerifyNote | String | 人工核查说明 | `MANUAL_VERIFIED` 时建议记录 |
**状态转换**:
1. 新建任务后进入 `PENDING`
2. 外部触达成功后进入 `SUCCESS`
3. 外部明确失败后进入 `FAIL`
4. 外部结果长期未定或人工补记后进入 `MANUAL_VERIFIED`
## 4. Reminder Result
**说明**: 承接 `SYS-010` 回写结果与业务侧最终状态语义。
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| taskNo | String | 对应任务号 | 必填 |
| eventNo | String | 对应事件号 | 必填 |
| status | String | 四态结果 | 必填 |
| channelType | String | 渠道类型 | 必填 |
| externalResultCode | String | 外部结果码 | 可空 |
| externalResultMessage | String | 外部结果说明 | 可空 |
| failReason | String | 业务失败原因 | `FAIL` 时可必填 |
| callbackTime | Datetime | 回写时间 | 必填 |
| sourceSystem | String | 回写来源系统 | 默认 `SYS-010` |
## 5. Disposal Link
**说明**: 催缴任务与停水、复水、工单、人工跟进之间的追溯引用。
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| taskNo | String | 关联催缴任务号 | 必填 |
| disposalType | String | 处置类型 | 停水 / 复水 / 工单 / 人工跟进 |
| disposalRefNo | String | 处置引用号 | 必填 |
| disposalStatus | String | 处置状态摘要 | 可空 |
| linkedAt | Datetime | 建联时间 | 必填 |
| note | String | 追溯说明 | 可空 |
## 6. Governance Record
**说明**: 用于治理台账登记本轮设计收口结论与后续研发建议。
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| reqCode | String | 需求编号 | 固定为 `SYS002-REQ-011` |
| featureName | String | Speckit feature 名称 | 固定为 `rev006-reminder-event-design` |
| implementationStatus | String | 当前实现判断 | `未见实现` |
| docStatus | String | 文档状态 | 设计已收口 / 待同步 / 待验证 |
| nextAction | String | 后续动作 | 研发立项 / 文档补证 / 治理同步 |
| evidenceRefs | List<String> | 证据来源 | 必填 |
## 7. 关系总览
```text
Reminder Strategy
-> Reminder Candidate
-> Reminder Task
Reminder Task
-> Reminder Result
-> Disposal Link
Governance Record
-> 引用 Reminder Task / Reminder Result 的设计结论与实现判断
```