fujian_water_biz_doc/output/12_REV_Detailed_processed.md

46 KiB
Raw Blame History

title, author, date, documentclass, geometry, fontsize, mainfont, CJKmainfont
title author date documentclass geometry fontsize mainfont CJKmainfont
12_REV_Detailed 系统设计团队 2024年12月19日 article margin=1in 11pt PingFang SC PingFang SC

doc_id: DT-12-REV doc_role: module_body authority: secondary scope: 详细设计-营收业务 source_of_truth: false last_reviewed: 2026-03-11 retrieval_priority: P1

福建水务营收系统详细设计-营收业务模块正文

章节导航(精简)

文档定位

本文档为 01_Detailed_Design.md 中“营收业务详细设计”章节的模块正文拆分稿,便于按模块独立维护。正式交付口径以主详设为准。

营收业务详细设计

营收模块统一约束

  1. SYS-002 负责营收主流程,发票、支付结算、消息触达分别通过 SYS-008SYS-009SYS-010 协同完成,外部系统仅回写结果状态。
  2. 账单、收费、发票、代扣等关键状态变更必须通过业务流程驱动,不允许绕过业务校验直接改写主业务对象。
  3. 幂等控制遵循接口主键约束:支付以业务订单号为主,发票以申请单号或账单组合为主,代扣以批次号为主,消息以业务事件号为主。
  4. 账务调整、发票申请、催缴触达、银行批次下发等关键动作必须写入操作留痕,满足审计与问题追踪要求。
  5. 数据口径统一采用 biz_*bk_* 命名体系,历史命名仅用于追溯,不作为本章节正式设计口径。

接口与数据追溯矩阵

说明:详细字段与报文以 ../03_Technical_Design/03_Interface_Design.md 为准,数据库字段口径以 ../03_Technical_Design/01_Database_Design.md 为准。

REV 模块 关键接口 核心数据域(摘要) 主要协同对象
REV-001 客户资料管理 IF-REV-001 biz_custbiz_accountbiz_cust_* 客户服务模块、报装模块
REV-002 抄表开账 IF-REV-004IF-REV-005 biz_meter_bookbiz_meter_readbiz_reading_*biz_charge* 抄表APP、物联网集抄
REV-003 营业收费 IF-REV-006 biz_charge*biz_collectionbk_transaction* SYS-009
REV-004 账务处理 IF-REV-007 biz_charge*biz_operat_log* 财务与营业人员
REV-005 发票与税务处理 IF-REV-008 biz_invoice*biz_cust_invoice SYS-008
REV-006 催缴与通知 IF-REV-013 biz_charge*、催缴结果留痕 SYS-010
REV-007 统计分析 IF-REV-010 客户、抄表、收费、渠道聚合对象 统计分析端
REV-008 代收与银行业务 IF-REV-011 bk_withholding_*bk_reconcile_*bk_settlement_* SYS-009、银行
REV-009 业务参数配置 IF-REV-012 biz_parameter_settingsbiz_page_settings*biz_price_* 统一平台、营收模块

REV-001 客户资料管理

功能说明

负责客户主档、账户主档、联系人、客户分组、客户与水表关系、客户开票信息、客户渠道绑定及托收/代扣关系维护,是抄表、收费、发票、代扣等后续业务的主数据基础。

关键设计

  1. 客户建档覆盖立户、变更、更名、过户、销户、报停等全生命周期处理。
  2. 客户资料支持按客户类型、用水性质、片区、集团客户、重点客户等维度管理。
  3. 客户与水表、开票主体、托收/代扣签约关系按关联表维护,避免在主表中堆叠多类属性。
  4. 客户编号、集收标记、计划用水方案等规则类数据由统一配置与客户关系表共同支撑。

核心数据

  • biz_cust:客户主档。
  • biz_account:客户账户与账户状态。
  • biz_cust_contact:联系人及联系方式。
  • biz_cust_group:客户分组。
  • biz_cust_meter:客户与水表绑定关系。
  • biz_cust_invoice:客户开票信息。
  • biz_cust_app_binds:渠道绑定关系。
  • biz_cust_collection_rel:客户托收关系。
  • biz_cust_withholding_rel:客户代扣关系。
  • biz_cust_water_use_schemebiz_cust_water_scheme_rel:客户计划用水方案关系。
  • biz_cust_no_rule:客户编号规则。
  • biz_cust_hub_marks:集收号/集收标记关系。

迁移补充(旧系统承接)

定额共享

  • 旧系统在“客户资料”下提供定额主客户、子客户绑定与共享清单管理能力。
  • 当前正式设计不新增并行主模型,统一归入客户与计划用水方案关系对象承接。
  • 迁移时必须至少保留主客户、子客户、绑定状态、生效时间、解除时间、备注与操作留痕,确保共享清单可查询、可解绑、可追溯。

定额核定

  • 旧系统支持对已建立共享关系的客户执行定额核定、撤销核定和共享清单联查。
  • 当前建议以客户关系对象和计划用水方案关系为主承接核定结果,不额外发明独立账务主表。
  • 核定结果迁移后应支持按客户、站点、核定状态、核定时间查询,并保留核定依据、操作人和变更留痕。

批量修改

  • 旧系统已形成“手工修改 + 模板导入修改”的双模式客户资料维护能力。
  • 当前正式设计应将其视为客户主数据治理能力的一部分,而不是临时导入工具。
  • 迁移时需明确三类口径:可批量修改字段范围、导入模板校验规则、批量修改审计留痕;历史批量修改结果至少需保留任务来源、修改字段、执行结果和失败原因。

接口映射

  • IF-REV-001:客户档案、账户状态、联系人与水表绑定关系查询。
  • IF-CS-001IF-CS-002:客户服务侧账户绑定与信息查询场景复用客户域数据。

落地边界

  • 已落地:客户主档、账户、联系人、分组、绑定、开票、托收/代扣关系。
  • 部分落地:客户扩展关系、集收与规则类对象已见明确关系表,但具体业务场景仍需结合流程进一步细化。
  • 文档先行:主副卡、部分复杂客户关系对象在当前 backend 中未见完全独立表族,文档中仅保留业务对象表述。

REV-002 抄表开账

功能说明

负责抄表计划、册本管理、抄表录入、抄表状态跟踪、异常复核、计费计算与账单生成,是营收核心处理链路的起点。

业务流程

flowchart TD
    A[制定抄表计划] --> B[生成抄表册本]
    B --> C[分配抄表任务]
    C --> D[人工/远传/自报抄表]
    D --> E[数据校验]
    E --> F{是否异常}
    F -->|是| G[异常复核处理]
    F -->|否| H[生成开账数据]
    G --> H
    H --> I[按价格模板与费用组成计费]
    I --> J[生成营业账与明细]
    J --> K[账单审核确认]
    K --> L[进入收费/催缴/开票]

关键规则

  1. 抄表数据同时校验本次读数、上次读数、用量波动和抄表状态,只有通过校验或完成异常复核的数据才能进入开账。
  2. 异常抄表支持估抄、补抄、重录、人工复核;异常处理的目标是形成可继续开账或明确阻断的统一结论,而不是绕开开账规则单独落账。
  3. IF-REV-005 的正式边界是“抄表校验完成后的账单生成”,不负责收费核销、发票开具、催缴执行和统计分析。
  4. 开账计费按价格归属、价格模板、费用组成、阶梯规则、计划用水方案综合计算;价格配置缺失、费用组成不完整或规则冲突时,必须阻断生成并返回失败原因。
  5. 账单生成结果统一由 biz_chargebiz_charge_detail 承接:主表表达客户、账期、应收日期、账单总金额和主状态,明细表表达费用组成、用量、单价和明细金额。
  6. 特殊开账、无码客户开账、罚款类开账等非标准来源,仍纳入同一营业账主明细模型承接,通过来源类型、业务类型、依据说明和操作留痕区分,不单独扩展平行账表。
  7. 审核通过后的营业账方可进入收费、催缴和发票流程;后续链路只能消费已生成账单结果,不反向改变本接口的生成边界。
  8. 远传抄表数据可由 SYS-006 / IoT 能力提供采集支撑,但账单生成仍归属 SYS-002。

开账触发与结果表达

  • 触发前提:正式口径下可按抄表批次、指定客户范围或指定抄表任务范围组织生成;当前 backend 已落地的入口为按 readingDataIds 批量复核并开账,对应 ChargeController.generateCheckChargeBatchChargeServiceImpl.generateCheckChargeBatchReadingDataServiceImpl.batchReCheckReadingData
  • 规则来源:价格归属决定客户适用的价格口径;价格模板、阶梯规则、费用组成和计划用水方案共同决定营业账主表金额与明细拆分方式。
  • 当前承接证据:ChargeServiceImpl.generateSingleChargeWithCache 成功路径会写入 biz_charge 主表、循环写入 biz_charge_detail 明细,并回写抄表数据开账状态,说明现有实现已具备“按抄表数据 ID 生成营业账主明细”的 backend 基础。
  • 结果表达:正式 IF-REV-005 应返回成功清单、失败清单、生成汇总及主明细级结果;当前 backend 返回仍为“本次复核成功X条 / 本次开账成功Y条”的字符串拼接尚未形成结构化成功/失败结果对象。
  • 阻断与限制:价格模板不存在、费用调整配置缺失、结算方式非 ACTUAL_USAGE 等场景当前会直接阻断单条生成;其中固定水量、按人口数、最低消费等非实际水量结算方式仍未纳入当前实现。
  • 下游边界:REV-002 只负责生成营业账结果并交由后续审核/收费链路消费,不在本章节扩展收费核销、发票申请或催缴执行细节。

核心数据

  • biz_meter_book:册本与抄表计划。
  • biz_meter_read:抄表任务状态/执行状态。
  • biz_reading_data:抄表数据。
  • biz_last_reading:上次抄表结果。
  • biz_reading_logs:抄表日志与过程留痕。
  • biz_meter:计量水表主档引用。
  • biz_charge:营业账主表。
  • biz_charge_detail:营业账明细。
  • biz_price_category:价格归属。
  • biz_price_template:价格模板。
  • biz_price_adjustment_snap:调价快照。
  • biz_price_tier_adjustment:阶梯规则。
  • biz_cost_component:费用组成。
  • biz_water_use_schemebiz_water_use_scheme_tier:计划用水方案与阶梯。

迁移补充(旧系统承接)

特殊开账

  • 旧系统支持在非标准客户、无码客户或罚款类场景下直接开账。
  • 新系统仍以 biz_chargebiz_charge_detail 作为开账结果承载对象,不建议额外平行建设“特殊开账账表”。
  • 迁移与新建场景均需保留特殊开账来源、业务类型、经办人、依据说明、打印状态与后续收费关联,避免与普通抄表开账混淆。

开账记录迁移

  • 旧系统“开账记录”是历史查询与账务核对的核心入口,必须纳入迁移最小保留集。
  • 迁移后的开账记录应至少支持按站点、账务年月、册本、客户、抄表员、欠费状态查询,并支持统计水量、总金额及费用构成。
  • 对已收费、已作废、销户拆表、特殊开账等旧状态,不要求照搬旧表结构,但必须保留可对照的新状态映射关系。

接口映射

  • IF-REV-004:抄表数据提交与异常标记。
  • IF-REV-005:账单生成与开账结果返回。
  • IF-METER-004:远传抄表数据接收后进入开账流程。

落地边界

  • 已落地:册本、抄表数据、上次抄表、抄表日志、营业账主明细、价格模板与阶梯规则。
  • 部分落地:部分异常场景对象可能仍通过状态字段和日志表承载,而非全部拆成独立业务表。
  • 文档先行:个别精细稽查、轨迹、下载同步对象当前未在本轮映射中确认为独立表。

REV-003 营业收费

功能说明

支持柜台收费、预存款/余额抵扣、线上缴费回写、柜面扫码、营业网点收费及收费凭证管理,统一承接营收账单的核销处理。

业务流程

flowchart TD
    A[查询客户及待缴账单] --> B[选择账单与核销方式]
    B --> C[选择支付渠道]
    C --> D{支付方式}
    D -->|柜台现金/POS/扫码| E[现场收费]
    D -->|微信/支付宝/聚合支付| F[渠道下单]
    D -->|预存款/余额抵扣| G[账户余额核销]
    E --> H[更新营业账状态]
    F --> I[等待异步回调确认]
    G --> H
    I --> H
    H --> J[生成收费记录与凭证]
    J --> K[进入发票/对账流程]

关键规则

  1. 一次缴费可对应多个账单或账单明细的组合核销。
  2. 收费记录必须保留渠道、流水号、网点、操作员、终端信息。
  3. 线上支付必须以回调或查询确认结果为准,不得以发起状态直接记账。
  4. 支付能力由 SYS-009 提供SYS-002 负责账单核销与业务状态回写。
  5. 当前实现侧已确认 PayCeb 的欠费查询、缴费处理基础闭环可用,但代理收费对账仍为预留能力;正式文档不得将实时收费对账写成已闭环能力。

核心数据

  • biz_chargebiz_charge_detail:待缴与已缴账单主明细。
  • biz_collection:托收/代收主表。
  • biz_withholding:代扣/托收主表。
  • bk_transaction:渠道交易流水。
  • bk_transaction_callback:支付回调记录。
  • bk_transaction_exception:支付异常记录。

迁移补充(旧系统承接)

柜台结账

  • 旧系统将“柜台收费”和“柜台结账”拆分为两个菜单,结账阶段包含未结/已结查询、结账红冲、追加抄表和打印动作。
  • 当前设计可继续采用统一收费核销模型,但必须补出“收费记录 → 班结结果 → 打印/红冲/查询”的业务闭环,避免柜面日终处理缺口。
  • 迁移时需保留结账时间、结账人、网点、收费汇总口径和结账后红冲痕迹,保证财务对账与审计连续。

账单打印服务

  • 旧系统存在账单打印、补打、打印次数控制与打印记录查询能力。
  • 新系统不要求单独建立打印主模块,但必须明确打印模板、补打权限、打印状态与打印留痕的承接关系。
  • 对历史账单迁移,应允许基于账单主明细和打印配置恢复打印视图,避免割接后只能查账不能补打。

红冲记录

  • 旧系统支持红冲记录查询、导出与明细展开,是收费差错追溯的重要入口。
  • 当前设计可将红冲视为收费核销后的修正场景,不强制要求独立实体表,但必须提供历史只读查询口径。
  • 红冲迁移最小保留信息应包括原收费记录、红冲时间、红冲金额、原因、经办人、关联账单和后续账务状态。

接口映射

  • IF-REV-006:创建收费记录、执行账单核销并回写状态。
  • IF-CS-003IF-CS-007:客户渠道与柜面扫码支付场景复用收费核销链路。

落地边界

  • 已落地:营业账主明细、交易流水、回调、异常、托收/代扣主对象。
  • 部分落地:柜台班结、部分收费汇总类对象可能通过业务流程与报表实现,不一定存在独立表。
  • 文档先行:部分红冲、实时收费汇总类台账暂不表述为已确认独立实体表。

REV-004 账务处理

功能说明

REV-004 一期仅覆盖水量调整、金额调整、退款、冲正、坏账申请五类场景,统一挂靠 IF-REV-007 作为账务处理入口,目标是在既有正式文档体系内先收敛范围、承接口径、留痕要求与审批边界。

本阶段按“共性能力先统一、场景能力再分批”组织:先统一账单承接、原交易校验、结果表达、操作留痕与审批边界,再分别展开五类场景。违约金减免、分账调整、价差调整、跨周期水量、预存退款细表等内容仅作为旧系统迁移语义或后续扩展参考,不作为一期新增独立范围。

业务流程

flowchart TD
    A[发起账务调整申请] --> B[校验账单状态与权限]
    B --> C{是否通过}
    C -->|否| D[驳回并记录原因]
    C -->|是| E[执行重算或退款冲正]
    E --> F[更新账单与明细状态]
    F --> G[写入操作日志与审批留痕]
    G --> H[返回处理结果]

关键规则

  1. 一期场景严格限定为水量调整、金额调整、退款、冲正、坏账申请,不扩展到其他接口族或独立账务台账重构。
  2. 所有场景均以 biz_charge / biz_charge_detail 为主承接对象,并通过 biz_operat_log / biz_operat_log_detail 记录处理依据、前后变化和责任归属。
  3. 退款、冲正必须联动 bk_transactionbk_transaction_callbackbk_transaction_exception 等原支付流水及渠道状态校验,不允许仅依据账单状态直接处理。
  4. 接口结果统一返回 resultStatuswriteBackStatus,其中 resultStatus 表示处理结论,writeBackStatus 表示账单状态回写结论,两者不得混用。
  5. 审批相关内容一期仅保留 approvalRequiredPENDING_APPROVAL 与审批边界说明,不展开完整 BPM 流程、节点、流转规则或审批回写实现细节。
  6. 对于当前未见明确独立实体表的特账、跨周期水量、退款账等对象,文档以“业务处理场景”表述,不强行落为已实现表。

核心数据

  • biz_chargebiz_charge_detail:账务调整的核心对象,承接调整前后账单主明细状态。
  • bk_transactionbk_transaction_callbackbk_transaction_exception:退款、冲正场景的原交易校验与异常追溯对象。
  • 价格调整/优惠相关表:用于重算账单或差额追溯。
  • biz_operat_logbiz_operat_log_detail:操作与变更留痕,记录字段差异、处理说明、附件依据与责任归属。

主要场景

场景 说明 控制要点
水量调整 更正异常水量 需复核原因、附件和原抄表依据
金额调整 更正账单金额 需记录依据、差异金额和审批边界
退款 退回客户支付资金或预存款 需校验原交易、退款余额与幂等性
冲正 修正误收/误核销记录 需关联原交易与账单状态
坏账申请 对长期欠费进行分类处理 需结合账龄、客户状态与审批边界

迁移补充(旧系统承接)

旧账务对象 当前承接方式 迁移口径
预存退款 / 预存退款详情 作为账务处理场景承接 保留申请单、原支付引用、退款结果与审批留痕
已销调整汇总 / 明细 作为已收费后修正场景承接 保留原账单、调整原因、前后差异、处理结果
价差调整汇总 / 明细 作为重算与差额修正场景承接 保留原价格口径、新价格口径、差额和生效时间
分账调整汇总 / 明细 作为费用组成重分摊场景承接 保留原分摊结果、调整后结果、责任人和审批链
账单-违约金减免 作为滞纳金修正场景承接 保留减免原因、减免金额、审批结果和生效时间
账单-呆坏账 作为坏账申请与生效场景承接 保留账龄、申请原因、审批结果、核销状态
  1. P0 阶段不要求为每一类旧账务台账都新增独立实体表,但必须在业务对象和历史查询层形成可追溯闭环。
  2. 旧系统精细台账迁移后至少保留:原单据标识、原账单标识、处理类型、处理原因、处理前后金额/水量、申请/审批/生效时间、经办人与附件依据。
  3. 与支付、发票、渠道回调强关联的处理场景,必须保留与原交易、原发票、原收费记录的关联关系,避免后续对账和审计断链。

接口映射

  • IF-REV-007:账务调整、退款、冲正、坏账等处理入口。
  • IF-REV-006:与收费核销状态联动,确保调账后账单状态一致。

落地边界

  • 已落地:营业账主明细、操作日志、价格/方案相关重算支撑。
  • 部分落地:精细化账务对象更多表现为流程与场景,并未在 backend 中全部体现为独立表族。
  • 文档先行:特账、退款账、跨周期水量等对象保留业务语义,不宣称为已实现独立表。

REV-005 发票与税务处理

功能说明

负责发票业务闭环的业务接入与状态落账,覆盖后台发票申请、开票校验、SYS-008 异步协同、查询兜底、结果回写、账单关联、客户侧已开票电子发票查询/下载/推送,以及后台作废与红冲处理。

业务流程

flowchart TD
    A[后台提交发票申请] --> B[校验账单、客户开票信息、税率与限额]
    B --> C{是否满足开票条件}
    C -->|否| D[返回不可开票原因]
    C -->|是| E[生成申请单号并写入SUBMITTED]
    E --> F[调用SYS-008发起异步开票]
    F --> G[记录受理号并转为PENDING]
    G --> H[系统轮询或后台查询兜底]
    H --> I{开票结果}
    I -->|成功| J[回写SUCCESS并更新账单-发票关联]
    I -->|失败| K[回写FAIL并记录失败原因]
    J --> L[客户侧查询/下载/推送电子发票]

状态说明

  • SUBMITTED:后台申请已受理,已完成本地校验并生成申请单。
  • PENDING:已提交 SYS-008,等待异步结果或查询补偿结果。
  • SUCCESS:已取得有效发票代码、号码或电子票地址,且账单关联已完成更新。
  • FAIL:开票失败,需保留失败原因、最近查询结果与后续人工核查依据。
  • INVALID:发票已作废,作为后续能力预留状态。
  • RED_INK:发票已红冲,作为后续能力预留状态。

关键规则

  1. 一期采用“后台申请开票 + 客户侧查询下载推送”的入口模式,客户侧不直接发起开票申请。
  2. 发票申请以客户信息、已收费未开票账单、税率配置和开票限额为基础;原始单账单不支持直接任意部分金额开票。
  3. 个人与企业开票均通过客户开票信息与税率表完成合法性校验;如需多张发票,沿用拆账/分账后的账单分别开票口径。
  4. SYS-008 采用“异步申请 + 查询兜底”模式,成功状态不得被后续失败查询结果覆盖。
  5. 电子发票仅在 SUCCESS 且存在票据文件地址时允许客户侧下载或推送。
  6. 发票作废、红冲仍由 SYS-008 统一承接税控侧处理,SYS-002 负责后台触发入口、状态校验、查询补偿、结果落账与日志留痕;当前轮次按二期范围补齐 backend 实现入口。

后台申请入口与校验补充

  • 后台支持营业收费员、财务人员按单笔或批量已收费账单发起开票申请。
  • 申请时至少校验:账单收费状态、开票状态、客户开票信息完整性、票种适配性、开票限额、账单集合是否属于同一客户。
  • 企业抬头场景重点校验纳税人识别号;电子发票场景重点校验邮箱/手机号;不满足条件时直接返回不可开票原因。
  • 申请成功后生成申请单号并进入 SUBMITTED/PENDING 状态流转,失败校验场景不进入外部协同。
  • 幂等控制以 applicationNocustId + chargeIds 为主,避免相同账单组合重复申请。

SYS-008 异步协同与查询补偿

  • 本地申请校验通过后,SYS-002 先写入 biz_invoice 申请记录,再向 SYS-008 发起异步开票请求,并记录 sysRequestNo 作为后续查询与回写的协同主键。
  • SYS-008 返回“已受理”后,发票状态转为 PENDING;若仅完成本地受理但尚未拿到受理号,则保留 SUBMITTED 并进入待补偿查询状态。
  • 查询补偿采用“回写优先、主动查询兜底”原则:IF-EXT-007 回写为首选结果来源,后台人工查询与系统定时补偿查询共用同一结果落账逻辑。
  • 系统补偿查询至少保留最近查询时间、下次计划查询时间、累计查询次数、最近一次返回结果摘要与异常原因,便于问题追踪和人工核查。
  • 后台按申请单号或受理号触发查询时,应同步刷新查询上下文;查询仍未取得终态时,仅更新补偿上下文,不得伪造成功或失败结论。

终态保护与异常核查

  • SUCCESS 属于正常开票闭环终态,一旦已取得有效发票代码、发票号码或电子票据地址,后续失败查询结果不得覆盖成功状态。
  • FAIL 仅在 SYS-008 明确返回失败结论或多次补偿查询确认失败时写入,并同步保留失败原因、最近查询结果与人工核查依据。
  • 当后台人工查询、系统补偿查询与外部回写结果不一致时,应以最新有效外部凭据为准,并记录差异说明,不允许直接覆盖既有成功票据关键信息。
  • 每次提交协同、主动查询、状态变更和异常分支均应写入操作留痕,确保能够追溯责任人、触发来源、状态前后值与异常说明。

结果回写、账单关联与客户侧消费

  • IF-EXT-007 回写成功结果时,除更新 biz_invoice.invoice_statusinvoice_codeinvoice_numberfile_url 外,还应同步刷新账单快照、账单关联状态与推送状态初值。
  • 账单关联以 biz_invoice.charge_id + charge_ids_snapshot 记录本次开票覆盖账单集合,并同步把对应 biz_charge.invoice_state 更新为“开票完成”,保留失败原因与开票时间,便于账单明细、收费记录和客户侧结果统一展示。
  • 客户侧查询仅允许按本人 custId 访问已存在的发票记录;可通过 invoiceIdapplicationNosysRequestNo 定位,但都必须命中同一客户名下记录。
  • 客户侧下载与推送前必须校验发票状态为 SUCCESSfileUrl 非空;不满足条件时仅返回不可下载/推送原因,不得伪造文件地址。
  • 推送动作应记录推送渠道、目标邮箱/手机号与结果状态;成功后更新 pushStatus=PUSHED,失败则写入 FAIL 并保留失败原因供人工处理。

核心数据

  • biz_invoice:发票主记录。
  • biz_invoice_taxrate:税率配置。
  • biz_cust_invoice:客户开票信息。

迁移补充(旧系统承接)

  • 旧系统数据字典中存在“发票明细表、营业账开票表、开票配置表”等更细粒度对象。
  • 当前正式设计已明确主承接对象为 biz_invoicebiz_invoice_taxratebiz_cust_invoice,但迁移时不能忽略旧开票明细和账单关联关系。
  • P0 阶段建议先补三类迁移口径:账单与发票的关联关系、发票申请与结果回写记录、开票配置与税率的有效期;未确认已落地的细表对象仍按“历史只读或辅助映射”处理。

接口映射

  • IF-REV-008:后台发票申请接口,负责单笔/批量申请、幂等控制与受理号生成。
  • IF-REV-009:发票结果查询接口,负责后台按申请单号/受理号查询以及系统补偿查询。
  • IF-CS-004:客户侧电子发票消费接口,负责已开票结果查看、下载、推送。
  • IF-EXT-007:发票结果回写协同接口(由发票服务侧回传)。

落地边界

  • 已落地:发票主记录、税率配置、客户开票信息,以及一期正常开票闭环所需的后台申请、查询兜底、结果回写、账单关联与客户侧电子发票消费能力。
  • 部分落地:发票修改、开票过程留痕在后端中已有相关对象,但整套发票明细/批次类对象尚未全部确认。
  • 二期补齐:发票作废、红冲及其查询补偿仍由 SYS-008 统一承接,但当前轮次补齐后台触发入口、状态流转、结果回写与日志留痕,不再仅停留于文档预留。
  • 文档先行:发票明细、营业账开票关系等对象仍按设计能力描述,不表述为本轮已确认独立表。

REV-006 催缴与通知

功能说明

针对欠费账单按账龄、金额、客户类别等规则生成催缴任务,通过短信、微信、站内通知等方式触达客户,并回写催缴结果;本模块同时定义催缴与停复水/工单处置之间的联动边界与追溯关系,但不展开停复水内部处置流程。

业务流程

flowchart TD
    A[生成欠费客户清单] --> B[按策略分组催缴任务]
    B --> C[触发IF-REV-013生成催缴任务]
    C --> D[调用IF-EXT-008协同SYS-010]
    D --> E[接收发送结果回写]
    E --> F[更新催缴状态与后续策略]
    F --> G[按联动边界挂接停复水/工单处置]

关键规则

  1. 催缴策略以营业账状态、欠费金额、账龄分布、客户类别和渠道偏好为基础,支持按策略编码进行任务分组与频控。
  2. 自动催缴与人工催缴可并行;自动任务用于常规批量催缴,人工任务用于补发、核查或例外处置。
  3. SYS-002 负责催缴对象筛选、任务生成、业务事件编号、结果承接与历史查询;SYS-010 负责短信、微信公众号、站内信等触达执行与结果回传。
  4. REV-006 正式结果状态固定为 PENDINGSUCCESSFAILMANUAL_VERIFIED 四态,其中 MANUAL_VERIFIED 仅用于外部结果未定或需人工核查补记的场景。
  5. 停复水在本模块中仅定义联动触发条件、处置引用与追溯关系,不展开停复水内部审批、派工或现场执行流程。
  6. 当前后端中部分催缴汇总、停水明细对象未确认独立落表,文档中保持保守描述,不误写为已确认在线主表。

催缴对象筛选、排除与频控边界

  • IF-REV-013 任务生成前必须完成候选筛选,筛选最小维度为:欠费状态、欠费金额、账龄分组、客户类别、渠道偏好和策略编码。
  • 候选对象必须以有效欠费账单为前提;以下场景不得进入正式催缴任务:已收费核销、已作废、已进入不允许催缴的处置流程、策略规则未命中。
  • 触发类型按 triggerType 区分自动与人工;自动用于批量触发,人工用于补发、核查和例外补记,不改变正式接口编号与状态语义。
  • 频控以“同客户/同策略/同渠道/同账期窗口”为最小拦截单元;命中频控时允许部分阻断,并返回被跳过对象及原因摘要。

核心数据

  • biz_chargebiz_charge_detail:催缴对象来源。
  • 催缴结果与通知日志:通过业务状态与消息结果联动留痕。

催缴对象与规则摘要

  • Reminder Candidate:由欠费账单、客户类别、账龄分组、欠费金额、联系方式集合和命中策略编码组成,是催缴任务的输入对象。
  • Reminder Strategy:定义账龄规则、金额规则、客户类别规则、渠道优先级、重复触达拦截窗口和是否触发后续处置关注。
  • Reminder Task:一次正式催缴执行单元,至少包含 taskNoeventNostrategyCodechannelTypetriggerTypestatus 和关联账单信息;正式业务接口编号固定为 IF-REV-013
  • Reminder Result:承接 IF-EXT-008 回传结果后由业务侧映射的正式四态结果,最少记录 statuslastCallbackTimefailReason 与回传摘要。
  • Disposal Link:用于记录催缴结果与停水、复水、工单或人工跟进之间的关联引用,只承担追溯职责,不替代下游业务对象。

四态与人工核查边界

  • PENDING:已生成任务并完成外部受理或等待外部终态回传,尚未形成业务终态。
  • SUCCESS:外部触达结果明确成功,且业务侧已完成结果承接。
  • FAIL:外部返回明确失败或业务判定失败,必须记录失败原因。
  • MANUAL_VERIFIED:仅用于外部结果长期未定、人工核查补记或例外核销说明场景;必须留存核查说明与核查人。
  • 人工核查是状态收口手段,不得用于绕过候选筛选、排除条件或频控约束。

迁移补充(旧系统承接)

催缴记录

  • 旧系统支持催缴记录查询、导出和明细展开,记录中包含推送内容、号码、方式、结果等信息。
  • 新系统可继续以消息协同结果和账单状态联动承接,但必须明确催缴记录查询口径,而不能仅保留“已发送/未发送”状态。
  • 历史查询最少保留客户号、账期、催缴方式、发送对象、发送时间、执行结果、关联账单、关联处置引用等字段,并兼容四态结果或其历史映射值。
  • 历史催缴记录按只读口径承接,作为查询与追溯来源,不反推为已确认在线主表。

停水记录

  • 停水记录不是孤立账务对象,应由催缴结果、业务处置和现场执行工单共同形成闭环。
  • 迁移后需支持按客户、站点、停水原因、停水时间、复水状态查询,并能追溯到对应欠费账单和工单执行结果。
  • 正式设计只定义“何时建立联动、如何保存处置引用、如何追溯关联结果”,不在 REV-006 中展开停复水内部流程设计。
  • 停复水关联以 Disposal Link 的处置引用承接,最少包含任务号、处置类型、处置引用号和建联时间。

预存短信

  • 旧系统对预存款余额不足客户提供短信推送和发送记录查询。
  • 新系统建议将其纳入催缴与通知统一策略,不再单建平行模型,但必须保留触发条件、发送内容、发送结果和补发记录。
  • 该类记录与催缴记录一样,按历史只读口径承接,不表述为新增同名在线主表。

接口映射

  • IF-REV-013:催缴任务生成、任务查询与结果承接接口,负责业务侧任务生成、四态状态维护和历史查询挂接。
  • IF-EXT-008:消息协同结果回写接口(由 SYS-010 协同)。

落地边界

  • 已落地:以营业账为基础的欠费识别前提数据、催缴对象来源字段和消息协同边界约束。
  • 部分落地:催缴登记汇总、停水汇总等对象暂未在 backend 中确认独立表,当前以业务事件、操作留痕和历史查询口径承接。
  • 文档先行:复杂催缴台账、停复水统计和人工核查界面仅作为业务场景保留,不表述为 backend 已完成能力。

REV-007 统计分析

功能说明

提供营收、抄表、收费、欠费、渠道、客户等多维度统计查询能力,为经营分析、业务监管和迁移核查提供统一的数据口径支撑;本模块以经营查询为主,不扩展到预测分析、专题大屏或独立 BI 平台实现。

关键设计

  1. 统计查询按“主题 + 维度 + 指标”三层口径组织,避免仅以报表名称堆砌需求。
  2. 主题范围至少包括营收汇总、收费与实收统计、欠费规模与账龄统计、客户结构统计、渠道交易统计、抄表完成率统计以及营收相关业务概览类摘要。
  3. 查询维度至少包括时间区间、账期、营业所/片区、客户类别、渠道、客户/账户、状态等,并支持必要的分组汇总。
  4. 指标口径需明确区分应收金额、实收金额、欠费余额、账单数、客户数、交易笔数、渠道占比、抄表完成率等相近但不等价的统计概念。
  5. 导出与查询结果受数据权限控制;导出属于查询扩展能力,但不在本轮展开具体导出实现细节。
  6. 重点查询可按聚合视图、汇总口径或预聚合结果承接,但不将未确认存在的统计表、专题分析表或离线数仓对象写成已实现事实。

核心数据

  • 客户维度:biz_custbiz_account
  • 抄表维度:biz_meter_bookbiz_reading_databiz_last_reading
  • 账务与收费维度:biz_chargebiz_charge_detail
  • 收费与交易维度:biz_collectionbk_transaction
  • 渠道维度:bk_transactionbk_payment_channel
  • 组织与权限维度:system_dept、数据权限控制结果。

统计主题与口径摘要

  • Statistics Theme:按经营主题组织查询,至少覆盖营收、收费、欠费、客户、渠道、抄表完成率和必要的业务概览。
  • Statistics Dimension:按时间、账期、营业所/片区、客户类别、渠道、客户/账户、状态等条件筛选或分组。
  • Statistics Indicator:至少明确应收金额、实收金额、欠费余额、账单数、客户数、交易笔数、渠道占比、完成率等指标含义和单位。
  • Aggregation Source:统计结果以现有在线主数据聚合、视图或汇总口径承接,不反推为已存在独立统计表族。

接口映射

  • IF-REV-010:营收、收费、欠费、渠道、客户等统计查询接口,承接主题查询、维度筛选、指标汇总和权限/导出边界。

落地边界

  • 已落地:主要统计源数据在客户、抄表、账单、收费、交易和渠道等领域均已具备,足以支撑经营统计口径设计。
  • 部分落地:部分统计结果可能依赖聚合视图、汇总查询或报表层实现,当前未见明确的 backend 统计控制器或独立统计模型入口。
  • 文档先行预测类、专题分析类深度模型、BI 大屏和独立数仓能力暂不写成后端已实现能力。

REV-008 代收与银行业务

功能说明

支持银行代收、银行代扣、实时收费、夜间批量扣款、对账与结算处理,是 SYS-002 面向 SYS-009 支付与银行结算能力的业务承接模块。

业务流程

flowchart TD
    A[生成代扣批次] --> B[校验签约与待扣账单]
    B --> C[调用IF-REV-011下发批次]
    C --> D[SYS-009对接银行处理]
    D --> E[回写扣款结果]
    E --> F[执行对账与差异识别]
    F --> G{差异是否已处理}
    G -->|否| H[进入人工补偿]
    G -->|是| I[确认结算并更新状态]

关键规则

  1. 渠道、路由、接口配置、签约、交易、回调、异常、对账、结算形成完整银行业务链条。
  2. 实时收费场景由渠道交易流水驱动账单核销,批量代扣场景由签约关系与批次处理驱动。
  3. 对账结果区分一致、长款、短款、失败待处理等状态,支持差异追踪与人工补偿。
  4. 国密报文、批量文件、标准 API 等技术细节由 SYS-009 承载SYS-002 保留业务规则与状态协同。
  5. 当前 backend 已确认 BankWithholding 六条银行入口(客户状态查询、送盘、送盘状态查询、取消送盘、回盘、回盘状态查询)已形成最小实现态闭环;BankCollection 平行链路、对账与结算协同仍以“部分实现或文档先行”表述,不得统一写成已闭环能力。
  6. 银行代扣文件传输配置按“默认规则 + 银行通道覆盖 + 租户覆盖 + 租户-银行通道覆盖”建模,命中优先级固定为 TENANT_CHANNEL > TENANT > CHANNEL > DEFAULT
  7. 目录字段至少区分 send/back/reconcile/archive/localTemp 五类阶段;上层覆盖未完整定义时按字段级回退,不允许生成空路径。
  8. 路径模板仅允许 {tenantId}{companyId}{channelCode}{yyyyMMdd}{yyyyMM}{batchNo}{fileName} 七个固定变量;命中未声明变量或缺少变量取值时立即阻断文件动作。
  9. BankWithholding 在送盘创建时固化 sendProtocol/sendDir/sendFilePathbackProtocol/backDir,配置切换仅影响新发起文件动作,已落库批次继续沿用原解析结果。

核心数据

  • bk_payment_channel:支付渠道。
  • bk_channel_api_config:渠道接口配置。
  • bk_channel_route_rule:渠道路由规则。
  • bk_withholding_agreement:代扣签约。
  • bk_withholding_batchbk_withholding_item:代扣批次与明细。
  • bk_reconcile_batchbk_reconcile_diff:对账批次与差异。
  • bk_settlement_batch:结算批次。
  • bk_transactionbk_transaction_callbackbk_transaction_exception:交易、回调、异常。
  • biz_collectionbiz_withholding:代收/代扣业务主对象。

文件传输配置与审计补充

  • 环境默认规则通过 Spring profile + Nacos 承接,不在仓库样例中写入真实密码、私钥或证书。
  • bk_channel_api_config 使用专用 apiType=FILE_TRANSFER_CONFIG 承接文件传输覆盖配置,extParams 记录作用域、业务类型、协议、连接引用和五类目录字段。
  • bk_withholding_batch 固化送盘/回盘目录与协议,bk_reconcile_batch 固化对账阶段最终 protocol/dir/filePath/fileName,用于审计与问题回放。

迁移补充(旧系统承接)

银行托收

  • 旧系统“银行托收”菜单重点承接托收送盘、托收信息查询和托收结果回看。
  • 当前设计已形成 biz_collection + bk_* 渠道模型,迁移时应补出“旧托收菜单 → 托收批次/交易/回盘结果”的映射,而不是按旧菜单名平移建模。
  • 旧托收历史记录应至少保留送盘批次、客户范围、送盘结果、回盘结果和账单核销结果。

实时收费查询与对账

  • 旧系统“实时收费”更偏运营查询和渠道对账入口,不只是支付成功回写。
  • 当前建议以 bk_transaction* 作为主承接对象,并补充按结算日期、银行/渠道、收费结果、差异状态查询和导出能力说明。
  • 对旧“实时收费汇总/日志/明细”对象P0 阶段先按历史只读查询口径保留,不误写为当前已落地的独立主模型。

当前实现对齐说明

  • PayCeb 路径已具备欠费查询、缴费处理、流水唯一性校验和交易日志留痕,可作为实时收费基础闭环的实现证据。
  • BankWithholding 路径已具备签约、解约、客户状态查询、送盘、送盘状态查询、取消送盘、回盘、回盘状态查询及对应交易留痕的实现证据,可作为代扣最小实现态闭环依据。
  • BankCollection 路径当前仍仅能确认签约、解约与协议/交易日志处理具备实现证据。
  • 对账、结算、真实银行文件解析、SFTP/文件通道联调和运行态样本补证当前仍未闭环,正式文档应继续保留为后续完善项。

接口映射

  • IF-REV-011:代扣批次、对账与结算协同入口。
  • IF-EXT-001:银行代扣批次下发与回盘协同。
  • IF-EXT-003:银行实时收费查询、缴费与结果确认协同。

落地边界

  • 已落地:渠道、路由、交易、回调、异常、代扣/托收签约、解约,以及 BankWithholding 的客户状态查询、送盘、送盘状态查询、取消送盘、回盘、回盘状态查询和对应日志留痕等主对象已具备明确实现证据。
  • 部分落地BankCollection 批次、明细、送盘、回盘、状态查询、差异台账和后台资源管理入口已具备对象或骨架,但不等同于银行协同闭环全部完成;BankWithholding 的真实文件解析、异常补偿和运行态联调证据仍待补齐。
  • 文档先行:夜间批量代扣调度、完整对账处理、结算确认、扩展银行台账等内容不得在当前阶段写成已完成能力。

REV-009 业务参数配置

功能说明

负责营收域的价格参数、客户编号规则、页面配置、打印与渠道相关业务参数配置,为客户、开账、收费、发票、催缴等模块提供统一配置支撑。

关键设计

  1. 业务参数按租户、单位、片区、业务类别分层管理。
  2. 价格体系、客户编号规则、页面字段配置、打印与通知参数统一归口维护。
  3. 配置变更应具备版本化、操作留痕与生效范围控制。

核心数据

  • biz_parameter_settings:业务参数配置。
  • biz_page_settingsbiz_page_settings_detail:页面配置。
  • biz_price_categorybiz_price_templatebiz_template_dept_rel:价格归属与模板站点关系。
  • biz_cust_no_rule:客户编号规则。
  • sys_wechat_app_settings:微信/微网厅基础配置。

迁移补充(旧系统承接)

  • 旧系统后台存在“页面配置、业务字段、微信参数、打印维护”等运营配置入口。
  • 当前建议统一按业务参数、页面配置、渠道参数与打印参数归口承接,不新增“微客服后台配置”并行主文档。
  • 迁移时需明确三类配置映射:客户/业务办理字段展示与校验规则、微信/微网厅基础参数、打印模板与补打策略;未确认已实现的高级灰度能力继续按“文档先行”处理。

接口映射

  • IF-REV-012:查询与维护价格模板、业务参数、页面参数配置。
  • IF-UP-004:统一平台参数字典能力协同,为营收域参数提供基础字典支撑。

落地边界

  • 已落地:业务参数、页面配置、价格归属与模板站点关系、客户编号规则等核心配置对象。
  • 部分落地:部分打印模板、通知策略等参数由统一平台或外部渠道参数共同承载,营收域仅保留业务侧映射。
  • 文档先行:参数灰度发布、多版本并行生效等高级治理能力当前仅保留设计语义,不宣称为独立实现模块。