diff --git a/output/.$08_planb_network.drawio.bkp b/output/.$08_planb_network.drawio.bkp new file mode 100644 index 0000000..dcffa3c --- /dev/null +++ b/output/.$08_planb_network.drawio.bkp @@ -0,0 +1,453 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/output/01_Database_Design.docx b/output/01_Database_Design.docx new file mode 100644 index 0000000..53d1201 Binary files /dev/null and b/output/01_Database_Design.docx differ diff --git a/output/01_Database_Design.html b/output/01_Database_Design.html new file mode 100644 index 0000000..de50720 --- /dev/null +++ b/output/01_Database_Design.html @@ -0,0 +1,10619 @@ + + + + + + + + 福建水务营收系统-数据库设计 + + + + + +
+

福建水务营收系统-数据库设计

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统数据库设计说明书

+

1.1 章节导航(精简)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文件状态:文档密级:公开
【 】草稿
【 】修改稿
【√】正式发布
当前版本:V1.6
作者:唐伟杰
完成日期:2025-08-01
+

1.2 版本历史

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
日期版本号作者备注
2025-07-17V1.0唐伟杰初稿
2025-07-17V1.1唐伟杰根据用户要求,严格对齐SQL文件,确保所有表和字段的完整性。
2025-08-01V1.2唐伟杰1. +根据详细设计说明书调整目录结构,按6个子系统重新组织表结构。
2. +补充移动端表设计优化说明,明确移动端与Web端表复用策略。
3. +新增5个移动端特有表的详细设计,符合表设计优化原则。
2025-08-01V1.3唐伟杰数据库系统变更:将OpenGauss替换为达梦数据库 +8.0+,作为主力国产数据库方案。
2025-08-01V1.4唐伟杰单点登录采用OAuth2.0协议:新增OAuth2.0相关数据表设计,包括客户端信息表、访问令牌表、刷新令牌表、授权码表。
2026-03-12V1.6唐伟杰补充旧系统历史台账迁移与只读查询口径,明确在线主模型承接范围、历史最小保留集与迁移验收对账基线。
+

# 前言 +本文档详细描述了福建水务营收系统的数据库设计,包括总体架构、E-R图、数据表结构、字段定义和索引策略。旨在为开发和运维人员提供清晰的数据结构参考。

+

# 外部设计

+ +

# 数据库设计说明 +数据库设计遵循第三范式(3NF),并采用基于tenant_id字段隔离的SaaS多租户架构。

+

# 表结构设计

+

1.3 数据表总体概览

+
+

说明:本次重点对齐 SYS-002 +相关数据库口径。SYS-002 的核心表命名已统一收敛为 +biz_* 与 +bk_*,并已清理旧稿中分散的历史表模型。对于旧数据字典中仍未在 +backend +识别到独立实体表的对象,本文以“业务对象/处理场景”描述,不强行拆分为真实表。

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块表前缀主要功能当前口径
系统公共system_用户、角色、权限、部门、租户、字典、日志、OAuth2 +等统一平台能力保持现稿
SYS-002 基础配置与价格体系biz_community, +biz_company_*, biz_meter_*, +biz_price_*, biz_template_*小区、水司账户、水表参数、价格体系、调价快照、优惠方案、模板关系等已按真实表对齐
SYS-002 客户主数据与账户关系biz_cust*, +biz_account客户主档、联系人、客户组、水表绑定、开票信息、托收/代扣关系、编号规则等已按真实表对齐
SYS-002 抄表开账与账单biz_meter, +biz_meter_book, biz_meter_read, +biz_reading_*, biz_charge*抄表册本、抄表状态、读数留痕、开账主单与明细已按真实表对齐
SYS-002 收费票据与操作留痕biz_collection, +biz_withholding, biz_invoice*, +biz_operat_log*收费、托收/代扣、发票、操作留痕与审计支撑已按真实表对齐
SYS-002 业务办理与资料biz_process*, +biz_business_*, biz_content*业务办理流程、流转、装表资料、附件与扩展数据已按真实表对齐
SYS-002 银行代收与结算bk_*渠道路由、交易回调、代扣签约、批次、对账、结算已按真实表对齐
SYS-003 手机抄表 APPmobile_*移动作业缓存、登录日志、离线任务与现场上报保持现稿
METER/INST 专题表biz_meter_*installation_*、历史 +water_meter_*表务专题与报装签章专题扩展已纳入专题边界(见 +METER/INST 专题表边界
+

1.4 系统公共表 (system_*)

+

(基于 sw_system_publcli.sql)

+
+ +点击展开/折叠系统表详情 + +

1.4.1 system_dept (部门表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()部门id
namevarchar(30)Y部门名称
parent_idint8N0父部门id
sortint4N0显示顺序
leader_user_idint8Y负责人
phonevarchar(11)Y联系电话
emailvarchar(50)Y邮箱
typevarchar(10)Y部门类型
codevarchar(50)Y部门代码
statusint2N部门状态(0正常 1停用)
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
longitudenumeric(10,7)Y经度
latitudenumeric(10,7)Y纬度
remarkvarchar(500)Y备注
+

1.4.2 system_dict_data +(字典数据表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N字典编码
sortint4N0字典排序
labelvarchar(100)Y字典标签
valuevarchar(100)Y字典键值
dict_typevarchar(100)Y字典类型
statusint2N0状态(0正常 1停用)
color_typevarchar(100)Y颜色类型
css_classvarchar(100)Ycss 样式
remarkvarchar(500)Y备注
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.4.3 system_dict_type +(字典类型表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N字典主键
namevarchar(100)Y字典名称
typevarchar(100)Y字典类型
statusint2N0状态(0正常 1停用)
remarkvarchar(500)Y备注
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
deleted_timetimestamp(6)Y删除时间
+

1.4.4 system_login_log +(系统访问记录)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N访问ID
log_typeint8N日志类型
trace_idvarchar(64)Y链路追踪编号
user_idint8N0用户编号
user_typeint2N0用户类型
usernamevarchar(50)Y用户账号
resultint2N登陆结果
user_ipvarchar(50)N用户 IP
user_agentvarchar(512)N浏览器 UA
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.4.5 system_mail_account +(邮箱账号表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N主键
mailvarchar(255)N邮箱
usernamevarchar(255)N用户名
passwordvarchar(255)N密码
hostvarchar(255)NSMTP 服务器域名
portint4NSMTP 服务器端口
ssl_enableboolNfalse是否开启 SSL
starttls_enableboolNfalse是否开启 STARTTLS
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.4.6 system_mail_log +(邮件日志表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
user_idint8Y用户编号
user_typeint2Y用户类型
to_mailvarchar(255)N接收邮箱地址
account_idint8N邮箱账号编号
from_mailvarchar(255)N发送邮箱地址
template_idint8N模板编号
template_codevarchar(63)N模板编码
template_nicknamevarchar(255)Y模版发送人名称
template_titlevarchar(255)N邮件标题
template_contentvarchar(10240)N邮件内容
template_paramsvarchar(255)N邮件参数
send_statusint2N0发送状态
send_timetimestamp(6)Y发送时间
send_message_idvarchar(255)Y发送返回的消息 ID
send_exceptionvarchar(4096)Y发送异常
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.4.7 system_mail_template +(邮件模版表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
namevarchar(63)N模板名称
codevarchar(63)N模板编码
account_idint8N发送的邮箱账号编号
nicknamevarchar(255)Y发送人名称
titlevarchar(255)N模板标题
contentvarchar(10240)N模板内容
paramsvarchar(255)N参数数组
statusint2N开启状态
remarkvarchar(255)Y备注
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.4.8 system_users (用户表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N用户ID
usernamevarchar(30)N用户账号
passwordvarchar(100)N密码
nicknamevarchar(30)N用户昵称
remarkvarchar(500)Y备注
dept_idint8Y部门ID
post_idsvarchar(255)Y岗位编号数组
emailvarchar(50)Y用户邮箱
mobilevarchar(11)Y手机号码
sexint2Y用户性别
avatarvarchar(512)Y头像地址
statusint2N帐号状态(0正常 1停用)
login_ipvarchar(50)Y最后登录IP
login_datetimestamp(6)Y最后登录时间
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.4.9 system_role (角色信息表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N角色ID
namevarchar(30)N角色名称
codevarchar(100)N角色权限字符串
sortint4N显示顺序
data_scopeint2N1数据范围(1:全部数据权限 2:自定数据权限 +3:本部门数据权限 4:本部门及以下数据权限)
data_scope_dept_idsvarchar(500)N数据范围(指定部门数组)
statusint2N角色状态(0正常 1停用)
typeint2N角色类型
remarkvarchar(500)Y备注
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.4.10 system_menu +(菜单权限表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N菜单ID
namevarchar(50)N菜单名称
permissionvarchar(100)N权限标识
typeint2N菜单类型
sortint4N0显示顺序
parent_idint8N0父菜单ID
pathvarchar(200)Y路由地址
iconvarchar(100)Y菜单图标
componentvarchar(255)Y组件路径
component_namevarchar(255)Y组件名
statusint2N菜单状态
visibleboolNtrue是否可见
keep_aliveboolNtrue是否缓存
always_showboolNtrue是否总是显示
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.4.11 system_tenant (租户表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N租户编号
namevarchar(30)N租户名
contact_user_idint8Y联系人的用户编号
contact_namevarchar(30)N联系人
contact_mobilevarchar(500)Y联系手机
statusint2N租户状态(0正常 1停用)
websitevarchar(256)Y绑定域名
package_idint8N租户套餐编号
expire_timetimestamp(6)N过期时间
account_countint4N账号数量
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.4.12 system_user_session +(用户会话表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()会话ID
user_idint8N用户ID
session_idvarchar(100)N会话标识
tokenvarchar(500)N访问令牌
refresh_tokenvarchar(500)Y刷新令牌
login_ipvarchar(50)N登录IP
login_locationvarchar(100)Y登录地点
user_agentvarchar(500)Y用户代理
session_timeoutint4N1800会话超时时间(秒)
last_access_timetimestamp(6)Npg_systimestamp()最后访问时间
is_activeint2N1是否活跃:0-否,1-是
logout_timetimestamp(6)Y登出时间
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.4.13 system_user_role +(用户角色关联表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
user_idint8N用户ID
role_idint8N角色ID
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.4.14 system_role_menu +(角色菜单关联表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
role_idint8N角色ID
menu_idint8N菜单ID
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+
+

1.5 子系统1: 统一平台数据表

+

统一平台主要负责系统基础功能,包括用户管理、权限管理、部门管理等。这些表主要为system_*系列,已在上一节详细描述。

+

1.5.1 OAuth2.0单点登录相关表

+

为支持OAuth2.0协议的单点登录功能,系统新增以下OAuth2.0相关数据表:

+
+ +点击展开/折叠OAuth2.0表详情 + +

1.5.2 system_oauth2_client +(OAuth2客户端表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
client_idvarchar(255)N客户端编号
secretvarchar(255)N客户端密钥
namevarchar(255)N应用名
logovarchar(255)N应用图标
descriptionvarchar(255)Y应用描述
statusint2N状态
access_token_validity_secondsint4N访问令牌的有效期
refresh_token_validity_secondsint4N刷新令牌的有效期
redirect_urisvarchar(255)N可重定向的 URI 地址
authorized_grant_typesvarchar(255)N授权类型
scopesvarchar(255)Y授权范围
auto_approve_scopesvarchar(255)Y自动通过的授权范围
authoritiesvarchar(255)Y权限
resource_idsvarchar(255)Y资源
additional_informationvarchar(4096)Y附加信息
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
+

1.5.3 system_oauth2_access_token +(OAuth2访问令牌表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
user_idint8N用户编号
user_typeint2N用户类型
user_infovarchar(512)N用户信息
access_tokenvarchar(255)N访问令牌
refresh_tokenvarchar(32)N刷新令牌
client_idvarchar(255)N客户端编号
scopesvarchar(255)Y授权范围
expires_timetimestamp(6)N过期时间
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.5.4 system_oauth2_refresh_token +(OAuth2刷新令牌表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
user_idint8N用户编号
refresh_tokenvarchar(32)N刷新令牌
user_typeint2N用户类型
client_idvarchar(255)N客户端编号
scopesvarchar(255)Y授权范围
expires_timetimestamp(6)N过期时间
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.5.5 system_oauth2_code +(OAuth2授权码表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
user_idint8N用户编号
user_typeint2N用户类型
codevarchar(32)N授权码
client_idvarchar(255)N客户端编号
scopesvarchar(255)Y授权范围
expires_timetimestamp(6)N过期时间
redirect_urivarchar(255)Y可重定向的 URI 地址
statevarchar(255)Y状态
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.5.6 system_oauth2_approve +(OAuth2批准表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8N编号
user_idint8N用户编号
user_typeint2N用户类型
client_idvarchar(255)N客户端编号
scopevarchar(255)Y授权范围
approvedboolNfalse是否接受
expires_timetimestamp(6)N过期时间
creatorvarchar(64)Y创建者
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新者
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+
+

1.6 子系统2: 营收系统数据表

+

营收系统是核心业务系统,包括客户管理、抄表管理、账务管理、发票管理等核心业务功能。

+
+ +点击展开/折叠营收系统表详情 + +

1.6.1 biz_community +(所属小区表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(200)N小区名称
codevarchar(100)N小区代码
addressvarchar(500)Y小区地址
contact_numbervarchar(100)Y联系号码
dept_codevarchar(50)N部门代码,关联系统部门表
parent_idint8Y父级小区id,支持小区层级管理
ancestor_listvarchar(1000)Y祖级列表,格式:1,2,3表示祖级小区id列表
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.2 system_user_form_config +(用户表单字段配置表-标准)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键ID
obj_idint8Y对象ID(用户id/角色id等)
config_typeint2N配置类型:1-个人配置,2-角色配置
codevarchar(100)N表格标识/模版号(与菜单或功能标识关联)
column_keyvarchar(100)N列字段标识
column_titlevarchar(100)Y自定义列标题
column_widthint4Y列宽度
is_visibleint2N0是否显示:0-显示,1-隐藏
is_printableint2N0是否可打印:0-是,1-否
sort_orderint4N0排序序号
creatorvarchar(64)Y创建人
create_timetimestamp(6)Npg_systimestamp()创建时间
updatervarchar(64)Y更新人
update_timetimestamp(6)Npg_systimestamp()更新时间
deletedint2N0是否删除
tenant_idint8N0租户编号
+

1.6.3 biz_company_account +(水司账户表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
account_namevarchar(200)N账户名称
account_addressvarchar(500)Y账户地址
bank_namevarchar(200)N开户行名称
bank_codevarchar(100)N开户行代码
bank_accountvarchar(100)N开户行账户
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.4 biz_cost_component +(费用组成表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y费用名称
codevarchar(100)N费用代码
penalty_coefficientnumeric(10,4)Y违约金系数,违约金计算系数,默认为0表示不收取违约金
zero_usage_calculationint2N0零用量是否计算,0-不计算,1-计算
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.5 biz_dept_account_rel +(部门和水司账户关系表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
dept_codevarchar(50)N部门代码,关联系统部门表
account_idint8N水司账户id,关联水司账户表
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.6 biz_meter_caliber +(水表口径表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y口径名称
codevarchar(100)N口径代码
valuenumeric(10,2)Y口径值(单位:毫米)
check_periodint4Y强检周期(单位:年)
replace_periodint4Y定换周期(单位:年)
high_coefficientnumeric(10,4)Y量高系数,抄表量高提醒系数
low_coefficientnumeric(10,4)Y量低系数,抄表量低提醒系数
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.7 biz_meter_maker +(水表厂家表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y厂家名称
codevarchar(100)N厂家代码
recharge_typevarchar(10)Y充值类型
addressvarchar(500)Y地址
contactvarchar(100)Y联系人
contact_numbervarchar(100)Y联系号码
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.8 biz_meter_model +(水表型号表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
maker_codevarchar(100)N厂家代码,关联水表厂家表
namevarchar(100)Y型号名称
codevarchar(100)N型号代码
caliber_rangevarchar(200)Y口径范围,如:DN15-DN200
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.9 biz_meter_range +(水表量程表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y量程名称
codevarchar(100)N量程代码
valuenumeric(15,3)Y量程值
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.10 biz_price_category +(水价归属表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y归属名称
codevarchar(100)N归属代码
parent_idint8Y父级归属id
ancestor_listvarchar(1000)Y祖级列表,格式:1,2,3表示祖级归属id列表
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.11 biz_price_adjustment_history +(水价调整历史表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
adjustment_idint8N调整id,关联水价调整表
before_valuenumeric(15,4)Y调整前价格
after_valuenumeric(15,4)Y调整后价格
adjustment_reasonvarchar(500)Y调整原因
effective_datetimestamp(6)Y生效日期
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.12 biz_price_cost_adjustment +(价格成本调整表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
cost_component_codevarchar(100)N费用组成代码,关联费用组成表
price_category_codevarchar(100)N价格归属代码,关联价格归属表
price_valuenumeric(15,4)Y价格值
effective_datetimestamp(6)Y生效日期
expire_datetimestamp(6)Y失效日期
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.13 biz_price_dept_rel +(价格部门关系表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
price_category_codevarchar(100)N价格归属代码,关联价格归属表
dept_codevarchar(50)N部门代码,关联系统部门表
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.14 biz_price_discount_cost +(价格折扣成本表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
scheme_idint8N折扣方案id,关联价格折扣方案表
cost_component_codevarchar(100)N费用组成代码,关联费用组成表
discount_ratenumeric(10,4)Y折扣率,0-1之间的小数
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.15 biz_price_discount_scheme +(价格折扣方案表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y方案名称
codevarchar(100)N方案代码
price_category_codevarchar(100)N价格归属代码,关联价格归属表
discount_typevarchar(20)Y折扣类型,如:百分比、固定金额等
effective_datetimestamp(6)Y生效日期
expire_datetimestamp(6)Y失效日期
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.16 biz_price_discount_tier +(价格折扣阶梯表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
scheme_idint8N折扣方案id,关联价格折扣方案表
tier_levelint4Y阶梯级别
start_valuenumeric(15,3)Y起始值
end_valuenumeric(15,3)Y结束值
discount_ratenumeric(10,4)Y折扣率
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.17 biz_price_tier_adjustment +(价格阶梯调整表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
cost_component_codevarchar(100)N费用组成代码,关联费用组成表
price_category_codevarchar(100)N价格归属代码,关联价格归属表
tier_levelint4Y阶梯级别
start_valuenumeric(15,3)Y起始值
end_valuenumeric(15,3)Y结束值
price_valuenumeric(15,4)Y价格值
effective_datetimestamp(6)Y生效日期
expire_datetimestamp(6)Y失效日期
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.18 biz_price_adjustment_snap +(水价调整快照表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
codeint4N快照编号/版本号,1->2->3递增
effective_datetimestamp(6)N生效日期
expiry_datetimestamp(6)Y失效日期,为空表示长期有效
adjustervarchar(100)Y调价人
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间/调价时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.19 biz_price_template +(水价调整模版表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
namevarchar(100)Y用水性质名称
codevarchar(100)N模版代码/简号
price_category_codevarchar(100)N水价归属代码,关联价格归属表
adjustment_snap_codevarchar(100)N调价快照code,关联水价调整快照表
meter_startint4Y起开量
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.20 biz_template_dept_rel +(模版部门关系表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
dept_codevarchar(50)N部门代码,关联系统部门表
template_codevarchar(100)N水价调整模版代码
adjustment_snap_codevarchar(100)N调价快照code
is_defaultint2N0是否默认:0-否,1-是
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.21 biz_price_tier_adjustment +(水价阶梯调整表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
cost_adjustment_idint8N水价费用调整id
cost_component_codevarchar(100)N费用组成代码
tier_levelint4N0阶梯级别,如1、2、3等
start_volumenumeric(15,3)Y开始水量,单位:立方米
end_volumenumeric(15,3)Y结束水量,为空表示无上限
pricenumeric(10,4)N价格,单位:元/立方米或元
volume_coefficientnumeric(10,4)N1水量系数,用于特殊计算场景
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.22 biz_price_discount_scheme +(水价优惠方案表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
scheme_namevarchar(200)N方案名称,如:居民用户优惠方案2024
scheme_codevarchar(100)N方案代码
template_codevarchar(100)N水价模版代码
discount_typeint4N优惠方式:1-按水量,2-按比例
effective_datedateN生效日期
expiry_datedateY失效日期,为空表示长期有效
scheme_descriptionvarchar(1000)Y方案描述
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.23 biz_price_discount_tier +(水价优惠阶梯表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
scheme_idint8N优惠方案id
tier_levelint4N0阶梯级别,如1、2、3等
start_volumenumeric(15,3)Y开始水量,单位:立方米
end_volumenumeric(15,3)Y结束水量,为空表示无上限
include_in_tierint2N1是否计入阶梯:0-不计入,1-计入
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.6.24 biz_price_discount_cost +(水价优惠费用表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
tier_idint8N优惠阶梯id
cost_component_codevarchar(100)N费用组成代码
discount_pricenumeric(10,4)N优惠价格,单位:元/立方米或元
sortint4N0排序
remarkvarchar(500)Y备注
statusint2N0状态:0-否,1-是
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.7 SYS-002 客户与账户关系表 +(biz_cust* / biz_account)

+
+

说明:以下内容按 +sql/lhc_数据库设计.mddocs/guides/BACKEND_TABLE_MAPPING.md +与当前 backend +真实表名进行整编,字段以“数据库专项设计阶段需重点关注的核心字段”为主,不再延续旧稿中的 +customer_* 系列表命名。

+
+

1.7.1 biz_cust (客户主档表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
code客户编号
name客户名称
cust_type客户类型
id_type / +id_no证件类型 / 证件号码
mobile / +address联系电话 / 地址
dept_code所属营业部门
status客户状态
tenant_id租户编号
+

1.7.2 biz_account (客户账户表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
code账户编号
cust_id客户主档 ID
balance账户余额
arrears_amount欠费金额
account_status账户状态
tenant_id租户编号
+

1.7.3 biz_cust_contact +(客户联系人表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
cust_id客户主档 ID
name联系人姓名
mobile联系电话
contact_type联系人类型
is_default是否默认联系人
+

1.7.4 biz_cust_group +(客户分组表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
code分组编码
name分组名称
parent_id上级分组
status状态
+

1.7.5 biz_cust_meter +(客户与水表关系表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
cust_id客户主档 ID
meter_id水表主档 ID
bind_type绑定类型
is_main是否主表
status关系状态
+

1.7.6 biz_cust_invoice +(客户开票信息表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
cust_id客户主档 ID
invoice_title开票抬头
tax_no纳税人识别号
email发票接收邮箱
mobile联系手机号
+

1.7.7 biz_cust_app_binds +(客户应用绑定表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
cust_id客户主档 ID
app_type应用类型
app_user_id外部应用用户标识
status绑定状态
+

1.7.8 biz_cust_collection_rel / +biz_cust_withholding_rel (托收/代扣关系表)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_cust_collection_relcust_id, +collection_id, status客户与托收关系
biz_cust_withholding_relcust_id, +withholding_id, status客户与代扣关系
+

1.7.9 biz_cust_water_use_scheme / +biz_cust_water_scheme_rel (用水方案关系表)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_cust_water_use_schemecust_id, +scheme_code, effective_date客户用水方案
biz_cust_water_scheme_relcust_id, +template_code, status客户与价格模板关系
+

1.7.10 biz_cust_no_rule / +biz_cust_hub_marks (客户编号与集抄标识表)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_cust_no_rulerule_code, +prefix, dept_code, status客户编号规则
biz_cust_hub_markscust_id, +hub_code, mark_type集抄/枢纽标识
+

1.8 SYS-002 抄表、水表与价格支撑表 +(biz_meter* / biz_reading_* / +biz_price_*)

+

1.8.1 biz_meter (水表主档表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
code水表编号
meter_no出厂表号
maker_code / +model_code厂家 / 型号
caliber_code / +range_code口径 / 量程
install_address安装地址
meter_status水表状态
tenant_id租户编号
+

1.8.2 biz_meter_book +(抄表册本表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
code册本编号
name册本名称
dept_code所属部门
reader_user抄表员
reading_cycle抄表周期
status册本状态
+

1.8.3 biz_meter_read +(抄表任务/状态表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
book_id册本 ID
cust_id客户 ID
meter_id水表 ID
read_period抄表期间
read_status抄表状态
read_type抄表方式
+

1.8.4 biz_reading_data +(抄表数据表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
meter_read_id抄表任务 ID
last_reading上次读数
current_reading本次读数
water_usage用水量
read_time抄见时间
photo_url抄表照片
+

1.8.5 biz_last_reading / +biz_reading_logs (上次读数与抄表日志)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_last_readingmeter_id, +last_reading, last_read_time水表最近有效读数
biz_reading_logsmeter_id, +operate_type, operator, +operate_time抄表处理留痕
+

1.8.6 价格与模板支撑表

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_price_categorycode, name, +parent_id水价归属
biz_price_templatecode, +price_category_code, adjustment_snap_code水价模板
biz_price_adjustment_snapcode, +effective_date, expiry_date调价快照
biz_price_cost_adjustmentprice_category_code, +cost_component_code, price_value费用调价
biz_price_tier_adjustmentcost_component_code, +tier_level, start_volume, +end_volume, price阶梯价格
biz_cost_componentcode, name, +penalty_coefficient费用组成
biz_water_use_schemecode, name, +status用水方案
biz_water_use_scheme_tierscheme_code, +tier_level, start_volume, +end_volume用水阶梯
biz_exceed_water_use_schemescheme_code, +exceed_type, price_rule超计划规则
+

1.9 SYS-002 开账、收费与票据表 +(biz_charge* / biz_collection / +biz_withholding / biz_invoice*)

+

1.9.1 biz_charge (营业账主表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
code账单编号
cust_id客户 ID
record_id抄表记录或开账来源 ID
bill_period账单期间
total_amount账单总金额
charge_status收费状态
due_date应缴日期
+

1.9.2 biz_charge_detail +(营业账明细表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名说明
id主键
charge_id营业账主表 ID
cost_component_code费用组成代码
usage_amount用量
unit_price单价
detail_amount明细金额
+

1.9.2.1 REV-002 +账单生成承接口径

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
对象正式口径承接说明
biz_charge账单生成主结果对象统一表达客户、账期、抄表/开账来源、账单总金额、收费状态与应缴日期,不单独发明新的在线账单主模型
biz_charge_detail账单生成明细对象统一表达费用组成、用量、单价、明细金额,与主表通过 +charge_id 建立主明细关系
biz_price_categorybiz_price_templatebiz_price_adjustment_snapbiz_price_tier_adjustment计费规则来源对象用于表达价格归属、基础价格、调价快照与阶梯规则来源,支撑账单金额计算与追溯
biz_cost_component费用组成定义对象用于表达水费、污水费、附加费、罚款类费用等明细分类,不将费用组成直接硬编码到主表
biz_water_use_schemebiz_water_use_scheme_tierbiz_exceed_water_use_scheme计划用水与超计划规则对象用于承接计划用水、超计划与阶梯类扩展规则,不额外发明平行的特殊开账规则表
历史开账记录、特殊开账历史只读 / 同模型承接对象统一纳入 +biz_chargebiz_charge_detail +与操作留痕承接,通过来源类型、业务类型、依据说明区分,不单设“特殊开账表”
+
+

REV-002 承接口径:账单生成结果统一由 +biz_chargebiz_charge_detail +承接,关键规则来源继续由 +biz_price_*biz_cost_component +与计划用水相关对象提供;当价格模板、费用组成或规则关系不完整时,应按“阻断生成”口径处理。

+

当前 backend +证据:ChargeServiceImpl.generateSingleChargeWithCache +成功路径已执行 +chargeMapper.insert(charge)chargeDetailService.insertChargeDetail(detail) +与 +updateReadingDataCheckState(readingDataId, 1),说明现有实现已能把按 +readingDataIds 复核/开账的结果落入 +biz_chargebiz_charge_detail

+

当前承接缺口:接口层返回仍为成功条数字符串,失败阻断主要依赖日志与布尔值,且仅支持 +ACTUAL_USAGE 结算方式;biz_charge / +biz_charge_detail +的主明细结果、失败对象范围和结构化原因尚未提升为正式 +IF-REV-005 契约返回。

+

REV-004 承接口径:水量调整、金额调整、退款、冲正、坏账申请统一以 +biz_chargebiz_charge_detail +作为账单主明细承接对象;当前数据库主文档不新增独立账务细表来承接一期场景。

+
+

1.9.3 biz_collection / +biz_withholding (托收与代扣主表)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_collectioncode, cust_id, +charge_id, collection_status托收主表
biz_withholdingcode, cust_id, +charge_id, withholding_status代扣主表
+

1.9.4 biz_invoice / +biz_invoice_taxrate (发票主表与税率表)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_invoicecode, cust_id, +charge_id, invoice_status, +invoice_amount发票主表,统一承接申请单号、账单关联、受理号、开票结果与电子票地址等核心状态
biz_invoice_taxratetax_code, +tax_name, tax_rate, status税率基础配置
+

1.9.4.1 REV-005 发票承接口径

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
对象已有字段待补字段仅快照/历史只读字段
biz_invoice +发票申请/结果主对象codecust_idcharge_idinvoice_statusinvoice_amountapplication_nosys_request_noinvoice_typeinvoice_titletax_noemailmobilesource_channelfail_reasoninvoice_codeinvoice_numberfile_urllast_try_timenext_try_timetry_countpush_statuscharge_ids_snapshotcharge_bind_status、作废原因/备注、红冲原因/备注、原票/红票关联标识、作废/红冲申请来源、补偿查询/结果回写上下文旧开票批次号、旧配置版本号、旧平台扩展回执
biz_cust_invoice +客户开票信息cust_idinvoice_titletax_noemailmobile企业/个人抬头类型、默认推送方式等扩展属性按后续实现补齐旧抬头版本、历史修改快照
biz_invoice_taxrate +税率配置tax_codetax_nametax_ratestatus税率生效区间、适用票种范围等扩展控制字段旧税率版本快照
账单-发票关系快照当前主模型通过 biz_invoice 与 +biz_charge* 关联承接charge_ids_snapshot、账单集合来源、客户侧身份匹配结果、操作留痕标识旧营业账开票关系表、旧发票明细表
+

1.9.5 biz_operat_log / +biz_operat_log_detail (操作留痕表)

+ +++++ + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_operat_logbiz_type, +biz_id, operate_user, +operate_time业务操作主日志
biz_operat_log_detaillog_id, +field_name, before_value, +after_value字段级变更留痕
+
+

REV-004 留痕口径:biz_operat_log* +统一承接账务处理的一期留痕,至少覆盖处理类型、目标账单、原交易引用、处理前后差异、原因说明、附件依据与操作人。

+

边界说明:旧数据字典中的“跨周期水量、特账、红冲、已销调整、呆坏账、实时收费日志”等对象,在当前 +backend +范围内未全部识别到独立实体表,数据库专项中统一按业务处理场景描述,不误写为已明确落地的真实表。

+
+

1.9.6 +旧系统历史台账迁移与只读查询口径

+

1.9.6.1 在线主模型承接范围

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
旧对象/旧菜单当前主口径承接方式数据策略
开账记录、特殊开账biz_chargebiz_charge_detailbiz_operat_log*统一纳入营业账主表与明细表,特殊开账按来源类型、业务类型、依据说明留痕,不单设平行“特殊开账表”在线保留
柜台收费、实时收费、代收代扣biz_collectionbiz_withholdingbk_transaction*bk_withholding_*统一纳入收费主模型与渠道交易模型,柜台班结/实时收费日志按交易结果和操作留痕归并在线保留
发票申请、开票结果、票据税率biz_invoicebiz_invoice_taxratebiz_cust_invoice统一纳入发票主表、税率表和客户开票信息,不为旧“营业账开票表”机械复制新在线表在线保留
微网厅业务字段、页面配置、微信参数biz_business_typesbiz_business_datasbiz_page_settings*biz_parameter_settingssys_wechat_app_settings统一归并为业务类型、页面配置和渠道参数模型在线保留
办理附件、电子档案biz_contentbiz_content_attach当前新增与迁移后新增资料统一按资料主表与附件表承接在线保留
+

1.9.6.2 历史只读保留范围

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
历史对象当前正式口径保留策略查询要求
红冲记录、红冲原因、红冲前后账务快照账单状态 + 账务处理场景 + 操作留痕保留历史只读,不强制拆为新主库独立实体表至少支持原单号、红冲单号、金额、原因、经办人、时间查询
预存退款、已销调整、价差调整、分账调整、违约金减免、呆坏账明细REV-004 账务处理业务场景旧细粒度台账以历史只读方式保留;新发生业务由流程与日志承接至少支持汇总、明细、状态、审批结果和关联账单查询
柜台结账、打印记录、补打记录收费结果 + 打印/操作留痕旧查询菜单作为历史只读能力保留,不单独建设新结账台账表至少支持班次、营业所、柜员、打印类型、结账状态查询
发票明细、营业账开票关系、开票配置快照发票主模型 + 历史关系快照旧细表和配置快照按历史只读保留;新在线模型只保留开票必需主数据至少支持发票号、账单号、开票批次、配置版本和结果状态查询
催缴记录、停水记录、预存短信记录催缴/停复水/消息联动业务场景旧记录菜单按历史只读保留,与 +IF-REV-013 +的任务结果、通知链路和工单处置引用分层承接,不新增同名在线主表至少支持客户、账期、催缴方式、执行结果、发送对象、发送时间、关联账单、处置引用查询
水表检定、领用、出库、退库、报废单据METER-003 生命周期场景当前在线主表承接水表状态,旧单据与检定证书按历史只读保留至少支持表号、仓库、单据类型、检定结论、证书编号查询
+

1.9.6.3 迁移验收最低对账口径

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
对账主题最低核对维度主口径来源验收要求
开账记录客户数、账单数、账期、应收金额biz_chargebiz_charge_detail ++ 历史账单来源支持按账期、营业所、客户类型汇总比对
缴费记录收费笔数、实收金额、渠道、核销状态biz_collectionbk_transaction*支持按渠道、日期、营业所汇总比对
发票记录开票笔数、金额、状态、票据类型biz_invoice* + +历史开票关系支持按发票状态、开票日期比对
红冲与账务调整调整笔数、调整金额、处理结果账务处理结果 + 历史台账支持汇总与单据级差异定位
催缴与停复水通知笔数、执行结果、停复水状态IF-REV-013 任务结果 + +历史记录支持按账期、客户、执行状态、处置引用比对
电子档案附件数、附件类型、关联业务单数biz_content_attach + +历史档案目录支持按业务类型、上传时间、来源系统比对
+

1.9.6.4 设计约束

+ +

1.10 SYS-002 业务办理与资料表 +(biz_process* / biz_business_* / +biz_content*)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
biz_processcode, +biz_type_code, cust_id, +process_status业务办理流程主表
biz_process_transferprocess_id, +from_user, to_user, +transfer_time流转/转办记录
biz_process_cust_contactprocess_id, +contact_name, mobile办理过程联系人信息
biz_process_meter_installprocess_id, +meter_id, install_addr装表安装信息
biz_process_invoice_modifysprocess_id, +invoice_id, modify_type发票变更记录
biz_business_typescode, name, +status业务类型定义
biz_business_datasbiz_id, +data_key, data_value业务扩展数据
biz_contentbiz_id, +content_type, content_title办理资料主表
biz_content_attachcontent_id, +file_name, file_url办理附件表
+

1.11 SYS-002 银行代收与结算表 +(bk_*)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名关键字段说明
bk_payment_channelchannel_code, +channel_name, channel_type, +status支付渠道主表
bk_channel_api_configchannel_code, +api_type, endpoint, +crypto_type渠道接口配置
bk_channel_route_rulechannel_code, +route_type, priority, status渠道路由规则
bk_channel_statisticschannel_code, +stat_date, success_count, +success_amount渠道统计
bk_transactiontrade_no, +biz_order_no, channel_code, +trade_amount, trade_status渠道交易流水
bk_transaction_callbacktrade_no, +callback_time, callback_status, +raw_message回调留痕
bk_transaction_exceptiontrade_no, +exception_code, exception_desc, +handle_status异常处理
+
+

REV-004 原交易校验口径:退款、冲正场景统一依赖 +bk_transaction* +校验原交易存在性、状态、回调结果与异常处理状态,数据库专项不再为一期新增平行退款交易表。 +| bk_withholding_agreement | agreement_no, +cust_id, channel_code, +sign_status | 代扣签约 | | +bk_withholding_batch | batch_no, +channel_code, batch_date, +batch_status | 代扣批次 | | +bk_withholding_item | batch_id, +cust_id, charge_id, item_status | +代扣明细 | | bk_reconcile_batch | batch_no, +channel_code, bill_date, +reconcile_status | 对账批次 | | +bk_reconcile_diff | batch_id, +trade_no, diff_type, diff_amount +| 对账差异 | | bk_settlement_batch | batch_no, +channel_code, settlement_date, +settlement_status | 结算批次 |

+
+
+

当前实现边界说明:bk_* +表族已形成较完整的对象承接口径,且签约、解约、交易流水与后台资源管理具备明确实现证据;但送盘、回盘、对账、结算等业务编排仍缺少完整闭环与统一迁移证据,数据库专项不得据此倒推出“银行协同已全部落地”。

+
+
+

## METER/INST 专题表边界

+

本章节用于收敛 SYS-002 +主表之外、但在详细设计与附录中反复出现的表务与报装签章专题表口径,避免“主文档未覆盖、分文档各写一套”。

+

1.11.1 METER 专题(表务管理)

+

1.11.1.1 +实现态(当前主库口径)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名角色定位说明
biz_meter水表主档水表基础信息、状态、型号、口径、量程等主数据入口
biz_meter_read / +biz_reading_data / biz_last_reading抄表与读数支撑抄表任务、读数提交、最新读数维护
biz_meter_log表务留痕记录换表、移表、校表、维修等过程动作
biz_meter_in_out / +biz_meter_in_out_rel库存与出入库支撑领用、退库、报废及批次追踪
biz_process / +biz_process_transfer工单协同与业务办理流程共享工单流转和处理状态
+

1.11.1.2 +历史命名映射(存量资料口径)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
历史命名(存量)当前主口径(建议对齐)说明
water_meter_workorderbiz_meter_log + +biz_process*旧稿“工单”能力在主文档统一并入表务日志与流程流转模型
water_meter_stock / +water_meter_inventorybiz_meter_in_out + +biz_meter_in_out_rel旧稿库存/出入库能力按 +biz_meter_* 专题表收敛
water_meter_archivebiz_meter + +biz_last_reading旧稿档案口径统一并入水表主档与读数状态模型
+
+

说明:water_meter_* +仅用于历史资料追溯,不作为当前正式交付主口径。

+
+

1.11.2 INST 专题(报装与签章)

+

1.11.2.1 +实现态(当前主库口径)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名角色定位说明
biz_process / +biz_process_transfer报装流程主线报装申请受理、节点流转、办理状态
biz_process_meter_install装表落地信息记录安装位置、装表结果等现场信息
biz_business_datas业务扩展数据踏勘、方案、审批扩展字段
biz_content / +biz_content_attach资料与附件报装材料、验收资料、影像与附件管理
+

1.11.2.2 +设计态(专项扩展口径)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名角色定位说明
installation_contract报装合同主表合同主数据、合同状态、文件地址
installation_signature签章记录表签署方、签章任务、签署状态与时间
installation_evidence电子存证表存证凭证、哈希、存证状态
installation_ca_configCA 配置表泛微 CA 对接配置参数
installation_signature_template签章模板表签章模板与签署位置配置
installation_application报装申请映射与报装申请主线对象的关联映射(设计态)
+
+

边界说明:installation_* +来源于报装签章专项设计与附录,当前在数据库主文档按“专题扩展”纳管。若实施库落地结构与本表不一致,以实施库与主详设联合评审结果为准。

+
+

1.12 子系统5: 客户服务数据表(复用 +SYS-002 主数据)

+

客户服务模块本身不再单独维护旧稿中分散的平行表模型,而是以 +SYS-002 +主数据和交易表为主,按场景复用客户、账单、支付、发票与业务办理数据。

+
+ +点击展开/折叠客户服务系统表详情 + +

1.12.1 客户服务主要复用表

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
场景复用表说明
账户绑定管理biz_cust, +biz_cust_app_binds, biz_account支撑账户绑定、默认客户切换与账号关联
信息查询服务biz_cust, +biz_cust_meter, biz_meter, +biz_charge, biz_charge_detail支撑客户档案、表计信息、账单与费用查询
在线缴费服务biz_charge, +biz_collection, biz_withholding, +bk_transaction, bk_transaction_callback支撑缴费下单、支付回写与异步回调
电子发票服务biz_invoice, +biz_invoice_taxrate, biz_cust_invoice支撑发票申请、税率匹配与抬头信息
业务办理服务biz_process, +biz_process_transfer, biz_business_datas, +biz_content_attach支撑业务申请、进度查询与附件资料
+
+

说明:客户服务模块与 +SYS-008SYS-009SYS-010 +的协同在数据库层主要表现为复用 SYS-002 +主业务表并接收外部服务回写结果,不再单列一套平行客户服务数据库模型。

+
+
+

1.13 子系统6: +手机抄表APP数据表

+

手机抄表APP为抄表员和外勤人员提供移动作业工具,支持离线操作,提升现场工作效率。

+
+ +点击展开/折叠手机抄表APP表详情 + +

1.13.1 移动端表 (mobile_*)

+

1.13.2 mobile_user_session +(移动端用户会话表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
user_idint8N用户ID
device_idvarchar(100)N设备ID
device_typevarchar(20)N设备类型:Android、iOS
app_versionvarchar(20)Y应用版本
login_typevarchar(20)N登录类型:在线、离线
session_tokenvarchar(500)N会话令牌
login_timetimestamp(6)Npg_systimestamp()登录时间
last_active_timetimestamp(6)Y最后活跃时间
logout_timetimestamp(6)Y登出时间
session_durationint4Y0会话时长(分钟)
login_ipvarchar(50)Y登录IP
login_locationvarchar(100)Y登录位置
network_typevarchar(20)Y网络类型:WiFi、4G、5G
session_statusint2N1会话状态:0-已结束,1-活跃
sync_statusint2N0同步状态:0-未同步,1-已同步
last_sync_timetimestamp(6)Y最后同步时间
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.3 mobile_user_cache +(移动端用户缓存表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
user_idint8N用户ID
device_idvarchar(100)N设备ID
cache_keyvarchar(200)N缓存键
cache_valuetextY缓存值
cache_typevarchar(20)N缓存类型:用户信息、权限、配置、数据
cache_sizeint4Y0缓存大小(字节)
expire_timetimestamp(6)Y过期时间
access_countint4Y0访问次数
last_access_timetimestamp(6)Y最后访问时间
cache_statusint2N1缓存状态:0-已过期,1-有效
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.4 mobile_login_log +(移动端登录日志表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
user_idint8N用户ID
usernamevarchar(50)N用户名
device_idvarchar(100)N设备ID
device_typevarchar(20)N设备类型:Android、iOS
device_modelvarchar(100)Y设备型号
app_versionvarchar(20)Y应用版本
login_typevarchar(20)N登录类型:在线、离线
login_timetimestamp(6)Npg_systimestamp()登录时间
login_resultint2N登录结果:0-成功,1-失败
login_ipvarchar(50)Y登录IP
login_locationvarchar(100)Y登录位置
network_typevarchar(20)Y网络类型:WiFi、4G、5G
failure_reasonvarchar(200)Y失败原因
user_agentvarchar(500)Y用户代理
screen_resolutionvarchar(20)Y屏幕分辨率
operating_systemvarchar(50)Y操作系统
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.5 mobile_reading_task +(移动端抄表任务表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
task_novarchar(32)N任务编号
book_idint8N册本ID
reader_idint8N抄表员ID
task_datedateN任务日期
total_metersint4Y0总表数
completed_metersint4Y0已完成表数
task_statusint2N0任务状态:0-待开始,1-进行中,2-已完成
download_timetimestamp(6)Y下载时间
upload_timetimestamp(6)Y上传时间
sync_statusint2N0同步状态:0-未同步,1-已同步
completion_ratenumeric(5,2)Y0完成率
start_timetimestamp(6)Y开始时间
end_timetimestamp(6)Y结束时间
work_durationint4Y0工作时长(分钟)
exception_countint4Y0异常数量
photo_countint4Y0照片数量
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.6 mobile_reading_record +(移动端抄表记录表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
task_idint8N任务ID
customer_idint8N客户ID
meter_idint8N水表ID
reading_valuenumeric(15,3)Y0抄表读数
reading_timetimestamp(6)Npg_systimestamp()抄表时间
reading_typevarchar(20)N抄表类型:正常、异常、估读
exception_codevarchar(10)Y异常代码
exception_descriptionvarchar(500)Y异常描述
photo_pathvarchar(500)Y照片路径
gps_longitudenumeric(10,6)YGPS经度
gps_latitudenumeric(10,6)YGPS纬度
location_accuracynumeric(8,2)Y位置精度
reading_methodvarchar(20)Y抄表方式:手工、扫码、拍照识别
sync_statusint2N0同步状态:0-未同步,1-已同步
sync_timetimestamp(6)Y同步时间
network_typevarchar(20)Y网络类型:WiFi、4G、5G、离线
device_idvarchar(100)Y设备ID
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.7 mobile_task_progress +(移动端任务进度表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
task_idint8N任务ID
user_idint8N用户ID
progress_timetimestamp(6)Npg_systimestamp()进度时间
completed_countint4Y0已完成数量
total_countint4Y0总数量
completion_ratenumeric(5,2)Y0完成率
current_locationvarchar(200)Y当前位置
working_statusvarchar(20)Y工作状态:工作中、休息中、结束
progress_descriptionvarchar(500)Y进度描述
device_idvarchar(100)Y设备ID
battery_levelint4Y0电池电量
network_statusvarchar(20)Y网络状态:在线、离线
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.8 mobile_data_cache +(移动端数据缓存表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
user_idint8N用户ID
device_idvarchar(100)N设备ID
data_typevarchar(20)N数据类型:抄表、收费、工单
data_keyvarchar(200)N数据键
data_valuetextY数据值
data_sizeint4Y0数据大小(字节)
cache_timetimestamp(6)Npg_systimestamp()缓存时间
sync_statusint2N0同步状态:0-未同步,1-已同步,2-同步失败
sync_timetimestamp(6)Y同步时间
sync_errorvarchar(500)Y同步错误
retry_countint4Y0重试次数
priorityint4Y0优先级
expire_timetimestamp(6)Y过期时间
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.9 mobile_problem_report +(移动端问题上报表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
report_novarchar(32)N上报编号
reporter_idint8N上报人ID
problem_typevarchar(20)N问题类型:水表故障、管道漏水、水质问题
problem_descriptiontextN问题描述
problem_locationvarchar(200)Y问题位置
gps_longitudenumeric(10,6)YGPS经度
gps_latitudenumeric(10,6)YGPS纬度
urgency_levelvarchar(20)N紧急程度:普通、紧急、特急
report_timetimestamp(6)Npg_systimestamp()上报时间
problem_photostextY问题照片
problem_statusint2N0问题状态:0-待处理,1-处理中,2-已处理
handlervarchar(100)Y处理人
handle_timetimestamp(6)Y处理时间
handle_resultvarchar(500)Y处理结果
customer_idint8Y客户ID
meter_idint8Y水表ID
device_idvarchar(100)Y设备ID
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.10 mobile_work_order +(移动端工单表)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idint8Nnextval()主键
work_order_novarchar(32)N工单编号
problem_report_idint8Y问题上报ID
work_order_typevarchar(20)N工单类型:维修、更换、检查
assigned_uservarchar(100)Y指派人员
assignment_timetimestamp(6)Y指派时间
work_descriptiontextY工作描述
work_locationvarchar(200)Y工作位置
scheduled_timetimestamp(6)Y预约时间
start_timetimestamp(6)Y开始时间
end_timetimestamp(6)Y结束时间
work_durationint4Y0工作时长(分钟)
work_statusint2N0工单状态:0-待处理,1-处理中,2-已完成
work_resultvarchar(500)Y工作结果
completion_photostextY完成照片
customer_signaturevarchar(500)Y客户签名
satisfaction_ratingint2Y满意度评分:1-5分
device_idvarchar(100)Y设备ID
sync_statusint2N0同步状态:0-未同步,1-已同步
sync_timetimestamp(6)Y同步时间
remarkvarchar(500)Y备注
create_timetimestamp(6)Npg_systimestamp()创建时间
update_timetimestamp(6)Npg_systimestamp()更新时间
creatorvarchar(100)Y创建人id
updatervarchar(100)Y更新人id
deletedint2N0是否删除
tenant_idint8N0租户id
+

1.13.11 移动端特有表(优化后)

+

根据移动端表设计优化原则,以下为移动端特有的5个表:

+

1.13.12 mobile_user_cache +(移动端用户缓存表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idbigintNAUTO_INCREMENT主键
user_idbigintN用户ID,关联system_users.id
device_idvarchar(100)N设备唯一标识
cache_datalongtextY缓存数据(JSON格式)
cache_typevarchar(50)N缓存类型:user_info、task_data、config_data
expire_timedatetimeY过期时间
versionintN1版本号,用于数据同步
create_timedatetimeNCURRENT_TIMESTAMP创建时间
update_timedatetimeNCURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP更新时间
creatorvarchar(64)Y创建者
updatervarchar(64)Y更新者
deletedtinyintN0是否删除:0-未删除,1-已删除
tenant_idbigintN0租户ID
+

1.13.13 mobile_search_history +(移动端搜索历史表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idbigintNAUTO_INCREMENT主键
user_idbigintN用户ID,关联system_users.id
search_keywordvarchar(200)N搜索关键词
search_typevarchar(50)N搜索类型:customer、meter、address
search_result_countintN0搜索结果数量
search_timedatetimeNCURRENT_TIMESTAMP搜索时间
device_idvarchar(100)Y设备ID
create_timedatetimeNCURRENT_TIMESTAMP创建时间
update_timedatetimeNCURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP更新时间
creatorvarchar(64)Y创建者
updatervarchar(64)Y更新者
deletedtinyintN0是否删除:0-未删除,1-已删除
tenant_idbigintN0租户ID
+

1.13.14 mobile_task_sync +(移动端任务同步表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idbigintNAUTO_INCREMENT主键
user_idbigintN用户ID,关联system_users.id
task_idbigintN任务ID,关联biz_meter_book.id
sync_statusvarchar(20)Npending同步状态:pending、syncing、completed、failed
sync_typevarchar(20)N同步类型:download、upload
data_sizeintN0数据大小(字节)
sync_progressdecimal(5,2)N0.00同步进度(百分比)
error_messagetextY错误信息
last_sync_timedatetimeY最后同步时间
retry_countintN0重试次数
device_idvarchar(100)Y设备ID
create_timedatetimeNCURRENT_TIMESTAMP创建时间
update_timedatetimeNCURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP更新时间
creatorvarchar(64)Y创建者
updatervarchar(64)Y更新者
deletedtinyintN0是否删除:0-未删除,1-已删除
tenant_idbigintN0租户ID
+

1.13.15 mobile_work_attachment +(移动端工单附件表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idbigintNAUTO_INCREMENT主键
work_order_idbigintN工单ID,关联biz_process.id 或 +biz_content.id
attachment_typevarchar(20)N附件类型:image、video、document
attachment_namevarchar(200)N附件名称
attachment_pathvarchar(500)N附件存储路径
attachment_sizebigintN0附件大小(字节)
mime_typevarchar(100)YMIME类型
upload_statusvarchar(20)Npending上传状态:pending、uploading、completed、failed
upload_progressdecimal(5,2)N0.00上传进度(百分比)
gps_longitudedecimal(10,6)YGPS经度
gps_latitudedecimal(10,6)YGPS纬度
capture_timedatetimeY拍摄/录制时间
device_idvarchar(100)Y设备ID
create_timedatetimeNCURRENT_TIMESTAMP创建时间
update_timedatetimeNCURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP更新时间
creatorvarchar(64)Y创建者
updatervarchar(64)Y更新者
deletedtinyintN0是否删除:0-未删除,1-已删除
tenant_idbigintN0租户ID
+

1.13.16 mobile_app_config +(移动端应用配置表)

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名类型是否可空默认值注释
idbigintNAUTO_INCREMENT主键
user_idbigintN用户ID,关联system_users.id
config_keyvarchar(100)N配置项键名
config_valuetextY配置项值
config_typevarchar(50)N配置类型:system、user、app
config_descriptionvarchar(500)Y配置描述
is_activetinyintN1是否启用:0-禁用,1-启用
device_idvarchar(100)Y设备ID
create_timedatetimeNCURRENT_TIMESTAMP创建时间
update_timedatetimeNCURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP更新时间
creatorvarchar(64)Y创建者
updatervarchar(64)Y更新者
deletedtinyintN0是否删除:0-未删除,1-已删除
tenant_idbigintN0租户ID
+
+

# 移动端表设计优化说明

+

1.14 设计原则

+

根据系统架构设计原则,移动端优先使用Web端已有的数据表,避免重复建表,确保数据一致性和降低维护成本。

+

1.15 表复用策略

+

1.15.1 复用Web端表(10个)

+

移动端直接复用以下Web端已有表:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名用途说明备注
system_users用户基本信息表复用Web端用户管理
system_login_log登录日志表扩展设备类型字段记录移动端登录
biz_cust客户主档表复用 Web 端客户档案
biz_meter水表主档表复用 Web 端水表档案
biz_meter_book抄表册本表复用 Web 端抄表任务
biz_reading_data抄表数据表复用 Web 端抄表数据
biz_meter_read抄表任务/状态表复用 Web 端抄表过程状态
biz_process业务办理流程表复用 Web 端现场业务工单/办理数据
biz_content_attach办理附件表复用 Web 端附件资料
biz_account客户账户表复用 Web 端账务信息
+

1.15.2 移动端特有表(5个)

+

仅保留移动端特有的功能表:

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名用途说明特有原因
mobile_user_cache移动端用户缓存表用于离线缓存,移动端特有需求
mobile_search_history移动端搜索历史表移动端搜索记录管理
mobile_task_sync移动端任务同步表离线任务管理,移动端特有
mobile_work_attachment移动端工单附件表现场附件管理,移动端特有
mobile_app_config移动端应用配置表个性化设置,移动端特有
+

1.16 优化效果

+
    +
  1. 减少冗余:避免了15+个重复表的创建
  2. +
  3. 提升一致性:移动端和Web端共享核心业务数据
  4. +
  5. 降低维护成本:统一的数据模型减少维护复杂度
  6. +
  7. 符合架构原则:遵循DRY(Don’t Repeat +Yourself)原则
  8. +
+

1.17 数据同步策略

+ +

# 视图的设计

+

1.18 数据库ER图设计

+

1.18.1 系统核心表关系图

+
erDiagram
+    system_tenant ||--o{ system_users : "租户关系"
+    system_users ||--o{ system_user_role : "用户角色"
+    system_role ||--o{ system_user_role : "角色用户"
+    system_role ||--o{ system_role_menu : "角色权限"
+    system_menu ||--o{ system_role_menu : "菜单权限"
+    system_dept ||--o{ system_users : "部门用户"
+    
+    system_tenant {
+        int8 id PK
+        varchar name
+        varchar contact_name
+        varchar contact_mobile
+        int2 status
+        timestamp expire_time
+    }
+    
+    system_users {
+        int8 id PK
+        varchar username
+        varchar nickname
+        varchar password
+        int8 dept_id FK
+        int8 tenant_id FK
+        int2 status
+    }
+    
+    system_role {
+        int8 id PK
+        varchar name
+        varchar code
+        int2 data_scope
+        int8 tenant_id FK
+    }
+    
+    system_dept {
+        int8 id PK
+        varchar name
+        int8 parent_id
+        varchar code
+        int8 tenant_id FK
+    }
+
+

1.18.2 业务核心表关系图

+
erDiagram
+    BIZ_CUST ||--|| BIZ_ACCOUNT : 对应账户
+    BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 联系人
+    BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定水表
+    BIZ_METER ||--o{ BIZ_CUST_METER : 被绑定
+    BIZ_METER_BOOK ||--o{ BIZ_METER_READ : 生成任务
+    BIZ_METER_READ ||--o{ BIZ_READING_DATA : 采集读数
+    BIZ_METER ||--o{ BIZ_LAST_READING : 最新读数
+    BIZ_READING_DATA ||--o{ BIZ_CHARGE : 触发开账
+    BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 明细拆分
+    BIZ_CHARGE ||--o{ BIZ_INVOICE : 开票关联
+    BIZ_CHARGE ||--o{ BK_TRANSACTION : 支付核销
+    BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_TEMPLATE : 模板归属
+    BIZ_PRICE_TEMPLATE ||--o{ BIZ_WATER_USE_SCHEME : 计费方案
+    BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_COST_ADJUSTMENT : 费用调整
+    BIZ_PRICE_COST_ADJUSTMENT ||--o{ BIZ_PRICE_TIER_ADJUSTMENT : 阶梯规则
+    BK_WITHHOLDING_BATCH ||--o{ BK_WITHHOLDING_ITEM : 批次明细
+    BK_RECONCILE_BATCH ||--o{ BK_RECONCILE_DIFF : 对账差异
+
+    BIZ_CUST {
+        int8 id PK
+        varchar code
+        varchar name
+        varchar cust_type
+        varchar mobile
+        int8 tenant_id FK
+    }
+
+    BIZ_ACCOUNT {
+        int8 id PK
+        varchar code
+        int8 cust_id FK
+        numeric balance
+        numeric arrears_amount
+    }
+
+    BIZ_METER {
+        int8 id PK
+        varchar code
+        varchar meter_no
+        varchar maker_code
+        varchar model_code
+    }
+
+    BIZ_CHARGE {
+        int8 id PK
+        varchar code
+        int8 cust_id FK
+        varchar bill_period
+        numeric total_amount
+        int2 charge_status
+    }
+
+    BK_TRANSACTION {
+        int8 id PK
+        varchar trade_no
+        varchar biz_order_no
+        varchar channel_code
+        numeric trade_amount
+        int2 trade_status
+    }
+
+

1.19 业务视图设计

+

为简化复杂查询和报表统计,设计以下视图:

+

1.19.1 v_price_info +(价格信息视图)

+

综合展示价格体系信息,包含价格归属、费用组成、调整历史等。

+
CREATE VIEW v_price_info AS
+SELECT 
+    pc.id as category_id,
+    pc.name as category_name,
+    pc.code as category_code,
+    cc.name as cost_name,
+    cc.code as cost_code,
+    pca.price_value,
+    pca.effective_date,
+    pca.expire_date
+FROM biz_price_category pc
+LEFT JOIN biz_price_cost_adjustment pca ON pc.code = pca.price_category_code
+LEFT JOIN biz_cost_component cc ON pca.cost_component_code = cc.code
+WHERE pc.deleted = 0 AND pca.deleted = 0 AND cc.deleted = 0;
+

1.19.2 v_meter_info +(水表信息视图)

+

整合水表主档、厂家、型号、口径等基础信息,服务于册本分配、现场抄表和档案查询。

+
CREATE VIEW v_meter_info AS
+SELECT
+    m.id AS meter_id,
+    m.code AS meter_code,
+    m.meter_no,
+    m.maker_code,
+    maker.name AS maker_name,
+    m.model_code,
+    model.name AS model_name,
+    m.caliber_code,
+    caliber.name AS caliber_name,
+    caliber.value AS caliber_value,
+    m.range_code,
+    range_cfg.name AS range_name,
+    m.install_address,
+    m.meter_status
+FROM biz_meter m
+LEFT JOIN biz_meter_maker maker ON m.maker_code = maker.code AND maker.deleted = 0
+LEFT JOIN biz_meter_model model ON m.model_code = model.code AND model.deleted = 0
+LEFT JOIN biz_meter_caliber caliber ON m.caliber_code = caliber.code AND caliber.deleted = 0
+LEFT JOIN biz_meter_range range_cfg ON m.range_code = range_cfg.code AND range_cfg.deleted = 0
+WHERE m.deleted = 0;
+

1.19.3 v_dept_hierarchy +(部门层级视图)

+

展示完整的组织架构层级关系。

+
CREATE VIEW v_dept_hierarchy AS
+WITH RECURSIVE dept_tree AS (
+    SELECT id, name, code, parent_id, 0 as level, name as path
+    FROM system_dept 
+    WHERE parent_id = 0 AND deleted = 0
+    
+    UNION ALL
+    
+    SELECT d.id, d.name, d.code, d.parent_id, dt.level + 1, 
+           CONCAT(dt.path, ' > ', d.name)
+    FROM system_dept d
+    INNER JOIN dept_tree dt ON d.parent_id = dt.id
+    WHERE d.deleted = 0
+)
+SELECT * FROM dept_tree;
+

1.20 统计分析视图

+

1.20.1 v_tenant_summary +(租户汇总视图)

+

按租户维度统计各类数据。

+
CREATE VIEW v_tenant_summary AS
+SELECT 
+    t.id as tenant_id,
+    t.name as tenant_name,
+    COUNT(DISTINCT u.id) as user_count,
+    COUNT(DISTINCT d.id) as dept_count,
+    COUNT(DISTINCT c.id) as community_count
+FROM system_tenant t
+LEFT JOIN system_users u ON t.id = u.tenant_id AND u.deleted = 0
+LEFT JOIN system_dept d ON t.id = d.tenant_id AND d.deleted = 0
+LEFT JOIN biz_community c ON t.id = c.tenant_id AND c.deleted = 0
+WHERE t.deleted = 0
+GROUP BY t.id, t.name;
+

1.20.2 REV-007 统计承接口径

+

1.20.2.1 设计定位

+ +

1.20.2.2 最小统计主题承接口径

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
统计主题主数据来源最低维度要求最低指标要求承接方式
营收汇总biz_chargebiz_charge_detail时间、账期、营业所、客户类别应收金额、账单数、用水量在线聚合 / 汇总口径
收费与实收统计biz_collectionbk_transaction时间、渠道、营业所、收费状态实收金额、收费笔数、成功率在线聚合 / 汇总口径
欠费规模与账龄统计biz_chargebiz_charge_detail账期、账龄、客户类别、区域欠费余额、欠费户数、账龄分布在线聚合 / 汇总口径
客户结构统计biz_custbiz_account客户类别、区域、状态客户数、账户数、活跃状态分布在线聚合 / 视图口径
渠道交易统计bk_transactionbk_payment_channel渠道、日期、结果状态交易笔数、交易金额、渠道占比在线聚合 / 汇总口径
抄表完成率统计biz_meter_bookbiz_reading_databiz_last_reading抄表周期、册本、片区、人员应抄户数、已抄户数、完成率在线聚合 / 汇总口径
+

1.20.2.3 设计约束

+ +

# 索引设计与性能优化

+

1.21 核心索引设计

+

1.21.1 系统表索引

+
-- 用户表核心索引
+CREATE INDEX idx_system_users_username ON system_users(username);
+CREATE INDEX idx_system_users_dept_tenant ON system_users(dept_id, tenant_id);
+CREATE INDEX idx_system_users_status_tenant ON system_users(status, tenant_id);
+
+-- 部门表索引
+CREATE INDEX idx_system_dept_parent_tenant ON system_dept(parent_id, tenant_id);
+CREATE INDEX idx_system_dept_code ON system_dept(code);
+
+-- 角色权限索引
+CREATE INDEX idx_system_user_role_user_tenant ON system_user_role(user_id, tenant_id);
+CREATE INDEX idx_system_role_menu_role_id ON system_role_menu(role_id);
+
+-- 日志表索引(支持时间范围查询)
+CREATE INDEX idx_system_login_log_user_time ON system_login_log(user_id, create_time);
+CREATE INDEX idx_system_login_log_ip_time ON system_login_log(user_ip, create_time);
+

1.21.2 业务表索引

+
-- 客户主数据索引
+CREATE INDEX idx_biz_cust_code ON biz_cust(code);
+CREATE INDEX idx_biz_cust_mobile ON biz_cust(mobile);
+CREATE INDEX idx_biz_account_cust_status ON biz_account(cust_id, account_status);
+
+-- 水表与抄表索引
+CREATE INDEX idx_biz_meter_code ON biz_meter(code);
+CREATE INDEX idx_biz_meter_book_dept_status ON biz_meter_book(dept_code, status);
+CREATE INDEX idx_biz_meter_read_book_period ON biz_meter_read(book_id, read_period);
+CREATE INDEX idx_biz_reading_data_read_time ON biz_reading_data(meter_read_id, read_time);
+
+-- 开账收费索引
+CREATE INDEX idx_biz_charge_cust_period ON biz_charge(cust_id, bill_period);
+CREATE INDEX idx_biz_charge_status_due ON biz_charge(charge_status, due_date);
+CREATE INDEX idx_biz_charge_detail_charge_cost ON biz_charge_detail(charge_id, cost_component_code);
+
+-- 价格体系索引
+CREATE INDEX idx_biz_price_category_code ON biz_price_category(code);
+CREATE INDEX idx_biz_price_template_category ON biz_price_template(price_category_code, adjustment_snap_code);
+CREATE INDEX idx_biz_price_cost_adj_category_cost ON biz_price_cost_adjustment(price_category_code, cost_component_code);
+CREATE INDEX idx_biz_price_tier_adj_cost_tier ON biz_price_tier_adjustment(cost_component_code, tier_level);
+
+-- 银行代收与对账索引
+CREATE INDEX idx_bk_transaction_trade_no ON bk_transaction(trade_no);
+CREATE INDEX idx_bk_transaction_biz_order ON bk_transaction(biz_order_no, trade_status);
+CREATE INDEX idx_bk_withholding_batch_date ON bk_withholding_batch(batch_date, batch_status);
+CREATE INDEX idx_bk_reconcile_batch_bill_date ON bk_reconcile_batch(bill_date, reconcile_status);
+

1.22 分区表设计

+

1.22.1 日志表分区策略

+
-- 登录日志按月分区
+CREATE TABLE system_login_log_partition (
+    LIKE system_login_log INCLUDING ALL
+) PARTITION BY RANGE (create_time);
+
+-- 创建月度分区
+CREATE TABLE system_login_log_y2024m01 PARTITION OF system_login_log_partition
+    FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');
+    
+CREATE TABLE system_login_log_y2024m02 PARTITION OF system_login_log_partition
+    FOR VALUES FROM ('2024-02-01') TO ('2024-03-01');
+

1.22.2 历史数据分区策略

+
-- 价格调整历史按年分区
+CREATE TABLE biz_price_adjustment_history_partition (
+    LIKE biz_price_adjustment_history INCLUDING ALL
+) PARTITION BY RANGE (create_time);
+
+-- 按年度分区
+CREATE TABLE biz_price_adjustment_history_y2024 PARTITION OF biz_price_adjustment_history_partition
+    FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');
+

1.23 查询优化建议

+

1.23.1 多租户查询优化

+
-- 建议查询模式:始终带上租户ID
+SELECT * FROM system_users 
+WHERE tenant_id = ? AND status = 0 AND dept_id = ?;
+
+-- 使用覆盖索引减少回表
+CREATE INDEX idx_system_users_cover ON system_users(tenant_id, status, dept_id)
+INCLUDE (username, nickname, email);
+

1.23.2 层级查询优化

+
-- 使用递归CTE查询部门层级
+WITH RECURSIVE dept_tree AS (
+    SELECT id, name, parent_id, 1 as level
+    FROM system_dept 
+    WHERE id = ? AND tenant_id = ?
+    
+    UNION ALL
+    
+    SELECT d.id, d.name, d.parent_id, dt.level + 1
+    FROM system_dept d
+    INNER JOIN dept_tree dt ON d.parent_id = dt.id
+    WHERE d.tenant_id = ? AND dt.level < 10  -- 防止无限递归
+)
+SELECT * FROM dept_tree;
+

1.24 数据归档策略

+

1.24.1 日志数据归档

+ +

1.24.2 历史数据处理

+
-- 创建归档表
+CREATE TABLE system_login_log_archive (
+    LIKE system_login_log INCLUDING ALL
+);
+
+-- 归档脚本示例
+INSERT INTO system_login_log_archive 
+SELECT * FROM system_login_log 
+WHERE create_time < CURRENT_DATE - INTERVAL '3 months';
+
+DELETE FROM system_login_log 
+WHERE create_time < CURRENT_DATE - INTERVAL '3 months';
+

# 安全保密设计 - +用户认证: +所有数据库连接均需通过应用层的身份认证,禁止数据库密码在配置文件中明文存储。 +- 权限控制: +数据库用户权限遵循最小权限原则。应用层根据用户角色(RBAC)动态构建SQL,并通过行级安全(RLS)策略限制数据访问范围。 +- 数据加密: +对数据库中的密码、密钥等敏感信息,采用BCrypt或SM3等算法进行加密存储。 - +审计日志: +启用数据库审计功能,记录所有DDL和DML操作,特别是对敏感数据的访问和修改。

+ + diff --git a/output/01_Database_Design.pdf b/output/01_Database_Design.pdf new file mode 100644 index 0000000..a613748 Binary files /dev/null and b/output/01_Database_Design.pdf differ diff --git a/output/01_Database_Design_processed.md b/output/01_Database_Design_processed.md new file mode 100644 index 0000000..25f5f01 --- /dev/null +++ b/output/01_Database_Design_processed.md @@ -0,0 +1,2099 @@ +--- +title: "01_Database_Design" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: TC-01-DB +doc_role: master_document +authority: primary +scope: 数据库设计 +source_of_truth: true +last_reviewed: 2026-03-12 +retrieval_priority: P0 +--- + +# 福建水务营收系统数据库设计说明书 + +## 章节导航(精简) + +- [前言](#sec-preface) +- [外部设计](#sec-external-design) +- [数据库设计说明](#sec-database-design-note) +- [表结构设计](#sec-table-design) +- [METER/INST 专题表边界](#sec-meter-inst-topic) +- [移动端表设计优化说明](#sec-mobile-table-optimization) +- [视图的设计](#sec-view-design) +- [索引设计与性能优化](#sec-index-performance) +- [安全保密设计](#sec-security-design) + +| 文件状态: | 文档密级: | 公开 | +| :--- | :--- | :--- | +| 【 】草稿 | | | +| 【 】修改稿 | | | +| 【√】正式发布 | | | +| | **当前版本:** | **V1.6** | +| | **作者:** | **唐伟杰** | +| | **完成日期:** | **2025-08-01** | + +## 版本历史 + +| **日期** | **版本号** | **作者** | **备注** | +| :--- | :--- | :--- | :--- | +| 2025-07-17 | V1.0 | 唐伟杰 | 初稿 | +| 2025-07-17 | V1.1 | 唐伟杰 | 根据用户要求,严格对齐SQL文件,确保所有表和字段的完整性。 | +| 2025-08-01 | V1.2 | 唐伟杰 | 1. 根据详细设计说明书调整目录结构,按6个子系统重新组织表结构。
2. 补充移动端表设计优化说明,明确移动端与Web端表复用策略。
3. 新增5个移动端特有表的详细设计,符合表设计优化原则。 | +| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统变更:将OpenGauss替换为达梦数据库 8.0+,作为主力国产数据库方案。 | +| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用OAuth2.0协议:新增OAuth2.0相关数据表设计,包括客户端信息表、访问令牌表、刷新令牌表、授权码表。 | +| 2026-03-12 | V1.6 | 唐伟杰 | 补充旧系统历史台账迁移与只读查询口径,明确在线主模型承接范围、历史最小保留集与迁移验收对账基线。 | + + +# 前言 +本文档详细描述了福建水务营收系统的数据库设计,包括总体架构、E-R图、数据表结构、字段定义和索引策略。旨在为开发和运维人员提供清晰的数据结构参考。 + + +# 外部设计 + +- **数据库系统**: 主力采用国产数据库 **达梦数据库 8.0+**。系统设计上兼容 **MySQL 8.x** 或 **MariaDB 10.x**。 +- **数据库工具**: 使用 Navicat, DBeaver, DataGrip 等主流数据库管理工具。 +- **约定**: + - **表名**: 全部小写,单词间使用下划线 `_` 分隔。业务表以 `biz_` 开头,系统管理表以 `system_` 开头。 + - **字段名**: 全部小写,单词间使用下划线 `_` 分隔(如 `user_id`),与当前数据库主文档及主表命名口径保持一致。 + - **主键**: 统一命名为 `id`,类型为 `bigint`,自增。 + - **通用字段**: 所有表必须包含 `id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id` 字段。 + - **字符集**: 统一使用 `utf8mb4` 字符集。 + + +# 数据库设计说明 +数据库设计遵循第三范式(3NF),并采用基于`tenant_id`字段隔离的SaaS多租户架构。 + + +# 表结构设计 + +## 数据表总体概览 + +> 说明:本次重点对齐 `SYS-002` 相关数据库口径。`SYS-002` 的核心表命名已统一收敛为 `biz_*` 与 `bk_*`,并已清理旧稿中分散的历史表模型。对于旧数据字典中仍未在 backend 识别到独立实体表的对象,本文以“业务对象/处理场景”描述,不强行拆分为真实表。 + +| 模块 | 表前缀 | 主要功能 | 当前口径 | +| :--- | :--- | :--- | :--- | +| 系统公共 | `system_` | 用户、角色、权限、部门、租户、字典、日志、OAuth2 等统一平台能力 | 保持现稿 | +| SYS-002 基础配置与价格体系 | `biz_community`, `biz_company_*`, `biz_meter_*`, `biz_price_*`, `biz_template_*` | 小区、水司账户、水表参数、价格体系、调价快照、优惠方案、模板关系等 | 已按真实表对齐 | +| SYS-002 客户主数据与账户关系 | `biz_cust*`, `biz_account` | 客户主档、联系人、客户组、水表绑定、开票信息、托收/代扣关系、编号规则等 | 已按真实表对齐 | +| SYS-002 抄表开账与账单 | `biz_meter`, `biz_meter_book`, `biz_meter_read`, `biz_reading_*`, `biz_charge*` | 抄表册本、抄表状态、读数留痕、开账主单与明细 | 已按真实表对齐 | +| SYS-002 收费票据与操作留痕 | `biz_collection`, `biz_withholding`, `biz_invoice*`, `biz_operat_log*` | 收费、托收/代扣、发票、操作留痕与审计支撑 | 已按真实表对齐 | +| SYS-002 业务办理与资料 | `biz_process*`, `biz_business_*`, `biz_content*` | 业务办理流程、流转、装表资料、附件与扩展数据 | 已按真实表对齐 | +| SYS-002 银行代收与结算 | `bk_*` | 渠道路由、交易回调、代扣签约、批次、对账、结算 | 已按真实表对齐 | +| SYS-003 手机抄表 APP | `mobile_*` | 移动作业缓存、登录日志、离线任务与现场上报 | 保持现稿 | +| METER/INST 专题表 | `biz_meter_*`、`installation_*`、历史 `water_meter_*` | 表务专题与报装签章专题扩展 | 已纳入专题边界(见 `METER/INST 专题表边界`) | + +## 系统公共表 (system_*) +(基于 `sw_system_publcli.sql`) + +
+点击展开/折叠系统表详情 + +### system_dept (部门表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 部门id | +| name | varchar(30) | Y | | 部门名称 | +| parent_id | int8 | N | 0 | 父部门id | +| sort | int4 | N | 0 | 显示顺序 | +| leader_user_id | int8 | Y | | 负责人 | +| phone | varchar(11) | Y | | 联系电话 | +| email | varchar(50) | Y | | 邮箱 | +| type | varchar(10) | Y | | 部门类型 | +| code | varchar(50) | Y | | 部门代码 | +| status | int2 | N | | 部门状态(0正常 1停用) | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | +| longitude | numeric(10,7) | Y | | 经度 | +| latitude | numeric(10,7) | Y | | 纬度 | +| remark | varchar(500) | Y | | 备注 | + +### system_dict_data (字典数据表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 字典编码 | +| sort | int4 | N | 0 | 字典排序 | +| label | varchar(100) | Y | | 字典标签 | +| value | varchar(100) | Y | | 字典键值 | +| dict_type | varchar(100) | Y | | 字典类型 | +| status | int2 | N | 0 | 状态(0正常 1停用) | +| color_type | varchar(100) | Y | | 颜色类型 | +| css_class | varchar(100) | Y | | css 样式 | +| remark | varchar(500) | Y | | 备注 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_dict_type (字典类型表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 字典主键 | +| name | varchar(100) | Y | | 字典名称 | +| type | varchar(100) | Y | | 字典类型 | +| status | int2 | N | 0 | 状态(0正常 1停用) | +| remark | varchar(500) | Y | | 备注 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| deleted_time | timestamp(6) | Y | | 删除时间 | + +### system_login_log (系统访问记录) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 访问ID | +| log_type | int8 | N | | 日志类型 | +| trace_id | varchar(64) | Y | | 链路追踪编号 | +| user_id | int8 | N | 0 | 用户编号 | +| user_type | int2 | N | 0 | 用户类型 | +| username | varchar(50) | Y | | 用户账号 | +| result | int2 | N | | 登陆结果 | +| user_ip | varchar(50) | N | | 用户 IP | +| user_agent | varchar(512) | N | | 浏览器 UA | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_mail_account (邮箱账号表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 主键 | +| mail | varchar(255) | N | | 邮箱 | +| username | varchar(255) | N | | 用户名 | +| password | varchar(255) | N | | 密码 | +| host | varchar(255) | N | | SMTP 服务器域名 | +| port | int4 | N | | SMTP 服务器端口 | +| ssl_enable | bool | N | false | 是否开启 SSL | +| starttls_enable | bool | N | false | 是否开启 STARTTLS | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_mail_log (邮件日志表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| user_id | int8 | Y | | 用户编号 | +| user_type | int2 | Y | | 用户类型 | +| to_mail | varchar(255) | N | | 接收邮箱地址 | +| account_id | int8 | N | | 邮箱账号编号 | +| from_mail | varchar(255) | N | | 发送邮箱地址 | +| template_id | int8 | N | | 模板编号 | +| template_code | varchar(63) | N | | 模板编码 | +| template_nickname | varchar(255) | Y | | 模版发送人名称 | +| template_title | varchar(255) | N | | 邮件标题 | +| template_content | varchar(10240) | N | | 邮件内容 | +| template_params | varchar(255) | N | | 邮件参数 | +| send_status | int2 | N | 0 | 发送状态 | +| send_time | timestamp(6) | Y | | 发送时间 | +| send_message_id | varchar(255) | Y | | 发送返回的消息 ID | +| send_exception | varchar(4096) | Y | | 发送异常 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_mail_template (邮件模版表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| name | varchar(63) | N | | 模板名称 | +| code | varchar(63) | N | | 模板编码 | +| account_id | int8 | N | | 发送的邮箱账号编号 | +| nickname | varchar(255) | Y | | 发送人名称 | +| title | varchar(255) | N | | 模板标题 | +| content | varchar(10240) | N | | 模板内容 | +| params | varchar(255) | N | | 参数数组 | +| status | int2 | N | | 开启状态 | +| remark | varchar(255) | Y | | 备注 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_users (用户表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 用户ID | +| username | varchar(30) | N | | 用户账号 | +| password | varchar(100) | N | | 密码 | +| nickname | varchar(30) | N | | 用户昵称 | +| remark | varchar(500) | Y | | 备注 | +| dept_id | int8 | Y | | 部门ID | +| post_ids | varchar(255) | Y | | 岗位编号数组 | +| email | varchar(50) | Y | | 用户邮箱 | +| mobile | varchar(11) | Y | | 手机号码 | +| sex | int2 | Y | | 用户性别 | +| avatar | varchar(512) | Y | | 头像地址 | +| status | int2 | N | | 帐号状态(0正常 1停用) | +| login_ip | varchar(50) | Y | | 最后登录IP | +| login_date | timestamp(6) | Y | | 最后登录时间 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_role (角色信息表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 角色ID | +| name | varchar(30) | N | | 角色名称 | +| code | varchar(100) | N | | 角色权限字符串 | +| sort | int4 | N | | 显示顺序 | +| data_scope | int2 | N | 1 | 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) | +| data_scope_dept_ids | varchar(500) | N | | 数据范围(指定部门数组) | +| status | int2 | N | | 角色状态(0正常 1停用) | +| type | int2 | N | | 角色类型 | +| remark | varchar(500) | Y | | 备注 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_menu (菜单权限表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 菜单ID | +| name | varchar(50) | N | | 菜单名称 | +| permission | varchar(100) | N | | 权限标识 | +| type | int2 | N | | 菜单类型 | +| sort | int4 | N | 0 | 显示顺序 | +| parent_id | int8 | N | 0 | 父菜单ID | +| path | varchar(200) | Y | | 路由地址 | +| icon | varchar(100) | Y | | 菜单图标 | +| component | varchar(255) | Y | | 组件路径 | +| component_name | varchar(255) | Y | | 组件名 | +| status | int2 | N | | 菜单状态 | +| visible | bool | N | true | 是否可见 | +| keep_alive | bool | N | true | 是否缓存 | +| always_show | bool | N | true | 是否总是显示 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_tenant (租户表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 租户编号 | +| name | varchar(30) | N | | 租户名 | +| contact_user_id | int8 | Y | | 联系人的用户编号 | +| contact_name | varchar(30) | N | | 联系人 | +| contact_mobile | varchar(500) | Y | | 联系手机 | +| status | int2 | N | | 租户状态(0正常 1停用) | +| website | varchar(256) | Y | | 绑定域名 | +| package_id | int8 | N | | 租户套餐编号 | +| expire_time | timestamp(6) | N | | 过期时间 | +| account_count | int4 | N | | 账号数量 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_user_session (用户会话表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 会话ID | +| user_id | int8 | N | | 用户ID | +| session_id | varchar(100) | N | | 会话标识 | +| token | varchar(500) | N | | 访问令牌 | +| refresh_token | varchar(500) | Y | | 刷新令牌 | +| login_ip | varchar(50) | N | | 登录IP | +| login_location | varchar(100) | Y | | 登录地点 | +| user_agent | varchar(500) | Y | | 用户代理 | +| session_timeout | int4 | N | 1800 | 会话超时时间(秒) | +| last_access_time | timestamp(6) | N | pg_systimestamp() | 最后访问时间 | +| is_active | int2 | N | 1 | 是否活跃:0-否,1-是 | +| logout_time | timestamp(6) | Y | | 登出时间 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_user_role (用户角色关联表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| user_id | int8 | N | | 用户ID | +| role_id | int8 | N | | 角色ID | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_role_menu (角色菜单关联表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| role_id | int8 | N | | 角色ID | +| menu_id | int8 | N | | 菜单ID | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +
+ +## 子系统1: 统一平台数据表 + +统一平台主要负责系统基础功能,包括用户管理、权限管理、部门管理等。这些表主要为system_*系列,已在上一节详细描述。 + +### OAuth2.0单点登录相关表 + +为支持OAuth2.0协议的单点登录功能,系统新增以下OAuth2.0相关数据表: + +
+点击展开/折叠OAuth2.0表详情 + +### system_oauth2_client (OAuth2客户端表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| client_id | varchar(255) | N | | 客户端编号 | +| secret | varchar(255) | N | | 客户端密钥 | +| name | varchar(255) | N | | 应用名 | +| logo | varchar(255) | N | | 应用图标 | +| description | varchar(255) | Y | | 应用描述 | +| status | int2 | N | | 状态 | +| access_token_validity_seconds | int4 | N | | 访问令牌的有效期 | +| refresh_token_validity_seconds | int4 | N | | 刷新令牌的有效期 | +| redirect_uris | varchar(255) | N | | 可重定向的 URI 地址 | +| authorized_grant_types | varchar(255) | N | | 授权类型 | +| scopes | varchar(255) | Y | | 授权范围 | +| auto_approve_scopes | varchar(255) | Y | | 自动通过的授权范围 | +| authorities | varchar(255) | Y | | 权限 | +| resource_ids | varchar(255) | Y | | 资源 | +| additional_information | varchar(4096) | Y | | 附加信息 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | + +### system_oauth2_access_token (OAuth2访问令牌表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| user_id | int8 | N | | 用户编号 | +| user_type | int2 | N | | 用户类型 | +| user_info | varchar(512) | N | | 用户信息 | +| access_token | varchar(255) | N | | 访问令牌 | +| refresh_token | varchar(32) | N | | 刷新令牌 | +| client_id | varchar(255) | N | | 客户端编号 | +| scopes | varchar(255) | Y | | 授权范围 | +| expires_time | timestamp(6) | N | | 过期时间 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_oauth2_refresh_token (OAuth2刷新令牌表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| user_id | int8 | N | | 用户编号 | +| refresh_token | varchar(32) | N | | 刷新令牌 | +| user_type | int2 | N | | 用户类型 | +| client_id | varchar(255) | N | | 客户端编号 | +| scopes | varchar(255) | Y | | 授权范围 | +| expires_time | timestamp(6) | N | | 过期时间 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_oauth2_code (OAuth2授权码表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| user_id | int8 | N | | 用户编号 | +| user_type | int2 | N | | 用户类型 | +| code | varchar(32) | N | | 授权码 | +| client_id | varchar(255) | N | | 客户端编号 | +| scopes | varchar(255) | Y | | 授权范围 | +| expires_time | timestamp(6) | N | | 过期时间 | +| redirect_uri | varchar(255) | Y | | 可重定向的 URI 地址 | +| state | varchar(255) | Y | | 状态 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### system_oauth2_approve (OAuth2批准表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | | 编号 | +| user_id | int8 | N | | 用户编号 | +| user_type | int2 | N | | 用户类型 | +| client_id | varchar(255) | N | | 客户端编号 | +| scope | varchar(255) | Y | | 授权范围 | +| approved | bool | N | false | 是否接受 | +| expires_time | timestamp(6) | N | | 过期时间 | +| creator | varchar(64) | Y | | 创建者 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新者 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +
+ +## 子系统2: 营收系统数据表 + +营收系统是核心业务系统,包括客户管理、抄表管理、账务管理、发票管理等核心业务功能。 + +
+点击展开/折叠营收系统表详情 + +### biz_community (所属小区表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(200) | N | | 小区名称 | +| code | varchar(100) | N | | 小区代码 | +| address | varchar(500) | Y | | 小区地址 | +| contact_number | varchar(100) | Y | | 联系号码 | +| dept_code | varchar(50) | N | | 部门代码,关联系统部门表 | +| parent_id | int8 | Y | | 父级小区id,支持小区层级管理 | +| ancestor_list | varchar(1000) | Y | | 祖级列表,格式:1,2,3表示祖级小区id列表 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### system_user_form_config (用户表单字段配置表-标准) + +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键ID | +| obj_id | int8 | Y | | 对象ID(用户id/角色id等) | +| config_type | int2 | N | | 配置类型:1-个人配置,2-角色配置 | +| code | varchar(100) | N | | 表格标识/模版号(与菜单或功能标识关联) | +| column_key | varchar(100) | N | | 列字段标识 | +| column_title | varchar(100) | Y | | 自定义列标题 | +| column_width | int4 | Y | | 列宽度 | +| is_visible | int2 | N | 0 | 是否显示:0-显示,1-隐藏 | +| is_printable | int2 | N | 0 | 是否可打印:0-是,1-否 | +| sort_order | int4 | N | 0 | 排序序号 | +| creator | varchar(64) | Y | | 创建人 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| updater | varchar(64) | Y | | 更新人 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户编号 | + +### biz_company_account (水司账户表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| account_name | varchar(200) | N | | 账户名称 | +| account_address | varchar(500) | Y | | 账户地址 | +| bank_name | varchar(200) | N | | 开户行名称 | +| bank_code | varchar(100) | N | | 开户行代码 | +| bank_account | varchar(100) | N | | 开户行账户 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_cost_component (费用组成表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 费用名称 | +| code | varchar(100) | N | | 费用代码 | +| penalty_coefficient | numeric(10,4) | Y | | 违约金系数,违约金计算系数,默认为0表示不收取违约金 | +| zero_usage_calculation | int2 | N | 0 | 零用量是否计算,0-不计算,1-计算 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_dept_account_rel (部门和水司账户关系表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| dept_code | varchar(50) | N | | 部门代码,关联系统部门表 | +| account_id | int8 | N | | 水司账户id,关联水司账户表 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_meter_caliber (水表口径表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 口径名称 | +| code | varchar(100) | N | | 口径代码 | +| value | numeric(10,2) | Y | | 口径值(单位:毫米) | +| check_period | int4 | Y | | 强检周期(单位:年) | +| replace_period | int4 | Y | | 定换周期(单位:年) | +| high_coefficient | numeric(10,4) | Y | | 量高系数,抄表量高提醒系数 | +| low_coefficient | numeric(10,4) | Y | | 量低系数,抄表量低提醒系数 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_meter_maker (水表厂家表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 厂家名称 | +| code | varchar(100) | N | | 厂家代码 | +| recharge_type | varchar(10) | Y | | 充值类型 | +| address | varchar(500) | Y | | 地址 | +| contact | varchar(100) | Y | | 联系人 | +| contact_number | varchar(100) | Y | | 联系号码 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_meter_model (水表型号表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| maker_code | varchar(100) | N | | 厂家代码,关联水表厂家表 | +| name | varchar(100) | Y | | 型号名称 | +| code | varchar(100) | N | | 型号代码 | +| caliber_range | varchar(200) | Y | | 口径范围,如:DN15-DN200 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_meter_range (水表量程表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 量程名称 | +| code | varchar(100) | N | | 量程代码 | +| value | numeric(15,3) | Y | | 量程值 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_category (水价归属表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 归属名称 | +| code | varchar(100) | N | | 归属代码 | +| parent_id | int8 | Y | | 父级归属id | +| ancestor_list | varchar(1000) | Y | | 祖级列表,格式:1,2,3表示祖级归属id列表 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_adjustment_history (水价调整历史表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| adjustment_id | int8 | N | | 调整id,关联水价调整表 | +| before_value | numeric(15,4) | Y | | 调整前价格 | +| after_value | numeric(15,4) | Y | | 调整后价格 | +| adjustment_reason | varchar(500) | Y | | 调整原因 | +| effective_date | timestamp(6) | Y | | 生效日期 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_cost_adjustment (价格成本调整表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| cost_component_code | varchar(100) | N | | 费用组成代码,关联费用组成表 | +| price_category_code | varchar(100) | N | | 价格归属代码,关联价格归属表 | +| price_value | numeric(15,4) | Y | | 价格值 | +| effective_date | timestamp(6) | Y | | 生效日期 | +| expire_date | timestamp(6) | Y | | 失效日期 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_dept_rel (价格部门关系表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| price_category_code | varchar(100) | N | | 价格归属代码,关联价格归属表 | +| dept_code | varchar(50) | N | | 部门代码,关联系统部门表 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_discount_cost (价格折扣成本表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| scheme_id | int8 | N | | 折扣方案id,关联价格折扣方案表 | +| cost_component_code | varchar(100) | N | | 费用组成代码,关联费用组成表 | +| discount_rate | numeric(10,4) | Y | | 折扣率,0-1之间的小数 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_discount_scheme (价格折扣方案表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 方案名称 | +| code | varchar(100) | N | | 方案代码 | +| price_category_code | varchar(100) | N | | 价格归属代码,关联价格归属表 | +| discount_type | varchar(20) | Y | | 折扣类型,如:百分比、固定金额等 | +| effective_date | timestamp(6) | Y | | 生效日期 | +| expire_date | timestamp(6) | Y | | 失效日期 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_discount_tier (价格折扣阶梯表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| scheme_id | int8 | N | | 折扣方案id,关联价格折扣方案表 | +| tier_level | int4 | Y | | 阶梯级别 | +| start_value | numeric(15,3) | Y | | 起始值 | +| end_value | numeric(15,3) | Y | | 结束值 | +| discount_rate | numeric(10,4) | Y | | 折扣率 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_tier_adjustment (价格阶梯调整表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| cost_component_code | varchar(100) | N | | 费用组成代码,关联费用组成表 | +| price_category_code | varchar(100) | N | | 价格归属代码,关联价格归属表 | +| tier_level | int4 | Y | | 阶梯级别 | +| start_value | numeric(15,3) | Y | | 起始值 | +| end_value | numeric(15,3) | Y | | 结束值 | +| price_value | numeric(15,4) | Y | | 价格值 | +| effective_date | timestamp(6) | Y | | 生效日期 | +| expire_date | timestamp(6) | Y | | 失效日期 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_adjustment_snap (水价调整快照表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| code | int4 | N | | 快照编号/版本号,1->2->3递增 | +| effective_date | timestamp(6) | N | | 生效日期 | +| expiry_date | timestamp(6) | Y | | 失效日期,为空表示长期有效 | +| adjuster | varchar(100) | Y | | 调价人 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间/调价时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_template (水价调整模版表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| name | varchar(100) | Y | | 用水性质名称 | +| code | varchar(100) | N | | 模版代码/简号 | +| price_category_code | varchar(100) | N | | 水价归属代码,关联价格归属表 | +| adjustment_snap_code | varchar(100) | N | | 调价快照code,关联水价调整快照表 | +| meter_start | int4 | Y | | 起开量 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_template_dept_rel (模版部门关系表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| dept_code | varchar(50) | N | | 部门代码,关联系统部门表 | +| template_code | varchar(100) | N | | 水价调整模版代码 | +| adjustment_snap_code | varchar(100) | N | | 调价快照code | +| is_default | int2 | N | 0 | 是否默认:0-否,1-是 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_tier_adjustment (水价阶梯调整表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| cost_adjustment_id | int8 | N | | 水价费用调整id | +| cost_component_code | varchar(100) | N | | 费用组成代码 | +| tier_level | int4 | N | 0 | 阶梯级别,如1、2、3等 | +| start_volume | numeric(15,3) | Y | | 开始水量,单位:立方米 | +| end_volume | numeric(15,3) | Y | | 结束水量,为空表示无上限 | +| price | numeric(10,4) | N | | 价格,单位:元/立方米或元 | +| volume_coefficient | numeric(10,4) | N | 1 | 水量系数,用于特殊计算场景 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_discount_scheme (水价优惠方案表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| scheme_name | varchar(200) | N | | 方案名称,如:居民用户优惠方案2024 | +| scheme_code | varchar(100) | N | | 方案代码 | +| template_code | varchar(100) | N | | 水价模版代码 | +| discount_type | int4 | N | | 优惠方式:1-按水量,2-按比例 | +| effective_date | date | N | | 生效日期 | +| expiry_date | date | Y | | 失效日期,为空表示长期有效 | +| scheme_description | varchar(1000) | Y | | 方案描述 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_discount_tier (水价优惠阶梯表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| scheme_id | int8 | N | | 优惠方案id | +| tier_level | int4 | N | 0 | 阶梯级别,如1、2、3等 | +| start_volume | numeric(15,3) | Y | | 开始水量,单位:立方米 | +| end_volume | numeric(15,3) | Y | | 结束水量,为空表示无上限 | +| include_in_tier | int2 | N | 1 | 是否计入阶梯:0-不计入,1-计入 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### biz_price_discount_cost (水价优惠费用表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| tier_id | int8 | N | | 优惠阶梯id | +| cost_component_code | varchar(100) | N | | 费用组成代码 | +| discount_price | numeric(10,4) | N | | 优惠价格,单位:元/立方米或元 | +| sort | int4 | N | 0 | 排序 | +| remark | varchar(500) | Y | | 备注 | +| status | int2 | N | 0 | 状态:0-否,1-是 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +## SYS-002 客户与账户关系表 (`biz_cust*` / `biz_account`) + +> 说明:以下内容按 `sql/lhc_数据库设计.md`、`docs/guides/BACKEND_TABLE_MAPPING.md` 与当前 backend 真实表名进行整编,字段以“数据库专项设计阶段需重点关注的核心字段”为主,不再延续旧稿中的 `customer_*` 系列表命名。 + +### biz_cust (客户主档表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 客户编号 | +| `name` | 客户名称 | +| `cust_type` | 客户类型 | +| `id_type` / `id_no` | 证件类型 / 证件号码 | +| `mobile` / `address` | 联系电话 / 地址 | +| `dept_code` | 所属营业部门 | +| `status` | 客户状态 | +| `tenant_id` | 租户编号 | + +### biz_account (客户账户表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 账户编号 | +| `cust_id` | 客户主档 ID | +| `balance` | 账户余额 | +| `arrears_amount` | 欠费金额 | +| `account_status` | 账户状态 | +| `tenant_id` | 租户编号 | + +### biz_cust_contact (客户联系人表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `name` | 联系人姓名 | +| `mobile` | 联系电话 | +| `contact_type` | 联系人类型 | +| `is_default` | 是否默认联系人 | + +### biz_cust_group (客户分组表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 分组编码 | +| `name` | 分组名称 | +| `parent_id` | 上级分组 | +| `status` | 状态 | + +### biz_cust_meter (客户与水表关系表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `meter_id` | 水表主档 ID | +| `bind_type` | 绑定类型 | +| `is_main` | 是否主表 | +| `status` | 关系状态 | + +### biz_cust_invoice (客户开票信息表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `invoice_title` | 开票抬头 | +| `tax_no` | 纳税人识别号 | +| `email` | 发票接收邮箱 | +| `mobile` | 联系手机号 | + +### biz_cust_app_binds (客户应用绑定表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `cust_id` | 客户主档 ID | +| `app_type` | 应用类型 | +| `app_user_id` | 外部应用用户标识 | +| `status` | 绑定状态 | + +### biz_cust_collection_rel / biz_cust_withholding_rel (托收/代扣关系表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_cust_collection_rel` | `cust_id`, `collection_id`, `status` | 客户与托收关系 | +| `biz_cust_withholding_rel` | `cust_id`, `withholding_id`, `status` | 客户与代扣关系 | + +### biz_cust_water_use_scheme / biz_cust_water_scheme_rel (用水方案关系表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_cust_water_use_scheme` | `cust_id`, `scheme_code`, `effective_date` | 客户用水方案 | +| `biz_cust_water_scheme_rel` | `cust_id`, `template_code`, `status` | 客户与价格模板关系 | + +### biz_cust_no_rule / biz_cust_hub_marks (客户编号与集抄标识表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_cust_no_rule` | `rule_code`, `prefix`, `dept_code`, `status` | 客户编号规则 | +| `biz_cust_hub_marks` | `cust_id`, `hub_code`, `mark_type` | 集抄/枢纽标识 | + +## SYS-002 抄表、水表与价格支撑表 (`biz_meter*` / `biz_reading_*` / `biz_price_*`) + +### biz_meter (水表主档表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 水表编号 | +| `meter_no` | 出厂表号 | +| `maker_code` / `model_code` | 厂家 / 型号 | +| `caliber_code` / `range_code` | 口径 / 量程 | +| `install_address` | 安装地址 | +| `meter_status` | 水表状态 | +| `tenant_id` | 租户编号 | + +### biz_meter_book (抄表册本表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 册本编号 | +| `name` | 册本名称 | +| `dept_code` | 所属部门 | +| `reader_user` | 抄表员 | +| `reading_cycle` | 抄表周期 | +| `status` | 册本状态 | + +### biz_meter_read (抄表任务/状态表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `book_id` | 册本 ID | +| `cust_id` | 客户 ID | +| `meter_id` | 水表 ID | +| `read_period` | 抄表期间 | +| `read_status` | 抄表状态 | +| `read_type` | 抄表方式 | + +### biz_reading_data (抄表数据表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `meter_read_id` | 抄表任务 ID | +| `last_reading` | 上次读数 | +| `current_reading` | 本次读数 | +| `water_usage` | 用水量 | +| `read_time` | 抄见时间 | +| `photo_url` | 抄表照片 | + +### biz_last_reading / biz_reading_logs (上次读数与抄表日志) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_last_reading` | `meter_id`, `last_reading`, `last_read_time` | 水表最近有效读数 | +| `biz_reading_logs` | `meter_id`, `operate_type`, `operator`, `operate_time` | 抄表处理留痕 | + +### 价格与模板支撑表 +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_price_category` | `code`, `name`, `parent_id` | 水价归属 | +| `biz_price_template` | `code`, `price_category_code`, `adjustment_snap_code` | 水价模板 | +| `biz_price_adjustment_snap` | `code`, `effective_date`, `expiry_date` | 调价快照 | +| `biz_price_cost_adjustment` | `price_category_code`, `cost_component_code`, `price_value` | 费用调价 | +| `biz_price_tier_adjustment` | `cost_component_code`, `tier_level`, `start_volume`, `end_volume`, `price` | 阶梯价格 | +| `biz_cost_component` | `code`, `name`, `penalty_coefficient` | 费用组成 | +| `biz_water_use_scheme` | `code`, `name`, `status` | 用水方案 | +| `biz_water_use_scheme_tier` | `scheme_code`, `tier_level`, `start_volume`, `end_volume` | 用水阶梯 | +| `biz_exceed_water_use_scheme` | `scheme_code`, `exceed_type`, `price_rule` | 超计划规则 | + +## SYS-002 开账、收费与票据表 (`biz_charge*` / `biz_collection` / `biz_withholding` / `biz_invoice*`) + +### biz_charge (营业账主表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `code` | 账单编号 | +| `cust_id` | 客户 ID | +| `record_id` | 抄表记录或开账来源 ID | +| `bill_period` | 账单期间 | +| `total_amount` | 账单总金额 | +| `charge_status` | 收费状态 | +| `due_date` | 应缴日期 | + +### biz_charge_detail (营业账明细表) +| 字段名 | 说明 | +| :--- | :--- | +| `id` | 主键 | +| `charge_id` | 营业账主表 ID | +| `cost_component_code` | 费用组成代码 | +| `usage_amount` | 用量 | +| `unit_price` | 单价 | +| `detail_amount` | 明细金额 | + +#### REV-002 账单生成承接口径 + +| 对象 | 正式口径 | 承接说明 | +| :--- | :--- | :--- | +| `biz_charge` | 账单生成主结果对象 | 统一表达客户、账期、抄表/开账来源、账单总金额、收费状态与应缴日期,不单独发明新的在线账单主模型 | +| `biz_charge_detail` | 账单生成明细对象 | 统一表达费用组成、用量、单价、明细金额,与主表通过 `charge_id` 建立主明细关系 | +| `biz_price_category`、`biz_price_template`、`biz_price_adjustment_snap`、`biz_price_tier_adjustment` | 计费规则来源对象 | 用于表达价格归属、基础价格、调价快照与阶梯规则来源,支撑账单金额计算与追溯 | +| `biz_cost_component` | 费用组成定义对象 | 用于表达水费、污水费、附加费、罚款类费用等明细分类,不将费用组成直接硬编码到主表 | +| `biz_water_use_scheme`、`biz_water_use_scheme_tier`、`biz_exceed_water_use_scheme` | 计划用水与超计划规则对象 | 用于承接计划用水、超计划与阶梯类扩展规则,不额外发明平行的特殊开账规则表 | +| 历史开账记录、特殊开账 | 历史只读 / 同模型承接对象 | 统一纳入 `biz_charge`、`biz_charge_detail` 与操作留痕承接,通过来源类型、业务类型、依据说明区分,不单设“特殊开账表” | + +> REV-002 承接口径:账单生成结果统一由 `biz_charge`、`biz_charge_detail` 承接,关键规则来源继续由 `biz_price_*`、`biz_cost_component` 与计划用水相关对象提供;当价格模板、费用组成或规则关系不完整时,应按“阻断生成”口径处理。 +> +> 当前 backend 证据:`ChargeServiceImpl.generateSingleChargeWithCache` 成功路径已执行 `chargeMapper.insert(charge)`、`chargeDetailService.insertChargeDetail(detail)` 与 `updateReadingDataCheckState(readingDataId, 1)`,说明现有实现已能把按 `readingDataIds` 复核/开账的结果落入 `biz_charge`、`biz_charge_detail`。 +> +> 当前承接缺口:接口层返回仍为成功条数字符串,失败阻断主要依赖日志与布尔值,且仅支持 `ACTUAL_USAGE` 结算方式;`biz_charge` / `biz_charge_detail` 的主明细结果、失败对象范围和结构化原因尚未提升为正式 `IF-REV-005` 契约返回。 +> +> REV-004 承接口径:水量调整、金额调整、退款、冲正、坏账申请统一以 `biz_charge`、`biz_charge_detail` 作为账单主明细承接对象;当前数据库主文档不新增独立账务细表来承接一期场景。 + +### biz_collection / biz_withholding (托收与代扣主表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_collection` | `code`, `cust_id`, `charge_id`, `collection_status` | 托收主表 | +| `biz_withholding` | `code`, `cust_id`, `charge_id`, `withholding_status` | 代扣主表 | + +### biz_invoice / biz_invoice_taxrate (发票主表与税率表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_invoice` | `code`, `cust_id`, `charge_id`, `invoice_status`, `invoice_amount` | 发票主表,统一承接申请单号、账单关联、受理号、开票结果与电子票地址等核心状态 | +| `biz_invoice_taxrate` | `tax_code`, `tax_name`, `tax_rate`, `status` | 税率基础配置 | + +#### REV-005 发票承接口径 + +| 对象 | 已有字段 | 待补字段 | 仅快照/历史只读字段 | +| :--- | :--- | :--- | :--- | +| `biz_invoice` 发票申请/结果主对象 | `code`、`cust_id`、`charge_id`、`invoice_status`、`invoice_amount` | `application_no`、`sys_request_no`、`invoice_type`、`invoice_title`、`tax_no`、`email`、`mobile`、`source_channel`、`fail_reason`、`invoice_code`、`invoice_number`、`file_url`、`last_try_time`、`next_try_time`、`try_count`、`push_status`、`charge_ids_snapshot`、`charge_bind_status`、作废原因/备注、红冲原因/备注、原票/红票关联标识、作废/红冲申请来源、补偿查询/结果回写上下文 | 旧开票批次号、旧配置版本号、旧平台扩展回执 | +| `biz_cust_invoice` 客户开票信息 | `cust_id`、`invoice_title`、`tax_no`、`email`、`mobile` | 企业/个人抬头类型、默认推送方式等扩展属性按后续实现补齐 | 旧抬头版本、历史修改快照 | +| `biz_invoice_taxrate` 税率配置 | `tax_code`、`tax_name`、`tax_rate`、`status` | 税率生效区间、适用票种范围等扩展控制字段 | 旧税率版本快照 | +| 账单-发票关系快照 | 当前主模型通过 `biz_invoice` 与 `biz_charge*` 关联承接 | `charge_ids_snapshot`、账单集合来源、客户侧身份匹配结果、操作留痕标识 | 旧营业账开票关系表、旧发票明细表 | + +### biz_operat_log / biz_operat_log_detail (操作留痕表) +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_operat_log` | `biz_type`, `biz_id`, `operate_user`, `operate_time` | 业务操作主日志 | +| `biz_operat_log_detail` | `log_id`, `field_name`, `before_value`, `after_value` | 字段级变更留痕 | + +> REV-004 留痕口径:`biz_operat_log*` 统一承接账务处理的一期留痕,至少覆盖处理类型、目标账单、原交易引用、处理前后差异、原因说明、附件依据与操作人。 +> +> 边界说明:旧数据字典中的“跨周期水量、特账、红冲、已销调整、呆坏账、实时收费日志”等对象,在当前 backend 范围内未全部识别到独立实体表,数据库专项中统一按业务处理场景描述,不误写为已明确落地的真实表。 + +### 旧系统历史台账迁移与只读查询口径 + +#### 在线主模型承接范围 + +| 旧对象/旧菜单 | 当前主口径 | 承接方式 | 数据策略 | +| :--- | :--- | :--- | :--- | +| 开账记录、特殊开账 | `biz_charge`、`biz_charge_detail`、`biz_operat_log*` | 统一纳入营业账主表与明细表,特殊开账按来源类型、业务类型、依据说明留痕,不单设平行“特殊开账表” | 在线保留 | +| 柜台收费、实时收费、代收代扣 | `biz_collection`、`biz_withholding`、`bk_transaction*`、`bk_withholding_*` | 统一纳入收费主模型与渠道交易模型,柜台班结/实时收费日志按交易结果和操作留痕归并 | 在线保留 | +| 发票申请、开票结果、票据税率 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | 统一纳入发票主表、税率表和客户开票信息,不为旧“营业账开票表”机械复制新在线表 | 在线保留 | +| 微网厅业务字段、页面配置、微信参数 | `biz_business_types`、`biz_business_datas`、`biz_page_settings*`、`biz_parameter_settings`、`sys_wechat_app_settings` | 统一归并为业务类型、页面配置和渠道参数模型 | 在线保留 | +| 办理附件、电子档案 | `biz_content`、`biz_content_attach` | 当前新增与迁移后新增资料统一按资料主表与附件表承接 | 在线保留 | + +#### 历史只读保留范围 + +| 历史对象 | 当前正式口径 | 保留策略 | 查询要求 | +| :--- | :--- | :--- | :--- | +| 红冲记录、红冲原因、红冲前后账务快照 | 账单状态 + 账务处理场景 + 操作留痕 | 保留历史只读,不强制拆为新主库独立实体表 | 至少支持原单号、红冲单号、金额、原因、经办人、时间查询 | +| 预存退款、已销调整、价差调整、分账调整、违约金减免、呆坏账明细 | `REV-004` 账务处理业务场景 | 旧细粒度台账以历史只读方式保留;新发生业务由流程与日志承接 | 至少支持汇总、明细、状态、审批结果和关联账单查询 | +| 柜台结账、打印记录、补打记录 | 收费结果 + 打印/操作留痕 | 旧查询菜单作为历史只读能力保留,不单独建设新结账台账表 | 至少支持班次、营业所、柜员、打印类型、结账状态查询 | +| 发票明细、营业账开票关系、开票配置快照 | 发票主模型 + 历史关系快照 | 旧细表和配置快照按历史只读保留;新在线模型只保留开票必需主数据 | 至少支持发票号、账单号、开票批次、配置版本和结果状态查询 | +| 催缴记录、停水记录、预存短信记录 | 催缴/停复水/消息联动业务场景 | 旧记录菜单按历史只读保留,与 `IF-REV-013` 的任务结果、通知链路和工单处置引用分层承接,不新增同名在线主表 | 至少支持客户、账期、催缴方式、执行结果、发送对象、发送时间、关联账单、处置引用查询 | +| 水表检定、领用、出库、退库、报废单据 | `METER-003` 生命周期场景 | 当前在线主表承接水表状态,旧单据与检定证书按历史只读保留 | 至少支持表号、仓库、单据类型、检定结论、证书编号查询 | + +#### 迁移验收最低对账口径 + +| 对账主题 | 最低核对维度 | 主口径来源 | 验收要求 | +| :--- | :--- | :--- | :--- | +| 开账记录 | 客户数、账单数、账期、应收金额 | `biz_charge`、`biz_charge_detail` + 历史账单来源 | 支持按账期、营业所、客户类型汇总比对 | +| 缴费记录 | 收费笔数、实收金额、渠道、核销状态 | `biz_collection`、`bk_transaction*` | 支持按渠道、日期、营业所汇总比对 | +| 发票记录 | 开票笔数、金额、状态、票据类型 | `biz_invoice*` + 历史开票关系 | 支持按发票状态、开票日期比对 | +| 红冲与账务调整 | 调整笔数、调整金额、处理结果 | 账务处理结果 + 历史台账 | 支持汇总与单据级差异定位 | +| 催缴与停复水 | 通知笔数、执行结果、停复水状态 | `IF-REV-013` 任务结果 + 历史记录 | 支持按账期、客户、执行状态、处置引用比对 | +| 电子档案 | 附件数、附件类型、关联业务单数 | `biz_content_attach` + 历史档案目录 | 支持按业务类型、上传时间、来源系统比对 | + +#### 设计约束 + +- 不以“旧菜单一项对应一张新表”为原则,优先复用当前已确认的 `biz_*`、`bk_*` 在线主模型。 +- 对 backend 当前未识别到独立实体表的旧细粒度台账,仅写为“历史只读查询对象”,不误写为“已存在新在线表”。 +- 历史只读对象必须保留原系统关键标识(原单号、原客户号、原批次号或原附件标识)以支撑迁移验收与问题追溯。 +- 涉及历史附件、影像、高拍仪资料时,正式数据库设计只约束“资料元数据 + 文件引用”口径,不在本轮臆造新的文件表族。 +- `REV-006` 的正式结果状态按 `PENDING`、`SUCCESS`、`FAIL`、`MANUAL_VERIFIED` 四态统一,数据库设计仅约束查询与追溯口径,不反推为已存在独立催缴结果主表。 +- 停复水、复水和工单处置在本轮仅保留“关联引用 + 状态摘要 + 建链时间”三类追溯字段要求,不展开下游业务表设计。 + +## SYS-002 业务办理与资料表 (`biz_process*` / `biz_business_*` / `biz_content*`) + +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `biz_process` | `code`, `biz_type_code`, `cust_id`, `process_status` | 业务办理流程主表 | +| `biz_process_transfer` | `process_id`, `from_user`, `to_user`, `transfer_time` | 流转/转办记录 | +| `biz_process_cust_contact` | `process_id`, `contact_name`, `mobile` | 办理过程联系人信息 | +| `biz_process_meter_install` | `process_id`, `meter_id`, `install_addr` | 装表安装信息 | +| `biz_process_invoice_modifys` | `process_id`, `invoice_id`, `modify_type` | 发票变更记录 | +| `biz_business_types` | `code`, `name`, `status` | 业务类型定义 | +| `biz_business_datas` | `biz_id`, `data_key`, `data_value` | 业务扩展数据 | +| `biz_content` | `biz_id`, `content_type`, `content_title` | 办理资料主表 | +| `biz_content_attach` | `content_id`, `file_name`, `file_url` | 办理附件表 | + +## SYS-002 银行代收与结算表 (`bk_*`) + +| 表名 | 关键字段 | 说明 | +| :--- | :--- | :--- | +| `bk_payment_channel` | `channel_code`, `channel_name`, `channel_type`, `status` | 支付渠道主表 | +| `bk_channel_api_config` | `channel_code`, `api_type`, `endpoint`, `crypto_type` | 渠道接口配置 | +| `bk_channel_route_rule` | `channel_code`, `route_type`, `priority`, `status` | 渠道路由规则 | +| `bk_channel_statistics` | `channel_code`, `stat_date`, `success_count`, `success_amount` | 渠道统计 | +| `bk_transaction` | `trade_no`, `biz_order_no`, `channel_code`, `trade_amount`, `trade_status` | 渠道交易流水 | +| `bk_transaction_callback` | `trade_no`, `callback_time`, `callback_status`, `raw_message` | 回调留痕 | +| `bk_transaction_exception` | `trade_no`, `exception_code`, `exception_desc`, `handle_status` | 异常处理 | + +> REV-004 原交易校验口径:退款、冲正场景统一依赖 `bk_transaction*` 校验原交易存在性、状态、回调结果与异常处理状态,数据库专项不再为一期新增平行退款交易表。 +| `bk_withholding_agreement` | `agreement_no`, `cust_id`, `channel_code`, `sign_status` | 代扣签约 | +| `bk_withholding_batch` | `batch_no`, `channel_code`, `batch_date`, `batch_status` | 代扣批次 | +| `bk_withholding_item` | `batch_id`, `cust_id`, `charge_id`, `item_status` | 代扣明细 | +| `bk_reconcile_batch` | `batch_no`, `channel_code`, `bill_date`, `reconcile_status` | 对账批次 | +| `bk_reconcile_diff` | `batch_id`, `trade_no`, `diff_type`, `diff_amount` | 对账差异 | +| `bk_settlement_batch` | `batch_no`, `channel_code`, `settlement_date`, `settlement_status` | 结算批次 | + +> 当前实现边界说明:`bk_*` 表族已形成较完整的对象承接口径,且签约、解约、交易流水与后台资源管理具备明确实现证据;但送盘、回盘、对账、结算等业务编排仍缺少完整闭环与统一迁移证据,数据库专项不得据此倒推出“银行协同已全部落地”。 + +
+ + +## METER/INST 专题表边界 + +本章节用于收敛 `SYS-002` 主表之外、但在详细设计与附录中反复出现的表务与报装签章专题表口径,避免“主文档未覆盖、分文档各写一套”。 + +### METER 专题(表务管理) + +#### 实现态(当前主库口径) + +| 表名 | 角色定位 | 说明 | +| :--- | :--- | :--- | +| `biz_meter` | 水表主档 | 水表基础信息、状态、型号、口径、量程等主数据入口 | +| `biz_meter_read` / `biz_reading_data` / `biz_last_reading` | 抄表与读数 | 支撑抄表任务、读数提交、最新读数维护 | +| `biz_meter_log` | 表务留痕 | 记录换表、移表、校表、维修等过程动作 | +| `biz_meter_in_out` / `biz_meter_in_out_rel` | 库存与出入库 | 支撑领用、退库、报废及批次追踪 | +| `biz_process` / `biz_process_transfer` | 工单协同 | 与业务办理流程共享工单流转和处理状态 | + +#### 历史命名映射(存量资料口径) + +| 历史命名(存量) | 当前主口径(建议对齐) | 说明 | +| :--- | :--- | :--- | +| `water_meter_workorder` | `biz_meter_log` + `biz_process*` | 旧稿“工单”能力在主文档统一并入表务日志与流程流转模型 | +| `water_meter_stock` / `water_meter_inventory` | `biz_meter_in_out` + `biz_meter_in_out_rel` | 旧稿库存/出入库能力按 `biz_meter_*` 专题表收敛 | +| `water_meter_archive` | `biz_meter` + `biz_last_reading` | 旧稿档案口径统一并入水表主档与读数状态模型 | + +> 说明:`water_meter_*` 仅用于历史资料追溯,不作为当前正式交付主口径。 + +### INST 专题(报装与签章) + +#### 实现态(当前主库口径) + +| 表名 | 角色定位 | 说明 | +| :--- | :--- | :--- | +| `biz_process` / `biz_process_transfer` | 报装流程主线 | 报装申请受理、节点流转、办理状态 | +| `biz_process_meter_install` | 装表落地信息 | 记录安装位置、装表结果等现场信息 | +| `biz_business_datas` | 业务扩展数据 | 踏勘、方案、审批扩展字段 | +| `biz_content` / `biz_content_attach` | 资料与附件 | 报装材料、验收资料、影像与附件管理 | + +#### 设计态(专项扩展口径) + +| 表名 | 角色定位 | 说明 | +| :--- | :--- | :--- | +| `installation_contract` | 报装合同主表 | 合同主数据、合同状态、文件地址 | +| `installation_signature` | 签章记录表 | 签署方、签章任务、签署状态与时间 | +| `installation_evidence` | 电子存证表 | 存证凭证、哈希、存证状态 | +| `installation_ca_config` | CA 配置表 | 泛微 CA 对接配置参数 | +| `installation_signature_template` | 签章模板表 | 签章模板与签署位置配置 | +| `installation_application` | 报装申请映射 | 与报装申请主线对象的关联映射(设计态) | + +> 边界说明:`installation_*` 来源于报装签章专项设计与附录,当前在数据库主文档按“专题扩展”纳管。若实施库落地结构与本表不一致,以实施库与主详设联合评审结果为准。 + +## 子系统5: 客户服务数据表(复用 SYS-002 主数据) + +客户服务模块本身不再单独维护旧稿中分散的平行表模型,而是以 `SYS-002` 主数据和交易表为主,按场景复用客户、账单、支付、发票与业务办理数据。 + +
+点击展开/折叠客户服务系统表详情 + +### 客户服务主要复用表 + +| 场景 | 复用表 | 说明 | +| :--- | :--- | :--- | +| 账户绑定管理 | `biz_cust`, `biz_cust_app_binds`, `biz_account` | 支撑账户绑定、默认客户切换与账号关联 | +| 信息查询服务 | `biz_cust`, `biz_cust_meter`, `biz_meter`, `biz_charge`, `biz_charge_detail` | 支撑客户档案、表计信息、账单与费用查询 | +| 在线缴费服务 | `biz_charge`, `biz_collection`, `biz_withholding`, `bk_transaction`, `bk_transaction_callback` | 支撑缴费下单、支付回写与异步回调 | +| 电子发票服务 | `biz_invoice`, `biz_invoice_taxrate`, `biz_cust_invoice` | 支撑发票申请、税率匹配与抬头信息 | +| 业务办理服务 | `biz_process`, `biz_process_transfer`, `biz_business_datas`, `biz_content_attach` | 支撑业务申请、进度查询与附件资料 | + +> 说明:客户服务模块与 `SYS-008`、`SYS-009`、`SYS-010` 的协同在数据库层主要表现为复用 `SYS-002` 主业务表并接收外部服务回写结果,不再单列一套平行客户服务数据库模型。 + +
+ +## 子系统6: 手机抄表APP数据表 + +手机抄表APP为抄表员和外勤人员提供移动作业工具,支持离线操作,提升现场工作效率。 + +
+点击展开/折叠手机抄表APP表详情 + +### 移动端表 (mobile_*) + +### mobile_user_session (移动端用户会话表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| user_id | int8 | N | | 用户ID | +| device_id | varchar(100) | N | | 设备ID | +| device_type | varchar(20) | N | | 设备类型:Android、iOS | +| app_version | varchar(20) | Y | | 应用版本 | +| login_type | varchar(20) | N | | 登录类型:在线、离线 | +| session_token | varchar(500) | N | | 会话令牌 | +| login_time | timestamp(6) | N | pg_systimestamp() | 登录时间 | +| last_active_time | timestamp(6) | Y | | 最后活跃时间 | +| logout_time | timestamp(6) | Y | | 登出时间 | +| session_duration | int4 | Y | 0 | 会话时长(分钟) | +| login_ip | varchar(50) | Y | | 登录IP | +| login_location | varchar(100) | Y | | 登录位置 | +| network_type | varchar(20) | Y | | 网络类型:WiFi、4G、5G | +| session_status | int2 | N | 1 | 会话状态:0-已结束,1-活跃 | +| sync_status | int2 | N | 0 | 同步状态:0-未同步,1-已同步 | +| last_sync_time | timestamp(6) | Y | | 最后同步时间 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_user_cache (移动端用户缓存表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| user_id | int8 | N | | 用户ID | +| device_id | varchar(100) | N | | 设备ID | +| cache_key | varchar(200) | N | | 缓存键 | +| cache_value | text | Y | | 缓存值 | +| cache_type | varchar(20) | N | | 缓存类型:用户信息、权限、配置、数据 | +| cache_size | int4 | Y | 0 | 缓存大小(字节) | +| expire_time | timestamp(6) | Y | | 过期时间 | +| access_count | int4 | Y | 0 | 访问次数 | +| last_access_time | timestamp(6) | Y | | 最后访问时间 | +| cache_status | int2 | N | 1 | 缓存状态:0-已过期,1-有效 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_login_log (移动端登录日志表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| user_id | int8 | N | | 用户ID | +| username | varchar(50) | N | | 用户名 | +| device_id | varchar(100) | N | | 设备ID | +| device_type | varchar(20) | N | | 设备类型:Android、iOS | +| device_model | varchar(100) | Y | | 设备型号 | +| app_version | varchar(20) | Y | | 应用版本 | +| login_type | varchar(20) | N | | 登录类型:在线、离线 | +| login_time | timestamp(6) | N | pg_systimestamp() | 登录时间 | +| login_result | int2 | N | | 登录结果:0-成功,1-失败 | +| login_ip | varchar(50) | Y | | 登录IP | +| login_location | varchar(100) | Y | | 登录位置 | +| network_type | varchar(20) | Y | | 网络类型:WiFi、4G、5G | +| failure_reason | varchar(200) | Y | | 失败原因 | +| user_agent | varchar(500) | Y | | 用户代理 | +| screen_resolution | varchar(20) | Y | | 屏幕分辨率 | +| operating_system | varchar(50) | Y | | 操作系统 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_reading_task (移动端抄表任务表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| task_no | varchar(32) | N | | 任务编号 | +| book_id | int8 | N | | 册本ID | +| reader_id | int8 | N | | 抄表员ID | +| task_date | date | N | | 任务日期 | +| total_meters | int4 | Y | 0 | 总表数 | +| completed_meters | int4 | Y | 0 | 已完成表数 | +| task_status | int2 | N | 0 | 任务状态:0-待开始,1-进行中,2-已完成 | +| download_time | timestamp(6) | Y | | 下载时间 | +| upload_time | timestamp(6) | Y | | 上传时间 | +| sync_status | int2 | N | 0 | 同步状态:0-未同步,1-已同步 | +| completion_rate | numeric(5,2) | Y | 0 | 完成率 | +| start_time | timestamp(6) | Y | | 开始时间 | +| end_time | timestamp(6) | Y | | 结束时间 | +| work_duration | int4 | Y | 0 | 工作时长(分钟) | +| exception_count | int4 | Y | 0 | 异常数量 | +| photo_count | int4 | Y | 0 | 照片数量 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_reading_record (移动端抄表记录表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| task_id | int8 | N | | 任务ID | +| customer_id | int8 | N | | 客户ID | +| meter_id | int8 | N | | 水表ID | +| reading_value | numeric(15,3) | Y | 0 | 抄表读数 | +| reading_time | timestamp(6) | N | pg_systimestamp() | 抄表时间 | +| reading_type | varchar(20) | N | | 抄表类型:正常、异常、估读 | +| exception_code | varchar(10) | Y | | 异常代码 | +| exception_description | varchar(500) | Y | | 异常描述 | +| photo_path | varchar(500) | Y | | 照片路径 | +| gps_longitude | numeric(10,6) | Y | | GPS经度 | +| gps_latitude | numeric(10,6) | Y | | GPS纬度 | +| location_accuracy | numeric(8,2) | Y | | 位置精度 | +| reading_method | varchar(20) | Y | | 抄表方式:手工、扫码、拍照识别 | +| sync_status | int2 | N | 0 | 同步状态:0-未同步,1-已同步 | +| sync_time | timestamp(6) | Y | | 同步时间 | +| network_type | varchar(20) | Y | | 网络类型:WiFi、4G、5G、离线 | +| device_id | varchar(100) | Y | | 设备ID | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_task_progress (移动端任务进度表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| task_id | int8 | N | | 任务ID | +| user_id | int8 | N | | 用户ID | +| progress_time | timestamp(6) | N | pg_systimestamp() | 进度时间 | +| completed_count | int4 | Y | 0 | 已完成数量 | +| total_count | int4 | Y | 0 | 总数量 | +| completion_rate | numeric(5,2) | Y | 0 | 完成率 | +| current_location | varchar(200) | Y | | 当前位置 | +| working_status | varchar(20) | Y | | 工作状态:工作中、休息中、结束 | +| progress_description | varchar(500) | Y | | 进度描述 | +| device_id | varchar(100) | Y | | 设备ID | +| battery_level | int4 | Y | 0 | 电池电量 | +| network_status | varchar(20) | Y | | 网络状态:在线、离线 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_data_cache (移动端数据缓存表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| user_id | int8 | N | | 用户ID | +| device_id | varchar(100) | N | | 设备ID | +| data_type | varchar(20) | N | | 数据类型:抄表、收费、工单 | +| data_key | varchar(200) | N | | 数据键 | +| data_value | text | Y | | 数据值 | +| data_size | int4 | Y | 0 | 数据大小(字节) | +| cache_time | timestamp(6) | N | pg_systimestamp() | 缓存时间 | +| sync_status | int2 | N | 0 | 同步状态:0-未同步,1-已同步,2-同步失败 | +| sync_time | timestamp(6) | Y | | 同步时间 | +| sync_error | varchar(500) | Y | | 同步错误 | +| retry_count | int4 | Y | 0 | 重试次数 | +| priority | int4 | Y | 0 | 优先级 | +| expire_time | timestamp(6) | Y | | 过期时间 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_problem_report (移动端问题上报表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| report_no | varchar(32) | N | | 上报编号 | +| reporter_id | int8 | N | | 上报人ID | +| problem_type | varchar(20) | N | | 问题类型:水表故障、管道漏水、水质问题 | +| problem_description | text | N | | 问题描述 | +| problem_location | varchar(200) | Y | | 问题位置 | +| gps_longitude | numeric(10,6) | Y | | GPS经度 | +| gps_latitude | numeric(10,6) | Y | | GPS纬度 | +| urgency_level | varchar(20) | N | | 紧急程度:普通、紧急、特急 | +| report_time | timestamp(6) | N | pg_systimestamp() | 上报时间 | +| problem_photos | text | Y | | 问题照片 | +| problem_status | int2 | N | 0 | 问题状态:0-待处理,1-处理中,2-已处理 | +| handler | varchar(100) | Y | | 处理人 | +| handle_time | timestamp(6) | Y | | 处理时间 | +| handle_result | varchar(500) | Y | | 处理结果 | +| customer_id | int8 | Y | | 客户ID | +| meter_id | int8 | Y | | 水表ID | +| device_id | varchar(100) | Y | | 设备ID | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### mobile_work_order (移动端工单表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | int8 | N | nextval() | 主键 | +| work_order_no | varchar(32) | N | | 工单编号 | +| problem_report_id | int8 | Y | | 问题上报ID | +| work_order_type | varchar(20) | N | | 工单类型:维修、更换、检查 | +| assigned_user | varchar(100) | Y | | 指派人员 | +| assignment_time | timestamp(6) | Y | | 指派时间 | +| work_description | text | Y | | 工作描述 | +| work_location | varchar(200) | Y | | 工作位置 | +| scheduled_time | timestamp(6) | Y | | 预约时间 | +| start_time | timestamp(6) | Y | | 开始时间 | +| end_time | timestamp(6) | Y | | 结束时间 | +| work_duration | int4 | Y | 0 | 工作时长(分钟) | +| work_status | int2 | N | 0 | 工单状态:0-待处理,1-处理中,2-已完成 | +| work_result | varchar(500) | Y | | 工作结果 | +| completion_photos | text | Y | | 完成照片 | +| customer_signature | varchar(500) | Y | | 客户签名 | +| satisfaction_rating | int2 | Y | | 满意度评分:1-5分 | +| device_id | varchar(100) | Y | | 设备ID | +| sync_status | int2 | N | 0 | 同步状态:0-未同步,1-已同步 | +| sync_time | timestamp(6) | Y | | 同步时间 | +| remark | varchar(500) | Y | | 备注 | +| create_time | timestamp(6) | N | pg_systimestamp() | 创建时间 | +| update_time | timestamp(6) | N | pg_systimestamp() | 更新时间 | +| creator | varchar(100) | Y | | 创建人id | +| updater | varchar(100) | Y | | 更新人id | +| deleted | int2 | N | 0 | 是否删除 | +| tenant_id | int8 | N | 0 | 租户id | + +### 移动端特有表(优化后) + +根据移动端表设计优化原则,以下为移动端特有的5个表: + +### mobile_user_cache (移动端用户缓存表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | bigint | N | AUTO_INCREMENT | 主键 | +| user_id | bigint | N | | 用户ID,关联system_users.id | +| device_id | varchar(100) | N | | 设备唯一标识 | +| cache_data | longtext | Y | | 缓存数据(JSON格式) | +| cache_type | varchar(50) | N | | 缓存类型:user_info、task_data、config_data | +| expire_time | datetime | Y | | 过期时间 | +| version | int | N | 1 | 版本号,用于数据同步 | +| create_time | datetime | N | CURRENT_TIMESTAMP | 创建时间 | +| update_time | datetime | N | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| creator | varchar(64) | Y | | 创建者 | +| updater | varchar(64) | Y | | 更新者 | +| deleted | tinyint | N | 0 | 是否删除:0-未删除,1-已删除 | +| tenant_id | bigint | N | 0 | 租户ID | + +### mobile_search_history (移动端搜索历史表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | bigint | N | AUTO_INCREMENT | 主键 | +| user_id | bigint | N | | 用户ID,关联system_users.id | +| search_keyword | varchar(200) | N | | 搜索关键词 | +| search_type | varchar(50) | N | | 搜索类型:customer、meter、address | +| search_result_count | int | N | 0 | 搜索结果数量 | +| search_time | datetime | N | CURRENT_TIMESTAMP | 搜索时间 | +| device_id | varchar(100) | Y | | 设备ID | +| create_time | datetime | N | CURRENT_TIMESTAMP | 创建时间 | +| update_time | datetime | N | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| creator | varchar(64) | Y | | 创建者 | +| updater | varchar(64) | Y | | 更新者 | +| deleted | tinyint | N | 0 | 是否删除:0-未删除,1-已删除 | +| tenant_id | bigint | N | 0 | 租户ID | + +### mobile_task_sync (移动端任务同步表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | bigint | N | AUTO_INCREMENT | 主键 | +| user_id | bigint | N | | 用户ID,关联system_users.id | +| task_id | bigint | N | | 任务ID,关联biz_meter_book.id | +| sync_status | varchar(20) | N | pending | 同步状态:pending、syncing、completed、failed | +| sync_type | varchar(20) | N | | 同步类型:download、upload | +| data_size | int | N | 0 | 数据大小(字节) | +| sync_progress | decimal(5,2) | N | 0.00 | 同步进度(百分比) | +| error_message | text | Y | | 错误信息 | +| last_sync_time | datetime | Y | | 最后同步时间 | +| retry_count | int | N | 0 | 重试次数 | +| device_id | varchar(100) | Y | | 设备ID | +| create_time | datetime | N | CURRENT_TIMESTAMP | 创建时间 | +| update_time | datetime | N | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| creator | varchar(64) | Y | | 创建者 | +| updater | varchar(64) | Y | | 更新者 | +| deleted | tinyint | N | 0 | 是否删除:0-未删除,1-已删除 | +| tenant_id | bigint | N | 0 | 租户ID | + +### mobile_work_attachment (移动端工单附件表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | bigint | N | AUTO_INCREMENT | 主键 | +| work_order_id | bigint | N | | 工单ID,关联biz_process.id 或 biz_content.id | +| attachment_type | varchar(20) | N | | 附件类型:image、video、document | +| attachment_name | varchar(200) | N | | 附件名称 | +| attachment_path | varchar(500) | N | | 附件存储路径 | +| attachment_size | bigint | N | 0 | 附件大小(字节) | +| mime_type | varchar(100) | Y | | MIME类型 | +| upload_status | varchar(20) | N | pending | 上传状态:pending、uploading、completed、failed | +| upload_progress | decimal(5,2) | N | 0.00 | 上传进度(百分比) | +| gps_longitude | decimal(10,6) | Y | | GPS经度 | +| gps_latitude | decimal(10,6) | Y | | GPS纬度 | +| capture_time | datetime | Y | | 拍摄/录制时间 | +| device_id | varchar(100) | Y | | 设备ID | +| create_time | datetime | N | CURRENT_TIMESTAMP | 创建时间 | +| update_time | datetime | N | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| creator | varchar(64) | Y | | 创建者 | +| updater | varchar(64) | Y | | 更新者 | +| deleted | tinyint | N | 0 | 是否删除:0-未删除,1-已删除 | +| tenant_id | bigint | N | 0 | 租户ID | + +### mobile_app_config (移动端应用配置表) +| 字段名 | 类型 | 是否可空 | 默认值 | 注释 | +| :--- | :--- | :--- | :--- | :--- | +| id | bigint | N | AUTO_INCREMENT | 主键 | +| user_id | bigint | N | | 用户ID,关联system_users.id | +| config_key | varchar(100) | N | | 配置项键名 | +| config_value | text | Y | | 配置项值 | +| config_type | varchar(50) | N | | 配置类型:system、user、app | +| config_description | varchar(500) | Y | | 配置描述 | +| is_active | tinyint | N | 1 | 是否启用:0-禁用,1-启用 | +| device_id | varchar(100) | Y | | 设备ID | +| create_time | datetime | N | CURRENT_TIMESTAMP | 创建时间 | +| update_time | datetime | N | CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | +| creator | varchar(64) | Y | | 创建者 | +| updater | varchar(64) | Y | | 更新者 | +| deleted | tinyint | N | 0 | 是否删除:0-未删除,1-已删除 | +| tenant_id | bigint | N | 0 | 租户ID | + +
+ + +# 移动端表设计优化说明 + +## 设计原则 + +根据系统架构设计原则,移动端优先使用Web端已有的数据表,避免重复建表,确保数据一致性和降低维护成本。 + +## 表复用策略 + +### 复用Web端表(10个) +移动端直接复用以下Web端已有表: + +| 表名 | 用途说明 | 备注 | +|------|----------|------| +| `system_users` | 用户基本信息表 | 复用Web端用户管理 | +| `system_login_log` | 登录日志表 | 扩展设备类型字段记录移动端登录 | +| `biz_cust` | 客户主档表 | 复用 Web 端客户档案 | +| `biz_meter` | 水表主档表 | 复用 Web 端水表档案 | +| `biz_meter_book` | 抄表册本表 | 复用 Web 端抄表任务 | +| `biz_reading_data` | 抄表数据表 | 复用 Web 端抄表数据 | +| `biz_meter_read` | 抄表任务/状态表 | 复用 Web 端抄表过程状态 | +| `biz_process` | 业务办理流程表 | 复用 Web 端现场业务工单/办理数据 | +| `biz_content_attach` | 办理附件表 | 复用 Web 端附件资料 | +| `biz_account` | 客户账户表 | 复用 Web 端账务信息 | + +### 移动端特有表(5个) +仅保留移动端特有的功能表: + +| 表名 | 用途说明 | 特有原因 | +|------|----------|----------| +| `mobile_user_cache` | 移动端用户缓存表 | 用于离线缓存,移动端特有需求 | +| `mobile_search_history` | 移动端搜索历史表 | 移动端搜索记录管理 | +| `mobile_task_sync` | 移动端任务同步表 | 离线任务管理,移动端特有 | +| `mobile_work_attachment` | 移动端工单附件表 | 现场附件管理,移动端特有 | +| `mobile_app_config` | 移动端应用配置表 | 个性化设置,移动端特有 | + +## 优化效果 + +1. **减少冗余**:避免了15+个重复表的创建 +2. **提升一致性**:移动端和Web端共享核心业务数据 +3. **降低维护成本**:统一的数据模型减少维护复杂度 +4. **符合架构原则**:遵循DRY(Don't Repeat Yourself)原则 + +## 数据同步策略 + +- **实时同步**:共用表自然保证数据一致性 +- **离线缓存**:移动端特有表支持离线操作 +- **冲突处理**:通过时间戳和版本控制处理数据冲突 + + +# 视图的设计 + +## 数据库ER图设计 + +### 系统核心表关系图 + +```mermaid +erDiagram + system_tenant ||--o{ system_users : "租户关系" + system_users ||--o{ system_user_role : "用户角色" + system_role ||--o{ system_user_role : "角色用户" + system_role ||--o{ system_role_menu : "角色权限" + system_menu ||--o{ system_role_menu : "菜单权限" + system_dept ||--o{ system_users : "部门用户" + + system_tenant { + int8 id PK + varchar name + varchar contact_name + varchar contact_mobile + int2 status + timestamp expire_time + } + + system_users { + int8 id PK + varchar username + varchar nickname + varchar password + int8 dept_id FK + int8 tenant_id FK + int2 status + } + + system_role { + int8 id PK + varchar name + varchar code + int2 data_scope + int8 tenant_id FK + } + + system_dept { + int8 id PK + varchar name + int8 parent_id + varchar code + int8 tenant_id FK + } + +``` + + +### 业务核心表关系图 + +```mermaid +erDiagram + BIZ_CUST ||--|| BIZ_ACCOUNT : 对应账户 + BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 联系人 + BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定水表 + BIZ_METER ||--o{ BIZ_CUST_METER : 被绑定 + BIZ_METER_BOOK ||--o{ BIZ_METER_READ : 生成任务 + BIZ_METER_READ ||--o{ BIZ_READING_DATA : 采集读数 + BIZ_METER ||--o{ BIZ_LAST_READING : 最新读数 + BIZ_READING_DATA ||--o{ BIZ_CHARGE : 触发开账 + BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 明细拆分 + BIZ_CHARGE ||--o{ BIZ_INVOICE : 开票关联 + BIZ_CHARGE ||--o{ BK_TRANSACTION : 支付核销 + BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_TEMPLATE : 模板归属 + BIZ_PRICE_TEMPLATE ||--o{ BIZ_WATER_USE_SCHEME : 计费方案 + BIZ_PRICE_CATEGORY ||--o{ BIZ_PRICE_COST_ADJUSTMENT : 费用调整 + BIZ_PRICE_COST_ADJUSTMENT ||--o{ BIZ_PRICE_TIER_ADJUSTMENT : 阶梯规则 + BK_WITHHOLDING_BATCH ||--o{ BK_WITHHOLDING_ITEM : 批次明细 + BK_RECONCILE_BATCH ||--o{ BK_RECONCILE_DIFF : 对账差异 + + BIZ_CUST { + int8 id PK + varchar code + varchar name + varchar cust_type + varchar mobile + int8 tenant_id FK + } + + BIZ_ACCOUNT { + int8 id PK + varchar code + int8 cust_id FK + numeric balance + numeric arrears_amount + } + + BIZ_METER { + int8 id PK + varchar code + varchar meter_no + varchar maker_code + varchar model_code + } + + BIZ_CHARGE { + int8 id PK + varchar code + int8 cust_id FK + varchar bill_period + numeric total_amount + int2 charge_status + } + + BK_TRANSACTION { + int8 id PK + varchar trade_no + varchar biz_order_no + varchar channel_code + numeric trade_amount + int2 trade_status + } + +``` + + +## 业务视图设计 + +为简化复杂查询和报表统计,设计以下视图: + +### v_price_info (价格信息视图) +综合展示价格体系信息,包含价格归属、费用组成、调整历史等。 +```sql +CREATE VIEW v_price_info AS +SELECT + pc.id as category_id, + pc.name as category_name, + pc.code as category_code, + cc.name as cost_name, + cc.code as cost_code, + pca.price_value, + pca.effective_date, + pca.expire_date +FROM biz_price_category pc +LEFT JOIN biz_price_cost_adjustment pca ON pc.code = pca.price_category_code +LEFT JOIN biz_cost_component cc ON pca.cost_component_code = cc.code +WHERE pc.deleted = 0 AND pca.deleted = 0 AND cc.deleted = 0; +``` + +### v_meter_info (水表信息视图) +整合水表主档、厂家、型号、口径等基础信息,服务于册本分配、现场抄表和档案查询。 +```sql +CREATE VIEW v_meter_info AS +SELECT + m.id AS meter_id, + m.code AS meter_code, + m.meter_no, + m.maker_code, + maker.name AS maker_name, + m.model_code, + model.name AS model_name, + m.caliber_code, + caliber.name AS caliber_name, + caliber.value AS caliber_value, + m.range_code, + range_cfg.name AS range_name, + m.install_address, + m.meter_status +FROM biz_meter m +LEFT JOIN biz_meter_maker maker ON m.maker_code = maker.code AND maker.deleted = 0 +LEFT JOIN biz_meter_model model ON m.model_code = model.code AND model.deleted = 0 +LEFT JOIN biz_meter_caliber caliber ON m.caliber_code = caliber.code AND caliber.deleted = 0 +LEFT JOIN biz_meter_range range_cfg ON m.range_code = range_cfg.code AND range_cfg.deleted = 0 +WHERE m.deleted = 0; +``` + +### v_dept_hierarchy (部门层级视图) +展示完整的组织架构层级关系。 +```sql +CREATE VIEW v_dept_hierarchy AS +WITH RECURSIVE dept_tree AS ( + SELECT id, name, code, parent_id, 0 as level, name as path + FROM system_dept + WHERE parent_id = 0 AND deleted = 0 + + UNION ALL + + SELECT d.id, d.name, d.code, d.parent_id, dt.level + 1, + CONCAT(dt.path, ' > ', d.name) + FROM system_dept d + INNER JOIN dept_tree dt ON d.parent_id = dt.id + WHERE d.deleted = 0 +) +SELECT * FROM dept_tree; +``` + +## 统计分析视图 + +### v_tenant_summary (租户汇总视图) +按租户维度统计各类数据。 +```sql +CREATE VIEW v_tenant_summary AS +SELECT + t.id as tenant_id, + t.name as tenant_name, + COUNT(DISTINCT u.id) as user_count, + COUNT(DISTINCT d.id) as dept_count, + COUNT(DISTINCT c.id) as community_count +FROM system_tenant t +LEFT JOIN system_users u ON t.id = u.tenant_id AND u.deleted = 0 +LEFT JOIN system_dept d ON t.id = d.tenant_id AND d.deleted = 0 +LEFT JOIN biz_community c ON t.id = c.tenant_id AND c.deleted = 0 +WHERE t.deleted = 0 +GROUP BY t.id, t.name; +``` + +### REV-007 统计承接口径 + +#### 设计定位 + +- `REV-007` 以在线业务主数据聚合、视图或汇总口径支撑经营统计查询,不在本轮确认独立统计仓库、离线批处理表或专题分析表族。 +- 统计结果必须能够追溯到现有客户、账单、收费、交易、抄表和组织维度数据来源。 +- 当前数据库主文档仅约束“统计查询如何承接”,不反推 backend 已存在专门统计模块或已固化全部统计视图。 + +#### 最小统计主题承接口径 + +| 统计主题 | 主数据来源 | 最低维度要求 | 最低指标要求 | 承接方式 | +| :--- | :--- | :--- | :--- | :--- | +| 营收汇总 | `biz_charge`、`biz_charge_detail` | 时间、账期、营业所、客户类别 | 应收金额、账单数、用水量 | 在线聚合 / 汇总口径 | +| 收费与实收统计 | `biz_collection`、`bk_transaction` | 时间、渠道、营业所、收费状态 | 实收金额、收费笔数、成功率 | 在线聚合 / 汇总口径 | +| 欠费规模与账龄统计 | `biz_charge`、`biz_charge_detail` | 账期、账龄、客户类别、区域 | 欠费余额、欠费户数、账龄分布 | 在线聚合 / 汇总口径 | +| 客户结构统计 | `biz_cust`、`biz_account` | 客户类别、区域、状态 | 客户数、账户数、活跃状态分布 | 在线聚合 / 视图口径 | +| 渠道交易统计 | `bk_transaction`、`bk_payment_channel` | 渠道、日期、结果状态 | 交易笔数、交易金额、渠道占比 | 在线聚合 / 汇总口径 | +| 抄表完成率统计 | `biz_meter_book`、`biz_reading_data`、`biz_last_reading` | 抄表周期、册本、片区、人员 | 应抄户数、已抄户数、完成率 | 在线聚合 / 汇总口径 | + +#### 设计约束 + +- 统计查询可以由视图、临时汇总结果或聚合 SQL 承接,但未确认存在的 `stat_*`、`report_*` 或专题报表表不得写成正式已实现对象。 +- 若某类统计仅在历史资料中出现而当前主文档未形成正式口径,应先作为后续专题保留项,不直接扩写为当前正式范围。 +- 涉及历史迁移核查的统计比对时,历史来源只承担补充核对职责,不替代在线主数据统计结果。 +- 导出能力属于查询扩展能力,数据库设计不单独为导出动作臆造新的物理表。 + + +# 索引设计与性能优化 + +## 核心索引设计 + +### 系统表索引 +```sql +-- 用户表核心索引 +CREATE INDEX idx_system_users_username ON system_users(username); +CREATE INDEX idx_system_users_dept_tenant ON system_users(dept_id, tenant_id); +CREATE INDEX idx_system_users_status_tenant ON system_users(status, tenant_id); + +-- 部门表索引 +CREATE INDEX idx_system_dept_parent_tenant ON system_dept(parent_id, tenant_id); +CREATE INDEX idx_system_dept_code ON system_dept(code); + +-- 角色权限索引 +CREATE INDEX idx_system_user_role_user_tenant ON system_user_role(user_id, tenant_id); +CREATE INDEX idx_system_role_menu_role_id ON system_role_menu(role_id); + +-- 日志表索引(支持时间范围查询) +CREATE INDEX idx_system_login_log_user_time ON system_login_log(user_id, create_time); +CREATE INDEX idx_system_login_log_ip_time ON system_login_log(user_ip, create_time); +``` + +### 业务表索引 +```sql +-- 客户主数据索引 +CREATE INDEX idx_biz_cust_code ON biz_cust(code); +CREATE INDEX idx_biz_cust_mobile ON biz_cust(mobile); +CREATE INDEX idx_biz_account_cust_status ON biz_account(cust_id, account_status); + +-- 水表与抄表索引 +CREATE INDEX idx_biz_meter_code ON biz_meter(code); +CREATE INDEX idx_biz_meter_book_dept_status ON biz_meter_book(dept_code, status); +CREATE INDEX idx_biz_meter_read_book_period ON biz_meter_read(book_id, read_period); +CREATE INDEX idx_biz_reading_data_read_time ON biz_reading_data(meter_read_id, read_time); + +-- 开账收费索引 +CREATE INDEX idx_biz_charge_cust_period ON biz_charge(cust_id, bill_period); +CREATE INDEX idx_biz_charge_status_due ON biz_charge(charge_status, due_date); +CREATE INDEX idx_biz_charge_detail_charge_cost ON biz_charge_detail(charge_id, cost_component_code); + +-- 价格体系索引 +CREATE INDEX idx_biz_price_category_code ON biz_price_category(code); +CREATE INDEX idx_biz_price_template_category ON biz_price_template(price_category_code, adjustment_snap_code); +CREATE INDEX idx_biz_price_cost_adj_category_cost ON biz_price_cost_adjustment(price_category_code, cost_component_code); +CREATE INDEX idx_biz_price_tier_adj_cost_tier ON biz_price_tier_adjustment(cost_component_code, tier_level); + +-- 银行代收与对账索引 +CREATE INDEX idx_bk_transaction_trade_no ON bk_transaction(trade_no); +CREATE INDEX idx_bk_transaction_biz_order ON bk_transaction(biz_order_no, trade_status); +CREATE INDEX idx_bk_withholding_batch_date ON bk_withholding_batch(batch_date, batch_status); +CREATE INDEX idx_bk_reconcile_batch_bill_date ON bk_reconcile_batch(bill_date, reconcile_status); +``` + +## 分区表设计 + +### 日志表分区策略 +```sql +-- 登录日志按月分区 +CREATE TABLE system_login_log_partition ( + LIKE system_login_log INCLUDING ALL +) PARTITION BY RANGE (create_time); + +-- 创建月度分区 +CREATE TABLE system_login_log_y2024m01 PARTITION OF system_login_log_partition + FOR VALUES FROM ('2024-01-01') TO ('2024-02-01'); + +CREATE TABLE system_login_log_y2024m02 PARTITION OF system_login_log_partition + FOR VALUES FROM ('2024-02-01') TO ('2024-03-01'); +``` + +### 历史数据分区策略 +```sql +-- 价格调整历史按年分区 +CREATE TABLE biz_price_adjustment_history_partition ( + LIKE biz_price_adjustment_history INCLUDING ALL +) PARTITION BY RANGE (create_time); + +-- 按年度分区 +CREATE TABLE biz_price_adjustment_history_y2024 PARTITION OF biz_price_adjustment_history_partition + FOR VALUES FROM ('2024-01-01') TO ('2025-01-01'); +``` + +## 查询优化建议 + +### 多租户查询优化 +```sql +-- 建议查询模式:始终带上租户ID +SELECT * FROM system_users +WHERE tenant_id = ? AND status = 0 AND dept_id = ?; + +-- 使用覆盖索引减少回表 +CREATE INDEX idx_system_users_cover ON system_users(tenant_id, status, dept_id) +INCLUDE (username, nickname, email); +``` + +### 层级查询优化 +```sql +-- 使用递归CTE查询部门层级 +WITH RECURSIVE dept_tree AS ( + SELECT id, name, parent_id, 1 as level + FROM system_dept + WHERE id = ? AND tenant_id = ? + + UNION ALL + + SELECT d.id, d.name, d.parent_id, dt.level + 1 + FROM system_dept d + INNER JOIN dept_tree dt ON d.parent_id = dt.id + WHERE d.tenant_id = ? AND dt.level < 10 -- 防止无限递归 +) +SELECT * FROM dept_tree; +``` + +## 数据归档策略 + +### 日志数据归档 +- **保留策略**: 在线保留3个月,历史数据转移到归档表 +- **归档周期**: 每月执行一次归档作业 +- **存储方式**: 使用列式存储优化查询性能 + +### 历史数据处理 +```sql +-- 创建归档表 +CREATE TABLE system_login_log_archive ( + LIKE system_login_log INCLUDING ALL +); + +-- 归档脚本示例 +INSERT INTO system_login_log_archive +SELECT * FROM system_login_log +WHERE create_time < CURRENT_DATE - INTERVAL '3 months'; + +DELETE FROM system_login_log +WHERE create_time < CURRENT_DATE - INTERVAL '3 months'; +``` + + +# 安全保密设计 +- **用户认证**: 所有数据库连接均需通过应用层的身份认证,禁止数据库密码在配置文件中明文存储。 +- **权限控制**: 数据库用户权限遵循最小权限原则。应用层根据用户角色(RBAC)动态构建SQL,并通过行级安全(RLS)策略限制数据访问范围。 +- **数据加密**: 对数据库中的密码、密钥等敏感信息,采用BCrypt或SM3等算法进行加密存储。 +- **审计日志**: 启用数据库审计功能,记录所有DDL和DML操作,特别是对敏感数据的访问和修改。 diff --git a/output/01_Detailed_Design.docx b/output/01_Detailed_Design.docx new file mode 100644 index 0000000..6fc7c38 Binary files /dev/null and b/output/01_Detailed_Design.docx differ diff --git a/output/01_Detailed_Design.html b/output/01_Detailed_Design.html new file mode 100644 index 0000000..ef94e4a --- /dev/null +++ b/output/01_Detailed_Design.html @@ -0,0 +1,2050 @@ + + + + + + + + 福建水务营收系统-详细设计说明书 + + + + + +
+

福建水务营收系统-详细设计说明书

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统详细设计说明书

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文件状态:文档密级:公开
【】草稿
【√】修改稿
【】正式发布
当前版本:V1.6
作者:唐伟杰
完成日期:2026-03-10
+

1.1 版本历史

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
日期版本号作者备注
2025-07-01V1.0唐伟杰初版
2025-07-17V1.1唐伟杰补充详细设计内容
2025-08-01V1.2唐伟杰同步更新概要设计中的子系统和模块结构,补充数据库设计章节并统一主要模块逻辑。
2025-08-01V1.3唐伟杰数据库系统口径统一为达梦数据库 8.0+。
2025-08-01V1.4唐伟杰单点登录采用 OAuth2.0 +协议,补充统一认证相关设计。
2026-03-10V1.6唐伟杰将分散的模块设计、数据库设计、接口设计、安全设计、部署设计与报装电子签章设计整合为统一主详设,统一系统名称、章节体系、模块/接口编号及数据库口径,清理重复内容与部署脏片段。
+

1.2 章节导航(精简)

+ +

+

2 前言

+

2.1 编写目的

+

本文档用于指导福建水务营收系统的详细设计、开发实现、联调测试、部署上线及后续运维,是本项目详细设计阶段的统一主说明书。本文档以 +docs/design/02_Detailed_Design/01_Detailed_Design.md +作为唯一主详设文件,吸收模块设计、数据库设计、接口设计、安全设计、部署设计以及报装电子签章专项设计中的可复用内容,形成可直接交付和实施使用的统一版本。

+

2.2 建设背景

+

福建水务营收系统面向集团化、多组织、多渠道的营收业务场景,覆盖客户资料、抄表开账、营业收费、账务处理、表务管理、报装立户、电子签章、客户服务、移动作业、外部支付与政务对接等核心业务。系统建设目标是形成统一平台、统一数据、统一接口、统一安全管控的营收业务支撑体系,满足集团及下属单位的标准化与可扩展管理要求。

+

2.3 设计范围

+

本文档覆盖以下设计内容:

+
    +
  1. 系统总体架构与部署架构设计。
  2. +
  3. 统一平台、营收业务、表务、报装与签章、客户服务渠道等业务模块详细设计。
  4. +
  5. 达梦数据库 8.0+ +口径下的核心数据模型、核心表结构、索引与性能设计。
  6. +
  7. 内部接口、外部接口、安全控制、部署与运维方案。
  8. +
  9. 关键业务流程、模块关系、接口交互与审计留痕要求。
  10. +
+

2.4 术语与缩略语

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
术语/缩略语说明
SSO单点登录
OAuth2.0统一认证授权协议
RBAC基于角色的访问控制模型
DM8达梦数据库 8.0+
API应用程序接口
CA电子认证与电子签章能力
MFA多因素认证
ETL数据抽取、转换、加载
+

2.5 参考资料

+
    +
  1. 《福建水务营收系统概要设计相关文档》
  2. +
  3. docs/design/02_Detailed_Design/02_Module_Traceability_Index.md
  4. +
  5. docs/design/02_Detailed_Design/03_CA_Esignature_Supplement.md
  6. +
  7. docs/design/02_Detailed_Design/11_UP_Detailed.md
  8. +
  9. docs/design/02_Detailed_Design/12_REV_Detailed.md
  10. +
  11. docs/design/02_Detailed_Design/13_CS_Detailed.md
  12. +
  13. docs/design/02_Detailed_Design/14_METER_Detailed.md
  14. +
  15. docs/design/02_Detailed_Design/15_INST_Detailed.md
  16. +
  17. docs/design/03_Technical_Design/01_Database_Design.md
  18. +
  19. docs/design/03_Technical_Design/02_Table_Specs.md(历史命名映射补充)
  20. +
  21. docs/design/03_Technical_Design/03_Interface_Design.md
  22. +
  23. docs/design/03_Technical_Design/04_Security_Design.md
  24. +
  25. docs/design/03_Technical_Design/05_Deployment_Design.md
  26. +
  27. 福建水投相关业务操作手册及需求说明资料
  28. +
  29. docs/design/01_Overview/05_Module_Inventory.md
  30. +
+

+

2.6 模块正文文件索引

+ +

+

3 系统总体设计

+

3.1 总体目标

+

福建水务营收系统总体设计遵循“统一平台、业务协同、数据集中、接口标准、安全可控”的原则,实现以下目标:

+ +

3.2 逻辑架构设计

+
graph TB
+    U1[柜台/客服/管理人员] --> A1[PC管理端]
+    U2[抄表员/表务人员] --> A2[移动作业端]
+    U3[客户用户] --> A3[微信/支付宝/微服务窗]
+    U4[第三方系统] --> A4[外部系统接口]
+
+    subgraph G[接入与网关层]
+        G1[统一门户]
+        G2[API网关]
+        G3[统一认证中心]
+    end
+
+    subgraph B[业务服务层]
+        B1[统一平台服务]
+        B2[营收业务服务]
+        B3[表务管理服务]
+        B4[报装与签章服务]
+        B5[客户服务渠道服务]
+        B6[消息通知与任务调度]
+    end
+
+    subgraph D[数据与支撑层]
+        D1[(达梦数据库 8.0+)]
+        D2[(Redis缓存)]
+        D3[对象存储/文件服务]
+        D4[消息队列]
+        D5[日志审计与监控]
+    end
+
+    A1 --> G1
+    A2 --> G1
+    A3 --> G1
+    A4 --> G2
+    G1 --> G2 --> G3
+    G2 --> B1
+    G2 --> B2
+    G2 --> B3
+    G2 --> B4
+    G2 --> B5
+    B1 --> D1
+    B2 --> D1
+    B3 --> D1
+    B4 --> D1
+    B5 --> D1
+    B2 --> D2
+    B3 --> D2
+    B4 --> D3
+    B5 --> D4
+    B1 --> D5
+    B2 --> D5
+    B3 --> D5
+    B4 --> D5
+    B5 --> D5
+
+

3.2.1 设计说明

+
    +
  1. 统一平台服务提供认证、组织、权限、参数、审计等公共能力。
  2. +
  3. 营收业务服务承担客户、抄表、开账、收费、账务、发票、催缴、统计与业务工单等核心处理。
  4. +
  5. 表务管理服务承担设备档案、表务工单、仓储、物联网集抄对接等处理。
  6. +
  7. 报装与签章服务承担申请受理、现场踏勘、施工验收、合同签署与资料归档。
  8. +
  9. 客户服务渠道服务面向微信、支付宝、微服务窗等客户侧渠道提供查询、缴费、电子发票与业务办理。
  10. +
+

3.3 部署分区设计

+
graph TB
+    INTERNET[互联网/政务外网/合作机构] --> DMZ[DMZ接入区]
+    DMZ --> APP[应用服务区]
+    APP --> DATA[数据服务区]
+    APP --> OPS[管理运维区]
+
+    subgraph DMZ[DMZ接入区]
+        LB[负载均衡/Nginx]
+        WAF[WAF与边界防护]
+        GW[API网关]
+    end
+
+    subgraph APP[应用服务区]
+        APP1[统一平台服务]
+        APP2[营收业务服务]
+        APP3[表务服务]
+        APP4[报装签章服务]
+        APP5[客户渠道服务]
+    end
+
+    subgraph DATA[数据服务区]
+        DBM[(达梦主库)]
+        DBS[(达梦备库/从库)]
+        REDIS[(Redis)]
+        FILE[文件存储]
+    end
+
+    subgraph OPS[管理运维区]
+        MON[监控平台]
+        LOG[日志平台]
+        BAK[备份服务]
+        JUMP[堡垒机/跳板机]
+    end
+
+

3.4 子系统与模块划分

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
子系统说明核心模块
统一平台提供统一认证、组织、权限、参数、审计与监控基础能力UP-001 ~ UP-004
营收业务覆盖客户、抄表、收费、账务、发票、催缴、统计、代收与业务工单REV-001 ~ REV-009
表务管理覆盖水表基础参数、仓储库存、设备档案以及工单和物联网同步等支撑能力METER-001 ~ METER-003
报装与签章覆盖报装流程管理、工程管理、档案管理及其下挂签章归档能力INST-001 ~ INST-003
客户服务模块覆盖账户绑定、信息查询、在线缴费、电子发票、网点服务、业务办理与柜面扫码支付CS-001 ~ CS-007
+

3.4.1 +与架构图模块清单的承接说明

+
    +
  1. 架构图中的模块枚举基线以 +../01_Overview/05_Module_Inventory.md 为准。
  2. +
  3. 当前详细设计采用“业务域正文承接多个架构层模块”的组织方式,不强制为 +MOBILE-*WECHAT-*WORK-* +单独建立平行正式主稿。
  4. +
  5. WECHAT-* 当前按客户服务渠道视角并入 CS-* +体系承接;MOBILE-* +当前作为抄表与表务协同端能力分散承接于营收与表务正文;WORK-* +当前作为工单协同与流程支撑能力在客户服务、表务、报装正文中交叉引用。
  6. +
  7. 若后续需要新增独立正文,必须先确认该模块已具备稳定边界、独立接口和核心数据域,并同步更新概要设计与追溯索引。
  8. +
+

+

4 统一平台详细设计

+

4.1 章节定位

+

为避免主详设与分模块文件重复维护,本章仅保留统一平台模块摘要与入口链接,详细正文统一维护在模块文件中。

+

4.2 模块摘要

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称设计摘要正文链接
UP-001统一认证与单点登录统一身份认证、单点登录、令牌生命周期管理与高敏感二次校验UP-001
UP-002组织用户与权限管理组织、岗位、角色、菜单与数据权限统一管控UP-002
UP-003参数字典与基础配置统一维护字典、价格、地址、渠道和任务参数UP-003
UP-004审计监控与运维支撑操作审计、接口监控、任务追踪与告警通知UP-004
+

4.3 正文入口

+ +

+

5 营收业务详细设计

+

5.1 章节定位

+

本章保留营收业务模块的设计摘要,详细流程、数据域与规则说明统一维护在分模块正文文件中。

+

5.2 模块摘要

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称设计摘要正文链接
REV-001客户资料管理客户主档、账户、联系人、绑定关系等主数据管理REV-001
REV-002抄表开账抄表计划、异常复核、计费与账单生成REV-002
REV-003营业收费多渠道缴费、账单核销与收费凭证管理REV-003
REV-004账务处理调整、退款、冲正、呆坏账等账务修正REV-004
REV-005发票与税务处理发票申请、回写、作废与红冲协同REV-005
REV-006催缴与通知欠费催缴策略、触达与结果回写REV-006
REV-007统计分析营收、收费、欠费、渠道等多维统计REV-007
REV-008代收与银行业务代收代扣、对账、结算与差异处理REV-008
REV-009业务参数配置价格模板、页面配置与规则参数管理REV-009
+

5.3 正文入口

+ +

+

6 客户服务模块详细设计

+

6.1 章节定位

+

本章保留客户服务模块摘要与入口,详细设计内容由分模块正文文件统一承载。

+

6.2 模块摘要

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称设计摘要正文链接
CS-001账户绑定管理渠道账号与客户账户绑定、解绑、默认设置CS-001
CS-002信息查询服务账单、缴费、欠费、用水分析与历史查询CS-002
CS-003在线缴费服务多渠道在线支付下单、回调确认与补单CS-003
CS-004电子发票服务发票申请、查询、下载与推送CS-004
CS-005营业网点服务网点信息、服务范围与办事引导CS-005
CS-006业务办理服务线上办理入口与办理状态流转协同CS-006
CS-007柜面扫码支付柜面二维码收款与收费状态联动CS-007
+

6.3 正文入口

+ +

+

7 表务详细设计

+

7.1 章节定位

+

本章保留表务模块摘要,详细流程与对象说明统一在分模块正文文件维护。

+

7.2 模块摘要

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称设计摘要正文链接
METER-001表务基础管理水表档案、状态与参数基础管理METER-001
METER-002仓库与库存管理入库、出库、退库、报废与库存预警METER-002
METER-003设备档案管理设备主档、状态流转、工单协同与远传同步METER-003
+

7.3 正文入口

+ +

+

8 报装与签章详细设计

+

8.1 章节定位

+

本章保留报装与签章模块摘要,详细流程、CA +集成与异常补偿策略统一维护在分模块正文及 CA 专项补充文档。

+

8.2 模块摘要

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称设计摘要正文链接
INST-001报装流程管理申请受理、踏勘流转与方案编制INST-001
INST-002工程管理施工验收、立户通水与合同签章协同INST-002
INST-003档案管理材料归档、签章回执留存与过程可追溯INST-003
+

8.3 正文入口

+ +

+

9 数据库详细设计

+

9.1 数据库选型与原则

+

系统数据库统一采用达梦数据库 8.0+。数据库设计遵循以下原则:

+
    +
  1. 统一主数据模型,避免多口径重复建模。
  2. +
  3. 面向业务闭环设计客户、水表、账单、缴费、工单、报装、签章等核心对象。
  4. +
  5. 兼顾 OLTP 事务处理与统计查询性能。
  6. +
  7. 支持多单位、多区域的数据隔离与权限过滤。
  8. +
  9. 敏感数据字段满足加密、脱敏和审计要求。
  10. +
+

9.2 数据库逻辑架构

+
graph TB
+    APP[业务应用] --> ORM[数据访问层]
+    APP --> CACHE[Redis缓存]
+    ORM --> MASTER[(达梦主库)]
+    MASTER --> SLAVE[(达梦从库/备库)]
+    MASTER --> FILE[文件与归档索引]
+
+

9.3 核心数据模型

+
erDiagram
+    BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 包含
+    BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定
+    BIZ_CUST ||--|| BIZ_ACCOUNT : 对应
+    BIZ_METER ||--o{ BIZ_READING_DATA : 产生
+    BIZ_READING_DATA ||--|| BIZ_CHARGE : 生成
+    BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 包含
+    BIZ_CHARGE ||--o{ BK_TRANSACTION : 核销
+    BIZ_CUST ||--o{ BIZ_INVOICE : 开票
+    INSTALLATION_APPLY ||--o{ INSTALLATION_CONTRACT : 生成
+    INSTALLATION_CONTRACT ||--o{ INSTALLATION_SIGNATURE : 签署
+    INSTALLATION_CONTRACT ||--o{ INSTALLATION_EVIDENCE : 存证
+
+

9.4 核心数据表设计

+

9.4.1 客户与账户类

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名说明关键字段
biz_cust客户主档表code、name、cust_type、id_no、mobile、address、status
biz_account客户账户表code、cust_id、balance、arrears_amount、status
biz_cust_contact客户联系人表cust_id、name、mobile、contact_type、is_default
biz_cust_app_binds渠道绑定关系表cust_id、app_type、app_user_id、status
biz_cust_invoice客户开票信息表cust_id、invoice_title、tax_no、email、mobile
+

9.4.2 水表与抄表类

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名说明关键字段
biz_meter水表信息表code、meter_no、model_code、caliber_code、status
biz_cust_meter客户与水表关系表cust_id、meter_id、bind_status、bind_time
biz_meter_book抄表册本表code、name、reader_id、cycle_type、status
biz_reading_data抄表数据表meter_id、cust_id、reading_time、current_reading、usage_amount
biz_last_reading上次抄表结果表meter_id、last_reading、last_reading_time
biz_meter_read抄表任务状态表book_id、meter_id、read_status、reader_id
+

9.4.3 账单、收费与发票类

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名说明关键字段
biz_charge营业账主表code、cust_id、record_id、total_amount、charge_status
biz_charge_detail营业账明细表charge_id、cost_component_code、usage_amount、detail_amount
biz_collection托收资料表cust_id、channel_code、collection_status、apply_time
biz_withholding代扣资料表cust_id、agreement_no、withholding_status、sign_time
biz_invoice发票主表code、cust_id、invoice_status、invoice_type、issue_time
biz_invoice_taxrate发票税率表tax_code、tax_name、tax_rate、status
+

9.4.4 银行渠道与交易类

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名说明关键字段
bk_payment_channel支付渠道表channel_code、channel_name、channel_type、status
bk_channel_api_config渠道接口配置表channel_code、api_url、sign_type、status
bk_channel_route_rule渠道路由规则表business_type、channel_code、priority、status
bk_transaction渠道交易流水表trade_no、biz_order_no、channel_code、trade_amount、trade_status
bk_transaction_callback支付回调表trade_no、callback_status、callback_time、payload
bk_transaction_exception渠道异常表trade_no、exception_type、exception_status、remark
bk_withholding_agreement代扣签约表agreement_no、cust_id、bank_code、status
bk_withholding_batch代扣批次表batch_no、batch_date、total_count、status
bk_withholding_item代扣明细表batch_no、cust_id、charge_id、item_status
bk_reconcile_batch对账批次表batch_no、channel_code、reconcile_date、status
bk_reconcile_diff对账差异表batch_no、trade_no、diff_type、diff_amount
bk_settlement_batch结算批次表batch_no、channel_code、settlement_date、status
+

9.4.5 表务与工单类

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名说明关键字段
biz_meter_log表务工单/过程留痕表biz_type、biz_id、operate_user、operate_time、remark
biz_meter_in_out水表出入库主表code、in_out_type、warehouse_id、operate_time、status
biz_meter_in_out_rel出入库关联明细表in_out_id、meter_id、quantity、status
biz_process业务工单主表code、biz_type_code、cust_id、process_status
+

9.4.6 报装与签章类

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名说明关键字段
biz_process报装申请主表code、biz_type_code、cust_id、process_status
biz_process_transfer现场踏勘与流转表process_id、from_user、to_user、transfer_time
installation_contract报装合同表contract_code、installation_id、contract_type、contract_status
installation_signature签章记录表signature_code、contract_id、signer_id、signature_time、signature_status
installation_evidence存证记录表evidence_code、contract_id、evidence_hash、evidence_status
+

9.5 索引与性能设计

+

9.5.1 主要索引策略

+
    +
  1. 唯一索引:客户编号、水表编号、账单编号、缴费编号、合同编号等业务唯一键。
  2. +
  3. 复合索引: +
  4. +
  5. 时间分区:账单、缴费、日志等大表按月或按年管理归档。
  6. +
  7. 热点缓存:参数字典、用户会话、移动端任务、发票状态等进入 +Redis。
  8. +
+

+

10 接口详细设计

+

10.1 接口设计原则

+
    +
  1. 内部接口统一采用 RESTful 风格,JSON 作为主要报文格式。
  2. +
  3. 外部接口根据对接方规范支持 HTTPS API、SFTP 文件交换等方式。
  4. +
  5. 接口编号统一采用 IF-EXT- +前缀,与模块编号区分。
  6. +
  7. 关键交易接口必须支持幂等控制、签名校验、失败重试与调用日志。
  8. +
+

10.2 统一平台接口

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方协议
IF-UP-001用户登录接口用户登录并获取访问令牌PC端/移动端/渠道端HTTPS REST
IF-UP-002用户信息接口获取当前登录用户上下文各业务系统HTTPS REST
IF-UP-003权限校验接口校验菜单、按钮和数据权限各业务模块HTTPS REST
IF-UP-004参数字典接口获取字典与业务参数各业务模块HTTPS REST
+

10.3 营收业务接口

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方协议
IF-REV-001客户信息查询接口查询客户档案、账户状态、联系人与水表绑定关系柜台/客户渠道/工单HTTPS REST
IF-REV-004抄表数据提交接口提交人工或远传抄表数据并触发校验抄表APP/集抄系统HTTPS REST
IF-REV-005账单生成接口根据抄表结果、水价模板和费用组成生成账单开账任务HTTPS REST
IF-REV-006缴费处理接口创建收费记录并核销账单柜台/线上渠道HTTPS REST
IF-REV-007账务调整接口发起金额调整、退款、冲正、坏账等业务处理财务/营业人员HTTPS REST
IF-REV-008发票申请接口发起开票申请并接收票据状态回写柜台/客户渠道HTTPS REST
IF-REV-009催缴任务接口生成催缴名单并提交消息触达请求营收系统/消息服务HTTPS REST
IF-REV-010统计查询接口查询营收、收费、欠费、渠道、客户统计结果管理后台/统计分析端HTTPS REST
IF-REV-011银行代收协同接口发起代扣、回盘、对账、结算协同银行代收模块/SYS-009HTTPS REST / 文件交换
IF-REV-012业务参数配置接口查询和维护价格模板、优惠方案、业务参数配置管理后台/参数管理端HTTPS REST
+

10.4 表务与物联网接口

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方协议
IF-METER-001水表档案查询接口查询水表与生命周期信息表务/营收/报装HTTPS REST
IF-METER-002表务工单处理接口提交换表、移表等结果移动作业端HTTPS REST
IF-METER-003库存出入库接口处理领用、退库、报废仓储管理端HTTPS REST
IF-METER-004集抄数据接收接口接收远程抄表数据物联网平台HTTPS REST
+

10.5 报装与签章接口

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方协议
IF-INST-001报装申请提交接口提交报装申请与附件柜台/微网厅/政务平台HTTPS REST
IF-INST-002踏勘结果回填接口回填现场踏勘结果报装人员HTTPS REST
IF-INST-003合同签署发起接口创建签章任务报装系统HTTPS REST
IF-INST-004签章回执接口回写签章结果和存证信息CA系统/报装系统HTTPS REST
IF-INST-005报装归档接口归档申请、合同和验收资料报装系统HTTPS REST
+

10.6 客户渠道接口

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方协议
IF-CS-001账户绑定接口绑定或解绑客户账户微信/支付宝/微网厅HTTPS REST
IF-CS-002历史账单查询接口查询账单、欠费、用水趋势客户端HTTPS REST
IF-CS-003在线支付下单接口创建微信/支付宝支付订单客户端HTTPS REST
IF-CS-004发票申请接口提交电子发票申请客户端HTTPS REST
IF-CS-005网点与业务办理接口查询网点、提交业务办理客户端HTTPS REST
IF-CS-006业务办理进度接口查询业务办理和工单进度客户端HTTPS REST
IF-CS-007柜面扫码支付接口创建柜面扫码支付订单并回写结果柜台终端/营业前台HTTPS REST
+

10.7 外部系统接口

+

10.7.1 金融支付接口

+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述协议输入参数输出结果
EXT-001银行代扣接口批量代扣水费HTTPS/SFTP客户信息、账单金额、代扣日期扣款结果
EXT-101微信支付统一下单创建微信支付订单HTTPS订单信息、金额预支付信息
EXT-201支付宝统一收单创建支付宝支付订单HTTPS订单信息、金额支付结果
+

10.7.2 税务与消息接口

+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述协议输入参数输出结果
EXT-301短信发送接口发送催缴或通知短信HTTPS手机号、模板、参数发送结果
EXT-401邮件发送接口发送电子发票或通知邮件HTTPS邮箱、主题、内容发送结果
EXT-501电子发票开具接口税控平台开票HTTPS发票信息、税率发票结果
+

10.7.3 物联网、政务与签章接口

+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述协议输入参数输出结果
EXT-601水表数据采集接口获取远程抄表数据HTTPS水表编号、时间范围抄表数据
EXT-701政务数据汇聚接口向政务平台推送业务数据HTTPS业务数据、统计数据推送结果
EXT-801环卫收费对接接口同步污水费/环卫收费数据HTTPS收费数据同步结果
EXT-901客服工单创建接口与客服系统同步工单HTTPS工单信息工单编号
EXT-1001消火栓控制接口控制取水权限与设备状态HTTPS设备信息、控制指令控制结果
EXT-CA-001身份认证接口验证合同签署方身份HTTPS REST用户信息、认证方式认证结果
EXT-CA-002电子签章接口执行电子签章HTTPS REST文档内容、签章位置签章结果
EXT-CA-003时间戳接口申请签署时间戳HTTPS REST文档哈希时间戳凭证
EXT-CA-004电子存证接口存储签署后合同HTTPS REST签署文档、元数据存证凭证
+

+

11 安全详细设计

+

11.1 安全目标与分层防护

+

系统安全设计遵循机密性、完整性、可用性、可审计性原则,采用边界安全、应用安全、数据安全、运维安全四层防护模式。

+
graph TB
+    T[外部威胁] --> N[边界安全]
+    N --> A[应用安全]
+    A --> D[数据安全]
+    D --> O[运维安全]
+    O --> C[核心业务资产]
+
+

11.2 身份认证与访问控制

+
    +
  1. 采用 OAuth2.0 + JWT 统一认证。
  2. +
  3. 高风险操作支持 MFA 二次认证。
  4. +
  5. 基于 RBAC 的菜单、按钮、数据权限控制。
  6. +
  7. 管理端、移动端、客户端、外部系统按不同安全域实施权限隔离。
  8. +
+

11.3 数据安全与隐私保护

+
    +
  1. 核心数据库统一为达梦数据库 8.0+,关键数据按要求启用加密存储。
  2. +
  3. 身份证号、手机号、银行账户等敏感字段按角色脱敏展示。
  4. +
  5. 文件、合同、签章凭证、验收附件统一归档并控制访问权限。
  6. +
  7. 备份数据加密存储,支持异地容灾保管。
  8. +
+

11.4 接口安全与审计追踪

+ +

11.5 安全运营与应急响应

+
    +
  1. 建立暴力破解、异常访问、接口失败、支付异常、签章异常等监控规则。
  2. +
  3. 按 P0~P3 级别定义安全事件处置流程。
  4. +
  5. 定期进行漏洞扫描、补丁更新、备份恢复演练和权限审计。
  6. +
+

+

12 部署与运维设计

+

12.1 部署总体方案

+

系统采用集中部署模式,生产环境分为接入区、应用区、数据区、运维管理区,支持主备容灾与横向扩展。

+
graph TB
+    U[外部访问] --> LB[负载均衡/Nginx]
+    LB --> APP1[应用节点1]
+    LB --> APP2[应用节点2]
+    LB --> APP3[应用节点3]
+    APP1 --> DB[(达梦主库)]
+    APP2 --> DB
+    APP3 --> DB
+    DB --> DBS[(达梦备库/从库)]
+    APP1 --> REDIS[(Redis)]
+    APP1 --> FILE[对象存储]
+    APP1 --> MON[监控与日志平台]
+
+

12.2 环境规划

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
环境用途说明
开发环境开发联调功能开发、单元验证
测试环境集成测试接口联调、业务测试、性能测试
预生产环境上线前验证模拟生产配置,进行发布演练
生产环境正式运行双机或多节点高可用部署
+

12.3 网络与分区设计

+
    +
  1. DMZ 区部署负载均衡、WAF、网关等对外接入组件。
  2. +
  3. 应用区部署统一平台、营收、表务、报装、客户渠道等应用节点。
  4. +
  5. 数据区部署达梦数据库、Redis、对象存储与备份服务。
  6. +
  7. 管理区部署堡垒机、日志平台、监控平台和运维工具。
  8. +
+

12.4 监控告警与日志

+

12.4.1 监控指标

+ + + + + + + + + + + + + + + + + + + + + + + + + +
类别监控项
主机监控CPU、内存、磁盘、网络
应用监控QPS、响应时间、错误率、线程池
数据库监控连接数、慢 SQL、锁等待、主备同步
业务监控开账量、收费量、退款量、签章成功率
+

12.4.2 日志分类

+ +

12.5 备份恢复与发布管理

+
    +
  1. 数据库执行每日增量、每周全量备份。
  2. +
  3. 关键文件、合同、电子发票、签章凭证同步纳入备份。
  4. +
  5. 发布采用版本化管理,执行发布审批、健康检查、回滚预案。
  6. +
  7. 对支付、签章、银行代扣等关键链路执行灰度验证前置检查,但生产方案不保留脚本碎片或临时配置片段。
  8. +
+

+

13 附录

+

13.1 附录A 模块编号说明

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
前缀模块域
UP统一平台
REV营收业务
METER表务管理
INST报装与签章
CS客户服务与渠道
+

13.2 附录B 接口编号说明

+ + + + + + + + + + + + + + + + + + + + + +
前缀说明
IF-UP / IF-REV / IF-CS / IF-METER / IF-INST系统内部标准接口
IF-EXT对外系统接口
EXT-CA历史资料中的电子签章专项外部接口编号(存量引用)
+

13.3 附录C 设计约束与统一口径

+
    +
  1. 系统名称统一为“福建水务营收系统”。
  2. +
  3. 数据库口径统一为“达梦数据库 8.0+”。
  4. +
  5. 模块编号统一采用 UP/REV/METER/INST/CS-001 风格。
  6. +
  7. 接口编号统一采用 +IF-UP/IF-REV/IF-CS/IF-METER/IF-INST/IF-EXT-001 风格,历史 +EXT-* 仅用于存量资料引用。
  8. +
  9. 本文档为唯一主详设文件,其他专项文档作为历史参考与内容来源,不再作为并行主文件使用。
  10. +
+ + diff --git a/output/01_Detailed_Design.pdf b/output/01_Detailed_Design.pdf new file mode 100644 index 0000000..ba7fcd3 Binary files /dev/null and b/output/01_Detailed_Design.pdf differ diff --git a/output/01_Detailed_Design_processed.md b/output/01_Detailed_Design_processed.md new file mode 100644 index 0000000..236cf37 --- /dev/null +++ b/output/01_Detailed_Design_processed.md @@ -0,0 +1,752 @@ +--- +title: "01_Detailed_Design" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-01-DETAIL +doc_role: master_document +authority: primary +scope: 详细设计 +source_of_truth: true +last_reviewed: 2026-03-11 +retrieval_priority: P0 +--- + +# 福建水务营收系统详细设计说明书 + +| 文件状态: | 文档密级: | 公开 | +| :--- | :--- | :--- | +| 【】草稿 | | | +| 【√】修改稿 | | | +| 【】正式发布 | | | +| | **当前版本:** | **V1.6** | +| | **作者:** | **唐伟杰** | +| | **完成日期:** | **2026-03-10** | + +## 版本历史 + +| 日期 | 版本号 | 作者 | 备注 | +| :--- | :--- | :--- | :--- | +| 2025-07-01 | V1.0 | 唐伟杰 | 初版 | +| 2025-07-17 | V1.1 | 唐伟杰 | 补充详细设计内容 | +| 2025-08-01 | V1.2 | 唐伟杰 | 同步更新概要设计中的子系统和模块结构,补充数据库设计章节并统一主要模块逻辑。 | +| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统口径统一为达梦数据库 8.0+。 | +| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用 OAuth2.0 协议,补充统一认证相关设计。 | +| 2026-03-10 | V1.6 | 唐伟杰 | 将分散的模块设计、数据库设计、接口设计、安全设计、部署设计与报装电子签章设计整合为统一主详设,统一系统名称、章节体系、模块/接口编号及数据库口径,清理重复内容与部署脏片段。 | + +## 章节导航(精简) + +- [前言](#sec-preface) +- [系统总体设计](#sec-overall-design) +- [详细模块设计](#sec-module-detail) + - [统一平台详细设计](#sec-platform-detail) + - [营收业务详细设计](#sec-revenue-detail) + - [客户服务模块详细设计](#sec-customer-detail) + - [表务详细设计](#sec-meter-detail) + - [报装与签章详细设计](#sec-installation-detail) +- [数据库详细设计](#sec-database-detail) +- [接口详细设计](#sec-interface-detail) +- [安全详细设计](#sec-security-detail) +- [部署与运维设计](#sec-deployment-detail) +- [附录](#sec-appendix) +- [模块正文文件索引](#sec-module-files) + + + +# 前言 + +## 编写目的 + +本文档用于指导福建水务营收系统的详细设计、开发实现、联调测试、部署上线及后续运维,是本项目详细设计阶段的统一主说明书。本文档以 `docs/design/02_Detailed_Design/01_Detailed_Design.md` 作为唯一主详设文件,吸收模块设计、数据库设计、接口设计、安全设计、部署设计以及报装电子签章专项设计中的可复用内容,形成可直接交付和实施使用的统一版本。 + +## 建设背景 + +福建水务营收系统面向集团化、多组织、多渠道的营收业务场景,覆盖客户资料、抄表开账、营业收费、账务处理、表务管理、报装立户、电子签章、客户服务、移动作业、外部支付与政务对接等核心业务。系统建设目标是形成统一平台、统一数据、统一接口、统一安全管控的营收业务支撑体系,满足集团及下属单位的标准化与可扩展管理要求。 + +## 设计范围 + +本文档覆盖以下设计内容: + +1. 系统总体架构与部署架构设计。 +2. 统一平台、营收业务、表务、报装与签章、客户服务渠道等业务模块详细设计。 +3. 达梦数据库 8.0+ 口径下的核心数据模型、核心表结构、索引与性能设计。 +4. 内部接口、外部接口、安全控制、部署与运维方案。 +5. 关键业务流程、模块关系、接口交互与审计留痕要求。 + +## 术语与缩略语 + +| 术语/缩略语 | 说明 | +|---|---| +| SSO | 单点登录 | +| OAuth2.0 | 统一认证授权协议 | +| RBAC | 基于角色的访问控制模型 | +| DM8 | 达梦数据库 8.0+ | +| API | 应用程序接口 | +| CA | 电子认证与电子签章能力 | +| MFA | 多因素认证 | +| ETL | 数据抽取、转换、加载 | + +## 参考资料 + +1. 《福建水务营收系统概要设计相关文档》 +2. `docs/design/02_Detailed_Design/02_Module_Traceability_Index.md` +3. `docs/design/02_Detailed_Design/03_CA_Esignature_Supplement.md` +4. `docs/design/02_Detailed_Design/11_UP_Detailed.md` +5. `docs/design/02_Detailed_Design/12_REV_Detailed.md` +6. `docs/design/02_Detailed_Design/13_CS_Detailed.md` +7. `docs/design/02_Detailed_Design/14_METER_Detailed.md` +8. `docs/design/02_Detailed_Design/15_INST_Detailed.md` +9. `docs/design/03_Technical_Design/01_Database_Design.md` +10. `docs/design/03_Technical_Design/02_Table_Specs.md`(历史命名映射补充) +11. `docs/design/03_Technical_Design/03_Interface_Design.md` +12. `docs/design/03_Technical_Design/04_Security_Design.md` +13. `docs/design/03_Technical_Design/05_Deployment_Design.md` +14. 福建水投相关业务操作手册及需求说明资料 +15. `docs/design/01_Overview/05_Module_Inventory.md` + + + +## 模块正文文件索引 + +- 总体层模块清单与承接映射:`docs/design/01_Overview/05_Module_Inventory.md` +- 统一平台模块正文:`docs/design/02_Detailed_Design/11_UP_Detailed.md` +- 营收业务模块正文:`docs/design/02_Detailed_Design/12_REV_Detailed.md` +- 客户服务模块正文:`docs/design/02_Detailed_Design/13_CS_Detailed.md` +- 表务模块正文:`docs/design/02_Detailed_Design/14_METER_Detailed.md` +- 报装与签章模块正文:`docs/design/02_Detailed_Design/15_INST_Detailed.md` + + + +# 系统总体设计 + +## 总体目标 + +福建水务营收系统总体设计遵循“统一平台、业务协同、数据集中、接口标准、安全可控”的原则,实现以下目标: + +- 建立统一认证、统一组织、统一权限、统一参数、统一审计基础能力。 +- 构建覆盖营收、表务、报装、客户服务的完整业务闭环。 +- 形成达梦数据库 8.0+ 为核心的数据架构,支撑集团化数据管理与查询分析。 +- 通过标准化接口接入银行、第三方支付、短信、税控、物联网、政务、CA 签章等外部系统。 +- 满足生产部署、容灾备份、日志审计与安全监管要求。 + +## 逻辑架构设计 + + +```mermaid +graph TB + U1[柜台/客服/管理人员] --> A1[PC管理端] + U2[抄表员/表务人员] --> A2[移动作业端] + U3[客户用户] --> A3[微信/支付宝/微服务窗] + U4[第三方系统] --> A4[外部系统接口] + + subgraph G[接入与网关层] + G1[统一门户] + G2[API网关] + G3[统一认证中心] + end + + subgraph B[业务服务层] + B1[统一平台服务] + B2[营收业务服务] + B3[表务管理服务] + B4[报装与签章服务] + B5[客户服务渠道服务] + B6[消息通知与任务调度] + end + + subgraph D[数据与支撑层] + D1[(达梦数据库 8.0+)] + D2[(Redis缓存)] + D3[对象存储/文件服务] + D4[消息队列] + D5[日志审计与监控] + end + + A1 --> G1 + A2 --> G1 + A3 --> G1 + A4 --> G2 + G1 --> G2 --> G3 + G2 --> B1 + G2 --> B2 + G2 --> B3 + G2 --> B4 + G2 --> B5 + B1 --> D1 + B2 --> D1 + B3 --> D1 + B4 --> D1 + B5 --> D1 + B2 --> D2 + B3 --> D2 + B4 --> D3 + B5 --> D4 + B1 --> D5 + B2 --> D5 + B3 --> D5 + B4 --> D5 + B5 --> D5 + +``` + + +### 设计说明 + +1. 统一平台服务提供认证、组织、权限、参数、审计等公共能力。 +2. 营收业务服务承担客户、抄表、开账、收费、账务、发票、催缴、统计与业务工单等核心处理。 +3. 表务管理服务承担设备档案、表务工单、仓储、物联网集抄对接等处理。 +4. 报装与签章服务承担申请受理、现场踏勘、施工验收、合同签署与资料归档。 +5. 客户服务渠道服务面向微信、支付宝、微服务窗等客户侧渠道提供查询、缴费、电子发票与业务办理。 + +## 部署分区设计 + + +```mermaid +graph TB + INTERNET[互联网/政务外网/合作机构] --> DMZ[DMZ接入区] + DMZ --> APP[应用服务区] + APP --> DATA[数据服务区] + APP --> OPS[管理运维区] + + subgraph DMZ[DMZ接入区] + LB[负载均衡/Nginx] + WAF[WAF与边界防护] + GW[API网关] + end + + subgraph APP[应用服务区] + APP1[统一平台服务] + APP2[营收业务服务] + APP3[表务服务] + APP4[报装签章服务] + APP5[客户渠道服务] + end + + subgraph DATA[数据服务区] + DBM[(达梦主库)] + DBS[(达梦备库/从库)] + REDIS[(Redis)] + FILE[文件存储] + end + + subgraph OPS[管理运维区] + MON[监控平台] + LOG[日志平台] + BAK[备份服务] + JUMP[堡垒机/跳板机] + end + +``` + + +## 子系统与模块划分 + +| 子系统 | 说明 | 核心模块 | +|---|---|---| +| 统一平台 | 提供统一认证、组织、权限、参数、审计与监控基础能力 | UP-001 ~ UP-004 | +| 营收业务 | 覆盖客户、抄表、收费、账务、发票、催缴、统计、代收与业务工单 | REV-001 ~ REV-009 | +| 表务管理 | 覆盖水表基础参数、仓储库存、设备档案以及工单和物联网同步等支撑能力 | METER-001 ~ METER-003 | +| 报装与签章 | 覆盖报装流程管理、工程管理、档案管理及其下挂签章归档能力 | INST-001 ~ INST-003 | +| 客户服务模块 | 覆盖账户绑定、信息查询、在线缴费、电子发票、网点服务、业务办理与柜面扫码支付 | CS-001 ~ CS-007 | + +### 与架构图模块清单的承接说明 + +1. 架构图中的模块枚举基线以 `../01_Overview/05_Module_Inventory.md` 为准。 +2. 当前详细设计采用“业务域正文承接多个架构层模块”的组织方式,不强制为 `MOBILE-*`、`WECHAT-*`、`WORK-*` 单独建立平行正式主稿。 +3. `WECHAT-*` 当前按客户服务渠道视角并入 `CS-*` 体系承接;`MOBILE-*` 当前作为抄表与表务协同端能力分散承接于营收与表务正文;`WORK-*` 当前作为工单协同与流程支撑能力在客户服务、表务、报装正文中交叉引用。 +4. 若后续需要新增独立正文,必须先确认该模块已具备稳定边界、独立接口和核心数据域,并同步更新概要设计与追溯索引。 + + + + +# 统一平台详细设计 + +## 章节定位 + +为避免主详设与分模块文件重复维护,本章仅保留统一平台模块摘要与入口链接,详细正文统一维护在模块文件中。 + +## 模块摘要 + +| 模块编号 | 模块名称 | 设计摘要 | 正文链接 | +|---|---|---|---| +| `UP-001` | 统一认证与单点登录 | 统一身份认证、单点登录、令牌生命周期管理与高敏感二次校验 | [UP-001](./11_UP_Detailed.md#mod-up-001) | +| `UP-002` | 组织用户与权限管理 | 组织、岗位、角色、菜单与数据权限统一管控 | [UP-002](./11_UP_Detailed.md#mod-up-002) | +| `UP-003` | 参数字典与基础配置 | 统一维护字典、价格、地址、渠道和任务参数 | [UP-003](./11_UP_Detailed.md#mod-up-003) | +| `UP-004` | 审计监控与运维支撑 | 操作审计、接口监控、任务追踪与告警通知 | [UP-004](./11_UP_Detailed.md#mod-up-004) | + +## 正文入口 + +- [统一平台模块正文](./11_UP_Detailed.md#sec-content) + + + +# 营收业务详细设计 + +## 章节定位 + +本章保留营收业务模块的设计摘要,详细流程、数据域与规则说明统一维护在分模块正文文件中。 + +## 模块摘要 + +| 模块编号 | 模块名称 | 设计摘要 | 正文链接 | +|---|---|---|---| +| `REV-001` | 客户资料管理 | 客户主档、账户、联系人、绑定关系等主数据管理 | [REV-001](./12_REV_Detailed.md#mod-rev-001) | +| `REV-002` | 抄表开账 | 抄表计划、异常复核、计费与账单生成 | [REV-002](./12_REV_Detailed.md#mod-rev-002) | +| `REV-003` | 营业收费 | 多渠道缴费、账单核销与收费凭证管理 | [REV-003](./12_REV_Detailed.md#mod-rev-003) | +| `REV-004` | 账务处理 | 调整、退款、冲正、呆坏账等账务修正 | [REV-004](./12_REV_Detailed.md#mod-rev-004) | +| `REV-005` | 发票与税务处理 | 发票申请、回写、作废与红冲协同 | [REV-005](./12_REV_Detailed.md#mod-rev-005) | +| `REV-006` | 催缴与通知 | 欠费催缴策略、触达与结果回写 | [REV-006](./12_REV_Detailed.md#mod-rev-006) | +| `REV-007` | 统计分析 | 营收、收费、欠费、渠道等多维统计 | [REV-007](./12_REV_Detailed.md#mod-rev-007) | +| `REV-008` | 代收与银行业务 | 代收代扣、对账、结算与差异处理 | [REV-008](./12_REV_Detailed.md#mod-rev-008) | +| `REV-009` | 业务参数配置 | 价格模板、页面配置与规则参数管理 | [REV-009](./12_REV_Detailed.md#mod-rev-009) | + +## 正文入口 + +- [营收业务模块正文](./12_REV_Detailed.md#sec-content) + + + +# 客户服务模块详细设计 + +## 章节定位 + +本章保留客户服务模块摘要与入口,详细设计内容由分模块正文文件统一承载。 + +## 模块摘要 + +| 模块编号 | 模块名称 | 设计摘要 | 正文链接 | +|---|---|---|---| +| `CS-001` | 账户绑定管理 | 渠道账号与客户账户绑定、解绑、默认设置 | [CS-001](./13_CS_Detailed.md#mod-cs-001) | +| `CS-002` | 信息查询服务 | 账单、缴费、欠费、用水分析与历史查询 | [CS-002](./13_CS_Detailed.md#mod-cs-002) | +| `CS-003` | 在线缴费服务 | 多渠道在线支付下单、回调确认与补单 | [CS-003](./13_CS_Detailed.md#mod-cs-003) | +| `CS-004` | 电子发票服务 | 发票申请、查询、下载与推送 | [CS-004](./13_CS_Detailed.md#mod-cs-004) | +| `CS-005` | 营业网点服务 | 网点信息、服务范围与办事引导 | [CS-005](./13_CS_Detailed.md#mod-cs-005) | +| `CS-006` | 业务办理服务 | 线上办理入口与办理状态流转协同 | [CS-006](./13_CS_Detailed.md#mod-cs-006) | +| `CS-007` | 柜面扫码支付 | 柜面二维码收款与收费状态联动 | [CS-007](./13_CS_Detailed.md#mod-cs-007) | + +## 正文入口 + +- [客户服务模块正文](./13_CS_Detailed.md#sec-content) + + + +# 表务详细设计 + +## 章节定位 + +本章保留表务模块摘要,详细流程与对象说明统一在分模块正文文件维护。 + +## 模块摘要 + +| 模块编号 | 模块名称 | 设计摘要 | 正文链接 | +|---|---|---|---| +| `METER-001` | 表务基础管理 | 水表档案、状态与参数基础管理 | [METER-001](./14_METER_Detailed.md#mod-meter-001) | +| `METER-002` | 仓库与库存管理 | 入库、出库、退库、报废与库存预警 | [METER-002](./14_METER_Detailed.md#mod-meter-002) | +| `METER-003` | 设备档案管理 | 设备主档、状态流转、工单协同与远传同步 | [METER-003](./14_METER_Detailed.md#mod-meter-003) | + +## 正文入口 + +- [表务模块正文](./14_METER_Detailed.md#sec-content) + + + +# 报装与签章详细设计 + +## 章节定位 + +本章保留报装与签章模块摘要,详细流程、CA 集成与异常补偿策略统一维护在分模块正文及 CA 专项补充文档。 + +## 模块摘要 + +| 模块编号 | 模块名称 | 设计摘要 | 正文链接 | +|---|---|---|---| +| `INST-001` | 报装流程管理 | 申请受理、踏勘流转与方案编制 | [INST-001](./15_INST_Detailed.md#mod-inst-001) | +| `INST-002` | 工程管理 | 施工验收、立户通水与合同签章协同 | [INST-002](./15_INST_Detailed.md#mod-inst-003) | +| `INST-003` | 档案管理 | 材料归档、签章回执留存与过程可追溯 | [INST-003](./15_INST_Detailed.md#mod-inst-005) | + +## 正文入口 + +- [报装与签章模块正文](./15_INST_Detailed.md#sec-content) +- [报装 CA 电子签章专项补充](./03_CA_Esignature_Supplement.md#sec-position) + + + +# 数据库详细设计 + +## 数据库选型与原则 + +系统数据库统一采用达梦数据库 8.0+。数据库设计遵循以下原则: + +1. 统一主数据模型,避免多口径重复建模。 +2. 面向业务闭环设计客户、水表、账单、缴费、工单、报装、签章等核心对象。 +3. 兼顾 OLTP 事务处理与统计查询性能。 +4. 支持多单位、多区域的数据隔离与权限过滤。 +5. 敏感数据字段满足加密、脱敏和审计要求。 + +## 数据库逻辑架构 + + +```mermaid +graph TB + APP[业务应用] --> ORM[数据访问层] + APP --> CACHE[Redis缓存] + ORM --> MASTER[(达梦主库)] + MASTER --> SLAVE[(达梦从库/备库)] + MASTER --> FILE[文件与归档索引] + +``` + + +## 核心数据模型 + + +```mermaid +erDiagram + BIZ_CUST ||--o{ BIZ_CUST_CONTACT : 包含 + BIZ_CUST ||--o{ BIZ_CUST_METER : 绑定 + BIZ_CUST ||--|| BIZ_ACCOUNT : 对应 + BIZ_METER ||--o{ BIZ_READING_DATA : 产生 + BIZ_READING_DATA ||--|| BIZ_CHARGE : 生成 + BIZ_CHARGE ||--o{ BIZ_CHARGE_DETAIL : 包含 + BIZ_CHARGE ||--o{ BK_TRANSACTION : 核销 + BIZ_CUST ||--o{ BIZ_INVOICE : 开票 + INSTALLATION_APPLY ||--o{ INSTALLATION_CONTRACT : 生成 + INSTALLATION_CONTRACT ||--o{ INSTALLATION_SIGNATURE : 签署 + INSTALLATION_CONTRACT ||--o{ INSTALLATION_EVIDENCE : 存证 + +``` + + +## 核心数据表设计 + +### 客户与账户类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_cust` | 客户主档表 | code、name、cust_type、id_no、mobile、address、status | +| `biz_account` | 客户账户表 | code、cust_id、balance、arrears_amount、status | +| `biz_cust_contact` | 客户联系人表 | cust_id、name、mobile、contact_type、is_default | +| `biz_cust_app_binds` | 渠道绑定关系表 | cust_id、app_type、app_user_id、status | +| `biz_cust_invoice` | 客户开票信息表 | cust_id、invoice_title、tax_no、email、mobile | + +### 水表与抄表类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_meter` | 水表信息表 | code、meter_no、model_code、caliber_code、status | +| `biz_cust_meter` | 客户与水表关系表 | cust_id、meter_id、bind_status、bind_time | +| `biz_meter_book` | 抄表册本表 | code、name、reader_id、cycle_type、status | +| `biz_reading_data` | 抄表数据表 | meter_id、cust_id、reading_time、current_reading、usage_amount | +| `biz_last_reading` | 上次抄表结果表 | meter_id、last_reading、last_reading_time | +| `biz_meter_read` | 抄表任务状态表 | book_id、meter_id、read_status、reader_id | + +### 账单、收费与发票类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_charge` | 营业账主表 | code、cust_id、record_id、total_amount、charge_status | +| `biz_charge_detail` | 营业账明细表 | charge_id、cost_component_code、usage_amount、detail_amount | +| `biz_collection` | 托收资料表 | cust_id、channel_code、collection_status、apply_time | +| `biz_withholding` | 代扣资料表 | cust_id、agreement_no、withholding_status、sign_time | +| `biz_invoice` | 发票主表 | code、cust_id、invoice_status、invoice_type、issue_time | +| `biz_invoice_taxrate` | 发票税率表 | tax_code、tax_name、tax_rate、status | + +### 银行渠道与交易类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `bk_payment_channel` | 支付渠道表 | channel_code、channel_name、channel_type、status | +| `bk_channel_api_config` | 渠道接口配置表 | channel_code、api_url、sign_type、status | +| `bk_channel_route_rule` | 渠道路由规则表 | business_type、channel_code、priority、status | +| `bk_transaction` | 渠道交易流水表 | trade_no、biz_order_no、channel_code、trade_amount、trade_status | +| `bk_transaction_callback` | 支付回调表 | trade_no、callback_status、callback_time、payload | +| `bk_transaction_exception` | 渠道异常表 | trade_no、exception_type、exception_status、remark | +| `bk_withholding_agreement` | 代扣签约表 | agreement_no、cust_id、bank_code、status | +| `bk_withholding_batch` | 代扣批次表 | batch_no、batch_date、total_count、status | +| `bk_withholding_item` | 代扣明细表 | batch_no、cust_id、charge_id、item_status | +| `bk_reconcile_batch` | 对账批次表 | batch_no、channel_code、reconcile_date、status | +| `bk_reconcile_diff` | 对账差异表 | batch_no、trade_no、diff_type、diff_amount | +| `bk_settlement_batch` | 结算批次表 | batch_no、channel_code、settlement_date、status | + +### 表务与工单类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_meter_log` | 表务工单/过程留痕表 | biz_type、biz_id、operate_user、operate_time、remark | +| `biz_meter_in_out` | 水表出入库主表 | code、in_out_type、warehouse_id、operate_time、status | +| `biz_meter_in_out_rel` | 出入库关联明细表 | in_out_id、meter_id、quantity、status | +| `biz_process` | 业务工单主表 | code、biz_type_code、cust_id、process_status | + +### 报装与签章类 + +| 表名 | 说明 | 关键字段 | +|---|---|---| +| `biz_process` | 报装申请主表 | code、biz_type_code、cust_id、process_status | +| `biz_process_transfer` | 现场踏勘与流转表 | process_id、from_user、to_user、transfer_time | +| `installation_contract` | 报装合同表 | contract_code、installation_id、contract_type、contract_status | +| `installation_signature` | 签章记录表 | signature_code、contract_id、signer_id、signature_time、signature_status | +| `installation_evidence` | 存证记录表 | evidence_code、contract_id、evidence_hash、evidence_status | + +## 索引与性能设计 + +### 主要索引策略 + +1. 唯一索引:客户编号、水表编号、账单编号、缴费编号、合同编号等业务唯一键。 +2. 复合索引: + - 客户查询:`(customer_type, status)` + - 账单查询:`(customer_id, bill_month, bill_status)` + - 抄表查询:`(meter_id, reading_date)` + - 缴费查询:`(customer_id, payment_time)` +3. 时间分区:账单、缴费、日志等大表按月或按年管理归档。 +4. 热点缓存:参数字典、用户会话、移动端任务、发票状态等进入 Redis。 + + + +# 接口详细设计 + +## 接口设计原则 + +1. 内部接口统一采用 RESTful 风格,JSON 作为主要报文格式。 +2. 外部接口根据对接方规范支持 HTTPS API、SFTP 文件交换等方式。 +3. 接口编号统一采用 `IF-` 或 `EXT-` 前缀,与模块编号区分。 +4. 关键交易接口必须支持幂等控制、签名校验、失败重试与调用日志。 + +## 统一平台接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-UP-001 | 用户登录接口 | 用户登录并获取访问令牌 | PC端/移动端/渠道端 | HTTPS REST | +| IF-UP-002 | 用户信息接口 | 获取当前登录用户上下文 | 各业务系统 | HTTPS REST | +| IF-UP-003 | 权限校验接口 | 校验菜单、按钮和数据权限 | 各业务模块 | HTTPS REST | +| IF-UP-004 | 参数字典接口 | 获取字典与业务参数 | 各业务模块 | HTTPS REST | + +## 营收业务接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-REV-001 | 客户信息查询接口 | 查询客户档案、账户状态、联系人与水表绑定关系 | 柜台/客户渠道/工单 | HTTPS REST | +| IF-REV-004 | 抄表数据提交接口 | 提交人工或远传抄表数据并触发校验 | 抄表APP/集抄系统 | HTTPS REST | +| IF-REV-005 | 账单生成接口 | 根据抄表结果、水价模板和费用组成生成账单 | 开账任务 | HTTPS REST | +| IF-REV-006 | 缴费处理接口 | 创建收费记录并核销账单 | 柜台/线上渠道 | HTTPS REST | +| IF-REV-007 | 账务调整接口 | 发起金额调整、退款、冲正、坏账等业务处理 | 财务/营业人员 | HTTPS REST | +| IF-REV-008 | 发票申请接口 | 发起开票申请并接收票据状态回写 | 柜台/客户渠道 | HTTPS REST | +| IF-REV-009 | 催缴任务接口 | 生成催缴名单并提交消息触达请求 | 营收系统/消息服务 | HTTPS REST | +| IF-REV-010 | 统计查询接口 | 查询营收、收费、欠费、渠道、客户统计结果 | 管理后台/统计分析端 | HTTPS REST | +| IF-REV-011 | 银行代收协同接口 | 发起代扣、回盘、对账、结算协同 | 银行代收模块/SYS-009 | HTTPS REST / 文件交换 | +| IF-REV-012 | 业务参数配置接口 | 查询和维护价格模板、优惠方案、业务参数配置 | 管理后台/参数管理端 | HTTPS REST | + +## 表务与物联网接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-METER-001 | 水表档案查询接口 | 查询水表与生命周期信息 | 表务/营收/报装 | HTTPS REST | +| IF-METER-002 | 表务工单处理接口 | 提交换表、移表等结果 | 移动作业端 | HTTPS REST | +| IF-METER-003 | 库存出入库接口 | 处理领用、退库、报废 | 仓储管理端 | HTTPS REST | +| IF-METER-004 | 集抄数据接收接口 | 接收远程抄表数据 | 物联网平台 | HTTPS REST | + +## 报装与签章接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-INST-001 | 报装申请提交接口 | 提交报装申请与附件 | 柜台/微网厅/政务平台 | HTTPS REST | +| IF-INST-002 | 踏勘结果回填接口 | 回填现场踏勘结果 | 报装人员 | HTTPS REST | +| IF-INST-003 | 合同签署发起接口 | 创建签章任务 | 报装系统 | HTTPS REST | +| IF-INST-004 | 签章回执接口 | 回写签章结果和存证信息 | CA系统/报装系统 | HTTPS REST | +| IF-INST-005 | 报装归档接口 | 归档申请、合同和验收资料 | 报装系统 | HTTPS REST | + +## 客户渠道接口 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 协议 | +|---|---|---|---|---| +| IF-CS-001 | 账户绑定接口 | 绑定或解绑客户账户 | 微信/支付宝/微网厅 | HTTPS REST | +| IF-CS-002 | 历史账单查询接口 | 查询账单、欠费、用水趋势 | 客户端 | HTTPS REST | +| IF-CS-003 | 在线支付下单接口 | 创建微信/支付宝支付订单 | 客户端 | HTTPS REST | +| IF-CS-004 | 发票申请接口 | 提交电子发票申请 | 客户端 | HTTPS REST | +| IF-CS-005 | 网点与业务办理接口 | 查询网点、提交业务办理 | 客户端 | HTTPS REST | +| IF-CS-006 | 业务办理进度接口 | 查询业务办理和工单进度 | 客户端 | HTTPS REST | +| IF-CS-007 | 柜面扫码支付接口 | 创建柜面扫码支付订单并回写结果 | 柜台终端/营业前台 | HTTPS REST | + +## 外部系统接口 + +### 金融支付接口 + +| 接口编号 | 接口名称 | 功能描述 | 协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---| +| EXT-001 | 银行代扣接口 | 批量代扣水费 | HTTPS/SFTP | 客户信息、账单金额、代扣日期 | 扣款结果 | +| EXT-101 | 微信支付统一下单 | 创建微信支付订单 | HTTPS | 订单信息、金额 | 预支付信息 | +| EXT-201 | 支付宝统一收单 | 创建支付宝支付订单 | HTTPS | 订单信息、金额 | 支付结果 | + +### 税务与消息接口 + +| 接口编号 | 接口名称 | 功能描述 | 协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---| +| EXT-301 | 短信发送接口 | 发送催缴或通知短信 | HTTPS | 手机号、模板、参数 | 发送结果 | +| EXT-401 | 邮件发送接口 | 发送电子发票或通知邮件 | HTTPS | 邮箱、主题、内容 | 发送结果 | +| EXT-501 | 电子发票开具接口 | 税控平台开票 | HTTPS | 发票信息、税率 | 发票结果 | + +### 物联网、政务与签章接口 + +| 接口编号 | 接口名称 | 功能描述 | 协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---| +| EXT-601 | 水表数据采集接口 | 获取远程抄表数据 | HTTPS | 水表编号、时间范围 | 抄表数据 | +| EXT-701 | 政务数据汇聚接口 | 向政务平台推送业务数据 | HTTPS | 业务数据、统计数据 | 推送结果 | +| EXT-801 | 环卫收费对接接口 | 同步污水费/环卫收费数据 | HTTPS | 收费数据 | 同步结果 | +| EXT-901 | 客服工单创建接口 | 与客服系统同步工单 | HTTPS | 工单信息 | 工单编号 | +| EXT-1001 | 消火栓控制接口 | 控制取水权限与设备状态 | HTTPS | 设备信息、控制指令 | 控制结果 | +| EXT-CA-001 | 身份认证接口 | 验证合同签署方身份 | HTTPS REST | 用户信息、认证方式 | 认证结果 | +| EXT-CA-002 | 电子签章接口 | 执行电子签章 | HTTPS REST | 文档内容、签章位置 | 签章结果 | +| EXT-CA-003 | 时间戳接口 | 申请签署时间戳 | HTTPS REST | 文档哈希 | 时间戳凭证 | +| EXT-CA-004 | 电子存证接口 | 存储签署后合同 | HTTPS REST | 签署文档、元数据 | 存证凭证 | + + + +# 安全详细设计 + +## 安全目标与分层防护 + +系统安全设计遵循机密性、完整性、可用性、可审计性原则,采用边界安全、应用安全、数据安全、运维安全四层防护模式。 + + +```mermaid +graph TB + T[外部威胁] --> N[边界安全] + N --> A[应用安全] + A --> D[数据安全] + D --> O[运维安全] + O --> C[核心业务资产] + +``` + + +## 身份认证与访问控制 + +1. 采用 OAuth2.0 + JWT 统一认证。 +2. 高风险操作支持 MFA 二次认证。 +3. 基于 RBAC 的菜单、按钮、数据权限控制。 +4. 管理端、移动端、客户端、外部系统按不同安全域实施权限隔离。 + +## 数据安全与隐私保护 + +1. 核心数据库统一为达梦数据库 8.0+,关键数据按要求启用加密存储。 +2. 身份证号、手机号、银行账户等敏感字段按角色脱敏展示。 +3. 文件、合同、签章凭证、验收附件统一归档并控制访问权限。 +4. 备份数据加密存储,支持异地容灾保管。 + +## 接口安全与审计追踪 + +- 所有外部接口采用 HTTPS 加密传输。 +- 关键接口支持签名、时间戳、随机数防重放。 +- 支付、退款、签章、账务调整等交易型接口必须具备幂等控制。 +- 统一记录调用时间、调用方、请求摘要、响应结果、异常码与处理人。 + +## 安全运营与应急响应 + +1. 建立暴力破解、异常访问、接口失败、支付异常、签章异常等监控规则。 +2. 按 P0~P3 级别定义安全事件处置流程。 +3. 定期进行漏洞扫描、补丁更新、备份恢复演练和权限审计。 + + + +# 部署与运维设计 + +## 部署总体方案 + +系统采用集中部署模式,生产环境分为接入区、应用区、数据区、运维管理区,支持主备容灾与横向扩展。 + + +```mermaid +graph TB + U[外部访问] --> LB[负载均衡/Nginx] + LB --> APP1[应用节点1] + LB --> APP2[应用节点2] + LB --> APP3[应用节点3] + APP1 --> DB[(达梦主库)] + APP2 --> DB + APP3 --> DB + DB --> DBS[(达梦备库/从库)] + APP1 --> REDIS[(Redis)] + APP1 --> FILE[对象存储] + APP1 --> MON[监控与日志平台] + +``` + + +## 环境规划 + +| 环境 | 用途 | 说明 | +|---|---|---| +| 开发环境 | 开发联调 | 功能开发、单元验证 | +| 测试环境 | 集成测试 | 接口联调、业务测试、性能测试 | +| 预生产环境 | 上线前验证 | 模拟生产配置,进行发布演练 | +| 生产环境 | 正式运行 | 双机或多节点高可用部署 | + +## 网络与分区设计 + +1. DMZ 区部署负载均衡、WAF、网关等对外接入组件。 +2. 应用区部署统一平台、营收、表务、报装、客户渠道等应用节点。 +3. 数据区部署达梦数据库、Redis、对象存储与备份服务。 +4. 管理区部署堡垒机、日志平台、监控平台和运维工具。 + +## 监控告警与日志 + +### 监控指标 + +| 类别 | 监控项 | +|---|---| +| 主机监控 | CPU、内存、磁盘、网络 | +| 应用监控 | QPS、响应时间、错误率、线程池 | +| 数据库监控 | 连接数、慢 SQL、锁等待、主备同步 | +| 业务监控 | 开账量、收费量、退款量、签章成功率 | + +### 日志分类 + +- 操作日志 +- 登录日志 +- 接口调用日志 +- 任务执行日志 +- 安全审计日志 +- 外部系统对接日志 + +## 备份恢复与发布管理 + +1. 数据库执行每日增量、每周全量备份。 +2. 关键文件、合同、电子发票、签章凭证同步纳入备份。 +3. 发布采用版本化管理,执行发布审批、健康检查、回滚预案。 +4. 对支付、签章、银行代扣等关键链路执行灰度验证前置检查,但生产方案不保留脚本碎片或临时配置片段。 + + + +# 附录 + +## 附录A 模块编号说明 + +| 前缀 | 模块域 | +|---|---| +| UP | 统一平台 | +| REV | 营收业务 | +| METER | 表务管理 | +| INST | 报装与签章 | +| CS | 客户服务与渠道 | + +## 附录B 接口编号说明 + +| 前缀 | 说明 | +|---|---| +| IF-UP / IF-REV / IF-CS / IF-METER / IF-INST | 系统内部标准接口 | +| IF-EXT | 对外系统接口 | +| EXT-CA | 历史资料中的电子签章专项外部接口编号(存量引用) | + +## 附录C 设计约束与统一口径 + +1. 系统名称统一为“福建水务营收系统”。 +2. 数据库口径统一为“达梦数据库 8.0+”。 +3. 模块编号统一采用 `UP/REV/METER/INST/CS-001` 风格。 +4. 接口编号统一采用 `IF-UP/IF-REV/IF-CS/IF-METER/IF-INST/IF-EXT-001` 风格,历史 `EXT-*` 仅用于存量资料引用。 +5. 本文档为唯一主详设文件,其他专项文档作为历史参考与内容来源,不再作为并行主文件使用。 diff --git a/output/01_System_Overview.docx b/output/01_System_Overview.docx new file mode 100644 index 0000000..b71970c Binary files /dev/null and b/output/01_System_Overview.docx differ diff --git a/output/01_System_Overview.html b/output/01_System_Overview.html new file mode 100644 index 0000000..1d9930f --- /dev/null +++ b/output/01_System_Overview.html @@ -0,0 +1,298 @@ + + + + + + + + 福建水务营收系统-系统概述 + + + + + +
+

福建水务营收系统-系统概述

+

系统设计团队

+

2024年12月19日

+
+ +

1 福建水务营收系统系统概述

+

1.1 1. 文档定位

+

本文档用于说明福建水务营收系统的建设背景、目标、范围边界、涉众角色与基础术语,作为总体设计层的导览入口。
+详细的模块设计、接口定义、数据结构与部署实现,以主文档和专项文档为准,不在本文重复展开。

+

1.2 2. 项目背景与建设目标

+

1.2.1 2.1 项目背景

+

福建水务营收系统面向水务企业营收管理与客户服务全流程,覆盖抄表、开账、收费、账务、工单、表务、报装与渠道服务。
+项目目标是将分散业务统一到可评审、可交付、可持续维护的体系下,支撑集团化与多组织协同。

+

1.2.2 2.2 建设目标

+ +

1.3 3. 系统范围与边界

+

1.3.1 3.1 范围内

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
分类范围说明
平台能力统一认证、权限、租户、组织、参数、监控
核心业务客户资料、抄表开账、营业收费、账务处理、发票、催缴、统计
业务子系统手机抄表 APP、微网厅、工单管理、表务管理、报装业务
基础服务发票服务、支付与银行结算、消息服务
外部集成银行、第三方支付、短信/邮件/站内信、物联网、CA 能力
+

1.3.2 3.2 范围外

+ + + + + + + + + + + + + + + + + + + + + +
分类说明
代码实现细节具体类设计、SQL、接口字段定义
运维脚本实现启停脚本、部署脚本、监控规则细项
测试用例细节测试步骤、断言口径、执行结果
+

1.4 4. 涉众与角色

+ + + + + + + + + + + + + + + + + + + + + + + + + +
角色关注重点
项目管理与评审人员范围边界、建设目标、交付范围
架构与开发人员子系统职责、总体边界、协同关系
测试与运维人员系统分层、部署原则、安全与可运维约束
甲方技术人员交付口径一致性、可追溯性、后续维护可行性
+

1.5 5. 术语与缩略语(概要层)

+

1.5.1 5.1 业务术语

+ + + + + + + + + + + + + + + + + + + + + + + + + +
术语说明
营收业务系统(SYS-002)核心营收业务承载子系统
微网厅(SYS-004)面向外部客户服务的线上渠道
表务管理(SYS-006)水表设备与库存相关管理域
报装业务(SYS-007)新装/改装/流程办理相关业务域
+

1.5.2 5.2 技术术语

+ + + + + + + + + + + + + + + + + + + + + + + + + +
术语说明
SSO单点登录能力
RBAC基于角色的访问控制
OAuth2.0 + CAS统一认证与单点登录协议组合
IF- 编号接口编号前缀,用于与模块编号区分
+

1.6 6. 关联文档

+

1.6.1 6.1 本目录文档

+ +

1.6.2 6.2 跨目录主文档

+ +

1.6.3 6.3 对齐与核对资料

+ +

1.7 7. 阅读路径建议

+
    +
  1. 先阅读 03_Summary_Design.md,建立统一口径。
  2. +
  3. 再阅读 +02_System_Architecture.md,理解总体边界和架构原则。
  4. +
  5. 对照 04_System_Diagrams.md,核对图文一致性。
  6. +
  7. 按需进入详细设计、数据库和接口主文档。
  8. +
+

1.8 8. 维护要求

+ + + diff --git a/output/01_System_Overview.pdf b/output/01_System_Overview.pdf new file mode 100644 index 0000000..12e0d3f Binary files /dev/null and b/output/01_System_Overview.pdf differ diff --git a/output/01_System_Overview_processed.md b/output/01_System_Overview_processed.md new file mode 100644 index 0000000..f8ecae0 --- /dev/null +++ b/output/01_System_Overview_processed.md @@ -0,0 +1,128 @@ +--- +title: "01_System_Overview" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: HL-01-OVERVIEW +doc_role: supporting_document +authority: supporting +scope: 总体设计-系统概述 +source_of_truth: false +last_reviewed: 2026-03-11 +retrieval_priority: P1 +--- + +# 福建水务营收系统系统概述 + +## 1. 文档定位 + +本文档用于说明福建水务营收系统的建设背景、目标、范围边界、涉众角色与基础术语,作为总体设计层的导览入口。 +详细的模块设计、接口定义、数据结构与部署实现,以主文档和专项文档为准,不在本文重复展开。 + +## 2. 项目背景与建设目标 + +### 2.1 项目背景 + +福建水务营收系统面向水务企业营收管理与客户服务全流程,覆盖抄表、开账、收费、账务、工单、表务、报装与渠道服务。 +项目目标是将分散业务统一到可评审、可交付、可持续维护的体系下,支撑集团化与多组织协同。 + +### 2.2 建设目标 + +- 建立统一平台能力,支撑认证、权限、组织、参数、租户与审计监控。 +- 建立营收业务主链路,覆盖客户、计量、收费、账务与客服服务。 +- 建立独立业务子系统,支撑移动抄表、工单、表务与报装场景。 +- 建立基础服务子系统,统一发票、支付结算、消息能力。 +- 满足安全合规、国产化适配与持续交付要求。 + +## 3. 系统范围与边界 + +### 3.1 范围内 + +| 分类 | 范围说明 | +| --- | --- | +| 平台能力 | 统一认证、权限、租户、组织、参数、监控 | +| 核心业务 | 客户资料、抄表开账、营业收费、账务处理、发票、催缴、统计 | +| 业务子系统 | 手机抄表 APP、微网厅、工单管理、表务管理、报装业务 | +| 基础服务 | 发票服务、支付与银行结算、消息服务 | +| 外部集成 | 银行、第三方支付、短信/邮件/站内信、物联网、CA 能力 | + +### 3.2 范围外 + +| 分类 | 说明 | +| --- | --- | +| 代码实现细节 | 具体类设计、SQL、接口字段定义 | +| 运维脚本实现 | 启停脚本、部署脚本、监控规则细项 | +| 测试用例细节 | 测试步骤、断言口径、执行结果 | + +## 4. 涉众与角色 + +| 角色 | 关注重点 | +| --- | --- | +| 项目管理与评审人员 | 范围边界、建设目标、交付范围 | +| 架构与开发人员 | 子系统职责、总体边界、协同关系 | +| 测试与运维人员 | 系统分层、部署原则、安全与可运维约束 | +| 甲方技术人员 | 交付口径一致性、可追溯性、后续维护可行性 | + +## 5. 术语与缩略语(概要层) + +### 5.1 业务术语 + +| 术语 | 说明 | +| --- | --- | +| 营收业务系统(SYS-002) | 核心营收业务承载子系统 | +| 微网厅(SYS-004) | 面向外部客户服务的线上渠道 | +| 表务管理(SYS-006) | 水表设备与库存相关管理域 | +| 报装业务(SYS-007) | 新装/改装/流程办理相关业务域 | + +### 5.2 技术术语 + +| 术语 | 说明 | +| --- | --- | +| SSO | 单点登录能力 | +| RBAC | 基于角色的访问控制 | +| OAuth2.0 + CAS | 统一认证与单点登录协议组合 | +| IF- 编号 | 接口编号前缀,用于与模块编号区分 | + +## 6. 关联文档 + +### 6.1 本目录文档 + +- 系统架构说明:`02_System_Architecture.md` +- 概要设计主文档(单一真源):`03_Summary_Design.md` +- 总体图谱文档:`04_System_Diagrams.md` + +### 6.2 跨目录主文档 + +- 详细设计主文档:`../02_Detailed_Design/01_Detailed_Design.md` +- 数据库设计主文档:`../03_Technical_Design/01_Database_Design.md` +- 接口设计主文档:`../03_Technical_Design/03_Interface_Design.md` +- 安全设计主文档:`../03_Technical_Design/04_Security_Design.md` +- 部署设计主文档:`../03_Technical_Design/05_Deployment_Design.md` + +### 6.3 对齐与核对资料 + +- 后端现状:`../../guides/BACKEND_CURRENT_STATUS.md` +- 后端表映射:`../../guides/BACKEND_TABLE_MAPPING.md` +- 历史资料归档:`../04_Appendix/Archive/` + +## 7. 阅读路径建议 + +1. 先阅读 `03_Summary_Design.md`,建立统一口径。 +2. 再阅读 `02_System_Architecture.md`,理解总体边界和架构原则。 +3. 对照 `04_System_Diagrams.md`,核对图文一致性。 +4. 按需进入详细设计、数据库和接口主文档。 + +## 8. 维护要求 + +- 本文档仅维护“概述级”信息,不引入实现细节。 +- 出现与 `03_Summary_Design.md` 不一致时,以主文档为准并及时修正。 +- 修改后至少执行: + - `make validate-file FILE=docs/design/01_Overview/01_System_Overview.md` + - `make check-links` diff --git a/output/02_Module_Traceability_Index.docx b/output/02_Module_Traceability_Index.docx new file mode 100644 index 0000000..4d54bec Binary files /dev/null and b/output/02_Module_Traceability_Index.docx differ diff --git a/output/02_Module_Traceability_Index.html b/output/02_Module_Traceability_Index.html new file mode 100644 index 0000000..87a743c --- /dev/null +++ b/output/02_Module_Traceability_Index.html @@ -0,0 +1,479 @@ + + + + + + + + 福建水务营收系统-模块追溯索引 + + + + + +
+

福建水务营收系统-模块追溯索引

+

系统设计团队

+

2024年12月19日

+
+ +

1 福建水务营收系统模块追溯索引

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位

+

本文档用于提供“模块编号 → 主详设章节 → 关键接口 → +关键数据域”的统一检索入口,服务于:

+
    +
  1. 需求评审与影响范围分析;
  2. +
  3. 开发联调阶段的问题定位;
  4. +
  5. AI Agent 检索时的快速跳转。
  6. +
+

边界说明:

+ +

+

1.3 追溯使用规则

+
    +
  1. 先按模块编号定位至主详设章节,再查看接口与数据域映射;
  2. +
  3. 发现模块描述与接口/数据口径冲突时,以主详设为第一参照,并同步修订技术专项文档;
  4. +
  5. 本文档仅保留“可追溯最小必要信息”,不重复搬运完整设计正文;
  6. +
  7. 基础服务子系统(SYS-008/009/010)在详细设计层按接口协同描述,不在此索引中虚增平行模块。
  8. +
  9. 架构图层面的完整模块枚举以 +../01_Overview/05_Module_Inventory.md +为核对入口;本索引只保留当前详细设计实际承接的模块与必要映射说明。
  10. +
+

+

1.4 子系统级追溯矩阵

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
子系统/能力域模块范围模块正文定位主要技术专题
统一平台UP-001 ~ UP-004统一平台模块正文接口设计安全设计
营收业务REV-001 ~ REV-009营收业务模块正文数据库设计接口设计
客户服务CS-001 ~ CS-007客户服务模块正文接口设计安全设计
表务管理METER-001 ~ METER-003表务模块正文数据库设计接口设计
报装与签章INST-001 ~ INST-003报装与签章模块正文CA 补充说明安全设计
+

1.5 架构图模块承接映射

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
架构图对象当前详设承接方式说明
UP-001 ~ UP-00511_UP_Detailed.mdUP-005 当前并入统一平台运维支撑能力表达
REV-001 ~ REV-00912_REV_Detailed.md与营收业务主链路一一对齐
CS-001 ~ CS-00713_CS_Detailed.md与客户服务正文一一对齐
WECHAT-001 ~ WECHAT-00813_CS_Detailed.md当前作为渠道侧映射,不单独拆出微网厅平行详设
MOBILE-001 ~ MOBILE-00612_REV_Detailed.md + +14_METER_Detailed.md当前作为移动抄表 / 现场作业协同能力承接
WORK-001 ~ WORK-004协同承接当前在客户服务、表务、报装正文中按工单 / 流程支撑能力引用
架构图 METER-001 ~ METER-00314_METER_Detailed.md当前详设已修正为与架构图一致的三段式编号,多余内容改为子能力章节
架构图 INST-001 ~ INST-00315_INST_Detailed.md当前详设已修正为与架构图一致的三段式编号,多余内容改为子能力章节
SYS-008/009/010接口与协同承接当前不在详细设计目录新增平行主稿,主要在概要、接口和相关业务正文中描述
+

+

1.6 模块级追溯矩阵

+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称模块正文定位关键数据域(摘要)关键接口编号(摘要)主要协同对象
UP-001统一认证与单点登录章节用户、令牌、登录日志IF-UP-001IF-UP-002各接入端、统一平台
UP-002组织用户与权限管理章节组织、岗位、角色、权限IF-UP-003各业务模块
UP-003参数字典与基础配置章节字典、价格、地址、任务参数IF-UP-004营收、表务、报装
UP-004审计监控与运维支撑章节操作日志、接口日志、任务日志IF-UP-003(审计关联)运维平台、消息服务
REV-001客户资料管理章节客户、账户、联系人、绑定关系IF-REV-001客户服务、表务、报装
REV-002抄表开账章节抄表任务、读数、账单主明细IF-REV-004IF-REV-005抄表APP、IoT、表务
REV-003营业收费章节营业账、交易流水、回调记录IF-REV-006SYS-009 支付结算
REV-004账务处理章节账单调整、日志、审批留痕IF-REV-007财务、营收后台
REV-005发票与税务处理章节发票主记录、税率、开票信息IF-REV-008SYS-008 发票服务
REV-006催缴与通知章节欠费账单、催缴结果IF-REV-009SYS-010 消息服务
REV-007统计分析章节客户、抄表、收费、渠道聚合IF-REV-010报表与管理端
REV-008代收与银行业务章节渠道、签约、批次、对账、结算IF-REV-011银行、SYS-009
REV-009业务参数配置章节参数配置、页面配置、价格模板IF-REV-012统一平台、营收模块
CS-001账户绑定管理章节渠道绑定、客户账户IF-CS-001微信、支付宝、微网厅
CS-002信息查询服务章节账单、缴费、发票、流水IF-CS-002客户渠道、营收系统
CS-003在线缴费服务章节订单、交易、回调IF-CS-003SYS-009 支付结算
CS-004电子发票服务章节发票申请、税率、下载记录IF-CS-004SYS-008 发票服务
CS-005营业网点服务章节网点信息、业务范围IF-CS-005客户渠道
CS-006业务办理服务章节办理申请、办理状态IF-CS-006工单系统、消息服务
CS-007柜面扫码支付章节柜面订单、流水、核销状态IF-CS-007营业厅、SYS-009
METER-001表务基础管理章节基础参数、水表主档、状态IF-METER-001营收、报装
METER-002仓库与库存管理章节库存、出入库、退库、报废IF-METER-003仓储管理端
METER-003设备档案管理章节设备档案、工单留痕、远程同步IF-METER-001IF-METER-002IF-METER-004工单系统、移动作业、IoT 平台
INST-001报装流程管理章节申请单、资料附件、踏勘方案IF-INST-001IF-INST-002柜台、微网厅、政务、报装人员
INST-002工程管理章节施工节点、验收结果、签章协同IF-INST-003IF-INST-004IF-INST-005表务、客户建档、泛微 CA
INST-003档案管理章节档案、回执、过程日志IF-INST-005报装、档案管理
+

+

1.7 维护机制

+

更新本索引时遵循以下顺序:

+
    +
  1. 先更新 01_Detailed_Design.md 中模块主内容;
  2. +
  3. 再同步本索引中的“模块定位/接口编号/数据域摘要”;
  4. +
  5. 如涉及接口变化,同步更新 +03_Technical_Design/03_Interface_Design.md
  6. +
  7. 完成后至少执行: +
  8. +
+ + diff --git a/output/02_Module_Traceability_Index.pdf b/output/02_Module_Traceability_Index.pdf new file mode 100644 index 0000000..7b9c035 Binary files /dev/null and b/output/02_Module_Traceability_Index.pdf differ diff --git a/output/02_Module_Traceability_Index_processed.md b/output/02_Module_Traceability_Index_processed.md new file mode 100644 index 0000000..29b0525 --- /dev/null +++ b/output/02_Module_Traceability_Index_processed.md @@ -0,0 +1,131 @@ +--- +title: "02_Module_Traceability_Index" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-02-TRACE +doc_role: support_document +authority: secondary +scope: 详细设计追溯索引 +source_of_truth: false +last_reviewed: 2026-03-11 +retrieval_priority: P1 +--- + +# 福建水务营收系统模块追溯索引 + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [追溯使用规则](#sec-rules) +- [子系统级追溯矩阵](#sec-subsystem-matrix) +- [模块级追溯矩阵](#sec-module-matrix) +- [维护机制](#sec-maintenance) + + + +## 文档定位 + +本文档用于提供“模块编号 → 主详设章节 → 关键接口 → 关键数据域”的统一检索入口,服务于: + +1. 需求评审与影响范围分析; +2. 开发联调阶段的问题定位; +3. AI Agent 检索时的快速跳转。 + +边界说明: + +- 本文档是追溯索引,不替代主详设内容; +- 详细设计权威口径以 `01_Detailed_Design.md` 为准; +- 模块正文承载于 `11_UP_Detailed.md`、`12_REV_Detailed.md`、`13_CS_Detailed.md`、`14_METER_Detailed.md`、`15_INST_Detailed.md`; +- 数据表字段定义以 `03_Technical_Design/01_Database_Design.md` 为主,`03_Technical_Design/02_Table_Specs.md` 仅用于历史映射补充; +- 接口参数细项以 `03_Technical_Design/03_Interface_Design.md` 为准。 + + + +## 追溯使用规则 + +1. 先按模块编号定位至主详设章节,再查看接口与数据域映射; +2. 发现模块描述与接口/数据口径冲突时,以主详设为第一参照,并同步修订技术专项文档; +3. 本文档仅保留“可追溯最小必要信息”,不重复搬运完整设计正文; +4. 基础服务子系统(SYS-008/009/010)在详细设计层按接口协同描述,不在此索引中虚增平行模块。 +5. 架构图层面的完整模块枚举以 `../01_Overview/05_Module_Inventory.md` 为核对入口;本索引只保留当前详细设计实际承接的模块与必要映射说明。 + + + +## 子系统级追溯矩阵 + +| 子系统/能力域 | 模块范围 | 模块正文定位 | 主要技术专题 | +|---|---|---|---| +| 统一平台 | `UP-001 ~ UP-004` | [统一平台模块正文](./11_UP_Detailed.md#sec-content) | [接口设计](../03_Technical_Design/03_Interface_Design.md)、[安全设计](../03_Technical_Design/04_Security_Design.md) | +| 营收业务 | `REV-001 ~ REV-009` | [营收业务模块正文](./12_REV_Detailed.md#sec-content) | [数据库设计](../03_Technical_Design/01_Database_Design.md)、[接口设计](../03_Technical_Design/03_Interface_Design.md) | +| 客户服务 | `CS-001 ~ CS-007` | [客户服务模块正文](./13_CS_Detailed.md#sec-content) | [接口设计](../03_Technical_Design/03_Interface_Design.md)、[安全设计](../03_Technical_Design/04_Security_Design.md) | +| 表务管理 | `METER-001 ~ METER-003` | [表务模块正文](./14_METER_Detailed.md#sec-content) | [数据库设计](../03_Technical_Design/01_Database_Design.md)、[接口设计](../03_Technical_Design/03_Interface_Design.md) | +| 报装与签章 | `INST-001 ~ INST-003` | [报装与签章模块正文](./15_INST_Detailed.md#sec-content) | [CA 补充说明](./03_CA_Esignature_Supplement.md)、[安全设计](../03_Technical_Design/04_Security_Design.md) | + +## 架构图模块承接映射 + +| 架构图对象 | 当前详设承接方式 | 说明 | +| --- | --- | --- | +| `UP-001 ~ UP-005` | `11_UP_Detailed.md` | `UP-005` 当前并入统一平台运维支撑能力表达 | +| `REV-001 ~ REV-009` | `12_REV_Detailed.md` | 与营收业务主链路一一对齐 | +| `CS-001 ~ CS-007` | `13_CS_Detailed.md` | 与客户服务正文一一对齐 | +| `WECHAT-001 ~ WECHAT-008` | `13_CS_Detailed.md` | 当前作为渠道侧映射,不单独拆出微网厅平行详设 | +| `MOBILE-001 ~ MOBILE-006` | `12_REV_Detailed.md` + `14_METER_Detailed.md` | 当前作为移动抄表 / 现场作业协同能力承接 | +| `WORK-001 ~ WORK-004` | 协同承接 | 当前在客户服务、表务、报装正文中按工单 / 流程支撑能力引用 | +| 架构图 `METER-001 ~ METER-003` | `14_METER_Detailed.md` | 当前详设已修正为与架构图一致的三段式编号,多余内容改为子能力章节 | +| 架构图 `INST-001 ~ INST-003` | `15_INST_Detailed.md` | 当前详设已修正为与架构图一致的三段式编号,多余内容改为子能力章节 | +| `SYS-008/009/010` | 接口与协同承接 | 当前不在详细设计目录新增平行主稿,主要在概要、接口和相关业务正文中描述 | + + + +## 模块级追溯矩阵 + +| 模块编号 | 模块名称 | 模块正文定位 | 关键数据域(摘要) | 关键接口编号(摘要) | 主要协同对象 | +|---|---|---|---|---|---| +| `UP-001` | 统一认证与单点登录 | [章节](./11_UP_Detailed.md#mod-up-001) | 用户、令牌、登录日志 | `IF-UP-001`、`IF-UP-002` | 各接入端、统一平台 | +| `UP-002` | 组织用户与权限管理 | [章节](./11_UP_Detailed.md#mod-up-002) | 组织、岗位、角色、权限 | `IF-UP-003` | 各业务模块 | +| `UP-003` | 参数字典与基础配置 | [章节](./11_UP_Detailed.md#mod-up-003) | 字典、价格、地址、任务参数 | `IF-UP-004` | 营收、表务、报装 | +| `UP-004` | 审计监控与运维支撑 | [章节](./11_UP_Detailed.md#mod-up-004) | 操作日志、接口日志、任务日志 | `IF-UP-003`(审计关联) | 运维平台、消息服务 | +| `REV-001` | 客户资料管理 | [章节](./12_REV_Detailed.md#mod-rev-001) | 客户、账户、联系人、绑定关系 | `IF-REV-001` | 客户服务、表务、报装 | +| `REV-002` | 抄表开账 | [章节](./12_REV_Detailed.md#mod-rev-002) | 抄表任务、读数、账单主明细 | `IF-REV-004`、`IF-REV-005` | 抄表APP、IoT、表务 | +| `REV-003` | 营业收费 | [章节](./12_REV_Detailed.md#mod-rev-003) | 营业账、交易流水、回调记录 | `IF-REV-006` | `SYS-009` 支付结算 | +| `REV-004` | 账务处理 | [章节](./12_REV_Detailed.md#mod-rev-004) | 账单调整、日志、审批留痕 | `IF-REV-007` | 财务、营收后台 | +| `REV-005` | 发票与税务处理 | [章节](./12_REV_Detailed.md#mod-rev-005) | 发票主记录、税率、开票信息 | `IF-REV-008` | `SYS-008` 发票服务 | +| `REV-006` | 催缴与通知 | [章节](./12_REV_Detailed.md#mod-rev-006) | 欠费账单、催缴结果 | `IF-REV-009` | `SYS-010` 消息服务 | +| `REV-007` | 统计分析 | [章节](./12_REV_Detailed.md#mod-rev-007) | 客户、抄表、收费、渠道聚合 | `IF-REV-010` | 报表与管理端 | +| `REV-008` | 代收与银行业务 | [章节](./12_REV_Detailed.md#mod-rev-008) | 渠道、签约、批次、对账、结算 | `IF-REV-011` | 银行、`SYS-009` | +| `REV-009` | 业务参数配置 | [章节](./12_REV_Detailed.md#mod-rev-009) | 参数配置、页面配置、价格模板 | `IF-REV-012` | 统一平台、营收模块 | +| `CS-001` | 账户绑定管理 | [章节](./13_CS_Detailed.md#mod-cs-001) | 渠道绑定、客户账户 | `IF-CS-001` | 微信、支付宝、微网厅 | +| `CS-002` | 信息查询服务 | [章节](./13_CS_Detailed.md#mod-cs-002) | 账单、缴费、发票、流水 | `IF-CS-002` | 客户渠道、营收系统 | +| `CS-003` | 在线缴费服务 | [章节](./13_CS_Detailed.md#mod-cs-003) | 订单、交易、回调 | `IF-CS-003` | `SYS-009` 支付结算 | +| `CS-004` | 电子发票服务 | [章节](./13_CS_Detailed.md#mod-cs-004) | 发票申请、税率、下载记录 | `IF-CS-004` | `SYS-008` 发票服务 | +| `CS-005` | 营业网点服务 | [章节](./13_CS_Detailed.md#mod-cs-005) | 网点信息、业务范围 | `IF-CS-005` | 客户渠道 | +| `CS-006` | 业务办理服务 | [章节](./13_CS_Detailed.md#mod-cs-006) | 办理申请、办理状态 | `IF-CS-006` | 工单系统、消息服务 | +| `CS-007` | 柜面扫码支付 | [章节](./13_CS_Detailed.md#mod-cs-007) | 柜面订单、流水、核销状态 | `IF-CS-007` | 营业厅、`SYS-009` | +| `METER-001` | 表务基础管理 | [章节](./14_METER_Detailed.md#mod-meter-001) | 基础参数、水表主档、状态 | `IF-METER-001` | 营收、报装 | +| `METER-002` | 仓库与库存管理 | [章节](./14_METER_Detailed.md#mod-meter-002) | 库存、出入库、退库、报废 | `IF-METER-003` | 仓储管理端 | +| `METER-003` | 设备档案管理 | [章节](./14_METER_Detailed.md#mod-meter-003) | 设备档案、工单留痕、远程同步 | `IF-METER-001`、`IF-METER-002`、`IF-METER-004` | 工单系统、移动作业、IoT 平台 | +| `INST-001` | 报装流程管理 | [章节](./15_INST_Detailed.md#mod-inst-001) | 申请单、资料附件、踏勘方案 | `IF-INST-001`、`IF-INST-002` | 柜台、微网厅、政务、报装人员 | +| `INST-002` | 工程管理 | [章节](./15_INST_Detailed.md#mod-inst-002) | 施工节点、验收结果、签章协同 | `IF-INST-003`、`IF-INST-004`、`IF-INST-005` | 表务、客户建档、泛微 CA | +| `INST-003` | 档案管理 | [章节](./15_INST_Detailed.md#mod-inst-003) | 档案、回执、过程日志 | `IF-INST-005` | 报装、档案管理 | + + + +## 维护机制 + +更新本索引时遵循以下顺序: + +1. 先更新 `01_Detailed_Design.md` 中模块主内容; +2. 再同步本索引中的“模块定位/接口编号/数据域摘要”; +3. 如涉及接口变化,同步更新 `03_Technical_Design/03_Interface_Design.md`; +4. 完成后至少执行: + - `make validate-file FILE=docs/design/02_Detailed_Design/01_Detailed_Design.md` + - `make validate-file FILE=docs/design/02_Detailed_Design/02_Module_Traceability_Index.md` + - `make check-links` diff --git a/output/02_System_Architecture.docx b/output/02_System_Architecture.docx new file mode 100644 index 0000000..600478e Binary files /dev/null and b/output/02_System_Architecture.docx differ diff --git a/output/02_System_Architecture.html b/output/02_System_Architecture.html new file mode 100644 index 0000000..2cc13b4 --- /dev/null +++ b/output/02_System_Architecture.html @@ -0,0 +1,334 @@ + + + + + + + + 福建水务营收系统-系统架构设计 + + + + + +
+

福建水务营收系统-系统架构设计

+

系统设计团队

+

2024年12月19日

+
+ +

1 福建水务营收系统总体架构说明

+

1.1 1. 文档定位

+

本文档用于沉淀系统总体架构的分层方式、子系统边界和跨系统协同原则,作为 +03_Summary_Design.md 的架构视图补充。
+本文不承载模块级实现细节、接口字段细节和数据库字段细节,避免与主文档重复维护。

+

1.2 2. 设计输入与约束

+

1.2.1 2.1 输入来源

+ +

1.2.2 2.2 约束原则

+ +

1.3 3. 总体逻辑架构

+
flowchart TB
+    subgraph Layer_Presentation["表现层"]
+        P_Web["Web 管理端"]
+        P_App["手机抄表 APP"]
+        P_Channel["微网厅/渠道端"]
+    end
+
+    subgraph Layer_Gateway["接入与网关层"]
+        G_Api["API 网关"]
+        G_Auth["统一认证与鉴权"]
+    end
+
+    subgraph Layer_Business["业务服务层"]
+        B_SYS001["SYS-001 统一平台"]
+        B_SYS002["SYS-002 营收业务系统"]
+        B_SYS003["SYS-003 手机抄表 APP 服务"]
+        B_SYS004["SYS-004 微网厅系统"]
+        B_SYS005["SYS-005 工单管理系统"]
+        B_SYS006["SYS-006 表务管理系统"]
+        B_SYS007["SYS-007 报装业务系统"]
+        B_SYS008["SYS-008 发票服务子系统"]
+        B_SYS009["SYS-009 支付与银行结算子系统"]
+        B_SYS010["SYS-010 消息服务子系统"]
+    end
+
+    subgraph Layer_Infrastructure["基础能力层"]
+        I_Workflow["工作流能力"]
+        I_File["文件与附件能力"]
+        I_Monitor["监控与审计能力"]
+        I_Integration["外部集成适配能力"]
+    end
+
+    subgraph Layer_Data["数据层"]
+        D_DM["达梦数据库 8.0+"]
+        D_Redis["Redis 缓存"]
+        D_Object["对象存储"]
+    end
+
+    Layer_Presentation --> Layer_Gateway
+    Layer_Gateway --> Layer_Business
+    Layer_Business --> Layer_Infrastructure
+    Layer_Business --> Layer_Data
+
+

1.4 4. 子系统边界矩阵

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
子系统核心职责边界说明
SYS-001 统一平台认证、权限、组织、参数、租户、监控不承载具体行业业务流程
SYS-002 营收业务系统客户、抄表开账、收费、账务、客服核心能力通过接口调用基础服务,不重复建设
SYS-003 手机抄表 APP现场作业、移动采集、任务处理以移动作业能力为主,不替代后台管理
SYS-004 微网厅系统客户线上服务与查询缴费以渠道服务为主,不承载后台运营管理
SYS-005 工单管理系统工单流转、状态跟踪、绩效统计专注工单域,不内嵌收费结算逻辑
SYS-006 表务管理系统表务档案、库存、设备管理专注设备与库存域,不承担账务处理
SYS-007 报装业务系统报装流程、工程与档案管理专注报装域流程,不替代统一工单
SYS-008 发票服务子系统开票与供应商适配对外提供开票能力,不承载支付流程
SYS-009 支付与银行结算子系统聚合支付、银行结算、对账对外提供资金结算能力,不承载发票逻辑
SYS-010 消息服务子系统短信/邮件/站内信等消息分发对外提供消息能力,不承载业务决策
+

1.5 5. 跨系统协同原则

+

1.5.1 5.1 接口协同

+ +

1.5.2 5.2 事务与一致性

+ +

1.6 6. 数据架构原则

+ +

1.7 7. 部署架构原则

+ +

1.8 8. 安全与合规原则

+ +

1.9 9. 非功能性要求(概要层)

+ + + + + + + + + + + + + + + + + + + + + + + + + +
维度架构要求
可用性关键链路具备故障隔离与恢复能力
可扩展性子系统边界稳定、能力可水平扩展
可维护性文档、编号、接口边界可追踪
可观测性关键流程具备日志、指标、审计记录
+
+

量化指标、容量规格与性能参数,以主文档和部署专项文档为准。

+
+

1.10 10. 与主文档映射

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + +
本文档章节主文档对应章节
总体逻辑架构03_Summary_Design.md +中“系统架构设计/系统的逻辑架构设计”
子系统边界矩阵03_Summary_Design.md 中“子系统定义/子系统列表”
跨系统协同原则03_Summary_Design.md 中“子系统间关系/主要接口定义”
数据与部署原则03_Summary_Design.md 中“系统的物理架构设计”
+

1.11 11. 维护规则

+ + + diff --git a/output/02_System_Architecture.pdf b/output/02_System_Architecture.pdf new file mode 100644 index 0000000..3f077ac Binary files /dev/null and b/output/02_System_Architecture.pdf differ diff --git a/output/02_System_Architecture_processed.md b/output/02_System_Architecture_processed.md new file mode 100644 index 0000000..5fb60e1 --- /dev/null +++ b/output/02_System_Architecture_processed.md @@ -0,0 +1,172 @@ +--- +title: "02_System_Architecture" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: HL-02-ARCHITECTURE +doc_role: supporting_document +authority: supporting +scope: 总体设计-系统架构 +source_of_truth: false +last_reviewed: 2026-03-11 +retrieval_priority: P1 +--- + +# 福建水务营收系统总体架构说明 + +## 1. 文档定位 + +本文档用于沉淀系统总体架构的分层方式、子系统边界和跨系统协同原则,作为 `03_Summary_Design.md` 的架构视图补充。 +本文不承载模块级实现细节、接口字段细节和数据库字段细节,避免与主文档重复维护。 + +## 2. 设计输入与约束 + +### 2.1 输入来源 + +- 主文档:`03_Summary_Design.md`(唯一真源) +- 详细设计:`../02_Detailed_Design/01_Detailed_Design.md` +- 技术专项:`../03_Technical_Design/` +- 历史与对照资料:`../04_Appendix/Archive/`、`../../guides/` + +### 2.2 约束原则 + +- 项目名称统一为“福建水务营收系统”。 +- 接口编号与模块编号区分,接口编号使用 `IF-` 前缀。 +- 数据库总体口径保持与主文档一致(达梦数据库 8.0+)。 +- 图文必须一致;图示变更需同步核对主文档对应章节。 + +## 3. 总体逻辑架构 + + +```mermaid +flowchart TB + subgraph Layer_Presentation["表现层"] + P_Web["Web 管理端"] + P_App["手机抄表 APP"] + P_Channel["微网厅/渠道端"] + end + + subgraph Layer_Gateway["接入与网关层"] + G_Api["API 网关"] + G_Auth["统一认证与鉴权"] + end + + subgraph Layer_Business["业务服务层"] + B_SYS001["SYS-001 统一平台"] + B_SYS002["SYS-002 营收业务系统"] + B_SYS003["SYS-003 手机抄表 APP 服务"] + B_SYS004["SYS-004 微网厅系统"] + B_SYS005["SYS-005 工单管理系统"] + B_SYS006["SYS-006 表务管理系统"] + B_SYS007["SYS-007 报装业务系统"] + B_SYS008["SYS-008 发票服务子系统"] + B_SYS009["SYS-009 支付与银行结算子系统"] + B_SYS010["SYS-010 消息服务子系统"] + end + + subgraph Layer_Infrastructure["基础能力层"] + I_Workflow["工作流能力"] + I_File["文件与附件能力"] + I_Monitor["监控与审计能力"] + I_Integration["外部集成适配能力"] + end + + subgraph Layer_Data["数据层"] + D_DM["达梦数据库 8.0+"] + D_Redis["Redis 缓存"] + D_Object["对象存储"] + end + + Layer_Presentation --> Layer_Gateway + Layer_Gateway --> Layer_Business + Layer_Business --> Layer_Infrastructure + Layer_Business --> Layer_Data + +``` + + +## 4. 子系统边界矩阵 + +| 子系统 | 核心职责 | 边界说明 | +| --- | --- | --- | +| SYS-001 统一平台 | 认证、权限、组织、参数、租户、监控 | 不承载具体行业业务流程 | +| SYS-002 营收业务系统 | 客户、抄表开账、收费、账务、客服核心能力 | 通过接口调用基础服务,不重复建设 | +| SYS-003 手机抄表 APP | 现场作业、移动采集、任务处理 | 以移动作业能力为主,不替代后台管理 | +| SYS-004 微网厅系统 | 客户线上服务与查询缴费 | 以渠道服务为主,不承载后台运营管理 | +| SYS-005 工单管理系统 | 工单流转、状态跟踪、绩效统计 | 专注工单域,不内嵌收费结算逻辑 | +| SYS-006 表务管理系统 | 表务档案、库存、设备管理 | 专注设备与库存域,不承担账务处理 | +| SYS-007 报装业务系统 | 报装流程、工程与档案管理 | 专注报装域流程,不替代统一工单 | +| SYS-008 发票服务子系统 | 开票与供应商适配 | 对外提供开票能力,不承载支付流程 | +| SYS-009 支付与银行结算子系统 | 聚合支付、银行结算、对账 | 对外提供资金结算能力,不承载发票逻辑 | +| SYS-010 消息服务子系统 | 短信/邮件/站内信等消息分发 | 对外提供消息能力,不承载业务决策 | + +## 5. 跨系统协同原则 + +### 5.1 接口协同 + +- 子系统间交互通过标准化接口进行,避免跨库直连。 +- 接口编号遵循 `IF-` 前缀规则,保持可追踪性。 +- 对外集成能力由基础服务子系统统一收口,业务系统按需调用。 + +### 5.2 事务与一致性 + +- 同步事务优先控制在单子系统内部。 +- 跨系统流程采用“状态驱动 + 补偿机制”的一致性策略。 +- 关键状态变更需具备审计记录与回溯能力。 + +## 6. 数据架构原则 + +- 核心业务数据统一落地至达梦数据库体系。 +- 缓存仅用于性能优化,不作为业务真源。 +- 主数据(客户、账户、设备、组织)在归属子系统维护,跨系统通过接口共享。 +- 涉及敏感信息的数据遵循加密与脱敏规范,具体规则见安全专项文档。 + +## 7. 部署架构原则 + +- 系统采用分层部署,接入层、业务层、数据层职责清晰。 +- 支持容器化部署与统一运维管理,满足扩展与回滚要求。 +- 网络访问遵循内外网分区与最小权限原则。 +- 外部集成链路采用统一接入策略,降低耦合风险。 + +## 8. 安全与合规原则 + +- 统一认证、统一授权、统一审计。 +- 关键业务接口启用访问控制、参数校验和日志追踪。 +- 敏感数据执行分类保护与最小暴露。 +- 安全设计细则以 `../03_Technical_Design/04_Security_Design.md` 为准。 + +## 9. 非功能性要求(概要层) + +| 维度 | 架构要求 | +| --- | --- | +| 可用性 | 关键链路具备故障隔离与恢复能力 | +| 可扩展性 | 子系统边界稳定、能力可水平扩展 | +| 可维护性 | 文档、编号、接口边界可追踪 | +| 可观测性 | 关键流程具备日志、指标、审计记录 | + +> 量化指标、容量规格与性能参数,以主文档和部署专项文档为准。 + +## 10. 与主文档映射 + +| 本文档章节 | 主文档对应章节 | +| --- | --- | +| 总体逻辑架构 | `03_Summary_Design.md` 中“系统架构设计/系统的逻辑架构设计” | +| 子系统边界矩阵 | `03_Summary_Design.md` 中“子系统定义/子系统列表” | +| 跨系统协同原则 | `03_Summary_Design.md` 中“子系统间关系/主要接口定义” | +| 数据与部署原则 | `03_Summary_Design.md` 中“系统的物理架构设计” | + +## 11. 维护规则 + +- 本文档仅维护“总体层原则”,不扩展为详细设计文档。 +- 若与主文档冲突,必须先修正本文档并在台账登记。 +- 修改后至少执行: + - `make validate-file FILE=docs/design/01_Overview/02_System_Architecture.md` + - `make check-links` + - `make validate-mermaid` diff --git a/output/02_Table_Specs.docx b/output/02_Table_Specs.docx new file mode 100644 index 0000000..295607f Binary files /dev/null and b/output/02_Table_Specs.docx differ diff --git a/output/02_Table_Specs.html b/output/02_Table_Specs.html new file mode 100644 index 0000000..b6ec8ac --- /dev/null +++ b/output/02_Table_Specs.html @@ -0,0 +1,294 @@ + + + + + + + + 福建水务营收系统-单表规格补充(历史映射) + + + + + +
+

福建水务营收系统-单表规格补充(历史映射)

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统单表规格补充(历史映射)

+

1.1 章节导航(精简)

+ +

## 文档定位

+

本文档定位为“单表规格补充与历史命名映射”,用于承接存量资料中的旧表名、专题扩展表与主文档之间的对照关系。

+

边界约束:

+ +

## 口径优先级

+

数据库相关口径按以下优先级使用:

+
    +
  1. docs/design/03_Technical_Design/01_Database_Design.md(主文档)
  2. +
  3. docs/design/03_Technical_Design/03_Interface_Design.md(接口数据对象)
  4. +
  5. docs/design/02_Detailed_Design/01_Detailed_Design.md 与 +11~15 分模块正文
  6. +
  7. 本文档(历史映射与补充)
  8. +
  9. docs/design/04_Appendix/Archive/ 历史资料
  10. +
+

数据库技术口径统一为 达梦数据库 8.0+(兼容 MySQL +语法习惯)。

+

## 历史命名映射矩阵

+

1.1.1 营收与表务常见历史命名

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
历史表名(存量资料)当前主口径状态说明
water_customerbiz_cust已收敛客户主档
water_accountbiz_account已收敛客户账户
water_meterbiz_meter已收敛水表主档
water_meter_readingbiz_meter_read + +biz_reading_data已收敛抄表任务与读数分离建模
water_billbiz_charge + +biz_charge_detail已收敛账单主表与明细表分离
water_paymentbiz_collection + +bk_transaction已收敛收费业务与渠道流水分离
water_invoicebiz_invoice + +biz_invoice_taxrate已收敛发票申请与税率配置
water_meter_workorderbiz_meter_log + +biz_process_transfer已收敛表务工单过程留痕
water_meter_stockbiz_meter_in_out已收敛库存主记录
water_meter_inventorybiz_meter_in_out_rel已收敛出入库关联明细
water_meter_archivebiz_meter + +biz_last_reading已收敛档案与状态统一收口
+
+

说明:上述 water_* +名称仅用于历史资料追溯,不作为当前正式设计与实施命名。

+
+

## METER/INST 专题补充

+

1.1.2 METER(表务专题)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
数据域主要表口径
水表基础档案biz_meterbiz_meter_modelbiz_meter_caliberbiz_meter_range实现态
抄表与读数biz_meter_readbiz_reading_databiz_last_reading实现态
工单与处理留痕biz_meter_logbiz_processbiz_process_transfer实现态
库存与生命周期biz_meter_in_outbiz_meter_in_out_rel实现态
+

1.1.3 INST(报装与签章专题)

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
数据域主要表口径
报装流程主线biz_processbiz_process_transferbiz_business_datas实现态
报装资料附件biz_contentbiz_content_attach实现态
合同签章扩展installation_contractinstallation_signatureinstallation_evidence专题设计态
CA 配置与模板installation_ca_configinstallation_signature_template专题设计态
+

专题来源参考:

+ +

## 维护规则

+
    +
  1. 新增或调整表口径时,先更新 +01_Database_Design.md,再更新本映射文档;
  2. +
  3. 历史表名只做映射,不新增“并行主模型”;
  4. +
  5. 本文档新增映射项时,需同步检查 +02_Detailed_Design/02_Module_Traceability_Index.md
  6. +
  7. 完成后至少执行: +
  8. +
+ + diff --git a/output/02_Table_Specs.pdf b/output/02_Table_Specs.pdf new file mode 100644 index 0000000..aa68e6e Binary files /dev/null and b/output/02_Table_Specs.pdf differ diff --git a/output/02_Table_Specs_processed.md b/output/02_Table_Specs_processed.md new file mode 100644 index 0000000..36e5849 --- /dev/null +++ b/output/02_Table_Specs_processed.md @@ -0,0 +1,115 @@ +--- +title: "02_Table_Specs" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: TC-02-TABLE-SPECS +doc_role: support_document +authority: secondary +scope: 单表规格补充与历史映射 +source_of_truth: false +last_reviewed: 2026-03-11 +retrieval_priority: P2 +--- + +# 福建水务营收系统单表规格补充(历史映射) + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [口径优先级](#sec-priority) +- [历史命名映射矩阵](#sec-legacy-mapping) +- [METER/INST 专题补充](#sec-topic) +- [维护规则](#sec-maintenance) + + +## 文档定位 + +本文档定位为“单表规格补充与历史命名映射”,用于承接存量资料中的旧表名、专题扩展表与主文档之间的对照关系。 + +边界约束: + +- 本文档**不是**数据库主文档; +- 字段定义与正式表口径以 `01_Database_Design.md` 为准; +- 接口与数据对象口径以 `03_Interface_Design.md` 为准; +- 遇到冲突时,不以本文件反向覆盖主文档。 + + +## 口径优先级 + +数据库相关口径按以下优先级使用: + +1. `docs/design/03_Technical_Design/01_Database_Design.md`(主文档) +2. `docs/design/03_Technical_Design/03_Interface_Design.md`(接口数据对象) +3. `docs/design/02_Detailed_Design/01_Detailed_Design.md` 与 `11~15` 分模块正文 +4. 本文档(历史映射与补充) +5. `docs/design/04_Appendix/Archive/` 历史资料 + +数据库技术口径统一为 **达梦数据库 8.0+**(兼容 MySQL 语法习惯)。 + + +## 历史命名映射矩阵 + +### 营收与表务常见历史命名 + +| 历史表名(存量资料) | 当前主口径 | 状态 | 说明 | +| :--- | :--- | :--- | :--- | +| `water_customer` | `biz_cust` | 已收敛 | 客户主档 | +| `water_account` | `biz_account` | 已收敛 | 客户账户 | +| `water_meter` | `biz_meter` | 已收敛 | 水表主档 | +| `water_meter_reading` | `biz_meter_read` + `biz_reading_data` | 已收敛 | 抄表任务与读数分离建模 | +| `water_bill` | `biz_charge` + `biz_charge_detail` | 已收敛 | 账单主表与明细表分离 | +| `water_payment` | `biz_collection` + `bk_transaction` | 已收敛 | 收费业务与渠道流水分离 | +| `water_invoice` | `biz_invoice` + `biz_invoice_taxrate` | 已收敛 | 发票申请与税率配置 | +| `water_meter_workorder` | `biz_meter_log` + `biz_process_transfer` | 已收敛 | 表务工单过程留痕 | +| `water_meter_stock` | `biz_meter_in_out` | 已收敛 | 库存主记录 | +| `water_meter_inventory` | `biz_meter_in_out_rel` | 已收敛 | 出入库关联明细 | +| `water_meter_archive` | `biz_meter` + `biz_last_reading` | 已收敛 | 档案与状态统一收口 | + +> 说明:上述 `water_*` 名称仅用于历史资料追溯,不作为当前正式设计与实施命名。 + + +## METER/INST 专题补充 + +### METER(表务专题) + +| 数据域 | 主要表 | 口径 | +| :--- | :--- | :--- | +| 水表基础档案 | `biz_meter`、`biz_meter_model`、`biz_meter_caliber`、`biz_meter_range` | 实现态 | +| 抄表与读数 | `biz_meter_read`、`biz_reading_data`、`biz_last_reading` | 实现态 | +| 工单与处理留痕 | `biz_meter_log`、`biz_process`、`biz_process_transfer` | 实现态 | +| 库存与生命周期 | `biz_meter_in_out`、`biz_meter_in_out_rel` | 实现态 | + +### INST(报装与签章专题) + +| 数据域 | 主要表 | 口径 | +| :--- | :--- | :--- | +| 报装流程主线 | `biz_process`、`biz_process_transfer`、`biz_business_datas` | 实现态 | +| 报装资料附件 | `biz_content`、`biz_content_attach` | 实现态 | +| 合同签章扩展 | `installation_contract`、`installation_signature`、`installation_evidence` | 专题设计态 | +| CA 配置与模板 | `installation_ca_config`、`installation_signature_template` | 专题设计态 | + +专题来源参考: + +- `docs/design/02_Detailed_Design/14_METER_Detailed.md` +- `docs/design/02_Detailed_Design/15_INST_Detailed.md` +- `docs/design/04_Appendix/01_Overview_CA.md` +- `docs/design/04_Appendix/02_Database_Design_CA.md` + + +## 维护规则 + +1. 新增或调整表口径时,先更新 `01_Database_Design.md`,再更新本映射文档; +2. 历史表名只做映射,不新增“并行主模型”; +3. 本文档新增映射项时,需同步检查 `02_Detailed_Design/02_Module_Traceability_Index.md`; +4. 完成后至少执行: + - `make validate-file FILE=docs/design/03_Technical_Design/01_Database_Design.md` + - `make validate-file FILE=docs/design/03_Technical_Design/02_Table_Specs.md` + - `make check-links` diff --git a/output/03_CA_Esignature_Supplement.docx b/output/03_CA_Esignature_Supplement.docx new file mode 100644 index 0000000..6440e8f Binary files /dev/null and b/output/03_CA_Esignature_Supplement.docx differ diff --git a/output/03_CA_Esignature_Supplement.html b/output/03_CA_Esignature_Supplement.html new file mode 100644 index 0000000..d2431b4 --- /dev/null +++ b/output/03_CA_Esignature_Supplement.html @@ -0,0 +1,387 @@ + + + + + + + + 福建水务营收系统-报装CA电子签章补充 + + + + + +
+

福建水务营收系统-报装CA电子签章补充

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统报装电子签章设计补充说明

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位与边界

+

本文件是 01_Detailed_Design.md 中 +INST-002 工程管理 +下“合同签署与电子签章能力”的专项补充文档,重点补充:

+
    +
  1. 泛微 CA 接口对接边界与字段约定;
  2. +
  3. 签章任务状态流转、异常补偿和运维观测点;
  4. +
  5. 合规与审计约束落地要求。
  6. +
+

权威边界:

+ +

+

1.3 集成架构与交互边界

+
flowchart LR
+    subgraph INST[报装业务系统]
+        A[合同管理]
+        B[签章任务中心]
+        C[回执处理]
+        D[档案归档]
+    end
+
+    subgraph CA[泛微 CA 电子签章平台]
+        E[身份认证接口]
+        F[签章接口]
+        G[时间戳接口]
+        H[存证接口]
+    end
+
+    A --> B
+    B --> E
+    B --> F
+    B --> G
+    B --> H
+    F --> C
+    G --> C
+    H --> C
+    C --> D
+
+

边界说明:

+ +

+

1.4 接口清单与字段约定

+

1.4.1 1. 接口清单

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口方向业务接口编号对接接口名称关键输入关键输出
报装系统 → CAIF-INST-003合同签署发起合同ID、签署方、签署位置、业务流水号签章任务ID、受理状态
报装系统 → CAIF-INST-003身份认证调用用户标识、认证类型、认证要素认证结果、认证凭证
报装系统 → CAIF-INST-003时间戳申请签章摘要哈希、请求时间时间戳令牌、签发时间
报装系统 → CAIF-INST-003存证申请签章后文档摘要、元数据存证ID、存证状态
CA → 报装系统IF-INST-004签章结果回执任务ID、签章状态、凭证编号、失败原因回写结果、重试标记
+

1.4.2 2. 字段约定(最小集)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段说明约束
biz_trace_id业务追踪ID必填;同一签署流程全链路唯一
contract_id合同ID必填;与报装申请单关联
sign_task_id签章任务ID回执必填;用于幂等去重
sign_status签署状态必填;INIT/PROCESSING/SUCCESS/FAILED
evidence_id存证ID成功场景必填
error_code异常码失败场景必填
error_message异常描述失败场景必填;可审计
callback_time回执时间必填;用于超时判断
+

+

1.5 流程约束与状态管理

+

1.5.1 1. 签章状态机

+
stateDiagram-v2
+    [*] --> INIT
+    INIT --> PROCESSING: 发起签署
+    PROCESSING --> SUCCESS: 回执成功
+    PROCESSING --> FAILED: 回执失败
+    FAILED --> PROCESSING: 人工重试/系统重试
+    SUCCESS --> ARCHIVED: 完成归档
+    ARCHIVED --> [*]
+
+

1.5.2 2. 关键约束

+
    +
  1. 签章发起前必须完成合同正文固化与版本锁定;
  2. +
  3. 同一 sign_task_id +回执必须幂等处理,禁止重复更新业务状态;
  4. +
  5. 失败回执需记录错误码并进入补偿队列,不允许静默丢失;
  6. +
  7. 归档完成前,合同状态不得标记为“签署完成可生效”。
  8. +
+

+

1.6 异常补偿与重试机制

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
异常类型检测方式处理策略人工介入条件
网络超时请求超时/连接异常指数退避重试(最多3次)连续失败或超时超过阈值
CA受理失败返回失败码写入补偿队列并通知业务端失败码为不可恢复类
回执丢失超时未回执主动查询 + 重放回执校验超过最大等待窗口
数据校验失败字段缺失/签名不匹配拒绝入库并告警连续出现同类异常
+

补偿要求:

+ +

+

1.7 安全与合规控制

+
    +
  1. 传输安全:CA 对接链路统一使用 HTTPS,回执启用签名校验;
  2. +
  3. 身份安全:签署方认证结果需与报装业务实名信息一致;
  4. +
  5. 数据安全:合同摘要、签章凭证、存证编号需防篡改存储;
  6. +
  7. 审计留痕:签章发起、回执处理、补偿重试、人工干预均需审计;
  8. +
  9. 合规要求:执行《电子签名法》及项目安全设计文档中关于日志留痕、访问控制和数据保护要求。
  10. +
+

+

1.8 运维监控与发布管理

+

1.8.1 1. 监控指标

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
指标说明建议阈值
签章成功率成功任务 / 总任务日均 ≥ 99%
回执时延P95发起到回执耗时≤ 5 秒
补偿队列积压待补偿任务数告警阈值按租户配置
幂等冲突次数重复回执冲突数连续异常触发告警
+

1.8.2 2. 发布与变更

+
    +
  1. 涉及 CA 字段或签名算法变更,需先更新本补充文档与接口设计文档;
  2. +
  3. 发布前执行联调清单:签署成功、签署失败、回执重放、超时补偿;
  4. +
  5. 发布后至少观察一个完整业务周期,确认签章成功率与回执时延稳定。
  6. +
+ + diff --git a/output/03_CA_Esignature_Supplement.pdf b/output/03_CA_Esignature_Supplement.pdf new file mode 100644 index 0000000..b9124b7 Binary files /dev/null and b/output/03_CA_Esignature_Supplement.pdf differ diff --git a/output/03_CA_Esignature_Supplement_processed.md b/output/03_CA_Esignature_Supplement_processed.md new file mode 100644 index 0000000..eda71fa --- /dev/null +++ b/output/03_CA_Esignature_Supplement_processed.md @@ -0,0 +1,188 @@ +--- +title: "03_CA_Esignature_Supplement" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-03-CA-SUP +doc_role: support_document +authority: secondary +scope: 报装电子签章专项补充 +source_of_truth: false +last_reviewed: 2026-03-11 +retrieval_priority: P1 +--- + +# 福建水务营收系统报装电子签章设计补充说明 + +## 章节导航(精简) + +- [文档定位与边界](#sec-position) +- [集成架构与交互边界](#sec-architecture) +- [接口清单与字段约定](#sec-interface) +- [流程约束与状态管理](#sec-process) +- [异常补偿与重试机制](#sec-retry) +- [安全与合规控制](#sec-security) +- [运维监控与发布管理](#sec-ops) + + + +## 文档定位与边界 + +本文件是 `01_Detailed_Design.md` 中 `INST-002 工程管理` 下“合同签署与电子签章能力”的专项补充文档,重点补充: + +1. 泛微 CA 接口对接边界与字段约定; +2. 签章任务状态流转、异常补偿和运维观测点; +3. 合规与审计约束落地要求。 + +权威边界: + +- 报装业务主流程以 `01_Detailed_Design.md` 为准; +- CA 方案总览可参考 `../04_Appendix/03_CA_Integration_Summary.md`; +- 安全控制通用要求以 `../03_Technical_Design/04_Security_Design.md` 为准。 + + + +## 集成架构与交互边界 + + +```mermaid +flowchart LR + subgraph INST[报装业务系统] + A[合同管理] + B[签章任务中心] + C[回执处理] + D[档案归档] + end + + subgraph CA[泛微 CA 电子签章平台] + E[身份认证接口] + F[签章接口] + G[时间戳接口] + H[存证接口] + end + + A --> B + B --> E + B --> F + B --> G + B --> H + F --> C + G --> C + H --> C + C --> D + +``` + + +边界说明: + +- 报装系统负责合同上下文、签署方信息、业务状态回写与档案归档; +- 泛微 CA 负责身份认证、签章执行、时间戳与存证; +- 回执成功后才允许进入“归档完成”状态。 + + + +## 接口清单与字段约定 + +### 1. 接口清单 + +| 接口方向 | 业务接口编号 | 对接接口名称 | 关键输入 | 关键输出 | +|---|---|---|---|---| +| 报装系统 → CA | `IF-INST-003` | 合同签署发起 | 合同ID、签署方、签署位置、业务流水号 | 签章任务ID、受理状态 | +| 报装系统 → CA | `IF-INST-003` | 身份认证调用 | 用户标识、认证类型、认证要素 | 认证结果、认证凭证 | +| 报装系统 → CA | `IF-INST-003` | 时间戳申请 | 签章摘要哈希、请求时间 | 时间戳令牌、签发时间 | +| 报装系统 → CA | `IF-INST-003` | 存证申请 | 签章后文档摘要、元数据 | 存证ID、存证状态 | +| CA → 报装系统 | `IF-INST-004` | 签章结果回执 | 任务ID、签章状态、凭证编号、失败原因 | 回写结果、重试标记 | + +### 2. 字段约定(最小集) + +| 字段 | 说明 | 约束 | +|---|---|---| +| `biz_trace_id` | 业务追踪ID | 必填;同一签署流程全链路唯一 | +| `contract_id` | 合同ID | 必填;与报装申请单关联 | +| `sign_task_id` | 签章任务ID | 回执必填;用于幂等去重 | +| `sign_status` | 签署状态 | 必填;`INIT/PROCESSING/SUCCESS/FAILED` | +| `evidence_id` | 存证ID | 成功场景必填 | +| `error_code` | 异常码 | 失败场景必填 | +| `error_message` | 异常描述 | 失败场景必填;可审计 | +| `callback_time` | 回执时间 | 必填;用于超时判断 | + + + +## 流程约束与状态管理 + +### 1. 签章状态机 + + +```mermaid +stateDiagram-v2 + [*] --> INIT + INIT --> PROCESSING: 发起签署 + PROCESSING --> SUCCESS: 回执成功 + PROCESSING --> FAILED: 回执失败 + FAILED --> PROCESSING: 人工重试/系统重试 + SUCCESS --> ARCHIVED: 完成归档 + ARCHIVED --> [*] + +``` + + +### 2. 关键约束 + +1. 签章发起前必须完成合同正文固化与版本锁定; +2. 同一 `sign_task_id` 回执必须幂等处理,禁止重复更新业务状态; +3. 失败回执需记录错误码并进入补偿队列,不允许静默丢失; +4. 归档完成前,合同状态不得标记为“签署完成可生效”。 + + + +## 异常补偿与重试机制 + +| 异常类型 | 检测方式 | 处理策略 | 人工介入条件 | +|---|---|---|---| +| 网络超时 | 请求超时/连接异常 | 指数退避重试(最多3次) | 连续失败或超时超过阈值 | +| CA受理失败 | 返回失败码 | 写入补偿队列并通知业务端 | 失败码为不可恢复类 | +| 回执丢失 | 超时未回执 | 主动查询 + 重放回执校验 | 超过最大等待窗口 | +| 数据校验失败 | 字段缺失/签名不匹配 | 拒绝入库并告警 | 连续出现同类异常 | + +补偿要求: + +- 所有补偿任务必须带 `biz_trace_id`; +- 重试与人工补录均写入审计日志; +- 重试成功后需自动回补主流程状态。 + + + +## 安全与合规控制 + +1. 传输安全:CA 对接链路统一使用 HTTPS,回执启用签名校验; +2. 身份安全:签署方认证结果需与报装业务实名信息一致; +3. 数据安全:合同摘要、签章凭证、存证编号需防篡改存储; +4. 审计留痕:签章发起、回执处理、补偿重试、人工干预均需审计; +5. 合规要求:执行《电子签名法》及项目安全设计文档中关于日志留痕、访问控制和数据保护要求。 + + + +## 运维监控与发布管理 + +### 1. 监控指标 + +| 指标 | 说明 | 建议阈值 | +|---|---|---| +| 签章成功率 | 成功任务 / 总任务 | 日均 ≥ 99% | +| 回执时延P95 | 发起到回执耗时 | ≤ 5 秒 | +| 补偿队列积压 | 待补偿任务数 | 告警阈值按租户配置 | +| 幂等冲突次数 | 重复回执冲突数 | 连续异常触发告警 | + +### 2. 发布与变更 + +1. 涉及 CA 字段或签名算法变更,需先更新本补充文档与接口设计文档; +2. 发布前执行联调清单:签署成功、签署失败、回执重放、超时补偿; +3. 发布后至少观察一个完整业务周期,确认签章成功率与回执时延稳定。 diff --git a/output/03_Interface_Design.docx b/output/03_Interface_Design.docx new file mode 100644 index 0000000..b8d5c03 Binary files /dev/null and b/output/03_Interface_Design.docx differ diff --git a/output/03_Interface_Design.html b/output/03_Interface_Design.html new file mode 100644 index 0000000..b0f05c1 --- /dev/null +++ b/output/03_Interface_Design.html @@ -0,0 +1,7695 @@ + + + + + + + + 福建水务营收系统-接口设计 + + + + + +
+

福建水务营收系统-接口设计

+

系统设计团队

+

2024年12月19日

+
+ +

1 福建水务营收系统接口设计文档

+

1.1 文档信息

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目信息详情
项目名称福建水务营收系统
文档类型接口设计文档
技术框架Spring Cloud Alibaba + RuoYi-Vue-Pro + yudao-ui-admin-vue3
文档版本v1.0
编写日期2026-03-11
文档状态✅ 已完成(按版本迭代)
+

1.2 章节导航(精简)

+ +

## 接口设计范围

+

本文档用于描述福建水务营收系统的接口边界、调用方式、核心接口清单以及与外围子系统的协同关系,重点统一 +SYS-002 营收业务系统的接口口径。

+

本次接口整编遵循以下事实来源:

+ +
+

说明:本文档优先描述正式设计边界与业务接口职责,不将 backend +中尚未明确识别的内部实现细节误写为既有接口事实。对于历史资料中存在、但当前 +backend 未完全确认的接口对象,统一按“文档先行”处理。

+
+

## 设计原则与统一约束

+

1.2.1 接口设计原则

+ +

1.2.2 通用响应格式

+

内部 REST 接口统一采用如下响应模型:

+
{
+  "code": 0,
+  "data": {},
+  "msg": "success"
+}
+

分页响应统一采用:

+
{
+  "code": 0,
+  "data": {
+    "list": [],
+    "total": 0,
+    "pageNo": 1,
+    "pageSize": 10
+  },
+  "msg": "success"
+}
+

## SYS-002 接口视图

+

1.2.3 模块分组

+

1.2.3.1 营收核心模块群

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称接口职责定位
REV-001客户资料管理客户、账户、联系人、水表绑定等主数据查询与维护
REV-002抄表开账抄表任务、抄表数据、校验、开账触发
REV-003营业收费收费受理、账单核销、柜台与渠道收款状态回写
REV-004账务处理调整、退款、冲正、坏账等账务处理申请与结果回写
REV-005发票管理发票申请、开票结果回写、票据状态查询
REV-006催缴管理催缴名单生成、催缴任务下发、通知结果回写
REV-007统计分析营收、抄表、收费、客户、渠道统计查询
REV-008代收业务银行代收、代扣、送盘、回盘、对账、结算协同
REV-009业务参数配置水价、费用组成、业务参数、页面参数等配置接口
+

1.2.3.2 客户服务模块群

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称接口职责定位
CS-001账户绑定管理客户绑定、解绑、默认客户切换
CS-002信息查询服务账单、欠费、用水、缴费、停水公告等查询
CS-003在线缴费服务创建线上支付订单、支付状态查询
CS-004电子发票服务发票申请、发票列表、下载与推送
CS-005营业网点服务网点查询、预约、导航、业务事项查询
CS-006业务办理服务更名、过户、低保、换表、自主抄表等线上办理
CS-007柜面扫码支付柜台二维码收款、订单生成、支付结果回写
+

1.2.4 跨系统协同边界

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
协同子系统协同内容SYS-002 职责对方职责
SYS-008 发票服务发票开具、作废、红冲、票据查询提供业务上下文、账单信息、客户开票信息,接收结果回写承接税控与电子发票能力
SYS-009 支付与银行结算微信/支付宝支付、银行实时收费、代扣、对账、结算发起订单、接收支付结果、维护账单核销状态承接支付渠道、交易流水、回调、对账与结算
SYS-010 消息服务催缴通知、缴费结果通知、办理进度通知生成待通知业务事件与目标用户承接短信、微信公众号、站内信等触达能力
+

## 外部接口设计

+

1.3 外部接口分类

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口分类主要对接方典型协议说明
银行代收/代扣接口银行、银联、托收平台文件交换 / HTTPS REST主要服务 REV-008
聚合支付接口微信支付、支付宝等HTTPS REST + 回调主要服务 REV-003、CS-003、CS-007
发票协同接口税控/电子发票平台HTTPS REST主要服务 REV-005、CS-004
消息通知接口短信平台、消息网关HTTPS REST / MQ主要服务 REV-006、CS-006
物联网集抄接口集抄平台、IoT 平台HTTPS REST / MQ主要服务 REV-002
+

1.3.1 IF-EXT-001 +银行代扣批次下发接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-001
接口名称银行代扣批次下发接口
归属模块REV-008
调用方向SYS-002 → SYS-009 / 银行渠道
接口方式文件交换或 HTTPS REST
业务说明按账期生成待代扣账单批次,交由银行渠道执行代扣
核心数据支撑biz_withholdingbk_withholding_batchbk_withholding_item
+

关键报文信息包括:客户号、签约号、扣款金额、账期、渠道编码、批次号等。

+

边界约束: - 当前正式设计包含代扣送盘、回盘与对账的目标边界;其中 +BankWithholding +已具备送盘、送盘状态查询、取消送盘等六条银行入口的最小实现态闭环证据。 - +正式文档可将 BankWithholding +六条银行入口写为“已实现”,但需同时注明真实银行文件解析、SFTP/文件通道联调与运行态样本仍待补证。 +- 涉及批量文件交互时,正式口径保留 HTTP/REST/SFTP +与文件命名、批次号约束,不下沉到特定银行私有报文字段。 - +运行时文件传输配置统一由解析器输出 +protocol/resolvedDir/resolvedPath/fileName/sourceScope;优先级固定为 +TENANT_CHANNEL > TENANT > CHANNEL > DEFAULT,高优先级仅覆盖部分字段时按字段级回退。 +- 命中协议缺少 +host/port/username/credentialRef、阶段目录为空或模板变量非法时,接口必须立即返回配置错误,不得回退到错误租户或错误通道。

+

1.3.2 IF-EXT-002 +银行代扣回盘接收接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-002
接口名称银行代扣回盘接收接口
归属模块REV-008
调用方向银行渠道 / SYS-009 → SYS-002
接口方式文件交换或 HTTPS REST
业务说明接收代扣成功、失败、退票等结果并回写业务状态
核心数据支撑bk_withholding_batchbk_withholding_itembk_transactionbk_transaction_exception
+

边界约束: - +回盘处理、回盘状态查询、差异核对和结算确认属于同一能力簇;其中 +BankWithholding +的回盘与回盘状态查询已具备最小实现态闭环证据,但完整差异核对、异常补偿和结算确认仍属后续完善项。 +- +当前正式文档允许保留回盘文件名、批次号、回盘日期、结果状态等正式字段约束,但不得把未落地的真实文件解析、异常补偿和结算闭环写成既成事实。

+

1.3.3 IF-EXT-003 +银行实时收费接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-003
接口名称银行实时收费接口
归属模块REV-003 / REV-008
调用方向银行渠道 / SYS-009 ↔︎ SYS-002
接口方式HTTPS REST
业务说明支撑柜台、网银、手机银行实时查询应收并完成缴费
核心数据支撑biz_chargebiz_charge_detailbk_transactionbk_transaction_callback
+

边界约束: - 当前 backend +已确认欠费查询与缴费处理具备实现证据,可作为正式文档中的已落地基础能力。 +- +代理收费对账、汇总对账和当日未对账红冲等扩展能力当前仍未形成完整实现闭环,正式文档须标注为后续完善项。

+

1.3.4 +银行签约、状态查询与批次控制扩展接口

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口动作推荐归属当前代码路径当前状态正式口径
代扣签约REV-008 / SYS-009BankWithholdingController#signing已实现可作为正式接口能力写入
代扣解约REV-008 / SYS-009BankWithholdingController#termination已实现可作为正式接口能力写入
托收签约REV-008 / SYS-009BankCollectionController#signing已实现可作为正式接口能力写入
托收解约REV-008 / SYS-009BankCollectionController#termination已实现可作为正式接口能力写入
客户状态查询REV-008 / SYS-009BankWithholdingController#customerCheck / +BankCollectionController#customerCheck代扣已实现;托收部分实现代扣可作为正式接口能力写入;托收仅保留正式契约边界与结果状态
送盘REV-008 / SYS-009BankWithholdingController#sendDisc / +BankCollectionController#sendDisc代扣已实现;托收部分实现代扣可作为正式接口能力写入;托收仅保留正式契约边界与批次发送语义
送盘状态查询REV-008 / SYS-009BankWithholdingController#sendDiscCheck / +BankCollectionController#sendDiscCheck代扣已实现;托收部分实现代扣可作为正式接口能力写入;托收仅保留正式契约边界与批次状态语义
取消送盘REV-008 / SYS-009BankWithholdingController#cancelDisc / +BankCollectionController#cancelDisc代扣已实现;托收部分实现代扣可作为正式接口能力写入;托收仅保留正式契约边界与可取消条件
回盘REV-008 / SYS-009BankWithholdingController#backDisc / +BankCollectionController#backDisc代扣已实现;托收部分实现代扣可作为正式接口能力写入;托收仅保留正式契约边界与回盘处理语义
回盘状态查询REV-008 / SYS-009BankWithholdingController#backDiscCheck / +BankCollectionController#backDiscCheck代扣已实现;托收部分实现代扣可作为正式接口能力写入;托收仅保留正式契约边界与回盘状态语义
+

1.3.5 IF-EXT-004 +聚合支付下单接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-004
接口名称聚合支付下单接口
归属模块REV-003 / CS-003 / CS-007
调用方向SYS-002 → SYS-009
接口方式HTTPS REST
业务说明创建微信、支付宝等支付订单,返回二维码、收银参数或支付跳转信息
核心数据支撑biz_chargebiz_collectionbk_transaction
+

1.3.6 IF-EXT-005 +聚合支付结果回调接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-005
接口名称聚合支付结果回调接口
归属模块REV-003 / CS-003 / CS-007
调用方向SYS-009 → SYS-002
接口方式HTTPS REST + 签名校验
业务说明接收支付成功、失败、关闭、退款等异步事件,并更新收费状态
核心数据支撑bk_transaction_callbackbiz_collectionbiz_charge
+

1.3.7 IF-EXT-006 +发票开具协同接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-006
接口名称发票开具协同接口
归属模块REV-005 / CS-004
调用方向SYS-002 → SYS-008
接口方式HTTPS REST
业务说明传递账单、客户、抬头、税率等信息,由 SYS-008 承接开票
核心数据支撑biz_invoicebiz_invoice_taxratebiz_cust_invoice
+

1.3.8 IF-EXT-007 +发票结果回写接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-007
接口名称发票结果回写接口
归属模块REV-005 / CS-004
调用方向SYS-008 → SYS-002
接口方式HTTPS REST
业务说明回写开票状态、票据编号、下载地址、作废/红冲结果
核心数据支撑biz_invoicebiz_process_invoice_modifys
+

1.3.9 IF-EXT-008 消息触达接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-008
接口名称消息触达接口
归属模块REV-006 / CS-006
调用方向SYS-002 → SYS-010
接口方式HTTPS REST 或 MQ
业务说明承接催缴通知、办理进度通知、缴费结果通知等消息事件,返回受理结果并回传执行结果
核心数据支撑biz_chargebiz_processbiz_operat_log
+

边界约束: - IF-EXT-008 +只负责渠道触达执行与回执回传,不负责催缴候选对象筛选、任务生成或业务状态主控。 +- SYS-010 回传的渠道执行结果需由 SYS-002 +映射为 +PENDINGSUCCESSFAILMANUAL_VERIFIED +四态业务状态。 - 当仅返回受理成功但未返回终态时,SYS-002 +维持 PENDING;若长期无终态且人工核查确认,可转 +MANUAL_VERIFIED。 - 消息模板、供应商协议和重试细节由 +SYS-010 管理,不在 IF-EXT-008 +展开实现细节。

+

1.3.10 IF-EXT-009 +集抄数据接入接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-EXT-009
接口名称集抄数据接入接口
归属模块REV-002
调用方向IoT 平台 / 集抄平台 → SYS-002
接口方式HTTPS REST / MQ
业务说明接收远传读数、设备状态、异常告警,触发抄表校验与开账准备
核心数据支撑biz_meter_readbiz_reading_databiz_last_reading
+

## 内部接口设计

+

1.4 SYS-002 内部接口清单

+

1.4.1 REV 接口清单

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称归属模块主要用途主要数据对象
IF-REV-001客户信息查询接口REV-001查询客户档案、联系人、账户、水表绑定关系biz_custbiz_accountbiz_cust_contactbiz_cust_meter
IF-REV-002客户主数据维护接口REV-001新增、变更客户档案及开票/托收/代扣关系biz_custbiz_cust_invoicebiz_cust_collection_relbiz_cust_withholding_rel
IF-REV-003抄表任务下发接口REV-002按册本、片区、抄表周期生成抄表任务biz_meter_bookbiz_meter_read
IF-REV-004抄表数据提交接口REV-002提交抄表数据、图片、异常标记并触发校验biz_reading_databiz_reading_logsbiz_last_reading
IF-REV-005账单生成接口REV-002根据抄表结果、价格模板和费用组成生成账单biz_chargebiz_charge_detailbiz_price_templatebiz_cost_component
IF-REV-006缴费处理接口REV-003创建收费记录、核销账单、回写收款结果biz_collectionbiz_chargebk_transaction
IF-REV-007账务调整接口REV-004发起金额调整、退款、冲正、坏账等业务处理biz_chargebiz_charge_detailbiz_operat_log
IF-REV-008发票申请接口REV-005后台发起单笔/批量开票申请并生成受理主键biz_invoicebiz_invoice_taxratebiz_cust_invoice
IF-REV-009发票结果查询接口REV-005按申请单号/受理号查询开票结果并执行补偿查询biz_invoicebiz_operat_log
IF-REV-013催缴任务生成与结果承接接口REV-006生成催缴任务、查询任务结果并承接四态状态回写biz_chargebiz_operat_log、历史催缴查询口径
IF-REV-010统计查询接口REV-007查询营收、收费、欠费、渠道、客户统计结果聚合视图 / 统计结果集
IF-REV-011银行代收协同接口REV-008发起代扣、回盘、对账、结算协同biz_withholdingbk_reconcile_batchbk_settlement_batch
IF-REV-012业务参数配置接口REV-009查询和维护价格模板、优惠方案、业务参数配置biz_parameter_settingsbiz_price_*biz_page_settings*
+

1.4.2 CS 接口清单

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称归属模块主要用途主要数据对象
IF-CS-001账户绑定接口CS-001绑定、解绑、切换默认客户biz_cust_app_bindsbiz_cust
IF-CS-002历史账单查询接口CS-002查询账单、欠费、用水历史、缴费记录biz_chargebiz_charge_detailbiz_reading_data
IF-CS-003在线支付下单接口CS-003创建微信/支付宝线上支付订单biz_chargebiz_collectionbk_transaction
IF-CS-004电子发票消费接口CS-004查询、下载、推送本人已开具电子发票biz_invoicebiz_cust_invoice
IF-CS-005网点与业务办理接口CS-005查询营业网点、预约信息、可办事项biz_outletsbiz_business_types
IF-CS-006业务办理进度接口CS-006提交业务申请、查询办理进度与附件biz_processbiz_process_transferbiz_content_attach
IF-CS-007柜面扫码支付接口CS-007创建柜面扫码支付订单并回写结果biz_collectionbk_transactionbiz_charge
+

1.4.3 UP 接口清单

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称归属模块主要用途主要数据对象
IF-UP-001用户登录接口UP-001用户登录并获取访问令牌system_userssystem_oauth2_access_tokensystem_login_log
IF-UP-002用户信息接口UP-001查询当前登录用户上下文信息system_userssystem_dept
IF-UP-003权限校验接口UP-002校验菜单、按钮、数据权限system_rolesystem_role_menusystem_user_role
IF-UP-004参数字典接口UP-003查询字典、参数、配置项system_dict_typesystem_dict_databiz_parameter_settings
+

1.4.4 METER 接口清单

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称归属模块主要用途主要数据对象
IF-METER-001水表档案查询接口METER-001查询水表档案、状态与生命周期信息biz_meterbiz_meter_modelbiz_meter_caliberbiz_meter_range
IF-METER-002表务工单处理接口METER-003提交换表、移表、校表、维修等工单处理结果biz_meter_logbiz_processbiz_process_transfer
IF-METER-003库存出入库接口METER-002处理领用、退库、报废等库存动作biz_meter_in_outbiz_meter_in_out_rel
IF-METER-004集抄数据接收接口METER-003接收远传抄表、异常告警并同步状态biz_reading_databiz_meter_readbiz_last_reading
+

1.4.5 INST 接口清单

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称归属模块主要用途主要数据对象
IF-INST-001报装申请提交接口INST-001提交报装申请、附件与基础资料biz_processbiz_contentbiz_content_attach
IF-INST-002踏勘结果回填接口INST-001回填现场踏勘、方案与审核结果biz_process_transferbiz_business_datas
IF-INST-003合同签署发起接口INST-002发起电子签章任务并传输合同信息installation_contractinstallation_signature
IF-INST-004签章回执接口INST-002回写签章结果、时间戳和存证信息installation_signatureinstallation_evidence
IF-INST-005报装归档接口INST-003归档申请、合同、验收与签章回执资料biz_content_attachinstallation_evidence
+

1.5 关键内部接口说明

+

1.5.1 IF-UP-001 用户登录接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-UP-001
归属模块UP-001
请求方式POST
请求路径/admin-api/system/auth/login
功能描述统一认证入口,签发访问令牌并输出用户上下文
核心表system_userssystem_oauth2_access_tokensystem_login_log
+

1.5.2 IF-REV-001 +客户信息查询接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-001
归属模块REV-001
请求方式GET
请求路径/admin-api/revenue/customer/{id}
功能描述查询客户主档、账户状态、联系人、水表绑定及开票资料
核心表biz_custbiz_accountbiz_cust_contactbiz_cust_meterbiz_cust_invoice
+

响应结果以客户主档为中心,组合返回账户余额、欠费金额、联系人列表、水表列表与开票资料摘要。

+

1.5.3 IF-REV-004 +抄表数据提交接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-004
归属模块REV-002
请求方式POST
请求路径/admin-api/revenue/reading-data/create
功能描述接收人工或远传抄表数据,执行校验、估抄判断、异常标记
核心表biz_meter_readbiz_reading_databiz_last_readingbiz_reading_logs
+

典型请求体:

+
{
+  "meterReadId": 1001,
+  "meterId": 2001,
+  "readTime": "2026-03-11 09:30:00",
+  "currentReading": 156.32,
+  "readType": "MANUAL",
+  "photoList": [
+    "file-001",
+    "file-002"
+  ],
+  "gps": "119.2965,26.0745",
+  "remark": "现场抄表正常"
+}
+

1.5.4 IF-REV-005 账单生成接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-005
归属模块REV-002
请求方式POST
请求路径/admin-api/revenue/charge/generate
功能描述基于抄表结果、水价模板、阶梯规则、费用组成生成账单,并返回成功清单、失败清单与生成汇总
核心表biz_chargebiz_charge_detailbiz_price_templatebiz_price_tier_adjustmentbiz_cost_component
+

边界约束: - +本接口只负责抄表校验完成后的账单生成,不直接承接收费核销、发票申请、催缴执行或统计汇总。 +- 正式请求范围可按抄表批次、客户集合或抄表任务集合组织;当前 backend +已实现入口为 /business/charge/charge-batch 与 +/business/charge/check-charge-batch,请求体仅接受 +readingDataIds。 - +价格模板、费用组成、阶梯规则、计划用水方案等任一关键规则缺失时,应阻断生成并返回失败原因,而不是生成不完整账单。 +- 特殊开账、无码客户开账、罚款类开账等非标准来源仍沿用同一 +biz_charge / biz_charge_detail +承接口径,不单设平行在线账表。 - 当前实现仅支持 +SettleTypeEnum.ACTUAL_USAGE;固定水量、按人口数、最低消费等结算方式暂未纳入现有开账链路。

+

当前 backend 证据与契约缺口: - +ChargeServiceImpl.generateCheckChargeBatch 已支持“批量复核 ++ 批量开账”,并通过 generateSingleChargeWithCache 写入 +biz_chargebiz_charge_detail,说明主明细承接路径已存在。 +- 返回值当前为 +CommonResult<String>,仅表达“本次复核成功X条 / +本次开账成功Y条”,尚未提供正式契约要求的成功清单、失败清单、生成汇总和主明细结果对象。 +- 单条失败当前主要以 log.warn + false +跳过处理,尚未形成可直接对外返回的结构化阻断码、失败原因集合与对象范围。

+

1.5.5 IF-REV-006 缴费处理接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-006
归属模块REV-003
请求方式POST
请求路径/admin-api/revenue/collection/create
功能描述处理柜台收费、预存抵扣、渠道收款确认与账单核销
核心表biz_collectionbiz_chargebk_transaction
+

1.5.6 IF-REV-007 账务调整接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-007
归属模块REV-004
请求方式POST
请求路径/admin-api/revenue/accounting/adjust
功能描述发起水量调整、金额调整、退款、冲正、坏账申请五类账务处理,并统一返回处理结果、审批边界与账单回写状态
核心表biz_chargebiz_charge_detailbiz_operat_logbk_transaction*
+

边界约束: - 一期仅覆盖 +USAGEAMOUNTREFUNDREVERSEBAD_DEBT +五类 adjustType。 - 退款、冲正必须提供 +sourceTradeNo +并完成原交易校验;其他场景不得误用支付流水替代业务依据。 - +审批相关内容仅保留 +approvalRequiredPENDING_APPROVAL +与边界说明,不展开 BPM 节点与审批回写实现细节。 - +resultStatuswriteBackStatus +必须分离表达,前者表示处理结论,后者表示账单状态回写结论。

+

1.5.7 IF-REV-008 发票申请接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-008
归属模块REV-005
请求方式POST
请求路径/business/invoice/apply
功能描述后台对已收费未开票账单发起单笔/批量开票申请,并在同一管理域内受理作废/红冲后处理入口
核心表biz_invoicebiz_invoice_taxratebiz_cust_invoice
+

边界约束: - +一期仅支持后台营业收费员/财务人员发起申请,客户侧不直接调用本接口。 - +发票开具、作废、红冲能力均由 SYS-008 +统一承接税控侧处理,SYS-002 +负责业务单据归集、申请发起、后台作废/红冲触发、查询补偿与结果落账。 - +后台发票后处理沿同一管理域补充 /business/invoice/invalidate +与 /business/invoice/red-ink +两个入口,分别承接作废与红冲动作;处理结果继续通过 +IF-REV-009IF-EXT-007 统一收口。 - +原始单账单不支持直接任意部分金额开票;如需多张发票,应基于拆账/分账后的账单集合申请。

+

1.5.8 IF-REV-009 +发票结果查询接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-009
归属模块REV-005
请求方式POST
请求路径/business/invoice/query(补偿查询:/business/invoice/query/compensate
功能描述后台按申请单号/受理号查询开票、作废或红冲结果,并支持系统补偿查询兜底
核心表biz_invoicebiz_operat_log
+

1.5.9 IF-REV-013 +催缴任务生成与结果承接接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-013
归属模块REV-006
请求方式POST
请求路径/admin-api/revenue/reminder/task(查询:/admin-api/revenue/reminder/task/query,人工核查:/admin-api/revenue/reminder/task/manual-verify
功能描述基于欠费账单、催缴策略和渠道偏好生成催缴任务,查询任务状态,并承接业务侧四态结果与处置引用
核心表biz_chargebiz_charge_detailbiz_operat_log、历史催缴查询口径
+

边界约束: - IF-REV-013REV-006 +的正式业务接口编号,不再复用 IF-REV-009。 - +SYS-002 +负责催缴对象筛选、任务生成、业务事件号维护、四态状态承接和历史查询;SYS-010 +只负责触达执行与结果回传。 - 接口状态固定为 +PENDINGSUCCESSFAILMANUAL_VERIFIED +四态,不在本轮扩展“已阅读”“已补发”等细粒度业务状态。 - +停复水仅作为联动边界与处置引用承接项,不在本接口中展开停复水内部流程。

+

1.5.10 IF-REV-010 统计查询接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-010
归属模块REV-007
请求方式POST
请求路径/admin-api/revenue/statistics/query(导出:/admin-api/revenue/statistics/export
功能描述面向营收经营分析场景查询统计主题、维度汇总和指标结果,并在权限范围内支持导出
核心表biz_chargebiz_charge_detailbiz_collectionbk_transactionbiz_custbiz_accountbiz_meter_bookbiz_reading_data
+

边界约束: - IF-REV-010 +只承接经营统计查询,不扩展到预测分析、BI 专题大屏或独立数仓查询。 - +统计口径按“主题 + 维度 + 指标”组织,避免仅以报表名称表达接口范围。 - +导出属于查询扩展能力,必须受数据权限和导出权限控制。 - +没有明确实现证据的独立统计表、专题分析表或离线汇总表不得写成既成事实。

+

1.5.11 IF-REV-011 +银行代收协同接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-011
归属模块REV-008
请求方式POST
请求路径/admin-api/revenue/bank/withholding/batch
功能描述创建代扣批次、发起对账、接收结算回写
核心表biz_withholdingbk_withholding_batchbk_reconcile_batchbk_settlement_batch
+

边界约束: - IF-REV-011 +在当前阶段主要承接正式业务协同边界,不等同于送盘、回盘、对账、结算全部已闭环。 +- 已确认的后台管理入口可证明批次、差异、结算台账对象存在,但不能替代银行 +app 协同接口的完成度判断。

+

1.5.12 IF-REV-012 +业务参数配置接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-REV-012
归属模块REV-009
请求方式GET / POST
请求路径/admin-api/revenue/parameter/config
功能描述查询与维护价格模板、业务参数、页面参数与规则配置
核心表biz_parameter_settingsbiz_price_*biz_page_settings*
+

1.5.13 IF-CS-001 账户绑定接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-CS-001
归属模块CS-001
请求方式POST
请求路径/app-api/customer/account/bind
功能描述绑定、解绑、切换默认客户账户,并校验渠道身份与客户关系
核心表biz_cust_app_bindsbiz_custbiz_account
+

1.5.14 IF-CS-002 +历史账单查询接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-CS-002
归属模块CS-002
请求方式GET
请求路径/app-api/customer/bill/history
功能描述查询账单、欠费、缴费、用水历史及发票摘要
核心表biz_chargebiz_charge_detailbiz_reading_databiz_invoice
+

1.5.15 IF-CS-003 +在线支付下单接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-CS-003
归属模块CS-003
请求方式POST
请求路径/app-api/customer/payment/order
功能描述面向微网厅、微信、支付宝等客户渠道创建支付订单
核心表biz_chargebiz_collectionbk_transaction
+

边界约束: - 支付通道、支付回调、对账流水由 SYS-009 +负责。 - SYS-002 +负责校验待缴账单、生成业务订单、更新核销结果。

+

1.5.16 IF-CS-004 +电子发票消费接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-CS-004
归属模块CS-004
请求方式POST
请求路径/business/invoice/customer/query/business/invoice/customer/download/business/invoice/customer/push
功能描述面向客户渠道查询、下载、推送本人已开具电子发票
核心表biz_invoicebiz_cust_invoicebiz_invoice_taxrate
+

边界约束: - 一期客户侧仅消费已形成 SUCCESS +终态且具备票据地址的电子发票结果,不直接发起开票申请。 - +发票作废、红冲仍由 SYS-008 +统一承接税控侧处理;IF-CS-004 +仅消费当前仍可展示、下载、推送的有效电子发票结果,不开放客户侧直接发起作废或红冲。

+

1.5.17 IF-CS-006 +业务办理进度接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-CS-006
归属模块CS-006
请求方式GET / POST
请求路径/app-api/customer/process
功能描述提交业务办理申请、查询办理进度、补充附件资料
核心表biz_processbiz_process_transferbiz_business_datasbiz_content_attach
+

1.5.18 IF-CS-007 +柜面扫码支付接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-CS-007
归属模块CS-007
请求方式POST
请求路径/admin-api/counter/scan-pay/create
功能描述柜台生成扫码订单,接收支付结果并回写收费状态
核心表biz_collectionbk_transactionbiz_charge
+

1.5.19 IF-METER-001 +水表档案查询接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-METER-001
归属模块METER-001
请求方式GET
请求路径/admin-api/meter/archive/{id}
功能描述查询水表档案、状态、参数与生命周期信息
核心表biz_meterbiz_meter_modelbiz_meter_caliberbiz_meter_range
+

1.5.20 IF-METER-002 +表务工单处理接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-METER-002
归属模块METER-003
请求方式POST
请求路径/admin-api/meter/work-order/handle
功能描述提交换表、移表、校表、维修等工单处理结果并回写设备状态
核心表biz_meter_logbiz_processbiz_process_transfer
+

1.5.21 IF-METER-003 +库存出入库接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-METER-003
归属模块METER-002
请求方式POST
请求路径/admin-api/meter/stock/in-out
功能描述处理领用、退库、报废等库存动作并更新生命周期状态
核心表biz_meter_in_outbiz_meter_in_out_relbiz_meter
+

1.5.22 IF-METER-004 +集抄数据接收接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-METER-004
归属模块METER-003
请求方式POST
请求路径/admin-api/meter/iot/reading/receive
功能描述接收远传抄表、设备状态和异常告警并同步读数状态
核心表biz_reading_databiz_meter_readbiz_last_reading
+

1.5.23 IF-INST-001 +报装申请提交接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-INST-001
归属模块INST-001
请求方式POST
请求路径/admin-api/installation/apply/create
功能描述提交报装申请、基础资料与附件,并创建流程实例
核心表biz_processbiz_contentbiz_content_attach
+

1.5.24 IF-INST-002 +踏勘结果回填接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-INST-002
归属模块INST-001
请求方式POST
请求路径/admin-api/installation/survey/result
功能描述回填现场踏勘结果、方案版本和审核结论
核心表biz_process_transferbiz_business_datas
+

1.5.25 IF-INST-003 +合同签署发起接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-INST-003
归属模块INST-002
请求方式POST
请求路径/admin-api/installation/contract/sign/initiate
功能描述发起报装合同签署流程,并与 CA 系统协同处理签章、时间戳和存证
核心表installation_contractinstallation_signatureinstallation_evidence
+

1.5.26 IF-INST-004 +签章回执接口

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-INST-004
归属模块INST-002
请求方式POST
请求路径/admin-api/installation/contract/sign/callback
功能描述回写签章结果、时间戳、存证回执与签章文件地址
核心表installation_signatureinstallation_evidence
+

1.5.27 IF-INST-005 +报装归档接口

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目说明
接口编号IF-INST-005
归属模块INST-003
请求方式POST
请求路径/admin-api/installation/archive/submit
功能描述归档申请资料、验收附件、合同文件与签章回执
核心表biz_content_attachinstallation_evidencebiz_process
+

1.6 字段级请求与响应定义

+
+

说明:以下字段级定义服务于接口设计说明,重点体现业务含义、来源对象与跨系统协同所需关键字段,不等同于数据库表的完整字段清单。

+
+

1.6.1 IF-REV-001 +客户信息查询接口

+

1.6.1.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源
idLong客户主键 ID,与 code 二选一biz_cust.id
codeString客户编号,与 id 二选一biz_cust.code
mobileString客户手机号,支持模糊校验查询biz_cust.mobile / +biz_cust_contact.mobile
queryTypeString查询类型:baseaccountmeterinvoiceall查询控制参数
+

1.6.1.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
idLong客户主键 IDbiz_cust.id
codeString客户编号biz_cust.code
nameString客户名称biz_cust.name
custTypeString客户类型biz_cust.cust_type
mobileString主要联系电话biz_cust.mobile
addressString客户地址biz_cust.address
accountInfoObject账户信息对象biz_account
accountInfo.balanceDecimal账户余额biz_account.balance
accountInfo.arrearsAmountDecimal欠费金额biz_account.arrears_amount
accountInfo.statusString账户状态biz_account.status
contactListArray联系人列表biz_cust_contact
meterListArray绑定水表列表biz_cust_meterbiz_meter
invoiceInfoObject开票信息摘要biz_cust_invoice
+

1.6.2 IF-REV-004 +抄表数据提交接口

+

1.6.2.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
meterReadIdLong抄表任务 IDbiz_meter_read.id
meterIdLong水表 IDbiz_meter.id
readTimeDatetime抄表时间biz_reading_data.read_time
currentReadingDecimal本次读数biz_reading_data.current_reading
readTypeString抄表方式:MANUALIOTIMPORTbiz_reading_data.read_type
usageAmountDecimal本次用量,可由系统自动计算biz_reading_data.usage_amount
photoListArray表盘照片或现场图片文件标识附件系统 / 文件服务
gpsString现场坐标扩展信息
remarkString异常说明或现场备注biz_reading_logs.remark
abnormalFlagBoolean是否标记异常过程状态
+

1.6.2.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
readingIdLong抄表数据主键biz_reading_data.id
meterReadIdLong抄表任务 IDbiz_meter_read.id
validateStatusString校验状态:PASSWARNREJECT校验结果
abnormalFlagBoolean是否识别为异常过程判断
nextActionString后续动作:BILLINGRECHECKMANUAL_REVIEW流程控制
msgString处理说明返回消息
+

1.6.3 IF-REV-005 账单生成接口

+

1.6.3.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
billPeriodString账期,如 2026-03开账批次参数
readingBatchNoString抄表批次号抄表批次
customerIdsArray指定客户范围biz_cust.id
meterReadIdsArray指定抄表任务范围biz_meter_read.id
dueDateDate应收截止日期biz_charge.due_date
operatorIdLong发起操作人操作上下文
+

1.6.3.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
generateCountInteger成功生成账单数量汇总信息
successListArray成功明细列表biz_charge
successList[].chargeIdLong账单主键biz_charge.id
successList[].chargeCodeString账单编号biz_charge.code
successList[].custIdLong客户 IDbiz_charge.cust_id
successList[].totalAmountDecimal账单总金额biz_charge.total_amount
failureListArray失败明细列表处理结果
failureList[].reasonString失败原因异常信息
+

1.6.4 IF-REV-006 缴费处理接口

+

1.6.4.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
custIdLong客户 IDbiz_charge.cust_id
chargeIdsArray待核销账单 ID 列表biz_charge.id
paymentChannelString支付渠道:CASHWECHATALIPAYBANKPREPAY渠道参数
paymentAmountDecimal本次支付金额biz_collection.amount
actualAmountDecimal实收金额,柜台收费场景使用柜台收费扩展
tradeNoString外部交易流水号bk_transaction.trade_no
outletCodeString柜台或网点编号biz_outlets.code
remarkString收费备注biz_collection.remark
+

1.6.4.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
collectionIdLong收费记录 IDbiz_collection.id
collectionCodeString收费业务编号biz_collection.code
writeOffStatusString核销状态:SUCCESSPARTIALPENDING业务状态
paidAmountDecimal已支付金额汇总结果
remainAmountDecimal剩余待支付金额汇总结果
tradeNoString渠道交易流水号bk_transaction.trade_no
invoiceAvailableBoolean是否可发起开票业务判断
+

1.6.5 IF-REV-007 账务调整接口

+

1.6.5.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
chargeIdLong目标账单 IDbiz_charge.id
adjustTypeString调整类型:USAGEAMOUNTREFUNDREVERSEBAD_DEBT业务类型
adjustAmountDecimal调整金额biz_charge_detail / 业务计算
adjustUsageDecimal调整水量业务计算
sourceTradeNoString原交易流水号,退款/冲正场景使用bk_transaction.trade_no
reasonCodeString调整原因编码业务字典
remarkString调整说明biz_operat_log.remark
attachmentListArray依据附件附件系统
operatorIdLong操作人 ID操作上下文
+

1.6.5.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
adjustmentNoString调整业务编号业务流水
chargeIdLong目标账单 IDbiz_charge.id
resultStatusString处理状态:SUCCESSPENDING_APPROVALFAIL业务状态
writeBackStatusString账单回写状态业务状态
approvalRequiredBoolean是否进入审批流程判断
msgString处理说明返回消息
+

1.6.6 IF-REV-008 发票申请接口

+

1.6.6.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
applicationNoString发票申请单号服务端生成,作为幂等主键之一
custIdLong客户 IDbiz_invoice.cust_id
chargeIdsArray开票关联账单 ID 列表业务单据关联
invoiceTypeString发票类型:ELECTRONICPAPERbiz_invoice.invoice_type
invoiceTitleString发票抬头biz_cust_invoice.invoice_title
taxNoString税号biz_cust_invoice.tax_no
emailString电子发票接收邮箱biz_cust_invoice.email
mobileString接收手机号biz_cust_invoice.mobile
sourceChannelString来源渠道:COUNTERFINANCE_BACKOFFICE业务来源
remarkString申请备注操作留痕
+

1.6.6.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
invoiceIdLong发票申请记录 IDbiz_invoice.id
applicationNoString发票申请单号biz_invoice.application_no
invoiceStatusString状态:SUBMITTEDPENDINGREJECTEDbiz_invoice.invoice_status
sysRequestNoString发往 SYS-008 的受理号协同流水
msgString处理说明返回消息
+

1.6.6.3 申请校验与幂等约束

+ +

1.6.6.4 +后台作废请求参数(/business/invoice/invalidate

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
invoiceIdLong发票记录 IDbiz_invoice.id
invalidReasonString作废原因biz_invoice.invalid_reason
invalidRemarkString作废备注biz_invoice.invalid_remark
originalInvoiceCodeString原发票代码;传入时必须与当前发票记录一致biz_invoice.original_invoice_code
originalInvoiceNumberString原发票号码;传入时必须与当前发票记录一致biz_invoice.original_invoice_number
+

1.6.6.5 +后台红冲请求参数(/business/invoice/red-ink

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
invoiceIdLong发票记录 IDbiz_invoice.id
redInkReasonString红冲原因biz_invoice.red_ink_reason
redInkRemarkString红冲备注biz_invoice.red_ink_remark
originalInvoiceCodeString原发票代码;传入时必须与当前发票记录一致biz_invoice.original_invoice_code
originalInvoiceNumberString原发票号码;传入时必须与当前发票记录一致biz_invoice.original_invoice_number
+

1.6.6.6 后台作废/红冲处理约束

+ +

1.6.7 IF-REV-009 +发票结果查询接口

+

1.6.7.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
applicationNoString发票申请单号,与 sysRequestNo 二选一biz_invoice.application_no
sysRequestNoStringSYS-008 受理号,与 applicationNo +二选一biz_invoice.sys_request_no
querySourceString查询来源:MANUALAUTO_COMPENSATECALLBACK_VERIFY查询触发上下文
+

1.6.7.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
invoiceIdLong发票主记录 IDbiz_invoice.id
applicationNoString发票申请单号biz_invoice.application_no
sysRequestNoStringSYS-008 受理号biz_invoice.sys_request_no
invoiceStatusString状态:SUBMITTEDPENDINGSUCCESSFAILINVALIDRED_INKbiz_invoice.invoice_status
invoiceCodeString发票代码biz_invoice.invoice_code
invoiceNumberString发票号码biz_invoice.invoice_number
fileUrlString电子发票文件地址biz_invoice.file_url
failReasonString失败原因biz_invoice.fail_reason
pushStatusString电子发票推送状态biz_invoice.push_status
lastQueryTimeDateTime最近一次查询时间biz_invoice.last_try_time
tryCountInteger累计查询次数biz_invoice.try_count
latestResultString最近一次查询结果摘要biz_invoice.latest_result
latestErrorString最近一次查询异常说明biz_invoice.latest_error
msgString处理说明返回消息
+

1.6.7.3 查询补偿与状态流转约束

+ +

1.6.8 IF-REV-013 +催缴任务生成与结果承接接口

+

1.6.8.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
taskNoString催缴任务号;查询/人工核查时必填任务主键
custIdLong客户标识biz_charge.cust_id
chargeIdsArray欠费账单集合biz_charge.id
billPeriodString账期biz_charge.bill_period
arrearsAmountDecimal欠费金额汇总欠费汇总结果
strategyCodeString命中的催缴策略编码策略规则
channelTypeString触达渠道:短信/微信公众号/站内信等任务分组结果
triggerTypeString触发方式:AUTO / MANUAL任务触发上下文
eventNoString业务事件号;生成后返回,回写承接时作为关联键协同事件主键
relatedDisposalRefString关联停复水或工单引用联动追溯信息
manualVerifyNoteString人工核查说明;仅人工核查时填写核查留痕
+

1.6.8.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
taskNoString催缴任务号任务主键
interfaceCodeString固定返回 IF-REV-013接口常量
eventNoString业务事件号协同主键
statusString状态:PENDINGSUCCESSFAILMANUAL_VERIFIED任务状态
resultTimeDateTime最近结果时间结果回写时间
failureReasonString失败原因失败回写
resultChannelString实际触达渠道协同结果
relatedDisposalRefString关联停复水或工单引用联动追溯
msgString处理说明返回消息
+

1.6.8.3 任务生成与状态承接约束

+ +

1.6.8.4 失败阻断与人工核查约束

+ +

1.6.9 IF-REV-010 统计查询接口

+

1.6.9.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
themeCodeString统计主题编码查询主题
dateFromDate开始日期时间维度
dateToDate结束日期时间维度
billPeriodString账期biz_charge.bill_period
deptIdLong营业所/部门system_dept.id
regionCodeString片区/区域编码区域维度
customerCategoryString客户类别客户标签/分类
channelCodeString收费/交易渠道bk_payment_channel.channel_code
accountIdLong账户标识biz_account.id
custIdLong客户标识biz_cust.id
statusSetArray状态集合账单/收费/抄表等状态筛选
groupByArray分组维度集合结果分组
exportFlagBoolean是否导出导出控制
+

1.6.9.2 响应参数

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
themeCodeString统计主题编码查询主题
themeNameString统计主题名称主题定义
dimensionSummaryObject查询维度摘要查询条件
indicatorListArray指标结果集合聚合结果
indicatorList[].indicatorCodeString指标编码指标定义
indicatorList[].indicatorNameString指标名称指标定义
indicatorList[].indicatorValueDecimal/String指标值聚合结果
indicatorList[].unitString指标单位指标定义
groupRowsArray分组结果集合维度分组结果
exportAllowedBoolean是否允许导出权限结果
msgString处理说明返回消息
+

1.6.9.3 查询主题与口径约束

+ +

1.6.10 IF-REV-011 +银行代收协同接口

+

1.6.10.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
batchNoString代扣批次号bk_withholding_batch.batch_no
businessTypeString业务类型:WITHHOLDINGRECONCILESETTLEMENT协同类型
channelCodeString渠道编码bk_payment_channel.channel_code
billPeriodString账期批处理参数
itemListArray批次明细列表bk_withholding_item
itemList[].custIdLong客户 IDbk_withholding_item.cust_id
itemList[].chargeIdLong账单 IDbk_withholding_item.charge_id
itemList[].amountDecimal扣款金额业务金额
+

1.6.10.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
batchNoString批次号bk_withholding_batch.batch_no
batchStatusString批次状态:CREATEDSENTRETURNEDRECONCILEDSETTLED批次状态
successCountInteger成功处理条数汇总结果
failCountInteger失败条数汇总结果
reconcileStatusString对账状态bk_reconcile_batch.status
settlementStatusString结算状态bk_settlement_batch.status
diffListArray差异清单摘要bk_reconcile_diff
+

1.6.11 IF-REV-012 +业务参数配置接口

+

1.6.11.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
actionString动作:QUERYCREATEUPDATE配置动作
configTypeString配置类型:PRICERULEPAGENOTICEbiz_parameter_settings.config_type
configCodeString配置编码biz_parameter_settings.config_code
configValueString配置值或 JSON 内容biz_parameter_settings.config_value
deptIdLong生效单位作用域参数
effectiveDateDate生效日期生效控制
operatorIdLong操作人 ID操作上下文
+

1.6.11.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
configIdLong配置主键biz_parameter_settings.id
configCodeString配置编码biz_parameter_settings.config_code
configVersionString配置版本版本信息
effectScopeString生效范围作用域结果
effectStatusString生效状态:DRAFTACTIVEEXPIRED业务状态
msgString处理说明返回消息
+

1.6.12 IF-CS-001 账户绑定接口

+

1.6.12.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
actionString动作:BINDUNBINDSET_DEFAULT绑定动作
channelTypeString渠道类型:WECHATALIPAYMINIAPP渠道上下文
channelUserIdString渠道用户标识,如 OpenId渠道上下文
custIdLong客户 IDbiz_cust.id
accountIdLong账户 IDbiz_account.id
verifyCodeString验证码或身份校验码安全校验
defaultFlagBoolean是否设为默认账户biz_cust_app_binds.is_default
+

1.6.12.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
bindIdLong绑定关系 IDbiz_cust_app_binds.id
bindStatusString绑定状态:BOUNDUNBOUND业务状态
defaultFlagBoolean是否默认账户biz_cust_app_binds.is_default
custSummaryObject客户摘要信息biz_cust
msgString处理说明返回消息
+

1.6.13 IF-CS-002 +历史账单查询接口

+

1.6.13.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
custIdLong客户 ID客户上下文
queryTypeString查询类型:BILLPAYMENTUSAGEARREARSINVOICE查询控制
billPeriodString账期,如 2026-03biz_charge.bill_period
chargeStatusString账单状态筛选biz_charge.status
pageNoInteger页码分页参数
pageSizeInteger每页数量分页参数
+

1.6.13.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
totalInteger总记录数分页结果
listArray查询结果列表聚合结果
list[].chargeIdLong账单 IDbiz_charge.id
list[].billPeriodString账期biz_charge.bill_period
list[].usageAmountDecimal用量biz_reading_data.usage_amount
list[].payStatusString缴费状态业务状态
list[].invoiceStatusString开票状态biz_invoice.invoice_status
+

1.6.14 IF-CS-004 +电子发票消费接口

+

1.6.14.1 查询/下载请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
custIdLong客户 IDbiz_invoice.cust_id
invoiceIdLong发票记录 ID,三选一优先键biz_invoice.id
applicationNoString发票申请单号biz_invoice.application_no
sysRequestNoStringSYS-008 受理号biz_invoice.sys_request_no
+

1.6.14.2 推送请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
custIdLong客户 IDbiz_invoice.cust_id
invoiceIdLong发票记录 IDbiz_invoice.id
applicationNoString发票申请单号biz_invoice.application_no
pushChannelString推送方式:EMAILSMS推送动作
pushEmailString推送邮箱,EMAIL 时优先使用目标地址
pushMobileString推送手机号,SMS 时优先使用目标地址
+

1.6.14.3 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
invoiceIdLong发票记录 IDbiz_invoice.id
applicationNoString发票申请单号biz_invoice.application_no
invoiceStatusString当前状态biz_invoice.invoice_status
invoiceCodeString发票代码biz_invoice.invoice_code
invoiceNumberString发票号码biz_invoice.invoice_number
fileUrlString发票下载地址biz_invoice.file_url
pushStatusString推送状态:NONEPUSHEDFAILbiz_invoice.push_status
chargeBindStatusString账单关联状态:UNBOUNDBOUNDbiz_invoice.charge_bind_status
msgString处理说明返回消息
+

1.6.14.4 客户侧消费约束

+ +

1.6.15 IF-CS-003 +在线支付下单接口

+

1.6.15.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
custIdLong客户 ID客户上下文
chargeIdsArray待支付账单 ID 列表biz_charge.id
paymentChannelString支付渠道:WECHATALIPAY渠道参数
paymentAmountDecimal支付金额bk_transaction.trade_amount
openIdString微信渠道用户标识微信场景
returnUrlString前端完成跳转地址前端场景
notifyUrlString支付结果通知地址回调地址
+

1.6.15.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
bizOrderNoStringSYS-002 业务订单号biz_collection.code / 业务单号
tradeNoString渠道交易流水号bk_transaction.trade_no
orderStatusString订单状态:INITPAYINGSUCCESSFAIL交易状态
payUrlString支付链接或二维码地址渠道返回
prepayInfoObject预支付参数对象渠道返回
expireTimeDatetime订单失效时间交易参数
+

1.6.16 IF-CS-006 +业务办理进度接口

+

1.6.16.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
processIdLong办理流程 ID,查询场景使用biz_process.id
businessTypeCodeString业务类型编码,如更名、过户、低保、换表biz_business_types.code
custIdLong客户 ID客户上下文
applyDataObject业务申请主体数据biz_business_datas
attachmentListArray附件文件标识列表biz_content_attach
actionString动作:CREATEQUERYSUPPLEMENT流程动作
+

1.6.16.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
processIdLong办理流程 IDbiz_process.id
processCodeString流程编号biz_process.code
processStatusString当前状态:INITACCEPTEDPROCESSINGDONEREJECTEDbiz_process.status
currentNodeString当前办理节点流程状态
transferListArray流转轨迹biz_process_transfer
attachmentRequiredBoolean是否需要补件业务判断
msgString办理说明返回消息
+

1.6.17 IF-CS-007 +柜面扫码支付接口

+

1.6.17.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
counterCodeString柜台编号柜面终端
chargeIdsArray待支付账单 ID 列表biz_charge.id
paymentChannelString支付渠道:WECHATALIPAY渠道参数
orderAmountDecimal订单金额bk_transaction.trade_amount
operatorIdLong柜台操作员 ID操作上下文
sceneString场景标识,默认 COUNTER_SCAN_PAY场景参数
+

1.6.17.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
bizOrderNoString柜面业务订单号biz_collection.code
tradeNoString渠道交易流水号bk_transaction.trade_no
qrCodeString柜面展示二维码内容渠道返回
orderStatusString当前订单状态:INITPAYINGSUCCESSFAIL交易状态
writeBackStatusString营收状态回写结果业务状态
msgString处理说明返回消息
+

1.6.18 IF-METER-001 +水表档案查询接口

+

1.6.18.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源
idLong水表主键 ID,与 code 二选一biz_meter.id
codeString水表编号,与 id 二选一biz_meter.code
queryTypeString查询类型:basestatuslifeCycleall查询控制参数
+

1.6.18.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
idLong水表主键 IDbiz_meter.id
codeString水表编号biz_meter.code
meterStatusString水表状态biz_meter.status
modelCodeString型号编码biz_meter.model_code
caliberCodeString口径编码biz_meter.caliber_code
rangeCodeString量程编码biz_meter.range_code
installAddressString安装地址biz_meter.install_address
lastReadingDecimal最近有效读数biz_last_reading.last_reading
+

1.6.19 IF-METER-003 +库存出入库接口

+

1.6.19.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
actionString动作:INOUTRETURNSCRAP库存动作
batchNoString批次号biz_meter_in_out.batch_no
warehouseCodeString仓库编码仓储参数
meterIdsArray水表 ID 列表biz_meter.id
remarkString出入库说明biz_meter_in_out.remark
operatorIdLong操作人 ID操作上下文
+

1.6.19.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
inOutIdLong出入库主记录 IDbiz_meter_in_out.id
batchNoString批次号biz_meter_in_out.batch_no
actionStatusString处理状态:SUCCESSPARTIALFAIL业务状态
successCountInteger成功处理数量汇总结果
failCountInteger失败数量汇总结果
msgString处理说明返回消息
+

1.6.20 IF-METER-004 +集抄数据接收接口

+

1.6.20.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
meterCodeString水表编号biz_meter.code
readTimeDatetime采集时间biz_reading_data.read_time
currentReadingDecimal当前读数biz_reading_data.current_reading
deviceStatusString设备状态:ONLINEOFFLINEALARM设备状态
alarmListArray告警编码列表告警结果
fileSerialNoString上送批次或文件序列号幂等辅助键
sourceSystemString来源系统:IOTMDC来源标识
+

1.6.20.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
readingIdLong读数记录 IDbiz_reading_data.id
meterReadIdLong对应抄表任务 IDbiz_meter_read.id
acceptStatusString接收状态:SUCCESSWARNREJECT处理状态
abnormalFlagBoolean是否异常过程判断
nextActionString后续动作:BILLINGRECHECKMANUAL_REVIEW流程控制
msgString处理说明返回消息
+

1.6.21 IF-INST-001 +报装申请提交接口

+

1.6.21.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
applyTypeString报装类型:NEWREBUILDONE_METER_ONE_HOME业务类型
applicantNameString申请人姓名申请资料
mobileString联系手机号申请资料
addressString申请地址申请资料
waterUseTypeString用水性质业务字典
sourceChannelString来源渠道:COUNTERMINIAPPGOV来源标识
attachmentListArray申请附件列表biz_content_attach
+

1.6.21.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
processIdLong流程实例 IDbiz_process.id
processCodeString报装流程编号biz_process.code
processStatusString当前状态:INITACCEPTEDSURVEYINGbiz_process.process_status
acceptStatusString受理结果业务状态
msgString处理说明返回消息
+

1.6.22 IF-INST-002 +踏勘结果回填接口

+

1.6.22.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
processIdLong报装流程 IDbiz_process.id
schemeVersionString方案版本号biz_business_datas
surveyResultString踏勘结论biz_business_datas
estimateAmountDecimal预估费用biz_business_datas
attachmentListArray现场照片与方案附件biz_content_attach
auditResultString审核结果:PASSREJECT审核结果
+

1.6.22.2 响应参数

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
transferIdLong流转记录 IDbiz_process_transfer.id
processStatusString当前流程状态biz_process.process_status
nextNodeString下一节点流程控制
msgString处理说明返回消息
+

1.6.23 IF-INST-004 +签章回执接口

+

1.6.23.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
contractIdLong合同 IDinstallation_contract.id
requestNoString签章请求号协同流水
signStatusString签章状态:SUCCESSFAILCANCELinstallation_signature.signature_status
signerIdString签署人标识installation_signature.signer_id
signatureTimeDatetime签章时间installation_signature.signature_time
evidenceNoString存证编号installation_evidence.evidence_no
fileUrlString已签文件地址结果回写
hashValueString存证哈希installation_evidence.hash_value
resultMsgString结果说明返回消息
+

1.6.23.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
signatureIdLong签章记录 IDinstallation_signature.id
evidenceIdLong存证记录 IDinstallation_evidence.id
writeBackStatusString回写状态:SUCCESSIGNORE_REPEATFAIL业务状态
msgString处理说明返回消息
+

1.6.24 IF-INST-005 +报装归档接口

+

1.6.24.1 请求参数

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型必填说明主要来源/去向
processIdLong报装流程 IDbiz_process.id
archiveTypeString归档类型:APPLYACCEPTCHECKCONTRACTFINISH归档分类
attachmentListArray归档附件列表biz_content_attach
contractIdLong合同 IDinstallation_contract.id
evidenceIdLong存证记录 IDinstallation_evidence.id
operatorIdLong归档操作人操作上下文
+

1.6.24.2 响应参数

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段类型说明主要来源
archiveBatchNoString归档批次号业务流水
archiveStatusString归档状态:SUCCESSPARTIALFAIL业务状态
archiveCountInteger已归档文件数量汇总结果
msgString处理说明返回消息
+

1.7 关键接口时序图

+
+

说明:以下时序图用于说明 SYS-002 +与客户渠道、外部协同子系统之间的交互边界,重点体现业务校验、协同调用、结果回写与状态更新链路。

+
+

1.7.1 1. +在线支付下单与回调时序

+
sequenceDiagram
+    autonumber
+    participant Client as 客户渠道
+    participant SYS002 as SYS-002营收系统
+    participant SYS009 as SYS-009支付结算
+    participant Channel as 支付渠道
+
+    Client->>SYS002: 提交缴费下单请求(IF-CS-003)
+    SYS002->>SYS002: 校验客户、账单状态与应付金额
+    SYS002->>SYS002: 生成业务订单与收费记录草稿
+    SYS002->>SYS009: 发起支付下单协同(IF-EXT-004)
+    SYS009->>Channel: 调用微信/支付宝统一下单
+    Channel-->>SYS009: 返回tradeNo、payUrl/prepayInfo
+    SYS009-->>SYS002: 返回交易流水与支付参数
+    SYS002-->>Client: 返回bizOrderNo、payUrl、expireTime
+
+    Channel-->>SYS009: 异步支付结果通知
+    SYS009->>SYS009: 校验签名与交易状态
+    SYS009->>SYS002: 回写支付结果(IF-EXT-005)
+    SYS002->>SYS002: 幂等校验并更新biz_collection/biz_charge
+    SYS002-->>Client: 查询订单时返回最新支付状态
+
+

1.7.2 2. +电子发票申请、查询补偿与回写时序

+
sequenceDiagram
+    autonumber
+    participant Counter as 柜台或客户渠道
+    participant SYS002 as SYS-002营收系统
+    participant SYS008 as SYS-008发票服务
+    participant Tax as 税控/开票平台
+    participant Job as 查询补偿任务
+
+    Counter->>SYS002: 提交发票申请(IF-REV-008/IF-CS-004)
+    SYS002->>SYS002: 校验客户、账单、开票抬头与金额
+    SYS002->>SYS002: 生成发票申请记录biz_invoice(SUBMITTED)
+    SYS002->>SYS008: 发起开票协同(IF-EXT-006)
+    SYS008->>Tax: 调用税控或电子发票平台
+    Tax-->>SYS008: 返回受理结果/票号/文件地址
+    SYS008-->>SYS002: 返回受理号或异步结果
+    SYS002->>SYS002: 记录sysRequestNo并更新为PENDING
+    alt 发票服务主动回写
+        SYS008-->>SYS002: 回写开票结果(IF-EXT-007)
+        SYS002->>SYS002: 更新biz_invoice状态、票据地址与账单关联
+    else 未收到终态结果
+        Job->>SYS002: 触发补偿查询(IF-REV-009)
+        SYS002->>SYS008: 按申请单号/受理号查询结果
+        SYS008-->>SYS002: 返回处理中/成功/失败
+        SYS002->>SYS002: 刷新查询上下文并按终态规则落账
+    end
+    SYS002-->>Counter: 返回申请结果或供后续查询
+
+

1.7.3 3. +银行代扣批次与回盘时序

+
sequenceDiagram
+    autonumber
+    participant BatchJob as 代扣批处理任务
+    participant SYS002 as SYS-002营收系统
+    participant SYS009 as SYS-009支付结算
+    participant Bank as 银行渠道
+
+    BatchJob->>SYS002: 发起代扣批次处理(IF-REV-011)
+    SYS002->>SYS002: 汇总代扣客户、账单与协议关系
+    SYS002->>SYS002: 生成bk_withholding_batch/bk_withholding_item
+    SYS002->>SYS002: 解析 send/back/reconcile 目录并固化协议、目录、文件路径
+    SYS002->>SYS009: 下发银行代扣批次(IF-EXT-001)
+    SYS009->>Bank: 发送代扣文件或报文
+    Bank-->>SYS009: 返回受理结果
+    SYS009-->>SYS002: 回写批次发送状态
+
+    Bank-->>SYS009: 回盘文件/结果通知(IF-EXT-002)
+    SYS009->>SYS009: 解析成功、失败、异常明细
+    SYS009->>SYS002: 回写代扣结果、差异与结算状态
+    SYS002->>SYS002: 更新biz_withholding、账单核销、对账结算状态
+    SYS002-->>BatchJob: 返回批次处理汇总结果
+
+

1.7.4 4. +催缴通知下发与结果回写时序

+
sequenceDiagram
+    autonumber
+    participant Job as 催缴任务
+    participant SYS002 as SYS-002营收系统
+    participant SYS010 as SYS-010消息服务
+    participant User as 客户
+
+    Job->>SYS002: 触发催缴任务(IF-REV-013)
+    SYS002->>SYS002: 按欠费账单、渠道偏好生成催缴名单
+    SYS002->>SYS010: 提交通知下发请求(IF-EXT-008)
+    SYS010->>User: 发送短信/公众号/APP消息
+    User-->>SYS010: 触达回执或阅读反馈
+    SYS010-->>SYS002: 回写发送结果与触达状态
+    SYS002->>SYS002: 更新催缴记录、四态状态与后续策略
+    SYS002-->>Job: 返回催缴任务执行结果
+
+

## 数据对象与表口径

+

1.7.5 SYS-002 接口核心数据对象

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
数据域代表表接口说明
客户与账户biz_custbiz_accountbiz_cust_contact用于客户查询、账户绑定、资料维护
客户扩展关系biz_cust_meterbiz_cust_invoicebiz_cust_app_bindsbiz_cust_collection_relbiz_cust_withholding_rel用于客户关联对象查询与服务协同
抄表与开账biz_meter_bookbiz_meter_readbiz_reading_databiz_last_readingbiz_chargebiz_charge_detail用于抄表任务、账单生成、费用明细查询
价格与参数biz_price_*biz_cost_componentbiz_parameter_settingsbiz_page_settings*用于价格模板、业务参数、页面配置
收费与票据biz_collectionbiz_withholdingbiz_invoicebiz_invoice_taxrate用于收费、代扣、发票申请与回写
办理与资料biz_process*biz_business_datasbiz_content*用于业务办理与进度跟踪
银行代收与结算bk_transaction*bk_withholding_*bk_reconcile_*bk_settlement_batch用于支付流水、批次、回调、对账和结算
+

1.7.6 口径约束说明

+
    +
  1. 不再使用旧稿中的 +customer_*water_*billing_*thirdpay_*service_* +作为 SYS-002 正式接口数据口径。
  2. +
  3. 若历史资料中仍存在旧命名,仅作为来源参考,不作为正式交付口径。
  4. +
  5. 对 backend +中尚未明确存在独立实体表的对象,例如部分精细账务台账、红冲明细、价差调整明细等,本文仅描述为业务处理场景,不强写为既有独立接口对象。
  6. +
+

1.8 跨系统报文映射表

+
+

说明:以下映射表用于说明 SYS-002 与 +SYS-008SYS-009SYS-010 +之间的关键报文字段对应关系,重点体现业务主键、状态字段、金额字段与结果回写字段,不展开各外部平台私有扩展字段。

+
+

1.8.1 1. SYS-002 ↔︎ SYS-009 +支付下单与结果回写映射

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
协同场景SYS-002 字段SYS-009/渠道字段说明主要来源
支付下单bizOrderNobusinessOrderNoSYS-002 业务订单号,作为支付协同主键biz_collection.code
支付下单chargeIds[]orderItems[].sourceId待缴账单明细标识biz_charge.id
支付下单custIdbuyer.customerId客户标识biz_charge.cust_id / biz_cust.id
支付下单paymentAmounttradeAmount交易总金额bk_transaction.trade_amount
支付下单paymentChannelchannelCode支付渠道编码渠道参数 / bk_payment_channel.channel_code
支付下单notifyUrlnotifyUrl支付结果异步通知地址协同参数
下单返回tradeNotradeNo渠道交易流水号bk_transaction.trade_no
下单返回payUrl/prepayInfopayUrl/payParams二维码链接或预支付参数渠道返回
结果回写orderStatustradeStatus交易状态映射:INIT/PAYING/SUCCESS/FAILbk_transaction.status
结果回写paidAmountsuccessAmount实际支付成功金额biz_collection.amount / 渠道结果
结果回写callbackTimenotifyTime回调时间bk_transaction_callback.create_time
结果回写writeOffStatuswriteBackStatusSYS-002 核销处理结果业务状态
+

1.8.2 2. SYS-002 ↔︎ SYS-008 +发票申请与结果回写映射

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
协同场景SYS-002 字段SYS-008 字段说明主要来源
发票申请invoiceCoderequestNo发票申请单号 / 协同请求号biz_invoice.code
发票申请custIdcustomerId客户标识biz_invoice.cust_id
发票申请chargeIds[]billList[].sourceBillId开票关联账单标识业务单据关联
发票申请invoiceTitlebuyerName购方名称 / 抬头biz_cust_invoice.invoice_title
发票申请taxNobuyerTaxNo购方税号biz_cust_invoice.tax_no
发票申请invoiceTypeinvoiceType电子/纸质发票类型biz_invoice.invoice_type
发票申请taxRateCodetaxRateCode税率编码biz_invoice_taxrate.tax_code
发票申请email / mobilereceiver.email / receiver.mobile票据接收信息biz_cust_invoice.email / +biz_cust_invoice.mobile
结果回写invoiceStatusinvoiceStatus开票状态:受理中、成功、失败、作废、红冲等biz_invoice.invoice_status
结果回写invoiceNoinvoiceNo发票号码开票结果
结果回写fileUrlfileUrl发票文件下载地址回写结果
结果回写msgresultMsg结果说明返回消息
+

1.8.3 3. SYS-002 ↔︎ SYS-009 +银行代扣、对账、结算映射

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
协同场景SYS-002 字段SYS-009/银行字段说明主要来源
批次下发batchNobatchNo代扣批次号bk_withholding_batch.batch_no
批次下发businessTypebusinessType代扣/对账/结算类型协同参数
批次下发channelCodechannelCode渠道编码bk_payment_channel.channel_code
批次下发protocolprotocolSFTP/FTP 传输协议统一解析结果
批次下发sendDir / sendFilePathsendDir / sendFilePath送盘目录与文件路径bk_withholding_batch
批次下发billPeriodbillPeriod账期批处理参数
批次明细itemList[].custIditemList[].customerId客户标识bk_withholding_item.cust_id
批次明细itemList[].chargeIditemList[].sourceBillId账单标识bk_withholding_item.charge_id
批次明细itemList[].amountitemList[].withholdingAmount代扣金额业务金额
回盘回写batchStatusbatchStatus批次状态:已发送、已回盘等bk_withholding_batch.status
回盘回写backProtocol / backDir / +backFilePathbackProtocol / backDir / +backFilePath回盘阶段最终解析结果bk_withholding_batch
回盘回写successCount / failCountsuccessCount / failCount成功失败数量汇总汇总结果
对账回写protocol / dir / +filePathprotocol / dir / +filePath对账文件最终解析结果bk_reconcile_batch
对账回写reconcileStatusreconcileStatus对账状态bk_reconcile_batch.status
对账回写diffList[]diffList[]差异明细摘要bk_reconcile_diff
结算回写settlementStatussettlementStatus结算状态bk_settlement_batch.status
+

1.8.4 4. SYS-002 ↔︎ SYS-010 +催缴与业务通知映射

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
协同场景SYS-002 字段SYS-010 字段说明主要来源
催缴通知messageBizNoeventNo消息事件编号业务事件编号
催缴通知custIdreceiver.customerId接收客户标识biz_charge.cust_id / +biz_process.cust_id
催缴通知mobilereceiver.mobile接收手机号客户联系方式
催缴通知templateCodetemplateCode消息模板编码模板参数
催缴通知arrearsAmountpayload.arrearsAmount欠费金额biz_charge.total_amount / 汇总结果
催缴通知billPeriodpayload.billPeriod账期biz_charge.bill_period
催缴通知strategyCodepayload.strategyCode命中的催缴策略编码任务分组结果
催缴通知triggerTypepayload.triggerType自动/人工触发方式任务触发上下文
办理进度通知processCodepayload.processCode业务办理单号biz_process.code
办理进度通知processStatuspayload.processStatus办理状态biz_process.status
发送结果回写statussendStatus渠道回执由 SYS-002 统一映射为 +PENDING/SUCCESS/FAIL/MANUAL_VERIFIED 四态消息结果
发送结果回写reachStatusreachStatus触达/阅读状态渠道回执
发送结果回写sendTimesendTime发送时间消息结果
发送结果回写msgresultMsg结果说明返回消息
+

## 接口安全与异常处理

+

1.8.5 认证与鉴权

+ +

1.8.6 安全控制要求

+ +

1.8.7 错误码分层建议

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
错误码段说明
0成功
400~499请求参数、权限、资源不存在等通用错误
1_002_001_xxx客户主数据类错误
1_002_002_xxx抄表开账类错误
1_002_003_xxx收费与核销类错误
1_002_004_xxx账务处理类错误
1_002_005_xxx发票协同类错误
1_002_006_xxx银行代收与结算类错误
1_002_007_xxx客户渠道与业务办理类错误
1_002_008_xxx消息通知与触达类错误
+

1.8.8 典型错误码建议

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
错误码适用接口/场景说明处理建议
1_002_001_001IF-REV-001 / IF-REV-002客户不存在或已停用返回客户状态并阻断后续处理
1_002_001_002IF-CS-001账户绑定关系不存在引导重新绑定客户
1_002_002_001IF-REV-004抄表任务不存在或已关闭禁止提交抄表数据
1_002_002_002IF-REV-004本次读数小于上次读数且未通过异常审批标记异常并进入复核
1_002_002_003IF-REV-005价格模板或费用组成缺失阻断账单生成并提示补齐配置
1_002_003_001IF-REV-006 / IF-CS-003 / IF-CS-007账单已核销或不允许重复支付返回当前账单支付状态
1_002_003_002IF-REV-006支付金额与待核销金额不一致阻断核销并返回差额
1_002_003_003IF-EXT-005支付回调签名校验失败记录异常回调并拒绝入账
1_002_004_001IF-REV-007账务调整目标状态不允许变更返回当前账务状态
1_002_005_001IF-REV-008 / IF-CS-004发票申请单据不满足开票条件返回不可开票原因
1_002_005_002IF-EXT-007发票结果回写状态非法或重复按请求号执行幂等回写
1_002_006_001IF-REV-011 / IF-EXT-001代扣批次不存在或已发送禁止重复下发批次
1_002_006_002IF-EXT-002银行回盘文件格式非法或批次号不匹配记录异常并进入人工核查
1_002_006_003IF-REV-011对账差异未处理,禁止结算确认需先完成差异处置
1_002_007_001IF-CS-006业务办理单不存在返回空结果并提示核对单号
1_002_007_002IF-CS-006当前节点不允许补件或重复提交返回当前流程节点状态
1_002_008_001IF-REV-013 / IF-EXT-008消息模板不存在或目标联系方式缺失记录失败原因并允许后续补发
1_002_008_002IF-EXT-008消息通道调用超时标记待重试,不直接判定业务失败
1_002_008_003IF-REV-013人工核查补记缺少核查说明或关联任务不存在拒绝补记并提示补齐核查上下文
+

1.8.9 幂等与状态冲突控制

+

1.8.9.1 幂等键建议

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
场景接口建议幂等键幂等判定说明
支付下单IF-CS-003 / IF-CS-007bizOrderNo 或 +custId + chargeIds + paymentChannel相同业务订单仅允许创建一次有效支付单
支付回调IF-EXT-005tradeNo + tradeStatus + notifyTime同一交易成功回调只允许入账一次
发票申请IF-REV-008 / IF-CS-004invoiceCodecustId + chargeIds相同账单组合避免重复申请开票
发票结果回写IF-EXT-007requestNo + invoiceStatus相同发票状态重复回写仅更新回执日志
银行批次下发IF-REV-011 / IF-EXT-001batchNo同一代扣批次禁止重复发送
银行回盘接收IF-EXT-002batchNo + fileSerialNo同一回盘文件只处理一次
催缴通知IF-REV-013 / IF-EXT-008messageBizNo + templateCode + receiver同一业务事件与同一接收方避免重复发送
业务补件IF-CS-006processId + action + attachmentDigest相同补件内容重复提交仅保留一次
+

1.8.9.2 状态冲突处理原则

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
场景冲突条件处理原则
支付核销账单已完成核销后再次支付拒绝重复核销,返回现有 writeOffStatus
支付回调先收到失败回调,后收到成功回调以最终成功状态为准,但全过程保留回调日志
发票申请单据已开票成功后再次申请拒绝重复申请,返回既有发票信息
发票回写已成功开票后收到失败回写不覆盖成功状态,转入异常核查
银行代扣批次已发送后再次下发拒绝重复发送,保留原批次状态
对账结算差异未消除即发起结算禁止结算,提示先处理差异明细
催缴通知同一账期、同一模板短时间内重复催缴按通知频控策略拦截重复下发
业务办理流程已办结后再次补件拒绝补件,返回当前流程终态
+

1.8.10 异常处理要求

+ +

## 历史查询与迁移校验接口口径

+

1.8.11 设计原则

+ +

1.8.12 最小历史查询保留集

+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
查询主题挂靠接口族主要数据来源最低返回要求说明
历史账单、特殊开账IF-CS-002IF-REV-005biz_charge* + 历史账单来源原账单号、新账单号、客户号、账期、金额、状态、来源类型支撑账单迁移核查与客户侧历史查询
缴费记录、柜台结账、实时收费IF-CS-002IF-REV-006IF-REV-011biz_collectionbk_transaction* + +历史收费记录原流水号、渠道、实收金额、收费时间、柜员/营业所、核销状态支撑渠道对账、柜面核查和历史收据核对
红冲与账务调整IF-REV-007操作留痕、流程结果 + 历史调整台账调整类型、关联原单号、调整金额、原因、审批状态、处理时间支撑预存退款、已销调整、价差调整、分账调整、呆坏账查询
发票与开票关系IF-REV-008IF-CS-004biz_invoice* + 历史开票关系快照发票号、申请单号、关联账单、票据状态、票据类型、文件地址支撑发票结果核查与历史补打定位
催缴、停复水、预存短信IF-REV-013IF-METER-002通知结果、流程工单 + 历史催缴记录客户号、账期、催缴方式、消息状态、停复水状态、执行人、执行时间、处置引用支撑催缴处置闭环核查
业务进度与电子档案IF-CS-006biz_process*biz_content* + +历史附件目录业务单号、节点状态、处理轨迹、附件数量、附件元数据支撑微网厅与柜台办理进度、电子档案查询
水表生命周期、检定与库存流转IF-METER-001IF-METER-003biz_meter* + 历史仓储/检定单据表号、当前状态、单据类型、仓库、检定结论、证书编号、时间支撑表务迁移核查与历史作业追溯
页面参数、业务字段、微信配置IF-REV-012IF-CS-006biz_parameter_settingsbiz_page_settings*sys_wechat_app_settings参数编码、原值、新值、启用状态、生效时间、适用渠道支撑微网厅后台配置迁移核查
+

1.8.13 迁移验收对账接口要求

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
验收场景推荐挂靠接口最低查询维度输出要求
开账迁移核对IF-REV-005IF-CS-002账期、营业所、客户类型、账单状态同时提供汇总金额/笔数与可追溯明细清单
收费迁移核对IF-REV-006IF-REV-011IF-CS-002日期、渠道、营业所、收费状态同时提供实收金额、流水数量和异常流水列表
发票迁移核对IF-REV-008IF-CS-004开票日期、票据类型、开票状态同时提供开票汇总、失败原因和票据明细定位
催缴与停复水核对IF-REV-013IF-METER-002账期、催缴方式、执行状态、处理人同时提供任务统计、执行明细与处置引用
业务办理与档案核对IF-CS-006业务类型、流程状态、附件类型、创建时间同时提供流程轨迹、附件元数据和缺失标记
表务仓储与检定核对IF-METER-001IF-METER-003仓库、单据类型、水表状态、检定结论同时提供数量汇总和单据级追溯信息
+

1.8.14 接口约束补充

+ +

## 实现状态说明

+

1.8.15 已落地

+

结合 backend +当前已确认模块与真实表,可明确支撑以下接口域:

+ +

1.8.16 部分落地

+

以下接口域已有主线支撑,但部分细粒度对象仍需结合后续实现继续核实:

+ +

1.8.17 文档先行

+

以下内容可保留设计说明,但当前不应直接表述为已完全落地:

+ +
+

1.8.18 版本迭代维护说明

+

当前主文档已覆盖 UP / REV / CS / METER / INST / EXT +六类接口域的统一编号、清单、关键接口与字段级定义。后续版本迭代按以下顺序增量维护:

+
    +
  1. 先更新接口清单与归属模块,再补充字段级请求/响应结构;
  2. +
  3. 涉及跨系统协同时,同步维护 +SYS-008SYS-009SYS-010 +报文映射;
  4. +
  5. 涉及异常策略变化时,同步更新错误码与幂等规则;
  6. +
  7. 完成后同步校验 02_Detailed_Design/01_Detailed_Design.md +与本主文档的一致性。
  8. +
+ + diff --git a/output/03_Interface_Design.pdf b/output/03_Interface_Design.pdf new file mode 100644 index 0000000..732a12d Binary files /dev/null and b/output/03_Interface_Design.pdf differ diff --git a/output/03_Interface_Design_processed.md b/output/03_Interface_Design_processed.md new file mode 100644 index 0000000..32d8dec --- /dev/null +++ b/output/03_Interface_Design_processed.md @@ -0,0 +1,1831 @@ +--- +title: "03_Interface_Design" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: TC-03-INTERFACE +doc_role: master_document +authority: primary +scope: 接口设计 +source_of_truth: true +last_reviewed: 2026-03-12 +retrieval_priority: P0 +--- + +# 福建水务营收系统接口设计文档 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 接口设计文档 | +| **技术框架** | Spring Cloud Alibaba + RuoYi-Vue-Pro + yudao-ui-admin-vue3 | +| **文档版本** | v1.0 | +| **编写日期** | 2026-03-11 | +| **文档状态** | ✅ 已完成(按版本迭代) | + +## 章节导航(精简) +- [接口设计范围](#sec-scope) +- [设计原则与统一约束](#sec-principles) +- [SYS-002 接口视图](#sec-rev-interface-view) +- [外部接口设计](#sec-external-interface) +- [内部接口设计](#sec-internal-interface) +- [数据对象与表口径](#sec-data-object) +- [接口安全与异常处理](#sec-security-exception) +- [历史查询与迁移校验接口口径](#sec-migration-readonly) +- [实现状态说明](#sec-status) + + +## 接口设计范围 + +本文档用于描述福建水务营收系统的接口边界、调用方式、核心接口清单以及与外围子系统的协同关系,重点统一 `SYS-002` 营收业务系统的接口口径。 + +本次接口整编遵循以下事实来源: + +- `docs/design/02_Detailed_Design/01_Detailed_Design.md` +- `docs/design/03_Technical_Design/01_Database_Design.md` +- `docs/guides/BACKEND_CURRENT_STATUS.md` +- `docs/guides/BACKEND_TABLE_MAPPING.md` +- `output/preview/福建水务营收系统整体架构图.html` + +> 说明:本文档优先描述正式设计边界与业务接口职责,不将 backend 中尚未明确识别的内部实现细节误写为既有接口事实。对于历史资料中存在、但当前 backend 未完全确认的接口对象,统一按“文档先行”处理。 + + +## 设计原则与统一约束 + +### 接口设计原则 + +- **统一编号**:接口编号统一采用 `IF-UP-*`、`IF-REV-*`、`IF-CS-*`、`IF-METER-*`、`IF-INST-*`、`IF-EXT-*` 规则。 +- **统一边界**:`SYS-002` 负责营收业务主流程,发票、支付结算、消息触达分别通过 `SYS-008`、`SYS-009`、`SYS-010` 协同完成。 +- **统一数据口径**:接口数据对象优先对齐真实 `biz_*` 与 `bk_*` 表,不再沿用旧稿中的 `customer_*`、`billing_*`、`thirdpay_*`、`service_*` 等历史命名。 +- **统一协议风格**:内部管理接口以 HTTPS REST 为主,跨系统集成根据场景采用 REST、文件交换、消息队列等方式。 +- **统一安全机制**:内部接口采用统一认证鉴权,外部接口按渠道要求实施签名、回调校验、白名单和审计留痕。 + +### 通用响应格式 + +内部 REST 接口统一采用如下响应模型: + +```json +{ + "code": 0, + "data": {}, + "msg": "success" +} +``` + +分页响应统一采用: + +```json +{ + "code": 0, + "data": { + "list": [], + "total": 0, + "pageNo": 1, + "pageSize": 10 + }, + "msg": "success" +} +``` + + +## SYS-002 接口视图 + +### 模块分组 + +#### 营收核心模块群 + +| 模块编号 | 模块名称 | 接口职责定位 | +|---------|----------|-------------| +| REV-001 | 客户资料管理 | 客户、账户、联系人、水表绑定等主数据查询与维护 | +| REV-002 | 抄表开账 | 抄表任务、抄表数据、校验、开账触发 | +| REV-003 | 营业收费 | 收费受理、账单核销、柜台与渠道收款状态回写 | +| REV-004 | 账务处理 | 调整、退款、冲正、坏账等账务处理申请与结果回写 | +| REV-005 | 发票管理 | 发票申请、开票结果回写、票据状态查询 | +| REV-006 | 催缴管理 | 催缴名单生成、催缴任务下发、通知结果回写 | +| REV-007 | 统计分析 | 营收、抄表、收费、客户、渠道统计查询 | +| REV-008 | 代收业务 | 银行代收、代扣、送盘、回盘、对账、结算协同 | +| REV-009 | 业务参数配置 | 水价、费用组成、业务参数、页面参数等配置接口 | + +#### 客户服务模块群 + +| 模块编号 | 模块名称 | 接口职责定位 | +|---------|----------|-------------| +| CS-001 | 账户绑定管理 | 客户绑定、解绑、默认客户切换 | +| CS-002 | 信息查询服务 | 账单、欠费、用水、缴费、停水公告等查询 | +| CS-003 | 在线缴费服务 | 创建线上支付订单、支付状态查询 | +| CS-004 | 电子发票服务 | 发票申请、发票列表、下载与推送 | +| CS-005 | 营业网点服务 | 网点查询、预约、导航、业务事项查询 | +| CS-006 | 业务办理服务 | 更名、过户、低保、换表、自主抄表等线上办理 | +| CS-007 | 柜面扫码支付 | 柜台二维码收款、订单生成、支付结果回写 | + +### 跨系统协同边界 + +| 协同子系统 | 协同内容 | SYS-002 职责 | 对方职责 | +|-----------|----------|--------------|----------| +| SYS-008 发票服务 | 发票开具、作废、红冲、票据查询 | 提供业务上下文、账单信息、客户开票信息,接收结果回写 | 承接税控与电子发票能力 | +| SYS-009 支付与银行结算 | 微信/支付宝支付、银行实时收费、代扣、对账、结算 | 发起订单、接收支付结果、维护账单核销状态 | 承接支付渠道、交易流水、回调、对账与结算 | +| SYS-010 消息服务 | 催缴通知、缴费结果通知、办理进度通知 | 生成待通知业务事件与目标用户 | 承接短信、微信公众号、站内信等触达能力 | + + +## 外部接口设计 + +## 外部接口分类 + +| 接口分类 | 主要对接方 | 典型协议 | 说明 | +|---------|------------|----------|------| +| 银行代收/代扣接口 | 银行、银联、托收平台 | 文件交换 / HTTPS REST | 主要服务 REV-008 | +| 聚合支付接口 | 微信支付、支付宝等 | HTTPS REST + 回调 | 主要服务 REV-003、CS-003、CS-007 | +| 发票协同接口 | 税控/电子发票平台 | HTTPS REST | 主要服务 REV-005、CS-004 | +| 消息通知接口 | 短信平台、消息网关 | HTTPS REST / MQ | 主要服务 REV-006、CS-006 | +| 物联网集抄接口 | 集抄平台、IoT 平台 | HTTPS REST / MQ | 主要服务 REV-002 | + +### IF-EXT-001 银行代扣批次下发接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-001 | +| 接口名称 | 银行代扣批次下发接口 | +| 归属模块 | REV-008 | +| 调用方向 | SYS-002 → SYS-009 / 银行渠道 | +| 接口方式 | 文件交换或 HTTPS REST | +| 业务说明 | 按账期生成待代扣账单批次,交由银行渠道执行代扣 | +| 核心数据支撑 | `biz_withholding`、`bk_withholding_batch`、`bk_withholding_item` | + +关键报文信息包括:客户号、签约号、扣款金额、账期、渠道编码、批次号等。 + +边界约束: +- 当前正式设计包含代扣送盘、回盘与对账的目标边界;其中 `BankWithholding` 已具备送盘、送盘状态查询、取消送盘等六条银行入口的最小实现态闭环证据。 +- 正式文档可将 `BankWithholding` 六条银行入口写为“已实现”,但需同时注明真实银行文件解析、SFTP/文件通道联调与运行态样本仍待补证。 +- 涉及批量文件交互时,正式口径保留 `HTTP/REST/SFTP` 与文件命名、批次号约束,不下沉到特定银行私有报文字段。 +- 运行时文件传输配置统一由解析器输出 `protocol/resolvedDir/resolvedPath/fileName/sourceScope`;优先级固定为 `TENANT_CHANNEL > TENANT > CHANNEL > DEFAULT`,高优先级仅覆盖部分字段时按字段级回退。 +- 命中协议缺少 `host/port/username/credentialRef`、阶段目录为空或模板变量非法时,接口必须立即返回配置错误,不得回退到错误租户或错误通道。 + +### IF-EXT-002 银行代扣回盘接收接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-002 | +| 接口名称 | 银行代扣回盘接收接口 | +| 归属模块 | REV-008 | +| 调用方向 | 银行渠道 / SYS-009 → SYS-002 | +| 接口方式 | 文件交换或 HTTPS REST | +| 业务说明 | 接收代扣成功、失败、退票等结果并回写业务状态 | +| 核心数据支撑 | `bk_withholding_batch`、`bk_withholding_item`、`bk_transaction`、`bk_transaction_exception` | + +边界约束: +- 回盘处理、回盘状态查询、差异核对和结算确认属于同一能力簇;其中 `BankWithholding` 的回盘与回盘状态查询已具备最小实现态闭环证据,但完整差异核对、异常补偿和结算确认仍属后续完善项。 +- 当前正式文档允许保留回盘文件名、批次号、回盘日期、结果状态等正式字段约束,但不得把未落地的真实文件解析、异常补偿和结算闭环写成既成事实。 + +### IF-EXT-003 银行实时收费接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-003 | +| 接口名称 | 银行实时收费接口 | +| 归属模块 | REV-003 / REV-008 | +| 调用方向 | 银行渠道 / SYS-009 ↔ SYS-002 | +| 接口方式 | HTTPS REST | +| 业务说明 | 支撑柜台、网银、手机银行实时查询应收并完成缴费 | +| 核心数据支撑 | `biz_charge`、`biz_charge_detail`、`bk_transaction`、`bk_transaction_callback` | + +边界约束: +- 当前 backend 已确认欠费查询与缴费处理具备实现证据,可作为正式文档中的已落地基础能力。 +- 代理收费对账、汇总对账和当日未对账红冲等扩展能力当前仍未形成完整实现闭环,正式文档须标注为后续完善项。 + +### 银行签约、状态查询与批次控制扩展接口 + +| 接口动作 | 推荐归属 | 当前代码路径 | 当前状态 | 正式口径 | +|---------|----------|-------------|----------|----------| +| 代扣签约 | REV-008 / SYS-009 | `BankWithholdingController#signing` | 已实现 | 可作为正式接口能力写入 | +| 代扣解约 | REV-008 / SYS-009 | `BankWithholdingController#termination` | 已实现 | 可作为正式接口能力写入 | +| 托收签约 | REV-008 / SYS-009 | `BankCollectionController#signing` | 已实现 | 可作为正式接口能力写入 | +| 托收解约 | REV-008 / SYS-009 | `BankCollectionController#termination` | 已实现 | 可作为正式接口能力写入 | +| 客户状态查询 | REV-008 / SYS-009 | `BankWithholdingController#customerCheck` / `BankCollectionController#customerCheck` | 代扣已实现;托收部分实现 | 代扣可作为正式接口能力写入;托收仅保留正式契约边界与结果状态 | +| 送盘 | REV-008 / SYS-009 | `BankWithholdingController#sendDisc` / `BankCollectionController#sendDisc` | 代扣已实现;托收部分实现 | 代扣可作为正式接口能力写入;托收仅保留正式契约边界与批次发送语义 | +| 送盘状态查询 | REV-008 / SYS-009 | `BankWithholdingController#sendDiscCheck` / `BankCollectionController#sendDiscCheck` | 代扣已实现;托收部分实现 | 代扣可作为正式接口能力写入;托收仅保留正式契约边界与批次状态语义 | +| 取消送盘 | REV-008 / SYS-009 | `BankWithholdingController#cancelDisc` / `BankCollectionController#cancelDisc` | 代扣已实现;托收部分实现 | 代扣可作为正式接口能力写入;托收仅保留正式契约边界与可取消条件 | +| 回盘 | REV-008 / SYS-009 | `BankWithholdingController#backDisc` / `BankCollectionController#backDisc` | 代扣已实现;托收部分实现 | 代扣可作为正式接口能力写入;托收仅保留正式契约边界与回盘处理语义 | +| 回盘状态查询 | REV-008 / SYS-009 | `BankWithholdingController#backDiscCheck` / `BankCollectionController#backDiscCheck` | 代扣已实现;托收部分实现 | 代扣可作为正式接口能力写入;托收仅保留正式契约边界与回盘状态语义 | + +### IF-EXT-004 聚合支付下单接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-004 | +| 接口名称 | 聚合支付下单接口 | +| 归属模块 | REV-003 / CS-003 / CS-007 | +| 调用方向 | SYS-002 → SYS-009 | +| 接口方式 | HTTPS REST | +| 业务说明 | 创建微信、支付宝等支付订单,返回二维码、收银参数或支付跳转信息 | +| 核心数据支撑 | `biz_charge`、`biz_collection`、`bk_transaction` | + +### IF-EXT-005 聚合支付结果回调接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-005 | +| 接口名称 | 聚合支付结果回调接口 | +| 归属模块 | REV-003 / CS-003 / CS-007 | +| 调用方向 | SYS-009 → SYS-002 | +| 接口方式 | HTTPS REST + 签名校验 | +| 业务说明 | 接收支付成功、失败、关闭、退款等异步事件,并更新收费状态 | +| 核心数据支撑 | `bk_transaction_callback`、`biz_collection`、`biz_charge` | + +### IF-EXT-006 发票开具协同接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-006 | +| 接口名称 | 发票开具协同接口 | +| 归属模块 | REV-005 / CS-004 | +| 调用方向 | SYS-002 → SYS-008 | +| 接口方式 | HTTPS REST | +| 业务说明 | 传递账单、客户、抬头、税率等信息,由 SYS-008 承接开票 | +| 核心数据支撑 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | + +### IF-EXT-007 发票结果回写接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-007 | +| 接口名称 | 发票结果回写接口 | +| 归属模块 | REV-005 / CS-004 | +| 调用方向 | SYS-008 → SYS-002 | +| 接口方式 | HTTPS REST | +| 业务说明 | 回写开票状态、票据编号、下载地址、作废/红冲结果 | +| 核心数据支撑 | `biz_invoice`、`biz_process_invoice_modifys` | + +### IF-EXT-008 消息触达接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-008 | +| 接口名称 | 消息触达接口 | +| 归属模块 | REV-006 / CS-006 | +| 调用方向 | SYS-002 → SYS-010 | +| 接口方式 | HTTPS REST 或 MQ | +| 业务说明 | 承接催缴通知、办理进度通知、缴费结果通知等消息事件,返回受理结果并回传执行结果 | +| 核心数据支撑 | `biz_charge`、`biz_process`、`biz_operat_log` | + +边界约束: +- `IF-EXT-008` 只负责渠道触达执行与回执回传,不负责催缴候选对象筛选、任务生成或业务状态主控。 +- `SYS-010` 回传的渠道执行结果需由 `SYS-002` 映射为 `PENDING`、`SUCCESS`、`FAIL`、`MANUAL_VERIFIED` 四态业务状态。 +- 当仅返回受理成功但未返回终态时,`SYS-002` 维持 `PENDING`;若长期无终态且人工核查确认,可转 `MANUAL_VERIFIED`。 +- 消息模板、供应商协议和重试细节由 `SYS-010` 管理,不在 `IF-EXT-008` 展开实现细节。 + +### IF-EXT-009 集抄数据接入接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-EXT-009 | +| 接口名称 | 集抄数据接入接口 | +| 归属模块 | REV-002 | +| 调用方向 | IoT 平台 / 集抄平台 → SYS-002 | +| 接口方式 | HTTPS REST / MQ | +| 业务说明 | 接收远传读数、设备状态、异常告警,触发抄表校验与开账准备 | +| 核心数据支撑 | `biz_meter_read`、`biz_reading_data`、`biz_last_reading` | + + +## 内部接口设计 + +## SYS-002 内部接口清单 + +### REV 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-REV-001 | 客户信息查询接口 | REV-001 | 查询客户档案、联系人、账户、水表绑定关系 | `biz_cust`、`biz_account`、`biz_cust_contact`、`biz_cust_meter` | +| IF-REV-002 | 客户主数据维护接口 | REV-001 | 新增、变更客户档案及开票/托收/代扣关系 | `biz_cust`、`biz_cust_invoice`、`biz_cust_collection_rel`、`biz_cust_withholding_rel` | +| IF-REV-003 | 抄表任务下发接口 | REV-002 | 按册本、片区、抄表周期生成抄表任务 | `biz_meter_book`、`biz_meter_read` | +| IF-REV-004 | 抄表数据提交接口 | REV-002 | 提交抄表数据、图片、异常标记并触发校验 | `biz_reading_data`、`biz_reading_logs`、`biz_last_reading` | +| IF-REV-005 | 账单生成接口 | REV-002 | 根据抄表结果、价格模板和费用组成生成账单 | `biz_charge`、`biz_charge_detail`、`biz_price_template`、`biz_cost_component` | +| IF-REV-006 | 缴费处理接口 | REV-003 | 创建收费记录、核销账单、回写收款结果 | `biz_collection`、`biz_charge`、`bk_transaction` | +| IF-REV-007 | 账务调整接口 | REV-004 | 发起金额调整、退款、冲正、坏账等业务处理 | `biz_charge`、`biz_charge_detail`、`biz_operat_log` | +| IF-REV-008 | 发票申请接口 | REV-005 | 后台发起单笔/批量开票申请并生成受理主键 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | +| IF-REV-009 | 发票结果查询接口 | REV-005 | 按申请单号/受理号查询开票结果并执行补偿查询 | `biz_invoice`、`biz_operat_log` | +| IF-REV-013 | 催缴任务生成与结果承接接口 | REV-006 | 生成催缴任务、查询任务结果并承接四态状态回写 | `biz_charge`、`biz_operat_log`、历史催缴查询口径 | +| IF-REV-010 | 统计查询接口 | REV-007 | 查询营收、收费、欠费、渠道、客户统计结果 | 聚合视图 / 统计结果集 | +| IF-REV-011 | 银行代收协同接口 | REV-008 | 发起代扣、回盘、对账、结算协同 | `biz_withholding`、`bk_reconcile_batch`、`bk_settlement_batch` | +| IF-REV-012 | 业务参数配置接口 | REV-009 | 查询和维护价格模板、优惠方案、业务参数配置 | `biz_parameter_settings`、`biz_price_*`、`biz_page_settings*` | + +### CS 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-CS-001 | 账户绑定接口 | CS-001 | 绑定、解绑、切换默认客户 | `biz_cust_app_binds`、`biz_cust` | +| IF-CS-002 | 历史账单查询接口 | CS-002 | 查询账单、欠费、用水历史、缴费记录 | `biz_charge`、`biz_charge_detail`、`biz_reading_data` | +| IF-CS-003 | 在线支付下单接口 | CS-003 | 创建微信/支付宝线上支付订单 | `biz_charge`、`biz_collection`、`bk_transaction` | +| IF-CS-004 | 电子发票消费接口 | CS-004 | 查询、下载、推送本人已开具电子发票 | `biz_invoice`、`biz_cust_invoice` | +| IF-CS-005 | 网点与业务办理接口 | CS-005 | 查询营业网点、预约信息、可办事项 | `biz_outlets`、`biz_business_types` | +| IF-CS-006 | 业务办理进度接口 | CS-006 | 提交业务申请、查询办理进度与附件 | `biz_process`、`biz_process_transfer`、`biz_content_attach` | +| IF-CS-007 | 柜面扫码支付接口 | CS-007 | 创建柜面扫码支付订单并回写结果 | `biz_collection`、`bk_transaction`、`biz_charge` | + +### UP 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-UP-001 | 用户登录接口 | UP-001 | 用户登录并获取访问令牌 | `system_users`、`system_oauth2_access_token`、`system_login_log` | +| IF-UP-002 | 用户信息接口 | UP-001 | 查询当前登录用户上下文信息 | `system_users`、`system_dept` | +| IF-UP-003 | 权限校验接口 | UP-002 | 校验菜单、按钮、数据权限 | `system_role`、`system_role_menu`、`system_user_role` | +| IF-UP-004 | 参数字典接口 | UP-003 | 查询字典、参数、配置项 | `system_dict_type`、`system_dict_data`、`biz_parameter_settings` | + +### METER 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-METER-001 | 水表档案查询接口 | METER-001 | 查询水表档案、状态与生命周期信息 | `biz_meter`、`biz_meter_model`、`biz_meter_caliber`、`biz_meter_range` | +| IF-METER-002 | 表务工单处理接口 | METER-003 | 提交换表、移表、校表、维修等工单处理结果 | `biz_meter_log`、`biz_process`、`biz_process_transfer` | +| IF-METER-003 | 库存出入库接口 | METER-002 | 处理领用、退库、报废等库存动作 | `biz_meter_in_out`、`biz_meter_in_out_rel` | +| IF-METER-004 | 集抄数据接收接口 | METER-003 | 接收远传抄表、异常告警并同步状态 | `biz_reading_data`、`biz_meter_read`、`biz_last_reading` | + +### INST 接口清单 + +| 接口编号 | 接口名称 | 归属模块 | 主要用途 | 主要数据对象 | +|---------|----------|----------|----------|-------------| +| IF-INST-001 | 报装申请提交接口 | INST-001 | 提交报装申请、附件与基础资料 | `biz_process`、`biz_content`、`biz_content_attach` | +| IF-INST-002 | 踏勘结果回填接口 | INST-001 | 回填现场踏勘、方案与审核结果 | `biz_process_transfer`、`biz_business_datas` | +| IF-INST-003 | 合同签署发起接口 | INST-002 | 发起电子签章任务并传输合同信息 | `installation_contract`、`installation_signature` | +| IF-INST-004 | 签章回执接口 | INST-002 | 回写签章结果、时间戳和存证信息 | `installation_signature`、`installation_evidence` | +| IF-INST-005 | 报装归档接口 | INST-003 | 归档申请、合同、验收与签章回执资料 | `biz_content_attach`、`installation_evidence` | + +## 关键内部接口说明 + +### IF-UP-001 用户登录接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-UP-001 | +| 归属模块 | UP-001 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/system/auth/login` | +| 功能描述 | 统一认证入口,签发访问令牌并输出用户上下文 | +| 核心表 | `system_users`、`system_oauth2_access_token`、`system_login_log` | + +### IF-REV-001 客户信息查询接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-001 | +| 归属模块 | REV-001 | +| 请求方式 | GET | +| 请求路径 | `/admin-api/revenue/customer/{id}` | +| 功能描述 | 查询客户主档、账户状态、联系人、水表绑定及开票资料 | +| 核心表 | `biz_cust`、`biz_account`、`biz_cust_contact`、`biz_cust_meter`、`biz_cust_invoice` | + +响应结果以客户主档为中心,组合返回账户余额、欠费金额、联系人列表、水表列表与开票资料摘要。 + +### IF-REV-004 抄表数据提交接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-004 | +| 归属模块 | REV-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/reading-data/create` | +| 功能描述 | 接收人工或远传抄表数据,执行校验、估抄判断、异常标记 | +| 核心表 | `biz_meter_read`、`biz_reading_data`、`biz_last_reading`、`biz_reading_logs` | + +典型请求体: + +```json +{ + "meterReadId": 1001, + "meterId": 2001, + "readTime": "2026-03-11 09:30:00", + "currentReading": 156.32, + "readType": "MANUAL", + "photoList": [ + "file-001", + "file-002" + ], + "gps": "119.2965,26.0745", + "remark": "现场抄表正常" +} +``` + +### IF-REV-005 账单生成接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-005 | +| 归属模块 | REV-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/charge/generate` | +| 功能描述 | 基于抄表结果、水价模板、阶梯规则、费用组成生成账单,并返回成功清单、失败清单与生成汇总 | +| 核心表 | `biz_charge`、`biz_charge_detail`、`biz_price_template`、`biz_price_tier_adjustment`、`biz_cost_component` | + +边界约束: +- 本接口只负责抄表校验完成后的账单生成,不直接承接收费核销、发票申请、催缴执行或统计汇总。 +- 正式请求范围可按抄表批次、客户集合或抄表任务集合组织;当前 backend 已实现入口为 `/business/charge/charge-batch` 与 `/business/charge/check-charge-batch`,请求体仅接受 `readingDataIds`。 +- 价格模板、费用组成、阶梯规则、计划用水方案等任一关键规则缺失时,应阻断生成并返回失败原因,而不是生成不完整账单。 +- 特殊开账、无码客户开账、罚款类开账等非标准来源仍沿用同一 `biz_charge` / `biz_charge_detail` 承接口径,不单设平行在线账表。 +- 当前实现仅支持 `SettleTypeEnum.ACTUAL_USAGE`;固定水量、按人口数、最低消费等结算方式暂未纳入现有开账链路。 + +当前 backend 证据与契约缺口: +- `ChargeServiceImpl.generateCheckChargeBatch` 已支持“批量复核 + 批量开账”,并通过 `generateSingleChargeWithCache` 写入 `biz_charge`、`biz_charge_detail`,说明主明细承接路径已存在。 +- 返回值当前为 `CommonResult`,仅表达“本次复核成功X条 / 本次开账成功Y条”,尚未提供正式契约要求的成功清单、失败清单、生成汇总和主明细结果对象。 +- 单条失败当前主要以 `log.warn` + `false` 跳过处理,尚未形成可直接对外返回的结构化阻断码、失败原因集合与对象范围。 + +### IF-REV-006 缴费处理接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-006 | +| 归属模块 | REV-003 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/collection/create` | +| 功能描述 | 处理柜台收费、预存抵扣、渠道收款确认与账单核销 | +| 核心表 | `biz_collection`、`biz_charge`、`bk_transaction` | + +### IF-REV-007 账务调整接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-007 | +| 归属模块 | REV-004 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/accounting/adjust` | +| 功能描述 | 发起水量调整、金额调整、退款、冲正、坏账申请五类账务处理,并统一返回处理结果、审批边界与账单回写状态 | +| 核心表 | `biz_charge`、`biz_charge_detail`、`biz_operat_log`、`bk_transaction*` | + +边界约束: +- 一期仅覆盖 `USAGE`、`AMOUNT`、`REFUND`、`REVERSE`、`BAD_DEBT` 五类 `adjustType`。 +- 退款、冲正必须提供 `sourceTradeNo` 并完成原交易校验;其他场景不得误用支付流水替代业务依据。 +- 审批相关内容仅保留 `approvalRequired`、`PENDING_APPROVAL` 与边界说明,不展开 BPM 节点与审批回写实现细节。 +- `resultStatus` 与 `writeBackStatus` 必须分离表达,前者表示处理结论,后者表示账单状态回写结论。 + +### IF-REV-008 发票申请接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-008 | +| 归属模块 | REV-005 | +| 请求方式 | POST | +| 请求路径 | `/business/invoice/apply` | +| 功能描述 | 后台对已收费未开票账单发起单笔/批量开票申请,并在同一管理域内受理作废/红冲后处理入口 | +| 核心表 | `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice` | + +边界约束: +- 一期仅支持后台营业收费员/财务人员发起申请,客户侧不直接调用本接口。 +- 发票开具、作废、红冲能力均由 `SYS-008` 统一承接税控侧处理,`SYS-002` 负责业务单据归集、申请发起、后台作废/红冲触发、查询补偿与结果落账。 +- 后台发票后处理沿同一管理域补充 `/business/invoice/invalidate` 与 `/business/invoice/red-ink` 两个入口,分别承接作废与红冲动作;处理结果继续通过 `IF-REV-009` 或 `IF-EXT-007` 统一收口。 +- 原始单账单不支持直接任意部分金额开票;如需多张发票,应基于拆账/分账后的账单集合申请。 + +### IF-REV-009 发票结果查询接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-009 | +| 归属模块 | REV-005 | +| 请求方式 | POST | +| 请求路径 | `/business/invoice/query`(补偿查询:`/business/invoice/query/compensate`) | +| 功能描述 | 后台按申请单号/受理号查询开票、作废或红冲结果,并支持系统补偿查询兜底 | +| 核心表 | `biz_invoice`、`biz_operat_log` | + +### IF-REV-013 催缴任务生成与结果承接接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-013 | +| 归属模块 | REV-006 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/reminder/task`(查询:`/admin-api/revenue/reminder/task/query`,人工核查:`/admin-api/revenue/reminder/task/manual-verify`) | +| 功能描述 | 基于欠费账单、催缴策略和渠道偏好生成催缴任务,查询任务状态,并承接业务侧四态结果与处置引用 | +| 核心表 | `biz_charge`、`biz_charge_detail`、`biz_operat_log`、历史催缴查询口径 | + +边界约束: +- `IF-REV-013` 是 `REV-006` 的正式业务接口编号,不再复用 `IF-REV-009`。 +- `SYS-002` 负责催缴对象筛选、任务生成、业务事件号维护、四态状态承接和历史查询;`SYS-010` 只负责触达执行与结果回传。 +- 接口状态固定为 `PENDING`、`SUCCESS`、`FAIL`、`MANUAL_VERIFIED` 四态,不在本轮扩展“已阅读”“已补发”等细粒度业务状态。 +- 停复水仅作为联动边界与处置引用承接项,不在本接口中展开停复水内部流程。 + +### IF-REV-010 统计查询接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-010 | +| 归属模块 | REV-007 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/statistics/query`(导出:`/admin-api/revenue/statistics/export`) | +| 功能描述 | 面向营收经营分析场景查询统计主题、维度汇总和指标结果,并在权限范围内支持导出 | +| 核心表 | `biz_charge`、`biz_charge_detail`、`biz_collection`、`bk_transaction`、`biz_cust`、`biz_account`、`biz_meter_book`、`biz_reading_data` | + +边界约束: +- `IF-REV-010` 只承接经营统计查询,不扩展到预测分析、BI 专题大屏或独立数仓查询。 +- 统计口径按“主题 + 维度 + 指标”组织,避免仅以报表名称表达接口范围。 +- 导出属于查询扩展能力,必须受数据权限和导出权限控制。 +- 没有明确实现证据的独立统计表、专题分析表或离线汇总表不得写成既成事实。 + +### IF-REV-011 银行代收协同接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-011 | +| 归属模块 | REV-008 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/revenue/bank/withholding/batch` | +| 功能描述 | 创建代扣批次、发起对账、接收结算回写 | +| 核心表 | `biz_withholding`、`bk_withholding_batch`、`bk_reconcile_batch`、`bk_settlement_batch` | + +边界约束: +- `IF-REV-011` 在当前阶段主要承接正式业务协同边界,不等同于送盘、回盘、对账、结算全部已闭环。 +- 已确认的后台管理入口可证明批次、差异、结算台账对象存在,但不能替代银行 app 协同接口的完成度判断。 + +### IF-REV-012 业务参数配置接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-REV-012 | +| 归属模块 | REV-009 | +| 请求方式 | GET / POST | +| 请求路径 | `/admin-api/revenue/parameter/config` | +| 功能描述 | 查询与维护价格模板、业务参数、页面参数与规则配置 | +| 核心表 | `biz_parameter_settings`、`biz_price_*`、`biz_page_settings*` | + +### IF-CS-001 账户绑定接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-001 | +| 归属模块 | CS-001 | +| 请求方式 | POST | +| 请求路径 | `/app-api/customer/account/bind` | +| 功能描述 | 绑定、解绑、切换默认客户账户,并校验渠道身份与客户关系 | +| 核心表 | `biz_cust_app_binds`、`biz_cust`、`biz_account` | + +### IF-CS-002 历史账单查询接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-002 | +| 归属模块 | CS-002 | +| 请求方式 | GET | +| 请求路径 | `/app-api/customer/bill/history` | +| 功能描述 | 查询账单、欠费、缴费、用水历史及发票摘要 | +| 核心表 | `biz_charge`、`biz_charge_detail`、`biz_reading_data`、`biz_invoice` | + +### IF-CS-003 在线支付下单接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-003 | +| 归属模块 | CS-003 | +| 请求方式 | POST | +| 请求路径 | `/app-api/customer/payment/order` | +| 功能描述 | 面向微网厅、微信、支付宝等客户渠道创建支付订单 | +| 核心表 | `biz_charge`、`biz_collection`、`bk_transaction` | + +边界约束: +- 支付通道、支付回调、对账流水由 `SYS-009` 负责。 +- `SYS-002` 负责校验待缴账单、生成业务订单、更新核销结果。 + +### IF-CS-004 电子发票消费接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-004 | +| 归属模块 | CS-004 | +| 请求方式 | POST | +| 请求路径 | `/business/invoice/customer/query`、`/business/invoice/customer/download`、`/business/invoice/customer/push` | +| 功能描述 | 面向客户渠道查询、下载、推送本人已开具电子发票 | +| 核心表 | `biz_invoice`、`biz_cust_invoice`、`biz_invoice_taxrate` | + +边界约束: +- 一期客户侧仅消费已形成 `SUCCESS` 终态且具备票据地址的电子发票结果,不直接发起开票申请。 +- 发票作废、红冲仍由 `SYS-008` 统一承接税控侧处理;`IF-CS-004` 仅消费当前仍可展示、下载、推送的有效电子发票结果,不开放客户侧直接发起作废或红冲。 + +### IF-CS-006 业务办理进度接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-006 | +| 归属模块 | CS-006 | +| 请求方式 | GET / POST | +| 请求路径 | `/app-api/customer/process` | +| 功能描述 | 提交业务办理申请、查询办理进度、补充附件资料 | +| 核心表 | `biz_process`、`biz_process_transfer`、`biz_business_datas`、`biz_content_attach` | + +### IF-CS-007 柜面扫码支付接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-CS-007 | +| 归属模块 | CS-007 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/counter/scan-pay/create` | +| 功能描述 | 柜台生成扫码订单,接收支付结果并回写收费状态 | +| 核心表 | `biz_collection`、`bk_transaction`、`biz_charge` | + +### IF-METER-001 水表档案查询接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-METER-001 | +| 归属模块 | METER-001 | +| 请求方式 | GET | +| 请求路径 | `/admin-api/meter/archive/{id}` | +| 功能描述 | 查询水表档案、状态、参数与生命周期信息 | +| 核心表 | `biz_meter`、`biz_meter_model`、`biz_meter_caliber`、`biz_meter_range` | + +### IF-METER-002 表务工单处理接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-METER-002 | +| 归属模块 | METER-003 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/meter/work-order/handle` | +| 功能描述 | 提交换表、移表、校表、维修等工单处理结果并回写设备状态 | +| 核心表 | `biz_meter_log`、`biz_process`、`biz_process_transfer` | + +### IF-METER-003 库存出入库接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-METER-003 | +| 归属模块 | METER-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/meter/stock/in-out` | +| 功能描述 | 处理领用、退库、报废等库存动作并更新生命周期状态 | +| 核心表 | `biz_meter_in_out`、`biz_meter_in_out_rel`、`biz_meter` | + +### IF-METER-004 集抄数据接收接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-METER-004 | +| 归属模块 | METER-003 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/meter/iot/reading/receive` | +| 功能描述 | 接收远传抄表、设备状态和异常告警并同步读数状态 | +| 核心表 | `biz_reading_data`、`biz_meter_read`、`biz_last_reading` | + +### IF-INST-001 报装申请提交接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-INST-001 | +| 归属模块 | INST-001 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/installation/apply/create` | +| 功能描述 | 提交报装申请、基础资料与附件,并创建流程实例 | +| 核心表 | `biz_process`、`biz_content`、`biz_content_attach` | + +### IF-INST-002 踏勘结果回填接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-INST-002 | +| 归属模块 | INST-001 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/installation/survey/result` | +| 功能描述 | 回填现场踏勘结果、方案版本和审核结论 | +| 核心表 | `biz_process_transfer`、`biz_business_datas` | + +### IF-INST-003 合同签署发起接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-INST-003 | +| 归属模块 | INST-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/installation/contract/sign/initiate` | +| 功能描述 | 发起报装合同签署流程,并与 CA 系统协同处理签章、时间戳和存证 | +| 核心表 | `installation_contract`、`installation_signature`、`installation_evidence` | + +### IF-INST-004 签章回执接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-INST-004 | +| 归属模块 | INST-002 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/installation/contract/sign/callback` | +| 功能描述 | 回写签章结果、时间戳、存证回执与签章文件地址 | +| 核心表 | `installation_signature`、`installation_evidence` | + +### IF-INST-005 报装归档接口 + +| 项目 | 说明 | +|------|------| +| 接口编号 | IF-INST-005 | +| 归属模块 | INST-003 | +| 请求方式 | POST | +| 请求路径 | `/admin-api/installation/archive/submit` | +| 功能描述 | 归档申请资料、验收附件、合同文件与签章回执 | +| 核心表 | `biz_content_attach`、`installation_evidence`、`biz_process` | + +## 字段级请求与响应定义 + +> 说明:以下字段级定义服务于接口设计说明,重点体现业务含义、来源对象与跨系统协同所需关键字段,不等同于数据库表的完整字段清单。 + +### IF-REV-001 客户信息查询接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源 | +|------|------|------|------|----------| +| id | Long | 否 | 客户主键 ID,与 `code` 二选一 | `biz_cust.id` | +| code | String | 否 | 客户编号,与 `id` 二选一 | `biz_cust.code` | +| mobile | String | 否 | 客户手机号,支持模糊校验查询 | `biz_cust.mobile` / `biz_cust_contact.mobile` | +| queryType | String | 否 | 查询类型:`base`、`account`、`meter`、`invoice`、`all` | 查询控制参数 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| id | Long | 客户主键 ID | `biz_cust.id` | +| code | String | 客户编号 | `biz_cust.code` | +| name | String | 客户名称 | `biz_cust.name` | +| custType | String | 客户类型 | `biz_cust.cust_type` | +| mobile | String | 主要联系电话 | `biz_cust.mobile` | +| address | String | 客户地址 | `biz_cust.address` | +| accountInfo | Object | 账户信息对象 | `biz_account` | +| accountInfo.balance | Decimal | 账户余额 | `biz_account.balance` | +| accountInfo.arrearsAmount | Decimal | 欠费金额 | `biz_account.arrears_amount` | +| accountInfo.status | String | 账户状态 | `biz_account.status` | +| contactList | Array | 联系人列表 | `biz_cust_contact` | +| meterList | Array | 绑定水表列表 | `biz_cust_meter`、`biz_meter` | +| invoiceInfo | Object | 开票信息摘要 | `biz_cust_invoice` | + +### IF-REV-004 抄表数据提交接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| meterReadId | Long | 是 | 抄表任务 ID | `biz_meter_read.id` | +| meterId | Long | 是 | 水表 ID | `biz_meter.id` | +| readTime | Datetime | 是 | 抄表时间 | `biz_reading_data.read_time` | +| currentReading | Decimal | 是 | 本次读数 | `biz_reading_data.current_reading` | +| readType | String | 是 | 抄表方式:`MANUAL`、`IOT`、`IMPORT` | `biz_reading_data.read_type` | +| usageAmount | Decimal | 否 | 本次用量,可由系统自动计算 | `biz_reading_data.usage_amount` | +| photoList | Array | 否 | 表盘照片或现场图片文件标识 | 附件系统 / 文件服务 | +| gps | String | 否 | 现场坐标 | 扩展信息 | +| remark | String | 否 | 异常说明或现场备注 | `biz_reading_logs.remark` | +| abnormalFlag | Boolean | 否 | 是否标记异常 | 过程状态 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| readingId | Long | 抄表数据主键 | `biz_reading_data.id` | +| meterReadId | Long | 抄表任务 ID | `biz_meter_read.id` | +| validateStatus | String | 校验状态:`PASS`、`WARN`、`REJECT` | 校验结果 | +| abnormalFlag | Boolean | 是否识别为异常 | 过程判断 | +| nextAction | String | 后续动作:`BILLING`、`RECHECK`、`MANUAL_REVIEW` | 流程控制 | +| msg | String | 处理说明 | 返回消息 | + +### IF-REV-005 账单生成接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| billPeriod | String | 是 | 账期,如 `2026-03` | 开账批次参数 | +| readingBatchNo | String | 否 | 抄表批次号 | 抄表批次 | +| customerIds | Array | 否 | 指定客户范围 | `biz_cust.id` | +| meterReadIds | Array | 否 | 指定抄表任务范围 | `biz_meter_read.id` | +| dueDate | Date | 是 | 应收截止日期 | `biz_charge.due_date` | +| operatorId | Long | 否 | 发起操作人 | 操作上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| generateCount | Integer | 成功生成账单数量 | 汇总信息 | +| successList | Array | 成功明细列表 | `biz_charge` | +| successList[].chargeId | Long | 账单主键 | `biz_charge.id` | +| successList[].chargeCode | String | 账单编号 | `biz_charge.code` | +| successList[].custId | Long | 客户 ID | `biz_charge.cust_id` | +| successList[].totalAmount | Decimal | 账单总金额 | `biz_charge.total_amount` | +| failureList | Array | 失败明细列表 | 处理结果 | +| failureList[].reason | String | 失败原因 | 异常信息 | + +### IF-REV-006 缴费处理接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | `biz_charge.cust_id` | +| chargeIds | Array | 是 | 待核销账单 ID 列表 | `biz_charge.id` | +| paymentChannel | String | 是 | 支付渠道:`CASH`、`WECHAT`、`ALIPAY`、`BANK`、`PREPAY` | 渠道参数 | +| paymentAmount | Decimal | 是 | 本次支付金额 | `biz_collection.amount` | +| actualAmount | Decimal | 否 | 实收金额,柜台收费场景使用 | 柜台收费扩展 | +| tradeNo | String | 否 | 外部交易流水号 | `bk_transaction.trade_no` | +| outletCode | String | 否 | 柜台或网点编号 | `biz_outlets.code` | +| remark | String | 否 | 收费备注 | `biz_collection.remark` | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| collectionId | Long | 收费记录 ID | `biz_collection.id` | +| collectionCode | String | 收费业务编号 | `biz_collection.code` | +| writeOffStatus | String | 核销状态:`SUCCESS`、`PARTIAL`、`PENDING` | 业务状态 | +| paidAmount | Decimal | 已支付金额 | 汇总结果 | +| remainAmount | Decimal | 剩余待支付金额 | 汇总结果 | +| tradeNo | String | 渠道交易流水号 | `bk_transaction.trade_no` | +| invoiceAvailable | Boolean | 是否可发起开票 | 业务判断 | + +### IF-REV-007 账务调整接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| chargeId | Long | 是 | 目标账单 ID | `biz_charge.id` | +| adjustType | String | 是 | 调整类型:`USAGE`、`AMOUNT`、`REFUND`、`REVERSE`、`BAD_DEBT` | 业务类型 | +| adjustAmount | Decimal | 否 | 调整金额 | `biz_charge_detail` / 业务计算 | +| adjustUsage | Decimal | 否 | 调整水量 | 业务计算 | +| sourceTradeNo | String | 否 | 原交易流水号,退款/冲正场景使用 | `bk_transaction.trade_no` | +| reasonCode | String | 是 | 调整原因编码 | 业务字典 | +| remark | String | 否 | 调整说明 | `biz_operat_log.remark` | +| attachmentList | Array | 否 | 依据附件 | 附件系统 | +| operatorId | Long | 是 | 操作人 ID | 操作上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| adjustmentNo | String | 调整业务编号 | 业务流水 | +| chargeId | Long | 目标账单 ID | `biz_charge.id` | +| resultStatus | String | 处理状态:`SUCCESS`、`PENDING_APPROVAL`、`FAIL` | 业务状态 | +| writeBackStatus | String | 账单回写状态 | 业务状态 | +| approvalRequired | Boolean | 是否进入审批 | 流程判断 | +| msg | String | 处理说明 | 返回消息 | + +### IF-REV-008 发票申请接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| applicationNo | String | 否 | 发票申请单号 | 服务端生成,作为幂等主键之一 | +| custId | Long | 是 | 客户 ID | `biz_invoice.cust_id` | +| chargeIds | Array | 是 | 开票关联账单 ID 列表 | 业务单据关联 | +| invoiceType | String | 是 | 发票类型:`ELECTRONIC`、`PAPER` | `biz_invoice.invoice_type` | +| invoiceTitle | String | 是 | 发票抬头 | `biz_cust_invoice.invoice_title` | +| taxNo | String | 否 | 税号 | `biz_cust_invoice.tax_no` | +| email | String | 否 | 电子发票接收邮箱 | `biz_cust_invoice.email` | +| mobile | String | 否 | 接收手机号 | `biz_cust_invoice.mobile` | +| sourceChannel | String | 是 | 来源渠道:`COUNTER`、`FINANCE_BACKOFFICE` | 业务来源 | +| remark | String | 否 | 申请备注 | 操作留痕 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| invoiceId | Long | 发票申请记录 ID | `biz_invoice.id` | +| applicationNo | String | 发票申请单号 | `biz_invoice.application_no` | +| invoiceStatus | String | 状态:`SUBMITTED`、`PENDING`、`REJECTED` | `biz_invoice.invoice_status` | +| sysRequestNo | String | 发往 `SYS-008` 的受理号 | 协同流水 | +| msg | String | 处理说明 | 返回消息 | + +#### 申请校验与幂等约束 + +- 所有关联账单必须满足“已收费、未开票、未作废”。 +- 一期不支持原始单账单直接任意部分金额开票;如需多张发票,必须基于拆账/分账后的账单集合发起申请。 +- 企业抬头场景应校验 `taxNo` 完整性;电子发票场景优先校验 `email` 或 `mobile` 至少一项可用。 +- 幂等键优先使用 `applicationNo`,未传入时按 `custId + chargeIds` 组合控制重复申请。 +- 申请成功后必须创建查询补偿上下文,不依赖回调作为唯一结果来源。 + +#### 后台作废请求参数(`/business/invoice/invalidate`) + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| invoiceId | Long | 是 | 发票记录 ID | `biz_invoice.id` | +| invalidReason | String | 是 | 作废原因 | `biz_invoice.invalid_reason` | +| invalidRemark | String | 否 | 作废备注 | `biz_invoice.invalid_remark` | +| originalInvoiceCode | String | 否 | 原发票代码;传入时必须与当前发票记录一致 | `biz_invoice.original_invoice_code` | +| originalInvoiceNumber | String | 否 | 原发票号码;传入时必须与当前发票记录一致 | `biz_invoice.original_invoice_number` | + +#### 后台红冲请求参数(`/business/invoice/red-ink`) + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| invoiceId | Long | 是 | 发票记录 ID | `biz_invoice.id` | +| redInkReason | String | 是 | 红冲原因 | `biz_invoice.red_ink_reason` | +| redInkRemark | String | 否 | 红冲备注 | `biz_invoice.red_ink_remark` | +| originalInvoiceCode | String | 否 | 原发票代码;传入时必须与当前发票记录一致 | `biz_invoice.original_invoice_code` | +| originalInvoiceNumber | String | 否 | 原发票号码;传入时必须与当前发票记录一致 | `biz_invoice.original_invoice_number` | + +#### 后台作废/红冲处理约束 + +- 作废与红冲仅允许对当前 `invoiceStatus=SUCCESS` 的记录发起;已进入 `INVALID` 或 `RED_INK` 的记录必须拒绝重复处理。 +- 后台提交作废或红冲后,应同步写入原因、备注、原票引用与触发来源,当前实现的触发来源分别为 `ADMIN_INVALIDATE`、`ADMIN_RED_INK`。 +- 作废与红冲的即时返回仅表示后台已受理本次后处理动作;最终状态仍通过 `IF-REV-009` 查询补偿或 `IF-EXT-007` 回写统一收口。 +- 后处理动作必须保留操作日志,记录触发人、目标状态、原因、备注与原发票代码/号码。 + +### IF-REV-009 发票结果查询接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| applicationNo | String | 否 | 发票申请单号,与 `sysRequestNo` 二选一 | `biz_invoice.application_no` | +| sysRequestNo | String | 否 | `SYS-008` 受理号,与 `applicationNo` 二选一 | `biz_invoice.sys_request_no` | +| querySource | String | 是 | 查询来源:`MANUAL`、`AUTO_COMPENSATE`、`CALLBACK_VERIFY` | 查询触发上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| invoiceId | Long | 发票主记录 ID | `biz_invoice.id` | +| applicationNo | String | 发票申请单号 | `biz_invoice.application_no` | +| sysRequestNo | String | `SYS-008` 受理号 | `biz_invoice.sys_request_no` | +| invoiceStatus | String | 状态:`SUBMITTED`、`PENDING`、`SUCCESS`、`FAIL`、`INVALID`、`RED_INK` | `biz_invoice.invoice_status` | +| invoiceCode | String | 发票代码 | `biz_invoice.invoice_code` | +| invoiceNumber | String | 发票号码 | `biz_invoice.invoice_number` | +| fileUrl | String | 电子发票文件地址 | `biz_invoice.file_url` | +| failReason | String | 失败原因 | `biz_invoice.fail_reason` | +| pushStatus | String | 电子发票推送状态 | `biz_invoice.push_status` | +| lastQueryTime | DateTime | 最近一次查询时间 | `biz_invoice.last_try_time` | +| tryCount | Integer | 累计查询次数 | `biz_invoice.try_count` | +| latestResult | String | 最近一次查询结果摘要 | `biz_invoice.latest_result` | +| latestError | String | 最近一次查询异常说明 | `biz_invoice.latest_error` | +| msg | String | 处理说明 | 返回消息 | + +#### 查询补偿与状态流转约束 + +- 查询入口同时服务于后台人工查询与系统补偿查询,两类触发必须复用同一状态落账规则。 +- 当 `querySource=AUTO_COMPENSATE` 时,接口语义表示由系统补偿任务触发一次兜底查询,并刷新最近查询时间、下次计划时间与累计次数。 +- 查询结果若确认开票成功,应回写票号、票据地址与账单-发票关联状态;若仍处理中,仅维持 `PENDING` 并更新补偿上下文。 +- 对已发起作废或红冲的记录,查询结果应允许把终态更新为 `INVALID` 或 `RED_INK`,并同步刷新 `latestResult`、`latestError`、账单关联状态与后处理上下文。 +- 已进入 `SUCCESS` 的正常开票终态不得被后续失败查询结果覆盖;若外部返回异常,应记录到操作留痕并保留人工核查入口。 + +### IF-REV-013 催缴任务生成与结果承接接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| taskNo | String | 否 | 催缴任务号;查询/人工核查时必填 | 任务主键 | +| custId | Long | 是 | 客户标识 | `biz_charge.cust_id` | +| chargeIds | Array | 是 | 欠费账单集合 | `biz_charge.id` | +| billPeriod | String | 是 | 账期 | `biz_charge.bill_period` | +| arrearsAmount | Decimal | 是 | 欠费金额汇总 | 欠费汇总结果 | +| strategyCode | String | 是 | 命中的催缴策略编码 | 策略规则 | +| channelType | String | 是 | 触达渠道:短信/微信公众号/站内信等 | 任务分组结果 | +| triggerType | String | 是 | 触发方式:`AUTO` / `MANUAL` | 任务触发上下文 | +| eventNo | String | 否 | 业务事件号;生成后返回,回写承接时作为关联键 | 协同事件主键 | +| relatedDisposalRef | String | 否 | 关联停复水或工单引用 | 联动追溯信息 | +| manualVerifyNote | String | 否 | 人工核查说明;仅人工核查时填写 | 核查留痕 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| taskNo | String | 催缴任务号 | 任务主键 | +| interfaceCode | String | 固定返回 `IF-REV-013` | 接口常量 | +| eventNo | String | 业务事件号 | 协同主键 | +| status | String | 状态:`PENDING`、`SUCCESS`、`FAIL`、`MANUAL_VERIFIED` | 任务状态 | +| resultTime | DateTime | 最近结果时间 | 结果回写时间 | +| failureReason | String | 失败原因 | 失败回写 | +| resultChannel | String | 实际触达渠道 | 协同结果 | +| relatedDisposalRef | String | 关联停复水或工单引用 | 联动追溯 | +| msg | String | 处理说明 | 返回消息 | + +#### 任务生成与状态承接约束 + +- 任务生成前必须完成欠费账单、客户类别、联系方式和策略命中校验;至少存在一个可用触达渠道。 +- 相同业务事件与同一接收对象在去重窗口内不得重复生成等效任务;若为人工补发,应显式记录 `triggerType=MANUAL`。 +- `PENDING` 表示已生成任务并发起协同,等待 `SYS-010` 回写或人工核查;`SUCCESS`、`FAIL` 由协同结果或明确失败确认触发。 +- 当外部结果长期未定、历史回执不足或人工核查已确认结果时,可将任务补记为 `MANUAL_VERIFIED`,并保留核查人和核查说明。 +- 接口返回的 `relatedDisposalRef` 仅用于追溯停复水、复水或工单处置引用,不表示本接口承担下游流程控制。 + +#### 失败阻断与人工核查约束 + +- 候选账单不满足欠费前提、策略编码无效或触达信息缺失时,应阻断任务生成并返回明确原因,不得写入伪成功状态。 +- 频控规则命中时允许部分阻断,必须返回被跳过对象与原因摘要,避免“全成功”误判。 +- 渠道协同超时或仅返回受理结果时,不直接判定 `FAIL`,保持 `PENDING` 并等待回执或进入人工核查流程。 +- 人工核查补记必须校验 `taskNo` 存在且 `manualVerifyNote` 非空;不满足条件时应拒绝补记并返回校验错误。 +- 人工核查仅用于状态收口,不替代 `SYS-010` 的渠道执行职责,也不扩展停复水/工单内部流程控制。 + +### IF-REV-010 统计查询接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| themeCode | String | 是 | 统计主题编码 | 查询主题 | +| dateFrom | Date | 是 | 开始日期 | 时间维度 | +| dateTo | Date | 是 | 结束日期 | 时间维度 | +| billPeriod | String | 否 | 账期 | `biz_charge.bill_period` | +| deptId | Long | 否 | 营业所/部门 | `system_dept.id` | +| regionCode | String | 否 | 片区/区域编码 | 区域维度 | +| customerCategory | String | 否 | 客户类别 | 客户标签/分类 | +| channelCode | String | 否 | 收费/交易渠道 | `bk_payment_channel.channel_code` | +| accountId | Long | 否 | 账户标识 | `biz_account.id` | +| custId | Long | 否 | 客户标识 | `biz_cust.id` | +| statusSet | Array | 否 | 状态集合 | 账单/收费/抄表等状态筛选 | +| groupBy | Array | 否 | 分组维度集合 | 结果分组 | +| exportFlag | Boolean | 否 | 是否导出 | 导出控制 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| themeCode | String | 统计主题编码 | 查询主题 | +| themeName | String | 统计主题名称 | 主题定义 | +| dimensionSummary | Object | 查询维度摘要 | 查询条件 | +| indicatorList | Array | 指标结果集合 | 聚合结果 | +| indicatorList[].indicatorCode | String | 指标编码 | 指标定义 | +| indicatorList[].indicatorName | String | 指标名称 | 指标定义 | +| indicatorList[].indicatorValue | Decimal/String | 指标值 | 聚合结果 | +| indicatorList[].unit | String | 指标单位 | 指标定义 | +| groupRows | Array | 分组结果集合 | 维度分组结果 | +| exportAllowed | Boolean | 是否允许导出 | 权限结果 | +| msg | String | 处理说明 | 返回消息 | + +#### 查询主题与口径约束 + +- 本接口至少支持营收汇总、收费与实收、欠费规模与账龄、客户结构、渠道交易、抄表完成率等主题查询。 +- 应收金额、实收金额、欠费余额、账单数、客户数、交易笔数、渠道占比、完成率等指标必须按业务含义区分,不得混写。 +- 当查询涉及历史只读口径时,历史数据仅作为补充来源或迁移核查辅助,不替代在线主数据统计结果。 +- 权限边界必须同时作用于在线查询和导出动作;不允许越过现有数据权限返回全量统计结果。 + +### IF-REV-011 银行代收协同接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| batchNo | String | 是 | 代扣批次号 | `bk_withholding_batch.batch_no` | +| businessType | String | 是 | 业务类型:`WITHHOLDING`、`RECONCILE`、`SETTLEMENT` | 协同类型 | +| channelCode | String | 是 | 渠道编码 | `bk_payment_channel.channel_code` | +| billPeriod | String | 否 | 账期 | 批处理参数 | +| itemList | Array | 否 | 批次明细列表 | `bk_withholding_item` | +| itemList[].custId | Long | 是 | 客户 ID | `bk_withholding_item.cust_id` | +| itemList[].chargeId | Long | 是 | 账单 ID | `bk_withholding_item.charge_id` | +| itemList[].amount | Decimal | 是 | 扣款金额 | 业务金额 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| batchNo | String | 批次号 | `bk_withholding_batch.batch_no` | +| batchStatus | String | 批次状态:`CREATED`、`SENT`、`RETURNED`、`RECONCILED`、`SETTLED` | 批次状态 | +| successCount | Integer | 成功处理条数 | 汇总结果 | +| failCount | Integer | 失败条数 | 汇总结果 | +| reconcileStatus | String | 对账状态 | `bk_reconcile_batch.status` | +| settlementStatus | String | 结算状态 | `bk_settlement_batch.status` | +| diffList | Array | 差异清单摘要 | `bk_reconcile_diff` | + +### IF-REV-012 业务参数配置接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| action | String | 是 | 动作:`QUERY`、`CREATE`、`UPDATE` | 配置动作 | +| configType | String | 是 | 配置类型:`PRICE`、`RULE`、`PAGE`、`NOTICE` | `biz_parameter_settings.config_type` | +| configCode | String | 否 | 配置编码 | `biz_parameter_settings.config_code` | +| configValue | String | 否 | 配置值或 JSON 内容 | `biz_parameter_settings.config_value` | +| deptId | Long | 否 | 生效单位 | 作用域参数 | +| effectiveDate | Date | 否 | 生效日期 | 生效控制 | +| operatorId | Long | 否 | 操作人 ID | 操作上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| configId | Long | 配置主键 | `biz_parameter_settings.id` | +| configCode | String | 配置编码 | `biz_parameter_settings.config_code` | +| configVersion | String | 配置版本 | 版本信息 | +| effectScope | String | 生效范围 | 作用域结果 | +| effectStatus | String | 生效状态:`DRAFT`、`ACTIVE`、`EXPIRED` | 业务状态 | +| msg | String | 处理说明 | 返回消息 | + +### IF-CS-001 账户绑定接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| action | String | 是 | 动作:`BIND`、`UNBIND`、`SET_DEFAULT` | 绑定动作 | +| channelType | String | 是 | 渠道类型:`WECHAT`、`ALIPAY`、`MINIAPP` | 渠道上下文 | +| channelUserId | String | 是 | 渠道用户标识,如 OpenId | 渠道上下文 | +| custId | Long | 是 | 客户 ID | `biz_cust.id` | +| accountId | Long | 否 | 账户 ID | `biz_account.id` | +| verifyCode | String | 否 | 验证码或身份校验码 | 安全校验 | +| defaultFlag | Boolean | 否 | 是否设为默认账户 | `biz_cust_app_binds.is_default` | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| bindId | Long | 绑定关系 ID | `biz_cust_app_binds.id` | +| bindStatus | String | 绑定状态:`BOUND`、`UNBOUND` | 业务状态 | +| defaultFlag | Boolean | 是否默认账户 | `biz_cust_app_binds.is_default` | +| custSummary | Object | 客户摘要信息 | `biz_cust` | +| msg | String | 处理说明 | 返回消息 | + +### IF-CS-002 历史账单查询接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | 客户上下文 | +| queryType | String | 是 | 查询类型:`BILL`、`PAYMENT`、`USAGE`、`ARREARS`、`INVOICE` | 查询控制 | +| billPeriod | String | 否 | 账期,如 `2026-03` | `biz_charge.bill_period` | +| chargeStatus | String | 否 | 账单状态筛选 | `biz_charge.status` | +| pageNo | Integer | 否 | 页码 | 分页参数 | +| pageSize | Integer | 否 | 每页数量 | 分页参数 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| total | Integer | 总记录数 | 分页结果 | +| list | Array | 查询结果列表 | 聚合结果 | +| list[].chargeId | Long | 账单 ID | `biz_charge.id` | +| list[].billPeriod | String | 账期 | `biz_charge.bill_period` | +| list[].usageAmount | Decimal | 用量 | `biz_reading_data.usage_amount` | +| list[].payStatus | String | 缴费状态 | 业务状态 | +| list[].invoiceStatus | String | 开票状态 | `biz_invoice.invoice_status` | + +### IF-CS-004 电子发票消费接口 + +#### 查询/下载请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | `biz_invoice.cust_id` | +| invoiceId | Long | 否 | 发票记录 ID,三选一优先键 | `biz_invoice.id` | +| applicationNo | String | 否 | 发票申请单号 | `biz_invoice.application_no` | +| sysRequestNo | String | 否 | `SYS-008` 受理号 | `biz_invoice.sys_request_no` | + +#### 推送请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | `biz_invoice.cust_id` | +| invoiceId | Long | 是 | 发票记录 ID | `biz_invoice.id` | +| applicationNo | String | 否 | 发票申请单号 | `biz_invoice.application_no` | +| pushChannel | String | 是 | 推送方式:`EMAIL`、`SMS` | 推送动作 | +| pushEmail | String | 否 | 推送邮箱,`EMAIL` 时优先使用 | 目标地址 | +| pushMobile | String | 否 | 推送手机号,`SMS` 时优先使用 | 目标地址 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| invoiceId | Long | 发票记录 ID | `biz_invoice.id` | +| applicationNo | String | 发票申请单号 | `biz_invoice.application_no` | +| invoiceStatus | String | 当前状态 | `biz_invoice.invoice_status` | +| invoiceCode | String | 发票代码 | `biz_invoice.invoice_code` | +| invoiceNumber | String | 发票号码 | `biz_invoice.invoice_number` | +| fileUrl | String | 发票下载地址 | `biz_invoice.file_url` | +| pushStatus | String | 推送状态:`NONE`、`PUSHED`、`FAIL` | `biz_invoice.push_status` | +| chargeBindStatus | String | 账单关联状态:`UNBOUND`、`BOUND` | `biz_invoice.charge_bind_status` | +| msg | String | 处理说明 | 返回消息 | + +#### 客户侧消费约束 + +- 客户侧仅允许访问本人 `custId` 名下发票记录,`invoiceId`、`applicationNo`、`sysRequestNo` 任一定位成功后仍需再次校验客户归属。 +- 下载与推送前必须校验 `invoiceStatus=SUCCESS` 且 `fileUrl` 非空;已作废、已红冲或缺少电子票地址的记录一律返回不可消费原因。 +- 推送成功后回写 `pushStatus=PUSHED`;失败则更新为 `FAIL` 并记录失败原因。 +- 客户侧只消费已形成有效电子票结果的记录,不暴露后台作废、红冲入口,也不直接展示后处理请求参数。 + +### IF-CS-003 在线支付下单接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| custId | Long | 是 | 客户 ID | 客户上下文 | +| chargeIds | Array | 是 | 待支付账单 ID 列表 | `biz_charge.id` | +| paymentChannel | String | 是 | 支付渠道:`WECHAT`、`ALIPAY` | 渠道参数 | +| paymentAmount | Decimal | 是 | 支付金额 | `bk_transaction.trade_amount` | +| openId | String | 否 | 微信渠道用户标识 | 微信场景 | +| returnUrl | String | 否 | 前端完成跳转地址 | 前端场景 | +| notifyUrl | String | 否 | 支付结果通知地址 | 回调地址 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| bizOrderNo | String | SYS-002 业务订单号 | `biz_collection.code` / 业务单号 | +| tradeNo | String | 渠道交易流水号 | `bk_transaction.trade_no` | +| orderStatus | String | 订单状态:`INIT`、`PAYING`、`SUCCESS`、`FAIL` | 交易状态 | +| payUrl | String | 支付链接或二维码地址 | 渠道返回 | +| prepayInfo | Object | 预支付参数对象 | 渠道返回 | +| expireTime | Datetime | 订单失效时间 | 交易参数 | + +### IF-CS-006 业务办理进度接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| processId | Long | 否 | 办理流程 ID,查询场景使用 | `biz_process.id` | +| businessTypeCode | String | 否 | 业务类型编码,如更名、过户、低保、换表 | `biz_business_types.code` | +| custId | Long | 否 | 客户 ID | 客户上下文 | +| applyData | Object | 否 | 业务申请主体数据 | `biz_business_datas` | +| attachmentList | Array | 否 | 附件文件标识列表 | `biz_content_attach` | +| action | String | 否 | 动作:`CREATE`、`QUERY`、`SUPPLEMENT` | 流程动作 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| processId | Long | 办理流程 ID | `biz_process.id` | +| processCode | String | 流程编号 | `biz_process.code` | +| processStatus | String | 当前状态:`INIT`、`ACCEPTED`、`PROCESSING`、`DONE`、`REJECTED` | `biz_process.status` | +| currentNode | String | 当前办理节点 | 流程状态 | +| transferList | Array | 流转轨迹 | `biz_process_transfer` | +| attachmentRequired | Boolean | 是否需要补件 | 业务判断 | +| msg | String | 办理说明 | 返回消息 | + +### IF-CS-007 柜面扫码支付接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| counterCode | String | 是 | 柜台编号 | 柜面终端 | +| chargeIds | Array | 是 | 待支付账单 ID 列表 | `biz_charge.id` | +| paymentChannel | String | 是 | 支付渠道:`WECHAT`、`ALIPAY` | 渠道参数 | +| orderAmount | Decimal | 是 | 订单金额 | `bk_transaction.trade_amount` | +| operatorId | Long | 是 | 柜台操作员 ID | 操作上下文 | +| scene | String | 否 | 场景标识,默认 `COUNTER_SCAN_PAY` | 场景参数 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| bizOrderNo | String | 柜面业务订单号 | `biz_collection.code` | +| tradeNo | String | 渠道交易流水号 | `bk_transaction.trade_no` | +| qrCode | String | 柜面展示二维码内容 | 渠道返回 | +| orderStatus | String | 当前订单状态:`INIT`、`PAYING`、`SUCCESS`、`FAIL` | 交易状态 | +| writeBackStatus | String | 营收状态回写结果 | 业务状态 | +| msg | String | 处理说明 | 返回消息 | + +### IF-METER-001 水表档案查询接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源 | +|------|------|------|------|----------| +| id | Long | 否 | 水表主键 ID,与 `code` 二选一 | `biz_meter.id` | +| code | String | 否 | 水表编号,与 `id` 二选一 | `biz_meter.code` | +| queryType | String | 否 | 查询类型:`base`、`status`、`lifeCycle`、`all` | 查询控制参数 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| id | Long | 水表主键 ID | `biz_meter.id` | +| code | String | 水表编号 | `biz_meter.code` | +| meterStatus | String | 水表状态 | `biz_meter.status` | +| modelCode | String | 型号编码 | `biz_meter.model_code` | +| caliberCode | String | 口径编码 | `biz_meter.caliber_code` | +| rangeCode | String | 量程编码 | `biz_meter.range_code` | +| installAddress | String | 安装地址 | `biz_meter.install_address` | +| lastReading | Decimal | 最近有效读数 | `biz_last_reading.last_reading` | + +### IF-METER-003 库存出入库接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| action | String | 是 | 动作:`IN`、`OUT`、`RETURN`、`SCRAP` | 库存动作 | +| batchNo | String | 是 | 批次号 | `biz_meter_in_out.batch_no` | +| warehouseCode | String | 否 | 仓库编码 | 仓储参数 | +| meterIds | Array | 是 | 水表 ID 列表 | `biz_meter.id` | +| remark | String | 否 | 出入库说明 | `biz_meter_in_out.remark` | +| operatorId | Long | 是 | 操作人 ID | 操作上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| inOutId | Long | 出入库主记录 ID | `biz_meter_in_out.id` | +| batchNo | String | 批次号 | `biz_meter_in_out.batch_no` | +| actionStatus | String | 处理状态:`SUCCESS`、`PARTIAL`、`FAIL` | 业务状态 | +| successCount | Integer | 成功处理数量 | 汇总结果 | +| failCount | Integer | 失败数量 | 汇总结果 | +| msg | String | 处理说明 | 返回消息 | + +### IF-METER-004 集抄数据接收接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| meterCode | String | 是 | 水表编号 | `biz_meter.code` | +| readTime | Datetime | 是 | 采集时间 | `biz_reading_data.read_time` | +| currentReading | Decimal | 是 | 当前读数 | `biz_reading_data.current_reading` | +| deviceStatus | String | 否 | 设备状态:`ONLINE`、`OFFLINE`、`ALARM` | 设备状态 | +| alarmList | Array | 否 | 告警编码列表 | 告警结果 | +| fileSerialNo | String | 否 | 上送批次或文件序列号 | 幂等辅助键 | +| sourceSystem | String | 是 | 来源系统:`IOT`、`MDC` | 来源标识 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| readingId | Long | 读数记录 ID | `biz_reading_data.id` | +| meterReadId | Long | 对应抄表任务 ID | `biz_meter_read.id` | +| acceptStatus | String | 接收状态:`SUCCESS`、`WARN`、`REJECT` | 处理状态 | +| abnormalFlag | Boolean | 是否异常 | 过程判断 | +| nextAction | String | 后续动作:`BILLING`、`RECHECK`、`MANUAL_REVIEW` | 流程控制 | +| msg | String | 处理说明 | 返回消息 | + +### IF-INST-001 报装申请提交接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| applyType | String | 是 | 报装类型:`NEW`、`REBUILD`、`ONE_METER_ONE_HOME` | 业务类型 | +| applicantName | String | 是 | 申请人姓名 | 申请资料 | +| mobile | String | 是 | 联系手机号 | 申请资料 | +| address | String | 是 | 申请地址 | 申请资料 | +| waterUseType | String | 是 | 用水性质 | 业务字典 | +| sourceChannel | String | 是 | 来源渠道:`COUNTER`、`MINIAPP`、`GOV` | 来源标识 | +| attachmentList | Array | 否 | 申请附件列表 | `biz_content_attach` | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| processId | Long | 流程实例 ID | `biz_process.id` | +| processCode | String | 报装流程编号 | `biz_process.code` | +| processStatus | String | 当前状态:`INIT`、`ACCEPTED`、`SURVEYING` | `biz_process.process_status` | +| acceptStatus | String | 受理结果 | 业务状态 | +| msg | String | 处理说明 | 返回消息 | + +### IF-INST-002 踏勘结果回填接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| processId | Long | 是 | 报装流程 ID | `biz_process.id` | +| schemeVersion | String | 是 | 方案版本号 | `biz_business_datas` | +| surveyResult | String | 是 | 踏勘结论 | `biz_business_datas` | +| estimateAmount | Decimal | 否 | 预估费用 | `biz_business_datas` | +| attachmentList | Array | 否 | 现场照片与方案附件 | `biz_content_attach` | +| auditResult | String | 否 | 审核结果:`PASS`、`REJECT` | 审核结果 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| transferId | Long | 流转记录 ID | `biz_process_transfer.id` | +| processStatus | String | 当前流程状态 | `biz_process.process_status` | +| nextNode | String | 下一节点 | 流程控制 | +| msg | String | 处理说明 | 返回消息 | + +### IF-INST-004 签章回执接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| contractId | Long | 是 | 合同 ID | `installation_contract.id` | +| requestNo | String | 是 | 签章请求号 | 协同流水 | +| signStatus | String | 是 | 签章状态:`SUCCESS`、`FAIL`、`CANCEL` | `installation_signature.signature_status` | +| signerId | String | 否 | 签署人标识 | `installation_signature.signer_id` | +| signatureTime | Datetime | 否 | 签章时间 | `installation_signature.signature_time` | +| evidenceNo | String | 否 | 存证编号 | `installation_evidence.evidence_no` | +| fileUrl | String | 否 | 已签文件地址 | 结果回写 | +| hashValue | String | 否 | 存证哈希 | `installation_evidence.hash_value` | +| resultMsg | String | 否 | 结果说明 | 返回消息 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| signatureId | Long | 签章记录 ID | `installation_signature.id` | +| evidenceId | Long | 存证记录 ID | `installation_evidence.id` | +| writeBackStatus | String | 回写状态:`SUCCESS`、`IGNORE_REPEAT`、`FAIL` | 业务状态 | +| msg | String | 处理说明 | 返回消息 | + +### IF-INST-005 报装归档接口 + +#### 请求参数 + +| 字段 | 类型 | 必填 | 说明 | 主要来源/去向 | +|------|------|------|------|---------------| +| processId | Long | 是 | 报装流程 ID | `biz_process.id` | +| archiveType | String | 是 | 归档类型:`APPLY`、`ACCEPT`、`CHECK`、`CONTRACT`、`FINISH` | 归档分类 | +| attachmentList | Array | 是 | 归档附件列表 | `biz_content_attach` | +| contractId | Long | 否 | 合同 ID | `installation_contract.id` | +| evidenceId | Long | 否 | 存证记录 ID | `installation_evidence.id` | +| operatorId | Long | 否 | 归档操作人 | 操作上下文 | + +#### 响应参数 + +| 字段 | 类型 | 说明 | 主要来源 | +|------|------|------|----------| +| archiveBatchNo | String | 归档批次号 | 业务流水 | +| archiveStatus | String | 归档状态:`SUCCESS`、`PARTIAL`、`FAIL` | 业务状态 | +| archiveCount | Integer | 已归档文件数量 | 汇总结果 | +| msg | String | 处理说明 | 返回消息 | + +## 关键接口时序图 + +> 说明:以下时序图用于说明 SYS-002 与客户渠道、外部协同子系统之间的交互边界,重点体现业务校验、协同调用、结果回写与状态更新链路。 + +### 1. 在线支付下单与回调时序 + + +```mermaid +sequenceDiagram + autonumber + participant Client as 客户渠道 + participant SYS002 as SYS-002营收系统 + participant SYS009 as SYS-009支付结算 + participant Channel as 支付渠道 + + Client->>SYS002: 提交缴费下单请求(IF-CS-003) + SYS002->>SYS002: 校验客户、账单状态与应付金额 + SYS002->>SYS002: 生成业务订单与收费记录草稿 + SYS002->>SYS009: 发起支付下单协同(IF-EXT-004) + SYS009->>Channel: 调用微信/支付宝统一下单 + Channel-->>SYS009: 返回tradeNo、payUrl/prepayInfo + SYS009-->>SYS002: 返回交易流水与支付参数 + SYS002-->>Client: 返回bizOrderNo、payUrl、expireTime + + Channel-->>SYS009: 异步支付结果通知 + SYS009->>SYS009: 校验签名与交易状态 + SYS009->>SYS002: 回写支付结果(IF-EXT-005) + SYS002->>SYS002: 幂等校验并更新biz_collection/biz_charge + SYS002-->>Client: 查询订单时返回最新支付状态 + +``` + + +### 2. 电子发票申请、查询补偿与回写时序 + + +```mermaid +sequenceDiagram + autonumber + participant Counter as 柜台或客户渠道 + participant SYS002 as SYS-002营收系统 + participant SYS008 as SYS-008发票服务 + participant Tax as 税控/开票平台 + participant Job as 查询补偿任务 + + Counter->>SYS002: 提交发票申请(IF-REV-008/IF-CS-004) + SYS002->>SYS002: 校验客户、账单、开票抬头与金额 + SYS002->>SYS002: 生成发票申请记录biz_invoice(SUBMITTED) + SYS002->>SYS008: 发起开票协同(IF-EXT-006) + SYS008->>Tax: 调用税控或电子发票平台 + Tax-->>SYS008: 返回受理结果/票号/文件地址 + SYS008-->>SYS002: 返回受理号或异步结果 + SYS002->>SYS002: 记录sysRequestNo并更新为PENDING + alt 发票服务主动回写 + SYS008-->>SYS002: 回写开票结果(IF-EXT-007) + SYS002->>SYS002: 更新biz_invoice状态、票据地址与账单关联 + else 未收到终态结果 + Job->>SYS002: 触发补偿查询(IF-REV-009) + SYS002->>SYS008: 按申请单号/受理号查询结果 + SYS008-->>SYS002: 返回处理中/成功/失败 + SYS002->>SYS002: 刷新查询上下文并按终态规则落账 + end + SYS002-->>Counter: 返回申请结果或供后续查询 + +``` + + +### 3. 银行代扣批次与回盘时序 + + +```mermaid +sequenceDiagram + autonumber + participant BatchJob as 代扣批处理任务 + participant SYS002 as SYS-002营收系统 + participant SYS009 as SYS-009支付结算 + participant Bank as 银行渠道 + + BatchJob->>SYS002: 发起代扣批次处理(IF-REV-011) + SYS002->>SYS002: 汇总代扣客户、账单与协议关系 + SYS002->>SYS002: 生成bk_withholding_batch/bk_withholding_item + SYS002->>SYS002: 解析 send/back/reconcile 目录并固化协议、目录、文件路径 + SYS002->>SYS009: 下发银行代扣批次(IF-EXT-001) + SYS009->>Bank: 发送代扣文件或报文 + Bank-->>SYS009: 返回受理结果 + SYS009-->>SYS002: 回写批次发送状态 + + Bank-->>SYS009: 回盘文件/结果通知(IF-EXT-002) + SYS009->>SYS009: 解析成功、失败、异常明细 + SYS009->>SYS002: 回写代扣结果、差异与结算状态 + SYS002->>SYS002: 更新biz_withholding、账单核销、对账结算状态 + SYS002-->>BatchJob: 返回批次处理汇总结果 + +``` + + +### 4. 催缴通知下发与结果回写时序 + + +```mermaid +sequenceDiagram + autonumber + participant Job as 催缴任务 + participant SYS002 as SYS-002营收系统 + participant SYS010 as SYS-010消息服务 + participant User as 客户 + + Job->>SYS002: 触发催缴任务(IF-REV-013) + SYS002->>SYS002: 按欠费账单、渠道偏好生成催缴名单 + SYS002->>SYS010: 提交通知下发请求(IF-EXT-008) + SYS010->>User: 发送短信/公众号/APP消息 + User-->>SYS010: 触达回执或阅读反馈 + SYS010-->>SYS002: 回写发送结果与触达状态 + SYS002->>SYS002: 更新催缴记录、四态状态与后续策略 + SYS002-->>Job: 返回催缴任务执行结果 + +``` + + + +## 数据对象与表口径 + +### SYS-002 接口核心数据对象 + +| 数据域 | 代表表 | 接口说明 | +|--------|--------|----------| +| 客户与账户 | `biz_cust`、`biz_account`、`biz_cust_contact` | 用于客户查询、账户绑定、资料维护 | +| 客户扩展关系 | `biz_cust_meter`、`biz_cust_invoice`、`biz_cust_app_binds`、`biz_cust_collection_rel`、`biz_cust_withholding_rel` | 用于客户关联对象查询与服务协同 | +| 抄表与开账 | `biz_meter_book`、`biz_meter_read`、`biz_reading_data`、`biz_last_reading`、`biz_charge`、`biz_charge_detail` | 用于抄表任务、账单生成、费用明细查询 | +| 价格与参数 | `biz_price_*`、`biz_cost_component`、`biz_parameter_settings`、`biz_page_settings*` | 用于价格模板、业务参数、页面配置 | +| 收费与票据 | `biz_collection`、`biz_withholding`、`biz_invoice`、`biz_invoice_taxrate` | 用于收费、代扣、发票申请与回写 | +| 办理与资料 | `biz_process*`、`biz_business_datas`、`biz_content*` | 用于业务办理与进度跟踪 | +| 银行代收与结算 | `bk_transaction*`、`bk_withholding_*`、`bk_reconcile_*`、`bk_settlement_batch` | 用于支付流水、批次、回调、对账和结算 | + +### 口径约束说明 + +1. 不再使用旧稿中的 `customer_*`、`water_*`、`billing_*`、`thirdpay_*`、`service_*` 作为 SYS-002 正式接口数据口径。 +2. 若历史资料中仍存在旧命名,仅作为来源参考,不作为正式交付口径。 +3. 对 backend 中尚未明确存在独立实体表的对象,例如部分精细账务台账、红冲明细、价差调整明细等,本文仅描述为业务处理场景,不强写为既有独立接口对象。 + +## 跨系统报文映射表 + +> 说明:以下映射表用于说明 SYS-002 与 `SYS-008`、`SYS-009`、`SYS-010` 之间的关键报文字段对应关系,重点体现业务主键、状态字段、金额字段与结果回写字段,不展开各外部平台私有扩展字段。 + +### 1. SYS-002 ↔ SYS-009 支付下单与结果回写映射 + +| 协同场景 | SYS-002 字段 | SYS-009/渠道字段 | 说明 | 主要来源 | +|---------|--------------|------------------|------|----------| +| 支付下单 | `bizOrderNo` | `businessOrderNo` | SYS-002 业务订单号,作为支付协同主键 | `biz_collection.code` | +| 支付下单 | `chargeIds[]` | `orderItems[].sourceId` | 待缴账单明细标识 | `biz_charge.id` | +| 支付下单 | `custId` | `buyer.customerId` | 客户标识 | `biz_charge.cust_id` / `biz_cust.id` | +| 支付下单 | `paymentAmount` | `tradeAmount` | 交易总金额 | `bk_transaction.trade_amount` | +| 支付下单 | `paymentChannel` | `channelCode` | 支付渠道编码 | 渠道参数 / `bk_payment_channel.channel_code` | +| 支付下单 | `notifyUrl` | `notifyUrl` | 支付结果异步通知地址 | 协同参数 | +| 下单返回 | `tradeNo` | `tradeNo` | 渠道交易流水号 | `bk_transaction.trade_no` | +| 下单返回 | `payUrl`/`prepayInfo` | `payUrl`/`payParams` | 二维码链接或预支付参数 | 渠道返回 | +| 结果回写 | `orderStatus` | `tradeStatus` | 交易状态映射:`INIT/PAYING/SUCCESS/FAIL` | `bk_transaction.status` | +| 结果回写 | `paidAmount` | `successAmount` | 实际支付成功金额 | `biz_collection.amount` / 渠道结果 | +| 结果回写 | `callbackTime` | `notifyTime` | 回调时间 | `bk_transaction_callback.create_time` | +| 结果回写 | `writeOffStatus` | `writeBackStatus` | SYS-002 核销处理结果 | 业务状态 | + +### 2. SYS-002 ↔ SYS-008 发票申请与结果回写映射 + +| 协同场景 | SYS-002 字段 | SYS-008 字段 | 说明 | 主要来源 | +|---------|--------------|--------------|------|----------| +| 发票申请 | `invoiceCode` | `requestNo` | 发票申请单号 / 协同请求号 | `biz_invoice.code` | +| 发票申请 | `custId` | `customerId` | 客户标识 | `biz_invoice.cust_id` | +| 发票申请 | `chargeIds[]` | `billList[].sourceBillId` | 开票关联账单标识 | 业务单据关联 | +| 发票申请 | `invoiceTitle` | `buyerName` | 购方名称 / 抬头 | `biz_cust_invoice.invoice_title` | +| 发票申请 | `taxNo` | `buyerTaxNo` | 购方税号 | `biz_cust_invoice.tax_no` | +| 发票申请 | `invoiceType` | `invoiceType` | 电子/纸质发票类型 | `biz_invoice.invoice_type` | +| 发票申请 | `taxRateCode` | `taxRateCode` | 税率编码 | `biz_invoice_taxrate.tax_code` | +| 发票申请 | `email` / `mobile` | `receiver.email` / `receiver.mobile` | 票据接收信息 | `biz_cust_invoice.email` / `biz_cust_invoice.mobile` | +| 结果回写 | `invoiceStatus` | `invoiceStatus` | 开票状态:受理中、成功、失败、作废、红冲等 | `biz_invoice.invoice_status` | +| 结果回写 | `invoiceNo` | `invoiceNo` | 发票号码 | 开票结果 | +| 结果回写 | `fileUrl` | `fileUrl` | 发票文件下载地址 | 回写结果 | +| 结果回写 | `msg` | `resultMsg` | 结果说明 | 返回消息 | + +### 3. SYS-002 ↔ SYS-009 银行代扣、对账、结算映射 + +| 协同场景 | SYS-002 字段 | SYS-009/银行字段 | 说明 | 主要来源 | +|---------|--------------|------------------|------|----------| +| 批次下发 | `batchNo` | `batchNo` | 代扣批次号 | `bk_withholding_batch.batch_no` | +| 批次下发 | `businessType` | `businessType` | 代扣/对账/结算类型 | 协同参数 | +| 批次下发 | `channelCode` | `channelCode` | 渠道编码 | `bk_payment_channel.channel_code` | +| 批次下发 | `protocol` | `protocol` | `SFTP/FTP` 传输协议 | 统一解析结果 | +| 批次下发 | `sendDir` / `sendFilePath` | `sendDir` / `sendFilePath` | 送盘目录与文件路径 | `bk_withholding_batch` | +| 批次下发 | `billPeriod` | `billPeriod` | 账期 | 批处理参数 | +| 批次明细 | `itemList[].custId` | `itemList[].customerId` | 客户标识 | `bk_withholding_item.cust_id` | +| 批次明细 | `itemList[].chargeId` | `itemList[].sourceBillId` | 账单标识 | `bk_withholding_item.charge_id` | +| 批次明细 | `itemList[].amount` | `itemList[].withholdingAmount` | 代扣金额 | 业务金额 | +| 回盘回写 | `batchStatus` | `batchStatus` | 批次状态:已发送、已回盘等 | `bk_withholding_batch.status` | +| 回盘回写 | `backProtocol` / `backDir` / `backFilePath` | `backProtocol` / `backDir` / `backFilePath` | 回盘阶段最终解析结果 | `bk_withholding_batch` | +| 回盘回写 | `successCount` / `failCount` | `successCount` / `failCount` | 成功失败数量汇总 | 汇总结果 | +| 对账回写 | `protocol` / `dir` / `filePath` | `protocol` / `dir` / `filePath` | 对账文件最终解析结果 | `bk_reconcile_batch` | +| 对账回写 | `reconcileStatus` | `reconcileStatus` | 对账状态 | `bk_reconcile_batch.status` | +| 对账回写 | `diffList[]` | `diffList[]` | 差异明细摘要 | `bk_reconcile_diff` | +| 结算回写 | `settlementStatus` | `settlementStatus` | 结算状态 | `bk_settlement_batch.status` | + +### 4. SYS-002 ↔ SYS-010 催缴与业务通知映射 + +| 协同场景 | SYS-002 字段 | SYS-010 字段 | 说明 | 主要来源 | +|---------|--------------|--------------|------|----------| +| 催缴通知 | `messageBizNo` | `eventNo` | 消息事件编号 | 业务事件编号 | +| 催缴通知 | `custId` | `receiver.customerId` | 接收客户标识 | `biz_charge.cust_id` / `biz_process.cust_id` | +| 催缴通知 | `mobile` | `receiver.mobile` | 接收手机号 | 客户联系方式 | +| 催缴通知 | `templateCode` | `templateCode` | 消息模板编码 | 模板参数 | +| 催缴通知 | `arrearsAmount` | `payload.arrearsAmount` | 欠费金额 | `biz_charge.total_amount` / 汇总结果 | +| 催缴通知 | `billPeriod` | `payload.billPeriod` | 账期 | `biz_charge.bill_period` | +| 催缴通知 | `strategyCode` | `payload.strategyCode` | 命中的催缴策略编码 | 任务分组结果 | +| 催缴通知 | `triggerType` | `payload.triggerType` | 自动/人工触发方式 | 任务触发上下文 | +| 办理进度通知 | `processCode` | `payload.processCode` | 业务办理单号 | `biz_process.code` | +| 办理进度通知 | `processStatus` | `payload.processStatus` | 办理状态 | `biz_process.status` | +| 发送结果回写 | `status` | `sendStatus` | 渠道回执由 `SYS-002` 统一映射为 `PENDING/SUCCESS/FAIL/MANUAL_VERIFIED` 四态 | 消息结果 | +| 发送结果回写 | `reachStatus` | `reachStatus` | 触达/阅读状态 | 渠道回执 | +| 发送结果回写 | `sendTime` | `sendTime` | 发送时间 | 消息结果 | +| 发送结果回写 | `msg` | `resultMsg` | 结果说明 | 返回消息 | + + +## 接口安全与异常处理 + +### 认证与鉴权 + +- 管理后台接口:统一采用登录态 + 权限控制 + 数据权限。 +- 客户渠道接口:采用账户绑定态、手机号/验证码、OAuth 或渠道令牌机制。 +- 外部协同接口:按渠道要求使用 API Key、时间戳、数字签名、证书或国密算法。 + +### 安全控制要求 + +- 全部接口统一走 HTTPS。 +- 外部回调接口必须执行签名校验、重复通知幂等处理与来源校验。 +- 关键交易类接口需记录业务流水、渠道流水和操作日志。 +- 敏感字段如证件号、手机号、银行账号按制度要求脱敏展示。 + +### 错误码分层建议 + +| 错误码段 | 说明 | +|---------|------| +| 0 | 成功 | +| 400~499 | 请求参数、权限、资源不存在等通用错误 | +| 1_002_001_xxx | 客户主数据类错误 | +| 1_002_002_xxx | 抄表开账类错误 | +| 1_002_003_xxx | 收费与核销类错误 | +| 1_002_004_xxx | 账务处理类错误 | +| 1_002_005_xxx | 发票协同类错误 | +| 1_002_006_xxx | 银行代收与结算类错误 | +| 1_002_007_xxx | 客户渠道与业务办理类错误 | +| 1_002_008_xxx | 消息通知与触达类错误 | + +### 典型错误码建议 + +| 错误码 | 适用接口/场景 | 说明 | 处理建议 | +|-------|---------------|------|----------| +| `1_002_001_001` | IF-REV-001 / IF-REV-002 | 客户不存在或已停用 | 返回客户状态并阻断后续处理 | +| `1_002_001_002` | IF-CS-001 | 账户绑定关系不存在 | 引导重新绑定客户 | +| `1_002_002_001` | IF-REV-004 | 抄表任务不存在或已关闭 | 禁止提交抄表数据 | +| `1_002_002_002` | IF-REV-004 | 本次读数小于上次读数且未通过异常审批 | 标记异常并进入复核 | +| `1_002_002_003` | IF-REV-005 | 价格模板或费用组成缺失 | 阻断账单生成并提示补齐配置 | +| `1_002_003_001` | IF-REV-006 / IF-CS-003 / IF-CS-007 | 账单已核销或不允许重复支付 | 返回当前账单支付状态 | +| `1_002_003_002` | IF-REV-006 | 支付金额与待核销金额不一致 | 阻断核销并返回差额 | +| `1_002_003_003` | IF-EXT-005 | 支付回调签名校验失败 | 记录异常回调并拒绝入账 | +| `1_002_004_001` | IF-REV-007 | 账务调整目标状态不允许变更 | 返回当前账务状态 | +| `1_002_005_001` | IF-REV-008 / IF-CS-004 | 发票申请单据不满足开票条件 | 返回不可开票原因 | +| `1_002_005_002` | IF-EXT-007 | 发票结果回写状态非法或重复 | 按请求号执行幂等回写 | +| `1_002_006_001` | IF-REV-011 / IF-EXT-001 | 代扣批次不存在或已发送 | 禁止重复下发批次 | +| `1_002_006_002` | IF-EXT-002 | 银行回盘文件格式非法或批次号不匹配 | 记录异常并进入人工核查 | +| `1_002_006_003` | IF-REV-011 | 对账差异未处理,禁止结算确认 | 需先完成差异处置 | +| `1_002_007_001` | IF-CS-006 | 业务办理单不存在 | 返回空结果并提示核对单号 | +| `1_002_007_002` | IF-CS-006 | 当前节点不允许补件或重复提交 | 返回当前流程节点状态 | +| `1_002_008_001` | IF-REV-013 / IF-EXT-008 | 消息模板不存在或目标联系方式缺失 | 记录失败原因并允许后续补发 | +| `1_002_008_002` | IF-EXT-008 | 消息通道调用超时 | 标记待重试,不直接判定业务失败 | +| `1_002_008_003` | IF-REV-013 | 人工核查补记缺少核查说明或关联任务不存在 | 拒绝补记并提示补齐核查上下文 | + +### 幂等与状态冲突控制 + +#### 幂等键建议 + +| 场景 | 接口 | 建议幂等键 | 幂等判定说明 | +|------|------|------------|--------------| +| 支付下单 | IF-CS-003 / IF-CS-007 | `bizOrderNo` 或 `custId + chargeIds + paymentChannel` | 相同业务订单仅允许创建一次有效支付单 | +| 支付回调 | IF-EXT-005 | `tradeNo + tradeStatus + notifyTime` | 同一交易成功回调只允许入账一次 | +| 发票申请 | IF-REV-008 / IF-CS-004 | `invoiceCode` 或 `custId + chargeIds` | 相同账单组合避免重复申请开票 | +| 发票结果回写 | IF-EXT-007 | `requestNo + invoiceStatus` | 相同发票状态重复回写仅更新回执日志 | +| 银行批次下发 | IF-REV-011 / IF-EXT-001 | `batchNo` | 同一代扣批次禁止重复发送 | +| 银行回盘接收 | IF-EXT-002 | `batchNo + fileSerialNo` | 同一回盘文件只处理一次 | +| 催缴通知 | IF-REV-013 / IF-EXT-008 | `messageBizNo + templateCode + receiver` | 同一业务事件与同一接收方避免重复发送 | +| 业务补件 | IF-CS-006 | `processId + action + attachmentDigest` | 相同补件内容重复提交仅保留一次 | + +#### 状态冲突处理原则 + +| 场景 | 冲突条件 | 处理原则 | +|------|----------|----------| +| 支付核销 | 账单已完成核销后再次支付 | 拒绝重复核销,返回现有 `writeOffStatus` | +| 支付回调 | 先收到失败回调,后收到成功回调 | 以最终成功状态为准,但全过程保留回调日志 | +| 发票申请 | 单据已开票成功后再次申请 | 拒绝重复申请,返回既有发票信息 | +| 发票回写 | 已成功开票后收到失败回写 | 不覆盖成功状态,转入异常核查 | +| 银行代扣 | 批次已发送后再次下发 | 拒绝重复发送,保留原批次状态 | +| 对账结算 | 差异未消除即发起结算 | 禁止结算,提示先处理差异明细 | +| 催缴通知 | 同一账期、同一模板短时间内重复催缴 | 按通知频控策略拦截重复下发 | +| 业务办理 | 流程已办结后再次补件 | 拒绝补件,返回当前流程终态 | + +### 异常处理要求 + +- 参数校验失败:直接返回明确字段错误信息。 +- 外部渠道超时:记录重试状态,不直接覆盖业务成功状态。 +- 重复回调:按业务流水执行幂等控制。 +- 账务状态冲突:返回当前账单状态与冲突原因,禁止重复核销。 +- 外部结果晚到:允许按幂等键补写回执,但不得回退已确认成功状态。 +- 人工兜底场景:支付异常、银行回盘异常、发票状态冲突等需保留人工复核入口与操作日志。 + + +## 历史查询与迁移校验接口口径 + +### 设计原则 + +- 历史查询接口一律只读,不承担迁移修正、补写或状态变更职责。 +- 不为迁移场景发明新的独立接口编号体系,统一挂靠既有 `IF-REV-*`、`IF-CS-*`、`IF-METER-*` 接口族扩展查询能力。 +- 对 backend 当前未识别到独立实体表的旧细粒度对象,仅要求接口返回“历史摘要 + 原始标识 + 状态映射”,不强行承诺独立在线业务对象。 +- 迁移验收接口必须同时支持“汇总对账”和“明细追溯”两类能力,避免只能看总数、无法定位差异。 + +### 最小历史查询保留集 + +| 查询主题 | 挂靠接口族 | 主要数据来源 | 最低返回要求 | 说明 | +|---------|------------|--------------|--------------|------| +| 历史账单、特殊开账 | `IF-CS-002`、`IF-REV-005` | `biz_charge*` + 历史账单来源 | 原账单号、新账单号、客户号、账期、金额、状态、来源类型 | 支撑账单迁移核查与客户侧历史查询 | +| 缴费记录、柜台结账、实时收费 | `IF-CS-002`、`IF-REV-006`、`IF-REV-011` | `biz_collection`、`bk_transaction*` + 历史收费记录 | 原流水号、渠道、实收金额、收费时间、柜员/营业所、核销状态 | 支撑渠道对账、柜面核查和历史收据核对 | +| 红冲与账务调整 | `IF-REV-007` | 操作留痕、流程结果 + 历史调整台账 | 调整类型、关联原单号、调整金额、原因、审批状态、处理时间 | 支撑预存退款、已销调整、价差调整、分账调整、呆坏账查询 | +| 发票与开票关系 | `IF-REV-008`、`IF-CS-004` | `biz_invoice*` + 历史开票关系快照 | 发票号、申请单号、关联账单、票据状态、票据类型、文件地址 | 支撑发票结果核查与历史补打定位 | +| 催缴、停复水、预存短信 | `IF-REV-013`、`IF-METER-002` | 通知结果、流程工单 + 历史催缴记录 | 客户号、账期、催缴方式、消息状态、停复水状态、执行人、执行时间、处置引用 | 支撑催缴处置闭环核查 | +| 业务进度与电子档案 | `IF-CS-006` | `biz_process*`、`biz_content*` + 历史附件目录 | 业务单号、节点状态、处理轨迹、附件数量、附件元数据 | 支撑微网厅与柜台办理进度、电子档案查询 | +| 水表生命周期、检定与库存流转 | `IF-METER-001`、`IF-METER-003` | `biz_meter*` + 历史仓储/检定单据 | 表号、当前状态、单据类型、仓库、检定结论、证书编号、时间 | 支撑表务迁移核查与历史作业追溯 | +| 页面参数、业务字段、微信配置 | `IF-REV-012`、`IF-CS-006` | `biz_parameter_settings`、`biz_page_settings*`、`sys_wechat_app_settings` | 参数编码、原值、新值、启用状态、生效时间、适用渠道 | 支撑微网厅后台配置迁移核查 | + +### 迁移验收对账接口要求 + +| 验收场景 | 推荐挂靠接口 | 最低查询维度 | 输出要求 | +|---------|--------------|--------------|----------| +| 开账迁移核对 | `IF-REV-005`、`IF-CS-002` | 账期、营业所、客户类型、账单状态 | 同时提供汇总金额/笔数与可追溯明细清单 | +| 收费迁移核对 | `IF-REV-006`、`IF-REV-011`、`IF-CS-002` | 日期、渠道、营业所、收费状态 | 同时提供实收金额、流水数量和异常流水列表 | +| 发票迁移核对 | `IF-REV-008`、`IF-CS-004` | 开票日期、票据类型、开票状态 | 同时提供开票汇总、失败原因和票据明细定位 | +| 催缴与停复水核对 | `IF-REV-013`、`IF-METER-002` | 账期、催缴方式、执行状态、处理人 | 同时提供任务统计、执行明细与处置引用 | +| 业务办理与档案核对 | `IF-CS-006` | 业务类型、流程状态、附件类型、创建时间 | 同时提供流程轨迹、附件元数据和缺失标记 | +| 表务仓储与检定核对 | `IF-METER-001`、`IF-METER-003` | 仓库、单据类型、水表状态、检定结论 | 同时提供数量汇总和单据级追溯信息 | + +### 接口约束补充 + +- 历史查询结果应优先返回原系统标识与新系统标识的映射关系,例如原单号、原批次号、原附件标识、当前业务单号。 +- 明细查询接口应支持按客户号、证件号、手机号、表号、账期、营业所、渠道、业务单号等组合检索,满足迁移验收定位需求。 +- 若历史附件不直接由当前业务服务托管,接口至少返回附件元数据、来源系统、文件引用地址和可访问状态。 +- 历史查询接口的导出能力属于查询扩展能力,不应与在线交易接口共用“状态变更”动作。 + + +## 实现状态说明 + +### 已落地 + +结合 `backend` 当前已确认模块与真实表,可明确支撑以下接口域: + +- 客户与账户查询、维护接口 +- 抄表任务与抄表数据接口 +- 账单生成与收费核销接口 +- 银行代收、代扣、交易回调、对账、结算接口 +- 发票申请与票据状态回写接口的业务侧支撑 +- 客户渠道的账户绑定、查询、缴费、业务办理进度接口 + +### 部分落地 + +以下接口域已有主线支撑,但部分细粒度对象仍需结合后续实现继续核实: + +- 账务调整、退款、坏账、冲正类精细接口 +- 催缴管理中针对不同通知策略和停复水联动的细分接口 +- 发票补开等扩展票据后处理接口 + +### 文档先行 + +以下内容可保留设计说明,但当前不应直接表述为已完全落地: + +- 历史数据字典中大量细粒度账务台账接口 +- 未在 backend 当前扫描范围内明确识别到的独立业务对象接口 +- 特定银行或地方平台的专有报文细节 +- 历史查询与迁移校验接口在实施时所依赖的只读库、归档库或映射表物理形态 + +--- + +### 版本迭代维护说明 + +当前主文档已覆盖 `UP / REV / CS / METER / INST / EXT` 六类接口域的统一编号、清单、关键接口与字段级定义。后续版本迭代按以下顺序增量维护: + +1. 先更新接口清单与归属模块,再补充字段级请求/响应结构; +2. 涉及跨系统协同时,同步维护 `SYS-008`、`SYS-009`、`SYS-010` 报文映射; +3. 涉及异常策略变化时,同步更新错误码与幂等规则; +4. 完成后同步校验 `02_Detailed_Design/01_Detailed_Design.md` 与本主文档的一致性。 diff --git a/output/03_Summary_Design.docx b/output/03_Summary_Design.docx new file mode 100644 index 0000000..ebd1868 Binary files /dev/null and b/output/03_Summary_Design.docx differ diff --git a/output/03_Summary_Design.html b/output/03_Summary_Design.html new file mode 100644 index 0000000..43bb8ea --- /dev/null +++ b/output/03_Summary_Design.html @@ -0,0 +1,7141 @@ + + + + + + + + 福建水务营收系统-概要设计说明书 + + + + + +
+

福建水务营收系统-概要设计说明书

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统概要设计说明书

+

1.1 章节导航(精简)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文件状态:文档密级:公开
【√】草稿
【】修改稿
【】正式发布
当前版本:V1.7
作者:唐伟杰
完成日期:2025-08-18
+

1.2 版本历史

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
日期版本号作者备注
2025-07-01V1.0唐伟杰初版
2025-07-17V1.1唐伟杰1. +同步详细设计中的模块,补充缺失模块。
2. +调整子系统划分与编号,确保逻辑清晰、编号连续。
3. +重构表务、报装、客户服务子系统,优化模块设计。
4. +统一概要设计与详细设计的结构,提升一致性。
2025-08-01V1.2唐伟杰完善 APP相关的模块设计
2025-08-01V1.3唐伟杰数据库系统变更:将OpenGauss替换为达梦数据库 +8.0+,更新所有相关架构图和技术描述。
2025-08-01V1.4唐伟杰单点登录采用OAuth2.0+CAS协议:更新单点登录模块描述,强调基于OAuth2.0+CAS协议实现。
2025-08-18V1.5唐伟杰架构调整:将营收业务系统中的工单、表务、报装剥离为独立子系统(SYS-005/006/007),更新目录、功能范围、子系统列表、关系图与接口定义;保留客户服务模块在营收业务系统中的作用。
2025-08-18V1.6唐伟杰合并第三方支付能力至SYS-009”支付与银行结算子系统”,统一消息服务重编号为SYS-010;更新总体目标、功能范围、接口定义、子系统列表与相关架构图。
2026-03-12V1.7唐伟杰对照 +Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md +完成来源对齐:补充历史来源说明与引用路径,确认系统拆分、基础服务定位、外部集成与非功能约束已同步;保留当前正式系统名称、模块编号与接口编号标准,不沿用历史别名编码作为正式口径。
+

+

2 前言

+

2.1 编写目的

+

  本文档是《福建水务营收系统详细设计说明书》的前导文档,旨在从总体架构和概要设计的角度对系统进行全面的技术规划和设计。

+

主要目的:

+
    +
  1. 总体架构规划:从系统整体角度进行技术架构规划,为详细设计提供宏观指导
  2. +
  3. 技术方案论证:确定系统的技术选型、架构模式和实现策略
  4. +
  5. 设计标准制定:建立统一的技术标准、开发规范和质量要求
  6. +
  7. 风险评估分析:识别技术风险、制定应对策略
  8. +
  9. 资源需求评估:确定系统开发、部署所需的技术资源和基础设施
  10. +
+

预期读者:

+
    +
  • 系统架构师和技术负责人
  • +
  • 项目经理和技术管理人员
  • +
  • 详细设计和开发团队
  • +
  • 测试团队和运维团队
  • +
  • 甲方技术评审团队
  • +
+

2.2 背景

+

  福建水务营收系统是为满足福建省水投数字科技有限公司客户服务管理领域的业务需求而建设的信息化系统。系统以客户为核心和基础,实现客户全生命周期管理。

+

建设背景:

+

  福建水投集团注册资本46亿元,在全省40多个县市区投资重大水利项目超过450亿元,拥有全级次子公司超过67家,职工人数超3500人。当前,集团正紧紧抓住城乡供水一体化建设的机遇,需要构建以客户为中心的数字化服务体系。

+

2.3 术语与缩略语

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
术语、缩写解释
SaaSSoftware as a Service,软件即服务
RBACRole-Based Access Control,基于角色的访问控制
JWTJSON Web Token,基于JSON的Web令牌
OAuth2开放授权标准
RESTfulRepresentational State Transfer,表现层状态转化
OpenAPI开放应用程序接口规范
DDLData Definition Language,数据定义语言
DMLData Manipulation Language,数据操作语言
IoTInternet of Things,物联网
CASCentral Authentication Service,中央认证服务
DevOpsDevelopment和Operations的组合词,开发运维一体化
业务参数业务参数配置
站点用于划分用户所属管辖区域,站点可以进行多级管理
册本又称抄表本或抄表簿,根据抄表线路规划,按排相邻的一些水表给某一个抄表员进行抄表
用户编号为签定了供用水合同的正式用户分配的唯一识别号
售水量抄收水量+查处水量±调整水量
当期应收水费当期售水量乘以不同类别的水价(到户价)所得的金额
水表抄见率(当期应抄用户数-当期估表用户数)/当期应抄用户数×100%
+

2.4 参考资料

+
    +
  • GB/T 8556-2007 信息技术软件生存周期过程
  • +
  • GB/T 9385-2008 计算机软件需求规格说明规范
  • +
  • GB/T 8567-2006 计算机软件文档编制规范
  • +
  • 《RuoYi-Vue-Pro技术架构文档》
  • +
  • 《Spring Cloud微服务架构设计指南》
  • +
  • 《福建水务营收系统需求规格说明书》
  • +
  • ../04_Appendix/Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md
  • +
+

2.5 历史来源对齐说明

+

本主文档已对齐 +../04_Appendix/Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md +中对当前正式设计仍有效的内容,主要包括:

+
    +
  • 子系统拆分口径:SYS-001 ~ SYS-010 +的职责边界、基础服务分层与跨系统协同关系。
  • +
  • 业务范围口径:营收、微网厅、工单、表务、报装、发票、支付结算、消息等范围定义。
  • +
  • 架构与集成口径:外部支付、银行、税控、消息、摄像表 AI +等外部协同边界。
  • +
  • 非功能口径:达梦数据库 +8.0+、物理部署、可靠性、安全与扩展性方向。
  • +
+

以下内容仅保留在 Archive +中作为历史来源,不直接作为当前正式主文档口径:

+
    +
  • 历史系统名称“营业收费管理系统”等旧标题写法。
  • +
  • 历史别名编码,如 +UP-SSOREV-CUSTOMWECHAT-*
  • +
  • 历史接口编号体系,如 IF-S-*IF-C-*
  • +
+

当前正式口径继续统一采用:

+
    +
  • 系统名称:福建水务营收系统
  • +
  • 模块编号:UP-001REV-001CS-001METER-001INST-001
  • +
  • 接口编号:IF-UP-*IF-REV-*IF-CS-*IF-METER-*IF-INST-*IF-EXT-*
  • +
+

+

3 系统总体设计

+

3.1 任务概述

+

3.1.1 系统总体目标

+

  福建水务营收系统采用分层解耦与子系统化建设,形成”业务服务层 + +基础服务层”的整体架构:

+
    +
  • 业务服务层:SYS-001 统一平台、SYS-002 营收业务系统、SYS-003 +手机抄表APP、SYS-004 微网厅系统、SYS-005 工单管理系统、SYS-006 +表务管理系统、SYS-007 报装业务系统

  • +
  • 基础服务层:SYS-008 发票服务子系统(统一开票)、SYS-009 +支付与银行结算子系统(统一聚合支付/退款/渠道适配/第三方支付平台/银行实时收费、代扣/托收签解约、批次与对账契约、加解密与支付回调,夜间批量代扣/完整对账结算按后续完善项管理)、SYS-010 +消息服务子系统(统一短信/邮件/站内信/模板消息/微信通知/数科系统对接)、注册/配置中心、任务调度等基础服务

  • +
+

  通过系统的建设,实现福建省水投数字科技有限公司客户服务管理领域的业务流程梳理再造、组织架构的优化、管理制度的建设、绩效考核标准的建设。构建以客户为中心的一体化服务体系,将客户的所有信息进行有机的关联,方便企业对营收信息进行综合分析和管理,为客户提供更多、更便捷、更主动的个性化服务,提高客户服务的质量和客户满意度。

+

系统整体架构特点:

+
    +
  • 统一平台:提供单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力
  • +
  • 营收业务系统:围绕客户、抄表、收费、账务、催缴、统计等核心营收流程,保留”客户服务模块群”对外服务能力,提供多租户的业务参数配置
  • +
  • 手机抄表APP:移动化现场作业,支持离线;现场问题上报与工单接收由工单系统统一承载
  • +
  • 微网厅系统:面向公众的自助服务门户,支持绑定、查询、缴费、发票查看、业务办理
  • +
  • 工单管理系统:统一工单中心与流程引擎,打通营收/表务/报装/微网厅/APP的全场景工单
  • +
  • 表务管理系统:设备档案、表务全生命周期管理
  • +
  • 报装业务系统:覆盖报装申请、踏勘、施工、验收、通水与档案归档的端到端流程,支持调用泛微进行合同签订,电子签章,支持各租户自定义报装流程和表单定义
  • +
  • 发票服务子系统(基础服务):统一开票网关与供应商适配(现优先对接航天,预留博思),回执与存证
  • +
  • 支付与银行对接子系统(基础服务):统一支付/退款、银行实时收费、代扣/托收签解约、送盘/回盘/对账契约、加解密签名与第三方支付平台(微信、支付宝);夜间批量代扣和完整结算闭环按后续完善项管理
  • +
  • 消息服务子系统(基础服务):统一短信/邮件/站内信/模板消息,下行推送与到达回执,供各业务子系统调用(如营收业务系统催缴),微信信息通知,对接数科已建系统通知(OA、智水擎,水投数科 +app)
  • +
+

3.1.2 功能范围

+

  本系统功能涵盖水务企业完整的营收业务流程,包括客户资料管理、抄表开账、营业收费、账务处理、催缴管理、发票管理(经SYS-008)、表务管理、报装业务、客户服务、工单管理,以及支付与银行结算(经SYS-009)等;还包含查询统计与报表打印功能。

+

3.1.2.1 SYS-001 统一平台

+
    +
  • 单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力
  • +
+

3.1.2.2 SYS-002 营收业务系统

+
    +
  • 营收核心:客户资料、抄表开账、营业收费、账务处理、催缴管理、统计分析、代收业务、多租户业务参数配置
  • +
  • 客户服务:账户绑定、信息查询、在线缴费(经SYS-009)、柜面扫码支付(经SYS-009)、电子发票(经SYS-008)、营业网点、业务办理
  • +
+

3.1.2.3 SYS-003 手机抄表APP

+
    +
  • 移动作业:登录、首页搜索、采集任务、现场抄表、调用外部AI识别服务
  • +
  • 现场上报/工单接收:问题上报、工单接收与回填(经SYS-005)
  • +
  • 数据同步与个人管理:任务下载/数据上传(离线支持)、个人信息与设置
  • +
+

3.1.2.4 SYS-004 微网厅系统

+
    +
  • 账户绑定、账单/用水查询、在线缴费(经SYS-009)、电子发票查看(经SYS-008)、营业网点、业务办理
  • +
+

3.1.2.5 SYS-005 工单管理系统

+
    +
  • 统一工单中心、流程引擎、监控预警、绩效统计,打通营收/表务/报装/微网厅/APP
  • +
+

3.1.2.6 SYS-006 表务管理系统

+
    +
  • 设备档案、表务全生命周期管理
  • +
+

3.1.2.7 SYS-007 报装业务系统

+
    +
  • 报装流程(申请/踏勘/施工/验收/通水)、支持调用泛微进行合同签订,电子签章、各租户自定义报装流程和表单定义、工程管理(进度/资源/质量/安全)、档案管理(资料归档/留痕)
  • +
+

3.1.2.8 SYS-008 +发票服务子系统(基础服务)

+
    +
  • 统一开票/作废与红冲/查询、供应商适配(航天优先、预留博思)、回执处理与存证
  • +
+

3.1.2.9 SYS-009 +支付与银行结算子系统(基础服务)

+
    +
  • 聚合支付/退款、渠道适配(微信/支付宝/银联聚合等)、第三方支付平台(微信、支付宝)、支付结果通知、银行代扣(送盘/回盘)、支持夜间进行批量代扣、对账文件处理、加解密/签名
  • +
  • 当前实现侧已确认聚合支付基础能力、银行欠费查询/缴费、BankWithholding +六条银行入口(客户状态查询、送盘、送盘状态查询、取消送盘、回盘、回盘状态查询)、代扣/托收签约解约和后台资源管理具备证据;其中 +BankCollection +平行链路、夜间批量代扣、完整对账与结算仍按部分实现或后续完善项管理
  • +
+

3.1.2.10 SYS-010 +消息服务子系统(基础服务)

+
    +
  • 统一短信/邮件/站内信/模板消息,下行推送与到达回执,供各业务子系统调用(如营收业务系统催缴)
  • +
  • 微信信息通知,对接数科已建系统通知(OA、智水擎,水投数科 app)
  • +
  • 邮件服务:邮件通知发送(经SYS-010)
  • +
+

3.1.3 系统涉众与用户特点

+

系统涉众

+

  本系统主要涉及用户为各水务公司与系统相关的业务参与者、福建省水投数字科技有限公司研发运维团队。

+

用户特点

+
    +
  • 公司领导:对信息化在企业生产经营管理活动中的积极作用有深刻认识,并具有前瞻视角。

  • +
  • 公司管理层:有丰富的企业管理经验,有良好的业务管理类系统使用经验。

  • +
  • 系统管理人员:具有本科以上教育背景,计算机操作熟练,具有良好的软件系统维护经验,主要维护系统的后台权限管理、人员管理、部门管理等功能。

  • +
  • 操作人员:部分用户已经使用过其他厂商提供的水务营收系统,部分用户对软件系统使用经验不足。

  • +
+

3.2 设计概述

+

3.2.1 总体约束

+

技术约束

+
    +
  • 采用现代化微服务架构,支持大规模并发访问
  • +
  • 支持多租户模式,满足集团化管理需求
  • +
  • 实现移动化办公,提高工作效率
  • +
  • 集成物联网技术,支持智能水表远程抄表
  • +
  • 适配国产化环境,确保系统安全可控
  • +
+

性能约束

+
    +
  • 系统并发用户数不低于200个
  • +
  • 移动设备同时登录系统的并发用户数不少于50个
  • +
  • 系统响应时间不超过3秒
  • +
  • 支持100万客户的业务量
  • +
  • 系统可用性达到99.5%以上
  • +
+

安全约束

+
    +
  • 系统满足国家信息安全等级保护要求
  • +
  • 支持数据加密存储和传输
  • +
  • 实现细粒度的权限控制
  • +
  • 提供完整的审计日志功能
  • +
+

3.2.2 系统依赖外部接口

+

  本系统需要与以下外部系统进行接口集成:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口类型接口名称功能描述接口协议
金融支付银行代扣接口银行托收代扣缴费HTTPS
金融支付微信支付接口微信在线支付HTTPS
金融支付支付宝支付接口支付宝在线支付HTTPS
通信服务短信平台接口短信通知发送HTTPS
通信服务邮件服务接口邮件通知发送HTTPS/SMTP
通信服务微信模板消息接口微信模板消息下发HTTPS
物联网集抄系统接口智能水表数据采集TCP/HTTPS
税务服务电子发票接口第三方发票开具HTTPS
认证服务身份认证接口第三方身份验证HTTPS
认证服务CAS单点登录第三方身份验证HTTPS
认证服务OAuth2.0单点登录第三方身份验证HTTPS
外部系统CA电子签章CA签发/验章/存证HTTPS
外部系统邮件服务邮件服务HTTPS
外部系统摄像表AI接口表AI识别服务HTTPS
+

3.2.3 设计方案概述

+

架构设计方案

+

  系统采用现代化的多层分布式架构,基于微服务设计思想,实现松耦合、高内聚的系统架构。整体架构分为表现层、网关层、业务服务层、基础服务层和数据层五个层次。

+

技术选型方案

+
    +
  • 后端技术栈:Java 17+、Spring Boot 3.1+、Spring +Cloud Gateway、MyBatis-Plus
  • +
  • 前端技术栈:Vue 3、Element Plus、TypeScript
  • +
  • 数据库:达梦数据库 8.0+(主从架构)
  • +
  • 缓存:Redis 6.0+(集群模式)
  • +
  • 消息队列:RabbitMQ 3.9+
  • +
  • 文件存储:MinIO(分布式文件存储)
  • +
  • 容器化:基于Docker的容器化部署,使用Docker +Compose进行容器编排,使用Kubernetes进行容器编排和调度。
  • +
  • DevOps:使用Jenkins进行自动化构建、部署和测试,使用Gitea进行代码管
  • +
+

部署方案

+

  采用容器化部署架构,支持多环境部署(开发、测试、生产),提供自动化部署脚本,支持弹性扩缩容。

+

3.3 系统架构设计

+

3.3.1 系统的逻辑架构设计

+

  系统采用现代化的多层分布式架构,基于微服务设计思想,实现松耦合、高内聚的系统架构。

+

3.3.1.1 整体架构图

+
graph TB
+    %% 表现层
+    subgraph "表现层"
+        ADMIN[Web管理端]
+        H5[微网厅H5]
+        APP[手机抄表APP]
+    end
+
+    %% 网关层
+    subgraph "网关层"
+        GATEWAY[API网关]
+        SSO[统一认证/SSO]
+    end
+
+    %% 业务服务层
+    subgraph "业务服务层"
+        UP[SYS-001 统一平台]
+        REV[SYS-002 营收业务系统]
+        WO[SYS-005 工单管理系统]
+        METER[SYS-006 表务管理系统]
+        INST[SYS-007 报装业务系统]
+    end
+
+    %% 基础服务层
+    subgraph "基础服务层"
+        INV[SYS-008 发票服务]
+        PAY[SYS-009 支付与银行结算]
+        MSG[SYS-010 消息服务]
+        MQ[RabbitMQ 消息队列]
+        FILE[MinIO 文件存储]
+        REDIS[Redis 缓存]
+        MON[监控/日志]
+        CONFIG[注册/配置中心]
+        SCHED[任务调度]
+    end
+
+    %% 数据层
+    subgraph "数据层"
+        DM[(达梦数据库集群)]
+        CACHE[(Redis集群)]
+        STORE[(MinIO集群)]
+    end
+    
+    %% 外部系统
+    subgraph "外部系统"
+        EXT_CA[CA电子签章]
+        EXT_BANK[银行]
+        EXT_PSP[支付渠道 微信/支付宝/银联聚合]
+        EXT_INV[发票供应商 航天/博思]
+        EXT_SMS[短信平台]
+        EXT_MAIL[邮件服务]
+        EXT_IOT[集抄系统]
+    end
+
+    %% 连接关系
+    ADMIN --> GATEWAY
+    H5 --> GATEWAY
+    APP --> GATEWAY
+    GATEWAY --> SSO
+    GATEWAY --> UP
+    GATEWAY --> REV
+    GATEWAY --> WO
+    GATEWAY --> METER
+    GATEWAY --> INST
+
+    REV --> INV
+    REV --> PAY
+    REV --> MQ
+    REV -.-> MSG
+    REV --> FILE
+    REV --> REDIS
+
+    INST -.-> EXT_CA
+
+    INV -.-> EXT_INV
+    MSG -.-> EXT_SMS
+    MSG -.-> EXT_MAIL
+    PAY -.-> EXT_BANK
+    PAY -.-> EXT_PSP
+
+    %% 数据层连接
+    UP --> CACHE
+    REV --> DM
+    WO --> DM
+    METER --> DM
+    INST --> DM
+    FILE --> STORE
+
+

3.3.1.2 层级说明

+

表现层(Presentation Layer)

+
    +
  • 负责用户交互和界面展示
  • +
  • 包含多种客户端形态:Web端、微网厅(微信、支付宝)
  • +
  • 采用前后端分离架构,提高开发效率和用户体验
  • +
+

网关层(Gateway Layer)

+
    +
  • 统一入口,负责请求路由和负载均衡
  • +
  • 集中处理认证授权、限流熔断、监控日志
  • +
  • 提供API版本管理和接口文档生成
  • +
+

业务服务层(Business Service Layer)

+
    +
  • 核心业务逻辑处理层,包含七个子系统: +
      +
    • SYS-001 +统一平台:提供单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力
    • +
    • SYS-002 营收业务系统:营收核心与客户服务模块群
    • +
    • SYS-003 +手机抄表APP:移动端现场作业、调用外部摄像表AI识别服务与数据同步
    • +
    • SYS-004 微网厅系统:面向客户的线上服务门户
    • +
    • SYS-005 工单管理系统:统一工单中心与流程引擎
    • +
    • SYS-006 +表务管理系统:设备档案、表务全生命周期管理
    • +
    • SYS-007 +报装业务系统:报装全流程与工程管理、合同签订与电子签章
    • +
  • +
  • 按业务域划分微服务,实现高内聚低耦合
  • +
  • 支持独立部署、扩缩容和技术栈选择
  • +
+

基础服务层(Infrastructure Service Layer)

+
    +
  • 提供通用的技术服务能力
  • +
  • 包含权限、工作流、消息、文件、发票服务(统一开票能力)、银行对接服务(代扣/夜间批量代扣/对账/加解密)、第三方支付服务(聚合支付/退款)、消息服务(统一短信/邮件/站内信/模板消息)、注册/配置中心、任务调度等基础服务
  • +
  • 为业务服务提供统一的技术支撑
  • +
+

数据层(Data Layer)

+
    +
  • 数据持久化和缓存层
  • +
  • 支持读写分离、分库分表、数据备份
  • +
  • 提供高性能、高可用的数据服务
  • +
+

外部系统(External Systems)

+
    +
  • CA电子签章:用于报装资料签署、验章与存证(当前归属 +INST-002 工程管理)
  • +
  • 银行:托收代扣、回盘与对账(经SYS-009)
  • +
  • 支付渠道:微信/支付宝/银联聚合等(经SYS-009)
  • +
  • 发票供应商:航天/博思等税控平台(经SYS-008)
  • +
  • 短信平台:通知与催缴短信发送(经SYS-010)
  • +
  • 集抄系统:智能水表数据采集(远传/集中器)
  • +
  • 邮件服务:邮件通知发送(经SYS-010)
  • +
  • 摄像表AI系统(外部):基于计算机视觉的水表读数自动识别服务,通过API接口为手机抄表APP提供图像识别能力
  • +
+

3.3.2 系统数据流向图

+
flowchart TB
+    %% 分层横向排布,垂直贯通,允许直连线穿越模块
+    subgraph L1["数据采集层"]
+        direction LR
+        A1[手机抄表APP/SYS-003]
+        A2[智能水表]
+        A3[管理后台/SYS-001]
+        A4[微网厅/SYS-004]
+        A5[外部系统]
+    end
+
+    subgraph L2["接入层"]
+        direction LR
+        GW[API网关]
+        AUTH[统一平台SSO/SYS-001]
+        CLEAN[数据清洗]
+        MQ[消息队列]
+        CACHE_TMP[临时缓存]
+    end
+
+    subgraph L3["业务层"]
+        direction LR
+        REV[营收系统/SYS-002]
+        WO[工单系统/SYS-005]
+        METER[表务系统/SYS-006]
+        INST[报装系统/SYS-007]
+        INV[发票服务/SYS-008]
+        PAY[支付与结算/SYS-009]
+        MSG[消息服务/SYS-010]
+    end
+
+    subgraph L4["存储层"]
+        direction LR
+        DM_MASTER[达梦主库]
+        DM_SLAVE[达梦从库]
+        REDIS[Redis缓存]
+        MINIO[MinIO对象存储]
+        BACKUP[备份库]
+    end
+
+    subgraph L5["数据服务层"]
+        direction LR
+        QRY[查询服务]
+        RPT[报表服务]
+        API[接口服务]
+        PUSH[推送服务]
+    end
+
+    subgraph L6["展现层"]
+        direction LR
+        F1[管理后台]
+        F2[统计大屏]
+        F3[移动端]
+        F4[微网厅]
+        F5[第三方系统]
+    end
+
+    %% 连接(精简且保持层间垂直分层,线可穿越模块)
+    A1 --> GW
+    A2 --> GW
+    A3 --> GW
+    A4 --> GW
+    A5 --> GW
+
+    %% 相邻层连线:采集层 → 接入层 已在上方;以下为 接入层 → 业务层
+    GW --> REV
+    GW --> WO
+    GW --> METER
+    GW --> INST
+
+    MQ --> REV
+    MQ --> WO
+    MQ --> METER
+    MQ --> INST
+
+    REV --> DM_MASTER
+    WO --> DM_MASTER
+    METER --> DM_MASTER
+    INST --> DM_MASTER
+    INV --> MINIO
+    MSG --> REDIS
+    %% 存储层内部链路省略,保持仅向下一层输出
+
+    DM_MASTER --> QRY
+    DM_MASTER --> RPT
+    DM_MASTER --> API
+    REDIS --> API
+    MINIO --> API
+    MSG --> PUSH
+    QRY --> F1
+    RPT --> F2
+    API --> F1
+    API --> F3
+    API --> F4
+    API --> F5
+    PUSH --> F3
+    PUSH --> F4
+
+

3.3.3 系统的物理架构设计

+

  系统采用分布式部署架构,通过多个服务器集群实现高可用和高性能,支持 +DevOps 持续交付。

+

3.3.3.1 物理部署图

+
graph TB
+    subgraph "DMZ区域"
+        subgraph "负载均衡集群"
+            LB1[Nginx 主<br/>8核16G]
+            LB2[Nginx 备<br/>8核16G]
+            WAF[Web应用防火墙]
+        end
+    end
+    
+    subgraph "应用服务区"
+        subgraph "Web服务集群"
+            WEB1[Web服务器1<br/>8核32G]
+            WEB2[Web服务器2<br/>8核32G]
+        end
+        
+        subgraph "应用服务集群"
+            APP1[应用服务器1<br/>16核64G]
+            APP2[应用服务器2<br/>16核64G]
+        end
+        
+        subgraph "中间件集群"
+            MQ1[消息队列1<br/>8核16G]
+            MQ2[消息队列2<br/>8核16G]
+        end
+    end
+    
+    subgraph "数据服务区"
+        subgraph "数据库集群"
+            DB1[达梦数据库主库<br/>32核128G]
+            DB2[达梦数据库从库<br/>32核128G]
+            DB3[达梦数据库备库<br/>32核128G]
+        end
+        
+        subgraph "缓存集群"
+            REDIS1[Redis主节点<br/>16核32G]
+            REDIS2[Redis从节点<br/>16核32G]
+            REDIS3[Redis哨兵<br/>8核16G]
+        end
+        
+        subgraph "文件存储集群"
+            FILE1[MinIO节点1<br/>8核32G 10TB]
+            FILE2[MinIO节点2<br/>8核32G 10TB]
+            FILE3[MinIO节点3<br/>8核32G 10TB]
+        end
+    end
+    
+    subgraph "管理服务区"
+        MONITOR[监控服务器<br/>Prometheus + Grafana<br/>8核16G]
+        BACKUP[备份服务器<br/>8核32G 20TB]
+        JUMP[跳板服务器<br/>4核8G]
+        LOG[日志服务器<br/>ELK Stack<br/>16核32G]
+    end
+    
+
+
+

3.3.3.2 网络连接

+
graph TB
+
+    Internet[互联网] -.->|HTTPS| DMZ[DMZ区域]
+    DMZ -.->|HTTP/RPC| APP[应用服务区]
+    APP -.->|数据访问| DATA[数据服务区]
+    MGMT[管理服务区] -.->|监控管理| APP
+    MGMT -.->|监控管理| DATA
+
+

3.3.3.3 硬件配置规格

+

DMZ区域配置

+ + + + + + + + + + + + + + + + + + + + + + + +
设备类型配置规格数量主要作用
负载均衡器8核16G,双网卡2台负载均衡、高可用
Web应用防火墙硬件WAF设备1台安全防护
+

应用服务区配置

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
设备类型配置规格数量主要作用
Web服务器8核32G,1TB SSD2台前端应用部署
应用服务器32核128G,2TB SSD3台后端服务部署
消息队列服务器8核16G,1TB SSD2台异步消息处理
+

数据服务区配置

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
设备类型配置规格数量主要作用
数据库服务器32核128G,10TB SSD3台主从备数据库
缓存服务器16核32G,1TB SSD3台Redis集群
文件存储服务器8核32G,10TB HDD3台分布式文件存储
+

管理服务区配置

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
设备类型配置规格数量主要作用
监控服务器8核16G,1TB SSD1台系统监控
备份服务器8核32G,20TB HDD1台数据备份
跳板服务器4核8G,500GB SSD1台运维管理
日志服务器16核32G,5TB SSD1台日志收集分析
+

3.3.3.4 达梦数据库分布式架构

+

  系统采用达梦数据库分布式架构,支持高性能、高可用、高扩展性的数据存储服务。

+
graph TB
+    subgraph "达梦数据库分布式架构"
+        subgraph "协调节点"
+            CN1[协调节点1<br/>Coordinator Node]
+            CN2[协调节点2<br/>Coordinator Node]
+        end
+        
+        subgraph "数据节点组1"
+            DN1_1[数据节点1-主<br/>Datanode Primary]
+            DN1_2[数据节点1-备<br/>Datanode Standby]
+            DN1_1 -.->|主备同步| DN1_2
+        end
+        
+        subgraph "数据节点组2"
+            DN2_1[数据节点2-主<br/>Datanode Primary]
+            DN2_2[数据节点2-备<br/>Datanode Standby]
+            DN2_1 -.->|主备同步| DN2_2
+        end
+        
+        subgraph "GTM节点"
+            GTM[全局事务管理器<br/>GTM Master]
+            GTM_S[GTM备节点<br/>GTM Standby]
+            GTM -.->|备份| GTM_S
+        end
+    end
+    
+    %% 分布式架构调用关系
+    CN1 -.->|分片路由<br/>查询协调| DN1_1
+    CN1 -.->|分片路由<br/>查询协调| DN2_1
+    CN2 -.->|分片路由<br/>查询协调| DN1_1
+    CN2 -.->|分片路由<br/>查询协调| DN2_1
+    CN1 -.->|事务管理<br/>全局一致性| GTM
+    CN2 -.->|事务管理<br/>全局一致性| GTM
+
+

3.3.3.5 容器化部署架构

+

  系统采用基于Docker的容器化部署,使用Docker +Compose进行容器编排,使用Kubernetes进行容器编排和调度,支持DevOps持续交付。

+
graph TB
+    subgraph "容器化部署架构"
+        subgraph "前端服务层"
+            WEB_CONTAINER[前端容器<br/>Nginx + Vue3]
+        end
+        
+        subgraph "后端服务层"
+            APP_CONTAINER[后端容器<br/>Spring Boot]
+        end
+        
+        subgraph "数据存储层"
+            DB_CONTAINER[数据库容器<br/>达梦数据库]
+            CACHE_CONTAINER[缓存容器<br/>Redis]
+            FILE_CONTAINER[文件存储容器<br/>MinIO]
+        end
+        
+        subgraph "监控服务层"
+            MONITOR_CONTAINER[监控容器<br/>Prometheus + Grafana]
+            LOG_CONTAINER[日志容器<br/>ELK Stack]
+        end
+    end
+    
+    %% 容器服务调用关系
+    WEB_CONTAINER -.->|API请求<br/>静态资源| APP_CONTAINER
+    APP_CONTAINER -.->|数据操作| DB_CONTAINER
+    APP_CONTAINER -.->|缓存访问| CACHE_CONTAINER
+    APP_CONTAINER -.->|文件存储| FILE_CONTAINER
+    APP_CONTAINER -.->|监控数据| MONITOR_CONTAINER
+    APP_CONTAINER -.->|日志数据| LOG_CONTAINER
+
+

3.4 子系统定义

+

3.4.1 子系统列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
子系统编号子系统名称(标识)功能描述开发方式
SYS-001统一平台单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力自行开发
SYS-002营收业务系统客户管理、抄表开账、营业收费、账务处理、发票管理、催缴管理、统计分析、代收业务、客户服务、业务参数配置自行开发
SYS-003手机抄表APP移动端抄表、调用外部AI识别服务、现场作业、数据同步、离线支持自行开发
SYS-004微网厅系统微信公众号平台、账户绑定、在线缴费、信息查询、业务办理、网点服务自行开发
SYS-005工单管理系统统一工单中心、工单流程引擎、监控预警、绩效统计自行开发
SYS-006表务管理系统设备档案、表务全生命周期管理自行开发
SYS-007报装业务系统报装流程管理、合同签订与电子签章、工程管理、档案管理自行开发
SYS-008发票服务子系统统一开票网关、供应商适配器(优先对接航天)、回执处理与存证自行开发
SYS-009支付与银行结算子系统聚合支付/退款、渠道适配(微信/支付宝/银联)、支付通知、银行实时收费、代扣/托收签解约、送盘/回盘/对账契约、加解密签名;夜间批量代扣与完整结算闭环按后续完善项管理自行开发
SYS-010消息服务子系统短信/邮件/站内信模板与发送、回执查询、批量推送自行开发
+

3.4.2 子系统间关系

+

3.4.2.1 子系统调用关系图

+
---
+title: 子系统调用关系图
+---
+graph TB
+    %%{
+        run: {
+            "flowchart": {
+         
+                "curve": "basis"
+            }
+            "sequence": {
+                "curve": "basis"
+            }
+        
+        }
+    }%%
+
+     UP[ 【SYS-001 统一平台】<br/>单点登录<br/>统一认证SSO/OAuth2+CAS<br/>审计监控<br/>权限、组织<br/>参数、多租户<br/>字典管理]
+    REV_CORE[【SYS-002 营收业务子系统-营收核心模块群】<br/>客户管理<br/>抄表开账<br/>营业收费<br/>账务处理<br/>发票催缴<br/>统计代收<br/>业务参数配置]
+    CS_MOD[【SYS-002 营收业务子系统-客户服务模块群】<br/>账户绑定管理<br/>信息查询服务<br/>在线缴费服务<br/>业务办理服务]
+        
+    
+
+    APP[【SYS-003 手机抄表APP】<br/>移动抄表<br/>调用外部AI服务<br/>现场作业<br/>数据同步<br/>离线支持]
+
+    WECHAT[【SYS-004 微网厅子系统】<br/>账户绑定管理<br/>信息查询服务<br/>在线缴费服务<br/>业务办理服务]
+
+    WO_CENTER[【SYS-005 工单管理子系统】<br/>统一工单中心<br/>创建/派发/处理/验收<br/>监控预警]
+
+
+    METER_SYS[【SYS-006 表务管理子系统】 <br/>设备档案<br/>表务全生命周期管理]
+    
+
+    INSTALL_SYS[【SYS-007 报装业务子系统】<br/>报装流程<br/>合同签订与电子签章<br/>工程管理<br/>档案管理]
+    
+     PAY_SYS[【SYS-009 支付与银行结算子系统】<br/>聚合支付/退款/回调<br/>渠道适配/代扣/对账/加解密]
+    
+    INVOICE_SYS[【SYS-008 发票服务子系统】<br/>统一开票网关<br/>供应商适配器<br/>回执/存证]
+    
+
+   
+    
+    MSG_SYS[【SYS-010 消息服务子系统】<br/>统一短信/邮件/推送<br/>模板与回执]
+    
+    
+    %% 统一平台权限管理
+    UP -.->|用户认证/权限| REV_CORE
+    UP -.->|用户认证/权限| CS_MOD
+    UP -.->|用户认证/权限| APP
+    UP -.->|用户认证/权限| WECHAT
+    UP -.->|用户认证/权限| WO_CENTER
+    UP -.->|用户认证/权限| METER_SYS
+    UP -.->|用户认证/权限| INSTALL_SYS
+
+    %% 系统间协作
+    REV_CORE -.->|库存状态/换表结果| METER_SYS
+    REV_CORE -.->|支付/退款/代扣/对账| PAY_SYS
+    REV_CORE -.->|立户/工程结果| INSTALL_SYS
+    REV_CORE -.->|开票申请/作废/红冲| INVOICE_SYS
+    REV_CORE -.->|业务异常/流程触发| WO_CENTER
+    CS_MOD -.->|客户申请/服务工单| WO_CENTER
+
+    WO_CENTER -.->|换表派发| METER_SYS
+    WO_CENTER -.->|报装派发| INSTALL_SYS
+    WO_CENTER -.->|处理结果回填| REV_CORE
+    WO_CENTER -.->|结果通知| CS_MOD
+
+    %% 手机APP与营收业务系统协作关系
+    APP -.->|抄表数据/收费数据| REV_CORE
+    APP -.->|现场工单/问题上报| WO_CENTER
+    WO_CENTER -.->|工单派发/任务分配| APP
+    REV_CORE -.->|抄表任务/客户信息| APP
+    
+    %% 微网厅与营收业务系统协作关系
+    WECHAT -.->|账单查询/在线缴费| REV_CORE
+    WECHAT -.->|业务申请/服务工单| WO_CENTER
+    REV_CORE -.->|账单信息/缴费状态| WECHAT
+    INVOICE_SYS -.->|电子发票链接/推送| WECHAT
+    MSG_SYS -.->|短信/邮件/推送| WECHAT
+    REV_CORE -.->|推送| MSG_SYS
+    WO_CENTER -.->|推送| MSG_SYS
+    CS_MOD -.->|推送| MSG_SYS
+    METER_SYS -.->|推送| MSG_SYS
+    INSTALL_SYS -.->|推送| MSG_SYS
+    INVOICE_SYS -.->|推送| MSG_SYS
+    PAY_SYS -.->|推送| MSG_SYS
+
+    WO_CENTER -.->|办理进度/结果通知| WECHAT
+    
+    %% 样式定义
+    classDef coreSystem fill:#e3f2fd,stroke:#1976d2,stroke-width:4px,color:#000
+    classDef mobileSystem fill:#e8f5e8,stroke:#388e3c,stroke-width:3px,color:#000
+    classDef wechatSystem fill:#f3e5f5,stroke:#9c27b0,stroke-width:3px,color:#000
+    classDef platform fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    
+    class REV_CORE,CS_MOD coreSystem
+    class APP mobileSystem
+    class WECHAT wechatSystem
+    class UP platform
+    class WO_CENTER,METER_SYS,INSTALL_SYS coreSystem
+
+

3.4.2.2 主要接口定义

+

统一平台对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-UP-001OAuth2认证接口基于OAuth2.0的统一认证服务所有子系统HTTP/REST客户端凭证、授权类型、作用域访问令牌、刷新令牌、过期时间
IF-UP-002组织架构接口获取部门和员工组织信息营收/工单/表务系统HTTP/REST组织ID、查询层级、用户权限组织树结构、员工信息、权限范围
IF-UP-003权限验证接口验证用户操作权限和资源访问所有子系统HTTP/REST用户Token、操作资源、权限类型验证结果、权限详情、有效期限
IF-UP-004数据字典接口提供系统基础数据字典服务所有子系统HTTP/REST字典类型、字典编码、租户ID字典数据、层级关系、多语言支持
IF-UP-005多租户管理接口多租户数据隔离和权限管理所有子系统HTTP/REST租户ID、操作类型、数据范围租户配置、数据权限、隔离策略
+

营收业务系统对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-REV-001客户信息查询接口查询客户档案、账户状态、联系人与水表绑定关系柜台/客户渠道/工单HTTPS REST客户ID、客户编号、手机号、查询类型客户档案、账户信息、联系人列表、水表绑定关系
IF-REV-004抄表数据提交接口提交人工或远传抄表数据并触发校验手机抄表APP/集抄系统HTTPS REST抄表任务ID、水表ID、读数、图片证据、GPS位置上传结果、校验状态、异常标记
IF-REV-005账单生成接口根据抄表结果、水价模板和费用组成生成账单开账任务/批量任务HTTPS REST抄表批次、账期、客户范围、应收日期账单结果、失败清单、生成汇总
IF-REV-006缴费处理接口创建收费记录并核销账单柜台/线上渠道HTTPS REST客户ID、账单ID列表、支付方式、实收金额收费结果、核销状态、交易流水
IF-REV-008发票申请接口发起电子发票申请并接收票据状态回写柜台/客户渠道HTTPS REST客户ID、账单ID列表、开票抬头、税号、邮箱发票申请结果、票据状态、下载地址
IF-REV-011银行代收协同接口发起代扣、回盘、对账、结算协同银行代收模块/SYS-009HTTPS REST / 文件交换批次号、渠道编码、账期、账单明细批次状态、回盘结果、对账差异、结算结果
IF-REV-012业务参数配置接口查询和维护价格模板、优惠方案、业务参数配置管理后台/参数管理端HTTPS REST参数分类、模板编码、站点范围参数明细、模板信息、更新结果
IF-CS-001账户绑定接口绑定、解绑、切换默认客户微信/支付宝/微网厅HTTPS REST渠道用户标识、客户编号、身份校验信息绑定结果、默认客户信息、绑定关系
IF-CS-002历史账单查询接口查询账单、欠费、用水历史、缴费记录客户端HTTPS REST客户ID、账期范围、查询类型账单列表、欠费金额、用水趋势、缴费记录
IF-CS-003在线支付下单接口创建微信/支付宝线上支付订单客户端HTTPS REST客户ID、账单ID列表、支付渠道、支付金额订单号、支付二维码/预支付信息、订单状态
IF-CS-004发票申请接口提交电子发票申请、查询发票状态客户端HTTPS REST缴费订单号、发票抬头、邮箱/手机号发票状态、发票链接、申请结果
IF-CS-005网点与业务办理接口查询营业网点、预约信息、可办事项客户端HTTPS REST行政区划、关键字、业务类型网点列表、营业时间、可办业务、预约信息
IF-CS-006业务办理进度接口提交业务申请、查询办理进度与附件客户端HTTPS REST申请类型、客户资料、附件清单、申请单号受理结果、流程状态、进度轨迹、补件要求
IF-CS-007柜面扫码支付接口创建柜面扫码支付订单并回写结果柜台终端/营业前台HTTPS REST柜台编号、账单ID列表、订单金额、支付渠道订单号、支付状态、回写结果
+

手机抄表APP对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-MOBILE-001任务下载接口下载抄表任务与客户信息手机抄表APPHTTP/REST抄表员ID、任务日期范围任务列表、客户信息、水表信息
IF-MOBILE-002抄表数据上传接口上传抄表数据与现场图片手机抄表APPHTTP/REST抄表记录、现场图片、GPS位置上传状态、数据校验结果
IF-MOBILE-003工单接收接口接收工单任务工单管理系统HTTP/REST工单ID、工单类型、派发信息接收确认、预计处理时间
IF-MOBILE-004工单回填接口回填处理结果与附件手机抄表APPHTTP/REST工单ID、处理结果、现场图片回填状态、审核结果
IF-MOBILE-005离线同步接口离线数据同步手机抄表APPHTTP/REST离线数据包、时间戳同步状态、冲突处理结果
+

微网厅系统对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-WECHAT-001微信授权登录接口通过微信OAuth2.0实现用户授权登录微网厅系统HTTP/REST微信授权码、AppID、AppSecret用户OpenID、访问令牌、用户基本信息
IF-WECHAT-002微信支付接口调用微信支付完成在线缴费微网厅系统HTTP/REST订单信息、支付金额、用户OpenID预支付交易会话标识、支付结果
IF-WECHAT-005客户信息查询接口查询绑定客户的基本信息微网厅系统HTTP/REST客户编号/手机号/OpenID客户详细信息、绑定状态
IF-WECHAT-006账单信息查询接口查询客户账单和欠费信息微网厅系统HTTP/REST客户编号、查询月份范围账单明细、欠费金额、阶梯用量
IF-WECHAT-007缴费处理接口处理微信端发起的缴费业务微网厅系统HTTP/REST客户编号、缴费金额、支付方式缴费订单号、支付状态、发票信息
IF-WECHAT-008业务申请提交接口提交报装、过户等业务申请微网厅系统HTTP/REST申请类型、客户资料、申请材料申请单号、预审结果、处理时限
IF-WECHAT-009电子发票申请接口申请开具电子发票微网厅系统HTTP/REST缴费订单号、发票抬头信息电子发票PDF、发票代码和号码
IF-WECHAT-011账户绑定验证接口验证客户身份并绑定微信账户微网厅系统HTTP/REST客户编号、身份证号、手机号码绑定验证结果、绑定关系ID
+

工单管理系统对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-WO-001工单创建接口创建各类业务工单营收/表务/报装/微网厅/APPHTTP/REST工单类型、客户信息、问题描述、紧急程度工单编号、预计处理时间、派发状态
IF-WO-002工单派发接口向处理人/APP派发任务工单管理系统HTTP/REST工单ID、处理人员、预期完成时间派发结果、接收确认状态
IF-WO-003工单回填接口回填处理结果与附件APP/各业务系统HTTP/REST工单ID、处理结果、现场图片、完成时间回填状态、审核结果、客户满意度
IF-WO-004工单查询接口查询工单状态和处理轨迹各业务系统/客户端HTTP/REST工单编号/客户编号、查询条件工单状态、处理进度、历史轨迹
+

表务管理系统对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-METER-001库存查询接口查询仓库库存状态和预警信息工单/营收/报装系统HTTP/REST仓库编号、水表型号、库存状态库存明细、预警状态、可用数量
IF-METER-002领用出库接口支持换表/施工水表领用出库工单管理系统HTTP/REST领用单号、水表型号、领用数量、领用人出库状态、库存余量、领用凭证
IF-METER-003档案查询接口查询水表设备档案信息营收/工单/报装系统HTTP/REST水表编号、客户编号、查询类型设备档案、安装历史、维修记录
+

报装业务系统对外接口(SYS-007)

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-INST-001报装申请接口提交报装申请信息与材料微网厅/营收系统HTTP/REST申请人信息、用水地址、申请材料、联系方式申请单号、预审结果、处理时限
IF-INST-002踏勘派工接口现场踏勘任务派发工单管理系统HTTP/REST报装单号、踏勘要求、预约时间派工结果、踏勘人员、预计完成时间
IF-INST-003签章接口调用CA系统进行电子签章CA电子签章系统HTTP/REST合同文档、签章类型、签章方信息签章状态、签章文档、存证信息
IF-INST-004签章回执接口接收CA系统签章完成回执CA电子签章系统HTTP/REST签章任务ID、签章结果、时间戳接收确认、存档状态
IF-INST-006验收通水接口验收合格并开通供水营收业务系统HTTP/REST报装单号、验收结果、水表信息开户结果、客户编号、通水状态
+

发票服务子系统对外接口

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-INV-001统一开票接口统一受理电子发票开具请求营收业务系统/微网厅HTTP/REST开票信息、购买方信息、商品明细、税额发票申请ID、开票状态、预计完成时间
IF-INV-002作废红冲接口发票作废和红字发票处理营收业务系统HTTP/REST原发票号码、作废/红冲原因、操作类型处理结果、新发票信息、作废状态
IF-INV-003发票查询接口查询发票状态和下载链接营收系统/微网厅/客户端HTTP/REST发票代码、发票号码、查询类型发票状态、PDF下载链接、发票详情
IF-INV-004回执推送接口接收供应商发票处理回执航天信息/博思等供应商HTTP/REST回执ID、处理结果、发票文件、时间戳接收确认、存储状态、通知结果
+

支付与银行结算子系统对外接口(SYS-009)

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-PAY-001统一支付下单接口统一处理各渠道支付下单请求营收系统/微网厅HTTP/REST订单信息、支付方式、支付金额、用户标识预支付订单号、支付参数、二维码
IF-PAY-002统一关单接口订单关闭和撤销处理营收系统/微网厅HTTP/REST订单号、关闭原因、操作类型关单状态、退款信息、处理结果
IF-PAY-003统一退款接口原路退款和部分退款处理营收系统/微网厅HTTP/REST原订单号、退款金额、退款原因退款单号、退款状态、预计到账时间
IF-PAY-004支付回调接口接收渠道支付结果回调微信/支付宝/银联HTTP/REST回调数据、签名、时间戳处理确认、业务更新状态
IF-PAY-005批量代扣送盘接口银行批量代扣文件发送营收业务系统HTTP/REST/SFTP代扣清单、客户签约信息、扣款金额送盘状态、批次号、预计处理时间
IF-PAY-006批量代扣回盘接口银行代扣结果回盘处理银行系统HTTP/REST/SFTP回盘文件、处理结果、失败原因解析结果、状态更新、异常处理
IF-PAY-007批量对账文件接口银行对账文件处理分析银行系统/营收系统HTTP/REST/SFTP对账文件、对账日期、差异规则对账结果、差异明细、调整建议
+

消息服务子系统对外接口(SYS-010)

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-MSG-001短信发送接口发送短信通知消息营收/微网厅/工单系统HTTP/REST手机号、消息内容、模板ID、发送时间发送状态、消息ID、预计到达时间
IF-MSG-002邮件发送接口发送邮件通知消息营收/工单/报装系统HTTP/REST邮箱地址、邮件主题、邮件内容、附件发送状态、邮件ID、送达确认
IF-MSG-003站内信接口发送系统站内消息各业务系统HTTP/REST用户ID、消息标题、消息内容、消息类型发送结果、消息状态、已读状态
IF-MSG-005外部系统对接接口对接OA/智水擎等外部系统OA系统/智水擎/水投数科APPHTTP/REST系统标识、消息类型、接收用户、消息内容对接状态、消息分发结果
+

+

4 子系统1设计: 统一平台

+

4.1 任务概述

+

  统一平台是整个福建水务营收系统的基础支撑平台,负责为所有子系统提供统一的用户认证、权限管理、组织管理等基础服务。

+

设计目标:

+
    +
  • 实现单点登录,用户一次认证即可访问所有授权的子系统
  • +
  • 提供统一的用户和权限管理,确保系统安全性
  • +
  • 支持多租户模式,满足集团化管理需求
  • +
  • 提供系统监控和运维支撑功能
  • +
+

功能范围:

+
    +
  • 单点登录:提供统一的登录入口,支持多种认证方式
  • +
  • 用户管理:管理系统用户的基本信息、状态和权限
  • +
  • 角色管理:定义和管理系统角色,实现基于角色的权限控制
  • +
  • 权限管理:细粒度的功能权限和数据权限控制
  • +
  • 组织管理:管理企业的部门结构和人员归属
  • +
  • 租户管理:支持多租户模式,实现数据隔离和个性化配置
  • +
  • 系统监控:实时监控系统运行状态和用户在线情况
  • +
+

4.2 设计概述

+

4.2.1 总体约束

+

技术约束:

+
    +
  • 基于Spring Security + OAuth2.0+CAS协议实现认证授权
  • +
  • 采用JWT令牌实现无状态认证
  • +
  • 支持Redis分布式会话存储
  • +
  • 遵循RBAC权限控制模型
  • +
+

性能约束:

+
    +
  • 用户认证响应时间≤1秒
  • +
  • 权限验证响应时间≤500ms
  • +
  • 支持并发用户数≥200个
  • +
  • 系统可用性≥99.5%
  • +
+

安全约束:

+
    +
  • 支持密码复杂度策略
  • +
  • 提供登录安全控制(失败锁定、验证码等)
  • +
  • 敏感数据加密存储
  • +
  • 完整的操作审计日志
  • +
+

4.2.2 子系统外部接口

+

接口设计说明:

+

  统一平台为整个系统提供基础认证、权限、组织、字典等服务能力,采用OAuth2.0+CAS统一认证机制,支持多租户数据隔离和权限管理,为各业务子系统提供标准化的基础服务接口。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-UP-001用户认证接口用户登录认证和JWT令牌生成所有业务子系统HTTP/REST用户名、密码、机构编号、验证码JWT令牌、用户信息、权限范围
IF-UP-002权限验证接口验证用户访问资源权限所有业务子系统HTTP/RESTJWT令牌、资源URL、操作类型权限验证结果、资源访问权限
IF-UP-003用户信息接口获取用户基本信息营收/工单/表务系统HTTP/REST用户ID、查询范围用户详细信息、角色权限
IF-UP-004组织架构接口获取部门和员工组织信息营收/工单/表务系统HTTP/REST部门ID、查询层级部门信息、员工列表、权限范围
IF-UP-005实时通知接口推送系统通知消息所有业务子系统WebSocket消息内容、接收用户、消息类型推送结果、送达状态
+

4.2.3 设计方案概述

+

架构设计:

+

  统一平台采用基于Spring Boot的微服务架构,使用Spring Security + +OAuth2.0+CAS协议实现认证授权,Redis存储会话和缓存数据,支持水平扩展。

+

技术选型:

+
    +
  • 认证授权:Spring Security + OAuth2.0 + CAS协议 + +JWT
  • +
  • 缓存存储:Redis 6.0+(分布式缓存)
  • +
  • 数据库:达梦数据库 8.0+
  • +
  • 消息队列:RabbitMQ(异步通知)
  • +
  • 监控日志:Prometheus + Grafana + ELK
  • +
+

4.3 子系统架构设计

+

  统一平台采用分层架构设计,从下至上分为数据层、业务层、服务层和应用层,确保系统的可维护性和可扩展性。

+
graph TB
+    subgraph "统一平台架构"
+        subgraph "应用层"
+            A1[Web管理界面]
+            A2[移动端界面]
+            A3[API网关]
+        end
+        
+        subgraph "服务层"
+            B1[认证服务]
+            B2[权限服务]
+            B3[用户服务]
+            B4[组织服务]
+            B5[监控服务]
+        end
+        
+        subgraph "业务层"
+            C1[登录业务]
+            C2[权限业务]
+            C3[用户管理业务]
+            C4[组织管理业务]
+            C5[系统监控业务]
+        end
+        
+        subgraph "数据层"
+            D1[(用户数据库)]
+            D2[(权限数据库)]
+            D3[(日志数据库)]
+            D4[Redis缓存]
+        end
+    end
+    
+    A1 --> B1
+    A2 --> B1
+    A3 --> B2
+    B1 --> C1
+    B2 --> C2
+    B3 --> C3
+    B4 --> C4
+    B5 --> C5
+    C1 --> D1
+    C2 --> D2
+    C3 --> D1
+    C4 --> D1
+    C5 --> D3
+    C1 --> D4
+    C2 --> D4
+
+

4.4 模块定义

+

4.4.1 模块列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称(标识)功能描述开发方式
UP-001单点登录模块用户认证、授权管理、多种登录方式支持自行开发
UP-002系统管理模块用户、角色、部门、菜单等基础数据管理自行开发
UP-003权限控制模块RBAC权限模型、菜单权限、数据权限自行开发
UP-004租户管理模块多租户数据隔离、租户配置管理自行开发
UP-005系统监控模块在线用户监控、系统性能监控、操作日志自行开发
+

4.4.2 模块间关系

+

权限管理功能群:

+

  权限管理功能群是统一平台的核心,实现了完整的RBAC权限控制模型。

+
graph TB
+    subgraph "权限管理功能群"
+        A[UP-002 系统管理模块-用户管理功能]
+        B[UP-003 系统管理模块-角色管理功能]
+        C[UP-003 系统管理模块-菜单管理功能]
+        D[UP-004 系统管理模块-部门管理功能]
+        E[UP-005 权限控制模块-权限控制功能]
+    end
+    
+    A -->|用户角色关联| B
+    B -->|角色权限关联| C
+    A -->|用户部门关联| D
+    E -->|权限验证| A
+    E -->|权限验证| B
+    E -->|权限验证| C
+    
+    A -.->|数据权限| D
+    B -.->|功能权限| C
+
+

功能群说明:

+
    +
  • 用户管理模块负责用户基本信息维护
  • +
  • 角色管理模块定义系统角色和权限
  • +
  • 菜单管理模块配置系统功能菜单
  • +
  • 部门管理模块维护组织架构
  • +
  • 权限控制模块实现统一的权限验证
  • +
+

系统监控功能群:

+

  系统监控功能群提供对整个系统运行状态的监控和管理。

+
graph TB
+    subgraph "系统监控功能群"
+        F[在线用户监控]
+        G[系统性能监控]
+        H[操作日志管理]
+        I[系统配置管理]
+    end
+    
+    F -->|用户行为| H
+    G -->|性能数据| H
+    I -->|配置变更| H
+    
+    F -.->|实时监控| G
+    H -.->|日志分析| G
+
+

4.4.3 模块描述

+

4.4.3.1 UP-001: 单点登录

+

功能描述:

+

  单点登录模块基于OAuth2.0+CAS协议实现,提供统一的用户认证入口,支持多种登录方式和安全策略。该模块是整个系统安全的第一道防线,确保只有合法用户才能访问系统。

+

主要功能:

+
    +
  1. 用户名密码登录:传统的用户名密码认证方式
  2. +
  3. 手机号短信登录:基于短信验证码的快速登录
  4. +
  5. 第三方登录:支持微信、支付宝等第三方平台登录
  6. +
  7. OAuth2.0单点登录:基于OAuth2.0+CAS协议,一次登录,多系统访问
  8. +
  9. 自动登录:支持”记住我”功能
  10. +
  11. 安全控制:密码策略、登录限制、验证码等
  12. +
+

技术实现:

+
    +
  • 基于JWT令牌的无状态认证
  • +
  • Redis存储用户会话信息
  • +
  • Spring Security实现安全控制
  • +
  • 支持多种加密算法
  • +
+

4.4.3.2 UP-002: 系统管理

+

功能描述:

+

  系统管理模块提供系统基础数据的维护功能,包括用户、角色、部门、菜单等核心数据的管理。

+

主要功能:

+
    +
  1. 用户管理:用户信息的增删改查、状态管理、权限分配
  2. +
  3. 角色管理:角色定义、权限分配、角色用户关联
  4. +
  5. 部门管理:组织架构的维护、层级关系管理
  6. +
  7. 菜单管理:系统菜单的配置、权限关联
  8. +
  9. 字典管理:系统字典数据的维护
  10. +
  11. 参数管理:系统参数的配置和管理
  12. +
+

业务规则:

+
    +
  • 用户名全局唯一
  • +
  • 手机号不能重复
  • +
  • 超级管理员不能被删除
  • +
  • 部门删除前需要先移除下属用户
  • +
+

4.4.3.3 UP-003: 权限控制

+

功能描述:

+

  权限控制模块基于”主库+租户库”的多数据库架构,实现RBAC(基于角色的访问控制)模型的权限管理。通过统一的权限控制中心与租户独立的权限数据相结合,提供细粒度的功能权限和数据权限控制,同时支持跨租户用户授权的复杂场景。

+

多库权限架构设计:

+
graph TB
+    subgraph "主库(Master Database)"
+        MP[统一平台权限]
+        MT[租户管理权限]
+        MU[跨租户用户关系]
+        MA[全局审计日志]
+    end
+    
+    subgraph "租户库A(Tenant-A Database)"
+        TA_U[用户表 system_user]
+        TA_R[角色表 system_role]
+        TA_UR[用户角色关系 system_user_role]
+        TA_RM[角色菜单权限 system_role_menu]
+        TA_D[部门表 system_dept]
+    end
+    
+    subgraph "租户库B(Tenant-B Database)"
+        TB_U[用户表 system_user]
+        TB_R[角色表 system_role]
+        TB_UR[用户角色关系 system_user_role]
+        TB_RM[角色菜单权限 system_role_menu]
+        TB_D[部门表 system_dept]
+    end
+    
+    subgraph "权限控制引擎"
+        PE[权限验证引擎]
+        PC[权限缓存层]
+        PR[权限路由器]
+    end
+    
+    MP -.->|统一平台管理| PE
+    MT -.->|租户权限元数据| PE
+    MU -.->|跨租户关系| PE
+    
+    PE -->|权限路由| PR
+    PR -->|租户A权限| TA_U
+    PR -->|租户B权限| TB_U
+    
+    PE --> PC
+    PC -.->|缓存同步| TA_R
+    PC -.->|缓存同步| TB_R
+
+

主要功能:

+
    +
  1. 多库权限统一管理 +
      +
    • 主库权限管理:统一平台功能权限、租户管理权限、系统级别权限
    • +
    • 租户库权限管理:每个租户独立的用户、角色、权限数据
    • +
    • 权限数据路由:根据用户所属租户动态路由到对应的租户数据库
    • +
    • 跨库权限验证:支持跨租户用户的权限验证与切换
    • +
  2. +
  3. RBAC权限模型实现 +
      +
    • 功能权限控制:基于菜单和按钮的功能权限控制
    • +
    • 数据权限控制:基于组织架构的数据权限隔离
    • +
    • 角色继承体系:支持角色间的权限继承关系
    • +
    • 动态权限分配:支持运行时动态调整用户权限
    • +
  4. +
  5. 多租户权限隔离 +
      +
    • 租户级别隔离:每个租户的权限数据完全物理隔离
    • +
    • 用户多租户授权:用户可在多个租户中拥有不同角色和权限
    • +
    • 权限继承与覆盖:支持从上级租户继承权限并允许覆盖
    • +
    • 租户间权限依赖:处理母子公司间的权限依赖关系
    • +
  6. +
  7. 接口权限验证 +
      +
    • API接口级别权限验证:每个接口请求都进行权限校验
    • +
    • 租户上下文识别:自动识别当前用户的租户上下文
    • +
    • 动态数据源切换:根据权限验证结果切换到正确的租户数据库
    • +
    • 权限异常处理:统一的权限异常处理和降级策略
    • +
  8. +
  9. 权限缓存管理 +
      +
    • 多级缓存策略:主库+租户库的分层缓存
    • +
    • 权限数据实时更新:权限变更时的缓存实时同步
    • +
    • 缓存预热机制:系统启动时预加载热点权限数据
    • +
    • 缓存失效策略:精确的缓存失效和更新机制
    • +
  10. +
+

多库数据模型:

+

主库权限数据结构:

+

1. 租户与用户关系表(tenant_user_relation) - +表功能:管理跨租户用户授权关系,记录用户在不同租户中的授权状态 +- 核心字段: - 主键标识:唯一标识每条授权关系 - +租户标识:指向被授权的目标租户 - 用户标识:指向被授权的用户 - +授权类型:区分所有者(owner)、成员(member)、访客(guest)三种类型 - +授权人标识:记录执行授权操作的管理员 - 授权时间:记录授权建立的时间戳 - +过期时间:设置授权的有效期限,支持临时访问 - +状态标识:标记授权关系是否有效,支持动态启用/禁用

+

2. 全局权限配置表(global_permission) - +表功能:维护系统级别的权限定义,为各租户提供统一的权限基准 +- 核心字段: - 主键标识:唯一标识每个权限配置 - +权限代码:系统内唯一的权限标识符,如”USER_MANAGE”、“BILL_QUERY” - +权限名称:面向用户的权限描述,支持多语言 - +权限类型:区分菜单权限(menu)、按钮权限(button)、接口权限(api) - +父权限标识:构建权限树形结构,支持权限继承 - +排序序号:控制权限在界面上的显示顺序 - +状态标识:标记权限是否启用,支持权限的动态管理

+

租户库权限数据结构:

+

1. 用户基础信息表(system_user) - +表功能:存储租户内部的用户基础信息和账户状态 - +核心字段: - 主键标识:租户内用户的唯一标识 - +用户账号:登录用户名,在租户内保持唯一性 - 密码哈希:加密存储的用户密码 +- 用户昵称:显示名称,提升用户体验 - 部门标识:关联用户所属的组织部门 - +电子邮箱:用户联系邮箱,支持邮件通知 - +手机号码:用户联系电话,支持短信验证 - 用户性别:基础个人信息 - +账户状态:标记用户是否启用、锁定等状态 - +租户编号:明确用户所属的租户,支持数据隔离

+

2. 角色定义表(system_role) - +表功能:定义租户内的角色体系,实现权限的集中管理 - +核心字段: - 主键标识:租户内角色的唯一标识 - +角色名称:角色的显示名称,如”水务管理员”、“收费员” - +角色代码:系统内部的角色标识符,用于权限验证 - +显示顺序:控制角色在选择列表中的排序 - +数据范围:定义角色的数据访问范围(全部、本部门、仅本人等) - +角色状态:标记角色是否启用 - 角色类型:区分系统内置角色和自定义角色 - +租户编号:明确角色所属的租户

+

3. 用户角色关联表(system_user_role) - +表功能:建立用户与角色的多对多关联关系 - +核心字段: - 主键标识:唯一标识每个用户-角色关联关系 - +用户标识:关联到具体的用户记录 - 角色标识:关联到具体的角色记录 - +租户编号:确保关联关系在正确的租户范围内

+

4. 角色菜单权限关联表(system_role_menu) - +表功能:定义角色具体拥有的菜单和功能权限 - +核心字段: - 主键标识:唯一标识每个角色-菜单权限关联 - +角色标识:关联到具体的角色记录 - 菜单标识:关联到具体的菜单或功能权限 - +租户编号:确保权限配置在正确的租户范围内

+

权限验证流程:

+
flowchart TD
+    A[用户请求] --> B{用户已登录?}
+    B -->|否| C[跳转登录页面]
+    B -->|是| D[解析JWT令牌]
+    
+    D --> E[获取当前租户上下文]
+    E --> F{是否跨租户操作?}
+    
+    F -->|否| G[连接当前租户数据库]
+    F -->|是| H[验证跨租户授权关系]
+    
+    H --> I{授权关系有效?}
+    I -->|否| J[权限拒绝]
+    I -->|是| K[切换目标租户上下文]
+    
+    G --> L[查询用户权限]
+    K --> L
+    
+    L --> M[权限缓存查询]
+    M --> N{缓存命中?}
+    
+    N -->|是| O[返回缓存权限]
+    N -->|否| P[数据库查询权限]
+    
+    P --> Q[更新权限缓存]
+    Q --> O
+    O --> R[权限验证]
+    
+    R --> S{权限验证通过?}
+    S -->|是| T[允许访问]
+    S -->|否| J
+    
+    T --> U[记录访问日志]
+    J --> V[记录拒绝日志]
+
+

技术实现:

+
    +
  1. 权限验证引擎 +
      +
    • Spring Security + 自定义权限验证器
    • +
    • 多数据源动态切换(基于租户上下文)
    • +
    • 权限注解式控制(@PreAuthorize
    • +
    • 权限表达式引擎(SpEL)
    • +
  2. +
  3. 多库数据访问 +
      +
    • MyBatis-Plus多数据源配置
    • +
    • 动态数据源路由器(基于租户ID)
    • +
    • 数据源连接池优化
    • +
    • 读写分离支持
    • +
  4. +
  5. 权限缓存策略 +
      +
    • Redis分布式缓存
    • +
    • 权限数据分层缓存(全局+租户)
    • +
    • 缓存键命名规范(tenant:{tenant_id}:user:{user_id}:permissions)
    • +
    • 权限变更事件驱动缓存更新
    • +
  6. +
  7. 跨租户权限处理 +
      +
    • 租户上下文传递(ThreadLocal + RequestFilter)
    • +
    • 跨租户权限验证链
    • +
    • 租户切换权限检查
    • +
    • 权限降级和异常处理
    • +
  8. +
+

核心业务规则:

+
    +
  1. 权限验证优先级:主库权限 > 租户库权限 > +默认权限
  2. +
  3. 跨租户访问控制:需要显式授权,禁止越权访问
  4. +
  5. 权限缓存TTL:用户权限缓存30分钟,角色权限缓存2小时
  6. +
  7. 数据权限范围:支持全部、本部门、本部门及子部门、仅本人
  8. +
  9. 权限继承规则:子租户可继承父租户的基础权限,但可以覆盖
  10. +
+

4.4.3.4 UP-004: 租户管理

+

功能描述:

+

  租户管理模块基于”主库+租户库”的多数据库架构,提供完整的多租户架构支持,实现租户间物理级别的数据隔离、配置管理,以及跨租户用户授权等高级功能。该模块是实现集团化管理的核心基础设施。

+

多库租户架构设计:

+
graph TB
+    subgraph "主库(Master Database)"
+        MT[租户基础信息 sys_tenant]
+        MTC[租户配置参数 sys_tenant_config]
+        MTD[租户数据库映射 sys_tenant_database]
+        MTU[跨租户用户关系 tenant_user_relation]
+        MTA[全局审计日志 sys_audit_log]
+    end
+    
+    subgraph "租户库A(福州水务)"
+        TA_USER[租户用户 tenant_user]
+        TA_DEPT[组织架构 tenant_department]
+        TA_CONFIG[业务配置 tenant_business_config]
+        TA_BIZ[业务数据表群]
+    end
+    
+    subgraph "租户库B(厦门水务)"
+        TB_USER[租户用户 tenant_user]
+        TB_DEPT[组织架构 tenant_department]
+        TB_CONFIG[业务配置 tenant_business_config]
+        TB_BIZ[业务数据表群]
+    end
+    
+    subgraph "租户管理引擎"
+        TME[租户管理引擎]
+        TR[租户路由器]
+        TCC[跨库事务协调器]
+        TDM[数据库动态管理器]
+    end
+    
+    MT -.->|租户信息管理| TME
+    MTC -.->|配置参数管理| TME
+    MTD -.->|数据库映射| TME
+    MTU -.->|跨租户授权| TME
+    
+    TME --> TR
+    TR -->|路由A| TA_USER
+    TR -->|路由B| TB_USER
+    
+    TME --> TCC
+    TCC -.->|分布式事务| TA_BIZ
+    TCC -.->|分布式事务| TB_BIZ
+    
+    TME --> TDM
+    TDM -.->|动态管理| TA_CONFIG
+    TDM -.->|动态管理| TB_CONFIG
+
+

主要功能:

+
    +
  1. 租户基础管理 +
      +
    • 租户创建、编辑、删除
    • +
    • 租户状态管理(启用、禁用、过期)
    • +
    • 租户基本信息维护
    • +
    • 租户层级结构管理(支持母公司-子公司模式)
    • +
  2. +
  3. 多库数据隔离管理 +
      +
    • 主库租户管理:在主库中统一管理所有租户的基础信息、层级关系、配置参数
    • +
    • 租户专属数据库:为每个租户创建独立的数据库实例,实现物理级别的数据隔离
    • +
    • 跨库关系管理:在主库中维护跨租户用户授权关系和全局配置信息
    • +
    • 租户级别缓存隔离:基于租户标识的分布式缓存命名空间隔离
    • +
    • 文件存储隔离:租户专属的文件存储目录和访问控制
    • +
  4. +
  5. 跨租户用户授权机制 +
      +
    • 用户多租户绑定:支持一个用户绑定多个租户
    • +
    • 租户间用户授权:租户管理员可以将其他租户的用户授权到本租户
    • +
    • 权限继承与隔离:用户在不同租户下可拥有不同的角色和权限
    • +
    • 租户切换:用户可在已授权的多个租户间自由切换
    • +
  6. +
  7. 租户配置管理 +
      +
    • 租户级别的业务参数配置
    • +
    • 租户专属的菜单和功能配置
    • +
    • 租户品牌定制(Logo、主题色等)
    • +
    • 租户级别的集成配置
    • +
  8. +
+

跨租户用户授权业务流程:

+
graph TD
+    A[租户A管理员] --> B{选择授权用户}
+    B --> C[搜索其他租户用户]
+    C --> D[选择租户B的用户X]
+    D --> E[配置在租户A中的角色]
+    E --> H[设置数据权限范围]
+    H --> I[建立用户X在租户A的权限关系]
+    I --> J[用户X可访问租户A系统]
+    J --> K[用户X可在租户A/B间切换]
+    
+    M[用户X登录] --> N{选择租户}
+    N --> O[租户A - 角色A权限]
+    N --> P[租户B - 角色B权限]
+
+

多库租户管理数据模型:

+

主库租户管理数据结构:

+

1. 租户基础信息表(sys_tenant) - +表功能:统一管理所有租户的基础信息和层级关系 - +核心字段: - 主键标识:全系统唯一的租户标识符 - +租户编码:业务层面的租户唯一编码,格式规范化 - +租户名称:面向用户的租户显示名称 - 父租户标识:支持母子公司层级结构 - +租户类型:区分集团总部、分公司、子公司等类型 - +联系信息:租户联系人、电话、邮箱等 - +数据库配置:租户专属数据库的连接配置信息 - +状态标识:租户启用、禁用、过期等状态 - +创建信息:创建时间、创建人等审计信息

+

2. 租户配置参数表(sys_tenant_config) - +表功能:管理租户级别的业务参数和系统配置 - +核心字段: - 主键标识:配置项的唯一标识 - +租户标识:关联的租户信息 - 配置分类:区分业务参数、系统配置、集成配置等 +- 配置键名:配置项的标识符 - 配置值:具体的配置内容,支持JSON格式 - +配置描述:配置项的说明信息 - 是否加密:敏感配置的加密标识 - +生效状态:配置是否启用

+

3. 租户数据库映射表(sys_tenant_database) - +表功能:管理租户与数据库实例的映射关系 - +核心字段: - 主键标识:映射关系的唯一标识 - +租户标识:关联的租户信息 - 数据库标识:租户专属数据库的标识符 - +连接配置:数据库连接字符串和参数 - 读写配置:支持读写分离的配置信息 - +容量配置:数据库容量限制和监控阈值 - 备份配置:备份策略和恢复配置 - +状态信息:数据库运行状态和健康检查

+

租户库业务数据结构:

+

1. 租户用户信息表(tenant_user) - +表功能:存储租户内部的用户信息和组织关系 - +核心字段: - 主键标识:租户内用户的唯一标识 - +全局用户标识:关联主库中的用户信息 - 用户编号:租户内部的用户编号 - +部门标识:用户所属的组织部门 - 职位信息:用户在租户内的职位和级别 - +入职信息:用户在租户的入职时间和状态 - +权限范围:用户在租户内的数据访问范围 - +业务角色:用户在业务流程中的角色定位

+

2. 租户组织架构表(tenant_department) - +表功能:管理租户内部的组织架构和部门层级 - +核心字段: - 主键标识:部门的唯一标识 - +部门编码:租户内部的部门编码 - 部门名称:部门的显示名称 - +父部门标识:构建部门层级结构 - 部门层级:部门在组织架构中的层级深度 - +负责人信息:部门负责人和联系方式 - 业务范围:部门负责的业务领域 - +状态信息:部门的启用状态和变更历史

+

3. 租户业务配置表(tenant_business_config) - +表功能:管理租户特定的业务参数和流程配置 - +核心字段: - 主键标识:配置项的唯一标识 - +业务模块:配置所属的业务模块 - 配置类型:区分费率、流程、规则等配置类型 +- 配置内容:具体的业务配置参数 - 生效范围:配置的适用范围和条件 - +生效时间:配置的生效和失效时间 - 审核信息:配置变更的审核记录

+

跨租户授权核心规则:

+
    +
  1. 授权主体规则 +
      +
    • 只有租户管理员或超级管理员可以进行跨租户用户授权
    • +
    • 被授权用户必须是已存在的系统用户
    • +
    • 授权操作需要记录完整的审计日志
    • +
  2. +
  3. 权限隔离规则 +
      +
    • 用户在不同租户下的权限完全独立
    • +
    • 租户A的管理员无法查看用户在租户B的权限信息
    • +
    • 跨租户数据访问严格按照数据权限控制
    • +
  4. +
  5. 会话管理规则 +
      +
    • 用户登录后默认进入主租户(第一个绑定的租户)
    • +
    • 租户切换需要重新进行权限验证
    • +
    • 同一用户在不同租户的会话信息独立存储
    • +
  6. +
  7. 授权生命周期规则 +
      +
    • 支持设置授权有效期
    • +
    • 到期自动失效,需要重新申请
    • +
    • 支持授权撤销,立即生效
    • +
  8. +
+

多库架构技术实现:

+

1. 主库租户管理引擎 - +租户信息统一管理:主库集中管理所有租户的基础信息、配置参数、层级关系 +- +数据库实例管理:动态创建、配置和管理租户专属数据库实例 +- +跨库事务协调:分布式事务管理器确保跨租户操作的数据一致性 +- +租户路由器:根据用户上下文自动路由到正确的租户数据库

+

2. 租户数据库动态管理 - +数据库实例创建:基于模板自动为新租户创建独立数据库实例 +- Schema同步管理:统一的数据库结构版本管理和升级机制 - +连接池管理:每个租户数据库的独立连接池配置和监控 - +数据迁移工具:支持租户数据的导入、导出和迁移功能

+

3. 多租户会话管理 - +租户上下文传递:ThreadLocal + Request +Header的租户标识传递机制 - +会话状态隔离:Redis分布式缓存的租户命名空间隔离 - +权限缓存分层:主库权限 + 租户权限的两级缓存策略 - +切换状态同步:租户切换时的权限重载和会话状态更新

+

4. 跨租户授权协调 - +授权关系存储:主库统一存储和管理所有跨租户授权关系 - +权限验证引擎:跨库权限验证和数据访问控制 - +授权流程引擎:支持复杂的多级审批和自动化授权流程 - +审计日志统一:所有跨租户操作的统一审计和监控

+

多库架构业务规则:

+

1. 租户管理规则 - +租户编码全局唯一,格式:水务公司简称+年份+3位流水号 - +每个租户必须拥有独立的数据库实例,不允许共享 - +租户创建时自动生成标准的数据库Schema结构 - +租户删除前必须先完成数据备份和迁移确认

+

2. 数据隔离规则 - +租户数据库之间严格物理隔离,禁止直接跨库访问 - +跨租户数据访问必须通过主库的授权关系验证 - +租户数据库连接池独立配置,避免资源争用 - +敏感数据在租户库中加密存储,密钥独立管理

+

3. 用户授权规则 - 用户在单个租户下最多可拥有5个角色 +- 跨租户授权操作需要双方租户管理员审批 - 一个用户最多可以绑定10个租户 - +用户在不同租户下的身份信息完全独立 - +跨租户授权关系统一在主库中管理和审计

+

4. 事务协调规则 - +涉及多个租户的操作必须使用分布式事务 - +单租户内的操作在租户库内保证ACID特性 - +跨库操作失败时自动回滚所有相关变更 - +重要业务操作需要在主库记录操作日志

+

5. 性能管理规则 - +每个租户数据库设置容量上限和性能监控 - +大租户可配置读写分离和分库分表策略 - +租户切换操作限制频率,防止系统资源滥用 - +定期清理过期的授权关系和会话数据

+

4.4.3.5 UP-005: 系统监控

+

功能描述:

+

  系统监控模块提供全面的系统运行状态监控、性能指标收集和运维管理功能。

+

主要功能:

+
    +
  1. 在线用户监控:实时监控在线用户数量、用户行为、异常登录
  2. +
  3. 系统性能监控:CPU、内存、磁盘、网络等系统资源监控
  4. +
  5. 操作日志管理:用户操作日志记录、查询、分析
  6. +
  7. 告警管理:系统异常告警、性能阈值告警
  8. +
+

技术实现:

+
    +
  • Micrometer + Prometheus监控指标收集
  • +
  • ELK Stack日志分析
  • +
  • Redis存储实时监控数据
  • +
  • WebSocket实时推送监控信息
  • +
+

+

5 子系统2设计: 营收业务系统

+

5.1 任务概述

+

  营收业务系统是整个福建水务营收系统的核心业务系统,负责处理从客户管理到账务处理的完整营收业务流程,整合了原营收系统、表务系统、报装系统、客户服务、微网厅等所有核心业务功能。

+

设计目标:

+
    +
  • 实现统一的营收业务管理,涵盖水务企业全业务场景
  • +
  • 提供完整的客户服务体验,从线下到线上的全渠道服务
  • +
  • 支持表务全生命周期管理,确保设备资产的有效管控
  • +
  • 实现报装业务流程标准化,提高服务效率和客户满意度
  • +
+

功能范围:

+

  营收业务系统包含两大核心模块群,实现水务企业营收业务闭环:

+

5.1.0.1 营收核心模块群

+
    +
  • 客户资料管理:客户档案建立、信息维护、分组管理
  • +
  • 抄表开账:抄表数据录入、复核确认、自动开账
  • +
  • 营业收费:柜台收费、移动收费、在线缴费
  • +
  • 账务处理:一期先聚焦水量调整、金额调整、退款、冲正、坏账申请,统一经 +IF-REV-007 +承接,并按共性能力先统一、场景能力再分批推进
  • +
  • 发票管理:发票开具、查询、重开、作废
  • +
  • 催缴管理:欠费统计、催缴通知、停水管理
  • +
  • 统计分析:多维度数据统计和报表分析
  • +
  • 代收业务:银行代扣、聚合支付等代收渠道
  • +
  • 业务配置:业务参数配置
  • +
+

5.1.0.2 客户服务模块群

+
    +
  • 账户绑定管理:微信/支付宝账户绑定和管理
  • +
  • 信息查询服务:账单查询、用水历史、缴费记录等
  • +
  • 在线缴费服务:多渠道在线缴费服务
  • +
  • 电子发票服务:电子发票开具、查询、推送
  • +
  • 营业网点服务:网点查询、地图导航、预约服务
  • +
  • 业务办理服务:各类业务在线申请和办理
  • +
+

核心业务流程:   客户建档 → 抄表录入 → 复核开账 → +营业收费 → 账务处理 → 发票管理 → 催缴管理

+

5.2 设计概述

+

5.2.1 总体约束

+

技术约束:

+
    +
  • 基于Spring Boot微服务架构实现
  • +
  • 采用事务处理确保数据一致性
  • +
  • 支持分布式锁处理并发访问
  • +
  • 遵循水务行业财务规范
  • +
+

性能约束:

+
    +
  • 支持10万+客户的业务处理
  • +
  • 抄表开账处理能力≥5000户/小时
  • +
  • 收费交易响应时间≤2秒
  • +
  • 报表生成时间≤30秒
  • +
+

安全约束:

+
    +
  • 财务数据加密存储
  • +
  • 关键操作需要审批流程
  • +
  • 完整的操作审计日志
  • +
  • 支付接口安全认证
  • +
+

5.2.2 子系统外部接口

+

接口设计说明:

+

  营收业务系统作为核心业务平台,整合客户管理、账务处理、抄表计费、工单管理、报装业务等完整业务流程。系统提供标准化的RESTful接口,支持多租户业务配置,确保水务营收业务的高效运营和数据一致性。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-REV-001客户信息查询接口查询客户档案、账户状态、联系人与水表绑定关系柜台/客户渠道/工单HTTPS REST客户ID、客户编号、手机号、查询类型客户档案、账户信息、联系人列表、水表绑定关系
IF-REV-004抄表数据提交接口提交人工或远传抄表数据并触发校验手机抄表APP/集抄系统HTTPS REST抄表任务ID、水表ID、读数、图片证据、GPS位置上传结果、校验状态、异常标记
IF-REV-005账单生成接口根据抄表结果、水价模板和费用组成生成账单开账任务/批量任务HTTPS REST抄表批次、账期、客户范围、应收日期账单结果、失败清单、生成汇总
IF-REV-006缴费处理接口创建收费记录并核销账单柜台/线上渠道HTTPS REST客户ID、账单ID列表、支付方式、实收金额收费结果、核销状态、交易流水
IF-REV-008发票申请接口发起电子发票申请并接收票据状态回写柜台/客户渠道HTTPS REST客户ID、账单ID列表、开票抬头、税号、邮箱发票申请结果、票据状态、下载地址
IF-REV-011银行代收协同接口发起代扣、回盘、对账、结算协同银行代收模块/SYS-009HTTPS REST / 文件交换批次号、渠道编码、账期、账单明细批次状态、回盘结果、对账差异、结算结果
IF-REV-012业务参数配置接口查询和维护价格模板、优惠方案、业务参数配置管理后台/参数管理端HTTPS REST参数分类、模板编码、站点范围参数明细、模板信息、更新结果
IF-CS-001账户绑定接口绑定、解绑、切换默认客户微信/支付宝/微网厅HTTPS REST渠道用户标识、客户编号、身份校验信息绑定结果、默认客户信息、绑定关系
IF-CS-002历史账单查询接口查询账单、欠费、用水历史、缴费记录客户端HTTPS REST客户ID、账期范围、查询类型账单列表、欠费金额、用水趋势、缴费记录
IF-CS-003在线支付下单接口创建微信/支付宝线上支付订单客户端HTTPS REST客户ID、账单ID列表、支付渠道、支付金额订单号、支付二维码/预支付信息、订单状态
IF-CS-004发票申请接口提交电子发票申请、查询发票状态客户端HTTPS REST缴费订单号、发票抬头、邮箱/手机号发票状态、发票链接、申请结果
IF-CS-005网点与业务办理接口查询营业网点、预约信息、可办事项客户端HTTPS REST行政区划、关键字、业务类型网点列表、营业时间、可办业务、预约信息
IF-CS-006业务办理进度接口提交业务申请、查询办理进度与附件客户端HTTPS REST申请类型、客户资料、附件清单、申请单号受理结果、流程状态、进度轨迹、补件要求
IF-CS-007柜面扫码支付接口创建柜面扫码支付订单并回写结果柜台终端/营业前台HTTPS REST柜台编号、账单ID列表、订单金额、支付渠道订单号、支付状态、回写结果
+

5.2.3 设计方案概述

+

架构设计:

+

  营收系统采用领域驱动设计(DDD),按业务领域划分为客户域、抄表域、收费域、账务域等,每个域独立部署,通过事件驱动实现域间协作。

+

技术选型:

+
    +
  • 业务框架:Spring Boot + MyBatis-Plus
  • +
  • 工作流引擎:Flowable(处理业务审批流程)
  • +
  • 分布式事务:Seata(确保数据一致性)
  • +
  • 消息队列:RabbitMQ(异步处理和事件通知)
  • +
  • 缓存策略:Redis(热点数据缓存)
  • +
+

5.3 子系统架构设计

+

  营收系统采用DDD领域驱动设计,按业务领域进行模块划分,实现高内聚低耦合的架构设计。系统核心分为营收核心模块群客户服务模块群两大业务板块。

+
graph TB
+    subgraph "营收系统整体架构"
+        subgraph "应用层 - Application Layer"
+            A1[Web管理界面<br/> 管理端]
+            A2[移动收费界面<br/> 收费端]
+            A3[API接口层<br/> 接口网关]
+        end
+        
+        subgraph "业务服务层 - Business Service Layer"
+            subgraph " 营收核心模块群 REV-001~009"
+                subgraph "核心业务流程"
+                    B1[REV-001<br/>客户管理服务<br/> 客户基础]
+                    B2[REV-002<br/>抄表开账服务<br/> 业务源头]
+                    B3[REV-003<br/>营业收费服务<br/> 收入核心]
+                    B4[REV-004<br/>账务处理服务<br/> 财务核心]
+                end
+                
+                subgraph "辅助业务支撑"
+                    B5[REV-005<br/>发票管理服务<br/> 票据管理]
+                    B6[REV-006<br/>催缴管理服务<br/> 收益保障]
+                    B7[REV-007<br/>统计分析服务<br/> 决策支持]
+                    B8[REV-008<br/>代收业务服务<br/> 渠道扩展]
+                    B9[REV-009<br/>业务参数配置<br/> 基础配置]
+                end
+            end
+            
+            %% 工单管理模块群已独立为SYS-005
+        end
+        
+        subgraph "领域层 - Domain Layer"
+            subgraph "营收核心业务领域"
+                C1[客户领域<br/>Customer Domain<br/>]
+                C2[抄表领域<br/>Meter Reading Domain<br/>]
+                C3[收费领域<br/>Billing Domain<br/>]
+                C4[账务领域<br/>Accounting Domain<br/>]
+                C5[发票领域<br/>Invoice Domain<br/>]
+            end
+            
+            subgraph "工单管理业务领域"
+                C6[工单统一领域<br/>WorkOrder Domain<br/>]
+                C61[工单流程引擎<br/>Workflow Engine<br/>]
+                C62[工单状态管理<br/>Status Management<br/>]
+                C63[工单智能监控<br/>Monitor & Alert<br/>🔔]
+            end
+        end
+        
+        subgraph "基础设施层 - Infrastructure Layer"
+            D1[(达梦数据库集群<br/>DM Database Cluster<br/> 核心存储)]
+            D2[Redis分布式缓存<br/>Distributed Cache<br/> 高速缓存]
+            D3[MinIO文件存储<br/>Distributed File Storage<br/> 文件管理]
+            D4[RabbitMQ消息队列<br/>Message Queue<br/> 异步通信]
+            D5[支付与结算服务(SYS-009)<br/>Payment & Settlement<br/> 聚合支付/代扣/对账]
+            D6[Flowable工作流引擎<br/>Workflow Engine<br/> 流程引擎]
+        end
+        
+        subgraph "外部系统集成"
+            E1[手机抄表APP<br/> 移动端]
+            E2[微网厅系统<br/> 线上服务]
+            E3[表务系统<br/> 设备管理]
+        end
+    end
+    
+    %% 应用层到业务服务层连接
+    A1 --> B1
+    A1 --> B9
+    A2 --> B3
+    A3 --> B8
+    A3 --> B9
+    
+    %% 营收核心模块群内部业务流程
+    B1 -->|客户数据| B2
+    B2 -->|账单数据| B3
+    B3 -->|收费数据| B4
+    B4 -->|财务数据| B5
+    B1 -.->|客户信息| B6
+    B3 -.->|收费统计| B7
+    B8 -.->|代收数据| B3
+    
+    %% 工单管理模块群已独立为SYS-005
+    
+    %% 业务服务层到领域层映射
+    B1 --> C1
+    B2 --> C2
+    B3 --> C3
+    B4 --> C4
+    B5 --> C5
+    B6 --> C1
+    B7 --> C3
+    B8 --> C3
+    
+    %% 工单领域移至SYS-005
+    
+    %% 领域层到基础设施层
+    C1 --> D1
+    C2 --> D1
+    C3 --> D1
+    C4 --> D1
+    C5 --> D3
+    C6 --> D4
+    C61 --> D6
+    C62 --> D2
+    C63 --> D4
+    B8 --> D5
+    
+    %% 外部系统集成(工单流转由SYS-005承担)
+    
+    %% 样式定义
+    classDef coreModuleGroup fill:#e3f2fd,stroke:#1976d2,stroke-width:4px,color:#000
+    classDef workorderModuleGroup fill:#fce4ec,stroke:#c2185b,stroke-width:4px,color:#000
+    classDef coreModule fill:#e1f5fe,stroke:#0277bd,stroke-width:2px
+    classDef workorderModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef coreDomain fill:#e8f5e8,stroke:#388e3c,stroke-width:2px
+    classDef workorderDomain fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    classDef infrastructure fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px
+    classDef external fill:#e0f2f1,stroke:#00695c,stroke-width:2px
+    
+    %% 应用样式
+    class B1,B2,B3,B4,B5,B6,B7,B8,B9 coreModule
+    class B9,B91,B92,B93,B94 workorderModule
+    class C1,C2,C3,C4,C5 coreDomain
+    class C6,C61,C62,C63 workorderDomain
+    class D1,D2,D3,D4,D5,D6 infrastructure
+    class E1,E2,E3 external
+
+

5.4 模块定义

+

5.4.1 模块列表

+

  营收系统的模块按业务性质分为两大模块群:

+

5.4.1.1 营收核心模块群

+

  营收核心业务模块,实现从客户管理到收费账务的完整业务链条,并通过 +SYS-008 发票服务、SYS-009 支付与银行结算、SYS-010 +消息服务形成跨子系统协同闭环:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称(标识)功能描述开发方式
REV-001客户资料管理客户档案管理、客户分组、信息变更自行开发
REV-002抄表开账抄表录入、复核开账、异常处理自行开发
REV-003营业收费柜台收费、移动收费、在线缴费自行开发
REV-004账务处理账务调整、退款处理、坏账管理自行开发
REV-005发票管理发票开具、查询管理、电子发票自行开发
REV-006催缴管理欠费催缴、短信通知、停水管理自行开发
REV-007统计分析多维度数据统计和报表分析功能自行开发
REV-008代收业务集成银行渠道与聚合支付等代收方式自行开发
REV-009业务参数配置业务参数配置、参数管理自行开发
+

5.4.1.2 客户服务模块群

+

  为外部渠道(微网厅、第三方平台)和内部渠道(客服前台)提供服务接入能力:

+
    +
  • 账户绑定管理、信息查询服务、在线缴费服务、电子发票服务、营业网点服务、业务办理服务、柜面扫码支付
  • +
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称(标识)功能描述开发方式
CS-001账户绑定管理微信/支付宝账户绑定与解绑、多账户管理自行开发
CS-002信息查询服务账单查询、用水历史、缴费记录、停水公告自行开发
CS-003在线缴费服务快捷缴费、充值、代缴、结果查询(经SYS-009)自行开发
CS-004电子发票服务发票查看、推送、下载(经SYS-008)自行开发
CS-005营业网点服务网点查询、地图导航、预约(可选)自行开发
CS-006业务办理服务联系方式/开票方式变更、更名过户、低保、换表、自主抄表等自行开发
CS-007柜面扫码支付柜台二维码收款、票据关联、结果回传(经SYS-009)自行开发
+

5.4.2 模块间关系

+

  营收系统的两大模块群既相对独立又紧密协作,形成完整的业务生态系统。

+

5.4.2.1 营收核心模块群关系

+

  营收核心业务群实现了从客户管理到账务处理的完整营收业务流程:

+
graph TD
+    subgraph "营收核心业务流程"
+        A[REV-001<br/>客户资料管理<br/>] --> B[REV-002<br/>抄表开账<br/>]
+        B --> C[REV-003<br/>营业收费<br/>]
+        C --> D[REV-004<br/>账务处理<br/>]
+        D --> E[REV-005<br/>发票管理<br/>]
+        
+        subgraph "辅助业务流程"
+            F[REV-006<br/>催缴管理<br/>]
+            G[REV-007<br/>统计分析<br/>]
+            H[REV-008<br/>代收业务<br/>]
+            I[REV-009<br/>业务参数配置<br/>]
+        end
+    end
+    
+    %% 主流程依赖关系
+    A -.->|客户信息| C
+    A -.->|客户信息| E
+    A -.->|客户信息| F
+    B -.->|账单信息| D
+    B -.->|欠费信息| F
+    C -.->|收费记录| E
+    C -.->|收费数据| G
+    D -.->|账务数据| G
+    H -.->|代收记录| C
+    I -.->|水价/参数| B
+    I -.->|打印/税率/参数| E
+    I -.->|收费参数| C
+    
+    %% 样式
+    classDef coreFlow fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef supportFlow fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    
+    class A,B,C,D,E coreFlow
+    class F,G,H,I supportFlow
+
+

5.4.2.2 客户服务模块群关系

+

  客户服务模块群为对外提供服务的核心入口,构建以客户为中心的一体化服务体系:

+
graph TD
+    subgraph "客户服务核心流程"
+        A[CS-001<br/>账户绑定管理<br/>] --> B[CS-002<br/>信息查询服务<br/>]
+        B --> C[CS-003<br/>在线缴费服务<br/>]
+        C --> D[CS-004<br/>电子发票服务<br/>]
+        
+        subgraph "辅助服务模块"
+            E[CS-005<br/>营业网点服务<br/>]
+            F[CS-006<br/>业务办理服务<br/>]
+            G[CS-007<br/>柜面扫码支付<br/>]
+        end
+    end
+    
+    %% 服务调用关系
+    A -.->|绑定验证| F
+    B -.->|查询支撑| C
+    B -.->|查询支撑| D
+    B -.->|查询支撑| F
+    C -.->|支付回调| D
+    G -.->|线下支付| D
+    E -.->|网点导航| F
+    F -.->|办理结果| B
+    
+    %% 外部系统依赖
+    C -.->|支付处理| SYS009[SYS-009<br/>支付系统]
+    D -.->|发票开具| SYS008[SYS-008<br/>发票系统]
+    G -.->|扫码支付| SYS009
+    F -.->|工单流转| SYS005[SYS-005<br/>工单系统]
+    
+    %% 样式
+    classDef coreService fill:#e8f5e8,stroke:#4caf50,stroke-width:2px
+    classDef supportService fill:#fff3e0,stroke:#ff9800,stroke-width:2px
+    classDef externalSys fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px
+    
+    class A,B,C,D coreService
+    class E,F,G supportService
+    class SYS008,SYS009,SYS005 externalSys
+
+

服务流程说明:

+
    +
  • 账户绑定:客户通过微信/支付宝绑定水表账户,建立服务关系
  • +
  • 信息查询:基于绑定关系,提供账单、用水历史、缴费记录等查询服务
    +
  • +
  • 在线缴费:支持快捷缴费、充值、代缴等多种缴费方式
  • +
  • 电子发票:缴费完成后自动开具电子发票,支持查看下载
  • +
  • 业务办理:提供各类业务在线申请,如更名过户、换表申请等
  • +
  • 营业网点:提供网点查询、地图导航、预约服务等
  • +
  • 柜面扫码:线下柜台扫码支付,与线上服务形成闭环
  • +
+

5.4.2.3 模块群间协作关系

+

  两大模块群通过标准化接口进行协作,实现业务闭环:

+
graph TB
+    subgraph "营收核心模块群"
+        CORE[REV-001~009<br/>客户/抄表/收费/账务/发票/催缴/统计/代收/参数]
+    end
+    
+    subgraph "客户服务模块群"
+        CS[CS-001~007<br/>账户绑定/查询/在线缴费/电子发票/网点/办理/柜面扫码]
+    end
+    
+    subgraph "工单管理系统"
+        WO[SYS-005<br/>统一工单中心]
+    end
+    
+    CORE <-->|标准API| CS
+    CORE -.->|业务异常/流程触发| WO
+    CS -.->|客户申请/服务工单| WO
+    
+    classDef coreGroup fill:#e1f5fe,stroke:#0277bd,stroke-width:3px
+    classDef csGroup fill:#e8f5e8,stroke:#388e3c,stroke-width:3px
+    classDef workorderGroup fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px
+    
+    class CORE coreGroup
+    class CS csGroup
+    class WO workorderGroup
+
+

5.4.3 模块描述

+

5.4.3.1 REV-001: 客户资料管理

+

功能概述:

+

  客户资料管理模块是营收系统的基础,负责维护所有用水客户的基本信息和档案资料。

+

核心功能:

+
    +
  1. 客户档案管理 +
      +
    • 新客户建档
    • +
    • 客户信息修改
    • +
    • 客户状态管理(正常、停用、注销)
    • +
    • 客户变更历史记录
    • +
  2. +
  3. 客户分组管理 +
      +
    • 按区域分组
    • +
    • 按用水性质分组
    • +
    • 按客户类型分组
    • +
    • 自定义分组
    • +
  4. +
  5. 客户查询服务 +
      +
    • 多条件组合查询
    • +
    • 模糊查询支持
    • +
    • 高级筛选功能
    • +
  6. +
+

子功能扩展:

+
    +
  • 客户分组:客户分组管理、分组内客户管理
  • +
  • 集收管理:集收号管理、集收号内客户管理
  • +
  • 立户建档:手工建档、批量立户
  • +
  • 定额管理:定额共享(主/子客户)、定额核定
  • +
  • 批量修改:手工修改、模板导入修改
  • +
  • 客户业务办理:换表、加抄、更名、过户、低保、调价、停用/启用、注销/恢复
  • +
  • 电子档案:高拍仪/附件采集与档案管理
  • +
+

业务规则:

+
    +
  • 客户编号系统自动生成,格式:部门代码+年份+6位流水号
  • +
  • 身份证号码必须通过实名认证
  • +
  • 客户状态变更需要审批流程
  • +
  • 存在未结清账务的客户不允许注销
  • +
+

5.4.3.2 REV-002: 抄表开账

+

功能概述:

+

  抄表开账模块实现了从抄表数据录入到自动生成账单的完整业务流程。

+

核心功能:

+
    +
  1. 抄表数据录入 +
      +
    • 手工抄表录入
    • +
    • PDA抄表导入
    • +
    • 远传抄表自动采集
    • +
    • Excel批量导入
    • +
  2. +
  3. 抄表数据复核 +
      +
    • 数据有效性验证
    • +
    • 异常用水量检测
    • +
    • 人工复核确认
    • +
    • 批量复核处理
    • +
  4. +
  5. 自动开账处理 +
      +
    • 水量计算
    • +
    • 费用计算
    • +
    • 账单生成
    • +
    • 开账确认
    • +
  6. +
+

子功能扩展:

+
    +
  • 册本信息:册本查询、册本详情
  • +
  • 册本调整:新卡入册、册内序号调整、册本间调整
  • +
  • 抄表录入:按册本/按抄表员、导入抄表数据
  • +
  • 复核开账:复核开账查询/汇总、复核与开账
  • +
  • 开账记录:历史查询与导出
  • +
+

业务流程图:

+
flowchart TD
+    A[开始抄表] --> B{选择抄表方式}
+    B -->|手工抄表| C[手工录入抄表数据]
+    B -->|PDA抄表| D[PDA现场抄表]
+    B -->|远传抄表| E[自动采集抄表数据]
+    B -->|批量导入| F[Excel批量导入]
+    
+    C --> G[系统数据验证]
+    D --> H[PDA数据上传]
+    E --> I[远传数据同步]
+    F --> J[批量数据校验]
+    
+    H --> G
+    I --> G
+    J --> G
+    
+    G --> K{数据是否有效?}
+    K -->|否| L[数据修正]
+    L --> G
+    K -->|是| M[抄表数据复核]
+    
+    M --> N{复核是否通过?}
+    N -->|否| O[标记异常数据]
+    O --> P[人工处理异常]
+    P --> M
+    N -->|是| Q[计算用水量]
+    
+    Q --> R[计算水费金额]
+    R --> S[生成账单]
+    S --> T[开账确认]
+    T --> U[结束]
+
+

业务规则:

+
    +
  • 抄表状态:正常、故障、估读、拒抄、空房等
  • +
  • 用水量计算:本期读数 - 上期读数
  • +
  • 异常判断:超过历史平均值2倍为量高,低于0.5倍为量低
  • +
  • 复核规则:抄表人员不能复核自己录入的数据
  • +
+

5.4.3.3 REV-003: 营业收费

+

功能概述:

+

  营业收费模块提供完整的收费业务流程管理,支持多种收费方式和支付渠道。

+

核心功能:

+
    +
  1. 柜台收费 +
      +
    • 实时收费处理
    • +
    • 多种支付方式
    • +
    • 收费凭证打印
    • +
    • 柜台结账管理
    • +
  2. +
  3. 在线缴费 +
      +
    • 微信支付接入
    • +
    • 支付宝支付接入
    • +
    • 银行卡支付
    • +
    • 代扣代缴服务
    • +
  4. +
  5. 批量收费 +
      +
    • 批量缴费处理
    • +
    • 预付款管理
    • +
    • 托收业务
    • +
    • 自动扣费
    • +
  6. +
+

子功能扩展:

+
    +
  • 特殊开账:特殊情形直接开账及查询导出
  • +
  • 柜台结账:结账、红冲、打印凭证
  • +
  • 红冲记录:红冲查询与导出
  • +
+

业务流程图:

+
flowchart TD
+    A[客户缴费] --> B{选择缴费方式}
+    B -->|柜台缴费| C[到营业厅缴费]
+    B -->|在线缴费| D[选择在线支付]
+    B -->|银行代扣| E[银行自动扣费]
+    
+    C --> F[查询客户账单]
+    D --> G[微信/支付宝支付]
+    E --> H[银行代扣处理]
+    
+    F --> I{账单是否正确?}
+    I -->|否| J[账单调整]
+    J --> F
+    I -->|是| K[选择支付方式]
+    
+    K --> L{支付方式}
+    L -->|现金| M[现金收费]
+    L -->|POS机| N[刷卡收费]
+    L -->|扫码| O[扫码支付]
+    
+    G --> P[渠道支付确认]
+    H --> Q[银行扣费确认]
+    M --> R[收费确认]
+    N --> R
+    O --> R
+    P --> R
+    Q --> R
+    
+    R --> S[更新账单状态]
+    S --> T[生成收费凭证]
+    T --> U{需要发票?}
+    U -->|是| V[开具发票]
+    U -->|否| W[完成收费]
+    V --> W
+    W --> X[结束]
+
+

业务规则:

+
    +
  1. 收费员每日下班前必须进行”柜台结账”
  2. +
  3. 结账前,收错的账款可以执行”红冲”操作
  4. +
  5. 支持现金、POS机、微信、支付宝等多种支付方式
  6. +
  7. 在线支付需要实时确认支付结果
  8. +
  9. 银行代扣需要客户事先签约授权
  10. +
+

5.4.3.4 REV-004: 账务处理

+

功能概述:

+

  负责处理各类复杂的账务调整、退款、坏账等业务,确保账务的准确性和合规性。

+

核心功能:

+
    +
  • 未销账调整: 对未支付账单进行调整。
  • +
  • 分账调整: 将一笔总账单拆分为多笔子账单。
  • +
  • 预付款退款: 处理客户预付款的退还流程。
  • +
  • 呆坏账处理: 对长期无法收回的欠款进行核销。
  • +
+

5.4.3.5 REV-005: 发票管理

+

功能概述:

+

  提供全面的发票管理功能,支持电子发票和纸质发票的开具、查询、作废等操作。

+

核心功能:

+
    +
  • 发票开具: 根据缴费记录为客户开具发票。
  • +
  • 发票查询与管理: +查询发票历史,处理红冲、作废等请求。
  • +
  • 电子发票集成: +对接第三方电子发票平台,实现自动开具和推送。
  • +
+

实现说明:

+
    +
  • 本模块通过调用SYS-008 发票服务子系统的”统一开票接口/作废红冲接口/发票查询接口”实现具体的开票与回执处理,营收系统不直接对接供应商。
  • +
+

5.4.3.6 REV-006: 催缴管理

+

功能概述:

+

  对逾期未缴费的客户进行有效的催缴管理,提高水费回收率。

+

核心功能:

+
    +
  • 欠费分析: 统计和分析欠费客户数据。
  • +
  • 催缴通知: +通过短信、电话、通知单等多种方式进行催缴。
  • +
  • 停复水管理: +对恶意欠费用户执行停水,缴清后进行复水操作。
  • +
+

5.4.3.7 REV-007: 统计分析

+

功能概述:

+

  提供多维度的数据统计和报表分析功能,为管理决策提供数据支持。

+

核心功能:

+
    +
  • 售水统计: 按日、月、年统计售水量、售水收入等。
  • +
  • 收费统计: 统计不同收费渠道、方式的收费情况。
  • +
  • 欠费分析: 多维度分析欠费构成和趋势。
  • +
  • 自定义报表: 提供灵活的报表自定义工具。
  • +
  • 报表查询: 业务分类报表树、统计条件与结果导出。
  • +
  • 欠费查询: 按账期/金额等条件查询客户欠费。
  • +
  • 缴费记录: 缴费记录检索与导出。
  • +
+

5.4.3.8 REV-008: 代收业务

+

功能概述:

+

  集成银行渠道与聚合支付等代收方式,方便客户缴费。

+

核心功能:

+
    +
  • 银行代扣: 与银行签订协议,实现自动批量扣费。
  • +
  • 聚合支付: 集成微信、支付宝等支付网关。
  • +
  • 对账管理: 定期与各渠道进行账务核对。
  • +
  • 实时收费: 渠道实时缴费处理(对接SYS-009)。
  • +
  • 银行托收: +托收文件处理与状态跟踪(对接SYS-009)。
  • +
+

5.4.3.9 REV-009: 业务参数配置

+

功能概述:

+

  集中管理与营收业务相关的参数与基础资料,提升配置一致性与运营效率。

+

核心功能:

+
    +
  • 水表参数:水表厂家、型号、口径、量程
  • +
  • 地址参数:营业站点、所属小区
  • +
  • 价格体系:水价归属、费用组成、水价调整、调价历史、优惠方案、用水方案
  • +
  • 基本配置:打印维护、自定义列、日志管理、水司账户、发票税率、银行信息、抄表状态、词语信息、参数配置
  • +
+

5.4.4 客户服务模块群描述

+

5.4.4.1 CS-001: 账户绑定管理

+

功能概述:

+

  账户绑定管理模块是客户服务体系的入口,负责处理客户与第三方平台账户的绑定关系管理,为后续的信息查询、在线缴费等服务奠定基础。

+

核心功能:

+
    +
  1. 账户绑定流程 +
      +
    • 微信/支付宝授权登录
    • +
    • 客户编号/户名/手机号搜索验证
    • +
    • 账户信息确认与绑定
    • +
    • 绑定状态维护与管理
    • +
  2. +
  3. 多账户管理 +
      +
    • 支持一个用户绑定多个水务账户
    • +
    • 主账户设置与切换
    • +
    • 账户别名设置
    • +
    • 绑定账户列表管理
    • +
  4. +
  5. 解绑与重绑 +
      +
    • 账户解绑流程
    • +
    • 解绑权限控制
    • +
    • 重新绑定验证
    • +
    • 解绑日志记录
    • +
  6. +
+

技术实现: - 基于OAuth2.0协议实现第三方授权 - +Redis缓存绑定关系提升查询性能 - 数据加密存储保护客户隐私

+

5.4.4.2 CS-002: 信息查询服务

+

功能概述:

+

  信息查询服务模块为客户提供全方位的信息查询功能,包括账单查询、用水历史、缴费记录等,是客户服务的核心模块之一。

+

核心功能:

+
    +
  1. 账单查询服务 +
      +
    • 当前账单查询
    • +
    • 历史账单查询
    • +
    • 账单详情展示
    • +
    • 欠费账单提醒
    • +
  2. +
  3. 用水信息查询 +
      +
    • 用水量历史统计
    • +
    • 用水趋势分析
    • +
    • 抄表记录查询
    • +
    • 异常用水提醒
    • +
  4. +
  5. 缴费信息查询 +
      +
    • 缴费记录查询
    • +
    • 缴费方式统计
    • +
    • 发票信息查询
    • +
    • 退费记录查询
    • +
  6. +
  7. 公告信息服务 +
      +
    • 停水公告查看
    • +
    • 水价调整通知
    • +
    • 服务公告推送
    • +
    • 用水指南
    • +
  8. +
+

技术实现: - 分页查询优化大数据量处理 - +数据缓存策略提升响应速度 - 接口聚合减少客户端调用

+

5.4.4.3 CS-003: 在线缴费服务

+

功能概述:

+

  在线缴费服务模块提供便捷的线上缴费功能,支持多种支付方式,与SYS-009支付系统深度集成,确保支付的安全性和可靠性。

+

核心功能:

+
    +
  1. 快捷缴费 +
      +
    • 一键缴费当前账单
    • +
    • 批量缴费多个账单
    • +
    • 预设金额快速充值
    • +
    • 自动扣费设置
    • +
  2. +
  3. 多样化缴费方式 +
      +
    • 微信支付
    • +
    • 支付宝支付
    • +
    • 银联在线支付
    • +
    • 银行代扣缴费
    • +
  4. +
  5. 代缴服务 +
      +
    • 代他人缴费
    • +
    • 批量代缴管理
    • +
    • 代缴权限控制
    • +
    • 代缴记录跟踪
    • +
  6. +
  7. 缴费管理 +
      +
    • 缴费结果查询
    • +
    • 缴费凭证生成
    • +
    • 退费申请处理
    • +
    • 缴费异常处理
    • +
  8. +
+

技术实现: - 与SYS-009支付系统标准化对接 - +订单状态实时同步机制 - 支付安全策略与风控

+

5.4.4.4 CS-004: 电子发票服务

+

功能概述:

+

  电子发票服务模块与SYS-008发票系统集成,为客户提供电子发票的查看、下载、推送等服务,满足客户对发票的个性化需求。

+

核心功能:

+
    +
  1. 发票查看服务 +
      +
    • 发票列表查询
    • +
    • 发票详情展示
    • +
    • 发票状态跟踪
    • +
    • 发票验真服务
    • +
  2. +
  3. 发票推送服务 +
      +
    • 邮箱推送发票
    • +
    • 微信推送发票
    • +
    • 短信通知发票
    • +
    • 实时推送状态
    • +
  4. +
  5. 发票下载服务 +
      +
    • PDF格式下载
    • +
    • 批量打包下载
    • +
    • 二维码扫描下载
    • +
    • 下载记录管理
    • +
  6. +
  7. 发票管理 +
      +
    • 开票信息维护
    • +
    • 发票抬头管理
    • +
    • 特殊发票申请
    • +
    • 发票重开申请
    • +
  8. +
+

技术实现: - 与SYS-008发票系统API对接 - +文件流处理与下载优化 - 发票防伪与验真机制

+

5.4.4.5 CS-005: 营业网点服务

+

功能概述:

+

  营业网点服务模块为客户提供营业网点相关的信息服务,包括网点查询、地图导航、预约服务等,提升客户线下服务体验。

+

核心功能:

+
    +
  1. 网点信息查询 +
      +
    • 就近网点查询
    • +
    • 网点详细信息
    • +
    • 营业时间查询
    • +
    • 服务项目介绍
    • +
  2. +
  3. 地图导航服务 +
      +
    • 地图位置展示
    • +
    • 导航路线规划
    • +
    • 距离时间计算
    • +
    • 交通方式推荐
    • +
  4. +
  5. 网点预约服务 +
      +
    • 业务预约申请
    • +
    • 预约时间管理
    • +
    • 预约状态跟踪
    • +
    • 预约取消重约
    • +
  6. +
  7. 网点评价反馈 +
      +
    • 服务评价提交
    • +
    • 意见建议反馈
    • +
    • 投诉建议处理
    • +
    • 满意度调查
    • +
  8. +
+

技术实现: - 地理位置服务集成 - 地图API调用优化 - +预约队列管理机制

+

5.4.4.6 CS-006: 业务办理服务

+

功能概述:

+

  业务办理服务模块为客户提供各类水务业务的在线申请和办理功能,与SYS-005工单系统协作实现业务流程的数字化处理。

+

核心功能:

+
    +
  1. 基础业务办理 +
      +
    • 联系方式变更
    • +
    • 开票信息变更
    • +
    • 用水性质变更
    • +
    • 账户信息修改
    • +
  2. +
  3. 高级业务办理 +
      +
    • 更名过户申请
    • +
    • 水表换表申请
    • +
    • 低保减免申请
    • +
    • 自主抄表申请
    • +
  4. +
  5. 办理流程管理 +
      +
    • 申请表单填写
    • +
    • 附件资料上传
    • +
    • 申请进度跟踪
    • +
    • 办理结果通知
    • +
  6. +
  7. 业务咨询服务 +
      +
    • 办理条件查询
    • +
    • 办理流程指导
    • +
    • 所需材料清单
    • +
    • 在线客服咨询
    • +
  8. +
+

技术实现: - 与SYS-005工单系统流程集成 - +动态表单引擎支持 - 文件上传与存储管理

+

5.4.4.7 CS-007: 柜面扫码支付

+

功能概述:

+

  柜面扫码支付模块为营业厅提供便捷的扫码收款功能,与SYS-009支付系统集成,实现线下支付的数字化处理。

+

核心功能:

+
    +
  1. 扫码支付流程 +
      +
    • 收费二维码生成
    • +
    • 扫码支付处理
    • +
    • 支付结果确认
    • +
    • 票据关联打印
    • +
  2. +
  3. 收款管理 +
      +
    • 收款金额确认
    • +
    • 收款方式选择
    • +
    • 收款状态跟踪
    • +
    • 收款异常处理
    • +
  4. +
  5. 票据关联 +
      +
    • 缴费凭证生成
    • +
    • 发票自动开具
    • +
    • 收据打印输出
    • +
    • 票据存档管理
    • +
  6. +
  7. 结果回传 +
      +
    • 支付状态同步
    • +
    • 账务数据回传
    • +
    • 营业员确认
    • +
    • 客户通知发送
    • +
  8. +
+

技术实现: - 与SYS-009支付系统深度集成 - +二维码动态生成与管理 - POS机硬件设备对接

+

+

6 子系统3设计: 手机抄表APP

+

6.1 任务概述

+

  手机抄表APP为抄表员、外勤人员提供移动作业工具,支持离线操作,通过调用外部摄像表AI系统实现抄表读数自动识别,提升现场工作效率。

+

设计目标:

+
    +
  • 实现移动化抄表作业,提高工作效率
  • +
  • 支持离线作业,确保在无网络环境下正常工作
  • +
  • 构建完整的工单闭环处理流程
  • +
  • 提供直观友好的移动端用户体验
  • +
+

功能范围:

+
    +
  • 登录认证:机构编号、用户名密码认证、自动登录
  • +
  • 首页搜索:多维度搜索、最近搜索记录、抄表任务
  • +
  • 采集任务管理:任务列表管理、批量下载、单户采集
  • +
  • 现场上报:问题上报(由SYS-005工单系统统一受理与派发)
  • +
  • 个人设置:个人信息管理、系统设置维护
  • +
+

核心业务流程:   任务下载 → 现场抄表 → 问题上报 → +工单处理 → 数据上传 → 结果同步

+

6.2 设计概述

+

6.2.1 总体约束

+

技术约束:

+
    +
  • 基于Spring Boot微服务架构
  • +
  • 采用条码/二维码技术进行水表标识
  • +
  • 支持RFID技术的水表管理
  • +
  • 遵循水表行业标准和规范
  • +
+

性能约束:

+
    +
  • 支持100万+水表档案管理
  • +
  • 库存操作响应时间≤1秒
  • +
  • 支持并发库存操作≥50个
  • +
  • 盘点效率≥1000个/小时
  • +
+

安全约束:

+
    +
  • 水表资产数据加密存储
  • +
  • 关键操作审批流程
  • +
  • 完整的操作审计日志
  • +
  • 防止水表资产丢失
  • +
+

6.2.2 子系统外部接口

+

接口设计说明:

+

  手机抄表APP系统作为移动端现场作业工具,需要与营收业务系统、工单管理系统保持数据同步。所有接口均采用HTTP/REST协议,支持离线缓存和在线同步模式,确保现场作业的连续性和数据一致性。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-MOBILE-001任务下载接口下载抄表任务与客户信息手机抄表APPHTTP/REST抄表员ID、任务日期范围任务列表、客户信息、水表信息
IF-MOBILE-002抄表数据上传接口上传抄表数据与现场图片手机抄表APPHTTP/REST抄表记录、现场图片、GPS位置上传状态、数据校验结果
IF-MOBILE-003工单接收接口接收工单任务工单管理系统HTTP/REST工单ID、工单类型、派发信息接收确认、预计处理时间
IF-MOBILE-004工单回填接口回填处理结果与附件手机抄表APPHTTP/REST工单ID、处理结果、现场图片回填状态、审核结果
IF-MOBILE-005离线同步接口离线数据同步手机抄表APPHTTP/REST离线数据包、时间戳同步状态、冲突处理结果
+

6.2.3 设计方案概述

+

架构设计:

+

  端云协同架构,APP端提供离线能力(本地缓存与任务包),在线时通过增量同步接口与服务端完成任务下载、数据上传与工单回填,确保弱网环境可用。

+

关键技术:

+
    +
  • 本地缓存与数据加密存储、断点续传
  • +
  • 条码/二维码识别,拍照取证
  • +
  • 任务包增量同步与冲突处理
  • +
+

6.3 子系统架构设计

+

  手机抄表APP采用原生移动应用架构,支持Android平台部署。系统采用端云协同模式,APP端具备强大的离线工作能力,通过本地存储任务数据和抄表记录,支持弱网环境下的连续作业。

+
graph TB
+    subgraph "手机抄表APP"
+        Login[登录认证]
+        Home[首页/搜索]
+        Task[采集任务]
+        Report[现场上报]
+        Sync[数据同步]
+        Settings[个人与设置]
+    end
+
+    subgraph "服务端"
+        AUTH[统一平台]
+        REV[营收业务系统]
+        WO[工单管理系统]
+    end
+
+    Login --> AUTH
+    Home --> REV
+    Task --> REV
+    Report --> WO
+    Sync <--> REV
+    WO -.-> Task
+
+

6.4 模块定义

+

6.4.1 模块列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称(标识)功能描述开发方式
MOBILE-001登录认证机构编号、用户名/密码、自动登录、令牌管理自行开发
MOBILE-002首页搜索多维度搜索、最近记录、任务快捷入口自行开发
MOBILE-003采集任务管理任务列表、批量下载、单户采集、调用外部AI识别、读数校验自行开发
MOBILE-004现场上报问题上报、拍照取证、定位信息、异常标记自行开发
MOBILE-005个人与设置个人资料、偏好设置、缓存管理、安全退出自行开发
MOBILE-006数据同步任务包增量同步、离线数据包上传、冲突处理自行开发
+

6.4.2 模块间关系

+
graph TD
+    subgraph "手机抄表APP模块关系"
+        A[MOBILE-001<br/>登录认证]
+        B[MOBILE-002<br/>首页搜索]
+        C[MOBILE-003<br/>采集任务管理]
+        D[MOBILE-004<br/>现场上报]
+        E[MOBILE-005<br/>个人与设置]
+        F[MOBILE-006<br/>数据同步]
+    end
+    
+    subgraph "外部系统"
+        AI[摄像表AI系统<br/>(外部服务)]
+    end
+    
+    A -->|认证通过| C
+    B -->|搜索定位| C
+    C -.->|API调用| AI
+    AI -.->|识别结果| C
+    C -->|任务数据| F
+    D -->|上报数据| F
+    E -.->|配置同步| F
+    F -->|数据上传| UP[统一平台]
+    F -->|任务下载| CS[营收业务系统]
+    
+    %% 样式定义
+    classDef coreModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef syncModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef externalModule fill:#fff3e0,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5
+    
+    class A,B,C,D coreModule
+    class E,F syncModule
+    class AI externalModule
+
+

6.4.3 模块描述

+

6.4.3.1 MOBILE-001: 登录认证

+
    +
  • 机构编号+用户名/密码登录
  • +
  • 自动登录选项
  • +
  • 登录问题客服支持
  • +
+

6.4.3.2 MOBILE-002: 首页搜索

+
    +
  • 户号/户名/地址/钢印号/手机号搜索
  • +
  • 最近搜索记录展示
  • +
  • 抄表任务列表
  • +
  • 搜索结果实时展示
  • +
+

6.4.3.3 MOBILE-003: +采集任务管理

+
    +
  • 任务列表与批量下载
  • +
  • 单户采集详情页
  • +
  • 定位/NFC/扫码三种采集方式
  • +
  • 上一户/下一户导航
  • +
+

6.4.3.4 MOBILE-004: 现场上报

+
    +
  • 换表工单处理
  • +
  • 复水工单确认
  • +
  • 稽查任务管理
  • +
  • 问题上报功能
  • +
  • 图片/视频附件上传
  • +
+

6.4.3.5 MOBILE-005: 个人与设置

+
    +
  • 个人信息查看与修改
  • +
  • 密码修改与退出登录
  • +
  • 日志上传与清理缓存
  • +
  • 异常水量预警设置
  • +
  • 数据库备份
  • +
+

6.4.3.6 MOBILE-006: 数据同步

+
    +
  • 增量任务同步
  • +
  • 离线包上传
  • +
  • 断点续传
  • +
  • 冲突解决
  • +
+

+

7 子系统4设计: 微网厅系统

+

7.1 任务概述

+

  微网厅系统(SYS-004)基于微信公众号平台开发,为客户提供便民的自助服务平台。系统支持账户绑定、账单查询、在线缴费、电子发票、营业网点查询和各类业务办理等功能。通过微信生态为用户提供7×24小时不间断的自助服务,显著提升客户服务体验。

+

7.2 设计概述

+

7.2.1 总体约束

+

技术约束

+
    +
  • 基于微信公众号开发框架
  • +
  • 遵循微信开发规范和接口限制
  • +
  • 采用响应式设计,适配不同移动设备
  • +
  • 支持微信支付集成
  • +
+

安全约束

+
    +
  • 严格的用户身份验证机制
  • +
  • 敏感数据加密传输和存储
  • +
  • 符合微信平台安全规范
  • +
  • 防范常见Web安全威胁
  • +
+

业务约束

+
    +
  • 必须与营收业务系统实时数据同步
  • +
  • 支持多账户绑定管理
  • +
  • 提供完整的业务流程闭环
  • +
+

7.2.2 子系统外部接口

+

接口设计说明:

+

  微网厅系统基于微信公众号平台,为用户提供便捷的水务服务。系统与微信平台、营收业务系统、发票服务、支付系统等多个外部系统进行集成,支持账户绑定、在线查询、移动缴费、电子发票、业务申请等全流程服务。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-WECHAT-001微信授权登录接口通过微信OAuth2.0实现用户授权登录微网厅系统HTTP/REST微信授权码、AppID、AppSecret用户OpenID、访问令牌、用户基本信息
IF-WECHAT-002微信支付接口调用微信支付完成在线缴费微网厅系统HTTP/REST订单信息、支付金额、用户OpenID预支付交易会话标识、支付结果
IF-WECHAT-003微信模板消息接口推送缴费成功、账单提醒等消息消息服务系统HTTP/REST模板ID、用户OpenID、消息数据消息推送状态、消息ID
IF-WECHAT-004微信JS-SDK接口调用微信JS-SDK实现前端功能微网厅前端HTTP/REST页面URL、时间戳、随机字符串JS-SDK配置信息、签名
IF-WECHAT-005客户信息查询接口查询绑定客户的基本信息微网厅系统HTTP/REST客户编号/手机号/OpenID客户详细信息、绑定状态
IF-WECHAT-006账单信息查询接口查询客户账单和欠费信息微网厅系统HTTP/REST客户编号、查询月份范围账单明细、欠费金额、阶梯用量
IF-WECHAT-007缴费处理接口处理微信端发起的缴费业务微网厅系统HTTP/REST客户编号、缴费金额、支付方式缴费订单号、支付状态、发票信息
IF-WECHAT-008业务申请提交接口提交报装、过户等业务申请微网厅系统HTTP/REST申请类型、客户资料、申请材料申请单号、预审结果、处理时限
IF-WECHAT-009电子发票申请接口申请开具电子发票微网厅系统HTTP/REST缴费订单号、发票抬头信息电子发票PDF、发票代码和号码
IF-WECHAT-010营业网点查询接口查询就近营业网点信息微网厅系统HTTP/REST地理位置坐标、搜索半径网点列表、营业时间、联系方式
IF-WECHAT-011账户绑定验证接口验证客户身份并绑定微信账户微网厅系统HTTP/REST客户编号、身份证号、手机号码绑定验证结果、绑定关系ID
IF-WECHAT-012用水历史查询接口查询客户用水历史记录微网厅系统HTTP/REST客户编号、查询时间段用水量明细、趋势分析数据
+

7.2.3 设计方案概述

+

  采用微信公众号H5页面开发模式,前端使用响应式Web技术,后端基于Spring +Boot微服务架构。通过微信OAuth2.0实现用户授权,通过唯一标识实现账户绑定,确保数据安全和用户体验。

+

7.3 子系统架构设计

+

  微网厅系统基于微信公众号生态,采用前后端分离架构。前端采用Vue.js框架开发响应式H5页面,适配微信浏览器环境;后端采用Spring +Boot微服务架构,通过API Gateway统一接口管理。

+
graph TB
+    subgraph "微信平台"
+        WeChat[微信公众号]
+        WeMsg[微信消息]
+    end
+    
+    subgraph "微网厅系统"
+        Frontend[前端H5页面]
+        Backend[后端服务]
+        Cache[缓存层]
+    end
+    
+    subgraph "营收业务系统"
+        Customer[客户管理]
+        Billing[账务处理]
+        Payment[收费管理]
+        Service[客户服务]
+    end
+    
+    WeChat --> Frontend
+    Frontend --> Backend
+    Backend --> Cache
+    Backend --> Customer
+    Backend --> Billing
+    Backend --> Payment
+    Backend --> Service
+    Backend -.->|支付调用| PAY_SYS[支付与结算(SYS-009)]
+    Backend --> WeMsg
+
+

7.4 模块定义

+

7.4.1 模块列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
WECHAT-001账户绑定管理微信授权、账户绑定与解绑、多账户管理自行开发
WECHAT-002信息查询服务账单查询、用水历史、缴费记录、停水公告自行开发
WECHAT-003在线缴费服务快捷缴费、充值服务、多种支付方式自行开发
WECHAT-004电子发票服务发票查看、发票推送、电子发票管理自行开发
WECHAT-005营业网点服务网点查询、地图导航、距离计算自行开发
WECHAT-006业务办理服务联系方式变更、开票方式变更、更名业务、过户业务、一户多人口申请、水价变更、低保申请、换表申请、自主抄表自行开发
WECHAT-007账户流水账户历史缴费流水查询与导出自行开发
WECHAT-008账号与机构管理切换机构、添加/解绑客户、设置默认客户、客户详情自行开发
+

7.4.2 模块间关系

+
graph TD
+    subgraph "微网厅系统模块关系"
+        A[WECHAT-001<br/>账户绑定管理]
+        B[WECHAT-002<br/>信息查询服务]
+        C[WECHAT-003<br/>在线缴费服务]
+        D[WECHAT-004<br/>电子发票服务]
+        E[WECHAT-005<br/>营业网点服务]
+        F[WECHAT-006<br/>业务办理服务]
+        G[WECHAT-007<br/>账户流水]
+        H[WECHAT-008<br/>账号与机构管理]
+    end
+    
+    A -->|身份验证| B
+    A -->|授权支付| C
+    A -->|授权开票| D
+    A -->|位置服务| E
+    A -->|业务授权| F
+    A -->|流水授权| G
+    A -->|账号管理| H
+    
+    B -.->|查询后开票| D
+    C -.->|支付后开票| D
+    F -.->|业务查询| B
+    F -.->|业务缴费| C
+    
+    %% 样式定义
+    classDef coreService fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef supportService fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef bindingModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    
+    class A bindingModule
+    class B,C,D,F coreService
+    class E,G,H supportService
+
+

7.4.3 模块描述

+

7.4.3.1 WECHAT-001: +账户绑定管理

+
    +
  • 微信授权与快捷登录
  • +
  • 手机号自动绑定
  • +
  • 客户编号手工绑定
  • +
  • 多客户绑定管理
  • +
  • 默认客户设置
  • +
+

7.4.3.2 WECHAT-002: +信息查询服务

+
    +
  • 首页基本信息展示
  • +
  • 客户详细信息查看
  • +
  • 历史账单查询(近12个月)
  • +
  • 用水分析曲线图
  • +
  • 客户切换功能
  • +
+

7.4.3.3 WECHAT-003: +在线缴费服务

+
    +
  • 快捷缴费功能
  • +
  • 充值缴费服务
  • +
  • 微信支付集成
  • +
  • 缴费确认页面
  • +
  • 缴费结果通知
  • +
+

7.4.3.4 WECHAT-004: +电子发票服务

+
    +
  • 电子发票查看
  • +
  • 发票邮箱推送
  • +
  • 发票图片保存
  • +
  • 发票开具申请
  • +
+

7.4.3.5 WECHAT-005: +营业网点服务

+
    +
  • 营业网点列表展示
  • +
  • 地图模式展示
  • +
  • 距离排序显示
  • +
  • 网点详细信息
  • +
+

7.4.3.6 WECHAT-006: +业务办理服务

+
    +
  • 联系方式变更
  • +
  • 开票方式变更
  • +
  • 更名业务
  • +
  • 过户业务
  • +
  • 一户多人口申请
  • +
  • 水价变更
  • +
  • 低保申请
  • +
  • 换表申请
  • +
  • 自主抄表
  • +
  • 附件上传(最多9张)
  • +
  • 业务进度查询
  • +
+

7.4.3.7 WECHAT-007: 账户流水

+
    +
  • 历史缴费流水查询
  • +
  • 缴费汇总情况
  • +
  • 流水详细信息展示
  • +
+

7.4.3.8 WECHAT-008: +账号与机构管理

+
    +
  • 用水机构切换
  • +
  • 添加绑定客户
  • +
  • 解除绑定客户
  • +
  • 设置默认客户
  • +
  • 查看客户详情
  • +
+

业务办理流程

+
flowchart TD
+    Start([用户发起业务申请]) --> Select[选择业务类型]
+    Select --> Fill[填写申请信息]
+    Fill --> Upload[上传相关材料]
+    Upload --> Submit[提交申请]
+    Submit --> Review[系统审核]
+    Review --> Approve{审核结果}
+    Approve -->|通过| Process[业务处理]
+    Approve -->|退回| Modify[修改申请]
+    Modify --> Submit
+    Process --> Complete[办理完成]
+    Complete --> Notify[结果通知]
+    Notify --> End([结束])
+
+

+

8 子系统5设计: 工单管理系统

+

8.1 任务概述

+

  工单管理系统(SYS-005)负责全业务工单统一受理、创建、派发、处理、验收与归档,覆盖营收、表务、报装、客户服务等场景,提供统一流程引擎与监控预警能力。

+

8.2 设计概述

+

8.2.1 总体约束

+
    +
  • 流程统一:所有工单遵循统一的生命周期与态状态机
  • +
  • 实时可观测:状态监控、超时预警、绩效统计
  • +
  • 可扩展:支持新增工单类型与流程编排
  • +
+

8.2.2 子系统外部接口

+

  工单管理系统作为统一的工单处理平台,接收来自营收、表务、报装、微网厅、APP等各业务系统的工单需求,实现工单全生命周期管理。系统提供标准化的工单接口,支持多种工单类型的创建、派发、处理、跟踪全流程管理。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-WO-001工单创建接口创建各类业务工单营收/表务/报装/微网厅/APPHTTP/REST工单类型、客户信息、问题描述、紧急程度工单编号、预计处理时间、派发状态
IF-WO-002工单派发接口向处理人/APP派发任务工单管理系统HTTP/REST工单ID、处理人员、预期完成时间派发结果、接收确认状态
IF-WO-003工单回填接口回填处理结果与附件APP/各业务系统HTTP/REST工单ID、处理结果、现场图片、完成时间回填状态、审核结果、客户满意度
IF-WO-004工单查询接口查询工单状态和处理轨迹各业务系统/客户端HTTP/REST工单编号/客户编号、查询条件工单状态、处理进度、历史轨迹
IF-WO-005工单统计接口工单处理绩效统计分析管理后台HTTP/REST统计维度、时间范围、部门筛选统计报表、效率分析、排名数据
IF-WO-006工单预警接口超时工单监控预警监控系统HTTP/REST预警规则、时间阈值预警工单列表、通知配置
+

8.2.3 设计方案概述

+

  架构采用”工单中心 + 流程编排 + 监控预警 + +绩效统计”的分层设计,提供统一API网关对接各业务系统,并通过可配置流程实现多类型工单的快速上线。

+

8.3 子系统架构设计

+

  工单管理系统采用微服务分层架构,通过统一工单中心集中管理各类业务工单,配置化流程引擎支持不同工单类型的个性化流转,实时监控预警确保服务质量,绩效统计提供数据分析支撑。

+
graph TB
+    subgraph "工单管理系统"
+        WO_CENTER[统一工单中心]
+        FLOW[流程引擎]
+        MON[监控预警]
+        STAT[绩效统计]
+    end
+
+    subgraph "协作系统"
+        REV[营收业务系统]
+        METER[表务管理系统]
+        INSTALL[报装业务系统]
+        APP[手机抄表APP]
+        WECHAT[微网厅]
+    end
+
+    REV -.->|业务异常/申请| WO_CENTER
+    METER -.->|换表申请| WO_CENTER
+    INSTALL -.->|报装派单| WO_CENTER
+    WECHAT -.->|客户服务申请| WO_CENTER
+    APP -.->|问题上报/结果回填| WO_CENTER
+    
+    WO_CENTER -.-> FLOW
+    WO_CENTER -.-> MON
+    WO_CENTER -.-> STAT
+    WO_CENTER -.->|派发任务| APP
+
+

8.4 模块定义

+

8.4.1 模块列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
WORK-001工单中心统一受理、路由、分派、跟踪自行开发
WORK-002流程引擎节点编排、条件路由、并行网关自行开发
WORK-003监控预警超时/积压/异常预警、看板自行开发
WORK-004绩效统计人员/环节时长、SLA达成率自行开发
+

8.4.2 模块间关系

+
graph TD
+    subgraph "工单管理系统模块关系"
+        A[WORK-001<br/>工单中心]
+        B[WORK-002<br/>流程引擎]
+        C[WORK-003<br/>监控预警]
+        D[WORK-004<br/>绩效统计]
+    end
+    
+    A -->|流程调度| B
+    A -->|状态监控| C
+    A -->|数据统计| D
+    B -.->|流程状态| C
+    C -.->|监控数据| D
+    
+    %% 样式定义
+    classDef coreModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef processModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef monitorModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    
+    class A coreModule
+    class B processModule
+    class C,D monitorModule
+
+

8.4.3 模块描述

+

8.4.3.1 WORK-001: 工单中心

+
    +
  • 统一工单入口与受理管理
  • +
  • 工单分类与优先级策略配置
  • +
  • 智能路由与自动分派机制
  • +
  • 工单全生命周期状态跟踪
  • +
+

8.4.3.2 WORK-002: 流程引擎

+
    +
  • 可视化流程编排与配置
  • +
  • 条件路由与并行互斥网关
  • +
  • 子流程支持与流程嵌套
  • +
  • 回退重审与流程回滚机制
  • +
+

8.4.3.3 WORK-003: 监控预警

+
    +
  • 实时工单状态看板展示
  • +
  • 超时积压智能预警
  • +
  • 异常工单自动拦截识别
  • +
  • 多渠道预警通知推送
  • +
+

8.4.3.4 WORK-004: 绩效统计

+
    +
  • 处理人员时长统计分析
  • +
  • 各环节效率达成率统计
  • +
  • SLA达成率考核指标
  • +
  • 绩效报表自动生成导出
  • +
+

+

9 子系统6设计: 表务管理系统

+

9.1 任务概述

+

  表务管理系统(SYS-006)聚焦设备档案和表务全生命周期管理,面向换表等业务提供资源保障。

+

9.2 设计概述

+

9.2.1 总体约束

+
    +
  • 数据规范化:设备参数标准化,避免冗余与不一致
  • +
  • 状态可追溯:设备全生命周期状态流转与变更留痕
  • +
  • 库存实时性:库存数据实时同步,支持多仓库管理
  • +
+

9.2.2 子系统外部接口

+

  表务管理系统负责水表资产的全生命周期管理,包括基础参数配置、仓库库存管理、设备档案管理。系统与工单管理、营收业务等系统协作,支持水表领用、更换、维修、报废等全流程作业,确保水表资产的准确管理和有效利用。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-METER-001库存查询接口查询仓库库存状态和预警信息工单/营收/报装系统HTTP/REST仓库编号、水表型号、库存状态库存明细、预警状态、可用数量
IF-METER-002领用出库接口支持换表/施工水表领用出库工单管理系统HTTP/REST领用单号、水表型号、领用数量、领用人出库状态、库存余量、领用凭证
IF-METER-003档案查询接口查询水表设备档案信息营收/工单/报装系统HTTP/REST水表编号、客户编号、查询类型设备档案、安装历史、维修记录
IF-METER-004集抄数据接收接口接收远传抄表、异常告警并同步状态物联网平台HTTP/REST设备标识、采集时间、读数值、告警信息接收结果、校验状态、异常标记
IF-METER-005资产调拨接口仓库间水表调拨转移表务管理系统HTTP/REST调出仓库、调入仓库、调拨清单调拨状态、库存变更结果
IF-METER-006盘点核实接口定期盘点和库存核实表务管理系统HTTP/REST盘点计划、盘点范围、盘点人员盘点结果、差异分析、调整建议
+

9.2.3 设计方案概述

+

  以”基础参数-仓库库存-设备档案”三层模型实现资产全生命周期管理;通过与工单系统联动完成领用/回填闭环,支持库存预警与追溯。

+

9.3 子系统架构设计

+

  表务管理系统采用分层数据架构,通过基础参数管理建立水表标准规范,通过仓库库存管理实现设备资源调配,通过设备档案管理实现全生命周期跟踪。系统与工单管理系统深度集成,形成”需求-领用-安装-回收”的完整闭环。 +  周转率、维修频次等统计分析

+
graph TB
+    subgraph "表务管理系统"
+        BASE[基础参数]
+        WH[仓库与库存]
+        DOC[设备档案]
+    end
+
+    WO[工单系统] -.->|领用/回填| WH
+    REV[营收系统] -.->|档案/库存状态| DOC
+
+

9.4 模块定义

+

9.4.1 模块列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
METER-001表务基础管理厂家/型号/口径/量程等基础参数自行开发
METER-002仓库与库存管理入库/出库/盘点/调拨/预警自行开发
METER-003设备档案管理档案建档/状态管理/追溯自行开发
+

9.4.2 模块间关系

+
graph TD
+    subgraph "表务管理系统模块关系"
+        A[METER-001<br/>表务基础管理]
+        B[METER-002<br/>仓库与库存管理]
+        C[METER-003<br/>设备档案管理]
+    end
+    
+    A -->|基础参数| B
+    B -->|库存状态| C
+    C -.->|规格验证| A
+    
+    %% 样式定义
+    classDef baseModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef warehouseModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef docModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    
+    class A baseModule
+    class B warehouseModule
+    class C docModule
+
+

9.4.3 模块描述

+

9.4.3.1 METER-001: +表务基础管理

+
    +
  • 厂家型号口径量程等基础参数标准化
  • +
  • 检定周期与技术规范管理
  • +
  • 设备分类与属性字典维护
  • +
  • 基础参数验证与规范校验
  • +
+

9.4.3.2 METER-002: +仓库与库存管理

+
    +
  • 入库出库盘点调拨全流程管理
  • +
  • 库存预警与安全库存监控
  • +
  • 与工单系统联动领用回填
  • +
  • 多仓库统一管理与库存同步
  • +
+

9.4.3.3 METER-003: +设备档案管理

+
    +
  • 唯一设备电子档案建立
  • +
  • 设备全生命周期状态流转
  • +
  • 批次管理与质检记录追溯
  • +
  • 档案查询与历史轨迹记录
  • +
+

+

10 子系统7设计: 报装业务系统

+

10.1 任务概述

+

  报装业务系统(SYS-007)覆盖从申请、踏勘、设计、施工到验收通水的全流程,支持调用泛微进行合同签订和电子签章,并与工单系统协作完成现场派工与过程留痕。

+

10.2 设计概述

+

10.2.1 设计方案概述

+
    +
  • 采用阶段性里程碑管控(申请-踏勘-施工-验收-通水),以工单驱动现场作业,形成资料全流程留痕与竣工归档。
  • +
  • 资料签章对接:与外部CA电子签章系统对接,完成报装申请材料、施工/验收文书的签署、验章与存证,签章回执异步回传。
  • +
+

10.2.2 子系统外部接口

+

  报装业务系统负责新用户报装全流程管理,从申请受理到通水验收的全生命周期业务处理。系统与微网厅、营收系统、工单管理、表务管理、CA电子签章等外部系统协作,实现报装业务的规范化、数字化管理和全流程追溯。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-INST-001报装申请接口提交报装申请信息与材料微网厅/营收系统HTTP/REST申请人信息、用水地址、申请材料、联系方式申请单号、预审结果、处理时限
IF-INST-002踏勘派工接口现场踏勘任务派发工单管理系统HTTP/REST报装单号、踏勘要求、预约时间派工结果、踏勘人员、预计完成时间
IF-INST-003签章接口调用CA系统进行电子签章CA电子签章系统HTTP/REST合同文档、签章类型、签章方信息签章状态、签章文档、存证信息
IF-INST-004签章回执接口接收CA系统签章完成回执CA电子签章系统HTTP/REST签章任务ID、签章结果、时间戳接收确认、存档状态
IF-INST-005报装归档接口归档申请、合同、验收与签章回执资料报装系统HTTP/REST报装单号、资料清单、签章回执、验收文档归档状态、档案编号、存储位置
IF-INST-006验收通水接口验收合格并开通供水营收业务系统HTTP/REST报装单号、验收结果、水表信息开户结果、客户编号、通水状态
IF-INST-007档案归档接口竣工档案归档管理档案管理系统HTTP/REST报装单号、竣工资料、验收文档归档状态、档案编号、存储位置
+

10.2.3 子系统架构设计

+

  报装业务系统采用阶段式流程架构,将复杂的报装业务分解为申请受理、现场踏勘、施工管理、验收通水四个核心阶段,每个阶段具有明确的输入输出和验收标准。系统与CA电子签章系统深度集成,实现合同文档的电子化签署和存证。

+
graph TB
+    subgraph "报装业务系统"
+        APPLY[申请受理]
+        SURVEY[现场踏勘]
+        BUILD[施工管理]
+        ACCEPT[验收通水]
+        ARCH[资料归档]
+    end
+
+    WECHAT[微网厅] -.->|报装申请| APPLY
+    APPLY -.-> SURVEY -.-> BUILD -.-> ACCEPT -.-> ARCH
+    INST_WO[工单系统] -.->|派工/回填| SURVEY
+    INST_WO -.->|派工/回填| BUILD
+    CA[CA电子签章]
+    ARCH -.->|签章/验章/存证| CA
+
+

10.3 模块定义

+

10.3.1 模块列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
INST-001报装流程管理端到端阶段流转,里程碑控制自行开发
INST-002工程管理进度/资源/质量/安全管理自行开发
INST-003档案管理资料归档、过程留痕、竣工档案自行开发
+

10.3.2 模块间关系

+
graph TD
+    subgraph "报装业务系统模块关系"
+        A[INST-001<br/>报装流程管理]
+        B[INST-002<br/>工程管理]
+        C[INST-003<br/>档案管理]
+    end
+    
+    A -->|流程驱动| B
+    B -->|工程资料| C
+    C -.->|档案反馈| A
+    
+    %% 样式定义
+    classDef flowModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef projectModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef archiveModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    
+    class A flowModule
+    class B projectModule
+    class C archiveModule
+
+

10.3.3 模块描述

+

10.3.3.1 INST-001: +报装流程管理

+

功能概述:

+

  报装流程管理模块负责端到端的报装业务流程控制,涵盖从申请受理到资料归档的完整生命周期管理。

+

核心功能:

+
    +
  1. 申请受理 +
      +
    • 申请类型识别(单位/个人、新建户表/总表/旧城改造)
    • +
    • 工程信息录入(工程名称、地址、经办人信息)
    • +
    • 资料上传管理(身份证、营业执照、房产证等)
    • +
    • 工程编号自动生成
    • +
    • 申请暂存与提交控制
    • +
  2. +
  3. 踏勘管理 +
      +
    • 现场勘查任务分派
    • +
    • 勘查结果录入(用水性质、水表口径、数量、预算总价)
    • +
    • 用户信息批量录入
    • +
    • 设计图纸管理
    • +
    • 勘查意见与审核
    • +
  4. +
  5. 审批流转 +
      +
    • 多级审批流程控制
    • +
    • 审批意见记录
    • +
    • 流程回退机制
    • +
    • 审批状态跟踪
    • +
  6. +
  7. 合同与缴费 +
      +
    • OA系统合同审批对接
    • +
    • 分批缴费支持
    • +
    • 收据打印管理
    • +
    • 合同签订确认
    • +
  8. +
+

10.3.3.2 INST-002: 工程管理

+

功能概述:

+

  工程管理模块负责报装工程的施工全过程管理,包括派工、安装、验收等关键环节的控制与监督。

+

核心功能:

+
    +
  1. 工程派工 +
      +
    • 施工部门选择与派遣
    • +
    • 派工任务生成
    • +
    • 施工人员分配
    • +
    • 与SYS-005工单系统协作
    • +
  2. +
  3. 工程安装 +
      +
    • 仓库领表管理(与表务系统对接)
    • +
    • 现场安装信息录入
    • +
    • 水表信息关联(条形码、钢印号、厂家、型号)
    • +
    • 施工过程记录(施工负责人、时间、描述)
    • +
    • 安装质量控制
    • +
  4. +
  5. 工程验收 +
      +
    • 联合竣工验收管理
    • +
    • 验收人员分配(抄表员、工程部门)
    • +
    • 验收结果录入(合格/不合格)
    • +
    • 验收情况详细记录
    • +
    • 表号等关键信息确认
    • +
  6. +
  7. 进度监控 +
      +
    • 工程进度实时跟踪
    • +
    • 关键节点里程碑控制
    • +
    • 延期预警与通知
    • +
    • 施工安全管理
    • +
  8. +
+

10.3.3.3 INST-003: 档案管理

+

功能概述:

+

  档案管理模块负责报装业务全过程的资料归档、电子签章和竣工档案管理,确保业务合规性和可追溯性。

+

核心功能:

+
    +
  1. 资料归档 +
      +
    • 报装申请资料电子化存储
    • +
    • 踏勘设计图纸归档
    • +
    • 施工安装记录归档
    • +
    • 验收文档归档
    • +
    • 合同资料归档
    • +
  2. +
  3. 电子签章 +
      +
    • CA电子签章系统对接
    • +
    • 申请材料电子签署
    • +
    • 施工验收文书签章
    • +
    • 签章验证与存证
    • +
    • 签章回执异步处理
    • +
  4. +
  5. 竣工档案 +
      +
    • 竣工资料整理
    • +
    • 档案完整性检查
    • +
    • 移交确认管理
    • +
    • 与营收系统立户对接
    • +
    • 档案查询与检索
    • +
  6. +
  7. 材料审核 +
      +
    • 报装材料核对
    • +
    • 资料完整性验证
    • +
    • 审核意见记录
    • +
    • 补充资料管理
    • +
  8. +
+

+

11 子系统8设计: 发票服务子系统

+

11.1 任务概述

+

  发票服务子系统(SYS-008)定位为”基础服务层”的统一开票能力中心,通过统一开票网关与供应商适配器屏蔽不同厂商差异,当前优先对接”航天信息”,预留”博思”等供应商接入能力。

+

11.2 设计概述

+

11.2.1 总体约束

+
    +
  • 统一入口:提供统一的开票、作废/红冲、查询能力
  • +
  • 供应商无关:采用适配器模式屏蔽供应商差异
  • +
  • 合规可靠:签章/存证、回执落库、审计留痕
  • +
+

11.2.2 设计方案概述

+
    +
  • 架构采用”统一开票网关 + 供应商适配器 + +回执处理/存证”的三层模型;对上通过REST接口供营收业务与微网厅调用,对下通过供应商SDK/HTTP对接航天(现阶段)与其他供应商。
  • +
+

11.2.3 子系统外部接口

+

  发票服务子系统作为基础服务层的统一开票能力中心,为上游业务系统提供标准化的发票服务。系统采用适配器模式,支持多供应商接入,当前优先对接航天信息,预留博思等其他供应商接入能力,确保发票业务的合规性和可扩展性。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-INV-001统一开票接口统一受理电子发票开具请求营收业务系统/微网厅HTTP/REST开票信息、购买方信息、商品明细、税额发票申请ID、开票状态、预计完成时间
IF-INV-002作废红冲接口发票作废和红字发票处理营收业务系统HTTP/REST原发票号码、作废/红冲原因、操作类型处理结果、新发票信息、作废状态
IF-INV-003发票查询接口查询发票状态和下载链接营收系统/微网厅/客户端HTTP/REST发票代码、发票号码、查询类型发票状态、PDF下载链接、发票详情
IF-INV-004回执推送接口接收供应商发票处理回执航天信息/博思等供应商HTTP/REST回执ID、处理结果、发票文件、时间戳接收确认、存储状态、通知结果
IF-INV-005供应商切换接口供应商服务切换和负载均衡发票服务网关HTTP/REST供应商标识、切换原因、备用方案切换状态、新供应商信息、影响评估
IF-INV-006存证签章接口发票电子存证和数字签章存证签章模块HTTP/REST发票文件、签章类型、存证要求存证凭证、签章状态、法律效力确认
+

11.3 子系统架构设计

+

  发票服务子系统采用统一网关和适配器模式架构,通过统一开票网关屏蔽不同供应商的接口差异,供应商适配器实现具体厂商的协议转换,回执处理模块确保业务闭环,存证签章模块保障发票的法律效力。

+
graph TB
+  subgraph "发票服务子系统"
+    GW[统一开票网关]
+    ADP[供应商适配器]
+    RCPT[回执处理]
+    EVID[存证与签章]
+  end
+
+  subgraph "上游系统"
+    REV[营收业务系统]
+    WECHAT[微网厅]
+  end
+
+  subgraph "供应商"
+    HT[航天信息]
+    BOS[博思/预留]
+  end
+
+  REV -.->|INV-001/002/003| GW
+  WECHAT -.->|发票查询/下载| GW
+  GW --> ADP --> HT
+  ADP -.-> BOS
+  HT -.-> RCPT --> EVID
+
+

11.4 模块定义

+

11.4.1 模块列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
INV-001统一开票网关统一鉴权、参数校验、基础路由自行开发
INV-002供应商适配器航天/博思等供应商协议适配、签名加验签自行开发
INV-003回执处理回执解析、状态机、失败重试、告警通知自行开发
INV-004存证与签章发票PDF/JSON存证、签章与链接生成、合规审计自行开发
+

11.4.2 模块间关系

+
graph TD
+    subgraph "发票服务子系统模块关系"
+        A[INV-001<br/>统一开票网关]
+        B[INV-002<br/>供应商适配器]
+        C[INV-003<br/>回执处理]
+        D[INV-004<br/>存证与签章]
+    end
+    
+    A -->|请求路由| B
+    B -->|供应商回调| C
+    C -->|状态更新| D
+    C -.->|状态回馈| A
+    
+    %% 样式定义
+    classDef gatewayModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef adapterModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef processModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    
+    class A gatewayModule
+    class B adapterModule
+    class C,D processModule
+
+

11.4.3 模块描述

+

11.4.3.1 INV-001: 统一开票网关

+
    +
  • 统一入口鉴权与参数校验
  • +
  • 开票请求幂等控制
  • +
  • 基础路由与负载分发
  • +
  • 供应商简单选择
  • +
+

11.4.3.2 INV-002: 供应商适配器

+
    +
  • 航天信息SDK/HTTP对接
  • +
  • 字段映射与签名验签
    +
  • +
  • 错误码标准化转换
  • +
  • 博思等供应商扩展预留
  • +
+

11.4.3.3 INV-003: 回执处理

+
    +
  • 开票状态回填处理
  • +
  • 失败重试(指数退避策略)
  • +
  • 超时监控与告警
  • +
  • 微网厅消息联动通知
  • +
+

11.4.3.4 INV-004: 存证与签章

+
    +
  • 发票PDF存储管理
  • +
  • 票根JSON数据保存
  • +
  • 数字签章与下载链接
  • +
  • 审计日志与合规留痕
  • +
+

+

12 子系统9设计: +支付与银行结算子系统

+

12.1 任务概述

+

  支付与银行结算子系统(SYS-009)统一承载聚合支付/退款、渠道适配(微信/支付宝/银联聚合)、支付回调验签入账,以及银行实时收费、代扣/托收签约解约、送盘/回盘/对账契约与安全加解密/签名,向上对营收/微网厅等系统提供标准化支付与结算能力。夜间批量代扣、完整回盘状态补偿、对账差异处理与结算确认当前仍按后续完善项管理。

+

12.2 设计概述

+

12.2.1 总体约束

+
    +
  • 多渠道聚合:统一接入微信/支付宝/银联聚合
  • +
  • 统一结算:统一维护批次、回盘、对账和差异语义,完整结算闭环按后续完善项推进
  • +
  • 安全合规:签名/验签、加解密、回调防重放、幂等
  • +
  • 高可用:基础重试补偿机制
  • +
+

12.2.2 设计方案概述

+
    +
  • 采用”统一支付与结算网关 + 渠道/银行适配器 + 回调处理 + 对账处理 + +加解密/签名”的分层;对上REST接口,对下渠道SDK/HTTP与银行HTTP/SFTP对接。
  • +
+

12.2.3 +子系统外部接口(SYS-009)

+

  支付与银行结算子系统作为统一的支付能力中心,为上游业务系统提供聚合支付、银行实时收费、代扣/托收签解约、退款处理、对账管理等支付结算服务。以下接口表表达的是正式设计目标边界,其中聚合支付、实时收费查询/缴费、代扣/托收签解约已具备较明确实现证据;BankWithholding +六条银行入口已形成最小实现态闭环,托收平行链路、对账和完整结算闭环仍按部分实现或后续完善项管理。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-PAY-001统一支付下单接口统一处理各渠道支付下单请求营收系统/微网厅HTTP/REST订单信息、支付方式、支付金额、用户标识预支付订单号、支付参数、二维码
IF-PAY-002统一关单接口订单关闭和撤销处理营收系统/微网厅HTTP/REST订单号、关闭原因、操作类型关单状态、退款信息、处理结果
IF-PAY-003统一退款接口原路退款和部分退款处理营收系统/微网厅HTTP/REST原订单号、退款金额、退款原因退款单号、退款状态、预计到账时间
IF-PAY-004支付回调接口接收渠道支付结果回调微信/支付宝/银联HTTP/REST回调数据、签名、时间戳处理确认、业务更新状态
IF-PAY-005批量代扣送盘接口银行批量代扣文件发送营收业务系统HTTP/REST/SFTP代扣清单、客户签约信息、扣款金额送盘状态、批次号、预计处理时间(BankWithholding +已具备最小实现态闭环;真实文件通道联调仍待补证)
IF-PAY-006批量代扣回盘接口银行代扣结果回盘处理银行系统HTTP/REST/SFTP回盘文件、处理结果、失败原因解析结果、状态更新、异常处理(BankWithholding +已具备最小实现态闭环;真实文件解析与异常补偿仍待补证)
IF-PAY-007批量对账文件接口银行对账文件处理分析银行系统/营收系统HTTP/REST/SFTP对账文件、对账日期、差异规则对账结果、差异明细、调整建议(当前仍按部分实现或后续完善项管理)
IF-PAY-008加解密签名接口支付数据安全处理内部模块调用HTTP/REST待处理数据、加密类型、签名算法处理结果、安全凭证、验证状态
+

12.3 子系统架构设计

+

  支付与银行结算子系统采用统一网关和多适配器架构,通过统一支付网关提供标准化支付接口,渠道适配器处理不同支付渠道的协议差异,银行适配器实现批量代扣和对账功能,回调处理确保支付结果的及时处理,加解密模块保障交易安全。

+
graph TB
+  subgraph "支付与银行结算子系统"
+    GW[统一支付与结算网关]
+    ADP_CH[渠道适配器]
+    ADP_BANK[银行适配器]
+    CB[回调处理]
+    RECON[对账处理]
+    CRYPTO[加解密/签名]
+  end
+
+  subgraph "上游系统"
+    REV[营收业务系统]
+    WECHAT[微网厅]
+  end
+
+  subgraph "外部机构"
+    WX[微信]
+    ALI[支付宝]
+    UPG[银联聚合]
+    BANK[银行]
+  end
+
+  REV -.->|PAY-001/002/003/005/006/007| GW
+  WECHAT -.->|下单/查询| GW
+  GW --> ADP_CH --> WX
+  ADP_CH --> ALI
+  ADP_CH --> UPG
+  GW --> ADP_BANK --> BANK
+  WX -.-> CB
+  ALI -.-> CB
+  UPG -.-> CB
+  ADP_BANK -.-> RECON
+  GW -.-> CRYPTO
+
+

12.4 模块定义

+

12.4.1 模块列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
PAY-001统一支付与结算网关鉴权、参数校验、幂等、基础路由自行开发
PAY-002渠道适配器渠道参数映射、签名/验签、错误码转换自行开发
PAY-003银行适配器协议/文件规范适配、编码转换、SFTP/HTTP自行开发
PAY-004回调处理回调验签、订单入账、补偿重试自行开发
PAY-005批量对账处理对账接收/解析、差错处理、账务回填、报告自行开发
PAY-006加解密/签名SM2/SM4/3DES等算法、密钥管理自行开发
+

12.4.2 模块间关系

+
graph TD
+    subgraph "支付与银行结算子系统模块关系"
+        A[PAY-001<br/>统一支付与结算网关]
+        B[PAY-002<br/>渠道适配器]
+        C[PAY-003<br/>银行适配器]
+        D[PAY-004<br/>回调处理]
+        E[PAY-005<br/>批量对账处理]
+        F[PAY-006<br/>加解密/签名]
+    end
+    
+    A -->|渠道路由| B
+    A -->|银行对接| C
+    B -->|支付回调| D
+    C -->|对账数据| E
+    A -->|安全加密| F
+    
+    B -.->|状态反馈| A
+    C -.->|状态反馈| A
+    D -.->|结果通知| A
+    E -.->|对账结果| A
+    F -.->|密钥服务| A
+    
+    %% 样式定义
+    classDef gatewayModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
+    classDef adapterModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef processModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    classDef securityModule fill:#e8f5e8,stroke:#388e3c,stroke-width:2px
+    
+    class A gatewayModule
+    class B,C adapterModule
+    class D,E processModule
+    class F securityModule
+
+

12.4.3 模块描述

+

12.4.3.1 PAY-001: +统一支付/代扣网关

+
    +
  • 统一入口鉴权与字段校验
  • +
  • 基础保护机制
  • +
  • 幂等键与重放攻击保护
  • +
  • 简单路由与流量分发
  • +
+

12.4.3.2 PAY-002: 渠道适配器

+
    +
  • 微信/支付宝/银联参数适配
  • +
  • 签名规范统一处理
  • +
  • 错误码标准化转换
  • +
  • 渠道响应格式统一
  • +
+

12.4.3.3 PAY-003: 银行适配器

+
    +
  • 银行与第三方支付协议对接
  • +
  • 签名验签与编码转换(GBK/UTF-8)
  • +
  • SFTP/HTTP文件交互处理
  • +
  • 错误码映射与异常处理
  • +
+

12.4.3.4 PAY-004: 回调处理

+
    +
  • 支付回调验签确认
  • +
  • 订单状态同步对齐
  • +
  • 失败重试与异常告警
  • +
  • 回调幂等与去重处理
  • +
+

12.4.3.5 PAY-005: 对账处理

+
    +
  • 银行对账文件定时拉取解析
  • +
  • 差异识别与异常记录
  • +
  • 冲正/补记建议生成
  • +
  • 对账报告与追踪链路告警
  • +
  • 当前阶段按目标能力保留正式设计口径,不直接表述为已形成完整闭环
  • +
+

12.4.3.6 PAY-006: 加解密/签名

+
    +
  • 国密/商密算法支持
  • +
  • 密钥管理与定期轮换
  • +
  • 数据安全传输保障
  • +
+

+

13 子系统10设计: +消息服务子系统

+

13.1 任务概述

+

  消息服务子系统(SYS-010)负责统一消息推送、接收与处理,为各业务子系统提供消息通知服务。

+

设计目标:

+
    +
  • 实现消息的统一推送与接收
  • +
  • 支持多种消息格式和推送方式
  • +
  • 确保消息的及时性和可靠性
  • +
+

功能范围:

+
    +
  • 消息推送:根据业务需求,向不同用户发送消息通知
  • +
  • 消息接收:接收来自各业务系统的消息请求
  • +
  • 消息处理:处理消息通知,生成响应结果
  • +
+

13.2 设计概述

+

13.2.1 总体约束

+

技术约束:

+
    +
  • 基于消息队列技术实现消息的异步处理
  • +
  • 支持多种消息格式(如JSON、XML等)
  • +
  • 实现消息的可靠传输和幂等处理
  • +
+

性能约束:

+
    +
  • 支持高并发消息处理
  • +
  • 消息处理响应时间≤1秒
  • +
  • 消息队列容量≥100万条
  • +
+

安全约束:

+
    +
  • 消息加密存储
  • +
  • 消息传输安全
  • +
  • 消息处理日志记录
  • +
+

13.2.2 子系统外部接口

+

  消息服务子系统作为统一的消息通知中心,为各业务系统提供多渠道消息推送能力。系统支持短信、邮件、站内信等多种消息渠道,与外部系统(OA、智水擎、水投数科APP)对接,实现消息的统一管理和分发。

+ +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
接口编号接口名称功能描述调用方接口协议输入参数输出结果
IF-MSG-001短信发送接口发送短信通知消息营收/微网厅/工单系统HTTP/REST手机号、消息内容、模板ID、发送时间发送状态、消息ID、预计到达时间
IF-MSG-002邮件发送接口发送邮件通知消息营收/工单/报装系统HTTP/REST邮箱地址、邮件主题、邮件内容、附件发送状态、邮件ID、送达确认
IF-MSG-003站内信接口发送系统站内消息各业务系统HTTP/REST用户ID、消息标题、消息内容、消息类型发送结果、消息状态、已读状态
IF-MSG-004微信消息推送接口发送微信模板消息微网厅系统HTTP/REST用户OpenID、模板ID、模板数据推送状态、消息ID、送达状态
IF-MSG-005外部系统对接接口对接OA/智水擎等外部系统OA系统/智水擎/水投数科APPHTTP/REST系统标识、消息类型、接收用户、消息内容对接状态、消息分发结果
IF-MSG-006固定模板管理接口管理消息固定模板系统管理员HTTP/REST模板类型、模板内容、适用场景模板ID、保存状态、生效时间
+

13.2.3 设计方案概述

+

架构设计:

+

  消息服务子系统采用消息队列技术实现消息的异步处理。通过RabbitMQ实现消息的可靠传输和幂等处理。

+

技术选型:

+
    +
  • 消息队列:RabbitMQ
  • +
  • 消息格式:JSON
  • +
  • 消息加密:AES-256
  • +
  • 消息传输:HTTPS
  • +
+

13.3 子系统架构设计

+

  消息服务子系统采用消息中心架构模式,通过统一消息网关接收各业务系统的消息发送请求,通过渠道适配器实现不同消息渠道的协议转换,固定模板管理确保消息内容的规范性,外部系统对接实现与OA、智水擎等系统的消息互通。

+
graph TB
+    subgraph "消息服务子系统"
+        PUB[消息推送]
+        SUB[消息接收]
+        MQ[RabbitMQ]
+    end
+
+    PUB --> MQ
+    SUB --> MQ
+
+

13.4 模块定义

+

13.4.1 模块列表

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
模块编号模块名称功能描述开发方式
MSG-001消息网关模块统一接入、鉴权、路由、幂等控制自行开发
MSG-002短信服务模块短信发送、回执处理、失败重试、供应商适配自行开发
MSG-003邮件服务模块邮件发送、附件管理、批量发送、回执处理自行开发
MSG-004站内信模块站内信管理、用户消息推送、已读状态跟踪自行开发
MSG-005微信通知模块微信模板消息、公众号推送通知自行开发
MSG-006模板管理模块消息模板管理、固定模板维护自行开发
MSG-007外部系统适配模块对接OA、智水擎、水投数科app等数科系统自行开发
+

13.4.2 模块间关系

+
graph TD
+    subgraph "消息服务子系统模块关系"
+        A[MSG-001<br/>消息网关模块]
+        B[MSG-002<br/>短信服务模块]
+        C[MSG-003<br/>邮件服务模块]
+        D[MSG-004<br/>站内信模块]
+        E[MSG-005<br/>微信通知模块]
+        F[MSG-006<br/>模板管理模块]
+        G[MSG-007<br/>外部系统适配模块]
+    end
+    
+    %% 核心流程
+    A -->|短信路由| B
+    A -->|邮件路由| C
+    A -->|站内信路由| D
+    A -->|微信路由| E
+    A -->|外部系统路由| G
+    
+    %% 模板服务
+    F -->|短信模板| B
+    F -->|邮件模板| C
+    F -->|站内信模板| D
+    F -->|微信模板| E
+    F -->|外部模板| G
+    
+    %% 回执反馈
+    B -.->|短信回执| A
+    C -.->|邮件回执| A
+    D -.->|已读状态| A
+    E -.->|微信回执| A
+    G -.->|外部回执| A
+    
+    %% 样式定义
+    classDef gatewayModule fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
+    classDef channelModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
+    classDef templateModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px
+    classDef externalModule fill:#e8f5e8,stroke:#388e3c,stroke-width:2px
+    
+    class A gatewayModule
+    class B,C,D,E channelModule
+    class F templateModule
+    class G externalModule
+
+

13.4.3 模块描述

+

13.4.3.1 MSG-001: 消息网关模块

+
    +
  • 统一消息接入与鉴权
  • +
  • 简单路由与负载均衡
  • +
  • 基础保护机制
  • +
  • 幂等控制与防重复发送
  • +
+

13.4.3.2 MSG-002: 短信服务模块

+
    +
  • 短信发送与供应商适配
  • +
  • 回执状态处理与确认
  • +
  • 失败重试与补偿机制
  • +
  • 短信固定内容管理
  • +
+

13.4.3.3 MSG-003: 邮件服务模块

+
    +
  • 邮件发送与附件管理
  • +
  • 批量邮件处理能力
  • +
  • 回执跟踪与状态确认
  • +
  • SMTP服务器配置管理
  • +
+

13.4.3.4 MSG-004: 站内信模块

+
    +
  • 站内消息推送管理
  • +
  • 用户消息中心维护
  • +
  • 已读/未读状态跟踪
  • +
  • 消息分类与过滤
  • +
+

13.4.3.5 MSG-005: 微信通知模块

+
    +
  • 微信模板消息发送
  • +
  • 公众号推送通知
  • +
  • 微信API接口对接
  • +
  • 推送结果状态回执
  • +
+

13.4.3.6 MSG-006: 模板管理模块

+
    +
  • 消息模板统一管理
  • +
  • 固定模板内容维护
  • +
  • 模板版本控制
  • +
  • 多渠道模板适配
  • +
+

13.4.3.7 MSG-007: +外部系统适配模块

+
    +
  • OA系统消息对接
  • +
  • 智水擎系统通知集成
  • +
  • 水投数科app消息推送
  • +
  • 外部API接口适配
  • +
+

+

14 非功能性需求的设计

+

14.1 性能的考虑

+

设计目标:

+
    +
  • 系统响应时间:≤3秒(95%的请求)
  • +
  • 并发用户数:≥200个在线用户
  • +
  • 数据库查询:≤1秒(单表查询)
  • +
  • 批量处理:≥1000条/分钟
  • +
+

设计措施:

+
    +
  1. 数据库优化 +
      +
    • 采用达梦数据库主从架构,读写分离
    • +
    • 对核心业务表建立合适索引
    • +
    • 大表分区存储,历史数据归档
    • +
    • 连接池配置优化
    • +
  2. +
  3. 缓存策略 +
      +
    • Redis缓存热点数据
    • +
    • 应用级缓存配置信息
    • +
    • CDN加速静态资源
    • +
    • 浏览器缓存优化
    • +
  4. +
  5. 应用优化 +
      +
    • 异步处理非核心业务
    • +
    • 批量操作优化
    • +
    • SQL语句优化
    • +
    • 业务逻辑优化
    • +
  6. +
+

14.2 兼容性的考虑

+

浏览器兼容性:

+
    +
  • Chrome 80+(推荐)
  • +
  • Firefox 75+
  • +
  • Safari 13+
  • +
  • Edge 80+
  • +
+

数据库兼容性:

+
    +
  • 主要支持:达梦数据库 8.0+
  • +
  • 备选方案:PostgreSQL 12+
  • +
  • 预留接口:MySQL 8.0+
  • +
+

操作系统兼容性:

+
    +
  • 服务器:Linux CentOS 7.6+/Ubuntu 18.04+
  • +
  • 客户端:Windows 10+/macOS 10.15+
  • +
+

14.3 安全的考虑

+

身份认证:

+
    +
  • 基于OAuth2.0+CAS协议的单点登录
  • +
  • 基于JWT的无状态认证
  • +
  • 支持多因子认证(MFA)
  • +
  • OAuth2+CAS第三方登录集成
  • +
  • 密码复杂度策略
  • +
+

权限控制:

+
    +
  • RBAC角色权限模型
  • +
  • 细粒度功能权限控制
  • +
  • 数据权限隔离
  • +
  • 多租户数据隔离
  • +
+

数据安全:

+
    +
  • 敏感数据加密存储
  • +
  • 数据传输HTTPS加密
  • +
  • 数据库连接加密
  • +
  • 定期数据备份
  • +
+

系统安全:

+
    +
  • SQL注入防护
  • +
  • XSS攻击防护
  • +
  • CSRF攻击防护
  • +
  • 接口访问频率限制
  • +
+

14.4 可移植性的考虑

+

平台无关性:

+
    +
  • 基于Java 17+,支持跨平台部署
  • +
  • 容器化部署,支持Docker/Kubernetes
  • +
  • 数据库抽象层,支持多种数据库
  • +
  • 配置外部化,环境隔离
  • +
+

云平台适配:

+
    +
  • 支持阿里云、腾讯云、华为云部署
  • +
  • 适配云原生架构
  • +
  • 支持弹性扩缩容
  • +
  • 云存储服务集成
  • +
+

14.5 关键技术特性

+

14.5.1 响应式设计

+
    +
  • 移动端适配:完美适配各种移动设备
  • +
  • 触屏优化:优化的触屏交互体验
  • +
  • 加载优化:快速的页面加载速度
  • +
  • 离线支持:基础功能离线可用
  • +
+

14.5.2 安全保障

+
    +
  • 数据加密:敏感数据传输加密
  • +
  • 身份验证:多重身份验证机制
  • +
  • 支付安全:完善的支付安全策略
  • +
  • 隐私保护:严格的用户隐私保护
  • +
+

14.6 集成与测试的考虑

+

集成策略:

+
    +
  • 采用自底向上的集成方式
  • +
  • 先完成基础服务开发测试
  • +
  • 再进行业务服务集成
  • +
  • 最后进行端到端集成测试
  • +
+

测试策略:

+
    +
  • 单元测试:代码覆盖率≥80%
  • +
  • 集成测试:覆盖主要业务流程
  • +
  • 性能测试:验证性能指标
  • +
  • 安全测试:安全漏洞扫描
  • +
+

14.7 可扩展性的考虑

+

架构扩展:

+
    +
  • 微服务架构支持水平扩展
  • +
  • 数据库分库分表支持
  • +
  • 缓存集群扩展
  • +
  • 负载均衡扩展
  • +
+

功能扩展:

+
    +
  • 插件化架构设计
  • +
  • 开放API接口
  • +
  • 工作流引擎支持
  • +
  • 配置化业务规则
  • +
+

14.8 可靠性的考虑

+

高可用设计:

+
    +
  • 应用服务集群部署
  • +
  • 数据库主从备份
  • +
  • 负载均衡器冗余
  • +
  • 自动故障切换
  • +
+

容错机制:

+
    +
  • 服务降级策略
  • +
  • 熔断器模式
  • +
  • 重试机制
  • +
  • 异常处理策略
  • +
+

数据备份:

+
    +
  • 数据库实时备份
  • +
  • 定期全量备份
  • +
  • 增量备份策略
  • +
  • 异地备份存储
  • +
+

14.9 可维护性的考虑

+

代码质量:

+
    +
  • 统一编码规范
  • +
  • 代码审查制度
  • +
  • 自动化测试
  • +
  • 持续集成/持续部署
  • +
+

运维友好:

+
    +
  • 完善的部署文档
  • +
  • 运维监控dashboard
  • +
  • 日志集中管理
  • +
  • 性能监控告警
  • +
+

文档管理:

+
    +
  • API文档自动生成
  • +
  • 系统架构文档
  • +
  • 运维操作手册
  • +
  • 故障处理手册
  • +
+ + diff --git a/output/03_Summary_Design.pdf b/output/03_Summary_Design.pdf new file mode 100644 index 0000000..c3f0e9e Binary files /dev/null and b/output/03_Summary_Design.pdf differ diff --git a/output/03_Summary_Design_processed.md b/output/03_Summary_Design_processed.md new file mode 100644 index 0000000..d699fe6 --- /dev/null +++ b/output/03_Summary_Design_processed.md @@ -0,0 +1,4353 @@ +--- +title: "03_Summary_Design" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: HL-03-SUMMARY +doc_role: master_document +authority: primary +scope: 概要设计 +source_of_truth: true +last_reviewed: 2026-03-12 +retrieval_priority: P0 +--- + +# 福建水务营收系统概要设计说明书 + +## 章节导航(精简) + +- [前言](#sec-preface) +- [系统总体设计](#sec-overall-design) +- [子系统设计(SYS-001~SYS-010)](#sec-subsystems) + - [SYS-001 统一平台](#sec-sys-001) + - [SYS-002 营收业务系统](#sec-sys-002) + - [SYS-003 手机抄表APP](#sec-sys-003) + - [SYS-004 微网厅系统](#sec-sys-004) + - [SYS-005 工单管理系统](#sec-sys-005) + - [SYS-006 表务管理系统](#sec-sys-006) + - [SYS-007 报装业务系统](#sec-sys-007) + - [SYS-008 发票服务子系统](#sec-sys-008) + - [SYS-009 支付与银行结算子系统](#sec-sys-009) + - [SYS-010 消息服务子系统](#sec-sys-010) +- [非功能性需求设计](#sec-nfr) + +| 文件状态: | 文档密级: | 公开 | +| :--- | :--- | :--- | +| 【√】草稿 | | | +| 【】修改稿 | | | +| 【】正式发布 | | | +| | **当前版本:** | **V1.7** | +| | **作者:** | **唐伟杰** | +| | **完成日期:** | **2025-08-18** | + +## 版本历史 + +| 日期 | 版本号 | 作者 | 备注 | +| :--- | :--- | :--- | :--- | +| 2025-07-01 | V1.0 | 唐伟杰 | 初版 | +| 2025-07-17 | V1.1 | 唐伟杰 | 1. 同步详细设计中的模块,补充缺失模块。
2. 调整子系统划分与编号,确保逻辑清晰、编号连续。
3. 重构表务、报装、客户服务子系统,优化模块设计。
4. 统一概要设计与详细设计的结构,提升一致性。 | +| 2025-08-01 | V1.2 | 唐伟杰 | 完善 APP相关的模块设计 | +| 2025-08-01 | V1.3 | 唐伟杰 | 数据库系统变更:将OpenGauss替换为达梦数据库 8.0+,更新所有相关架构图和技术描述。 | +| 2025-08-01 | V1.4 | 唐伟杰 | 单点登录采用OAuth2.0+CAS协议:更新单点登录模块描述,强调基于OAuth2.0+CAS协议实现。 | +| 2025-08-18 | V1.5 | 唐伟杰 | 架构调整:将营收业务系统中的工单、表务、报装剥离为独立子系统(SYS-005/006/007),更新目录、功能范围、子系统列表、关系图与接口定义;保留客户服务模块在营收业务系统中的作用。 | +| 2025-08-18 | V1.6 | 唐伟杰 | 合并第三方支付能力至SYS-009"支付与银行结算子系统",统一消息服务重编号为SYS-010;更新总体目标、功能范围、接口定义、子系统列表与相关架构图。 | +| 2026-03-12 | V1.7 | 唐伟杰 | 对照 `Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md` 完成来源对齐:补充历史来源说明与引用路径,确认系统拆分、基础服务定位、外部集成与非功能约束已同步;保留当前正式系统名称、模块编号与接口编号标准,不沿用历史别名编码作为正式口径。 | + + + +# 前言 + +## 编写目的 + +  本文档是《福建水务营收系统详细设计说明书》的前导文档,旨在从总体架构和概要设计的角度对系统进行全面的技术规划和设计。 + +**主要目的:** + +1. **总体架构规划**:从系统整体角度进行技术架构规划,为详细设计提供宏观指导 +2. **技术方案论证**:确定系统的技术选型、架构模式和实现策略 +3. **设计标准制定**:建立统一的技术标准、开发规范和质量要求 +4. **风险评估分析**:识别技术风险、制定应对策略 +5. **资源需求评估**:确定系统开发、部署所需的技术资源和基础设施 + +**预期读者:** + +- 系统架构师和技术负责人 +- 项目经理和技术管理人员 +- 详细设计和开发团队 +- 测试团队和运维团队 +- 甲方技术评审团队 + +## 背景 + +  福建水务营收系统是为满足福建省水投数字科技有限公司客户服务管理领域的业务需求而建设的信息化系统。系统以客户为核心和基础,实现客户全生命周期管理。 + +**建设背景:** + +  福建水投集团注册资本46亿元,在全省40多个县市区投资重大水利项目超过450亿元,拥有全级次子公司超过67家,职工人数超3500人。当前,集团正紧紧抓住城乡供水一体化建设的机遇,需要构建以客户为中心的数字化服务体系。 + +## 术语与缩略语 + +| **术语、缩写** | **解释** | +|---|---| +| SaaS | Software as a Service,软件即服务 | +| RBAC | Role-Based Access Control,基于角色的访问控制 | +| JWT | JSON Web Token,基于JSON的Web令牌 | +| OAuth2 | 开放授权标准 | +| RESTful | Representational State Transfer,表现层状态转化 | +| OpenAPI | 开放应用程序接口规范 | +| DDL | Data Definition Language,数据定义语言 | +| DML | Data Manipulation Language,数据操作语言 | +| IoT | Internet of Things,物联网 | +| CAS | Central Authentication Service,中央认证服务 | +| DevOps | Development和Operations的组合词,开发运维一体化 | +| 业务参数 | 业务参数配置 | +| 站点 | 用于划分用户所属管辖区域,站点可以进行多级管理 | +| 册本 | 又称抄表本或抄表簿,根据抄表线路规划,按排相邻的一些水表给某一个抄表员进行抄表 | +| 用户编号 | 为签定了供用水合同的正式用户分配的唯一识别号 | +| 售水量 | 抄收水量+查处水量±调整水量 | +| 当期应收水费 | 当期售水量乘以不同类别的水价(到户价)所得的金额 | +| 水表抄见率 | (当期应抄用户数-当期估表用户数)/当期应抄用户数×100% | + +## 参考资料 + +- GB/T 8556-2007 信息技术软件生存周期过程 +- GB/T 9385-2008 计算机软件需求规格说明规范 +- GB/T 8567-2006 计算机软件文档编制规范 +- 《RuoYi-Vue-Pro技术架构文档》 +- 《Spring Cloud微服务架构设计指南》 +- 《福建水务营收系统需求规格说明书》 +- `../04_Appendix/Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md` + +## 历史来源对齐说明 + +本主文档已对齐 `../04_Appendix/Archive/03_Design_Docs/营业收费管理系统-概要设计说明书20250912.md` 中对当前正式设计仍有效的内容,主要包括: + +- 子系统拆分口径:`SYS-001 ~ SYS-010` 的职责边界、基础服务分层与跨系统协同关系。 +- 业务范围口径:营收、微网厅、工单、表务、报装、发票、支付结算、消息等范围定义。 +- 架构与集成口径:外部支付、银行、税控、消息、摄像表 AI 等外部协同边界。 +- 非功能口径:达梦数据库 8.0+、物理部署、可靠性、安全与扩展性方向。 + +以下内容仅保留在 Archive 中作为历史来源,不直接作为当前正式主文档口径: + +- 历史系统名称“营业收费管理系统”等旧标题写法。 +- 历史别名编码,如 `UP-SSO`、`REV-CUSTOM`、`WECHAT-*`。 +- 历史接口编号体系,如 `IF-S-*`、`IF-C-*`。 + +当前正式口径继续统一采用: + +- 系统名称:`福建水务营收系统` +- 模块编号:`UP-001`、`REV-001`、`CS-001`、`METER-001`、`INST-001` +- 接口编号:`IF-UP-*`、`IF-REV-*`、`IF-CS-*`、`IF-METER-*`、`IF-INST-*`、`IF-EXT-*` + + + +# 系统总体设计 + +## 任务概述 + +### 系统总体目标 + +  福建水务营收系统采用分层解耦与子系统化建设,形成"业务服务层 + 基础服务层"的整体架构: + +- 业务服务层:SYS-001 统一平台、SYS-002 营收业务系统、SYS-003 手机抄表APP、SYS-004 微网厅系统、SYS-005 工单管理系统、SYS-006 表务管理系统、SYS-007 报装业务系统 + +- 基础服务层:SYS-008 发票服务子系统(统一开票)、SYS-009 支付与银行结算子系统(统一聚合支付/退款/渠道适配/第三方支付平台/银行实时收费、代扣/托收签解约、批次与对账契约、加解密与支付回调,夜间批量代扣/完整对账结算按后续完善项管理)、SYS-010 消息服务子系统(统一短信/邮件/站内信/模板消息/微信通知/数科系统对接)、注册/配置中心、任务调度等基础服务 + +  通过系统的建设,实现福建省水投数字科技有限公司客户服务管理领域的业务流程梳理再造、组织架构的优化、管理制度的建设、绩效考核标准的建设。构建以客户为中心的一体化服务体系,将客户的所有信息进行有机的关联,方便企业对营收信息进行综合分析和管理,为客户提供更多、更便捷、更主动的个性化服务,提高客户服务的质量和客户满意度。 + +**系统整体架构特点:** + +- **统一平台**:提供单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力 +- **营收业务系统**:围绕客户、抄表、收费、账务、催缴、统计等核心营收流程,保留"客户服务模块群"对外服务能力,提供多租户的业务参数配置 +- **手机抄表APP**:移动化现场作业,支持离线;现场问题上报与工单接收由工单系统统一承载 +- **微网厅系统**:面向公众的自助服务门户,支持绑定、查询、缴费、发票查看、业务办理 +- **工单管理系统**:统一工单中心与流程引擎,打通营收/表务/报装/微网厅/APP的全场景工单 +- **表务管理系统**:设备档案、表务全生命周期管理 +- **报装业务系统**:覆盖报装申请、踏勘、施工、验收、通水与档案归档的端到端流程,支持调用泛微进行合同签订,电子签章,支持各租户自定义报装流程和表单定义 +- **发票服务子系统**(基础服务):统一开票网关与供应商适配(现优先对接航天,预留博思),回执与存证 +- **支付与银行对接子系统**(基础服务):统一支付/退款、银行实时收费、代扣/托收签解约、送盘/回盘/对账契约、加解密签名与第三方支付平台(微信、支付宝);夜间批量代扣和完整结算闭环按后续完善项管理 +- **消息服务子系统**(基础服务):统一短信/邮件/站内信/模板消息,下行推送与到达回执,供各业务子系统调用(如营收业务系统催缴),微信信息通知,对接数科已建系统通知(OA、智水擎,水投数科 app) + +### 功能范围 + +  本系统功能涵盖水务企业完整的营收业务流程,包括客户资料管理、抄表开账、营业收费、账务处理、催缴管理、发票管理(经SYS-008)、表务管理、报装业务、客户服务、工单管理,以及支付与银行结算(经SYS-009)等;还包含查询统计与报表打印功能。 + +#### SYS-001 统一平台 + +- 单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力 + +#### SYS-002 营收业务系统 + +- 营收核心:客户资料、抄表开账、营业收费、账务处理、催缴管理、统计分析、代收业务、多租户业务参数配置 +- 客户服务:账户绑定、信息查询、在线缴费(经SYS-009)、柜面扫码支付(经SYS-009)、电子发票(经SYS-008)、营业网点、业务办理 + +#### SYS-003 手机抄表APP + +- 移动作业:登录、首页搜索、采集任务、现场抄表、调用外部AI识别服务 +- 现场上报/工单接收:问题上报、工单接收与回填(经SYS-005) +- 数据同步与个人管理:任务下载/数据上传(离线支持)、个人信息与设置 + +#### SYS-004 微网厅系统 + +- 账户绑定、账单/用水查询、在线缴费(经SYS-009)、电子发票查看(经SYS-008)、营业网点、业务办理 + +#### SYS-005 工单管理系统 + +- 统一工单中心、流程引擎、监控预警、绩效统计,打通营收/表务/报装/微网厅/APP + +#### SYS-006 表务管理系统 + +- 设备档案、表务全生命周期管理 + +#### SYS-007 报装业务系统 + +- 报装流程(申请/踏勘/施工/验收/通水)、支持调用泛微进行合同签订,电子签章、各租户自定义报装流程和表单定义、工程管理(进度/资源/质量/安全)、档案管理(资料归档/留痕) + +#### SYS-008 发票服务子系统(基础服务) + +- 统一开票/作废与红冲/查询、供应商适配(航天优先、预留博思)、回执处理与存证 + +#### SYS-009 支付与银行结算子系统(基础服务) + +- 聚合支付/退款、渠道适配(微信/支付宝/银联聚合等)、第三方支付平台(微信、支付宝)、支付结果通知、银行代扣(送盘/回盘)、支持夜间进行批量代扣、对账文件处理、加解密/签名 +- 当前实现侧已确认聚合支付基础能力、银行欠费查询/缴费、`BankWithholding` 六条银行入口(客户状态查询、送盘、送盘状态查询、取消送盘、回盘、回盘状态查询)、代扣/托收签约解约和后台资源管理具备证据;其中 `BankCollection` 平行链路、夜间批量代扣、完整对账与结算仍按部分实现或后续完善项管理 + +#### SYS-010 消息服务子系统(基础服务) + +- 统一短信/邮件/站内信/模板消息,下行推送与到达回执,供各业务子系统调用(如营收业务系统催缴) +- 微信信息通知,对接数科已建系统通知(OA、智水擎,水投数科 app) +- 邮件服务:邮件通知发送(经SYS-010) + +### 系统涉众与用户特点 + +**系统涉众**: + +  本系统主要涉及用户为各水务公司与系统相关的业务参与者、福建省水投数字科技有限公司研发运维团队。 + +**用户特点**: + +- **公司领导**:对信息化在企业生产经营管理活动中的积极作用有深刻认识,并具有前瞻视角。 + +- **公司管理层**:有丰富的企业管理经验,有良好的业务管理类系统使用经验。 + +- **系统管理人员**:具有本科以上教育背景,计算机操作熟练,具有良好的软件系统维护经验,主要维护系统的后台权限管理、人员管理、部门管理等功能。 + +- **操作人员**:部分用户已经使用过其他厂商提供的水务营收系统,部分用户对软件系统使用经验不足。 + +## 设计概述 + +### 总体约束 + +**技术约束**: + +- 采用现代化微服务架构,支持大规模并发访问 +- 支持多租户模式,满足集团化管理需求 +- 实现移动化办公,提高工作效率 +- 集成物联网技术,支持智能水表远程抄表 +- 适配国产化环境,确保系统安全可控 + +**性能约束**: + +- 系统并发用户数不低于200个 +- 移动设备同时登录系统的并发用户数不少于50个 +- 系统响应时间不超过3秒 +- 支持100万客户的业务量 +- 系统可用性达到99.5%以上 + +**安全约束**: + +- 系统满足国家信息安全等级保护要求 +- 支持数据加密存储和传输 +- 实现细粒度的权限控制 +- 提供完整的审计日志功能 + +### 系统依赖外部接口 + +  本系统需要与以下外部系统进行接口集成: + +| 接口类型 | 接口名称 | 功能描述 | 接口协议 | +|---------|---------|----------|----------| +| 金融支付 | 银行代扣接口 | 银行托收代扣缴费 | HTTPS | +| 金融支付 | 微信支付接口 | 微信在线支付 | HTTPS | +| 金融支付 | 支付宝支付接口 | 支付宝在线支付 | HTTPS | +| 通信服务 | 短信平台接口 | 短信通知发送 | HTTPS | +| 通信服务 | 邮件服务接口 | 邮件通知发送 | HTTPS/SMTP | +| 通信服务 | 微信模板消息接口 | 微信模板消息下发 | HTTPS | +| 物联网 | 集抄系统接口 | 智能水表数据采集 | TCP/HTTPS | +| 税务服务 | 电子发票接口 | 第三方发票开具 | HTTPS | +| 认证服务 | 身份认证接口 | 第三方身份验证 | HTTPS | +| 认证服务 | CAS单点登录 | 第三方身份验证 | HTTPS | +| 认证服务 | OAuth2.0单点登录 | 第三方身份验证 | HTTPS | +| 外部系统 | CA电子签章 | CA签发/验章/存证 | HTTPS | +| 外部系统 | 邮件服务 | 邮件服务 | HTTPS | +| 外部系统 | 摄像表AI接口 | 表AI识别服务 | HTTPS | + +### 设计方案概述 + +**架构设计方案**: + +  系统采用现代化的多层分布式架构,基于微服务设计思想,实现松耦合、高内聚的系统架构。整体架构分为表现层、网关层、业务服务层、基础服务层和数据层五个层次。 + +**技术选型方案**: + +- **后端技术栈**:Java 17+、Spring Boot 3.1+、Spring Cloud Gateway、MyBatis-Plus +- **前端技术栈**:Vue 3、Element Plus、TypeScript +- **数据库**:达梦数据库 8.0+(主从架构) +- **缓存**:Redis 6.0+(集群模式) +- **消息队列**:RabbitMQ 3.9+ +- **文件存储**:MinIO(分布式文件存储) +- **容器化**:基于Docker的容器化部署,使用Docker Compose进行容器编排,使用Kubernetes进行容器编排和调度。 +- **DevOps**:使用Jenkins进行自动化构建、部署和测试,使用Gitea进行代码管 + +**部署方案**: + +  采用容器化部署架构,支持多环境部署(开发、测试、生产),提供自动化部署脚本,支持弹性扩缩容。 + +## 系统架构设计 + +### 系统的逻辑架构设计 + +  系统采用现代化的多层分布式架构,基于微服务设计思想,实现松耦合、高内聚的系统架构。 + +#### 整体架构图 + + +```mermaid +graph TB + %% 表现层 + subgraph "表现层" + ADMIN[Web管理端] + H5[微网厅H5] + APP[手机抄表APP] + end + + %% 网关层 + subgraph "网关层" + GATEWAY[API网关] + SSO[统一认证/SSO] + end + + %% 业务服务层 + subgraph "业务服务层" + UP[SYS-001 统一平台] + REV[SYS-002 营收业务系统] + WO[SYS-005 工单管理系统] + METER[SYS-006 表务管理系统] + INST[SYS-007 报装业务系统] + end + + %% 基础服务层 + subgraph "基础服务层" + INV[SYS-008 发票服务] + PAY[SYS-009 支付与银行结算] + MSG[SYS-010 消息服务] + MQ[RabbitMQ 消息队列] + FILE[MinIO 文件存储] + REDIS[Redis 缓存] + MON[监控/日志] + CONFIG[注册/配置中心] + SCHED[任务调度] + end + + %% 数据层 + subgraph "数据层" + DM[(达梦数据库集群)] + CACHE[(Redis集群)] + STORE[(MinIO集群)] + end + + %% 外部系统 + subgraph "外部系统" + EXT_CA[CA电子签章] + EXT_BANK[银行] + EXT_PSP[支付渠道 微信/支付宝/银联聚合] + EXT_INV[发票供应商 航天/博思] + EXT_SMS[短信平台] + EXT_MAIL[邮件服务] + EXT_IOT[集抄系统] + end + + %% 连接关系 + ADMIN --> GATEWAY + H5 --> GATEWAY + APP --> GATEWAY + GATEWAY --> SSO + GATEWAY --> UP + GATEWAY --> REV + GATEWAY --> WO + GATEWAY --> METER + GATEWAY --> INST + + REV --> INV + REV --> PAY + REV --> MQ + REV -.-> MSG + REV --> FILE + REV --> REDIS + + INST -.-> EXT_CA + + INV -.-> EXT_INV + MSG -.-> EXT_SMS + MSG -.-> EXT_MAIL + PAY -.-> EXT_BANK + PAY -.-> EXT_PSP + + %% 数据层连接 + UP --> CACHE + REV --> DM + WO --> DM + METER --> DM + INST --> DM + FILE --> STORE + +``` + + +#### 层级说明 + +**表现层(Presentation Layer)** + +- 负责用户交互和界面展示 +- 包含多种客户端形态:Web端、微网厅(微信、支付宝) +- 采用前后端分离架构,提高开发效率和用户体验 + +**网关层(Gateway Layer)** + +- 统一入口,负责请求路由和负载均衡 +- 集中处理认证授权、限流熔断、监控日志 +- 提供API版本管理和接口文档生成 + +**业务服务层(Business Service Layer)** + +- 核心业务逻辑处理层,包含七个子系统: + - **SYS-001 统一平台**:提供单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力 + - **SYS-002 营收业务系统**:营收核心与客户服务模块群 + - **SYS-003 手机抄表APP**:移动端现场作业、调用外部摄像表AI识别服务与数据同步 + - **SYS-004 微网厅系统**:面向客户的线上服务门户 + - **SYS-005 工单管理系统**:统一工单中心与流程引擎 + - **SYS-006 表务管理系统**:设备档案、表务全生命周期管理 + - **SYS-007 报装业务系统**:报装全流程与工程管理、合同签订与电子签章 +- 按业务域划分微服务,实现高内聚低耦合 +- 支持独立部署、扩缩容和技术栈选择 + +**基础服务层(Infrastructure Service Layer)** + +- 提供通用的技术服务能力 +- 包含权限、工作流、消息、文件、发票服务(统一开票能力)、银行对接服务(代扣/夜间批量代扣/对账/加解密)、第三方支付服务(聚合支付/退款)、消息服务(统一短信/邮件/站内信/模板消息)、注册/配置中心、任务调度等基础服务 +- 为业务服务提供统一的技术支撑 + +**数据层(Data Layer)** + +- 数据持久化和缓存层 +- 支持读写分离、分库分表、数据备份 +- 提供高性能、高可用的数据服务 + +**外部系统(External Systems)** + +- CA电子签章:用于报装资料签署、验章与存证(当前归属 `INST-002` 工程管理) +- 银行:托收代扣、回盘与对账(经SYS-009) +- 支付渠道:微信/支付宝/银联聚合等(经SYS-009) +- 发票供应商:航天/博思等税控平台(经SYS-008) +- 短信平台:通知与催缴短信发送(经SYS-010) +- 集抄系统:智能水表数据采集(远传/集中器) +- 邮件服务:邮件通知发送(经SYS-010) +- **摄像表AI系统(外部)**:基于计算机视觉的水表读数自动识别服务,通过API接口为手机抄表APP提供图像识别能力 + +### 系统数据流向图 + + +```mermaid +flowchart TB + %% 分层横向排布,垂直贯通,允许直连线穿越模块 + subgraph L1["数据采集层"] + direction LR + A1[手机抄表APP/SYS-003] + A2[智能水表] + A3[管理后台/SYS-001] + A4[微网厅/SYS-004] + A5[外部系统] + end + + subgraph L2["接入层"] + direction LR + GW[API网关] + AUTH[统一平台SSO/SYS-001] + CLEAN[数据清洗] + MQ[消息队列] + CACHE_TMP[临时缓存] + end + + subgraph L3["业务层"] + direction LR + REV[营收系统/SYS-002] + WO[工单系统/SYS-005] + METER[表务系统/SYS-006] + INST[报装系统/SYS-007] + INV[发票服务/SYS-008] + PAY[支付与结算/SYS-009] + MSG[消息服务/SYS-010] + end + + subgraph L4["存储层"] + direction LR + DM_MASTER[达梦主库] + DM_SLAVE[达梦从库] + REDIS[Redis缓存] + MINIO[MinIO对象存储] + BACKUP[备份库] + end + + subgraph L5["数据服务层"] + direction LR + QRY[查询服务] + RPT[报表服务] + API[接口服务] + PUSH[推送服务] + end + + subgraph L6["展现层"] + direction LR + F1[管理后台] + F2[统计大屏] + F3[移动端] + F4[微网厅] + F5[第三方系统] + end + + %% 连接(精简且保持层间垂直分层,线可穿越模块) + A1 --> GW + A2 --> GW + A3 --> GW + A4 --> GW + A5 --> GW + + %% 相邻层连线:采集层 → 接入层 已在上方;以下为 接入层 → 业务层 + GW --> REV + GW --> WO + GW --> METER + GW --> INST + + MQ --> REV + MQ --> WO + MQ --> METER + MQ --> INST + + REV --> DM_MASTER + WO --> DM_MASTER + METER --> DM_MASTER + INST --> DM_MASTER + INV --> MINIO + MSG --> REDIS + %% 存储层内部链路省略,保持仅向下一层输出 + + DM_MASTER --> QRY + DM_MASTER --> RPT + DM_MASTER --> API + REDIS --> API + MINIO --> API + MSG --> PUSH + QRY --> F1 + RPT --> F2 + API --> F1 + API --> F3 + API --> F4 + API --> F5 + PUSH --> F3 + PUSH --> F4 + +``` + + +### 系统的物理架构设计 + +  系统采用分布式部署架构,通过多个服务器集群实现高可用和高性能,支持 DevOps 持续交付。 + +#### 物理部署图 + + +```mermaid +graph TB + subgraph "DMZ区域" + subgraph "负载均衡集群" + LB1[Nginx 主
8核16G] + LB2[Nginx 备
8核16G] + WAF[Web应用防火墙] + end + end + + subgraph "应用服务区" + subgraph "Web服务集群" + WEB1[Web服务器1
8核32G] + WEB2[Web服务器2
8核32G] + end + + subgraph "应用服务集群" + APP1[应用服务器1
16核64G] + APP2[应用服务器2
16核64G] + end + + subgraph "中间件集群" + MQ1[消息队列1
8核16G] + MQ2[消息队列2
8核16G] + end + end + + subgraph "数据服务区" + subgraph "数据库集群" + DB1[达梦数据库主库
32核128G] + DB2[达梦数据库从库
32核128G] + DB3[达梦数据库备库
32核128G] + end + + subgraph "缓存集群" + REDIS1[Redis主节点
16核32G] + REDIS2[Redis从节点
16核32G] + REDIS3[Redis哨兵
8核16G] + end + + subgraph "文件存储集群" + FILE1[MinIO节点1
8核32G 10TB] + FILE2[MinIO节点2
8核32G 10TB] + FILE3[MinIO节点3
8核32G 10TB] + end + end + + subgraph "管理服务区" + MONITOR[监控服务器
Prometheus + Grafana
8核16G] + BACKUP[备份服务器
8核32G 20TB] + JUMP[跳板服务器
4核8G] + LOG[日志服务器
ELK Stack
16核32G] + end + + + +``` + + +#### 网络连接 + + +```mermaid +graph TB + + Internet[互联网] -.->|HTTPS| DMZ[DMZ区域] + DMZ -.->|HTTP/RPC| APP[应用服务区] + APP -.->|数据访问| DATA[数据服务区] + MGMT[管理服务区] -.->|监控管理| APP + MGMT -.->|监控管理| DATA + +``` + + +#### 硬件配置规格 + +**DMZ区域配置** + +| 设备类型 | 配置规格 | 数量 | 主要作用 | +|---------|---------|------|----------| +| 负载均衡器 | 8核16G,双网卡 | 2台 | 负载均衡、高可用 | +| Web应用防火墙 | 硬件WAF设备 | 1台 | 安全防护 | + +**应用服务区配置** + +| 设备类型 | 配置规格 | 数量 | 主要作用 | +|---------|---------|------|----------| +| Web服务器 | 8核32G,1TB SSD | 2台 | 前端应用部署 | +| 应用服务器 | 32核128G,2TB SSD | 3台 | 后端服务部署 | +| 消息队列服务器 | 8核16G,1TB SSD | 2台 | 异步消息处理 | + +**数据服务区配置** + +| 设备类型 | 配置规格 | 数量 | 主要作用 | +|---------|---------|------|----------| +| 数据库服务器 | 32核128G,10TB SSD | 3台 | 主从备数据库 | +| 缓存服务器 | 16核32G,1TB SSD | 3台 | Redis集群 | +| 文件存储服务器 | 8核32G,10TB HDD | 3台 | 分布式文件存储 | + +**管理服务区配置** + +| 设备类型 | 配置规格 | 数量 | 主要作用 | +|---------|---------|------|----------| +| 监控服务器 | 8核16G,1TB SSD | 1台 | 系统监控 | +| 备份服务器 | 8核32G,20TB HDD | 1台 | 数据备份 | +| 跳板服务器 | 4核8G,500GB SSD | 1台 | 运维管理 | +| 日志服务器 | 16核32G,5TB SSD | 1台 | 日志收集分析 | + +#### 达梦数据库分布式架构 + +  系统采用达梦数据库分布式架构,支持高性能、高可用、高扩展性的数据存储服务。 + + +```mermaid +graph TB + subgraph "达梦数据库分布式架构" + subgraph "协调节点" + CN1[协调节点1
Coordinator Node] + CN2[协调节点2
Coordinator Node] + end + + subgraph "数据节点组1" + DN1_1[数据节点1-主
Datanode Primary] + DN1_2[数据节点1-备
Datanode Standby] + DN1_1 -.->|主备同步| DN1_2 + end + + subgraph "数据节点组2" + DN2_1[数据节点2-主
Datanode Primary] + DN2_2[数据节点2-备
Datanode Standby] + DN2_1 -.->|主备同步| DN2_2 + end + + subgraph "GTM节点" + GTM[全局事务管理器
GTM Master] + GTM_S[GTM备节点
GTM Standby] + GTM -.->|备份| GTM_S + end + end + + %% 分布式架构调用关系 + CN1 -.->|分片路由
查询协调| DN1_1 + CN1 -.->|分片路由
查询协调| DN2_1 + CN2 -.->|分片路由
查询协调| DN1_1 + CN2 -.->|分片路由
查询协调| DN2_1 + CN1 -.->|事务管理
全局一致性| GTM + CN2 -.->|事务管理
全局一致性| GTM + +``` + + +#### 容器化部署架构 + +  系统采用基于Docker的容器化部署,使用Docker Compose进行容器编排,使用Kubernetes进行容器编排和调度,支持DevOps持续交付。 + + +```mermaid +graph TB + subgraph "容器化部署架构" + subgraph "前端服务层" + WEB_CONTAINER[前端容器
Nginx + Vue3] + end + + subgraph "后端服务层" + APP_CONTAINER[后端容器
Spring Boot] + end + + subgraph "数据存储层" + DB_CONTAINER[数据库容器
达梦数据库] + CACHE_CONTAINER[缓存容器
Redis] + FILE_CONTAINER[文件存储容器
MinIO] + end + + subgraph "监控服务层" + MONITOR_CONTAINER[监控容器
Prometheus + Grafana] + LOG_CONTAINER[日志容器
ELK Stack] + end + end + + %% 容器服务调用关系 + WEB_CONTAINER -.->|API请求
静态资源| APP_CONTAINER + APP_CONTAINER -.->|数据操作| DB_CONTAINER + APP_CONTAINER -.->|缓存访问| CACHE_CONTAINER + APP_CONTAINER -.->|文件存储| FILE_CONTAINER + APP_CONTAINER -.->|监控数据| MONITOR_CONTAINER + APP_CONTAINER -.->|日志数据| LOG_CONTAINER + +``` + + +## 子系统定义 + +### 子系统列表 + +| 子系统编号 | 子系统名称(标识) | 功能描述 | 开发方式 | +|---|---|---|---| +| SYS-001 | 统一平台 | 单点登录、统一认证(SSO/OAuth2+CAS)、审计与监控、权限、组织、参数、多租户、字典等基础能力 | 自行开发 | +| SYS-002 | 营收业务系统 | 客户管理、抄表开账、营业收费、账务处理、发票管理、催缴管理、统计分析、代收业务、客户服务、业务参数配置 | 自行开发 | +| SYS-003 | 手机抄表APP | 移动端抄表、调用外部AI识别服务、现场作业、数据同步、离线支持 | 自行开发 | +| SYS-004 | 微网厅系统 | 微信公众号平台、账户绑定、在线缴费、信息查询、业务办理、网点服务 | 自行开发 | +| SYS-005 | 工单管理系统 | 统一工单中心、工单流程引擎、监控预警、绩效统计 | 自行开发 | +| SYS-006 | 表务管理系统 | 设备档案、表务全生命周期管理 | 自行开发 | +| SYS-007 | 报装业务系统 | 报装流程管理、合同签订与电子签章、工程管理、档案管理 | 自行开发 | +| SYS-008 | 发票服务子系统 | 统一开票网关、供应商适配器(优先对接航天)、回执处理与存证 | 自行开发 | +| SYS-009 | 支付与银行结算子系统 | 聚合支付/退款、渠道适配(微信/支付宝/银联)、支付通知、银行实时收费、代扣/托收签解约、送盘/回盘/对账契约、加解密签名;夜间批量代扣与完整结算闭环按后续完善项管理 | 自行开发 | +| SYS-010 | 消息服务子系统 | 短信/邮件/站内信模板与发送、回执查询、批量推送 | 自行开发 | + +### 子系统间关系 + +#### 子系统调用关系图 + + +```mermaid +--- +title: 子系统调用关系图 +--- +graph TB + %%{ + run: { + "flowchart": { + + "curve": "basis" + } + "sequence": { + "curve": "basis" + } + + } + }%% + + UP[ 【SYS-001 统一平台】
单点登录
统一认证SSO/OAuth2+CAS
审计监控
权限、组织
参数、多租户
字典管理] + REV_CORE[【SYS-002 营收业务子系统-营收核心模块群】
客户管理
抄表开账
营业收费
账务处理
发票催缴
统计代收
业务参数配置] + CS_MOD[【SYS-002 营收业务子系统-客户服务模块群】
账户绑定管理
信息查询服务
在线缴费服务
业务办理服务] + + + + APP[【SYS-003 手机抄表APP】
移动抄表
调用外部AI服务
现场作业
数据同步
离线支持] + + WECHAT[【SYS-004 微网厅子系统】
账户绑定管理
信息查询服务
在线缴费服务
业务办理服务] + + WO_CENTER[【SYS-005 工单管理子系统】
统一工单中心
创建/派发/处理/验收
监控预警] + + + METER_SYS[【SYS-006 表务管理子系统】
设备档案
表务全生命周期管理] + + + INSTALL_SYS[【SYS-007 报装业务子系统】
报装流程
合同签订与电子签章
工程管理
档案管理] + + PAY_SYS[【SYS-009 支付与银行结算子系统】
聚合支付/退款/回调
渠道适配/代扣/对账/加解密] + + INVOICE_SYS[【SYS-008 发票服务子系统】
统一开票网关
供应商适配器
回执/存证] + + + + + MSG_SYS[【SYS-010 消息服务子系统】
统一短信/邮件/推送
模板与回执] + + + %% 统一平台权限管理 + UP -.->|用户认证/权限| REV_CORE + UP -.->|用户认证/权限| CS_MOD + UP -.->|用户认证/权限| APP + UP -.->|用户认证/权限| WECHAT + UP -.->|用户认证/权限| WO_CENTER + UP -.->|用户认证/权限| METER_SYS + UP -.->|用户认证/权限| INSTALL_SYS + + %% 系统间协作 + REV_CORE -.->|库存状态/换表结果| METER_SYS + REV_CORE -.->|支付/退款/代扣/对账| PAY_SYS + REV_CORE -.->|立户/工程结果| INSTALL_SYS + REV_CORE -.->|开票申请/作废/红冲| INVOICE_SYS + REV_CORE -.->|业务异常/流程触发| WO_CENTER + CS_MOD -.->|客户申请/服务工单| WO_CENTER + + WO_CENTER -.->|换表派发| METER_SYS + WO_CENTER -.->|报装派发| INSTALL_SYS + WO_CENTER -.->|处理结果回填| REV_CORE + WO_CENTER -.->|结果通知| CS_MOD + + %% 手机APP与营收业务系统协作关系 + APP -.->|抄表数据/收费数据| REV_CORE + APP -.->|现场工单/问题上报| WO_CENTER + WO_CENTER -.->|工单派发/任务分配| APP + REV_CORE -.->|抄表任务/客户信息| APP + + %% 微网厅与营收业务系统协作关系 + WECHAT -.->|账单查询/在线缴费| REV_CORE + WECHAT -.->|业务申请/服务工单| WO_CENTER + REV_CORE -.->|账单信息/缴费状态| WECHAT + INVOICE_SYS -.->|电子发票链接/推送| WECHAT + MSG_SYS -.->|短信/邮件/推送| WECHAT + REV_CORE -.->|推送| MSG_SYS + WO_CENTER -.->|推送| MSG_SYS + CS_MOD -.->|推送| MSG_SYS + METER_SYS -.->|推送| MSG_SYS + INSTALL_SYS -.->|推送| MSG_SYS + INVOICE_SYS -.->|推送| MSG_SYS + PAY_SYS -.->|推送| MSG_SYS + + WO_CENTER -.->|办理进度/结果通知| WECHAT + + %% 样式定义 + classDef coreSystem fill:#e3f2fd,stroke:#1976d2,stroke-width:4px,color:#000 + classDef mobileSystem fill:#e8f5e8,stroke:#388e3c,stroke-width:3px,color:#000 + classDef wechatSystem fill:#f3e5f5,stroke:#9c27b0,stroke-width:3px,color:#000 + classDef platform fill:#fff3e0,stroke:#f57c00,stroke-width:2px + + class REV_CORE,CS_MOD coreSystem + class APP mobileSystem + class WECHAT wechatSystem + class UP platform + class WO_CENTER,METER_SYS,INSTALL_SYS coreSystem + +``` + + +#### 主要接口定义 + +**统一平台对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-UP-001 | OAuth2认证接口 | 基于OAuth2.0的统一认证服务 | 所有子系统 | HTTP/REST | 客户端凭证、授权类型、作用域 | 访问令牌、刷新令牌、过期时间 | +| IF-UP-002 | 组织架构接口 | 获取部门和员工组织信息 | 营收/工单/表务系统 | HTTP/REST | 组织ID、查询层级、用户权限 | 组织树结构、员工信息、权限范围 | +| IF-UP-003 | 权限验证接口 | 验证用户操作权限和资源访问 | 所有子系统 | HTTP/REST | 用户Token、操作资源、权限类型 | 验证结果、权限详情、有效期限 | +| IF-UP-004 | 数据字典接口 | 提供系统基础数据字典服务 | 所有子系统 | HTTP/REST | 字典类型、字典编码、租户ID | 字典数据、层级关系、多语言支持 | +| IF-UP-005 | 多租户管理接口 | 多租户数据隔离和权限管理 | 所有子系统 | HTTP/REST | 租户ID、操作类型、数据范围 | 租户配置、数据权限、隔离策略 | + +**营收业务系统对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-REV-001 | 客户信息查询接口 | 查询客户档案、账户状态、联系人与水表绑定关系 | 柜台/客户渠道/工单 | HTTPS REST | 客户ID、客户编号、手机号、查询类型 | 客户档案、账户信息、联系人列表、水表绑定关系 | +| IF-REV-004 | 抄表数据提交接口 | 提交人工或远传抄表数据并触发校验 | 手机抄表APP/集抄系统 | HTTPS REST | 抄表任务ID、水表ID、读数、图片证据、GPS位置 | 上传结果、校验状态、异常标记 | +| IF-REV-005 | 账单生成接口 | 根据抄表结果、水价模板和费用组成生成账单 | 开账任务/批量任务 | HTTPS REST | 抄表批次、账期、客户范围、应收日期 | 账单结果、失败清单、生成汇总 | +| IF-REV-006 | 缴费处理接口 | 创建收费记录并核销账单 | 柜台/线上渠道 | HTTPS REST | 客户ID、账单ID列表、支付方式、实收金额 | 收费结果、核销状态、交易流水 | +| IF-REV-008 | 发票申请接口 | 发起电子发票申请并接收票据状态回写 | 柜台/客户渠道 | HTTPS REST | 客户ID、账单ID列表、开票抬头、税号、邮箱 | 发票申请结果、票据状态、下载地址 | +| IF-REV-011 | 银行代收协同接口 | 发起代扣、回盘、对账、结算协同 | 银行代收模块/SYS-009 | HTTPS REST / 文件交换 | 批次号、渠道编码、账期、账单明细 | 批次状态、回盘结果、对账差异、结算结果 | +| IF-REV-012 | 业务参数配置接口 | 查询和维护价格模板、优惠方案、业务参数配置 | 管理后台/参数管理端 | HTTPS REST | 参数分类、模板编码、站点范围 | 参数明细、模板信息、更新结果 | +| IF-CS-001 | 账户绑定接口 | 绑定、解绑、切换默认客户 | 微信/支付宝/微网厅 | HTTPS REST | 渠道用户标识、客户编号、身份校验信息 | 绑定结果、默认客户信息、绑定关系 | +| IF-CS-002 | 历史账单查询接口 | 查询账单、欠费、用水历史、缴费记录 | 客户端 | HTTPS REST | 客户ID、账期范围、查询类型 | 账单列表、欠费金额、用水趋势、缴费记录 | +| IF-CS-003 | 在线支付下单接口 | 创建微信/支付宝线上支付订单 | 客户端 | HTTPS REST | 客户ID、账单ID列表、支付渠道、支付金额 | 订单号、支付二维码/预支付信息、订单状态 | +| IF-CS-004 | 发票申请接口 | 提交电子发票申请、查询发票状态 | 客户端 | HTTPS REST | 缴费订单号、发票抬头、邮箱/手机号 | 发票状态、发票链接、申请结果 | +| IF-CS-005 | 网点与业务办理接口 | 查询营业网点、预约信息、可办事项 | 客户端 | HTTPS REST | 行政区划、关键字、业务类型 | 网点列表、营业时间、可办业务、预约信息 | +| IF-CS-006 | 业务办理进度接口 | 提交业务申请、查询办理进度与附件 | 客户端 | HTTPS REST | 申请类型、客户资料、附件清单、申请单号 | 受理结果、流程状态、进度轨迹、补件要求 | +| IF-CS-007 | 柜面扫码支付接口 | 创建柜面扫码支付订单并回写结果 | 柜台终端/营业前台 | HTTPS REST | 柜台编号、账单ID列表、订单金额、支付渠道 | 订单号、支付状态、回写结果 | + +**手机抄表APP对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-MOBILE-001 | 任务下载接口 | 下载抄表任务与客户信息 | 手机抄表APP | HTTP/REST | 抄表员ID、任务日期范围 | 任务列表、客户信息、水表信息 | +| IF-MOBILE-002 | 抄表数据上传接口 | 上传抄表数据与现场图片 | 手机抄表APP | HTTP/REST | 抄表记录、现场图片、GPS位置 | 上传状态、数据校验结果 | +| IF-MOBILE-003 | 工单接收接口 | 接收工单任务 | 工单管理系统 | HTTP/REST | 工单ID、工单类型、派发信息 | 接收确认、预计处理时间 | +| IF-MOBILE-004 | 工单回填接口 | 回填处理结果与附件 | 手机抄表APP | HTTP/REST | 工单ID、处理结果、现场图片 | 回填状态、审核结果 | +| IF-MOBILE-005 | 离线同步接口 | 离线数据同步 | 手机抄表APP | HTTP/REST | 离线数据包、时间戳 | 同步状态、冲突处理结果 | + +**微网厅系统对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-WECHAT-001 | 微信授权登录接口 | 通过微信OAuth2.0实现用户授权登录 | 微网厅系统 | HTTP/REST | 微信授权码、AppID、AppSecret | 用户OpenID、访问令牌、用户基本信息 | +| IF-WECHAT-002 | 微信支付接口 | 调用微信支付完成在线缴费 | 微网厅系统 | HTTP/REST | 订单信息、支付金额、用户OpenID | 预支付交易会话标识、支付结果 | +| IF-WECHAT-005 | 客户信息查询接口 | 查询绑定客户的基本信息 | 微网厅系统 | HTTP/REST | 客户编号/手机号/OpenID | 客户详细信息、绑定状态 | +| IF-WECHAT-006 | 账单信息查询接口 | 查询客户账单和欠费信息 | 微网厅系统 | HTTP/REST | 客户编号、查询月份范围 | 账单明细、欠费金额、阶梯用量 | +| IF-WECHAT-007 | 缴费处理接口 | 处理微信端发起的缴费业务 | 微网厅系统 | HTTP/REST | 客户编号、缴费金额、支付方式 | 缴费订单号、支付状态、发票信息 | +| IF-WECHAT-008 | 业务申请提交接口 | 提交报装、过户等业务申请 | 微网厅系统 | HTTP/REST | 申请类型、客户资料、申请材料 | 申请单号、预审结果、处理时限 | +| IF-WECHAT-009 | 电子发票申请接口 | 申请开具电子发票 | 微网厅系统 | HTTP/REST | 缴费订单号、发票抬头信息 | 电子发票PDF、发票代码和号码 | +| IF-WECHAT-011 | 账户绑定验证接口 | 验证客户身份并绑定微信账户 | 微网厅系统 | HTTP/REST | 客户编号、身份证号、手机号码 | 绑定验证结果、绑定关系ID | + +**工单管理系统对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-WO-001 | 工单创建接口 | 创建各类业务工单 | 营收/表务/报装/微网厅/APP | HTTP/REST | 工单类型、客户信息、问题描述、紧急程度 | 工单编号、预计处理时间、派发状态 | +| IF-WO-002 | 工单派发接口 | 向处理人/APP派发任务 | 工单管理系统 | HTTP/REST | 工单ID、处理人员、预期完成时间 | 派发结果、接收确认状态 | +| IF-WO-003 | 工单回填接口 | 回填处理结果与附件 | APP/各业务系统 | HTTP/REST | 工单ID、处理结果、现场图片、完成时间 | 回填状态、审核结果、客户满意度 | +| IF-WO-004 | 工单查询接口 | 查询工单状态和处理轨迹 | 各业务系统/客户端 | HTTP/REST | 工单编号/客户编号、查询条件 | 工单状态、处理进度、历史轨迹 | + +**表务管理系统对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-METER-001 | 库存查询接口 | 查询仓库库存状态和预警信息 | 工单/营收/报装系统 | HTTP/REST | 仓库编号、水表型号、库存状态 | 库存明细、预警状态、可用数量 | +| IF-METER-002 | 领用出库接口 | 支持换表/施工水表领用出库 | 工单管理系统 | HTTP/REST | 领用单号、水表型号、领用数量、领用人 | 出库状态、库存余量、领用凭证 | +| IF-METER-003 | 档案查询接口 | 查询水表设备档案信息 | 营收/工单/报装系统 | HTTP/REST | 水表编号、客户编号、查询类型 | 设备档案、安装历史、维修记录 | + +**报装业务系统对外接口(SYS-007)** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-INST-001 | 报装申请接口 | 提交报装申请信息与材料 | 微网厅/营收系统 | HTTP/REST | 申请人信息、用水地址、申请材料、联系方式 | 申请单号、预审结果、处理时限 | +| IF-INST-002 | 踏勘派工接口 | 现场踏勘任务派发 | 工单管理系统 | HTTP/REST | 报装单号、踏勘要求、预约时间 | 派工结果、踏勘人员、预计完成时间 | +| IF-INST-003 | 签章接口 | 调用CA系统进行电子签章 | CA电子签章系统 | HTTP/REST | 合同文档、签章类型、签章方信息 | 签章状态、签章文档、存证信息 | +| IF-INST-004 | 签章回执接口 | 接收CA系统签章完成回执 | CA电子签章系统 | HTTP/REST | 签章任务ID、签章结果、时间戳 | 接收确认、存档状态 | +| IF-INST-006 | 验收通水接口 | 验收合格并开通供水 | 营收业务系统 | HTTP/REST | 报装单号、验收结果、水表信息 | 开户结果、客户编号、通水状态 | + +**发票服务子系统对外接口** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-INV-001 | 统一开票接口 | 统一受理电子发票开具请求 | 营收业务系统/微网厅 | HTTP/REST | 开票信息、购买方信息、商品明细、税额 | 发票申请ID、开票状态、预计完成时间 | +| IF-INV-002 | 作废红冲接口 | 发票作废和红字发票处理 | 营收业务系统 | HTTP/REST | 原发票号码、作废/红冲原因、操作类型 | 处理结果、新发票信息、作废状态 | +| IF-INV-003 | 发票查询接口 | 查询发票状态和下载链接 | 营收系统/微网厅/客户端 | HTTP/REST | 发票代码、发票号码、查询类型 | 发票状态、PDF下载链接、发票详情 | +| IF-INV-004 | 回执推送接口 | 接收供应商发票处理回执 | 航天信息/博思等供应商 | HTTP/REST | 回执ID、处理结果、发票文件、时间戳 | 接收确认、存储状态、通知结果 | + +**支付与银行结算子系统对外接口(SYS-009)** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-PAY-001 | 统一支付下单接口 | 统一处理各渠道支付下单请求 | 营收系统/微网厅 | HTTP/REST | 订单信息、支付方式、支付金额、用户标识 | 预支付订单号、支付参数、二维码 | +| IF-PAY-002 | 统一关单接口 | 订单关闭和撤销处理 | 营收系统/微网厅 | HTTP/REST | 订单号、关闭原因、操作类型 | 关单状态、退款信息、处理结果 | +| IF-PAY-003 | 统一退款接口 | 原路退款和部分退款处理 | 营收系统/微网厅 | HTTP/REST | 原订单号、退款金额、退款原因 | 退款单号、退款状态、预计到账时间 | +| IF-PAY-004 | 支付回调接口 | 接收渠道支付结果回调 | 微信/支付宝/银联 | HTTP/REST | 回调数据、签名、时间戳 | 处理确认、业务更新状态 | +| IF-PAY-005 | 批量代扣送盘接口 | 银行批量代扣文件发送 | 营收业务系统 | HTTP/REST/SFTP | 代扣清单、客户签约信息、扣款金额 | 送盘状态、批次号、预计处理时间 | +| IF-PAY-006 | 批量代扣回盘接口 | 银行代扣结果回盘处理 | 银行系统 | HTTP/REST/SFTP | 回盘文件、处理结果、失败原因 | 解析结果、状态更新、异常处理 | +| IF-PAY-007 | 批量对账文件接口 | 银行对账文件处理分析 | 银行系统/营收系统 | HTTP/REST/SFTP | 对账文件、对账日期、差异规则 | 对账结果、差异明细、调整建议 | + +**消息服务子系统对外接口(SYS-010)** + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-MSG-001 | 短信发送接口 | 发送短信通知消息 | 营收/微网厅/工单系统 | HTTP/REST | 手机号、消息内容、模板ID、发送时间 | 发送状态、消息ID、预计到达时间 | +| IF-MSG-002 | 邮件发送接口 | 发送邮件通知消息 | 营收/工单/报装系统 | HTTP/REST | 邮箱地址、邮件主题、邮件内容、附件 | 发送状态、邮件ID、送达确认 | +| IF-MSG-003 | 站内信接口 | 发送系统站内消息 | 各业务系统 | HTTP/REST | 用户ID、消息标题、消息内容、消息类型 | 发送结果、消息状态、已读状态 | +| IF-MSG-005 | 外部系统对接接口 | 对接OA/智水擎等外部系统 | OA系统/智水擎/水投数科APP | HTTP/REST | 系统标识、消息类型、接收用户、消息内容 | 对接状态、消息分发结果 | + + + + +# 子系统1设计: 统一平台 + +## 任务概述 + +  统一平台是整个福建水务营收系统的基础支撑平台,负责为所有子系统提供统一的用户认证、权限管理、组织管理等基础服务。 + +**设计目标:** + +- 实现单点登录,用户一次认证即可访问所有授权的子系统 +- 提供统一的用户和权限管理,确保系统安全性 +- 支持多租户模式,满足集团化管理需求 +- 提供系统监控和运维支撑功能 + +**功能范围:** + +- **单点登录**:提供统一的登录入口,支持多种认证方式 +- **用户管理**:管理系统用户的基本信息、状态和权限 +- **角色管理**:定义和管理系统角色,实现基于角色的权限控制 +- **权限管理**:细粒度的功能权限和数据权限控制 +- **组织管理**:管理企业的部门结构和人员归属 +- **租户管理**:支持多租户模式,实现数据隔离和个性化配置 +- **系统监控**:实时监控系统运行状态和用户在线情况 + +## 设计概述 + +### 总体约束 + +**技术约束:** + +- 基于Spring Security + OAuth2.0+CAS协议实现认证授权 +- 采用JWT令牌实现无状态认证 +- 支持Redis分布式会话存储 +- 遵循RBAC权限控制模型 + +**性能约束:** + +- 用户认证响应时间≤1秒 +- 权限验证响应时间≤500ms +- 支持并发用户数≥200个 +- 系统可用性≥99.5% + +**安全约束:** + +- 支持密码复杂度策略 +- 提供登录安全控制(失败锁定、验证码等) +- 敏感数据加密存储 +- 完整的操作审计日志 + +### 子系统外部接口 + +**接口设计说明:** + +  统一平台为整个系统提供基础认证、权限、组织、字典等服务能力,采用OAuth2.0+CAS统一认证机制,支持多租户数据隔离和权限管理,为各业务子系统提供标准化的基础服务接口。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-UP-001 | 用户认证接口 | 用户登录认证和JWT令牌生成 | 所有业务子系统 | HTTP/REST | 用户名、密码、机构编号、验证码 | JWT令牌、用户信息、权限范围 | +| IF-UP-002 | 权限验证接口 | 验证用户访问资源权限 | 所有业务子系统 | HTTP/REST | JWT令牌、资源URL、操作类型 | 权限验证结果、资源访问权限 | +| IF-UP-003 | 用户信息接口 | 获取用户基本信息 | 营收/工单/表务系统 | HTTP/REST | 用户ID、查询范围 | 用户详细信息、角色权限 | +| IF-UP-004 | 组织架构接口 | 获取部门和员工组织信息 | 营收/工单/表务系统 | HTTP/REST | 部门ID、查询层级 | 部门信息、员工列表、权限范围 | +| IF-UP-005 | 实时通知接口 | 推送系统通知消息 | 所有业务子系统 | WebSocket | 消息内容、接收用户、消息类型 | 推送结果、送达状态 | + +### 设计方案概述 + +**架构设计:** + +  统一平台采用基于Spring Boot的微服务架构,使用Spring Security + OAuth2.0+CAS协议实现认证授权,Redis存储会话和缓存数据,支持水平扩展。 + +**技术选型:** + +- **认证授权**:Spring Security + OAuth2.0 + CAS协议 + JWT +- **缓存存储**:Redis 6.0+(分布式缓存) +- **数据库**:达梦数据库 8.0+ +- **消息队列**:RabbitMQ(异步通知) +- **监控日志**:Prometheus + Grafana + ELK + +## 子系统架构设计 + +  统一平台采用分层架构设计,从下至上分为数据层、业务层、服务层和应用层,确保系统的可维护性和可扩展性。 + + +```mermaid +graph TB + subgraph "统一平台架构" + subgraph "应用层" + A1[Web管理界面] + A2[移动端界面] + A3[API网关] + end + + subgraph "服务层" + B1[认证服务] + B2[权限服务] + B3[用户服务] + B4[组织服务] + B5[监控服务] + end + + subgraph "业务层" + C1[登录业务] + C2[权限业务] + C3[用户管理业务] + C4[组织管理业务] + C5[系统监控业务] + end + + subgraph "数据层" + D1[(用户数据库)] + D2[(权限数据库)] + D3[(日志数据库)] + D4[Redis缓存] + end + end + + A1 --> B1 + A2 --> B1 + A3 --> B2 + B1 --> C1 + B2 --> C2 + B3 --> C3 + B4 --> C4 + B5 --> C5 + C1 --> D1 + C2 --> D2 + C3 --> D1 + C4 --> D1 + C5 --> D3 + C1 --> D4 + C2 --> D4 + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | +|---|---|---|---| +| UP-001 | 单点登录模块 | 用户认证、授权管理、多种登录方式支持 | 自行开发 | +| UP-002 | 系统管理模块 | 用户、角色、部门、菜单等基础数据管理 | 自行开发 | +| UP-003 | 权限控制模块 | RBAC权限模型、菜单权限、数据权限 | 自行开发 | +| UP-004 | 租户管理模块 | 多租户数据隔离、租户配置管理 | 自行开发 | +| UP-005 | 系统监控模块 | 在线用户监控、系统性能监控、操作日志 | 自行开发 | + +### 模块间关系 + +**权限管理功能群:** + +  权限管理功能群是统一平台的核心,实现了完整的RBAC权限控制模型。 + + +```mermaid +graph TB + subgraph "权限管理功能群" + A[UP-002 系统管理模块-用户管理功能] + B[UP-003 系统管理模块-角色管理功能] + C[UP-003 系统管理模块-菜单管理功能] + D[UP-004 系统管理模块-部门管理功能] + E[UP-005 权限控制模块-权限控制功能] + end + + A -->|用户角色关联| B + B -->|角色权限关联| C + A -->|用户部门关联| D + E -->|权限验证| A + E -->|权限验证| B + E -->|权限验证| C + + A -.->|数据权限| D + B -.->|功能权限| C + +``` + + +**功能群说明:** + +- 用户管理模块负责用户基本信息维护 +- 角色管理模块定义系统角色和权限 +- 菜单管理模块配置系统功能菜单 +- 部门管理模块维护组织架构 +- 权限控制模块实现统一的权限验证 + +**系统监控功能群:** + +  系统监控功能群提供对整个系统运行状态的监控和管理。 + + +```mermaid +graph TB + subgraph "系统监控功能群" + F[在线用户监控] + G[系统性能监控] + H[操作日志管理] + I[系统配置管理] + end + + F -->|用户行为| H + G -->|性能数据| H + I -->|配置变更| H + + F -.->|实时监控| G + H -.->|日志分析| G + +``` + + +### 模块描述 + +#### UP-001: 单点登录 + +**功能描述:** + +  单点登录模块基于OAuth2.0+CAS协议实现,提供统一的用户认证入口,支持多种登录方式和安全策略。该模块是整个系统安全的第一道防线,确保只有合法用户才能访问系统。 + +**主要功能:** + +1. **用户名密码登录**:传统的用户名密码认证方式 +2. **手机号短信登录**:基于短信验证码的快速登录 +3. **第三方登录**:支持微信、支付宝等第三方平台登录 +4. **OAuth2.0单点登录**:基于OAuth2.0+CAS协议,一次登录,多系统访问 +5. **自动登录**:支持"记住我"功能 +6. **安全控制**:密码策略、登录限制、验证码等 + +**技术实现:** + +- 基于JWT令牌的无状态认证 +- Redis存储用户会话信息 +- Spring Security实现安全控制 +- 支持多种加密算法 + +#### UP-002: 系统管理 + +**功能描述:** + +  系统管理模块提供系统基础数据的维护功能,包括用户、角色、部门、菜单等核心数据的管理。 + +**主要功能:** + +1. **用户管理**:用户信息的增删改查、状态管理、权限分配 +2. **角色管理**:角色定义、权限分配、角色用户关联 +3. **部门管理**:组织架构的维护、层级关系管理 +4. **菜单管理**:系统菜单的配置、权限关联 +5. **字典管理**:系统字典数据的维护 +6. **参数管理**:系统参数的配置和管理 + +**业务规则:** + +- 用户名全局唯一 +- 手机号不能重复 +- 超级管理员不能被删除 +- 部门删除前需要先移除下属用户 + +#### UP-003: 权限控制 + +**功能描述:** + +  权限控制模块基于"主库+租户库"的多数据库架构,实现RBAC(基于角色的访问控制)模型的权限管理。通过统一的权限控制中心与租户独立的权限数据相结合,提供细粒度的功能权限和数据权限控制,同时支持跨租户用户授权的复杂场景。 + +**多库权限架构设计:** + + +```mermaid +graph TB + subgraph "主库(Master Database)" + MP[统一平台权限] + MT[租户管理权限] + MU[跨租户用户关系] + MA[全局审计日志] + end + + subgraph "租户库A(Tenant-A Database)" + TA_U[用户表 system_user] + TA_R[角色表 system_role] + TA_UR[用户角色关系 system_user_role] + TA_RM[角色菜单权限 system_role_menu] + TA_D[部门表 system_dept] + end + + subgraph "租户库B(Tenant-B Database)" + TB_U[用户表 system_user] + TB_R[角色表 system_role] + TB_UR[用户角色关系 system_user_role] + TB_RM[角色菜单权限 system_role_menu] + TB_D[部门表 system_dept] + end + + subgraph "权限控制引擎" + PE[权限验证引擎] + PC[权限缓存层] + PR[权限路由器] + end + + MP -.->|统一平台管理| PE + MT -.->|租户权限元数据| PE + MU -.->|跨租户关系| PE + + PE -->|权限路由| PR + PR -->|租户A权限| TA_U + PR -->|租户B权限| TB_U + + PE --> PC + PC -.->|缓存同步| TA_R + PC -.->|缓存同步| TB_R + +``` + + +**主要功能:** + +1. **多库权限统一管理** + - **主库权限管理**:统一平台功能权限、租户管理权限、系统级别权限 + - **租户库权限管理**:每个租户独立的用户、角色、权限数据 + - **权限数据路由**:根据用户所属租户动态路由到对应的租户数据库 + - **跨库权限验证**:支持跨租户用户的权限验证与切换 + +2. **RBAC权限模型实现** + - **功能权限控制**:基于菜单和按钮的功能权限控制 + - **数据权限控制**:基于组织架构的数据权限隔离 + - **角色继承体系**:支持角色间的权限继承关系 + - **动态权限分配**:支持运行时动态调整用户权限 + +3. **多租户权限隔离** + - **租户级别隔离**:每个租户的权限数据完全物理隔离 + - **用户多租户授权**:用户可在多个租户中拥有不同角色和权限 + - **权限继承与覆盖**:支持从上级租户继承权限并允许覆盖 + - **租户间权限依赖**:处理母子公司间的权限依赖关系 + +4. **接口权限验证** + - **API接口级别权限验证**:每个接口请求都进行权限校验 + - **租户上下文识别**:自动识别当前用户的租户上下文 + - **动态数据源切换**:根据权限验证结果切换到正确的租户数据库 + - **权限异常处理**:统一的权限异常处理和降级策略 + +5. **权限缓存管理** + - **多级缓存策略**:主库+租户库的分层缓存 + - **权限数据实时更新**:权限变更时的缓存实时同步 + - **缓存预热机制**:系统启动时预加载热点权限数据 + - **缓存失效策略**:精确的缓存失效和更新机制 + +**多库数据模型:** + +**主库权限数据结构:** + +**1. 租户与用户关系表(tenant_user_relation)** +- **表功能**:管理跨租户用户授权关系,记录用户在不同租户中的授权状态 +- **核心字段**: + - 主键标识:唯一标识每条授权关系 + - 租户标识:指向被授权的目标租户 + - 用户标识:指向被授权的用户 + - 授权类型:区分所有者(owner)、成员(member)、访客(guest)三种类型 + - 授权人标识:记录执行授权操作的管理员 + - 授权时间:记录授权建立的时间戳 + - 过期时间:设置授权的有效期限,支持临时访问 + - 状态标识:标记授权关系是否有效,支持动态启用/禁用 + +**2. 全局权限配置表(global_permission)** +- **表功能**:维护系统级别的权限定义,为各租户提供统一的权限基准 +- **核心字段**: + - 主键标识:唯一标识每个权限配置 + - 权限代码:系统内唯一的权限标识符,如"USER_MANAGE"、"BILL_QUERY" + - 权限名称:面向用户的权限描述,支持多语言 + - 权限类型:区分菜单权限(menu)、按钮权限(button)、接口权限(api) + - 父权限标识:构建权限树形结构,支持权限继承 + - 排序序号:控制权限在界面上的显示顺序 + - 状态标识:标记权限是否启用,支持权限的动态管理 + +**租户库权限数据结构:** + +**1. 用户基础信息表(system_user)** +- **表功能**:存储租户内部的用户基础信息和账户状态 +- **核心字段**: + - 主键标识:租户内用户的唯一标识 + - 用户账号:登录用户名,在租户内保持唯一性 + - 密码哈希:加密存储的用户密码 + - 用户昵称:显示名称,提升用户体验 + - 部门标识:关联用户所属的组织部门 + - 电子邮箱:用户联系邮箱,支持邮件通知 + - 手机号码:用户联系电话,支持短信验证 + - 用户性别:基础个人信息 + - 账户状态:标记用户是否启用、锁定等状态 + - 租户编号:明确用户所属的租户,支持数据隔离 + +**2. 角色定义表(system_role)** +- **表功能**:定义租户内的角色体系,实现权限的集中管理 +- **核心字段**: + - 主键标识:租户内角色的唯一标识 + - 角色名称:角色的显示名称,如"水务管理员"、"收费员" + - 角色代码:系统内部的角色标识符,用于权限验证 + - 显示顺序:控制角色在选择列表中的排序 + - 数据范围:定义角色的数据访问范围(全部、本部门、仅本人等) + - 角色状态:标记角色是否启用 + - 角色类型:区分系统内置角色和自定义角色 + - 租户编号:明确角色所属的租户 + +**3. 用户角色关联表(system_user_role)** +- **表功能**:建立用户与角色的多对多关联关系 +- **核心字段**: + - 主键标识:唯一标识每个用户-角色关联关系 + - 用户标识:关联到具体的用户记录 + - 角色标识:关联到具体的角色记录 + - 租户编号:确保关联关系在正确的租户范围内 + +**4. 角色菜单权限关联表(system_role_menu)** +- **表功能**:定义角色具体拥有的菜单和功能权限 +- **核心字段**: + - 主键标识:唯一标识每个角色-菜单权限关联 + - 角色标识:关联到具体的角色记录 + - 菜单标识:关联到具体的菜单或功能权限 + - 租户编号:确保权限配置在正确的租户范围内 + +**权限验证流程:** + + +```mermaid +flowchart TD + A[用户请求] --> B{用户已登录?} + B -->|否| C[跳转登录页面] + B -->|是| D[解析JWT令牌] + + D --> E[获取当前租户上下文] + E --> F{是否跨租户操作?} + + F -->|否| G[连接当前租户数据库] + F -->|是| H[验证跨租户授权关系] + + H --> I{授权关系有效?} + I -->|否| J[权限拒绝] + I -->|是| K[切换目标租户上下文] + + G --> L[查询用户权限] + K --> L + + L --> M[权限缓存查询] + M --> N{缓存命中?} + + N -->|是| O[返回缓存权限] + N -->|否| P[数据库查询权限] + + P --> Q[更新权限缓存] + Q --> O + O --> R[权限验证] + + R --> S{权限验证通过?} + S -->|是| T[允许访问] + S -->|否| J + + T --> U[记录访问日志] + J --> V[记录拒绝日志] + +``` + + +**技术实现:** + +1. **权限验证引擎** + - Spring Security + 自定义权限验证器 + - 多数据源动态切换(基于租户上下文) + - 权限注解式控制(@PreAuthorize) + - 权限表达式引擎(SpEL) + +2. **多库数据访问** + - MyBatis-Plus多数据源配置 + - 动态数据源路由器(基于租户ID) + - 数据源连接池优化 + - 读写分离支持 + +3. **权限缓存策略** + - Redis分布式缓存 + - 权限数据分层缓存(全局+租户) + - 缓存键命名规范(tenant:{tenant_id}:user:{user_id}:permissions) + - 权限变更事件驱动缓存更新 + +4. **跨租户权限处理** + - 租户上下文传递(ThreadLocal + RequestFilter) + - 跨租户权限验证链 + - 租户切换权限检查 + - 权限降级和异常处理 + +**核心业务规则:** + +1. **权限验证优先级**:主库权限 > 租户库权限 > 默认权限 +2. **跨租户访问控制**:需要显式授权,禁止越权访问 +3. **权限缓存TTL**:用户权限缓存30分钟,角色权限缓存2小时 +4. **数据权限范围**:支持全部、本部门、本部门及子部门、仅本人 +5. **权限继承规则**:子租户可继承父租户的基础权限,但可以覆盖 + +#### UP-004: 租户管理 + +**功能描述:** + +  租户管理模块基于"主库+租户库"的多数据库架构,提供完整的多租户架构支持,实现租户间物理级别的数据隔离、配置管理,以及跨租户用户授权等高级功能。该模块是实现集团化管理的核心基础设施。 + +**多库租户架构设计:** + + +```mermaid +graph TB + subgraph "主库(Master Database)" + MT[租户基础信息 sys_tenant] + MTC[租户配置参数 sys_tenant_config] + MTD[租户数据库映射 sys_tenant_database] + MTU[跨租户用户关系 tenant_user_relation] + MTA[全局审计日志 sys_audit_log] + end + + subgraph "租户库A(福州水务)" + TA_USER[租户用户 tenant_user] + TA_DEPT[组织架构 tenant_department] + TA_CONFIG[业务配置 tenant_business_config] + TA_BIZ[业务数据表群] + end + + subgraph "租户库B(厦门水务)" + TB_USER[租户用户 tenant_user] + TB_DEPT[组织架构 tenant_department] + TB_CONFIG[业务配置 tenant_business_config] + TB_BIZ[业务数据表群] + end + + subgraph "租户管理引擎" + TME[租户管理引擎] + TR[租户路由器] + TCC[跨库事务协调器] + TDM[数据库动态管理器] + end + + MT -.->|租户信息管理| TME + MTC -.->|配置参数管理| TME + MTD -.->|数据库映射| TME + MTU -.->|跨租户授权| TME + + TME --> TR + TR -->|路由A| TA_USER + TR -->|路由B| TB_USER + + TME --> TCC + TCC -.->|分布式事务| TA_BIZ + TCC -.->|分布式事务| TB_BIZ + + TME --> TDM + TDM -.->|动态管理| TA_CONFIG + TDM -.->|动态管理| TB_CONFIG + +``` + + +**主要功能:** + +1. **租户基础管理** + - 租户创建、编辑、删除 + - 租户状态管理(启用、禁用、过期) + - 租户基本信息维护 + - 租户层级结构管理(支持母公司-子公司模式) + +2. **多库数据隔离管理** + - **主库租户管理**:在主库中统一管理所有租户的基础信息、层级关系、配置参数 + - **租户专属数据库**:为每个租户创建独立的数据库实例,实现物理级别的数据隔离 + - **跨库关系管理**:在主库中维护跨租户用户授权关系和全局配置信息 + - **租户级别缓存隔离**:基于租户标识的分布式缓存命名空间隔离 + - **文件存储隔离**:租户专属的文件存储目录和访问控制 + +3. **跨租户用户授权机制** + - **用户多租户绑定**:支持一个用户绑定多个租户 + - **租户间用户授权**:租户管理员可以将其他租户的用户授权到本租户 + - **权限继承与隔离**:用户在不同租户下可拥有不同的角色和权限 + - **租户切换**:用户可在已授权的多个租户间自由切换 + +4. **租户配置管理** + - 租户级别的业务参数配置 + - 租户专属的菜单和功能配置 + - 租户品牌定制(Logo、主题色等) + - 租户级别的集成配置 + +**跨租户用户授权业务流程:** + + +```mermaid +graph TD + A[租户A管理员] --> B{选择授权用户} + B --> C[搜索其他租户用户] + C --> D[选择租户B的用户X] + D --> E[配置在租户A中的角色] + E --> H[设置数据权限范围] + H --> I[建立用户X在租户A的权限关系] + I --> J[用户X可访问租户A系统] + J --> K[用户X可在租户A/B间切换] + + M[用户X登录] --> N{选择租户} + N --> O[租户A - 角色A权限] + N --> P[租户B - 角色B权限] + +``` + + +**多库租户管理数据模型:** + +**主库租户管理数据结构:** + +**1. 租户基础信息表(sys_tenant)** +- **表功能**:统一管理所有租户的基础信息和层级关系 +- **核心字段**: + - 主键标识:全系统唯一的租户标识符 + - 租户编码:业务层面的租户唯一编码,格式规范化 + - 租户名称:面向用户的租户显示名称 + - 父租户标识:支持母子公司层级结构 + - 租户类型:区分集团总部、分公司、子公司等类型 + - 联系信息:租户联系人、电话、邮箱等 + - 数据库配置:租户专属数据库的连接配置信息 + - 状态标识:租户启用、禁用、过期等状态 + - 创建信息:创建时间、创建人等审计信息 + +**2. 租户配置参数表(sys_tenant_config)** +- **表功能**:管理租户级别的业务参数和系统配置 +- **核心字段**: + - 主键标识:配置项的唯一标识 + - 租户标识:关联的租户信息 + - 配置分类:区分业务参数、系统配置、集成配置等 + - 配置键名:配置项的标识符 + - 配置值:具体的配置内容,支持JSON格式 + - 配置描述:配置项的说明信息 + - 是否加密:敏感配置的加密标识 + - 生效状态:配置是否启用 + +**3. 租户数据库映射表(sys_tenant_database)** +- **表功能**:管理租户与数据库实例的映射关系 +- **核心字段**: + - 主键标识:映射关系的唯一标识 + - 租户标识:关联的租户信息 + - 数据库标识:租户专属数据库的标识符 + - 连接配置:数据库连接字符串和参数 + - 读写配置:支持读写分离的配置信息 + - 容量配置:数据库容量限制和监控阈值 + - 备份配置:备份策略和恢复配置 + - 状态信息:数据库运行状态和健康检查 + +**租户库业务数据结构:** + +**1. 租户用户信息表(tenant_user)** +- **表功能**:存储租户内部的用户信息和组织关系 +- **核心字段**: + - 主键标识:租户内用户的唯一标识 + - 全局用户标识:关联主库中的用户信息 + - 用户编号:租户内部的用户编号 + - 部门标识:用户所属的组织部门 + - 职位信息:用户在租户内的职位和级别 + - 入职信息:用户在租户的入职时间和状态 + - 权限范围:用户在租户内的数据访问范围 + - 业务角色:用户在业务流程中的角色定位 + +**2. 租户组织架构表(tenant_department)** +- **表功能**:管理租户内部的组织架构和部门层级 +- **核心字段**: + - 主键标识:部门的唯一标识 + - 部门编码:租户内部的部门编码 + - 部门名称:部门的显示名称 + - 父部门标识:构建部门层级结构 + - 部门层级:部门在组织架构中的层级深度 + - 负责人信息:部门负责人和联系方式 + - 业务范围:部门负责的业务领域 + - 状态信息:部门的启用状态和变更历史 + +**3. 租户业务配置表(tenant_business_config)** +- **表功能**:管理租户特定的业务参数和流程配置 +- **核心字段**: + - 主键标识:配置项的唯一标识 + - 业务模块:配置所属的业务模块 + - 配置类型:区分费率、流程、规则等配置类型 + - 配置内容:具体的业务配置参数 + - 生效范围:配置的适用范围和条件 + - 生效时间:配置的生效和失效时间 + - 审核信息:配置变更的审核记录 + +**跨租户授权核心规则:** + +1. **授权主体规则** + - 只有租户管理员或超级管理员可以进行跨租户用户授权 + - 被授权用户必须是已存在的系统用户 + - 授权操作需要记录完整的审计日志 + +2. **权限隔离规则** + - 用户在不同租户下的权限完全独立 + - 租户A的管理员无法查看用户在租户B的权限信息 + - 跨租户数据访问严格按照数据权限控制 + +3. **会话管理规则** + - 用户登录后默认进入主租户(第一个绑定的租户) + - 租户切换需要重新进行权限验证 + - 同一用户在不同租户的会话信息独立存储 + +4. **授权生命周期规则** + - 支持设置授权有效期 + - 到期自动失效,需要重新申请 + - 支持授权撤销,立即生效 + +**多库架构技术实现:** + +**1. 主库租户管理引擎** +- **租户信息统一管理**:主库集中管理所有租户的基础信息、配置参数、层级关系 +- **数据库实例管理**:动态创建、配置和管理租户专属数据库实例 +- **跨库事务协调**:分布式事务管理器确保跨租户操作的数据一致性 +- **租户路由器**:根据用户上下文自动路由到正确的租户数据库 + +**2. 租户数据库动态管理** +- **数据库实例创建**:基于模板自动为新租户创建独立数据库实例 +- **Schema同步管理**:统一的数据库结构版本管理和升级机制 +- **连接池管理**:每个租户数据库的独立连接池配置和监控 +- **数据迁移工具**:支持租户数据的导入、导出和迁移功能 + +**3. 多租户会话管理** +- **租户上下文传递**:ThreadLocal + Request Header的租户标识传递机制 +- **会话状态隔离**:Redis分布式缓存的租户命名空间隔离 +- **权限缓存分层**:主库权限 + 租户权限的两级缓存策略 +- **切换状态同步**:租户切换时的权限重载和会话状态更新 + +**4. 跨租户授权协调** +- **授权关系存储**:主库统一存储和管理所有跨租户授权关系 +- **权限验证引擎**:跨库权限验证和数据访问控制 +- **授权流程引擎**:支持复杂的多级审批和自动化授权流程 +- **审计日志统一**:所有跨租户操作的统一审计和监控 + +**多库架构业务规则:** + +**1. 租户管理规则** +- 租户编码全局唯一,格式:水务公司简称+年份+3位流水号 +- 每个租户必须拥有独立的数据库实例,不允许共享 +- 租户创建时自动生成标准的数据库Schema结构 +- 租户删除前必须先完成数据备份和迁移确认 + +**2. 数据隔离规则** +- 租户数据库之间严格物理隔离,禁止直接跨库访问 +- 跨租户数据访问必须通过主库的授权关系验证 +- 租户数据库连接池独立配置,避免资源争用 +- 敏感数据在租户库中加密存储,密钥独立管理 + +**3. 用户授权规则** +- 用户在单个租户下最多可拥有5个角色 +- 跨租户授权操作需要双方租户管理员审批 +- 一个用户最多可以绑定10个租户 +- 用户在不同租户下的身份信息完全独立 +- 跨租户授权关系统一在主库中管理和审计 + +**4. 事务协调规则** +- 涉及多个租户的操作必须使用分布式事务 +- 单租户内的操作在租户库内保证ACID特性 +- 跨库操作失败时自动回滚所有相关变更 +- 重要业务操作需要在主库记录操作日志 + +**5. 性能管理规则** +- 每个租户数据库设置容量上限和性能监控 +- 大租户可配置读写分离和分库分表策略 +- 租户切换操作限制频率,防止系统资源滥用 +- 定期清理过期的授权关系和会话数据 + +#### UP-005: 系统监控 + +**功能描述:** + +  系统监控模块提供全面的系统运行状态监控、性能指标收集和运维管理功能。 + +**主要功能:** + +1. **在线用户监控**:实时监控在线用户数量、用户行为、异常登录 +2. **系统性能监控**:CPU、内存、磁盘、网络等系统资源监控 +3. **操作日志管理**:用户操作日志记录、查询、分析 +4. **告警管理**:系统异常告警、性能阈值告警 + +**技术实现:** + +- Micrometer + Prometheus监控指标收集 +- ELK Stack日志分析 +- Redis存储实时监控数据 +- WebSocket实时推送监控信息 + + + +# 子系统2设计: 营收业务系统 + +## 任务概述 + +  营收业务系统是整个福建水务营收系统的核心业务系统,负责处理从客户管理到账务处理的完整营收业务流程,整合了原营收系统、表务系统、报装系统、客户服务、微网厅等所有核心业务功能。 + +**设计目标:** + +- 实现统一的营收业务管理,涵盖水务企业全业务场景 +- 提供完整的客户服务体验,从线下到线上的全渠道服务 +- 支持表务全生命周期管理,确保设备资产的有效管控 +- 实现报装业务流程标准化,提高服务效率和客户满意度 + +**功能范围:** + +  营收业务系统包含两大核心模块群,实现水务企业营收业务闭环: + +#### 营收核心模块群 + +- **客户资料管理**:客户档案建立、信息维护、分组管理 +- **抄表开账**:抄表数据录入、复核确认、自动开账 +- **营业收费**:柜台收费、移动收费、在线缴费 +- **账务处理**:一期先聚焦水量调整、金额调整、退款、冲正、坏账申请,统一经 `IF-REV-007` 承接,并按共性能力先统一、场景能力再分批推进 +- **发票管理**:发票开具、查询、重开、作废 +- **催缴管理**:欠费统计、催缴通知、停水管理 +- **统计分析**:多维度数据统计和报表分析 +- **代收业务**:银行代扣、聚合支付等代收渠道 +- **业务配置**:业务参数配置 + +#### 客户服务模块群 + +- **账户绑定管理**:微信/支付宝账户绑定和管理 +- **信息查询服务**:账单查询、用水历史、缴费记录等 +- **在线缴费服务**:多渠道在线缴费服务 +- **电子发票服务**:电子发票开具、查询、推送 +- **营业网点服务**:网点查询、地图导航、预约服务 +- **业务办理服务**:各类业务在线申请和办理 + +**核心业务流程:** +  客户建档 → 抄表录入 → 复核开账 → 营业收费 → 账务处理 → 发票管理 → 催缴管理 + +## 设计概述 + +### 总体约束 + +**技术约束:** + +- 基于Spring Boot微服务架构实现 +- 采用事务处理确保数据一致性 +- 支持分布式锁处理并发访问 +- 遵循水务行业财务规范 + +**性能约束:** + +- 支持10万+客户的业务处理 +- 抄表开账处理能力≥5000户/小时 +- 收费交易响应时间≤2秒 +- 报表生成时间≤30秒 + +**安全约束:** + +- 财务数据加密存储 +- 关键操作需要审批流程 +- 完整的操作审计日志 +- 支付接口安全认证 + +### 子系统外部接口 + +**接口设计说明:** + +  营收业务系统作为核心业务平台,整合客户管理、账务处理、抄表计费、工单管理、报装业务等完整业务流程。系统提供标准化的RESTful接口,支持多租户业务配置,确保水务营收业务的高效运营和数据一致性。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-REV-001 | 客户信息查询接口 | 查询客户档案、账户状态、联系人与水表绑定关系 | 柜台/客户渠道/工单 | HTTPS REST | 客户ID、客户编号、手机号、查询类型 | 客户档案、账户信息、联系人列表、水表绑定关系 | +| IF-REV-004 | 抄表数据提交接口 | 提交人工或远传抄表数据并触发校验 | 手机抄表APP/集抄系统 | HTTPS REST | 抄表任务ID、水表ID、读数、图片证据、GPS位置 | 上传结果、校验状态、异常标记 | +| IF-REV-005 | 账单生成接口 | 根据抄表结果、水价模板和费用组成生成账单 | 开账任务/批量任务 | HTTPS REST | 抄表批次、账期、客户范围、应收日期 | 账单结果、失败清单、生成汇总 | +| IF-REV-006 | 缴费处理接口 | 创建收费记录并核销账单 | 柜台/线上渠道 | HTTPS REST | 客户ID、账单ID列表、支付方式、实收金额 | 收费结果、核销状态、交易流水 | +| IF-REV-008 | 发票申请接口 | 发起电子发票申请并接收票据状态回写 | 柜台/客户渠道 | HTTPS REST | 客户ID、账单ID列表、开票抬头、税号、邮箱 | 发票申请结果、票据状态、下载地址 | +| IF-REV-011 | 银行代收协同接口 | 发起代扣、回盘、对账、结算协同 | 银行代收模块/SYS-009 | HTTPS REST / 文件交换 | 批次号、渠道编码、账期、账单明细 | 批次状态、回盘结果、对账差异、结算结果 | +| IF-REV-012 | 业务参数配置接口 | 查询和维护价格模板、优惠方案、业务参数配置 | 管理后台/参数管理端 | HTTPS REST | 参数分类、模板编码、站点范围 | 参数明细、模板信息、更新结果 | +| IF-CS-001 | 账户绑定接口 | 绑定、解绑、切换默认客户 | 微信/支付宝/微网厅 | HTTPS REST | 渠道用户标识、客户编号、身份校验信息 | 绑定结果、默认客户信息、绑定关系 | +| IF-CS-002 | 历史账单查询接口 | 查询账单、欠费、用水历史、缴费记录 | 客户端 | HTTPS REST | 客户ID、账期范围、查询类型 | 账单列表、欠费金额、用水趋势、缴费记录 | +| IF-CS-003 | 在线支付下单接口 | 创建微信/支付宝线上支付订单 | 客户端 | HTTPS REST | 客户ID、账单ID列表、支付渠道、支付金额 | 订单号、支付二维码/预支付信息、订单状态 | +| IF-CS-004 | 发票申请接口 | 提交电子发票申请、查询发票状态 | 客户端 | HTTPS REST | 缴费订单号、发票抬头、邮箱/手机号 | 发票状态、发票链接、申请结果 | +| IF-CS-005 | 网点与业务办理接口 | 查询营业网点、预约信息、可办事项 | 客户端 | HTTPS REST | 行政区划、关键字、业务类型 | 网点列表、营业时间、可办业务、预约信息 | +| IF-CS-006 | 业务办理进度接口 | 提交业务申请、查询办理进度与附件 | 客户端 | HTTPS REST | 申请类型、客户资料、附件清单、申请单号 | 受理结果、流程状态、进度轨迹、补件要求 | +| IF-CS-007 | 柜面扫码支付接口 | 创建柜面扫码支付订单并回写结果 | 柜台终端/营业前台 | HTTPS REST | 柜台编号、账单ID列表、订单金额、支付渠道 | 订单号、支付状态、回写结果 | + +### 设计方案概述 + +**架构设计:** + +  营收系统采用领域驱动设计(DDD),按业务领域划分为客户域、抄表域、收费域、账务域等,每个域独立部署,通过事件驱动实现域间协作。 + +**技术选型:** + +- **业务框架**:Spring Boot + MyBatis-Plus +- **工作流引擎**:Flowable(处理业务审批流程) +- **分布式事务**:Seata(确保数据一致性) +- **消息队列**:RabbitMQ(异步处理和事件通知) +- **缓存策略**:Redis(热点数据缓存) + +## 子系统架构设计 + +  营收系统采用DDD领域驱动设计,按业务领域进行模块划分,实现高内聚低耦合的架构设计。系统核心分为**营收核心模块群**和**客户服务模块群**两大业务板块。 + + +```mermaid +graph TB + subgraph "营收系统整体架构" + subgraph "应用层 - Application Layer" + A1[Web管理界面
管理端] + A2[移动收费界面
收费端] + A3[API接口层
接口网关] + end + + subgraph "业务服务层 - Business Service Layer" + subgraph " 营收核心模块群 REV-001~009" + subgraph "核心业务流程" + B1[REV-001
客户管理服务
客户基础] + B2[REV-002
抄表开账服务
业务源头] + B3[REV-003
营业收费服务
收入核心] + B4[REV-004
账务处理服务
财务核心] + end + + subgraph "辅助业务支撑" + B5[REV-005
发票管理服务
票据管理] + B6[REV-006
催缴管理服务
收益保障] + B7[REV-007
统计分析服务
决策支持] + B8[REV-008
代收业务服务
渠道扩展] + B9[REV-009
业务参数配置
基础配置] + end + end + + %% 工单管理模块群已独立为SYS-005 + end + + subgraph "领域层 - Domain Layer" + subgraph "营收核心业务领域" + C1[客户领域
Customer Domain
] + C2[抄表领域
Meter Reading Domain
] + C3[收费领域
Billing Domain
] + C4[账务领域
Accounting Domain
] + C5[发票领域
Invoice Domain
] + end + + subgraph "工单管理业务领域" + C6[工单统一领域
WorkOrder Domain
] + C61[工单流程引擎
Workflow Engine
] + C62[工单状态管理
Status Management
] + C63[工单智能监控
Monitor & Alert
🔔] + end + end + + subgraph "基础设施层 - Infrastructure Layer" + D1[(达梦数据库集群
DM Database Cluster
核心存储)] + D2[Redis分布式缓存
Distributed Cache
高速缓存] + D3[MinIO文件存储
Distributed File Storage
文件管理] + D4[RabbitMQ消息队列
Message Queue
异步通信] + D5[支付与结算服务(SYS-009)
Payment & Settlement
聚合支付/代扣/对账] + D6[Flowable工作流引擎
Workflow Engine
流程引擎] + end + + subgraph "外部系统集成" + E1[手机抄表APP
移动端] + E2[微网厅系统
线上服务] + E3[表务系统
设备管理] + end + end + + %% 应用层到业务服务层连接 + A1 --> B1 + A1 --> B9 + A2 --> B3 + A3 --> B8 + A3 --> B9 + + %% 营收核心模块群内部业务流程 + B1 -->|客户数据| B2 + B2 -->|账单数据| B3 + B3 -->|收费数据| B4 + B4 -->|财务数据| B5 + B1 -.->|客户信息| B6 + B3 -.->|收费统计| B7 + B8 -.->|代收数据| B3 + + %% 工单管理模块群已独立为SYS-005 + + %% 业务服务层到领域层映射 + B1 --> C1 + B2 --> C2 + B3 --> C3 + B4 --> C4 + B5 --> C5 + B6 --> C1 + B7 --> C3 + B8 --> C3 + + %% 工单领域移至SYS-005 + + %% 领域层到基础设施层 + C1 --> D1 + C2 --> D1 + C3 --> D1 + C4 --> D1 + C5 --> D3 + C6 --> D4 + C61 --> D6 + C62 --> D2 + C63 --> D4 + B8 --> D5 + + %% 外部系统集成(工单流转由SYS-005承担) + + %% 样式定义 + classDef coreModuleGroup fill:#e3f2fd,stroke:#1976d2,stroke-width:4px,color:#000 + classDef workorderModuleGroup fill:#fce4ec,stroke:#c2185b,stroke-width:4px,color:#000 + classDef coreModule fill:#e1f5fe,stroke:#0277bd,stroke-width:2px + classDef workorderModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef coreDomain fill:#e8f5e8,stroke:#388e3c,stroke-width:2px + classDef workorderDomain fill:#fff3e0,stroke:#f57c00,stroke-width:2px + classDef infrastructure fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px + classDef external fill:#e0f2f1,stroke:#00695c,stroke-width:2px + + %% 应用样式 + class B1,B2,B3,B4,B5,B6,B7,B8,B9 coreModule + class B9,B91,B92,B93,B94 workorderModule + class C1,C2,C3,C4,C5 coreDomain + class C6,C61,C62,C63 workorderDomain + class D1,D2,D3,D4,D5,D6 infrastructure + class E1,E2,E3 external + +``` + + +## 模块定义 + +### 模块列表 + +  营收系统的模块按业务性质分为两大模块群: + +#### 营收核心模块群 + +  营收核心业务模块,实现从客户管理到收费账务的完整业务链条,并通过 SYS-008 发票服务、SYS-009 支付与银行结算、SYS-010 消息服务形成跨子系统协同闭环: + +| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | +|---|---|---|---| +| REV-001 | 客户资料管理 | 客户档案管理、客户分组、信息变更 | 自行开发 | +| REV-002 | 抄表开账 | 抄表录入、复核开账、异常处理 | 自行开发 | +| REV-003 | 营业收费 | 柜台收费、移动收费、在线缴费 | 自行开发 | +| REV-004 | 账务处理 | 账务调整、退款处理、坏账管理 | 自行开发 | +| REV-005 | 发票管理 | 发票开具、查询管理、电子发票 | 自行开发 | +| REV-006 | 催缴管理 | 欠费催缴、短信通知、停水管理 | 自行开发 | +| REV-007 | 统计分析 | 多维度数据统计和报表分析功能 | 自行开发 | +| REV-008 | 代收业务 | 集成银行渠道与聚合支付等代收方式 | 自行开发 | +| REV-009 | 业务参数配置 | 业务参数配置、参数管理 | 自行开发 | + +#### 客户服务模块群 + +  为外部渠道(微网厅、第三方平台)和内部渠道(客服前台)提供服务接入能力: + +- 账户绑定管理、信息查询服务、在线缴费服务、电子发票服务、营业网点服务、业务办理服务、柜面扫码支付 + +| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | +|---|---|---|---| +| CS-001 | 账户绑定管理 | 微信/支付宝账户绑定与解绑、多账户管理 | 自行开发 | +| CS-002 | 信息查询服务 | 账单查询、用水历史、缴费记录、停水公告 | 自行开发 | +| CS-003 | 在线缴费服务 | 快捷缴费、充值、代缴、结果查询(经SYS-009) | 自行开发 | +| CS-004 | 电子发票服务 | 发票查看、推送、下载(经SYS-008) | 自行开发 | +| CS-005 | 营业网点服务 | 网点查询、地图导航、预约(可选) | 自行开发 | +| CS-006 | 业务办理服务 | 联系方式/开票方式变更、更名过户、低保、换表、自主抄表等 | 自行开发 | +| CS-007 | 柜面扫码支付 | 柜台二维码收款、票据关联、结果回传(经SYS-009) | 自行开发 | + +### 模块间关系 + +  营收系统的两大模块群既相对独立又紧密协作,形成完整的业务生态系统。 + +#### 营收核心模块群关系 + +  营收核心业务群实现了从客户管理到账务处理的完整营收业务流程: + + +```mermaid +graph TD + subgraph "营收核心业务流程" + A[REV-001
客户资料管理
] --> B[REV-002
抄表开账
] + B --> C[REV-003
营业收费
] + C --> D[REV-004
账务处理
] + D --> E[REV-005
发票管理
] + + subgraph "辅助业务流程" + F[REV-006
催缴管理
] + G[REV-007
统计分析
] + H[REV-008
代收业务
] + I[REV-009
业务参数配置
] + end + end + + %% 主流程依赖关系 + A -.->|客户信息| C + A -.->|客户信息| E + A -.->|客户信息| F + B -.->|账单信息| D + B -.->|欠费信息| F + C -.->|收费记录| E + C -.->|收费数据| G + D -.->|账务数据| G + H -.->|代收记录| C + I -.->|水价/参数| B + I -.->|打印/税率/参数| E + I -.->|收费参数| C + + %% 样式 + classDef coreFlow fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef supportFlow fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + + class A,B,C,D,E coreFlow + class F,G,H,I supportFlow + +``` + + +#### 客户服务模块群关系 + +  客户服务模块群为对外提供服务的核心入口,构建以客户为中心的一体化服务体系: + + +```mermaid +graph TD + subgraph "客户服务核心流程" + A[CS-001
账户绑定管理
] --> B[CS-002
信息查询服务
] + B --> C[CS-003
在线缴费服务
] + C --> D[CS-004
电子发票服务
] + + subgraph "辅助服务模块" + E[CS-005
营业网点服务
] + F[CS-006
业务办理服务
] + G[CS-007
柜面扫码支付
] + end + end + + %% 服务调用关系 + A -.->|绑定验证| F + B -.->|查询支撑| C + B -.->|查询支撑| D + B -.->|查询支撑| F + C -.->|支付回调| D + G -.->|线下支付| D + E -.->|网点导航| F + F -.->|办理结果| B + + %% 外部系统依赖 + C -.->|支付处理| SYS009[SYS-009
支付系统] + D -.->|发票开具| SYS008[SYS-008
发票系统] + G -.->|扫码支付| SYS009 + F -.->|工单流转| SYS005[SYS-005
工单系统] + + %% 样式 + classDef coreService fill:#e8f5e8,stroke:#4caf50,stroke-width:2px + classDef supportService fill:#fff3e0,stroke:#ff9800,stroke-width:2px + classDef externalSys fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px + + class A,B,C,D coreService + class E,F,G supportService + class SYS008,SYS009,SYS005 externalSys + +``` + + +**服务流程说明:** + +- **账户绑定**:客户通过微信/支付宝绑定水表账户,建立服务关系 +- **信息查询**:基于绑定关系,提供账单、用水历史、缴费记录等查询服务 +- **在线缴费**:支持快捷缴费、充值、代缴等多种缴费方式 +- **电子发票**:缴费完成后自动开具电子发票,支持查看下载 +- **业务办理**:提供各类业务在线申请,如更名过户、换表申请等 +- **营业网点**:提供网点查询、地图导航、预约服务等 +- **柜面扫码**:线下柜台扫码支付,与线上服务形成闭环 + +#### 模块群间协作关系 + +  两大模块群通过标准化接口进行协作,实现业务闭环: + + +```mermaid +graph TB + subgraph "营收核心模块群" + CORE[REV-001~009
客户/抄表/收费/账务/发票/催缴/统计/代收/参数] + end + + subgraph "客户服务模块群" + CS[CS-001~007
账户绑定/查询/在线缴费/电子发票/网点/办理/柜面扫码] + end + + subgraph "工单管理系统" + WO[SYS-005
统一工单中心] + end + + CORE <-->|标准API| CS + CORE -.->|业务异常/流程触发| WO + CS -.->|客户申请/服务工单| WO + + classDef coreGroup fill:#e1f5fe,stroke:#0277bd,stroke-width:3px + classDef csGroup fill:#e8f5e8,stroke:#388e3c,stroke-width:3px + classDef workorderGroup fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px + + class CORE coreGroup + class CS csGroup + class WO workorderGroup + +``` + + +### 模块描述 + +#### REV-001: 客户资料管理 + +**功能概述:** + +  客户资料管理模块是营收系统的基础,负责维护所有用水客户的基本信息和档案资料。 + +**核心功能:** + +1. **客户档案管理** + - 新客户建档 + - 客户信息修改 + - 客户状态管理(正常、停用、注销) + - 客户变更历史记录 + +2. **客户分组管理** + - 按区域分组 + - 按用水性质分组 + - 按客户类型分组 + - 自定义分组 + +3. **客户查询服务** + - 多条件组合查询 + - 模糊查询支持 + - 高级筛选功能 + +**子功能扩展:** + +- 客户分组:客户分组管理、分组内客户管理 +- 集收管理:集收号管理、集收号内客户管理 +- 立户建档:手工建档、批量立户 +- 定额管理:定额共享(主/子客户)、定额核定 +- 批量修改:手工修改、模板导入修改 +- 客户业务办理:换表、加抄、更名、过户、低保、调价、停用/启用、注销/恢复 +- 电子档案:高拍仪/附件采集与档案管理 + +**业务规则:** + +- 客户编号系统自动生成,格式:部门代码+年份+6位流水号 +- 身份证号码必须通过实名认证 +- 客户状态变更需要审批流程 +- 存在未结清账务的客户不允许注销 + +#### REV-002: 抄表开账 + +**功能概述:** + +  抄表开账模块实现了从抄表数据录入到自动生成账单的完整业务流程。 + +**核心功能:** + +1. **抄表数据录入** + - 手工抄表录入 + - PDA抄表导入 + - 远传抄表自动采集 + - Excel批量导入 + +2. **抄表数据复核** + - 数据有效性验证 + - 异常用水量检测 + - 人工复核确认 + - 批量复核处理 + +3. **自动开账处理** + - 水量计算 + - 费用计算 + - 账单生成 + - 开账确认 + +**子功能扩展:** + +- 册本信息:册本查询、册本详情 +- 册本调整:新卡入册、册内序号调整、册本间调整 +- 抄表录入:按册本/按抄表员、导入抄表数据 +- 复核开账:复核开账查询/汇总、复核与开账 +- 开账记录:历史查询与导出 + +**业务流程图:** + + +```mermaid +flowchart TD + A[开始抄表] --> B{选择抄表方式} + B -->|手工抄表| C[手工录入抄表数据] + B -->|PDA抄表| D[PDA现场抄表] + B -->|远传抄表| E[自动采集抄表数据] + B -->|批量导入| F[Excel批量导入] + + C --> G[系统数据验证] + D --> H[PDA数据上传] + E --> I[远传数据同步] + F --> J[批量数据校验] + + H --> G + I --> G + J --> G + + G --> K{数据是否有效?} + K -->|否| L[数据修正] + L --> G + K -->|是| M[抄表数据复核] + + M --> N{复核是否通过?} + N -->|否| O[标记异常数据] + O --> P[人工处理异常] + P --> M + N -->|是| Q[计算用水量] + + Q --> R[计算水费金额] + R --> S[生成账单] + S --> T[开账确认] + T --> U[结束] + +``` + + +**业务规则:** + +- 抄表状态:正常、故障、估读、拒抄、空房等 +- 用水量计算:本期读数 - 上期读数 +- 异常判断:超过历史平均值2倍为量高,低于0.5倍为量低 +- 复核规则:抄表人员不能复核自己录入的数据 + +#### REV-003: 营业收费 + +**功能概述:** + +  营业收费模块提供完整的收费业务流程管理,支持多种收费方式和支付渠道。 + +**核心功能:** + +1. **柜台收费** + - 实时收费处理 + - 多种支付方式 + - 收费凭证打印 + - 柜台结账管理 + +2. **在线缴费** + - 微信支付接入 + - 支付宝支付接入 + - 银行卡支付 + - 代扣代缴服务 + +3. **批量收费** + - 批量缴费处理 + - 预付款管理 + - 托收业务 + - 自动扣费 + +**子功能扩展:** + +- 特殊开账:特殊情形直接开账及查询导出 +- 柜台结账:结账、红冲、打印凭证 +- 红冲记录:红冲查询与导出 + +**业务流程图:** + + +```mermaid +flowchart TD + A[客户缴费] --> B{选择缴费方式} + B -->|柜台缴费| C[到营业厅缴费] + B -->|在线缴费| D[选择在线支付] + B -->|银行代扣| E[银行自动扣费] + + C --> F[查询客户账单] + D --> G[微信/支付宝支付] + E --> H[银行代扣处理] + + F --> I{账单是否正确?} + I -->|否| J[账单调整] + J --> F + I -->|是| K[选择支付方式] + + K --> L{支付方式} + L -->|现金| M[现金收费] + L -->|POS机| N[刷卡收费] + L -->|扫码| O[扫码支付] + + G --> P[渠道支付确认] + H --> Q[银行扣费确认] + M --> R[收费确认] + N --> R + O --> R + P --> R + Q --> R + + R --> S[更新账单状态] + S --> T[生成收费凭证] + T --> U{需要发票?} + U -->|是| V[开具发票] + U -->|否| W[完成收费] + V --> W + W --> X[结束] + +``` + + +**业务规则:** + +1. 收费员每日下班前必须进行"柜台结账" +2. 结账前,收错的账款可以执行"红冲"操作 +3. 支持现金、POS机、微信、支付宝等多种支付方式 +4. 在线支付需要实时确认支付结果 +5. 银行代扣需要客户事先签约授权 + +#### REV-004: 账务处理 + +**功能概述:** + +  负责处理各类复杂的账务调整、退款、坏账等业务,确保账务的准确性和合规性。 + +**核心功能:** + +- **未销账调整**: 对未支付账单进行调整。 +- **分账调整**: 将一笔总账单拆分为多笔子账单。 +- **预付款退款**: 处理客户预付款的退还流程。 +- **呆坏账处理**: 对长期无法收回的欠款进行核销。 + +#### REV-005: 发票管理 + +**功能概述:** + +  提供全面的发票管理功能,支持电子发票和纸质发票的开具、查询、作废等操作。 + +**核心功能:** + +- **发票开具**: 根据缴费记录为客户开具发票。 +- **发票查询与管理**: 查询发票历史,处理红冲、作废等请求。 +- **电子发票集成**: 对接第三方电子发票平台,实现自动开具和推送。 + +**实现说明:** + +- 本模块通过调用`SYS-008 发票服务子系统`的"统一开票接口/作废红冲接口/发票查询接口"实现具体的开票与回执处理,营收系统不直接对接供应商。 + +#### REV-006: 催缴管理 + +**功能概述:** + +  对逾期未缴费的客户进行有效的催缴管理,提高水费回收率。 + +**核心功能:** + +- **欠费分析**: 统计和分析欠费客户数据。 +- **催缴通知**: 通过短信、电话、通知单等多种方式进行催缴。 +- **停复水管理**: 对恶意欠费用户执行停水,缴清后进行复水操作。 + +#### REV-007: 统计分析 + +**功能概述:** + +  提供多维度的数据统计和报表分析功能,为管理决策提供数据支持。 + +**核心功能:** + +- **售水统计**: 按日、月、年统计售水量、售水收入等。 +- **收费统计**: 统计不同收费渠道、方式的收费情况。 +- **欠费分析**: 多维度分析欠费构成和趋势。 +- **自定义报表**: 提供灵活的报表自定义工具。 +- **报表查询**: 业务分类报表树、统计条件与结果导出。 +- **欠费查询**: 按账期/金额等条件查询客户欠费。 +- **缴费记录**: 缴费记录检索与导出。 + +#### REV-008: 代收业务 + +**功能概述:** + +  集成银行渠道与聚合支付等代收方式,方便客户缴费。 + +**核心功能:** + +- **银行代扣**: 与银行签订协议,实现自动批量扣费。 +- **聚合支付**: 集成微信、支付宝等支付网关。 +- **对账管理**: 定期与各渠道进行账务核对。 +- **实时收费**: 渠道实时缴费处理(对接SYS-009)。 +- **银行托收**: 托收文件处理与状态跟踪(对接SYS-009)。 + +#### REV-009: 业务参数配置 + +**功能概述:** + +  集中管理与营收业务相关的参数与基础资料,提升配置一致性与运营效率。 + +**核心功能:** + +- 水表参数:水表厂家、型号、口径、量程 +- 地址参数:营业站点、所属小区 +- 价格体系:水价归属、费用组成、水价调整、调价历史、优惠方案、用水方案 +- 基本配置:打印维护、自定义列、日志管理、水司账户、发票税率、银行信息、抄表状态、词语信息、参数配置 + +### 客户服务模块群描述 + +#### CS-001: 账户绑定管理 + +**功能概述:** + +  账户绑定管理模块是客户服务体系的入口,负责处理客户与第三方平台账户的绑定关系管理,为后续的信息查询、在线缴费等服务奠定基础。 + +**核心功能:** + +1. **账户绑定流程** + - 微信/支付宝授权登录 + - 客户编号/户名/手机号搜索验证 + - 账户信息确认与绑定 + - 绑定状态维护与管理 + +2. **多账户管理** + - 支持一个用户绑定多个水务账户 + - 主账户设置与切换 + - 账户别名设置 + - 绑定账户列表管理 + +3. **解绑与重绑** + - 账户解绑流程 + - 解绑权限控制 + - 重新绑定验证 + - 解绑日志记录 + +**技术实现:** +- 基于OAuth2.0协议实现第三方授权 +- Redis缓存绑定关系提升查询性能 +- 数据加密存储保护客户隐私 + +#### CS-002: 信息查询服务 + +**功能概述:** + +  信息查询服务模块为客户提供全方位的信息查询功能,包括账单查询、用水历史、缴费记录等,是客户服务的核心模块之一。 + +**核心功能:** + +1. **账单查询服务** + - 当前账单查询 + - 历史账单查询 + - 账单详情展示 + - 欠费账单提醒 + +2. **用水信息查询** + - 用水量历史统计 + - 用水趋势分析 + - 抄表记录查询 + - 异常用水提醒 + +3. **缴费信息查询** + - 缴费记录查询 + - 缴费方式统计 + - 发票信息查询 + - 退费记录查询 + +4. **公告信息服务** + - 停水公告查看 + - 水价调整通知 + - 服务公告推送 + - 用水指南 + +**技术实现:** +- 分页查询优化大数据量处理 +- 数据缓存策略提升响应速度 +- 接口聚合减少客户端调用 + +#### CS-003: 在线缴费服务 + +**功能概述:** + +  在线缴费服务模块提供便捷的线上缴费功能,支持多种支付方式,与SYS-009支付系统深度集成,确保支付的安全性和可靠性。 + +**核心功能:** + +1. **快捷缴费** + - 一键缴费当前账单 + - 批量缴费多个账单 + - 预设金额快速充值 + - 自动扣费设置 + +2. **多样化缴费方式** + - 微信支付 + - 支付宝支付 + - 银联在线支付 + - 银行代扣缴费 + +3. **代缴服务** + - 代他人缴费 + - 批量代缴管理 + - 代缴权限控制 + - 代缴记录跟踪 + +4. **缴费管理** + - 缴费结果查询 + - 缴费凭证生成 + - 退费申请处理 + - 缴费异常处理 + +**技术实现:** +- 与SYS-009支付系统标准化对接 +- 订单状态实时同步机制 +- 支付安全策略与风控 + +#### CS-004: 电子发票服务 + +**功能概述:** + +  电子发票服务模块与SYS-008发票系统集成,为客户提供电子发票的查看、下载、推送等服务,满足客户对发票的个性化需求。 + +**核心功能:** + +1. **发票查看服务** + - 发票列表查询 + - 发票详情展示 + - 发票状态跟踪 + - 发票验真服务 + +2. **发票推送服务** + - 邮箱推送发票 + - 微信推送发票 + - 短信通知发票 + - 实时推送状态 + +3. **发票下载服务** + - PDF格式下载 + - 批量打包下载 + - 二维码扫描下载 + - 下载记录管理 + +4. **发票管理** + - 开票信息维护 + - 发票抬头管理 + - 特殊发票申请 + - 发票重开申请 + +**技术实现:** +- 与SYS-008发票系统API对接 +- 文件流处理与下载优化 +- 发票防伪与验真机制 + +#### CS-005: 营业网点服务 + +**功能概述:** + +  营业网点服务模块为客户提供营业网点相关的信息服务,包括网点查询、地图导航、预约服务等,提升客户线下服务体验。 + +**核心功能:** + +1. **网点信息查询** + - 就近网点查询 + - 网点详细信息 + - 营业时间查询 + - 服务项目介绍 + +2. **地图导航服务** + - 地图位置展示 + - 导航路线规划 + - 距离时间计算 + - 交通方式推荐 + +3. **网点预约服务** + - 业务预约申请 + - 预约时间管理 + - 预约状态跟踪 + - 预约取消重约 + +4. **网点评价反馈** + - 服务评价提交 + - 意见建议反馈 + - 投诉建议处理 + - 满意度调查 + +**技术实现:** +- 地理位置服务集成 +- 地图API调用优化 +- 预约队列管理机制 + +#### CS-006: 业务办理服务 + +**功能概述:** + +  业务办理服务模块为客户提供各类水务业务的在线申请和办理功能,与SYS-005工单系统协作实现业务流程的数字化处理。 + +**核心功能:** + +1. **基础业务办理** + - 联系方式变更 + - 开票信息变更 + - 用水性质变更 + - 账户信息修改 + +2. **高级业务办理** + - 更名过户申请 + - 水表换表申请 + - 低保减免申请 + - 自主抄表申请 + +3. **办理流程管理** + - 申请表单填写 + - 附件资料上传 + - 申请进度跟踪 + - 办理结果通知 + +4. **业务咨询服务** + - 办理条件查询 + - 办理流程指导 + - 所需材料清单 + - 在线客服咨询 + +**技术实现:** +- 与SYS-005工单系统流程集成 +- 动态表单引擎支持 +- 文件上传与存储管理 + +#### CS-007: 柜面扫码支付 + +**功能概述:** + +  柜面扫码支付模块为营业厅提供便捷的扫码收款功能,与SYS-009支付系统集成,实现线下支付的数字化处理。 + +**核心功能:** + +1. **扫码支付流程** + - 收费二维码生成 + - 扫码支付处理 + - 支付结果确认 + - 票据关联打印 + +2. **收款管理** + - 收款金额确认 + - 收款方式选择 + - 收款状态跟踪 + - 收款异常处理 + +3. **票据关联** + - 缴费凭证生成 + - 发票自动开具 + - 收据打印输出 + - 票据存档管理 + +4. **结果回传** + - 支付状态同步 + - 账务数据回传 + - 营业员确认 + - 客户通知发送 + +**技术实现:** +- 与SYS-009支付系统深度集成 +- 二维码动态生成与管理 +- POS机硬件设备对接 + + + +# 子系统3设计: 手机抄表APP + +## 任务概述 + +  手机抄表APP为抄表员、外勤人员提供移动作业工具,支持离线操作,通过调用外部摄像表AI系统实现抄表读数自动识别,提升现场工作效率。 + +**设计目标:** + +- 实现移动化抄表作业,提高工作效率 +- 支持离线作业,确保在无网络环境下正常工作 +- 构建完整的工单闭环处理流程 +- 提供直观友好的移动端用户体验 + +**功能范围:** + +- **登录认证**:机构编号、用户名密码认证、自动登录 +- **首页搜索**:多维度搜索、最近搜索记录、抄表任务 +- **采集任务管理**:任务列表管理、批量下载、单户采集 +- **现场上报**:问题上报(由SYS-005工单系统统一受理与派发) +- **个人设置**:个人信息管理、系统设置维护 + +**核心业务流程:** +  任务下载 → 现场抄表 → 问题上报 → 工单处理 → 数据上传 → 结果同步 + +## 设计概述 + +### 总体约束 + +**技术约束:** + +- 基于Spring Boot微服务架构 +- 采用条码/二维码技术进行水表标识 +- 支持RFID技术的水表管理 +- 遵循水表行业标准和规范 + +**性能约束:** + +- 支持100万+水表档案管理 +- 库存操作响应时间≤1秒 +- 支持并发库存操作≥50个 +- 盘点效率≥1000个/小时 + +**安全约束:** + +- 水表资产数据加密存储 +- 关键操作审批流程 +- 完整的操作审计日志 +- 防止水表资产丢失 + +### 子系统外部接口 + +**接口设计说明:** + +  手机抄表APP系统作为移动端现场作业工具,需要与营收业务系统、工单管理系统保持数据同步。所有接口均采用HTTP/REST协议,支持离线缓存和在线同步模式,确保现场作业的连续性和数据一致性。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-MOBILE-001 | 任务下载接口 | 下载抄表任务与客户信息 | 手机抄表APP | HTTP/REST | 抄表员ID、任务日期范围 | 任务列表、客户信息、水表信息 | +| IF-MOBILE-002 | 抄表数据上传接口 | 上传抄表数据与现场图片 | 手机抄表APP | HTTP/REST | 抄表记录、现场图片、GPS位置 | 上传状态、数据校验结果 | +| IF-MOBILE-003 | 工单接收接口 | 接收工单任务 | 工单管理系统 | HTTP/REST | 工单ID、工单类型、派发信息 | 接收确认、预计处理时间 | +| IF-MOBILE-004 | 工单回填接口 | 回填处理结果与附件 | 手机抄表APP | HTTP/REST | 工单ID、处理结果、现场图片 | 回填状态、审核结果 | +| IF-MOBILE-005 | 离线同步接口 | 离线数据同步 | 手机抄表APP | HTTP/REST | 离线数据包、时间戳 | 同步状态、冲突处理结果 | + +### 设计方案概述 + +**架构设计:** + +  端云协同架构,APP端提供离线能力(本地缓存与任务包),在线时通过增量同步接口与服务端完成任务下载、数据上传与工单回填,确保弱网环境可用。 + +**关键技术:** + +- 本地缓存与数据加密存储、断点续传 +- 条码/二维码识别,拍照取证 +- 任务包增量同步与冲突处理 + +## 子系统架构设计 + +  手机抄表APP采用原生移动应用架构,支持Android平台部署。系统采用端云协同模式,APP端具备强大的离线工作能力,通过本地存储任务数据和抄表记录,支持弱网环境下的连续作业。 + + + +```mermaid +graph TB + subgraph "手机抄表APP" + Login[登录认证] + Home[首页/搜索] + Task[采集任务] + Report[现场上报] + Sync[数据同步] + Settings[个人与设置] + end + + subgraph "服务端" + AUTH[统一平台] + REV[营收业务系统] + WO[工单管理系统] + end + + Login --> AUTH + Home --> REV + Task --> REV + Report --> WO + Sync <--> REV + WO -.-> Task + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称(标识) | 功能描述 | 开发方式 | +|---|---|---|---| +| MOBILE-001 | 登录认证 | 机构编号、用户名/密码、自动登录、令牌管理 | 自行开发 | +| MOBILE-002 | 首页搜索 | 多维度搜索、最近记录、任务快捷入口 | 自行开发 | +| MOBILE-003 | 采集任务管理 | 任务列表、批量下载、单户采集、调用外部AI识别、读数校验 | 自行开发 | +| MOBILE-004 | 现场上报 | 问题上报、拍照取证、定位信息、异常标记 | 自行开发 | +| MOBILE-005 | 个人与设置 | 个人资料、偏好设置、缓存管理、安全退出 | 自行开发 | +| MOBILE-006 | 数据同步 | 任务包增量同步、离线数据包上传、冲突处理 | 自行开发 | + + +### 模块间关系 + + +```mermaid +graph TD + subgraph "手机抄表APP模块关系" + A[MOBILE-001
登录认证] + B[MOBILE-002
首页搜索] + C[MOBILE-003
采集任务管理] + D[MOBILE-004
现场上报] + E[MOBILE-005
个人与设置] + F[MOBILE-006
数据同步] + end + + subgraph "外部系统" + AI[摄像表AI系统
(外部服务)] + end + + A -->|认证通过| C + B -->|搜索定位| C + C -.->|API调用| AI + AI -.->|识别结果| C + C -->|任务数据| F + D -->|上报数据| F + E -.->|配置同步| F + F -->|数据上传| UP[统一平台] + F -->|任务下载| CS[营收业务系统] + + %% 样式定义 + classDef coreModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef syncModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef externalModule fill:#fff3e0,stroke:#e65100,stroke-width:2px,stroke-dasharray: 5 5 + + class A,B,C,D coreModule + class E,F syncModule + class AI externalModule + +``` + + +### 模块描述 + +#### MOBILE-001: 登录认证 + +- 机构编号+用户名/密码登录 +- 自动登录选项 +- 登录问题客服支持 + +#### MOBILE-002: 首页搜索 + +- 户号/户名/地址/钢印号/手机号搜索 +- 最近搜索记录展示 +- 抄表任务列表 +- 搜索结果实时展示 + +#### MOBILE-003: 采集任务管理 + +- 任务列表与批量下载 +- 单户采集详情页 +- 定位/NFC/扫码三种采集方式 +- 上一户/下一户导航 + +#### MOBILE-004: 现场上报 + +- 换表工单处理 +- 复水工单确认 +- 稽查任务管理 +- 问题上报功能 +- 图片/视频附件上传 + +#### MOBILE-005: 个人与设置 + +- 个人信息查看与修改 +- 密码修改与退出登录 +- 日志上传与清理缓存 +- 异常水量预警设置 +- 数据库备份 + +#### MOBILE-006: 数据同步 + +- 增量任务同步 +- 离线包上传 +- 断点续传 +- 冲突解决 + + + + + +# 子系统4设计: 微网厅系统 + +## 任务概述 + +  微网厅系统(SYS-004)基于微信公众号平台开发,为客户提供便民的自助服务平台。系统支持账户绑定、账单查询、在线缴费、电子发票、营业网点查询和各类业务办理等功能。通过微信生态为用户提供7×24小时不间断的自助服务,显著提升客户服务体验。 + +## 设计概述 + +### 总体约束 + +**技术约束**: + +- 基于微信公众号开发框架 +- 遵循微信开发规范和接口限制 +- 采用响应式设计,适配不同移动设备 +- 支持微信支付集成 + +**安全约束**: + +- 严格的用户身份验证机制 +- 敏感数据加密传输和存储 +- 符合微信平台安全规范 +- 防范常见Web安全威胁 + +**业务约束**: + +- 必须与营收业务系统实时数据同步 +- 支持多账户绑定管理 +- 提供完整的业务流程闭环 + +### 子系统外部接口 + +**接口设计说明:** + +  微网厅系统基于微信公众号平台,为用户提供便捷的水务服务。系统与微信平台、营收业务系统、发票服务、支付系统等多个外部系统进行集成,支持账户绑定、在线查询、移动缴费、电子发票、业务申请等全流程服务。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-WECHAT-001 | 微信授权登录接口 | 通过微信OAuth2.0实现用户授权登录 | 微网厅系统 | HTTP/REST | 微信授权码、AppID、AppSecret | 用户OpenID、访问令牌、用户基本信息 | +| IF-WECHAT-002 | 微信支付接口 | 调用微信支付完成在线缴费 | 微网厅系统 | HTTP/REST | 订单信息、支付金额、用户OpenID | 预支付交易会话标识、支付结果 | +| IF-WECHAT-003 | 微信模板消息接口 | 推送缴费成功、账单提醒等消息 | 消息服务系统 | HTTP/REST | 模板ID、用户OpenID、消息数据 | 消息推送状态、消息ID | +| IF-WECHAT-004 | 微信JS-SDK接口 | 调用微信JS-SDK实现前端功能 | 微网厅前端 | HTTP/REST | 页面URL、时间戳、随机字符串 | JS-SDK配置信息、签名 | +| IF-WECHAT-005 | 客户信息查询接口 | 查询绑定客户的基本信息 | 微网厅系统 | HTTP/REST | 客户编号/手机号/OpenID | 客户详细信息、绑定状态 | +| IF-WECHAT-006 | 账单信息查询接口 | 查询客户账单和欠费信息 | 微网厅系统 | HTTP/REST | 客户编号、查询月份范围 | 账单明细、欠费金额、阶梯用量 | +| IF-WECHAT-007 | 缴费处理接口 | 处理微信端发起的缴费业务 | 微网厅系统 | HTTP/REST | 客户编号、缴费金额、支付方式 | 缴费订单号、支付状态、发票信息 | +| IF-WECHAT-008 | 业务申请提交接口 | 提交报装、过户等业务申请 | 微网厅系统 | HTTP/REST | 申请类型、客户资料、申请材料 | 申请单号、预审结果、处理时限 | +| IF-WECHAT-009 | 电子发票申请接口 | 申请开具电子发票 | 微网厅系统 | HTTP/REST | 缴费订单号、发票抬头信息 | 电子发票PDF、发票代码和号码 | +| IF-WECHAT-010 | 营业网点查询接口 | 查询就近营业网点信息 | 微网厅系统 | HTTP/REST | 地理位置坐标、搜索半径 | 网点列表、营业时间、联系方式 | +| IF-WECHAT-011 | 账户绑定验证接口 | 验证客户身份并绑定微信账户 | 微网厅系统 | HTTP/REST | 客户编号、身份证号、手机号码 | 绑定验证结果、绑定关系ID | +| IF-WECHAT-012 | 用水历史查询接口 | 查询客户用水历史记录 | 微网厅系统 | HTTP/REST | 客户编号、查询时间段 | 用水量明细、趋势分析数据 | + +### 设计方案概述 + +  采用微信公众号H5页面开发模式,前端使用响应式Web技术,后端基于Spring Boot微服务架构。通过微信OAuth2.0实现用户授权,通过唯一标识实现账户绑定,确保数据安全和用户体验。 + +## 子系统架构设计 + + +  微网厅系统基于微信公众号生态,采用前后端分离架构。前端采用Vue.js框架开发响应式H5页面,适配微信浏览器环境;后端采用Spring Boot微服务架构,通过API Gateway统一接口管理。 + + + +```mermaid +graph TB + subgraph "微信平台" + WeChat[微信公众号] + WeMsg[微信消息] + end + + subgraph "微网厅系统" + Frontend[前端H5页面] + Backend[后端服务] + Cache[缓存层] + end + + subgraph "营收业务系统" + Customer[客户管理] + Billing[账务处理] + Payment[收费管理] + Service[客户服务] + end + + WeChat --> Frontend + Frontend --> Backend + Backend --> Cache + Backend --> Customer + Backend --> Billing + Backend --> Payment + Backend --> Service + Backend -.->|支付调用| PAY_SYS[支付与结算(SYS-009)] + Backend --> WeMsg + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---------|----------|----------|------------| +| WECHAT-001 | 账户绑定管理 | 微信授权、账户绑定与解绑、多账户管理 | 自行开发 | +| WECHAT-002 | 信息查询服务 | 账单查询、用水历史、缴费记录、停水公告 | 自行开发 | +| WECHAT-003 | 在线缴费服务 | 快捷缴费、充值服务、多种支付方式 | 自行开发 | +| WECHAT-004 | 电子发票服务 | 发票查看、发票推送、电子发票管理 | 自行开发 | +| WECHAT-005 | 营业网点服务 | 网点查询、地图导航、距离计算 | 自行开发 | +| WECHAT-006 | 业务办理服务 | 联系方式变更、开票方式变更、更名业务、过户业务、一户多人口申请、水价变更、低保申请、换表申请、自主抄表 | 自行开发 | +| WECHAT-007 | 账户流水 | 账户历史缴费流水查询与导出 | 自行开发 | +| WECHAT-008 | 账号与机构管理 | 切换机构、添加/解绑客户、设置默认客户、客户详情 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "微网厅系统模块关系" + A[WECHAT-001
账户绑定管理] + B[WECHAT-002
信息查询服务] + C[WECHAT-003
在线缴费服务] + D[WECHAT-004
电子发票服务] + E[WECHAT-005
营业网点服务] + F[WECHAT-006
业务办理服务] + G[WECHAT-007
账户流水] + H[WECHAT-008
账号与机构管理] + end + + A -->|身份验证| B + A -->|授权支付| C + A -->|授权开票| D + A -->|位置服务| E + A -->|业务授权| F + A -->|流水授权| G + A -->|账号管理| H + + B -.->|查询后开票| D + C -.->|支付后开票| D + F -.->|业务查询| B + F -.->|业务缴费| C + + %% 样式定义 + classDef coreService fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef supportService fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef bindingModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + + class A bindingModule + class B,C,D,F coreService + class E,G,H supportService + +``` + + +### 模块描述 + +#### WECHAT-001: 账户绑定管理 + +- 微信授权与快捷登录 +- 手机号自动绑定 +- 客户编号手工绑定 +- 多客户绑定管理 +- 默认客户设置 + +#### WECHAT-002: 信息查询服务 + +- 首页基本信息展示 +- 客户详细信息查看 +- 历史账单查询(近12个月) +- 用水分析曲线图 +- 客户切换功能 + +#### WECHAT-003: 在线缴费服务 + +- 快捷缴费功能 +- 充值缴费服务 +- 微信支付集成 +- 缴费确认页面 +- 缴费结果通知 + +#### WECHAT-004: 电子发票服务 + +- 电子发票查看 +- 发票邮箱推送 +- 发票图片保存 +- 发票开具申请 + +#### WECHAT-005: 营业网点服务 + +- 营业网点列表展示 +- 地图模式展示 +- 距离排序显示 +- 网点详细信息 + +#### WECHAT-006: 业务办理服务 + +- 联系方式变更 +- 开票方式变更 +- 更名业务 +- 过户业务 +- 一户多人口申请 +- 水价变更 +- 低保申请 +- 换表申请 +- 自主抄表 +- 附件上传(最多9张) +- 业务进度查询 + +#### WECHAT-007: 账户流水 + +- 历史缴费流水查询 +- 缴费汇总情况 +- 流水详细信息展示 + +#### WECHAT-008: 账号与机构管理 + +- 用水机构切换 +- 添加绑定客户 +- 解除绑定客户 +- 设置默认客户 +- 查看客户详情 + +**业务办理流程**: + + +```mermaid +flowchart TD + Start([用户发起业务申请]) --> Select[选择业务类型] + Select --> Fill[填写申请信息] + Fill --> Upload[上传相关材料] + Upload --> Submit[提交申请] + Submit --> Review[系统审核] + Review --> Approve{审核结果} + Approve -->|通过| Process[业务处理] + Approve -->|退回| Modify[修改申请] + Modify --> Submit + Process --> Complete[办理完成] + Complete --> Notify[结果通知] + Notify --> End([结束]) + +``` + + + + +# 子系统5设计: 工单管理系统 + +## 任务概述 + +  工单管理系统(SYS-005)负责全业务工单统一受理、创建、派发、处理、验收与归档,覆盖营收、表务、报装、客户服务等场景,提供统一流程引擎与监控预警能力。 + +## 设计概述 + +### 总体约束 + +- 流程统一:所有工单遵循统一的生命周期与态状态机 +- 实时可观测:状态监控、超时预警、绩效统计 +- 可扩展:支持新增工单类型与流程编排 + +### 子系统外部接口 + +  工单管理系统作为统一的工单处理平台,接收来自营收、表务、报装、微网厅、APP等各业务系统的工单需求,实现工单全生命周期管理。系统提供标准化的工单接口,支持多种工单类型的创建、派发、处理、跟踪全流程管理。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-WO-001 | 工单创建接口 | 创建各类业务工单 | 营收/表务/报装/微网厅/APP | HTTP/REST | 工单类型、客户信息、问题描述、紧急程度 | 工单编号、预计处理时间、派发状态 | +| IF-WO-002 | 工单派发接口 | 向处理人/APP派发任务 | 工单管理系统 | HTTP/REST | 工单ID、处理人员、预期完成时间 | 派发结果、接收确认状态 | +| IF-WO-003 | 工单回填接口 | 回填处理结果与附件 | APP/各业务系统 | HTTP/REST | 工单ID、处理结果、现场图片、完成时间 | 回填状态、审核结果、客户满意度 | +| IF-WO-004 | 工单查询接口 | 查询工单状态和处理轨迹 | 各业务系统/客户端 | HTTP/REST | 工单编号/客户编号、查询条件 | 工单状态、处理进度、历史轨迹 | +| IF-WO-005 | 工单统计接口 | 工单处理绩效统计分析 | 管理后台 | HTTP/REST | 统计维度、时间范围、部门筛选 | 统计报表、效率分析、排名数据 | +| IF-WO-006 | 工单预警接口 | 超时工单监控预警 | 监控系统 | HTTP/REST | 预警规则、时间阈值 | 预警工单列表、通知配置 | + +### 设计方案概述 + +  架构采用"工单中心 + 流程编排 + 监控预警 + 绩效统计"的分层设计,提供统一API网关对接各业务系统,并通过可配置流程实现多类型工单的快速上线。 + +## 子系统架构设计 + +  工单管理系统采用微服务分层架构,通过统一工单中心集中管理各类业务工单,配置化流程引擎支持不同工单类型的个性化流转,实时监控预警确保服务质量,绩效统计提供数据分析支撑。 + + + +```mermaid +graph TB + subgraph "工单管理系统" + WO_CENTER[统一工单中心] + FLOW[流程引擎] + MON[监控预警] + STAT[绩效统计] + end + + subgraph "协作系统" + REV[营收业务系统] + METER[表务管理系统] + INSTALL[报装业务系统] + APP[手机抄表APP] + WECHAT[微网厅] + end + + REV -.->|业务异常/申请| WO_CENTER + METER -.->|换表申请| WO_CENTER + INSTALL -.->|报装派单| WO_CENTER + WECHAT -.->|客户服务申请| WO_CENTER + APP -.->|问题上报/结果回填| WO_CENTER + + WO_CENTER -.-> FLOW + WO_CENTER -.-> MON + WO_CENTER -.-> STAT + WO_CENTER -.->|派发任务| APP + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---|---|---|---| +| WORK-001 | 工单中心 | 统一受理、路由、分派、跟踪 | 自行开发 | +| WORK-002 | 流程引擎 | 节点编排、条件路由、并行网关 | 自行开发 | +| WORK-003 | 监控预警 | 超时/积压/异常预警、看板 | 自行开发 | +| WORK-004 | 绩效统计 | 人员/环节时长、SLA达成率 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "工单管理系统模块关系" + A[WORK-001
工单中心] + B[WORK-002
流程引擎] + C[WORK-003
监控预警] + D[WORK-004
绩效统计] + end + + A -->|流程调度| B + A -->|状态监控| C + A -->|数据统计| D + B -.->|流程状态| C + C -.->|监控数据| D + + %% 样式定义 + classDef coreModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef processModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef monitorModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + + class A coreModule + class B processModule + class C,D monitorModule + +``` + + +### 模块描述 + +#### WORK-001: 工单中心 + +- 统一工单入口与受理管理 +- 工单分类与优先级策略配置 +- 智能路由与自动分派机制 +- 工单全生命周期状态跟踪 + +#### WORK-002: 流程引擎 + +- 可视化流程编排与配置 +- 条件路由与并行互斥网关 +- 子流程支持与流程嵌套 +- 回退重审与流程回滚机制 + +#### WORK-003: 监控预警 + +- 实时工单状态看板展示 +- 超时积压智能预警 +- 异常工单自动拦截识别 +- 多渠道预警通知推送 + +#### WORK-004: 绩效统计 + +- 处理人员时长统计分析 +- 各环节效率达成率统计 +- SLA达成率考核指标 +- 绩效报表自动生成导出 + + + +# 子系统6设计: 表务管理系统 + +## 任务概述 + +  表务管理系统(SYS-006)聚焦设备档案和表务全生命周期管理,面向换表等业务提供资源保障。 + +## 设计概述 + +### 总体约束 + +- 数据规范化:设备参数标准化,避免冗余与不一致 +- 状态可追溯:设备全生命周期状态流转与变更留痕 +- 库存实时性:库存数据实时同步,支持多仓库管理 + +### 子系统外部接口 + +  表务管理系统负责水表资产的全生命周期管理,包括基础参数配置、仓库库存管理、设备档案管理。系统与工单管理、营收业务等系统协作,支持水表领用、更换、维修、报废等全流程作业,确保水表资产的准确管理和有效利用。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-METER-001 | 库存查询接口 | 查询仓库库存状态和预警信息 | 工单/营收/报装系统 | HTTP/REST | 仓库编号、水表型号、库存状态 | 库存明细、预警状态、可用数量 | +| IF-METER-002 | 领用出库接口 | 支持换表/施工水表领用出库 | 工单管理系统 | HTTP/REST | 领用单号、水表型号、领用数量、领用人 | 出库状态、库存余量、领用凭证 | +| IF-METER-003 | 档案查询接口 | 查询水表设备档案信息 | 营收/工单/报装系统 | HTTP/REST | 水表编号、客户编号、查询类型 | 设备档案、安装历史、维修记录 | +| IF-METER-004 | 集抄数据接收接口 | 接收远传抄表、异常告警并同步状态 | 物联网平台 | HTTP/REST | 设备标识、采集时间、读数值、告警信息 | 接收结果、校验状态、异常标记 | +| IF-METER-005 | 资产调拨接口 | 仓库间水表调拨转移 | 表务管理系统 | HTTP/REST | 调出仓库、调入仓库、调拨清单 | 调拨状态、库存变更结果 | +| IF-METER-006 | 盘点核实接口 | 定期盘点和库存核实 | 表务管理系统 | HTTP/REST | 盘点计划、盘点范围、盘点人员 | 盘点结果、差异分析、调整建议 | + +### 设计方案概述 + +  以"基础参数-仓库库存-设备档案"三层模型实现资产全生命周期管理;通过与工单系统联动完成领用/回填闭环,支持库存预警与追溯。 + +## 子系统架构设计 + +  表务管理系统采用分层数据架构,通过基础参数管理建立水表标准规范,通过仓库库存管理实现设备资源调配,通过设备档案管理实现全生命周期跟踪。系统与工单管理系统深度集成,形成"需求-领用-安装-回收"的完整闭环。 +  周转率、维修频次等统计分析 + + +```mermaid +graph TB + subgraph "表务管理系统" + BASE[基础参数] + WH[仓库与库存] + DOC[设备档案] + end + + WO[工单系统] -.->|领用/回填| WH + REV[营收系统] -.->|档案/库存状态| DOC + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---|---|---|---| +| METER-001 | 表务基础管理 | 厂家/型号/口径/量程等基础参数 | 自行开发 | +| METER-002 | 仓库与库存管理 | 入库/出库/盘点/调拨/预警 | 自行开发 | +| METER-003 | 设备档案管理 | 档案建档/状态管理/追溯 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "表务管理系统模块关系" + A[METER-001
表务基础管理] + B[METER-002
仓库与库存管理] + C[METER-003
设备档案管理] + end + + A -->|基础参数| B + B -->|库存状态| C + C -.->|规格验证| A + + %% 样式定义 + classDef baseModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef warehouseModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef docModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + + class A baseModule + class B warehouseModule + class C docModule + +``` + + +### 模块描述 + +#### METER-001: 表务基础管理 + +- 厂家型号口径量程等基础参数标准化 +- 检定周期与技术规范管理 +- 设备分类与属性字典维护 +- 基础参数验证与规范校验 + +#### METER-002: 仓库与库存管理 + +- 入库出库盘点调拨全流程管理 +- 库存预警与安全库存监控 +- 与工单系统联动领用回填 +- 多仓库统一管理与库存同步 + +#### METER-003: 设备档案管理 + +- 唯一设备电子档案建立 +- 设备全生命周期状态流转 +- 批次管理与质检记录追溯 +- 档案查询与历史轨迹记录 + + + +# 子系统7设计: 报装业务系统 + +## 任务概述 + +  报装业务系统(SYS-007)覆盖从申请、踏勘、设计、施工到验收通水的全流程,支持调用泛微进行合同签订和电子签章,并与工单系统协作完成现场派工与过程留痕。 + +## 设计概述 + +### 设计方案概述 + +- 采用阶段性里程碑管控(申请-踏勘-施工-验收-通水),以工单驱动现场作业,形成资料全流程留痕与竣工归档。 +- 资料签章对接:与外部CA电子签章系统对接,完成报装申请材料、施工/验收文书的签署、验章与存证,签章回执异步回传。 + +### 子系统外部接口 + +  报装业务系统负责新用户报装全流程管理,从申请受理到通水验收的全生命周期业务处理。系统与微网厅、营收系统、工单管理、表务管理、CA电子签章等外部系统协作,实现报装业务的规范化、数字化管理和全流程追溯。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-INST-001 | 报装申请接口 | 提交报装申请信息与材料 | 微网厅/营收系统 | HTTP/REST | 申请人信息、用水地址、申请材料、联系方式 | 申请单号、预审结果、处理时限 | +| IF-INST-002 | 踏勘派工接口 | 现场踏勘任务派发 | 工单管理系统 | HTTP/REST | 报装单号、踏勘要求、预约时间 | 派工结果、踏勘人员、预计完成时间 | +| IF-INST-003 | 签章接口 | 调用CA系统进行电子签章 | CA电子签章系统 | HTTP/REST | 合同文档、签章类型、签章方信息 | 签章状态、签章文档、存证信息 | +| IF-INST-004 | 签章回执接口 | 接收CA系统签章完成回执 | CA电子签章系统 | HTTP/REST | 签章任务ID、签章结果、时间戳 | 接收确认、存档状态 | +| IF-INST-005 | 报装归档接口 | 归档申请、合同、验收与签章回执资料 | 报装系统 | HTTP/REST | 报装单号、资料清单、签章回执、验收文档 | 归档状态、档案编号、存储位置 | +| IF-INST-006 | 验收通水接口 | 验收合格并开通供水 | 营收业务系统 | HTTP/REST | 报装单号、验收结果、水表信息 | 开户结果、客户编号、通水状态 | +| IF-INST-007 | 档案归档接口 | 竣工档案归档管理 | 档案管理系统 | HTTP/REST | 报装单号、竣工资料、验收文档 | 归档状态、档案编号、存储位置 | + +### 子系统架构设计 + +  报装业务系统采用阶段式流程架构,将复杂的报装业务分解为申请受理、现场踏勘、施工管理、验收通水四个核心阶段,每个阶段具有明确的输入输出和验收标准。系统与CA电子签章系统深度集成,实现合同文档的电子化签署和存证。 + + + +```mermaid +graph TB + subgraph "报装业务系统" + APPLY[申请受理] + SURVEY[现场踏勘] + BUILD[施工管理] + ACCEPT[验收通水] + ARCH[资料归档] + end + + WECHAT[微网厅] -.->|报装申请| APPLY + APPLY -.-> SURVEY -.-> BUILD -.-> ACCEPT -.-> ARCH + INST_WO[工单系统] -.->|派工/回填| SURVEY + INST_WO -.->|派工/回填| BUILD + CA[CA电子签章] + ARCH -.->|签章/验章/存证| CA + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---|---|---|---| +| INST-001 | 报装流程管理 | 端到端阶段流转,里程碑控制 | 自行开发 | +| INST-002 | 工程管理 | 进度/资源/质量/安全管理 | 自行开发 | +| INST-003 | 档案管理 | 资料归档、过程留痕、竣工档案 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "报装业务系统模块关系" + A[INST-001
报装流程管理] + B[INST-002
工程管理] + C[INST-003
档案管理] + end + + A -->|流程驱动| B + B -->|工程资料| C + C -.->|档案反馈| A + + %% 样式定义 + classDef flowModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef projectModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef archiveModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + + class A flowModule + class B projectModule + class C archiveModule + +``` + + +### 模块描述 + +#### INST-001: 报装流程管理 + +**功能概述:** + +  报装流程管理模块负责端到端的报装业务流程控制,涵盖从申请受理到资料归档的完整生命周期管理。 + +**核心功能:** + +1. **申请受理** + - 申请类型识别(单位/个人、新建户表/总表/旧城改造) + - 工程信息录入(工程名称、地址、经办人信息) + - 资料上传管理(身份证、营业执照、房产证等) + - 工程编号自动生成 + - 申请暂存与提交控制 + +2. **踏勘管理** + - 现场勘查任务分派 + - 勘查结果录入(用水性质、水表口径、数量、预算总价) + - 用户信息批量录入 + - 设计图纸管理 + - 勘查意见与审核 + +3. **审批流转** + - 多级审批流程控制 + - 审批意见记录 + - 流程回退机制 + - 审批状态跟踪 + +4. **合同与缴费** + - OA系统合同审批对接 + - 分批缴费支持 + - 收据打印管理 + - 合同签订确认 + +#### INST-002: 工程管理 + +**功能概述:** + +  工程管理模块负责报装工程的施工全过程管理,包括派工、安装、验收等关键环节的控制与监督。 + +**核心功能:** + +1. **工程派工** + - 施工部门选择与派遣 + - 派工任务生成 + - 施工人员分配 + - 与SYS-005工单系统协作 + +2. **工程安装** + - 仓库领表管理(与表务系统对接) + - 现场安装信息录入 + - 水表信息关联(条形码、钢印号、厂家、型号) + - 施工过程记录(施工负责人、时间、描述) + - 安装质量控制 + +3. **工程验收** + - 联合竣工验收管理 + - 验收人员分配(抄表员、工程部门) + - 验收结果录入(合格/不合格) + - 验收情况详细记录 + - 表号等关键信息确认 + +4. **进度监控** + - 工程进度实时跟踪 + - 关键节点里程碑控制 + - 延期预警与通知 + - 施工安全管理 + +#### INST-003: 档案管理 + +**功能概述:** + +  档案管理模块负责报装业务全过程的资料归档、电子签章和竣工档案管理,确保业务合规性和可追溯性。 + +**核心功能:** + +1. **资料归档** + - 报装申请资料电子化存储 + - 踏勘设计图纸归档 + - 施工安装记录归档 + - 验收文档归档 + - 合同资料归档 + +2. **电子签章** + - CA电子签章系统对接 + - 申请材料电子签署 + - 施工验收文书签章 + - 签章验证与存证 + - 签章回执异步处理 + +3. **竣工档案** + - 竣工资料整理 + - 档案完整性检查 + - 移交确认管理 + - 与营收系统立户对接 + - 档案查询与检索 + +4. **材料审核** + - 报装材料核对 + - 资料完整性验证 + - 审核意见记录 + - 补充资料管理 + + + +# 子系统8设计: 发票服务子系统 + +## 任务概述 + +  发票服务子系统(SYS-008)定位为"基础服务层"的统一开票能力中心,通过统一开票网关与供应商适配器屏蔽不同厂商差异,当前优先对接"航天信息",预留"博思"等供应商接入能力。 + +## 设计概述 + +### 总体约束 + +- 统一入口:提供统一的开票、作废/红冲、查询能力 +- 供应商无关:采用适配器模式屏蔽供应商差异 +- 合规可靠:签章/存证、回执落库、审计留痕 + +### 设计方案概述 + +- 架构采用"统一开票网关 + 供应商适配器 + 回执处理/存证"的三层模型;对上通过REST接口供营收业务与微网厅调用,对下通过供应商SDK/HTTP对接航天(现阶段)与其他供应商。 + +### 子系统外部接口 + +  发票服务子系统作为基础服务层的统一开票能力中心,为上游业务系统提供标准化的发票服务。系统采用适配器模式,支持多供应商接入,当前优先对接航天信息,预留博思等其他供应商接入能力,确保发票业务的合规性和可扩展性。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-INV-001 | 统一开票接口 | 统一受理电子发票开具请求 | 营收业务系统/微网厅 | HTTP/REST | 开票信息、购买方信息、商品明细、税额 | 发票申请ID、开票状态、预计完成时间 | +| IF-INV-002 | 作废红冲接口 | 发票作废和红字发票处理 | 营收业务系统 | HTTP/REST | 原发票号码、作废/红冲原因、操作类型 | 处理结果、新发票信息、作废状态 | +| IF-INV-003 | 发票查询接口 | 查询发票状态和下载链接 | 营收系统/微网厅/客户端 | HTTP/REST | 发票代码、发票号码、查询类型 | 发票状态、PDF下载链接、发票详情 | +| IF-INV-004 | 回执推送接口 | 接收供应商发票处理回执 | 航天信息/博思等供应商 | HTTP/REST | 回执ID、处理结果、发票文件、时间戳 | 接收确认、存储状态、通知结果 | +| IF-INV-005 | 供应商切换接口 | 供应商服务切换和负载均衡 | 发票服务网关 | HTTP/REST | 供应商标识、切换原因、备用方案 | 切换状态、新供应商信息、影响评估 | +| IF-INV-006 | 存证签章接口 | 发票电子存证和数字签章 | 存证签章模块 | HTTP/REST | 发票文件、签章类型、存证要求 | 存证凭证、签章状态、法律效力确认 | + +## 子系统架构设计 + +  发票服务子系统采用统一网关和适配器模式架构,通过统一开票网关屏蔽不同供应商的接口差异,供应商适配器实现具体厂商的协议转换,回执处理模块确保业务闭环,存证签章模块保障发票的法律效力。 + + +```mermaid +graph TB + subgraph "发票服务子系统" + GW[统一开票网关] + ADP[供应商适配器] + RCPT[回执处理] + EVID[存证与签章] + end + + subgraph "上游系统" + REV[营收业务系统] + WECHAT[微网厅] + end + + subgraph "供应商" + HT[航天信息] + BOS[博思/预留] + end + + REV -.->|INV-001/002/003| GW + WECHAT -.->|发票查询/下载| GW + GW --> ADP --> HT + ADP -.-> BOS + HT -.-> RCPT --> EVID + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---|---|---|---| +| INV-001 | 统一开票网关 | 统一鉴权、参数校验、基础路由 | 自行开发 | +| INV-002 | 供应商适配器 | 航天/博思等供应商协议适配、签名加验签 | 自行开发 | +| INV-003 | 回执处理 | 回执解析、状态机、失败重试、告警通知 | 自行开发 | +| INV-004 | 存证与签章 | 发票PDF/JSON存证、签章与链接生成、合规审计 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "发票服务子系统模块关系" + A[INV-001
统一开票网关] + B[INV-002
供应商适配器] + C[INV-003
回执处理] + D[INV-004
存证与签章] + end + + A -->|请求路由| B + B -->|供应商回调| C + C -->|状态更新| D + C -.->|状态回馈| A + + %% 样式定义 + classDef gatewayModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef adapterModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef processModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + + class A gatewayModule + class B adapterModule + class C,D processModule + +``` + + +### 模块描述 + +#### INV-001: 统一开票网关 + +- 统一入口鉴权与参数校验 +- 开票请求幂等控制 +- 基础路由与负载分发 +- 供应商简单选择 + +#### INV-002: 供应商适配器 + +- 航天信息SDK/HTTP对接 +- 字段映射与签名验签 +- 错误码标准化转换 +- 博思等供应商扩展预留 + +#### INV-003: 回执处理 + +- 开票状态回填处理 +- 失败重试(指数退避策略) +- 超时监控与告警 +- 微网厅消息联动通知 + +#### INV-004: 存证与签章 + +- 发票PDF存储管理 +- 票根JSON数据保存 +- 数字签章与下载链接 +- 审计日志与合规留痕 + + + +# 子系统9设计: 支付与银行结算子系统 + +## 任务概述 + +  支付与银行结算子系统(SYS-009)统一承载聚合支付/退款、渠道适配(微信/支付宝/银联聚合)、支付回调验签入账,以及银行实时收费、代扣/托收签约解约、送盘/回盘/对账契约与安全加解密/签名,向上对营收/微网厅等系统提供标准化支付与结算能力。夜间批量代扣、完整回盘状态补偿、对账差异处理与结算确认当前仍按后续完善项管理。 + +## 设计概述 + +### 总体约束 + +- 多渠道聚合:统一接入微信/支付宝/银联聚合 +- 统一结算:统一维护批次、回盘、对账和差异语义,完整结算闭环按后续完善项推进 +- 安全合规:签名/验签、加解密、回调防重放、幂等 +- 高可用:基础重试补偿机制 + +### 设计方案概述 + +- 采用"统一支付与结算网关 + 渠道/银行适配器 + 回调处理 + 对账处理 + 加解密/签名"的分层;对上REST接口,对下渠道SDK/HTTP与银行HTTP/SFTP对接。 + +### 子系统外部接口(SYS-009) + +  支付与银行结算子系统作为统一的支付能力中心,为上游业务系统提供聚合支付、银行实时收费、代扣/托收签解约、退款处理、对账管理等支付结算服务。以下接口表表达的是正式设计目标边界,其中聚合支付、实时收费查询/缴费、代扣/托收签解约已具备较明确实现证据;`BankWithholding` 六条银行入口已形成最小实现态闭环,托收平行链路、对账和完整结算闭环仍按部分实现或后续完善项管理。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-PAY-001 | 统一支付下单接口 | 统一处理各渠道支付下单请求 | 营收系统/微网厅 | HTTP/REST | 订单信息、支付方式、支付金额、用户标识 | 预支付订单号、支付参数、二维码 | +| IF-PAY-002 | 统一关单接口 | 订单关闭和撤销处理 | 营收系统/微网厅 | HTTP/REST | 订单号、关闭原因、操作类型 | 关单状态、退款信息、处理结果 | +| IF-PAY-003 | 统一退款接口 | 原路退款和部分退款处理 | 营收系统/微网厅 | HTTP/REST | 原订单号、退款金额、退款原因 | 退款单号、退款状态、预计到账时间 | +| IF-PAY-004 | 支付回调接口 | 接收渠道支付结果回调 | 微信/支付宝/银联 | HTTP/REST | 回调数据、签名、时间戳 | 处理确认、业务更新状态 | +| IF-PAY-005 | 批量代扣送盘接口 | 银行批量代扣文件发送 | 营收业务系统 | HTTP/REST/SFTP | 代扣清单、客户签约信息、扣款金额 | 送盘状态、批次号、预计处理时间(`BankWithholding` 已具备最小实现态闭环;真实文件通道联调仍待补证) | +| IF-PAY-006 | 批量代扣回盘接口 | 银行代扣结果回盘处理 | 银行系统 | HTTP/REST/SFTP | 回盘文件、处理结果、失败原因 | 解析结果、状态更新、异常处理(`BankWithholding` 已具备最小实现态闭环;真实文件解析与异常补偿仍待补证) | +| IF-PAY-007 | 批量对账文件接口 | 银行对账文件处理分析 | 银行系统/营收系统 | HTTP/REST/SFTP | 对账文件、对账日期、差异规则 | 对账结果、差异明细、调整建议(当前仍按部分实现或后续完善项管理) | +| IF-PAY-008 | 加解密签名接口 | 支付数据安全处理 | 内部模块调用 | HTTP/REST | 待处理数据、加密类型、签名算法 | 处理结果、安全凭证、验证状态 | + +## 子系统架构设计 + +  支付与银行结算子系统采用统一网关和多适配器架构,通过统一支付网关提供标准化支付接口,渠道适配器处理不同支付渠道的协议差异,银行适配器实现批量代扣和对账功能,回调处理确保支付结果的及时处理,加解密模块保障交易安全。 + + +```mermaid +graph TB + subgraph "支付与银行结算子系统" + GW[统一支付与结算网关] + ADP_CH[渠道适配器] + ADP_BANK[银行适配器] + CB[回调处理] + RECON[对账处理] + CRYPTO[加解密/签名] + end + + subgraph "上游系统" + REV[营收业务系统] + WECHAT[微网厅] + end + + subgraph "外部机构" + WX[微信] + ALI[支付宝] + UPG[银联聚合] + BANK[银行] + end + + REV -.->|PAY-001/002/003/005/006/007| GW + WECHAT -.->|下单/查询| GW + GW --> ADP_CH --> WX + ADP_CH --> ALI + ADP_CH --> UPG + GW --> ADP_BANK --> BANK + WX -.-> CB + ALI -.-> CB + UPG -.-> CB + ADP_BANK -.-> RECON + GW -.-> CRYPTO + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---|---|---|---| +| PAY-001 | 统一支付与结算网关 | 鉴权、参数校验、幂等、基础路由 | 自行开发 | +| PAY-002 | 渠道适配器 | 渠道参数映射、签名/验签、错误码转换 | 自行开发 | +| PAY-003 | 银行适配器 | 协议/文件规范适配、编码转换、SFTP/HTTP | 自行开发 | +| PAY-004 | 回调处理 | 回调验签、订单入账、补偿重试 | 自行开发 | +| PAY-005 | 批量对账处理 | 对账接收/解析、差错处理、账务回填、报告 | 自行开发 | +| PAY-006 | 加解密/签名 | SM2/SM4/3DES等算法、密钥管理 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "支付与银行结算子系统模块关系" + A[PAY-001
统一支付与结算网关] + B[PAY-002
渠道适配器] + C[PAY-003
银行适配器] + D[PAY-004
回调处理] + E[PAY-005
批量对账处理] + F[PAY-006
加解密/签名] + end + + A -->|渠道路由| B + A -->|银行对接| C + B -->|支付回调| D + C -->|对账数据| E + A -->|安全加密| F + + B -.->|状态反馈| A + C -.->|状态反馈| A + D -.->|结果通知| A + E -.->|对账结果| A + F -.->|密钥服务| A + + %% 样式定义 + classDef gatewayModule fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + classDef adapterModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef processModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + classDef securityModule fill:#e8f5e8,stroke:#388e3c,stroke-width:2px + + class A gatewayModule + class B,C adapterModule + class D,E processModule + class F securityModule + +``` + + +### 模块描述 + +#### PAY-001: 统一支付/代扣网关 + +- 统一入口鉴权与字段校验 +- 基础保护机制 +- 幂等键与重放攻击保护 +- 简单路由与流量分发 + +#### PAY-002: 渠道适配器 + +- 微信/支付宝/银联参数适配 +- 签名规范统一处理 +- 错误码标准化转换 +- 渠道响应格式统一 + +#### PAY-003: 银行适配器 + +- 银行与第三方支付协议对接 +- 签名验签与编码转换(GBK/UTF-8) +- SFTP/HTTP文件交互处理 +- 错误码映射与异常处理 + +#### PAY-004: 回调处理 + +- 支付回调验签确认 +- 订单状态同步对齐 +- 失败重试与异常告警 +- 回调幂等与去重处理 + +#### PAY-005: 对账处理 + +- 银行对账文件定时拉取解析 +- 差异识别与异常记录 +- 冲正/补记建议生成 +- 对账报告与追踪链路告警 +- 当前阶段按目标能力保留正式设计口径,不直接表述为已形成完整闭环 + +#### PAY-006: 加解密/签名 + +- 国密/商密算法支持 +- 密钥管理与定期轮换 +- 数据安全传输保障 + + + +# 子系统10设计: 消息服务子系统 + +## 任务概述 + +  消息服务子系统(SYS-010)负责统一消息推送、接收与处理,为各业务子系统提供消息通知服务。 + +**设计目标:** + +- 实现消息的统一推送与接收 +- 支持多种消息格式和推送方式 +- 确保消息的及时性和可靠性 + +**功能范围:** + +- **消息推送**:根据业务需求,向不同用户发送消息通知 +- **消息接收**:接收来自各业务系统的消息请求 +- **消息处理**:处理消息通知,生成响应结果 + +## 设计概述 + +### 总体约束 + +**技术约束:** + +- 基于消息队列技术实现消息的异步处理 +- 支持多种消息格式(如JSON、XML等) +- 实现消息的可靠传输和幂等处理 + +**性能约束:** + +- 支持高并发消息处理 +- 消息处理响应时间≤1秒 +- 消息队列容量≥100万条 + +**安全约束:** + +- 消息加密存储 +- 消息传输安全 +- 消息处理日志记录 + +### 子系统外部接口 + +  消息服务子系统作为统一的消息通知中心,为各业务系统提供多渠道消息推送能力。系统支持短信、邮件、站内信等多种消息渠道,与外部系统(OA、智水擎、水投数科APP)对接,实现消息的统一管理和分发。 + +| 接口编号 | 接口名称 | 功能描述 | 调用方 | 接口协议 | 输入参数 | 输出结果 | +|---|---|---|---|---|---|---| +| IF-MSG-001 | 短信发送接口 | 发送短信通知消息 | 营收/微网厅/工单系统 | HTTP/REST | 手机号、消息内容、模板ID、发送时间 | 发送状态、消息ID、预计到达时间 | +| IF-MSG-002 | 邮件发送接口 | 发送邮件通知消息 | 营收/工单/报装系统 | HTTP/REST | 邮箱地址、邮件主题、邮件内容、附件 | 发送状态、邮件ID、送达确认 | +| IF-MSG-003 | 站内信接口 | 发送系统站内消息 | 各业务系统 | HTTP/REST | 用户ID、消息标题、消息内容、消息类型 | 发送结果、消息状态、已读状态 | +| IF-MSG-004 | 微信消息推送接口 | 发送微信模板消息 | 微网厅系统 | HTTP/REST | 用户OpenID、模板ID、模板数据 | 推送状态、消息ID、送达状态 | +| IF-MSG-005 | 外部系统对接接口 | 对接OA/智水擎等外部系统 | OA系统/智水擎/水投数科APP | HTTP/REST | 系统标识、消息类型、接收用户、消息内容 | 对接状态、消息分发结果 | +| IF-MSG-006 | 固定模板管理接口 | 管理消息固定模板 | 系统管理员 | HTTP/REST | 模板类型、模板内容、适用场景 | 模板ID、保存状态、生效时间 | + +### 设计方案概述 + +**架构设计:** + +  消息服务子系统采用消息队列技术实现消息的异步处理。通过RabbitMQ实现消息的可靠传输和幂等处理。 + +**技术选型:** + +- **消息队列**:RabbitMQ +- **消息格式**:JSON +- **消息加密**:AES-256 +- **消息传输**:HTTPS + +## 子系统架构设计 + +  消息服务子系统采用消息中心架构模式,通过统一消息网关接收各业务系统的消息发送请求,通过渠道适配器实现不同消息渠道的协议转换,固定模板管理确保消息内容的规范性,外部系统对接实现与OA、智水擎等系统的消息互通。 + + +```mermaid +graph TB + subgraph "消息服务子系统" + PUB[消息推送] + SUB[消息接收] + MQ[RabbitMQ] + end + + PUB --> MQ + SUB --> MQ + +``` + + +## 模块定义 + +### 模块列表 + +| 模块编号 | 模块名称 | 功能描述 | 开发方式 | +|---|---|---|---| +| MSG-001 | 消息网关模块 | 统一接入、鉴权、路由、幂等控制 | 自行开发 | +| MSG-002 | 短信服务模块 | 短信发送、回执处理、失败重试、供应商适配 | 自行开发 | +| MSG-003 | 邮件服务模块 | 邮件发送、附件管理、批量发送、回执处理 | 自行开发 | +| MSG-004 | 站内信模块 | 站内信管理、用户消息推送、已读状态跟踪 | 自行开发 | +| MSG-005 | 微信通知模块 | 微信模板消息、公众号推送通知 | 自行开发 | +| MSG-006 | 模板管理模块 | 消息模板管理、固定模板维护 | 自行开发 | +| MSG-007 | 外部系统适配模块 | 对接OA、智水擎、水投数科app等数科系统 | 自行开发 | + +### 模块间关系 + + +```mermaid +graph TD + subgraph "消息服务子系统模块关系" + A[MSG-001
消息网关模块] + B[MSG-002
短信服务模块] + C[MSG-003
邮件服务模块] + D[MSG-004
站内信模块] + E[MSG-005
微信通知模块] + F[MSG-006
模板管理模块] + G[MSG-007
外部系统适配模块] + end + + %% 核心流程 + A -->|短信路由| B + A -->|邮件路由| C + A -->|站内信路由| D + A -->|微信路由| E + A -->|外部系统路由| G + + %% 模板服务 + F -->|短信模板| B + F -->|邮件模板| C + F -->|站内信模板| D + F -->|微信模板| E + F -->|外部模板| G + + %% 回执反馈 + B -.->|短信回执| A + C -.->|邮件回执| A + D -.->|已读状态| A + E -.->|微信回执| A + G -.->|外部回执| A + + %% 样式定义 + classDef gatewayModule fill:#e3f2fd,stroke:#1976d2,stroke-width:3px + classDef channelModule fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + classDef templateModule fill:#fff3e0,stroke:#f57c00,stroke-width:2px + classDef externalModule fill:#e8f5e8,stroke:#388e3c,stroke-width:2px + + class A gatewayModule + class B,C,D,E channelModule + class F templateModule + class G externalModule + +``` + + +### 模块描述 + +#### MSG-001: 消息网关模块 + +- 统一消息接入与鉴权 +- 简单路由与负载均衡 +- 基础保护机制 +- 幂等控制与防重复发送 + +#### MSG-002: 短信服务模块 + +- 短信发送与供应商适配 +- 回执状态处理与确认 +- 失败重试与补偿机制 +- 短信固定内容管理 + +#### MSG-003: 邮件服务模块 + +- 邮件发送与附件管理 +- 批量邮件处理能力 +- 回执跟踪与状态确认 +- SMTP服务器配置管理 + +#### MSG-004: 站内信模块 + +- 站内消息推送管理 +- 用户消息中心维护 +- 已读/未读状态跟踪 +- 消息分类与过滤 + +#### MSG-005: 微信通知模块 + +- 微信模板消息发送 +- 公众号推送通知 +- 微信API接口对接 +- 推送结果状态回执 + +#### MSG-006: 模板管理模块 + +- 消息模板统一管理 +- 固定模板内容维护 +- 模板版本控制 +- 多渠道模板适配 + +#### MSG-007: 外部系统适配模块 + +- OA系统消息对接 +- 智水擎系统通知集成 +- 水投数科app消息推送 +- 外部API接口适配 + + + +# 非功能性需求的设计 + +## 性能的考虑 + +**设计目标:** + +- 系统响应时间:≤3秒(95%的请求) +- 并发用户数:≥200个在线用户 +- 数据库查询:≤1秒(单表查询) +- 批量处理:≥1000条/分钟 + +**设计措施:** + +1. **数据库优化** + - 采用达梦数据库主从架构,读写分离 + - 对核心业务表建立合适索引 + - 大表分区存储,历史数据归档 + - 连接池配置优化 + +2. **缓存策略** + - Redis缓存热点数据 + - 应用级缓存配置信息 + - CDN加速静态资源 + - 浏览器缓存优化 + +3. **应用优化** + - 异步处理非核心业务 + - 批量操作优化 + - SQL语句优化 + - 业务逻辑优化 + +## 兼容性的考虑 + +**浏览器兼容性:** + +- Chrome 80+(推荐) +- Firefox 75+ +- Safari 13+ +- Edge 80+ + +**数据库兼容性:** + +- 主要支持:达梦数据库 8.0+ +- 备选方案:PostgreSQL 12+ +- 预留接口:MySQL 8.0+ + +**操作系统兼容性:** + +- 服务器:Linux CentOS 7.6+/Ubuntu 18.04+ +- 客户端:Windows 10+/macOS 10.15+ + +## 安全的考虑 + +**身份认证:** + +- 基于OAuth2.0+CAS协议的单点登录 +- 基于JWT的无状态认证 +- 支持多因子认证(MFA) +- OAuth2+CAS第三方登录集成 +- 密码复杂度策略 + +**权限控制:** + +- RBAC角色权限模型 +- 细粒度功能权限控制 +- 数据权限隔离 +- 多租户数据隔离 + +**数据安全:** + +- 敏感数据加密存储 +- 数据传输HTTPS加密 +- 数据库连接加密 +- 定期数据备份 + +**系统安全:** + +- SQL注入防护 +- XSS攻击防护 +- CSRF攻击防护 +- 接口访问频率限制 + +## 可移植性的考虑 + +**平台无关性:** + +- 基于Java 17+,支持跨平台部署 +- 容器化部署,支持Docker/Kubernetes +- 数据库抽象层,支持多种数据库 +- 配置外部化,环境隔离 + +**云平台适配:** + +- 支持阿里云、腾讯云、华为云部署 +- 适配云原生架构 +- 支持弹性扩缩容 +- 云存储服务集成 + +## 关键技术特性 + +### 响应式设计 + +- **移动端适配**:完美适配各种移动设备 +- **触屏优化**:优化的触屏交互体验 +- **加载优化**:快速的页面加载速度 +- **离线支持**:基础功能离线可用 + +### 安全保障 + +- **数据加密**:敏感数据传输加密 +- **身份验证**:多重身份验证机制 +- **支付安全**:完善的支付安全策略 +- **隐私保护**:严格的用户隐私保护 + +## 集成与测试的考虑 + +**集成策略:** + +- 采用自底向上的集成方式 +- 先完成基础服务开发测试 +- 再进行业务服务集成 +- 最后进行端到端集成测试 + +**测试策略:** + +- 单元测试:代码覆盖率≥80% +- 集成测试:覆盖主要业务流程 +- 性能测试:验证性能指标 +- 安全测试:安全漏洞扫描 + +## 可扩展性的考虑 + +**架构扩展:** + +- 微服务架构支持水平扩展 +- 数据库分库分表支持 +- 缓存集群扩展 +- 负载均衡扩展 + +**功能扩展:** + +- 插件化架构设计 +- 开放API接口 +- 工作流引擎支持 +- 配置化业务规则 + +## 可靠性的考虑 + +**高可用设计:** + +- 应用服务集群部署 +- 数据库主从备份 +- 负载均衡器冗余 +- 自动故障切换 + +**容错机制:** + +- 服务降级策略 +- 熔断器模式 +- 重试机制 +- 异常处理策略 + +**数据备份:** + +- 数据库实时备份 +- 定期全量备份 +- 增量备份策略 +- 异地备份存储 + +## 可维护性的考虑 + +**代码质量:** + +- 统一编码规范 +- 代码审查制度 +- 自动化测试 +- 持续集成/持续部署 + +**运维友好:** + +- 完善的部署文档 +- 运维监控dashboard +- 日志集中管理 +- 性能监控告警 + +**文档管理:** + +- API文档自动生成 +- 系统架构文档 +- 运维操作手册 +- 故障处理手册 diff --git a/output/04_Security_Design.docx b/output/04_Security_Design.docx new file mode 100644 index 0000000..10e2c1a Binary files /dev/null and b/output/04_Security_Design.docx differ diff --git a/output/04_Security_Design.html b/output/04_Security_Design.html new file mode 100644 index 0000000..51ac6f6 --- /dev/null +++ b/output/04_Security_Design.html @@ -0,0 +1,932 @@ + + + + + + + + 福建水务营收系统-安全设计 + + + + + +
+

福建水务营收系统-安全设计

+

系统设计团队

+

2024年12月19日

+
+ +

1 福建水务营收系统安全设计文档

+

1.1 文档信息

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目信息详情
项目名称福建水务营收系统
文档类型安全设计文档
技术框架RuoYi-Vue-Pro + 达梦数据库 8.0+
文档版本v1.0
编写日期2024-12-19
文档状态✅ 已完成
+

1.2 章节导航(精简)

+ +

## 安全设计概述

+

福建水务营收系统安全设计结合水务行业特点和国产化要求,构建全方位、多层次的安全防护体系。

+

1.2.1 安全目标

+
    +
  • 机密性:确保敏感数据不被未授权访问
  • +
  • 完整性:防止数据被恶意篡改或损坏
  • +
  • 可用性:保障系统7×24小时稳定运行
  • +
  • 可审计性:完整记录系统操作审计轨迹
  • +
  • 合规性:满足行业监管要求
  • +
+

1.2.2 安全原则

+
    +
  • 纵深防御:多层安全防护,避免单点故障
  • +
  • 最小权限:用户和应用仅具备必要的最小权限
  • +
  • 默认安全:系统默认采用最严格的安全配置
  • +
  • 持续监控:7×24小时安全监控和威胁检测
  • +
  • 国产化优先:优先采用国产安全产品和技术
  • +
+

1.2.3 总体安全架构

+
graph TB
+    subgraph "外部威胁"
+        THREAT1[网络攻击]
+        THREAT2[恶意软件]
+        THREAT3[数据泄露]
+        THREAT4[内部威胁]
+    end
+    
+    subgraph "安全防护层"
+        subgraph "边界安全"
+            WAF[Web应用防火墙]
+            FW[网络防火墙]
+            IPS[入侵防护系统]
+            VPN[VPN网关]
+        end
+        
+        subgraph "应用安全"
+            AUTH[身份认证]
+            AUTHZ[访问控制]
+            AUDIT[操作审计]
+            ENCRYPT[数据加密]
+        end
+        
+        subgraph "数据安全"
+            TDE[透明数据加密]
+            RLS[行级安全]
+            MASK[数据脱敏]
+            BACKUP[安全备份]
+        end
+        
+        subgraph "运维安全"
+            MONITOR[安全监控]
+            LOG[日志分析]
+            ALERT[告警响应]
+            PATCH[安全更新]
+        end
+    end
+    
+    subgraph "核心资产"
+        APP[水务营收系统]
+        DB[达梦数据库]
+        FILE[文件存储]
+        API[接口服务]
+    end
+    
+    THREAT1 --> WAF
+    THREAT2 --> FW
+    THREAT3 --> IPS
+    THREAT4 --> VPN
+    
+    WAF --> AUTH
+    FW --> AUTHZ
+    IPS --> AUDIT
+    VPN --> ENCRYPT
+    
+    AUTH --> TDE
+    AUTHZ --> RLS
+    AUDIT --> MASK
+    ENCRYPT --> BACKUP
+    
+    TDE --> MONITOR
+    RLS --> LOG
+    MASK --> ALERT
+    BACKUP --> PATCH
+    
+    MONITOR --> APP
+    LOG --> DB
+    ALERT --> FILE
+    PATCH --> API
+
+

## 达梦数据库安全

+

1.2.4 数据库安全架构

+
graph TB
+    subgraph "达梦数据库安全特性"
+        subgraph "身份认证"
+            PWD[密码认证]
+            CERT[证书认证]
+            LDAP_AUTH[LDAP认证]
+            KERBEROS[Kerberos认证]
+        end
+        
+        subgraph "访问控制"
+            RBAC_DB[基于角色的访问控制]
+            RLS_DB[行级安全策略]
+            CLS_DB[列级访问控制]
+            SCHEMA[模式权限控制]
+        end
+        
+        subgraph "数据加密"
+            TDE_SM4[TDE透明加密<br/>SM4国密算法]
+            SSL_SM[SSL传输加密<br/>SM2/SM3/SM4]
+            FIELD_ENC[字段级加密]
+            BACKUP_ENC[备份加密]
+        end
+        
+        subgraph "审计监控"
+            AUDIT_LOG[操作审计日志]
+            LOGIN_LOG[登录审计]
+            DDL_LOG[DDL操作记录]
+            SECURITY_LOG[安全事件日志]
+        end
+    end
+    
+    PWD --> RBAC_DB
+    CERT --> RLS_DB
+    LDAP_AUTH --> CLS_DB
+    KERBEROS --> SCHEMA
+    
+    RBAC_DB --> TDE_SM4
+    RLS_DB --> SSL_SM
+    CLS_DB --> FIELD_ENC
+    SCHEMA --> BACKUP_ENC
+    
+    TDE_SM4 --> AUDIT_LOG
+    SSL_SM --> LOGIN_LOG
+    FIELD_ENC --> DDL_LOG
+    BACKUP_ENC --> SECURITY_LOG
+
+

1.2.5 国产密码算法应用

+

1.2.5.1 传输加密

+
    +
  • 配置国密SSL连接,使用SM2/SM3/SM4算法套件
  • +
  • 支持SM4-GCM-SM3和SM4-CCM-SM3加密套件
  • +
  • 配置国产SM2证书和私钥文件
  • +
  • 强制要求SSL连接,拒绝明文传输
  • +
+

1.2.5.2 透明数据加密

+
    +
  • 启用TDE透明数据加密,使用SM4算法
  • +
  • 为敏感数据表配置列级加密
  • +
  • 支持确定性加密和随机化加密
  • +
  • 集成本地密钥管理系统(localkms)
  • +
+

1.2.6 行级安全策略

+
    +
  • 创建多租户行级安全策略,实现数据隔离
  • +
  • 配置基于用户角色的数据访问控制
  • +
  • 实现动态数据过滤和权限控制
  • +
  • 支持复杂的安全策略表达式
  • +
+

1.2.7 数据脱敏策略

+
    +
  • 创建敏感数据脱敏函数和规则
  • +
  • 为不同角色提供不同级别的数据视图
  • +
  • 实现手机号、身份证号等敏感信息脱敏
  • +
  • 支持动态脱敏和静态脱敏
  • +
+

## 应用系统安全

+

1.2.8 Spring Security安全配置

+

1.2.8.1 认证配置

+
    +
  • 使用国密SM3哈希算法进行密码加密
  • +
  • 配置JWT身份验证过滤器
  • +
  • 设置CSRF防护和HttpOnly Cookie
  • +
  • 配置请求授权规则和无状态会话管理
  • +
  • 启用方法级安全注解支持
  • +
+

1.2.8.2 多因素认证实现

+
    +
  • 生成随机验证码并缓存到Redis
  • +
  • 设置验证码过期时间防止滥用
  • +
  • 集成短信服务提供商发送验证码
  • +
  • 实现验证码验证和及时清理机制
  • +
+

1.2.9 数据传输安全

+

1.2.9.1 HTTPS配置

+
    +
  • 启用HTTPS协议,使用SSL/TLS加密
  • +
  • 配置国产密码算法套件支持
  • +
  • 使用PKCS12格式的数字证书
  • +
  • 支持TLSv1.2和TLSv1.3协议版本
  • +
+

1.2.9.2 银行文件传输安全约束

+
    +
  • 银行文件交换默认优先使用 SFTPFTP +仅作为兼容能力保留,需在风险评估通过后启用。
  • +
  • 文件传输凭据以 credentialRef +引用形式由环境配置或配置中心承接,不在正式文档、默认仓库配置样例或测试样本中写入明文密码、私钥、证书。
  • +
  • 命中协议缺少 host/port/username/credentialRef +时必须立即阻断当前文件动作,避免以残缺配置尝试连接银行通道。
  • +
  • 路径模板仅允许固定变量白名单,禁止自由表达式、脚本化拼装和未声明变量,防止目录逃逸与错误路由。
  • +
  • 批次审计只保存最终实际使用的协议、目录、文件路径与文件名,不额外保存完整凭据快照,避免敏感配置在业务表中扩散。
  • +
+

1.2.9.3 敏感数据加密

+
    +
  • 采用国密SM4对称加密算法
  • +
  • 实现统一的数据加密和解密服务
  • +
  • 对身份证号、手机号等敏感信息加密存储
  • +
  • 提供统一的异常处理和错误提示
  • +
+

1.2.10 接口安全防护

+

1.2.10.1 接口签名验证

+
    +
  • 基于时间戳、随机数和请求体生成签名
  • +
  • 使用国密SM3哈希算法计算签名值
  • +
  • 检查时间戳有效性防止重放攻击
  • +
  • 实现客户端和服务端签名比对验证
  • +
+

1.2.10.2 接口限流防护

+
    +
  • 基于Redis实现分布式限流控制
  • +
  • 支持按IP、用户、接口等维度限流
  • +
  • 采用滑动窗口算法统计请求频率
  • +
  • 超过限制时返回429状态码和错误提示
  • +
+

## 网络安全设计

+

1.2.11 网络拓扑安全

+
graph TB
+    subgraph "外网区域"
+        INTERNET[互联网]
+        CDN[CDN加速]
+        DNS[DNS服务]
+    end
+    
+    subgraph "边界防护"
+        WAF[Web应用防火墙<br/>国产WAF产品]
+        FW_BORDER[边界防火墙<br/>安全审计]
+        IPS[入侵防护系统<br/>威胁检测]
+        DPI[深度包检测<br/>流量分析]
+    end
+    
+    subgraph "DMZ区域"
+        LB[负载均衡器<br/>SSL卸载]
+        WEB1[Web服务器1]
+        WEB2[Web服务器2]
+        PROXY[反向代理]
+    end
+    
+    subgraph "内网安全"
+        FW_INTERNAL[内部防火墙]
+        VLAN_APP[应用VLAN]
+        VLAN_DB[数据库VLAN]
+        VLAN_MGT[管理VLAN]
+    end
+    
+    subgraph "应用层"
+        APP1[应用服务器1]
+        APP2[应用服务器2]
+        APP3[应用服务器3]
+    end
+    
+    subgraph "数据层"
+        DB_MASTER[达梦主库]
+        DB_SLAVE[达梦从库]
+        REDIS[Redis集群]
+    end
+    
+    subgraph "管理层"
+        JUMP[跳板机]
+        MONITOR[监控服务器]
+        LOG[日志服务器]
+    end
+    
+    INTERNET --> CDN
+    CDN --> DNS
+    DNS --> WAF
+    WAF --> FW_BORDER
+    FW_BORDER --> IPS
+    IPS --> DPI
+    DPI --> LB
+    
+    LB --> WEB1
+    LB --> WEB2
+    WEB1 --> PROXY
+    WEB2 --> PROXY
+    
+    PROXY --> FW_INTERNAL
+    FW_INTERNAL --> VLAN_APP
+    FW_INTERNAL --> VLAN_DB
+    FW_INTERNAL --> VLAN_MGT
+    
+    VLAN_APP --> APP1
+    VLAN_APP --> APP2
+    VLAN_APP --> APP3
+    
+    VLAN_DB --> DB_MASTER
+    VLAN_DB --> DB_SLAVE
+    VLAN_DB --> REDIS
+    
+    VLAN_MGT --> JUMP
+    VLAN_MGT --> MONITOR
+    VLAN_MGT --> LOG
+
+

1.2.12 防火墙策略配置

+

1.2.12.1 边界防火墙策略

+
    +
  • 允许HTTPS访问,开放443端口
  • +
  • 允许HTTP重定向到HTTPS,开放80端口
  • +
  • 禁止外部直接访问数据库端口
  • +
  • 允许内网SSH管理,限制管理网段
  • +
  • 默认拒绝所有其他入站连接
  • +
+

1.2.12.2 应用层防火墙策略

+
    +
  • 只允许来自DMZ区的应用访问
  • +
  • 允许访问数据库服务器的指定端口
  • +
  • 允许访问Redis缓存服务
  • +
  • 允许DNS查询和时间同步
  • +
  • 默认拒绝其他出站连接
  • +
+

1.2.13 入侵检测与防护

+

1.2.13.1 IDS/IPS规则配置

+
    +
  • 配置Web应用攻击检测规则
  • +
  • 配置数据库直接访问告警规则
  • +
  • 配置暴力破解攻击检测规则
  • +
  • 设置基于流量特征的异常检测
  • +
  • 配置威胁情报实时更新机制
  • +
+

## 数据安全设计

+

1.2.14 数据分类分级

+

1.2.14.1 数据分类标准

+
graph TB
+    subgraph "数据分类"
+        SECRET[机密级<br/>重要业务数据]
+        INTERNAL[内部级<br/>一般业务数据]
+        PUBLIC[公开级<br/>公开业务数据]
+    end
+    
+    subgraph "水务业务数据"
+        CUSTOMER[客户身份信息<br/>机密级]
+        METER[水表计量数据<br/>内部级]
+        BILLING[收费账务数据<br/>机密级]
+        REPORT[统计报表数据<br/>内部级]
+        CONFIG[系统配置数据<br/>内部级]
+        LOG[日志审计数据<br/>内部级]
+    end
+    
+    subgraph "保护措施"
+        ENC_HIGH[强加密<br/>SM4+数字签名]
+        ENC_MID[访问控制<br/>权限管理]
+        ENC_LOW[公开访问<br/>无特殊保护]
+    end
+    
+    SECRET --> ENC_HIGH
+    INTERNAL --> ENC_MID
+    PUBLIC --> ENC_LOW
+    
+    CUSTOMER --> SECRET
+    BILLING --> SECRET
+    METER --> INTERNAL
+    REPORT --> INTERNAL
+    CONFIG --> INTERNAL
+    LOG --> INTERNAL
+
+

1.2.14.2 数据保护策略

+
    +
  • 机密级数据:强加密存储,严格访问控制
  • +
  • 内部级数据:权限控制,审计日志记录
  • +
  • 公开级数据:无特殊保护要求
  • +
  • 敏感字段:单独加密,支持查询需求
  • +
+

1.2.15 数据备份与恢复安全

+

1.2.15.1 备份加密策略

+
    +
  • 使用国产密码算法加密备份文件
  • +
  • 生成备份文件完整性校验码
  • +
  • 实现备份文件的安全传输
  • +
  • 定期验证备份文件的完整性
  • +
+

1.2.15.2 数据恢复流程

+
    +
  • 验证备份文件完整性和真实性
  • +
  • 在隔离环境中进行恢复测试
  • +
  • 验证恢复数据的完整性和一致性
  • +
  • 记录详细的恢复过程和验证结果
  • +
+

1.2.16 数据销毁与清理

+

1.2.16.1 安全数据销毁

+
    +
  • 实现安全的数据删除和物理清除
  • +
  • 记录数据销毁的审计日志
  • +
  • 定期清理历史数据和临时文件
  • +
  • 确保已删除数据无法被恢复
  • +
+

## 运维安全设计

+

1.2.17 安全监控体系

+

1.2.17.1 安全监控架构

+
graph TB
+    subgraph "数据采集层"
+        AGENT1[系统日志采集]
+        AGENT2[应用日志采集]
+        AGENT3[数据库日志采集]
+        AGENT4[网络流量采集]
+    end
+    
+    subgraph "数据处理层"
+        KAFKA[消息队列<br/>Kafka集群]
+        STREAM[流处理<br/>Flink/Storm]
+        ETL[数据清洗<br/>Logstash]
+    end
+    
+    subgraph "存储分析层"
+        ES[Elasticsearch<br/>日志存储]
+        SIEM[安全信息事件管理<br/>SIEM平台]
+        AI[智能分析<br/>机器学习]
+    end
+    
+    subgraph "可视化层"
+        DASHBOARD[监控仪表盘<br/>Grafana]
+        ALERT[告警系统<br/>AlertManager]
+        REPORT[安全报告<br/>自动生成]
+    end
+    
+    AGENT1 --> KAFKA
+    AGENT2 --> KAFKA
+    AGENT3 --> KAFKA
+    AGENT4 --> KAFKA
+    
+    KAFKA --> STREAM
+    STREAM --> ETL
+    ETL --> ES
+    
+    ES --> SIEM
+    SIEM --> AI
+    AI --> DASHBOARD
+    
+    DASHBOARD --> ALERT
+    ALERT --> REPORT
+
+

1.2.17.2 安全事件检测规则

+
    +
  • 暴力破解检测:失败登录次数阈值告警
  • +
  • 异常数据访问:大量数据查询行为监控
  • +
  • 权限提升检测:管理员权限变更告警
  • +
  • 异常时间访问:非工作时间访问行为监控
  • +
+

1.2.18 漏洞管理

+

1.2.18.1 漏洞扫描策略

+
    +
  • 定期进行系统漏洞扫描
  • +
  • 执行Web应用安全测试
  • +
  • 进行数据库安全评估
  • +
  • 生成漏洞扫描报告和修复建议
  • +
+

1.2.18.2 补丁管理流程

+
graph LR
+    DISCOVER[漏洞发现] --> ASSESS[风险评估]
+    ASSESS --> PLAN[补丁计划]
+    PLAN --> TEST[测试验证]
+    TEST --> DEPLOY[生产部署]
+    DEPLOY --> VERIFY[部署验证]
+    VERIFY --> DOCUMENT[文档记录]
+    
+    subgraph "评估标准"
+        HIGH[高危<br/>24小时内]
+        MEDIUM[中危<br/>7天内]
+        LOW[低危<br/>30天内]
+    end
+    
+    ASSESS --> HIGH
+    ASSESS --> MEDIUM
+    ASSESS --> LOW
+
+

1.2.19 应急响应预案

+

1.2.19.1 安全事件分级

+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
级别描述响应时间处理措施
P0系统完全不可用,数据泄露15分钟立即启动应急预案,通知管理层
P1核心功能受影响,安全风险高30分钟启动应急预案,组建应急小组
P2部分功能受影响,安全风险中等2小时安排专人处理,定期汇报
P3轻微影响,安全风险较低8小时正常工作时间处理
+

1.2.19.2 应急响应流程

+
graph TB
+    INCIDENT[安全事件发生] --> DETECT[事件检测]
+    DETECT --> REPORT[事件上报]
+    REPORT --> ASSESS[影响评估]
+    ASSESS --> RESPONSE[应急响应]
+    
+    subgraph "应急响应措施"
+        ISOLATE[系统隔离]
+        PRESERVE[证据保全]
+        RECOVER[系统恢复]
+        INVESTIGATE[调查分析]
+    end
+    
+    subgraph "后续处理"
+        LESSON[经验总结]
+        IMPROVE[流程改进]
+        TRAIN[培训加强]
+        DOC[文档更新]
+    end
+    
+    RESPONSE --> ISOLATE
+    RESPONSE --> PRESERVE
+    RESPONSE --> RECOVER
+    RESPONSE --> INVESTIGATE
+    
+    INVESTIGATE --> LESSON
+    LESSON --> IMPROVE
+    IMPROVE --> TRAIN
+    TRAIN --> DOC
+
+

## 安全管理制度

+

1.2.20 安全组织架构

+

1.2.20.1 安全管理组织

+
graph TB
+    CEO[总经理<br/>安全最高责任人]
+    CISO[信息安全负责人<br/>CISO]
+    
+    subgraph "安全管理委员会"
+        IT_DIR[IT总监]
+        SECURITY_DIR[安全总监]
+        COMPLIANCE[合规负责人]
+        LEGAL[法务负责人]
+    end
+    
+    subgraph "安全执行团队"
+        SEC_ADMIN[安全管理员]
+        SYS_ADMIN[系统管理员]
+        DBA[数据库管理员]
+        NET_ADMIN[网络管理员]
+    end
+    
+    subgraph "业务安全责任人"
+        BUS_OWNER[业务负责人]
+        DATA_OWNER[数据负责人]
+        USER_ADMIN[用户管理员]
+    end
+    
+    CEO --> CISO
+    CISO --> IT_DIR
+    CISO --> SECURITY_DIR
+    CISO --> COMPLIANCE
+    CISO --> LEGAL
+    
+    IT_DIR --> SEC_ADMIN
+    IT_DIR --> SYS_ADMIN
+    IT_DIR --> DBA
+    IT_DIR --> NET_ADMIN
+    
+    SECURITY_DIR --> BUS_OWNER
+    SECURITY_DIR --> DATA_OWNER
+    SECURITY_DIR --> USER_ADMIN
+
+

1.2.21 安全管理制度

+

1.2.21.1 人员安全管理

+
    +
  • 入职安全审查:对关键岗位人员进行背景调查
  • +
  • 安全培训:定期进行信息安全意识培训
  • +
  • 权限管理:建立权限申请、审批、回收流程
  • +
  • 离职管理:离职人员权限及时回收,签署保密协议
  • +
+

1.2.21.2 系统建设安全管理

+
    +
  • 安全需求分析:项目立项阶段进行安全需求分析
  • +
  • 安全设计评审:设计阶段进行安全架构评审
  • +
  • 安全测试:上线前进行安全渗透测试
  • +
  • 安全验收:系统上线前进行安全验收
  • +
+

1.2.21.3 系统运维安全管理

+
    +
  • 变更管理:所有系统变更都需要安全评估
  • +
  • 备份管理:定期备份,异地存储,加密保护
  • +
  • 监控管理:7×24小时安全监控
  • +
  • 应急管理:建立应急响应机制
  • +
+

1.2.22 合规管理

+

1.2.22.1 法律法规合规

+
    +
  • 《中华人民共和国网络安全法》
  • +
  • 《中华人民共和国数据安全法》
  • +
  • 《中华人民共和国个人信息保护法》
  • +
  • 《关键信息基础设施安全保护条例》
  • +
+

1.2.22.2 行业标准合规

+
    +
  • GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》
  • +
  • GB/T 32918《信息安全技术 SM2椭圆曲线公钥密码算法》
  • +
  • GB/T 32905《信息安全技术 SM3密码杂凑算法》
  • +
+

1.2.22.3 合规检查清单

+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+

## 总结

+

福建水务营收系统安全设计结合达梦数据库的安全特性,建立了全方位、多层次的安全防护体系。通过技术防护、管理制度、人员培训等多重措施,确保系统安全稳定运行,满足水务行业的安全要求。

+

本安全设计方案的核心特点: 1. +国产化安全:采用达梦数据库和国密算法 2. +纵深防御:网络、应用、数据多层安全防护 3. +持续改进:建立安全监控和应急响应机制 4. +管理规范:完善的安全管理制度和流程

+ + diff --git a/output/04_Security_Design.pdf b/output/04_Security_Design.pdf new file mode 100644 index 0000000..8058f3a Binary files /dev/null and b/output/04_Security_Design.pdf differ diff --git a/output/04_Security_Design_processed.md b/output/04_Security_Design_processed.md new file mode 100644 index 0000000..d4606d1 --- /dev/null +++ b/output/04_Security_Design_processed.md @@ -0,0 +1,698 @@ +--- +title: "04_Security_Design" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: TC-04-SECURITY +doc_role: master_document +authority: primary +scope: 安全设计 +source_of_truth: true +last_reviewed: 2026-03-11 +retrieval_priority: P0 +--- + +# 福建水务营收系统安全设计文档 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 安全设计文档 | +| **技术框架** | RuoYi-Vue-Pro + 达梦数据库 8.0+ | +| **文档版本** | v1.0 | +| **编写日期** | 2024-12-19 | +| **文档状态** | ✅ 已完成 | + +## 章节导航(精简) +- [安全设计概述](#sec-overview) +- [达梦数据库安全](#sec-db-security) +- [应用系统安全](#sec-application-security) +- [网络安全设计](#sec-network-security) +- [数据安全设计](#sec-data-security) +- [运维安全设计](#sec-ops-security) +- [安全管理制度](#sec-governance) +- [总结](#sec-summary) + + +## 安全设计概述 + +福建水务营收系统安全设计结合水务行业特点和国产化要求,构建全方位、多层次的安全防护体系。 + +### 安全目标 +- **机密性**:确保敏感数据不被未授权访问 +- **完整性**:防止数据被恶意篡改或损坏 +- **可用性**:保障系统7×24小时稳定运行 +- **可审计性**:完整记录系统操作审计轨迹 +- **合规性**:满足行业监管要求 + +### 安全原则 +- **纵深防御**:多层安全防护,避免单点故障 +- **最小权限**:用户和应用仅具备必要的最小权限 +- **默认安全**:系统默认采用最严格的安全配置 +- **持续监控**:7×24小时安全监控和威胁检测 +- **国产化优先**:优先采用国产安全产品和技术 + +### 总体安全架构 + + +```mermaid +graph TB + subgraph "外部威胁" + THREAT1[网络攻击] + THREAT2[恶意软件] + THREAT3[数据泄露] + THREAT4[内部威胁] + end + + subgraph "安全防护层" + subgraph "边界安全" + WAF[Web应用防火墙] + FW[网络防火墙] + IPS[入侵防护系统] + VPN[VPN网关] + end + + subgraph "应用安全" + AUTH[身份认证] + AUTHZ[访问控制] + AUDIT[操作审计] + ENCRYPT[数据加密] + end + + subgraph "数据安全" + TDE[透明数据加密] + RLS[行级安全] + MASK[数据脱敏] + BACKUP[安全备份] + end + + subgraph "运维安全" + MONITOR[安全监控] + LOG[日志分析] + ALERT[告警响应] + PATCH[安全更新] + end + end + + subgraph "核心资产" + APP[水务营收系统] + DB[达梦数据库] + FILE[文件存储] + API[接口服务] + end + + THREAT1 --> WAF + THREAT2 --> FW + THREAT3 --> IPS + THREAT4 --> VPN + + WAF --> AUTH + FW --> AUTHZ + IPS --> AUDIT + VPN --> ENCRYPT + + AUTH --> TDE + AUTHZ --> RLS + AUDIT --> MASK + ENCRYPT --> BACKUP + + TDE --> MONITOR + RLS --> LOG + MASK --> ALERT + BACKUP --> PATCH + + MONITOR --> APP + LOG --> DB + ALERT --> FILE + PATCH --> API + +``` + + + +## 达梦数据库安全 + +### 数据库安全架构 + + +```mermaid +graph TB + subgraph "达梦数据库安全特性" + subgraph "身份认证" + PWD[密码认证] + CERT[证书认证] + LDAP_AUTH[LDAP认证] + KERBEROS[Kerberos认证] + end + + subgraph "访问控制" + RBAC_DB[基于角色的访问控制] + RLS_DB[行级安全策略] + CLS_DB[列级访问控制] + SCHEMA[模式权限控制] + end + + subgraph "数据加密" + TDE_SM4[TDE透明加密
SM4国密算法] + SSL_SM[SSL传输加密
SM2/SM3/SM4] + FIELD_ENC[字段级加密] + BACKUP_ENC[备份加密] + end + + subgraph "审计监控" + AUDIT_LOG[操作审计日志] + LOGIN_LOG[登录审计] + DDL_LOG[DDL操作记录] + SECURITY_LOG[安全事件日志] + end + end + + PWD --> RBAC_DB + CERT --> RLS_DB + LDAP_AUTH --> CLS_DB + KERBEROS --> SCHEMA + + RBAC_DB --> TDE_SM4 + RLS_DB --> SSL_SM + CLS_DB --> FIELD_ENC + SCHEMA --> BACKUP_ENC + + TDE_SM4 --> AUDIT_LOG + SSL_SM --> LOGIN_LOG + FIELD_ENC --> DDL_LOG + BACKUP_ENC --> SECURITY_LOG + +``` + + +### 国产密码算法应用 + +#### 传输加密 +- 配置国密SSL连接,使用SM2/SM3/SM4算法套件 +- 支持SM4-GCM-SM3和SM4-CCM-SM3加密套件 +- 配置国产SM2证书和私钥文件 +- 强制要求SSL连接,拒绝明文传输 + +#### 透明数据加密 +- 启用TDE透明数据加密,使用SM4算法 +- 为敏感数据表配置列级加密 +- 支持确定性加密和随机化加密 +- 集成本地密钥管理系统(localkms) + +### 行级安全策略 +- 创建多租户行级安全策略,实现数据隔离 +- 配置基于用户角色的数据访问控制 +- 实现动态数据过滤和权限控制 +- 支持复杂的安全策略表达式 + +### 数据脱敏策略 +- 创建敏感数据脱敏函数和规则 +- 为不同角色提供不同级别的数据视图 +- 实现手机号、身份证号等敏感信息脱敏 +- 支持动态脱敏和静态脱敏 + + +## 应用系统安全 + +### Spring Security安全配置 + +#### 认证配置 +- 使用国密SM3哈希算法进行密码加密 +- 配置JWT身份验证过滤器 +- 设置CSRF防护和HttpOnly Cookie +- 配置请求授权规则和无状态会话管理 +- 启用方法级安全注解支持 + +#### 多因素认证实现 +- 生成随机验证码并缓存到Redis +- 设置验证码过期时间防止滥用 +- 集成短信服务提供商发送验证码 +- 实现验证码验证和及时清理机制 + +### 数据传输安全 + +#### HTTPS配置 +- 启用HTTPS协议,使用SSL/TLS加密 +- 配置国产密码算法套件支持 +- 使用PKCS12格式的数字证书 +- 支持TLSv1.2和TLSv1.3协议版本 + +#### 银行文件传输安全约束 +- 银行文件交换默认优先使用 `SFTP`;`FTP` 仅作为兼容能力保留,需在风险评估通过后启用。 +- 文件传输凭据以 `credentialRef` 引用形式由环境配置或配置中心承接,不在正式文档、默认仓库配置样例或测试样本中写入明文密码、私钥、证书。 +- 命中协议缺少 `host/port/username/credentialRef` 时必须立即阻断当前文件动作,避免以残缺配置尝试连接银行通道。 +- 路径模板仅允许固定变量白名单,禁止自由表达式、脚本化拼装和未声明变量,防止目录逃逸与错误路由。 +- 批次审计只保存最终实际使用的协议、目录、文件路径与文件名,不额外保存完整凭据快照,避免敏感配置在业务表中扩散。 + +#### 敏感数据加密 +- 采用国密SM4对称加密算法 +- 实现统一的数据加密和解密服务 +- 对身份证号、手机号等敏感信息加密存储 +- 提供统一的异常处理和错误提示 + +### 接口安全防护 + +#### 接口签名验证 +- 基于时间戳、随机数和请求体生成签名 +- 使用国密SM3哈希算法计算签名值 +- 检查时间戳有效性防止重放攻击 +- 实现客户端和服务端签名比对验证 + +#### 接口限流防护 +- 基于Redis实现分布式限流控制 +- 支持按IP、用户、接口等维度限流 +- 采用滑动窗口算法统计请求频率 +- 超过限制时返回429状态码和错误提示 + + +## 网络安全设计 + +### 网络拓扑安全 + + +```mermaid +graph TB + subgraph "外网区域" + INTERNET[互联网] + CDN[CDN加速] + DNS[DNS服务] + end + + subgraph "边界防护" + WAF[Web应用防火墙
国产WAF产品] + FW_BORDER[边界防火墙
安全审计] + IPS[入侵防护系统
威胁检测] + DPI[深度包检测
流量分析] + end + + subgraph "DMZ区域" + LB[负载均衡器
SSL卸载] + WEB1[Web服务器1] + WEB2[Web服务器2] + PROXY[反向代理] + end + + subgraph "内网安全" + FW_INTERNAL[内部防火墙] + VLAN_APP[应用VLAN] + VLAN_DB[数据库VLAN] + VLAN_MGT[管理VLAN] + end + + subgraph "应用层" + APP1[应用服务器1] + APP2[应用服务器2] + APP3[应用服务器3] + end + + subgraph "数据层" + DB_MASTER[达梦主库] + DB_SLAVE[达梦从库] + REDIS[Redis集群] + end + + subgraph "管理层" + JUMP[跳板机] + MONITOR[监控服务器] + LOG[日志服务器] + end + + INTERNET --> CDN + CDN --> DNS + DNS --> WAF + WAF --> FW_BORDER + FW_BORDER --> IPS + IPS --> DPI + DPI --> LB + + LB --> WEB1 + LB --> WEB2 + WEB1 --> PROXY + WEB2 --> PROXY + + PROXY --> FW_INTERNAL + FW_INTERNAL --> VLAN_APP + FW_INTERNAL --> VLAN_DB + FW_INTERNAL --> VLAN_MGT + + VLAN_APP --> APP1 + VLAN_APP --> APP2 + VLAN_APP --> APP3 + + VLAN_DB --> DB_MASTER + VLAN_DB --> DB_SLAVE + VLAN_DB --> REDIS + + VLAN_MGT --> JUMP + VLAN_MGT --> MONITOR + VLAN_MGT --> LOG + +``` + + +### 防火墙策略配置 + +#### 边界防火墙策略 +- 允许HTTPS访问,开放443端口 +- 允许HTTP重定向到HTTPS,开放80端口 +- 禁止外部直接访问数据库端口 +- 允许内网SSH管理,限制管理网段 +- 默认拒绝所有其他入站连接 + +#### 应用层防火墙策略 +- 只允许来自DMZ区的应用访问 +- 允许访问数据库服务器的指定端口 +- 允许访问Redis缓存服务 +- 允许DNS查询和时间同步 +- 默认拒绝其他出站连接 + +### 入侵检测与防护 + +#### IDS/IPS规则配置 +- 配置Web应用攻击检测规则 +- 配置数据库直接访问告警规则 +- 配置暴力破解攻击检测规则 +- 设置基于流量特征的异常检测 +- 配置威胁情报实时更新机制 + + +## 数据安全设计 + +### 数据分类分级 + +#### 数据分类标准 + +```mermaid +graph TB + subgraph "数据分类" + SECRET[机密级
重要业务数据] + INTERNAL[内部级
一般业务数据] + PUBLIC[公开级
公开业务数据] + end + + subgraph "水务业务数据" + CUSTOMER[客户身份信息
机密级] + METER[水表计量数据
内部级] + BILLING[收费账务数据
机密级] + REPORT[统计报表数据
内部级] + CONFIG[系统配置数据
内部级] + LOG[日志审计数据
内部级] + end + + subgraph "保护措施" + ENC_HIGH[强加密
SM4+数字签名] + ENC_MID[访问控制
权限管理] + ENC_LOW[公开访问
无特殊保护] + end + + SECRET --> ENC_HIGH + INTERNAL --> ENC_MID + PUBLIC --> ENC_LOW + + CUSTOMER --> SECRET + BILLING --> SECRET + METER --> INTERNAL + REPORT --> INTERNAL + CONFIG --> INTERNAL + LOG --> INTERNAL + +``` + + +#### 数据保护策略 +- **机密级数据**:强加密存储,严格访问控制 +- **内部级数据**:权限控制,审计日志记录 +- **公开级数据**:无特殊保护要求 +- **敏感字段**:单独加密,支持查询需求 + +### 数据备份与恢复安全 + +#### 备份加密策略 +- 使用国产密码算法加密备份文件 +- 生成备份文件完整性校验码 +- 实现备份文件的安全传输 +- 定期验证备份文件的完整性 + +#### 数据恢复流程 +- 验证备份文件完整性和真实性 +- 在隔离环境中进行恢复测试 +- 验证恢复数据的完整性和一致性 +- 记录详细的恢复过程和验证结果 + +### 数据销毁与清理 + +#### 安全数据销毁 +- 实现安全的数据删除和物理清除 +- 记录数据销毁的审计日志 +- 定期清理历史数据和临时文件 +- 确保已删除数据无法被恢复 + + +## 运维安全设计 + +### 安全监控体系 + +#### 安全监控架构 + +```mermaid +graph TB + subgraph "数据采集层" + AGENT1[系统日志采集] + AGENT2[应用日志采集] + AGENT3[数据库日志采集] + AGENT4[网络流量采集] + end + + subgraph "数据处理层" + KAFKA[消息队列
Kafka集群] + STREAM[流处理
Flink/Storm] + ETL[数据清洗
Logstash] + end + + subgraph "存储分析层" + ES[Elasticsearch
日志存储] + SIEM[安全信息事件管理
SIEM平台] + AI[智能分析
机器学习] + end + + subgraph "可视化层" + DASHBOARD[监控仪表盘
Grafana] + ALERT[告警系统
AlertManager] + REPORT[安全报告
自动生成] + end + + AGENT1 --> KAFKA + AGENT2 --> KAFKA + AGENT3 --> KAFKA + AGENT4 --> KAFKA + + KAFKA --> STREAM + STREAM --> ETL + ETL --> ES + + ES --> SIEM + SIEM --> AI + AI --> DASHBOARD + + DASHBOARD --> ALERT + ALERT --> REPORT + +``` + + +#### 安全事件检测规则 +- **暴力破解检测**:失败登录次数阈值告警 +- **异常数据访问**:大量数据查询行为监控 +- **权限提升检测**:管理员权限变更告警 +- **异常时间访问**:非工作时间访问行为监控 + +### 漏洞管理 + +#### 漏洞扫描策略 +- 定期进行系统漏洞扫描 +- 执行Web应用安全测试 +- 进行数据库安全评估 +- 生成漏洞扫描报告和修复建议 + +#### 补丁管理流程 + +```mermaid +graph LR + DISCOVER[漏洞发现] --> ASSESS[风险评估] + ASSESS --> PLAN[补丁计划] + PLAN --> TEST[测试验证] + TEST --> DEPLOY[生产部署] + DEPLOY --> VERIFY[部署验证] + VERIFY --> DOCUMENT[文档记录] + + subgraph "评估标准" + HIGH[高危
24小时内] + MEDIUM[中危
7天内] + LOW[低危
30天内] + end + + ASSESS --> HIGH + ASSESS --> MEDIUM + ASSESS --> LOW + +``` + + +### 应急响应预案 + +#### 安全事件分级 +| 级别 | 描述 | 响应时间 | 处理措施 | +|------|------|----------|----------| +| P0 | 系统完全不可用,数据泄露 | 15分钟 | 立即启动应急预案,通知管理层 | +| P1 | 核心功能受影响,安全风险高 | 30分钟 | 启动应急预案,组建应急小组 | +| P2 | 部分功能受影响,安全风险中等 | 2小时 | 安排专人处理,定期汇报 | +| P3 | 轻微影响,安全风险较低 | 8小时 | 正常工作时间处理 | + +#### 应急响应流程 + +```mermaid +graph TB + INCIDENT[安全事件发生] --> DETECT[事件检测] + DETECT --> REPORT[事件上报] + REPORT --> ASSESS[影响评估] + ASSESS --> RESPONSE[应急响应] + + subgraph "应急响应措施" + ISOLATE[系统隔离] + PRESERVE[证据保全] + RECOVER[系统恢复] + INVESTIGATE[调查分析] + end + + subgraph "后续处理" + LESSON[经验总结] + IMPROVE[流程改进] + TRAIN[培训加强] + DOC[文档更新] + end + + RESPONSE --> ISOLATE + RESPONSE --> PRESERVE + RESPONSE --> RECOVER + RESPONSE --> INVESTIGATE + + INVESTIGATE --> LESSON + LESSON --> IMPROVE + IMPROVE --> TRAIN + TRAIN --> DOC + +``` + + + +## 安全管理制度 + +### 安全组织架构 + +#### 安全管理组织 + +```mermaid +graph TB + CEO[总经理
安全最高责任人] + CISO[信息安全负责人
CISO] + + subgraph "安全管理委员会" + IT_DIR[IT总监] + SECURITY_DIR[安全总监] + COMPLIANCE[合规负责人] + LEGAL[法务负责人] + end + + subgraph "安全执行团队" + SEC_ADMIN[安全管理员] + SYS_ADMIN[系统管理员] + DBA[数据库管理员] + NET_ADMIN[网络管理员] + end + + subgraph "业务安全责任人" + BUS_OWNER[业务负责人] + DATA_OWNER[数据负责人] + USER_ADMIN[用户管理员] + end + + CEO --> CISO + CISO --> IT_DIR + CISO --> SECURITY_DIR + CISO --> COMPLIANCE + CISO --> LEGAL + + IT_DIR --> SEC_ADMIN + IT_DIR --> SYS_ADMIN + IT_DIR --> DBA + IT_DIR --> NET_ADMIN + + SECURITY_DIR --> BUS_OWNER + SECURITY_DIR --> DATA_OWNER + SECURITY_DIR --> USER_ADMIN + +``` + + +### 安全管理制度 + +#### 人员安全管理 +- **入职安全审查**:对关键岗位人员进行背景调查 +- **安全培训**:定期进行信息安全意识培训 +- **权限管理**:建立权限申请、审批、回收流程 +- **离职管理**:离职人员权限及时回收,签署保密协议 + +#### 系统建设安全管理 +- **安全需求分析**:项目立项阶段进行安全需求分析 +- **安全设计评审**:设计阶段进行安全架构评审 +- **安全测试**:上线前进行安全渗透测试 +- **安全验收**:系统上线前进行安全验收 + +#### 系统运维安全管理 +- **变更管理**:所有系统变更都需要安全评估 +- **备份管理**:定期备份,异地存储,加密保护 +- **监控管理**:7×24小时安全监控 +- **应急管理**:建立应急响应机制 + +### 合规管理 + +#### 法律法规合规 +- 《中华人民共和国网络安全法》 +- 《中华人民共和国数据安全法》 +- 《中华人民共和国个人信息保护法》 +- 《关键信息基础设施安全保护条例》 + +#### 行业标准合规 +- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》 +- GB/T 32918《信息安全技术 SM2椭圆曲线公钥密码算法》 +- GB/T 32905《信息安全技术 SM3密码杂凑算法》 + +#### 合规检查清单 +- [ ] 年度安全评估报告 +- [ ] 安全管理制度建立 +- [ ] 安全技术措施落实 +- [ ] 安全培训记录完整 +- [ ] 应急预案演练记录 +- [ ] 安全事件处置记录 +- [ ] 第三方安全服务合同 + +--- + + +## 总结 + +福建水务营收系统安全设计结合达梦数据库的安全特性,建立了全方位、多层次的安全防护体系。通过技术防护、管理制度、人员培训等多重措施,确保系统安全稳定运行,满足水务行业的安全要求。 + +本安全设计方案的核心特点: +1. **国产化安全**:采用达梦数据库和国密算法 +2. **纵深防御**:网络、应用、数据多层安全防护 +3. **持续改进**:建立安全监控和应急响应机制 +4. **管理规范**:完善的安全管理制度和流程 diff --git a/output/05_Deployment_Design.docx b/output/05_Deployment_Design.docx new file mode 100644 index 0000000..dc3df78 Binary files /dev/null and b/output/05_Deployment_Design.docx differ diff --git a/output/05_Deployment_Design.html b/output/05_Deployment_Design.html new file mode 100644 index 0000000..b805db0 --- /dev/null +++ b/output/05_Deployment_Design.html @@ -0,0 +1,581 @@ + + + + + + + + 福建水务营收系统-部署设计 + + + + + +
+

福建水务营收系统-部署设计

+

系统设计团队

+

2024年12月19日

+
+ +

1 福建水务营收系统部署设计文档

+

1.1 文档信息

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目信息详情
项目名称福建水务营收系统
文档类型概要设计文档
技术框架RuoYi-Vue-Pro + yudao-ui-admin-vue3
文档版本v1.0
编写日期2024-12-19
文档状态✅ 已完成
+

1.2 章节导航(精简)

+ +

## 部署概述

+

福建水务营收系统采用集中化部署模式,基于集团私有云环境进行部署,构建高可用、可扩展的系统架构,满足集团及下属各水务公司的业务需求。

+

1.2.1 部署目标

+
    +
  • 实现系统的集中部署和统一管理
  • +
  • 确保系统高可用性和可靠性
  • +
  • 支持业务动态扩展和弹性伸缩
  • +
  • 保障数据安全和业务连续性
  • +
  • 降低运维成本,提高管理效率
  • +
+

1.2.2 部署原则

+
    +
  • 集中部署:核心业务系统集中部署在集团数据中心,统一管理和维护
  • +
  • 多级架构:采用多级架构设计,实现前端负载分担和后端高可用
  • +
  • 灾备设计:重要系统和数据实现灾备,确保业务连续性
  • +
  • 安全防护:多层次安全防护体系,确保系统和数据安全
  • +
  • 弹性扩展:支持系统横向和纵向扩展,适应业务增长需求
  • +
+

1.2.3 银行文件传输配置部署约束

+
    +
  • sw-business-bank 继续沿用 +application-{profile}.yaml + Nacos +加载环境默认文件传输规则,不在代码中硬编码送盘、回盘、对账目录。
  • +
  • 环境默认规则承接 +protocol/host/port/username/credentialRef/sendDir/backDir/reconcileDir/archiveDir/localTempDir;银行通道、租户、租户-通道覆盖通过 +bk_channel_api_configFILE_TRANSFER_CONFIG +记录补充。
  • +
  • 配置切换只影响新发起文件动作;已落库批次继续沿用已固化的协议、目录和文件路径审计结果,不要求重算旧批次。
  • +
+

## 部署架构

+

1.2.4 总体部署架构

+
graph 
+    subgraph EXTERNAL["外部用户访问"]
+        direction TB
+        A[移动端用户]
+        B[PC端用户]
+        C[第三方系统]
+    end
+    
+    subgraph LOADBALANCER["负载均衡层"]
+        direction TB
+        D[主负载均衡器]
+        E[备负载均衡器]
+    end
+    
+    subgraph WEBSERVICE["Web服务层"]
+        direction TB
+        F[Web服务器1]
+        G[Web服务器2]
+        H[Web服务器3]
+    end
+    
+    subgraph APPSERVICE["应用服务层"]
+        direction TB 
+        I[应用服务器1]
+        J[应用服务器2]
+        K[应用服务器3]
+        L[应用服务器4]
+    end
+    
+    subgraph DATASERVICE["数据服务层"]
+        direction TB
+        M[(主数据库<br/>达梦数据库 8.0+)]
+        N[(备数据库<br/>达梦数据库 8.0+)]
+        O[缓存服务器<br/>Redis]
+        P[文件服务器<br/>MinIO]
+        
+        M -.->|数据同步| N
+    end
+    
+    %% 层级间调用关系
+    EXTERNAL -.->|用户请求<br/>接口调用| LOADBALANCER
+    LOADBALANCER -.->|负载分发<br/>故障切换| WEBSERVICE
+    WEBSERVICE -.->|业务请求<br/>服务调用| APPSERVICE
+    APPSERVICE -.->|数据访问<br/>缓存读写<br/>文件操作| DATASERVICE
+
+

1.2.5 环境架构设计

+

系统部署分为四个环境:开发环境、测试环境、预生产环境和生产环境。

+

1.2.5.1 生产环境架构

+
    +
  • 负载均衡:双机热备,支持故障自动切换
  • +
  • Web服务器:3台服务器,提供前端页面服务
  • +
  • 应用服务器:4台服务器集群,处理业务逻辑
  • +
  • 达梦数据库:主备架构,数据实时同步
  • +
  • Redis缓存:主从架构,提高系统响应速度
  • +
  • MinIO文件存储:分布式文件存储,支持高并发访问
  • +
+

1.2.5.2 灾备环境架构

+
    +
  • 异地部署:在备用数据中心部署完整的系统环境
  • +
  • 数据同步:定时同步生产环境数据
  • +
  • 切换机制:支持快速切换到灾备环境
  • +
+

## 环境配置

+

1.2.6 硬件配置要求

+

1.2.6.1 负载均衡服务器

+
    +
  • CPU:8核 2.4GHz
  • +
  • 内存:16GB
  • +
  • 存储:100GB SSD
  • +
  • 网络:双千兆网卡
  • +
+

1.2.6.2 Web服务器

+
    +
  • CPU:8核 2.4GHz
  • +
  • 内存:16GB
  • +
  • 存储:200GB SSD
  • +
  • 网络:双千兆网卡
  • +
+

1.2.6.3 应用服务器

+
    +
  • CPU:16核 2.4GHz
  • +
  • 内存:32GB
  • +
  • 存储:300GB SSD
  • +
  • 网络:双千兆网卡
  • +
+

1.2.6.4 数据库服务器

+
    +
  • CPU:24核 2.4GHz
  • +
  • 内存:64GB
  • +
  • 存储:2TB SSD (RAID 10)
  • +
  • 网络:双万兆网卡
  • +
+

1.2.7 软件配置要求

+

1.2.7.1 操作系统

+
    +
  • 服务端:CentOS 7.9+ 或 openEuler 20.03+
  • +
  • 数据库:达梦数据库 8.0+ 企业版
  • +
+

1.2.7.2 应用环境

+
    +
  • Java运行环境:JDK 17
  • +
  • 应用服务器:内置Tomcat 9.0
  • +
  • Web服务器:Nginx 1.20+
  • +
  • 缓存服务器:Redis 6.2+
  • +
+

1.2.7.3 中间件配置

+
    +
  • 消息队列:基于Redis的轻量级队列
  • +
  • 任务调度:Quartz集群模式
  • +
  • 工作流引擎:Flowable 6.8.0
  • +
  • 文件存储:MinIO 分布式存储
  • +
  • 配置中心:Nacos,承接 profile +对应的银行文件传输默认规则
  • +
+

## 部署方案

+

1.2.8 容器化部署方案

+

系统采用Docker容器化部署,使用Docker Compose进行服务编排。

+

1.2.8.1 核心服务组件

+
graph 
+    direction TB
+    subgraph FRONTEND["前端服务层"]
+        A[前端容器<br/>Nginx + Vue3]
+    end
+    
+    subgraph BACKEND["后端服务层"]
+        B[后端容器<br/>Spring Boot]
+    end
+    
+    subgraph DATASTORAGE["数据存储层"]
+        direction TB
+        C[数据库容器<br/>达梦数据库 8.0+]
+        D[缓存容器<br/>Redis]
+        E[文件存储容器<br/>MinIO]
+    end
+    
+    %% 容器服务调用关系
+    FRONTEND -.->|API请求<br/>静态资源| BACKEND
+    BACKEND -.->|数据操作<br/>缓存访问<br/>文件存储| DATASTORAGE
+
+

1.2.8.2 部署配置说明

+
    +
  • 前端容器:包含Vue3应用和Nginx反向代理
  • +
  • 后端容器:Spring Boot应用,连接数据库和缓存
  • +
  • 数据库容器:达梦数据库,数据持久化存储
  • +
  • 缓存容器:Redis缓存服务,提升系统性能
  • +
  • 文件存储容器:MinIO对象存储,管理系统文件
  • +
  • 银行文件交换目录:应用节点需具备本地临时目录与归档目录访问权限;外部银行 +SFTP/FTP 白名单、账户与凭据由环境运维统一开通
  • +
+

1.2.9 部署流程

+

1.2.9.1 环境准备阶段

+
    +
  1. 服务器准备:配置服务器硬件和网络环境
  2. +
  3. 操作系统安装:安装和配置操作系统
  4. +
  5. Docker环境部署:安装Docker和Docker Compose
  6. +
  7. 网络配置:配置服务器网络和防火墙规则
  8. +
+

1.2.9.2 应用部署阶段

+
    +
  1. 镜像构建:构建应用Docker镜像
  2. +
  3. 服务编排:配置Docker Compose服务编排
  4. +
  5. 数据初始化:初始化数据库表结构和基础数据
  6. +
  7. 服务启动:启动所有容器化服务
  8. +
+

1.2.9.3 测试验证阶段

+
    +
  1. 功能测试:验证系统各功能模块正常运行
  2. +
  3. 性能测试:测试系统并发处理能力
  4. +
  5. 安全测试:验证系统安全防护措施
  6. +
  7. 集成测试:测试与外部系统的接口集成
  8. +
+

1.2.10 版本管理和发布

+

1.2.10.1 版本管理策略

+
    +
  • Git版本控制:使用Git管理代码版本
  • +
  • 分支管理:采用GitFlow分支管理模型
  • +
  • 标签管理:为每个发布版本打标签
  • +
+

1.2.10.2 发布流程

+
    +
  1. 代码合并:将开发分支合并到主分支
  2. +
  3. 构建镜像:自动构建Docker镜像
  4. +
  5. 环境部署:自动部署到目标环境
  6. +
  7. 健康检查:验证服务健康状态
  8. +
+

## 网络安全

+

1.2.11 网络架构安全

+

1.2.11.1 网络分区设计

+
    +
  • DMZ区:部署面向外部的Web服务,与内网隔离
  • +
  • 应用区:部署业务应用服务,限制网络访问
  • +
  • 数据区:部署数据库和文件服务,严格访问控制
  • +
  • 管理区:部署运维管理工具,独立网络环境
  • +
+

1.2.11.2 访问控制策略

+
    +
  • 防火墙规则:配置严格的防火墙访问规则
  • +
  • 端口管理:只开放必要的服务端口
  • +
  • IP白名单:对敏感服务配置IP访问白名单
  • +
+

1.2.12 应用安全

+

1.2.12.1 身份认证安全

+
    +
  • 多因子认证:支持密码+短信验证码双因子认证
  • +
  • 会话管理:安全的会话创建、维护和销毁机制
  • +
  • 密码策略:强密码策略和定期密码更换
  • +
+

1.2.12.2 数据传输安全

+
    +
  • HTTPS通信:所有外部通信使用HTTPS加密
  • +
  • API安全:API接口使用JWT令牌认证
  • +
  • 数据加密:敏感数据传输和存储加密
  • +
+

1.2.13 数据安全

+

1.2.13.1 数据备份策略

+
    +
  • 自动备份:每日自动增量备份,每周全量备份
  • +
  • 异地存储:备份数据异地存储,防止灾难性损失
  • +
  • 备份验证:定期验证备份数据的完整性和可用性
  • +
+

1.2.13.2 数据恢复方案

+
    +
  • 快速恢复:提供数据快速恢复机制
  • +
  • 恢复演练:定期进行数据恢复演练
  • +
  • 灾难恢复:制定完整的灾难恢复预案
  • +
+

## 监控运维

+

1.2.14 系统监控

+

1.2.14.1 基础设施监控

+
    +
  • 服务器监控:CPU、内存、磁盘、网络等资源监控
  • +
  • 网络监控:网络连通性和带宽使用情况监控
  • +
  • 存储监控:磁盘空间和IO性能监控
  • +
+

1.2.14.2 应用监控

+
    +
  • 服务状态监控:监控各服务的运行状态
  • +
  • 性能监控:监控应用响应时间和吞吐量
  • +
  • 业务监控:监控关键业务指标和异常情况
  • +
  • 日志监控:实时监控应用日志和错误信息
  • +
+

1.2.14.3 数据库监控

+
    +
  • 数据库性能监控:监控SQL执行效率和资源使用
  • +
  • 连接监控:监控数据库连接数和连接状态
  • +
  • 存储监控:监控数据库存储空间和增长趋势
  • +
+

1.2.15 运维管理

+

1.2.15.1 日常运维

+
    +
  • 系统巡检:定期检查系统运行状态
  • +
  • 性能优化:根据监控数据优化系统性能
  • +
  • 容量规划:预测资源需求,提前进行容量规划
  • +
  • 安全检查:定期进行安全风险评估和加固
  • +
+

1.2.15.2 故障处理

+
    +
  • 故障监控:7×24小时故障监控和告警
  • +
  • 应急响应:建立快速响应机制和处理流程
  • +
  • 故障分析:详细记录和分析故障原因
  • +
  • 预防措施:制定故障预防和改进措施
  • +
+

1.2.15.3 变更管理

+
    +
  • 变更审批:建立变更申请和审批流程
  • +
  • 风险评估:评估变更对系统的影响和风险
  • +
  • 回滚预案:为每次变更制定回滚预案
  • +
  • 变更记录:详细记录所有系统变更操作
  • +
+

1.2.16 运维工具

+

1.2.16.1 自动化运维

+
    +
  • 部署自动化:自动化应用部署和配置管理
  • +
  • 监控自动化:自动化监控配置和告警处理
  • +
  • 备份自动化:自动化数据备份和验证
  • +
  • 巡检自动化:自动化系统健康检查
  • +
+

1.2.16.2 运维平台

+
    +
  • 统一运维平台:提供统一的系统管理界面
  • +
  • 监控大屏:实时展示系统运行状态
  • +
  • 告警中心:集中管理和处理系统告警
  • +
  • 知识库:建立运维知识库和操作手册
  • +
+

## 总结

+

部署设计以“集中部署、分层防护、可观测运维”为主线,覆盖了环境规划、架构设计、部署实施与运维治理。后续若进入实施细节阶段,建议将脚本、参数模板和操作手册沉淀到附录或运维手册,不在本主文档中重复维护。

+ + diff --git a/output/05_Deployment_Design.pdf b/output/05_Deployment_Design.pdf new file mode 100644 index 0000000..c46c6c2 Binary files /dev/null and b/output/05_Deployment_Design.pdf differ diff --git a/output/05_Deployment_Design_processed.md b/output/05_Deployment_Design_processed.md new file mode 100644 index 0000000..e5d4611 --- /dev/null +++ b/output/05_Deployment_Design_processed.md @@ -0,0 +1,361 @@ +--- +title: "05_Deployment_Design" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: TC-05-DEPLOYMENT +doc_role: master_document +authority: primary +scope: 部署设计 +source_of_truth: true +last_reviewed: 2026-03-11 +retrieval_priority: P0 +--- + +# 福建水务营收系统部署设计文档 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 概要设计文档 | +| **技术框架** | RuoYi-Vue-Pro + yudao-ui-admin-vue3 | +| **文档版本** | v1.0 | +| **编写日期** | 2024-12-19 | +| **文档状态** | ✅ 已完成 | + +## 章节导航(精简) +- [部署概述](#sec-overview) +- [部署架构](#sec-architecture) +- [环境配置](#sec-environment) +- [部署方案](#sec-solution) +- [网络安全](#sec-network-security) +- [监控运维](#sec-operations) +- [总结](#sec-summary) + + +## 部署概述 + +福建水务营收系统采用集中化部署模式,基于集团私有云环境进行部署,构建高可用、可扩展的系统架构,满足集团及下属各水务公司的业务需求。 + +### 部署目标 +- 实现系统的集中部署和统一管理 +- 确保系统高可用性和可靠性 +- 支持业务动态扩展和弹性伸缩 +- 保障数据安全和业务连续性 +- 降低运维成本,提高管理效率 + +### 部署原则 +- **集中部署**:核心业务系统集中部署在集团数据中心,统一管理和维护 +- **多级架构**:采用多级架构设计,实现前端负载分担和后端高可用 +- **灾备设计**:重要系统和数据实现灾备,确保业务连续性 +- **安全防护**:多层次安全防护体系,确保系统和数据安全 +- **弹性扩展**:支持系统横向和纵向扩展,适应业务增长需求 + +### 银行文件传输配置部署约束 +- `sw-business-bank` 继续沿用 `application-{profile}.yaml + Nacos` 加载环境默认文件传输规则,不在代码中硬编码送盘、回盘、对账目录。 +- 环境默认规则承接 `protocol/host/port/username/credentialRef/sendDir/backDir/reconcileDir/archiveDir/localTempDir`;银行通道、租户、租户-通道覆盖通过 `bk_channel_api_config` 的 `FILE_TRANSFER_CONFIG` 记录补充。 +- 配置切换只影响新发起文件动作;已落库批次继续沿用已固化的协议、目录和文件路径审计结果,不要求重算旧批次。 + + +## 部署架构 + +### 总体部署架构 + + +```mermaid +graph + subgraph EXTERNAL["外部用户访问"] + direction TB + A[移动端用户] + B[PC端用户] + C[第三方系统] + end + + subgraph LOADBALANCER["负载均衡层"] + direction TB + D[主负载均衡器] + E[备负载均衡器] + end + + subgraph WEBSERVICE["Web服务层"] + direction TB + F[Web服务器1] + G[Web服务器2] + H[Web服务器3] + end + + subgraph APPSERVICE["应用服务层"] + direction TB + I[应用服务器1] + J[应用服务器2] + K[应用服务器3] + L[应用服务器4] + end + + subgraph DATASERVICE["数据服务层"] + direction TB + M[(主数据库
达梦数据库 8.0+)] + N[(备数据库
达梦数据库 8.0+)] + O[缓存服务器
Redis] + P[文件服务器
MinIO] + + M -.->|数据同步| N + end + + %% 层级间调用关系 + EXTERNAL -.->|用户请求
接口调用| LOADBALANCER + LOADBALANCER -.->|负载分发
故障切换| WEBSERVICE + WEBSERVICE -.->|业务请求
服务调用| APPSERVICE + APPSERVICE -.->|数据访问
缓存读写
文件操作| DATASERVICE + +``` + + +### 环境架构设计 + +系统部署分为四个环境:开发环境、测试环境、预生产环境和生产环境。 + +#### 生产环境架构 +- **负载均衡**:双机热备,支持故障自动切换 +- **Web服务器**:3台服务器,提供前端页面服务 +- **应用服务器**:4台服务器集群,处理业务逻辑 +- **达梦数据库**:主备架构,数据实时同步 +- **Redis缓存**:主从架构,提高系统响应速度 +- **MinIO文件存储**:分布式文件存储,支持高并发访问 + +#### 灾备环境架构 +- **异地部署**:在备用数据中心部署完整的系统环境 +- **数据同步**:定时同步生产环境数据 +- **切换机制**:支持快速切换到灾备环境 + + +## 环境配置 + +### 硬件配置要求 + +#### 负载均衡服务器 +- **CPU**:8核 2.4GHz +- **内存**:16GB +- **存储**:100GB SSD +- **网络**:双千兆网卡 + +#### Web服务器 +- **CPU**:8核 2.4GHz +- **内存**:16GB +- **存储**:200GB SSD +- **网络**:双千兆网卡 + +#### 应用服务器 +- **CPU**:16核 2.4GHz +- **内存**:32GB +- **存储**:300GB SSD +- **网络**:双千兆网卡 + +#### 数据库服务器 +- **CPU**:24核 2.4GHz +- **内存**:64GB +- **存储**:2TB SSD (RAID 10) +- **网络**:双万兆网卡 + +### 软件配置要求 + +#### 操作系统 +- **服务端**:CentOS 7.9+ 或 openEuler 20.03+ +- **数据库**:达梦数据库 8.0+ 企业版 + +#### 应用环境 +- **Java运行环境**:JDK 17 +- **应用服务器**:内置Tomcat 9.0 +- **Web服务器**:Nginx 1.20+ +- **缓存服务器**:Redis 6.2+ + +#### 中间件配置 +- **消息队列**:基于Redis的轻量级队列 +- **任务调度**:Quartz集群模式 +- **工作流引擎**:Flowable 6.8.0 +- **文件存储**:MinIO 分布式存储 +- **配置中心**:Nacos,承接 profile 对应的银行文件传输默认规则 + + +## 部署方案 + +### 容器化部署方案 + +系统采用Docker容器化部署,使用Docker Compose进行服务编排。 + +#### 核心服务组件 + + +```mermaid +graph + direction TB + subgraph FRONTEND["前端服务层"] + A[前端容器
Nginx + Vue3] + end + + subgraph BACKEND["后端服务层"] + B[后端容器
Spring Boot] + end + + subgraph DATASTORAGE["数据存储层"] + direction TB + C[数据库容器
达梦数据库 8.0+] + D[缓存容器
Redis] + E[文件存储容器
MinIO] + end + + %% 容器服务调用关系 + FRONTEND -.->|API请求
静态资源| BACKEND + BACKEND -.->|数据操作
缓存访问
文件存储| DATASTORAGE + +``` + + +#### 部署配置说明 +- **前端容器**:包含Vue3应用和Nginx反向代理 +- **后端容器**:Spring Boot应用,连接数据库和缓存 +- **数据库容器**:达梦数据库,数据持久化存储 +- **缓存容器**:Redis缓存服务,提升系统性能 +- **文件存储容器**:MinIO对象存储,管理系统文件 +- **银行文件交换目录**:应用节点需具备本地临时目录与归档目录访问权限;外部银行 `SFTP/FTP` 白名单、账户与凭据由环境运维统一开通 + +### 部署流程 + +#### 环境准备阶段 +1. **服务器准备**:配置服务器硬件和网络环境 +2. **操作系统安装**:安装和配置操作系统 +3. **Docker环境部署**:安装Docker和Docker Compose +4. **网络配置**:配置服务器网络和防火墙规则 + +#### 应用部署阶段 +1. **镜像构建**:构建应用Docker镜像 +2. **服务编排**:配置Docker Compose服务编排 +3. **数据初始化**:初始化数据库表结构和基础数据 +4. **服务启动**:启动所有容器化服务 + +#### 测试验证阶段 +1. **功能测试**:验证系统各功能模块正常运行 +2. **性能测试**:测试系统并发处理能力 +3. **安全测试**:验证系统安全防护措施 +4. **集成测试**:测试与外部系统的接口集成 + +### 版本管理和发布 + +#### 版本管理策略 +- **Git版本控制**:使用Git管理代码版本 +- **分支管理**:采用GitFlow分支管理模型 +- **标签管理**:为每个发布版本打标签 + +#### 发布流程 +1. **代码合并**:将开发分支合并到主分支 +2. **构建镜像**:自动构建Docker镜像 +3. **环境部署**:自动部署到目标环境 +4. **健康检查**:验证服务健康状态 + + +## 网络安全 + +### 网络架构安全 + +#### 网络分区设计 +- **DMZ区**:部署面向外部的Web服务,与内网隔离 +- **应用区**:部署业务应用服务,限制网络访问 +- **数据区**:部署数据库和文件服务,严格访问控制 +- **管理区**:部署运维管理工具,独立网络环境 + +#### 访问控制策略 +- **防火墙规则**:配置严格的防火墙访问规则 +- **端口管理**:只开放必要的服务端口 +- **IP白名单**:对敏感服务配置IP访问白名单 + +### 应用安全 + +#### 身份认证安全 +- **多因子认证**:支持密码+短信验证码双因子认证 +- **会话管理**:安全的会话创建、维护和销毁机制 +- **密码策略**:强密码策略和定期密码更换 + +#### 数据传输安全 +- **HTTPS通信**:所有外部通信使用HTTPS加密 +- **API安全**:API接口使用JWT令牌认证 +- **数据加密**:敏感数据传输和存储加密 + +### 数据安全 + +#### 数据备份策略 +- **自动备份**:每日自动增量备份,每周全量备份 +- **异地存储**:备份数据异地存储,防止灾难性损失 +- **备份验证**:定期验证备份数据的完整性和可用性 + +#### 数据恢复方案 +- **快速恢复**:提供数据快速恢复机制 +- **恢复演练**:定期进行数据恢复演练 +- **灾难恢复**:制定完整的灾难恢复预案 + + +## 监控运维 + +### 系统监控 + +#### 基础设施监控 +- **服务器监控**:CPU、内存、磁盘、网络等资源监控 +- **网络监控**:网络连通性和带宽使用情况监控 +- **存储监控**:磁盘空间和IO性能监控 + +#### 应用监控 +- **服务状态监控**:监控各服务的运行状态 +- **性能监控**:监控应用响应时间和吞吐量 +- **业务监控**:监控关键业务指标和异常情况 +- **日志监控**:实时监控应用日志和错误信息 + +#### 数据库监控 +- **数据库性能监控**:监控SQL执行效率和资源使用 +- **连接监控**:监控数据库连接数和连接状态 +- **存储监控**:监控数据库存储空间和增长趋势 + +### 运维管理 + +#### 日常运维 +- **系统巡检**:定期检查系统运行状态 +- **性能优化**:根据监控数据优化系统性能 +- **容量规划**:预测资源需求,提前进行容量规划 +- **安全检查**:定期进行安全风险评估和加固 + +#### 故障处理 +- **故障监控**:7×24小时故障监控和告警 +- **应急响应**:建立快速响应机制和处理流程 +- **故障分析**:详细记录和分析故障原因 +- **预防措施**:制定故障预防和改进措施 + +#### 变更管理 +- **变更审批**:建立变更申请和审批流程 +- **风险评估**:评估变更对系统的影响和风险 +- **回滚预案**:为每次变更制定回滚预案 +- **变更记录**:详细记录所有系统变更操作 + +### 运维工具 + +#### 自动化运维 +- **部署自动化**:自动化应用部署和配置管理 +- **监控自动化**:自动化监控配置和告警处理 +- **备份自动化**:自动化数据备份和验证 +- **巡检自动化**:自动化系统健康检查 + +#### 运维平台 +- **统一运维平台**:提供统一的系统管理界面 +- **监控大屏**:实时展示系统运行状态 +- **告警中心**:集中管理和处理系统告警 +- **知识库**:建立运维知识库和操作手册 + + +## 总结 + +部署设计以“集中部署、分层防护、可观测运维”为主线,覆盖了环境规划、架构设计、部署实施与运维治理。后续若进入实施细节阶段,建议将脚本、参数模板和操作手册沉淀到附录或运维手册,不在本主文档中重复维护。 diff --git a/output/06_Sensitive_Data_Encryption.docx b/output/06_Sensitive_Data_Encryption.docx new file mode 100644 index 0000000..85c1c7f Binary files /dev/null and b/output/06_Sensitive_Data_Encryption.docx differ diff --git a/output/06_Sensitive_Data_Encryption.html b/output/06_Sensitive_Data_Encryption.html new file mode 100644 index 0000000..501a249 --- /dev/null +++ b/output/06_Sensitive_Data_Encryption.html @@ -0,0 +1,707 @@ + + + + + + + + 福建水务营收系统-敏感数据加密方案 + + + + + +
+

福建水务营收系统-敏感数据加密方案

+

系统设计团队

+

2024年12月19日

+
+ +

1 用户敏感数据加密存储技术方案

+

1.1 文档信息

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目信息详情
项目名称福建水务营收系统
文档类型技术方案汇报
适用范围用户个人信息加密存储与搜索
编写日期2025年12月
文档版本V1.0
+
+

1.2 一、方案背景

+

1.2.1 为什么要做加密?

+

根据等保测评要求,用户的敏感个人信息(身份证、手机号、银行卡等)必须加密存储,否则无法通过安全检查。

+
                         ┌─────────────────────────────────────┐
+                         │           等保测评要求              │
+                         └─────────────────────────────────────┘
+                                          │
+           ┌──────────────────────────────┼──────────────────────────────┐
+           ▼                              ▼                              ▼
+   ┌───────────────┐            ┌───────────────┐            ┌───────────────┐
+   │  存储加密    │            │  传输加密    │            │  访问控制    │
+   │  ✓ 必须做    │            │  ✓ 已完成    │            │  ✓ 已完成    │
+   └───────────────┘            └───────────────┘            └───────────────┘
+

1.2.2 涉及哪些数据?

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
敏感数据类型示例加密要求
身份证号350xxx19900101xxxx✅ 必须加密
手机号138xxxx8888✅ 必须加密
银行卡号6222xxxxxxxx1234✅ 必须加密
邮箱地址xxx@xxx.com✅ 必须加密
真实姓名张xx✅ 必须加密
+
+

1.3 二、技术方案概述

+

1.3.1 核心思路

+

“先加密存储,再建立索引” —— +既保证安全,又保证能搜索

+
┌─────────────────────────────────────────────────────────────────────┐
+│                         技术方案整体架构                             │
+├─────────────────────────────────────────────────────────────────────┤
+│                                                                     │
+│   ┌─────────────┐         ┌─────────────┐         ┌─────────────┐  │
+│   │   应用层    │ ──────► │  加密插件   │ ──────► │   数据库    │  │
+│   │ (业务代码)  │         │(MyBatis-Plus)│         │  (加密存储) │  │
+│   └─────────────┘         └─────────────┘         └─────────────┘  │
+│                                  │                                  │
+│                                  ▼                                  │
+│                          ┌─────────────┐                           │
+│                          │  搜索索引   │                           │
+│                          │  (支持查询) │                           │
+│                          └─────────────┘                           │
+│                                                                     │
+└─────────────────────────────────────────────────────────────────────┘
+

1.3.2 采用的技术

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
技术组件说明选择理由
MyBatis-Plus 加密插件自动对数据进行加密和解密框架自带功能,改造成本低
SM4 加密算法国产加密算法,符合等保要求安全等级高,符合等保要求
搜索索引技术支持加密后的数据查询保证业务搜索功能正常使用
+
+

1.4 三、加密存储方案

+

1.4.1 加密前后对比

+

加密前(明文存储,不安全): | id | real_name | +id_card | phone | |—-|———–|———|——-| | 1 | 张三 | 350102199001011234 | +13812345678 |

+

加密后(密文存储,安全): | id | real_name | +id_card | phone | |—-|———–|———|——-| | 1 | aGF4ZmRz… | YmVydGlu… | +c2VjdXJl… |

+

1.4.2 MyBatis-Plus +加密插件原理

+
                      【自动加密/解密流程】
+                      
+      ┌──────────┐                              ┌──────────┐
+      │  保存数据 │                              │  查询数据 │
+      └────┬─────┘                              └────┬─────┘
+           │                                         │
+           ▼                                         ▼
+      ┌──────────┐                              ┌──────────┐
+      │ 明文数据  │                              │ 密文数据  │
+      │ 张三     │                              │ aGF4ZmRz │
+      └────┬─────┘                              └────┬─────┘
+           │                                         │
+           │ 【加密插件自动处理】                      │ 【加密插件自动处理】
+           │                                         │
+           ▼                                         ▼
+      ┌──────────┐                              ┌──────────┐
+      │ 密文数据  │                              │ 明文数据  │
+      │ aGF4ZmRz │                              │ 张三     │
+      └────┬─────┘                              └────┬─────┘
+           │                                         │
+           ▼                                         ▼
+      ┌──────────┐                              ┌──────────┐
+      │   数据库  │ ◄────────────────────────── │   数据库  │
+      └──────────┘                              └──────────┘
+

优势说明: - ✅ 对业务代码透明 —— +开发人员无需修改业务逻辑 - ✅ 自动加密解密 —— +框架自动处理,不易出错 - ✅ 改造成本低 —— +只需添加配置和注解

+
+

1.5 四、搜索功能方案

+

1.5.1 为什么加密后还能搜索?

+

加密后的数据是乱码,无法直接用SQL的 LIKE +查询。我们的解决方案是:建立搜索索引

+
┌───────────────────────────────────────────────────────────────────┐
+│                    搜索索引设计思路                                │
+├───────────────────────────────────────────────────────────────────┤
+│                                                                   │
+│   原始数据                   索引数据                  用途       │
+│   ──────                   ──────                  ────       │
+│   身份证:350102199001011234  ➜  哈希值:a1b2c3...    精确查询   │
+│   手机号:13812345678         ➜  前7位:1381234       前缀查询   │
+│   姓名:张三                  ➜  拼音:zhangsan       模糊查询   │
+│                                                                   │
+└───────────────────────────────────────────────────────────────────┘
+

1.5.2 支持的查询类型

+ + + + + + + + + + + + + + + + + + + + + + + + + +
查询类型适用场景实现方式
精确查询身份证查用户哈希索引(完全匹配)
前缀查询手机号前几位前缀索引(部分匹配)
模糊查询姓名搜索拼音索引(支持模糊)
+

1.5.3 查询流程示例

+

场景:根据身份证号查询用户

+
用户输入身份证号
+       │
+       ▼
+┌──────────────┐
+│ 计算哈希索引  │  ──────►  a1b2c3d4e5...
+└──────────────┘
+       │
+       ▼
+┌──────────────┐
+│ 查询索引字段  │  ──────►  SELECT * FROM user WHERE id_card_hash = 'a1b2c3d4e5...'
+└──────────────┘
+       │
+       ▼
+┌──────────────┐
+│ 返回匹配记录  │  ──────►  找到用户张三
+└──────────────┘
+
+

1.6 五、数据库表设计

+

1.6.1 表结构说明

+
┌─────────────────────────────────────────────────────────────────────┐
+│                        用户信息表 (user_info)                        │
+├─────────────────────────────────────────────────────────────────────┤
+│                                                                     │
+│  【加密存储的字段】                    【搜索索引字段】              │
+│  ────────────────                    ────────────────              │
+│  • real_name(真实姓名)              • id_card_hash(身份证哈希)   │
+│  • id_card(身份证号)                • phone_prefix(手机号前缀)   │
+│  • phone(手机号)                    • name_pinyin(姓名拼音)     │
+│  • email(邮箱)                      • bank_card_prefix(银行卡前缀)│
+│  • bank_card(银行卡号)                                            │
+│                                                                     │
+└─────────────────────────────────────────────────────────────────────┘
+

1.6.2 字段对照表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
敏感字段存储方式对应索引字段索引用途
id_cardSM4加密id_card_hash精确匹配
phoneSM4加密phone_prefix前缀查询
real_nameSM4加密name_pinyin模糊搜索
bank_cardSM4加密bank_card_prefix前缀查询
emailSM4加密不支持搜索
+
+

1.7 六、等保符合性说明

+

1.7.1 安全控制措施对照

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
等保要求我们的方案符合性
个人信息加密存储SM4算法加密✅ 完全符合
数据传输安全HTTPS + 加密字段✅ 完全符合
访问权限控制数据库权限 + 应用权限✅ 完全符合
安全审计操作日志 + 加解密审计✅ 完全符合
密钥安全管理配置加密 + 独立存储✅ 完全符合
+

1.7.2 安全架构

+
                    ┌─────────────────────────────────────┐
+                    │           密钥管理中心              │
+                    │         (独立安全存储)            │
+                    └─────────────────────────────────────┘
+                                     │
+                                     │ 获取密钥
+                                     ▼
+┌─────────────┐   HTTPS   ┌─────────────────┐   加密写入   ┌─────────────┐
+│   前端应用   │ ────────► │    应用服务器    │ ────────────► │   数据库    │
+│             │ ◄──────── │  (加密/解密)     │ ◄──────────── │  (密文存储) │
+└─────────────┘   脱敏显示  └─────────────────┘   解密读取   └─────────────┘
+                                     │
+                                     ▼
+                    ┌─────────────────────────────────────┐
+                    │           审计日志系统              │
+                    │         (记录所有操作)            │
+                    └─────────────────────────────────────┘
+
+

1.8 七、实施计划

+

1.8.1 实施时间表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
阶段工作内容时间负责人
第一阶段基础加密功能开发1-2天开发团队
第二阶段搜索索引功能开发2-3天开发团队
第三阶段历史数据迁移加密1天运维 + 开发
第四阶段测试与验收1天测试团队
合计5-7个工作日
+

1.8.2 实施步骤

+
  第1-2天                第3-5天               第6天                第7天
+    │                      │                    │                    │
+    ▼                      ▼                    ▼                    ▼
+┌─────────┐          ┌─────────┐          ┌─────────┐          ┌─────────┐
+│ 加密功能 │   ────►  │ 搜索功能 │   ────►  │ 数据迁移 │   ────►  │ 测试验收 │
+│  开发   │          │  开发   │          │  执行   │          │  上线   │
+└─────────┘          └─────────┘          └─────────┘          └─────────┘
+     │                    │                    │                    │
+     ▼                    ▼                    ▼                    ▼
+  配置加密器           精确搜索             备份数据             功能测试
+  添加注解            前缀搜索             执行迁移             性能测试
+  测试验证            模糊搜索             验证完整             安全测试
+
+

1.9 八、风险控制

+

1.9.1 风险识别与应对

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
风险类型风险描述应对措施
密钥泄露风险加密密钥被窃取密钥独立存储,定期轮换
数据迁移风险迁移过程数据丢失先备份后迁移,分批执行
性能影响风险加解密影响系统性能添加索引,使用缓存优化
功能影响风险现有功能受影响充分测试,灰度发布
+

1.9.2 应急预案

+
┌───────────────────────────────────────────────────────────────────┐
+│                         应急处理流程                              │
+├───────────────────────────────────────────────────────────────────┤
+│                                                                   │
+│    发现问题  ────►  评估影响  ────►  启动回滚  ────►  恢复服务   │
+│                                                                   │
+│    · 监控告警       · 影响范围        · 数据回滚        · 验证功能  │
+│    · 用户反馈       · 业务影响        · 代码回滚        · 恢复上线  │
+│                                                                   │
+└───────────────────────────────────────────────────────────────────┘
+
+

1.10 九、方案优势总结

+

1.10.1 核心优势

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
优势说明
安全性高采用SM4国产加密算法,符合等保要求
搜索能力强加密后仍支持精确、前缀、模糊多种搜索
改造成本低使用MyBatis-Plus插件,对业务代码侵入小
实施周期短5-7个工作日可完成全部改造
运维友好自动加解密,无需人工干预
+

1.10.2 投入产出分析

+
┌───────────────────────────────────────────────────────────────────┐
+│                         投入产出分析                              │
+├───────────────────────────────────────────────────────────────────┤
+│                                                                   │
+│   【投入】                              【产出】                   │
+│   ────                                ────                       │
+│   · 开发工时:5-7个工作日              · 通过等保测评检查          │
+│   · 测试工时:1-2个工作日              · 符合数据安全法规要求       │
+│   · 运维工时:1个工作日                · 降低数据泄露风险          │
+│                                        · 提升用户数据安全保障      │
+│                                                                   │
+│   【总计:约7-10个工作日】              【价值:等保合规 + 安全保障】│
+│                                                                   │
+└───────────────────────────────────────────────────────────────────┘
+
+

1.11 十、结论与建议

+

1.11.1 方案结论

+

本方案采用MyBatis-Plus加密插件 + +搜索索引的技术路线,能够:

+
    +
  1. 满足等保要求 —— 敏感数据全部加密存储
  2. +
  3. 保持业务功能 —— 加密后仍可正常搜索查询
  4. +
  5. 低成本实施 —— 对现有系统改动小,周期短
  6. +
  7. 安全可控 —— 密钥独立管理,审计可追溯
  8. +
+

1.11.2 建议

+ + + + + + + + + + + + + + + + + + + + + + + + + +
建议事项说明
1. 尽快启动等保测评时间紧迫,建议尽快安排实施
2. 分阶段实施先完成核心功能,再优化性能
3. 充分测试上线前做好功能和性能测试
4. 保留回滚方案确保出现问题可快速回滚
+
+

如有疑问,请随时沟通!

+ + diff --git a/output/06_Sensitive_Data_Encryption.pdf b/output/06_Sensitive_Data_Encryption.pdf new file mode 100644 index 0000000..b775b07 Binary files /dev/null and b/output/06_Sensitive_Data_Encryption.pdf differ diff --git a/output/06_Sensitive_Data_Encryption_processed.md b/output/06_Sensitive_Data_Encryption_processed.md new file mode 100644 index 0000000..c227b92 --- /dev/null +++ b/output/06_Sensitive_Data_Encryption_processed.md @@ -0,0 +1,377 @@ +--- +title: "06_Sensitive_Data_Encryption" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +# 用户敏感数据加密存储技术方案 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 技术方案汇报 | +| **适用范围** | 用户个人信息加密存储与搜索 | +| **编写日期** | 2025年12月 | +| **文档版本** | V1.0 | + +--- + +## 一、方案背景 + +### 为什么要做加密? + +根据**等保测评要求**,用户的敏感个人信息(身份证、手机号、银行卡等)必须**加密存储**,否则无法通过安全检查。 + +```text + ┌─────────────────────────────────────┐ + │ 等保测评要求 │ + └─────────────────────────────────────┘ + │ + ┌──────────────────────────────┼──────────────────────────────┐ + ▼ ▼ ▼ + ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ + │ 存储加密 │ │ 传输加密 │ │ 访问控制 │ + │ ✓ 必须做 │ │ ✓ 已完成 │ │ ✓ 已完成 │ + └───────────────┘ └───────────────┘ └───────────────┘ +``` + +### 涉及哪些数据? + +| 敏感数据类型 | 示例 | 加密要求 | +|-------------|------|----------| +| 身份证号 | 350xxx19900101xxxx | ✅ 必须加密 | +| 手机号 | 138xxxx8888 | ✅ 必须加密 | +| 银行卡号 | 6222xxxxxxxx1234 | ✅ 必须加密 | +| 邮箱地址 | xxx@xxx.com | ✅ 必须加密 | +| 真实姓名 | 张xx | ✅ 必须加密 | + +--- + +## 二、技术方案概述 + +### 核心思路 + +**"先加密存储,再建立索引"** —— 既保证安全,又保证能搜索 + +```text +┌─────────────────────────────────────────────────────────────────────┐ +│ 技术方案整体架构 │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ +│ │ 应用层 │ ──────► │ 加密插件 │ ──────► │ 数据库 │ │ +│ │ (业务代码) │ │(MyBatis-Plus)│ │ (加密存储) │ │ +│ └─────────────┘ └─────────────┘ └─────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────┐ │ +│ │ 搜索索引 │ │ +│ │ (支持查询) │ │ +│ └─────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### 采用的技术 + +| 技术组件 | 说明 | 选择理由 | +|---------|------|---------| +| **MyBatis-Plus 加密插件** | 自动对数据进行加密和解密 | 框架自带功能,改造成本低 | +| **SM4 加密算法** | 国产加密算法,符合等保要求 | 安全等级高,符合等保要求 | +| **搜索索引技术** | 支持加密后的数据查询 | 保证业务搜索功能正常使用 | + +--- + +## 三、加密存储方案 + +### 加密前后对比 + +**加密前(明文存储,不安全):** +| id | real_name | id_card | phone | +|----|-----------|---------|-------| +| 1 | 张三 | 350102199001011234 | 13812345678 | + +**加密后(密文存储,安全):** +| id | real_name | id_card | phone | +|----|-----------|---------|-------| +| 1 | aGF4ZmRz... | YmVydGlu... | c2VjdXJl... | + +### MyBatis-Plus 加密插件原理 + +```text + 【自动加密/解密流程】 + + ┌──────────┐ ┌──────────┐ + │ 保存数据 │ │ 查询数据 │ + └────┬─────┘ └────┬─────┘ + │ │ + ▼ ▼ + ┌──────────┐ ┌──────────┐ + │ 明文数据 │ │ 密文数据 │ + │ 张三 │ │ aGF4ZmRz │ + └────┬─────┘ └────┬─────┘ + │ │ + │ 【加密插件自动处理】 │ 【加密插件自动处理】 + │ │ + ▼ ▼ + ┌──────────┐ ┌──────────┐ + │ 密文数据 │ │ 明文数据 │ + │ aGF4ZmRz │ │ 张三 │ + └────┬─────┘ └────┬─────┘ + │ │ + ▼ ▼ + ┌──────────┐ ┌──────────┐ + │ 数据库 │ ◄────────────────────────── │ 数据库 │ + └──────────┘ └──────────┘ +``` + +**优势说明:** +- ✅ **对业务代码透明** —— 开发人员无需修改业务逻辑 +- ✅ **自动加密解密** —— 框架自动处理,不易出错 +- ✅ **改造成本低** —— 只需添加配置和注解 + +--- + +## 四、搜索功能方案 + +### 为什么加密后还能搜索? + +加密后的数据是乱码,无法直接用SQL的 `LIKE` 查询。我们的解决方案是:**建立搜索索引**。 + +```text +┌───────────────────────────────────────────────────────────────────┐ +│ 搜索索引设计思路 │ +├───────────────────────────────────────────────────────────────────┤ +│ │ +│ 原始数据 索引数据 用途 │ +│ ────── ────── ──── │ +│ 身份证:350102199001011234 ➜ 哈希值:a1b2c3... 精确查询 │ +│ 手机号:13812345678 ➜ 前7位:1381234 前缀查询 │ +│ 姓名:张三 ➜ 拼音:zhangsan 模糊查询 │ +│ │ +└───────────────────────────────────────────────────────────────────┘ +``` + +### 支持的查询类型 + +| 查询类型 | 适用场景 | 实现方式 | +|---------|---------|---------| +| **精确查询** | 身份证查用户 | 哈希索引(完全匹配) | +| **前缀查询** | 手机号前几位 | 前缀索引(部分匹配) | +| **模糊查询** | 姓名搜索 | 拼音索引(支持模糊) | + +### 查询流程示例 + +**场景:根据身份证号查询用户** + +```text +用户输入身份证号 + │ + ▼ +┌──────────────┐ +│ 计算哈希索引 │ ──────► a1b2c3d4e5... +└──────────────┘ + │ + ▼ +┌──────────────┐ +│ 查询索引字段 │ ──────► SELECT * FROM user WHERE id_card_hash = 'a1b2c3d4e5...' +└──────────────┘ + │ + ▼ +┌──────────────┐ +│ 返回匹配记录 │ ──────► 找到用户张三 +└──────────────┘ +``` + +--- + +## 五、数据库表设计 + +### 表结构说明 + +```text +┌─────────────────────────────────────────────────────────────────────┐ +│ 用户信息表 (user_info) │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ 【加密存储的字段】 【搜索索引字段】 │ +│ ──────────────── ──────────────── │ +│ • real_name(真实姓名) • id_card_hash(身份证哈希) │ +│ • id_card(身份证号) • phone_prefix(手机号前缀) │ +│ • phone(手机号) • name_pinyin(姓名拼音) │ +│ • email(邮箱) • bank_card_prefix(银行卡前缀)│ +│ • bank_card(银行卡号) │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### 字段对照表 + +| 敏感字段 | 存储方式 | 对应索引字段 | 索引用途 | +|---------|---------|-------------|---------| +| id_card | SM4加密 | id_card_hash | 精确匹配 | +| phone | SM4加密 | phone_prefix | 前缀查询 | +| real_name | SM4加密 | name_pinyin | 模糊搜索 | +| bank_card | SM4加密 | bank_card_prefix | 前缀查询 | +| email | SM4加密 | — | 不支持搜索 | + +--- + +## 六、等保符合性说明 + +### 安全控制措施对照 + +| 等保要求 | 我们的方案 | 符合性 | +|---------|-----------|--------| +| **个人信息加密存储** | SM4算法加密 | ✅ 完全符合 | +| **数据传输安全** | HTTPS + 加密字段 | ✅ 完全符合 | +| **访问权限控制** | 数据库权限 + 应用权限 | ✅ 完全符合 | +| **安全审计** | 操作日志 + 加解密审计 | ✅ 完全符合 | +| **密钥安全管理** | 配置加密 + 独立存储 | ✅ 完全符合 | + +### 安全架构 + +```text + ┌─────────────────────────────────────┐ + │ 密钥管理中心 │ + │ (独立安全存储) │ + └─────────────────────────────────────┘ + │ + │ 获取密钥 + ▼ +┌─────────────┐ HTTPS ┌─────────────────┐ 加密写入 ┌─────────────┐ +│ 前端应用 │ ────────► │ 应用服务器 │ ────────────► │ 数据库 │ +│ │ ◄──────── │ (加密/解密) │ ◄──────────── │ (密文存储) │ +└─────────────┘ 脱敏显示 └─────────────────┘ 解密读取 └─────────────┘ + │ + ▼ + ┌─────────────────────────────────────┐ + │ 审计日志系统 │ + │ (记录所有操作) │ + └─────────────────────────────────────┘ +``` + +--- + +## 七、实施计划 + +### 实施时间表 + +| 阶段 | 工作内容 | 时间 | 负责人 | +|------|---------|------|--------| +| **第一阶段** | 基础加密功能开发 | 1-2天 | 开发团队 | +| **第二阶段** | 搜索索引功能开发 | 2-3天 | 开发团队 | +| **第三阶段** | 历史数据迁移加密 | 1天 | 运维 + 开发 | +| **第四阶段** | 测试与验收 | 1天 | 测试团队 | +| **合计** | — | **5-7个工作日** | — | + +### 实施步骤 + +```text + 第1-2天 第3-5天 第6天 第7天 + │ │ │ │ + ▼ ▼ ▼ ▼ +┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ +│ 加密功能 │ ────► │ 搜索功能 │ ────► │ 数据迁移 │ ────► │ 测试验收 │ +│ 开发 │ │ 开发 │ │ 执行 │ │ 上线 │ +└─────────┘ └─────────┘ └─────────┘ └─────────┘ + │ │ │ │ + ▼ ▼ ▼ ▼ + 配置加密器 精确搜索 备份数据 功能测试 + 添加注解 前缀搜索 执行迁移 性能测试 + 测试验证 模糊搜索 验证完整 安全测试 +``` + +--- + +## 八、风险控制 + +### 风险识别与应对 + +| 风险类型 | 风险描述 | 应对措施 | +|---------|---------|---------| +| **密钥泄露风险** | 加密密钥被窃取 | 密钥独立存储,定期轮换 | +| **数据迁移风险** | 迁移过程数据丢失 | 先备份后迁移,分批执行 | +| **性能影响风险** | 加解密影响系统性能 | 添加索引,使用缓存优化 | +| **功能影响风险** | 现有功能受影响 | 充分测试,灰度发布 | + +### 应急预案 + +```text +┌───────────────────────────────────────────────────────────────────┐ +│ 应急处理流程 │ +├───────────────────────────────────────────────────────────────────┤ +│ │ +│ 发现问题 ────► 评估影响 ────► 启动回滚 ────► 恢复服务 │ +│ │ +│ · 监控告警 · 影响范围 · 数据回滚 · 验证功能 │ +│ · 用户反馈 · 业务影响 · 代码回滚 · 恢复上线 │ +│ │ +└───────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 九、方案优势总结 + +### 核心优势 + +| 优势 | 说明 | +|------|------| +| ✅ **安全性高** | 采用SM4国产加密算法,符合等保要求 | +| ✅ **搜索能力强** | 加密后仍支持精确、前缀、模糊多种搜索 | +| ✅ **改造成本低** | 使用MyBatis-Plus插件,对业务代码侵入小 | +| ✅ **实施周期短** | 5-7个工作日可完成全部改造 | +| ✅ **运维友好** | 自动加解密,无需人工干预 | + +### 投入产出分析 + +```text +┌───────────────────────────────────────────────────────────────────┐ +│ 投入产出分析 │ +├───────────────────────────────────────────────────────────────────┤ +│ │ +│ 【投入】 【产出】 │ +│ ──── ──── │ +│ · 开发工时:5-7个工作日 · 通过等保测评检查 │ +│ · 测试工时:1-2个工作日 · 符合数据安全法规要求 │ +│ · 运维工时:1个工作日 · 降低数据泄露风险 │ +│ · 提升用户数据安全保障 │ +│ │ +│ 【总计:约7-10个工作日】 【价值:等保合规 + 安全保障】│ +│ │ +└───────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 十、结论与建议 + +### 方案结论 + +本方案采用**MyBatis-Plus加密插件 + 搜索索引**的技术路线,能够: + +1. ✅ **满足等保要求** —— 敏感数据全部加密存储 +2. ✅ **保持业务功能** —— 加密后仍可正常搜索查询 +3. ✅ **低成本实施** —— 对现有系统改动小,周期短 +4. ✅ **安全可控** —— 密钥独立管理,审计可追溯 + +### 建议 + +| 建议事项 | 说明 | +|---------|------| +| **1. 尽快启动** | 等保测评时间紧迫,建议尽快安排实施 | +| **2. 分阶段实施** | 先完成核心功能,再优化性能 | +| **3. 充分测试** | 上线前做好功能和性能测试 | +| **4. 保留回滚方案** | 确保出现问题可快速回滚 | + +--- + +**如有疑问,请随时沟通!** + diff --git a/output/08_Integrated_Deployment_Design_PlanB.docx b/output/08_Integrated_Deployment_Design_PlanB.docx new file mode 100644 index 0000000..9272d78 Binary files /dev/null and b/output/08_Integrated_Deployment_Design_PlanB.docx differ diff --git a/output/08_Integrated_Deployment_Design_PlanB_processed.md b/output/08_Integrated_Deployment_Design_PlanB_processed.md new file mode 100644 index 0000000..d818c1e --- /dev/null +++ b/output/08_Integrated_Deployment_Design_PlanB_processed.md @@ -0,0 +1,706 @@ +--- +title: "08_Integrated_Deployment_Design_PlanB" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: TC-08-INTEGRATED-DEPLOYMENT +doc_role: supplemental_document +authority: secondary +scope: 方案二整体部署 +source_of_truth: false +last_reviewed: 2026-03-26 +retrieval_priority: P1 +--- + +# 福建水务营收系统整体部署方案说明书 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 技术专题说明 | +| **方案定位** | 已采纳 PostgreSQL 16 方案二作为数据库部署方案后的整体部署方案 | +| **文档版本** | v1.0 | +| **编写日期** | 2026-03-26 | +| **文档状态** | ✅ 正式建议稿 | + +## 目录 + +1. 编制目的 +2. 方案前提 +3. 整体部署原则 +4. 软件拓扑图 +5. 主机部署图 +6. 数据库访问链路图 +7. 备份恢复链路图 +8. 网络拓扑图 +9. 主机角色与部署内容 +10. 资源配置建议 +11. 资源审批汇总表 +12. 基础软件与版本清单 +13. 部署方式说明 +14. 网络需求 +15. 网络开通清单 +16. 访问控制与端口建议 +17. 实施步骤 +18. 验收标准 +19. 部署结论 + +## 编制目的 + +本文档用于在已采纳 PostgreSQL 16 方案二作为数据库部署方案的前提下,形成覆盖前端、后端、中间件、静态存储及数据库的一体化整体部署方案,作为甲方进行主机、网络、存储与基础软件资源审批的依据。 + +## 方案前提 + +本方案以以下前提为基础: + +1. 数据库部署方案已采纳 `docs/design/03_Technical_Design/07_PostgreSQL16_DR_Resource_Application.md` 中的方案二,即“同城双可用区主备容灾方案”。 +2. 前端继续采用 `Nginx + Vue3` 的静态部署模式。 +3. 对外访问经甲方或第三方管理的公网入口进行薄转发,不纳入本方案主机资源范围。 +4. `Nginx` 入口单独部署在互联网区 `DMZ`,负责承接办公网、公网入口和外部授权链路转发,并将开放 API 端点负载到两台业务应用节点。 +5. 两台业务应用节点部署在互联网区 `DMZ`,节点内均部署 `Spring Boot Gateway`,作为微服务集群统一接入入口,并同时承载业务服务。 +6. 中间件集中部署在 1 台主机上。 +7. 数据库控制组件与中间件部署在同一台主机上。 +8. `RustFS` 作为静态存储与对象存储统一入口,与中间件同机部署。 +9. 一期口径下,原“数据与中间件节点”和“文件存储节点”合并为 1 台综合节点。 +10. 银行文件交换采用独立 `SFTP/FTP` 文件交换服务器,并部署在互联网区 `DMZ`,作为银行送盘、回盘、对账文件交换专用前置机。 +11. 当前已知可用于本方案的业务与基础设施主机资源如下: + - DMZ Nginx 入口节点:8 核 CPU / 16 GB 内存 / 300 GB 存储,共 1 台 + - 业务应用节点(主):32 核 CPU / 64 GB 内存 / 300 GB 存储,共 2 台 + - 数据、中间件与文件存储综合节点:16 核 CPU / 32 GB 内存 / 2300 GB 存储,共 1 台 + - 银行文件交换服务器:2 核 CPU / 8 GB 内存 / 200 GB 存储,共 1 台 + - 另行配置 PostgreSQL 主库与热备库各 1 台 + +## 整体部署原则 + +整体部署遵循以下原则: + +1. 前后端逻辑分层部署,避免数据库节点与业务节点混部。 +2. 中间件集中部署,降低主机数量和运维复杂度。 +3. 数据库主备分离部署,避免与中间件、应用节点混部。 +4. 数据库控制组件集中部署,通过统一代理地址屏蔽主备切换细节。 +5. 网络按办公区、公网区域、互联网区 `DMZ`、内网区分层隔离;其中数据库、中间件控制与备份归档均落在内网区。 +6. 在现有主机数量约束下,优先复用现有业务应用节点、DMZ Nginx 入口节点及综合节点资源。 + +## 软件拓扑图 + +**图 4-1 访问与应用软件拓扑图** + + +```mermaid +flowchart LR + classDef source fill:#ecfeff,stroke:#0891b2,stroke-width:1.2px,color:#083344; + classDef access fill:#fff7ed,stroke:#ea580c,stroke-width:1.4px,color:#7c2d12; + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.4px,color:#1e3a8a; + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; + + subgraph OFFICE[办公区] + direction TB + U1[PC 端用户
办公网段]:::source + end + + subgraph PUBLIC[公网区域] + direction TB + U2[移动端用户]:::source + U3[第三方系统]:::source + G1[公网授权入口]:::access + end + + subgraph DMZ[互联网区 / DMZ] + direction TB + G2[Nginx 入口]:::access + A1[业务应用节点 1
Spring Boot Gateway + 业务服务]:::app + A2[业务应用节点 2
Spring Boot Gateway + 业务服务]:::app + end + + class OFFICE,PUBLIC,DMZ zone; + + U1 -->|办公网访问,内网 IP| G2 + U2 -->|HTTPS 443| G1 + U3 -->|HTTPS / API| G1 + G1 -->|授权转发| G2 + G2 -->|API 转发| A1 + G2 -->|API 转发| A2 + +``` + + +图说明: + +1. 图中已明确区分办公区、公网区域和互联网区 `DMZ`。 +2. PC 端用户位于办公区,经办公网使用内网 IP 直接访问 `DMZ` 内的 `Nginx` 入口。 +3. 移动端用户和第三方系统位于公网区域,先经公网授权入口,再跨边界进入 `DMZ` 内的 `Nginx` 入口。 +4. `Nginx` 入口位于互联网区 `DMZ`,负责将开放 API 端点负载到两台业务应用节点。 +5. 两台业务应用节点位于互联网区 `DMZ`,节点内均部署 `Spring Boot Gateway`,作为微服务集群统一接入入口。 +6. 公网入口后侧涉及的边界路由与 `NAT` 转换属于甲方网络侧能力,本图不展开网络设备细节。 + +**图 4-2 综合服务软件拓扑图** + + +```mermaid +flowchart TB + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.4px,color:#1e3a8a; + classDef service fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.4px,color:#4c1d95; + + subgraph DMZ[互联网区 / DMZ] + direction LR + A1[业务应用节点 1
Gateway + Biz]:::app + A2[业务应用节点 2
Gateway + Biz]:::app + end + + subgraph INTRA[内网区] + direction TB + subgraph M[综合节点] + direction TB + M2[Redis / Nacos / RustFS]:::service + M3[HAProxy / PgBouncer / Patroni]:::service + end + end + + class DMZ,INTRA zone; + + A1 -->|缓存 配置 文件访问| M2 + A2 -->|缓存 配置 文件访问| M2 + A1 -->|数据库代理访问| M3 + A2 -->|数据库代理访问| M3 + +``` + + +图说明: + +1. 综合节点位于内网区,承接缓存、配置、对象存储及数据库控制组件。 +2. 两台 `DMZ` 业务应用节点统一访问内网区综合节点,不直接连接数据库。 + +**图 4-3 数据与备份软件拓扑图** + + +```mermaid +flowchart LR + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; + classDef service fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.4px,color:#4c1d95; + classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.4px,color:#064e3b; + classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.4px,color:#78350f; + classDef bank fill:#fef2f2,stroke:#dc2626,stroke-width:1.4px,color:#7f1d1d; + + subgraph DMZ[互联网区 / DMZ] + F1[SFTP / FTP 文件交换服务器]:::bank + end + + subgraph INTRA[内网区] + direction LR + subgraph M[综合节点] + direction TB + M1[数据库管理控件 / 中间件]:::service + M2[对象存储 / RustFS]:::service + end + D1[(PostgreSQL 主库)]:::data + D2[(PostgreSQL 热备)]:::data + B1[备份归档存储]:::backup + end + + class DMZ,INTRA zone; + + M1 -->|5432 数据库访问| D1 + M1 -.->|5432 状态探测| D2 + D1 -->|主备同步| D2 + D1 -->|备份 / WAL 归档| B1 + D2 -->|备份副本| B1 + M2 -->|文件归档| B1 + F1 -->|银行文件归档| B1 + +``` + + +图说明: + +1. 数据库控制组件经由主库提供数据库访问能力。 +2. 主库与热备之间通过同步复制保持一致性。 +3. 银行文件交换服务器位于互联网区 `DMZ`,承接送盘、回盘、对账文件交换能力。 +4. RustFS 与银行文件交换服务器分别将各自数据归档到备份归档存储。 + +## 主机部署图 + +**图 4-4 主机部署总览图** + + +```mermaid +flowchart LR + classDef gateway fill:#fff7ed,stroke:#ea580c,stroke-width:1.2px,color:#7c2d12; + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.2px,color:#1e3a8a; + classDef middle fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.2px,color:#4c1d95; + classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.2px,color:#064e3b; + classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.2px,color:#78350f; + GW[DMZ Nginx 入口节点]:::gateway + APP1[业务应用节点 1
内含 Gateway]:::app + APP2[业务应用节点 2
内含 Gateway]:::app + FTP[SFTP / FTP 文件交换服务器]:::middle + MID[综合节点]:::middle + DB1[(数据库主库服务器)]:::data + DB2[(数据库热备服务器)]:::data + BK[备份归档存储]:::backup + + GW --> APP1 + GW --> APP2 + APP1 --> MID + APP2 --> MID + APP1 --> FTP + APP2 --> FTP + MID --> DB1 + MID --> DB2 + DB1 --> DB2 + DB1 --> BK + DB2 --> BK + MID --> BK + +``` + + +图说明: + +1. 本图仅表达主机与主机之间的部署关系,不重复展开办公区、公网区域和跨边界访问链路。 +2. `Nginx` 入口节点、业务应用节点和 `SFTP/FTP` 文件交换服务器部署在互联网区 `DMZ`。 +3. 综合节点、数据库主库服务器、数据库热备服务器和备份归档存储部署在内网区。 +4. 业务应用节点经 `DMZ Nginx` 接入,并访问综合节点与 `SFTP/FTP` 文件交换服务器。 +5. 综合节点统一访问 PostgreSQL 主库与热备;主库、热备和综合节点均向备份归档存储输出数据。 + +主机部署细化说明: + +1. 互联网区 `DMZ` 的 `Nginx` 入口节点部署 `Nginx`,负责开放 API 转发和内部负载均衡。 +2. 两台互联网区 `DMZ` 业务应用节点分别部署 `Spring Boot Gateway` 与业务服务实例。 +3. 内网区综合节点部署 `Redis`、`Nacos`、`RustFS`、`HAProxy`、`PgBouncer`、`Patroni`,并负责访问数据库主库与热备服务器。 +4. 互联网区 `DMZ` 的 `SFTP/FTP` 文件交换服务器部署银行文件交换服务及送盘、回盘、对账目录,由业务应用节点直接访问。 +5. 内网区数据库主库服务器部署 PostgreSQL 主库实例,数据库热备服务器部署 PostgreSQL 热备实例。 + +## 数据库访问链路图 + +**图 4-5 数据库访问链路图** + + +```mermaid +flowchart LR + A1[业务应用节点 1] + A2[业务应用节点 2] + P[PgBouncer] + H[HAProxy] + M[(主库)] + S[(热备)] + T[Patroni] + + A1 -->|统一代理地址| P + A2 -->|统一代理地址| P + P -->|连接池复用| H + H -->|写流量| M + H -.热备探测 / 状态访问.-> S + M -->|同步复制| S + T -.主备状态管理.-> H + +``` + + +图说明: + +1. 业务应用不直接连接数据库主机。 +2. PgBouncer 负责连接池。 +3. HAProxy 负责数据库入口代理。 +4. Patroni 负责主备状态管理与切换控制。 +5. 综合节点侧的数据库控制组件会同时访问主库和热备,用于探测、控制和切换。 + +## 备份恢复链路图 + +**图 4-6 备份恢复链路图** + + +```mermaid +flowchart LR + DB1[(PostgreSQL 主库)] --> BK[备份归档存储] + DB2[(PostgreSQL 热备)] --> BK + MID[综合节点 / RustFS] --> BK + BK --> REC[恢复与演练入口] + +``` + + +图说明: + +1. 主库和热备均向备份归档存储输出备份数据。 +2. 综合节点中的 RustFS 文件数据也纳入备份范围。 +3. 备份归档存储作为数据库恢复与文件恢复的统一入口。 + +## 网络拓扑图 + +> 说明:如需生成正式网络分区图,统一以 `scripts/generate_planb_diagrams.py` 生成的产物为准;其他脚本仅用于布局试验,不作为正式交付依据。 + +**图 4-7 网络分区图** + + +```mermaid +flowchart LR + classDef user fill:#ecfeff,stroke:#0891b2,stroke-width:1.2px,color:#083344; + classDef edge fill:#fff7ed,stroke:#ea580c,stroke-width:1.2px,color:#7c2d12; + classDef zone fill:#f8fafc,stroke:#94a3b8,stroke-width:1.2px,color:#0f172a; + classDef svc fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.2px,color:#4c1d95; + classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.2px,color:#064e3b; + classDef bank fill:#fef2f2,stroke:#dc2626,stroke-width:1.2px,color:#7f1d1d; + classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.2px,color:#78350f; + + subgraph Z1[办公区] + PC[PC 端用户] + end + + subgraph Z2[公网区域] + PUB[移动端用户 / 第三方系统] + EDGE[公网入口 / 边界路由 / NAT] + BANK[银行系统] + end + + subgraph Z3[互联网区 / DMZ] + IGW[Nginx 入口] + APP[业务应用集群] + FX[SFTP / FTP 文件交换服务器] + end + + subgraph Z4[内网区] + MID[综合节点] + DBM[(PostgreSQL 主库)] + DBS[(PostgreSQL 热备)] + BK[备份归档存储] + end + + class Z1,Z2,Z3,Z4 zone; + class PC,PUB user; + class EDGE,IGW edge; + class APP,MID svc; + class DBM,DBS data; + class FX bank; + class BK backup; + + PC --> IGW + PUB --> EDGE + BANK --> IGW + BANK --> FX + EDGE --> IGW + IGW --> APP + APP --> FX + APP --> MID + MID --> DBM + MID -.-> DBS + DBM --> BK + DBS --> BK + MID --> BK + +``` + + +图说明: + +1. 公网入口、边界路由和 `NAT` 转发不纳入我方主机资源,但作为公网访问进入 `DMZ` 的前置接入层予以保留。 +2. 网络分区图按办公区、公网区域、互联网区 `DMZ`、内网区四区模型表达,不展开单机内部软件组件。 +3. PC 端用户可直接通过办公网访问 `DMZ` 中的 `Nginx` 入口;移动端和第三方系统经公网入口、边界路由或 `NAT` 转发后进入 `DMZ`。 +4. `DMZ` 中的 `Nginx` 入口、业务应用集群、银行文件交换服务器与内网区综合节点、数据库、备份归档存储通过授权链路互通。 +5. 银行系统除通过 `SFTP/FTP` 目录交换文件外,还可按授权专线或外联链路访问 `DMZ Nginx` 暴露的 API 入口,网络分区图已同步表达这两类授权链路。 + +## 主机角色与部署内容 + +| 层级 | 主机角色 | 数量 | 主要部署内容 | 说明 | +|---|---|---:|---|---| +| 接入层 | DMZ Nginx 入口节点 | 1 台 | Nginx、API 转发、内部负载均衡 | 作为我方统一 DMZ 接入入口,承接办公网访问、公网转发与开放 API 转发 | +| 应用层 | 业务应用节点(主) | 2 台 | Spring Boot Gateway、Spring Boot 业务服务 | 承载微服务集群接入与表务、抄表、收费、账务、发票、报表等核心应用服务 | +| 综合支撑层 | 数据、中间件与文件存储综合节点 | 1 台 | Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni | 中间件、数据库控制与文件存储同机部署 | +| 银行交换层 | SFTP/FTP 文件交换服务器 | 1 台 | SFTP/FTP 服务、送盘目录、回盘目录、对账目录、归档目录 | 作为银行文件交换专用前置机 | +| 数据库层 | PostgreSQL 主库服务器 | 1 台 | PostgreSQL 16 Primary | 部署在可用区 A | +| 数据库层 | PostgreSQL 热备服务器 | 1 台 | PostgreSQL 16 Standby | 部署在可用区 B | +| 备份层 | 备份归档存储 | 1 套 | 基础备份、WAL 归档、恢复副本 | 独立备份空间 | + +## 资源配置建议 + +| 主机角色 | 数量 | 建议配置 | 备注 | +|---|---:|---|---| +| DMZ Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | 承载 DMZ Nginx、API 转发和内部负载均衡 | +| 业务应用节点(主) | 2 台 | 32 核 CPU / 64 GB 内存 / 300 GB 存储 | 承载 Spring Boot Gateway 及表务、抄表、收费、账务、发票、报表等核心应用服务 | +| 数据、中间件与文件存储综合节点 | 1 台 | 16 核 CPU / 32 GB 内存 / 2300 GB 存储 | 承载缓存、配置治理、数据库控制、图片、附件等非结构化数据 | +| SFTP/FTP 文件交换服务器 | 1 台 | 2 核 CPU / 8 GB 内存 / 200 GB 存储 | 承载银行送盘、回盘、对账、归档文件交换,建议独立部署 | +| PostgreSQL 主库服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | 生产写入节点,不计入上述已知 4 类业务主机 | +| PostgreSQL 热备服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | 正式切换接管节点,不计入上述已知 4 类业务主机 | +| 备份归档存储 | 1 套 | 可用空间 4 TB 至 6 TB | 存放全量备份与 WAL 归档 | + +### 银行文件交换服务器容量估算 + +按 20 万用户、5 年保留期估算,银行文件交换服务器主要承载代扣、托收、对账等批次文件,不承载全量业务明细数据库。 + +估算依据如下: + +1. 银行代扣、托收、对账文件以批次文件为主,不是每位用户每天形成独立文件。 +2. 按“仅覆盖银行代扣/托收用户,且按月批次送盘/回盘一次”的业务节奏估算,单个批次文件大小通常在 `10 MB ~ 40 MB` 量级。 +3. 按每月送盘、回盘、对账共 `3` 类核心文件估算,月文件量约为: + - `30 MB ~ 120 MB / 月` +4. 按 1 年估算,原始批次文件总量约为: + - `0.36 GB ~ 1.44 GB / 年` +5. 考虑归档副本、异常重传、中间文件和运行日志,按 `10 ~ 15` 倍放大后,5 年总量通常约为: + - `20 GB ~ 110 GB` + +因此,按最节约的一期规划,银行文件交换服务器可按 `2 核 CPU / 8 GB 内存 / 200 GB 存储` 配置满足送盘、回盘、对账文件交换与 5 年留存需要;如后续银行通道数量增加、并发文件交换增加或保留策略扩大,再扩容至 `4 核 / 8 GB / 500 GB` 即可。建议设置 `70%` 容量预警,并预留扩容机制。 + +## 资源审批汇总表 + +以下汇总表用于甲方进行主机、存储、网络及基础软件部署范围审批。 + +| 序号 | 资源名称 | 数量 | 规格 | 部署内容 | 用途说明 | 建议口径 | +|---|---:|---:|---|---|---|---| +| 1 | DMZ Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | Nginx、API 转发、内部负载均衡 | 我方统一 DMZ 接入入口 | 可利旧优先 | +| 2 | 业务应用节点(主) | 2 台 | 32 核 CPU / 64 GB 内存 / 300 GB 存储 | Spring Boot Gateway、Spring Boot 核心业务服务 | 承载微服务接入与核心业务服务 | 现有资源纳入正式方案 | +| 3 | 数据、中间件与文件存储综合节点 | 1 台 | 16 核 CPU / 32 GB 内存 / 2300 GB 存储 | Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni | 承载缓存、配置治理、数据库控制、图片、附件、导出文件等能力 | 现有资源纳入正式方案 | +| 4 | SFTP/FTP 文件交换服务器 | 1 台 | 2 核 CPU / 8 GB 内存 / 200 GB 存储 | SFTP/FTP 服务、送盘/回盘/对账目录、归档目录 | 承载银行文件交换与目录隔离 | 按最节约一期规划建议新增或单独利旧 | +| 5 | PostgreSQL 主库服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | PostgreSQL 16 Primary | 承载生产写入 | 建议单独配置 | +| 6 | PostgreSQL 热备服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | PostgreSQL 16 Standby | 承载正式切换接管 | 建议单独配置 | +| 7 | 备份归档存储 | 1 套 | 可用空间 4 TB 至 6 TB | 基础备份、WAL 归档、恢复副本 | 保障恢复与审计追溯 | 可利旧或新增存储空间 | + +### 审批建议 + +1. 业务应用节点、综合节点、DMZ Nginx 入口节点可优先按现有资源纳入实施范围。 +2. SFTP/FTP 文件交换服务器建议单独审批,以满足银行文件交换隔离和安全要求。 +3. PostgreSQL 主库与热备库建议作为单独审批项,避免与现有业务节点混部。 +4. 备份归档存储建议作为单独资源项审批,避免后期因备份空间不足影响正式上线。 + +## 基础软件与版本清单 + +| 类别 | 软件名称 | 建议版本 | 部署位置 | 说明 | +|---|---|---|---|---| +| 操作系统 | Linux 发行版 | 银河麒麟(Kylin V10)X86 | 全部服务器 | 按甲方当前基础环境标准选定 | +| 运行环境 | JDK | 17 | 业务应用节点 | Spring Boot 运行环境 | +| 接入层 | Nginx | 1.20+ | DMZ Nginx 入口节点 | 办公网、公网入口转发与内部负载均衡 | +| 网关服务 | Spring Boot Gateway | 3.x | 业务应用节点 | 微服务集群统一接入 | +| 业务服务 | Spring Boot | 3.x | 业务应用节点 | 核心业务服务框架 | +| 银行文件交换 | SFTP/FTP 服务 | 稳定版 | SFTP/FTP 文件交换服务器 | 银行送盘、回盘、对账文件交换 | +| 数据库 | PostgreSQL | 16 | 主库、热备库 | 主备数据库部署 | +| 缓存 | Redis | 6.2+ | 综合节点 | 缓存、会话、轻量级消息能力 | +| 配置中心 | Nacos | 2.x | 综合节点 | 配置治理与注册管理 | +| 对象存储 | RustFS | 以项目实际版本为准 | 综合节点 | 图片、附件、导出文件存储 | +| 数据库代理 | HAProxy | 2.x | 综合节点 | 数据库读写入口代理 | +| 连接池 | PgBouncer | 1.2x+ | 综合节点 | 统一数据库连接池 | +| 高可用控制 | Patroni | 稳定版 | 综合节点 | 主备状态管理与切换 | + +## 部署方式说明 + +### 总体部署原则 + +本方案的部署方式遵循以下原则: + +1. 入口代理类组件优先采用 `Docker` 部署,并可优先评估 `host` 网络模式。 +2. 业务应用优先采用 `Docker` 部署,但不建议使用 `host` 网络模式。 +3. 数据库主备优先采用物理机或虚拟机直接部署,不建议容器化承载 PostgreSQL 主备本体。 +4. 数据库控制组件如需容器化,应优先选择轻量代理组件容器化,高可用控制组件仍以直接部署为优先。 + +### 组件部署方式建议 + +| 组件 | 部署节点 | 建议部署方式 | 是否建议 `host` 模式 | 说明 | +|---|---|---|---|---| +| DMZ Nginx | DMZ Nginx 入口节点 | Docker 部署 | 是,优先建议 | 作为我方统一 DMZ 接入入口,便于端口管理与转发 | +| Spring Boot Gateway | 业务应用节点(主) | Docker 部署 | 否 | 作为微服务统一接入入口,建议与业务服务同节点部署 | +| Spring Boot 应用 | 业务应用节点(主) | Docker 部署 | 否 | 便于发布、回滚、扩容,保留容器网络隔离 | +| SFTP/FTP 服务 | SFTP/FTP 文件交换服务器 | 物理机/虚拟机直接部署 | 否 | 作为银行文件交换专用服务,建议独立部署并做目录隔离 | +| Redis | 综合节点 | Docker 部署 | 可选 | 可采用普通容器网络,必要时可评估 `host` | +| Nacos | 综合节点 | Docker 部署 | 可选 | 默认容器网络即可,便于配置治理 | +| HAProxy | 综合节点 | Docker 部署 | 是,优先建议 | 作为数据库代理入口,适合 `host` 模式 | +| PgBouncer | 综合节点 | Docker 部署 | 是,优先建议 | 作为数据库连接池入口,适合 `host` 模式 | +| Patroni | 综合节点 | 物理机/虚拟机直接部署 | 否 | 建议与系统服务集成,便于运维与切换控制 | +| RustFS | 综合节点 | Docker 部署 | 否 | 更关注数据盘挂载与对象存储目录管理 | +| PostgreSQL 主库 | 主库服务器 | 物理机/虚拟机直接部署 | 否 | 核心数据库本体不建议容器化 | +| PostgreSQL 热备 | 热备服务器 | 物理机/虚拟机直接部署 | 否 | 高可用数据库本体不建议容器化 | + +### 优先采用 Docker 且可使用 `host` 模式的组件 + +结合当前资源结构,建议优先采用 `Docker + host` 模式的组件如下: + +1. `DMZ Nginx` +2. `HAProxy` +3. `PgBouncer` + +采用 `host` 模式的主要原因如下: + +1. 直接监听固定服务端口,减少端口映射复杂度。 +2. 更便于与主机防火墙、域名、VIP、健康检查配合。 +3. 对于入口类与代理类组件,运维体验更接近直接部署。 + +### 不建议采用 `host` 模式的组件 + +以下组件不建议采用 `Docker + host` 模式: + +1. `Spring Boot` 业务应用:应保留容器网络隔离,便于扩容和端口治理。 +2. `RustFS`:应以存储挂载与数据目录管理为重点,不依赖 `host` 模式。 +3. `PostgreSQL 主库 / 热备`:数据库本体优先直接部署,不建议容器化。 +4. `Patroni`:建议直接部署,便于与数据库高可用控制链路协同。 + +## 网络需求 + +### 1. 网络分区要求 + +| 网络分区 | 部署对象 | 访问要求 | +|---|---|---| +| 办公区 | PC 端用户办公网段 | 仅允许通过办公网访问 `DMZ Nginx` 入口 | +| 公网区域 | 移动端用户、第三方系统、公网入口薄转发、边界路由 / NAT | 对外提供 HTTPS 访问,不纳入我方主机资源 | +| 互联网区 DMZ | `DMZ Nginx`、业务应用节点、`SFTP/FTP` 文件交换服务器 | 作为对外与跨边界服务区,仅允许按授权链路访问内网区 | +| 内网区 | Redis、Nacos、RustFS、数据库控制组件、PostgreSQL 主库/热备、备份归档存储 | 严格限制,仅允许 `DMZ` 业务应用节点、综合节点控制链路和运维区访问 | + +### 2. 带宽与时延要求 + +| 网络链路 | 建议要求 | 说明 | +|---|---|---| +| 公网入口薄转发到 DMZ Nginx | 千兆网络 | 满足公网入口转发 | +| 办公网到 DMZ Nginx | 千兆网络 | 满足办公网通过内网 IP 访问 | +| DMZ Nginx 到业务应用 | 千兆网络 | 满足开放 API 转发与网关接入 | +| 业务应用到综合节点 | 千兆网络 | 满足缓存、配置治理、文件访问与数据库代理访问 | +| 业务应用到 SFTP/FTP 服务器 | 千兆网络 | 满足送盘、回盘、对账文件交换 | +| 银行链路到 SFTP/FTP 服务器 | 千兆网络或专线 | 满足银行文件交换与目录投递 | +| 综合节点到数据库 | 千兆网络以上 | 满足数据库代理与健康检查 | +| 主备复制链路 | 不低于 10 Gbps | 支撑同步复制 | +| 同城主备时延 | 建议低于 2 ms | 支撑稳定同步复制 | +| 数据库到备份存储 | 千兆网络以上 | 满足基础备份与 WAL 归档传输 | +| 综合节点到备份存储 | 千兆网络以上 | 满足文件数据备份与归档传输 | + +### 3. 网络开通要求 + +| 类别 | 开通要求 | 说明 | +|---|---|---| +| 对外访问 | 开通 443 端口 | 提供统一 HTTPS 入口 | +| 公网入口薄转发访问 DMZ Nginx | 开通公网入口到 DMZ Nginx 的转发端口 | 仅授权链路访问 | +| 办公网访问 DMZ Nginx | 开通办公网到 DMZ Nginx 的内网访问端口 | 仅办公网访问 | +| 银行专线或授权外联链路访问 DMZ Nginx | 开通银行链路到 DMZ Nginx 的 HTTPS/API 端口 | 仅银行授权链路访问 | +| DMZ Nginx 访问应用 | 开通 DMZ Nginx 到业务应用的 API / 网关端口 | 仅 DMZ 内部访问 | +| 应用访问综合节点 | 开通 Redis、Nacos、RustFS(9000/9001)、PgBouncer 相关端口 | 仅 DMZ 业务应用节点访问 | +| 业务应用访问 SFTP/FTP 服务器 | 开通 SFTP/FTP 相关端口 | 用于银行文件送盘、回盘、对账交换 | +| 银行链路访问 SFTP/FTP 服务器 | 开通 FTP/SFTP 服务端口 | 仅银行授权链路访问 | +| 综合节点访问数据库 | 开通 PostgreSQL 5432 及健康检查相关端口 | 仅综合节点访问 | +| 运维访问 | 开通运维区到各层必要管理端口 | 用于巡检、发布、恢复、切换 | + +## 网络开通清单 + +| 源区域/源主机 | 目标区域/目标主机 | 协议/端口 | 用途 | 开通要求 | +|---|---|---|---|---| +| 外部用户 | 公网入口薄转发 | HTTPS/443 | 页面访问、接口入口 | 对外开放 | +| 公网入口薄转发 | DMZ Nginx 入口节点 | HTTP/HTTPS/转发端口 | 公网访问转入 DMZ 入口 | 授权链路放通 | +| 办公网段 | DMZ Nginx 入口节点 | HTTP/HTTPS/内网访问端口 | 办公网用户访问系统入口 | 仅办公网放通 | +| 银行专线或授权外联链路 | DMZ Nginx 入口节点 | HTTPS/API 端口 | 银行系统访问 DMZ API 入口 | 仅授权链路放通 | +| DMZ Nginx 入口节点 | 业务应用节点(主) | HTTP/HTTPS/网关端口 | DMZ API 转发与微服务接入 | DMZ 内部放通 | +| 业务应用节点(主) | 综合节点 | TCP/6379 | Redis 访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/8848 | Nacos 访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/6432 | PgBouncer 访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/9000、9001 | RustFS 文件访问与控制台访问 | 内网放通 | +| 业务应用节点(主) | SFTP/FTP 文件交换服务器 | TCP/21 或 22 | 银行送盘、回盘、对账文件交换 | 内网放通 | +| 银行专线或授权外联链路 | SFTP/FTP 文件交换服务器 | TCP/21 或 22 | 银行文件目录投递与回收 | 仅授权链路放通 | +| 综合节点 | PostgreSQL 主库服务器 | TCP/5432 | 数据库代理与控制访问 | 内网放通 | +| 综合节点 | PostgreSQL 热备服务器 | TCP/5432 | 数据库代理、状态探测与控制访问 | 内网放通 | +| PostgreSQL 主库服务器 | PostgreSQL 热备服务器 | TCP/5432 | 主备同步复制 | 高带宽、低时延专用链路 | +| PostgreSQL 主库/热备库 | 备份归档存储 | TCP/存储协议端口 | 基础备份与 WAL 归档 | 内网放通 | +| 综合节点 | 备份归档存储 | TCP/存储协议端口 | 文件归档与备份 | 内网放通 | +| 运维管理终端 | 各节点 | SSH/22 及必要管理端口 | 运维、巡检、发布、恢复 | 仅运维区放通 | + +## 访问控制与端口建议 + +| 服务 | 典型端口 | 访问范围 | +|---|---|---| +| Nginx/HTTPS | 443 | 对外开放、办公网授权访问及银行授权链路访问 | +| Spring Boot Gateway / 业务应用端口 | 项目自定义端口 | 仅 DMZ Nginx 与 DMZ/内网授权调用 | +| Redis | 6379 | 仅业务应用与运维可访问 | +| Nacos | 8848 | 仅业务应用与运维可访问 | +| RustFS | 9000(S3 API)、9001(Console) | 仅业务应用与运维可访问 | +| SFTP/FTP 服务 | 21 或 22 | 仅业务应用节点、运维和银行授权链路可访问 | +| PgBouncer | 6432 | 仅业务应用可访问 | +| HAProxy | 5000 或项目定义端口 | 仅 PgBouncer 与运维可访问 | +| PostgreSQL | 5432 | 仅数据库控制主机与运维可访问 | + +## 实施步骤 + +### 1. 基础资源准备 + +1. 确认 `DMZ Nginx` 入口节点、业务应用节点、综合节点是否为利旧资源。 +2. 完成 SFTP/FTP 文件交换服务器、PostgreSQL 主库服务器、热备服务器及备份归档存储审批。 +3. 完成各网络分区、IP、域名、SSL 证书、路由及防火墙策略准备。 + +### 2. 基础软件安装 + +1. 安装操作系统并完成安全基线加固。 +2. 在业务应用节点安装 JDK、部署业务运行环境。 +3. 在 `DMZ Nginx` 入口节点安装 Nginx。 +4. 在综合节点安装 Redis、Nacos、RustFS、HAProxy、PgBouncer、Patroni。 +5. 在 SFTP/FTP 文件交换服务器安装 SFTP/FTP 服务并配置目录结构。 +6. 在数据库主备节点安装 PostgreSQL 16。 + +### 3. 数据库主备部署 + +1. 初始化 PostgreSQL 主库。 +2. 初始化 PostgreSQL 热备库并建立同步复制。 +3. 配置 Patroni、HAProxy、PgBouncer 联动。 +4. 配置基础备份与 WAL 归档。 +5. 配置业务应用节点到 SFTP/FTP 文件交换服务器的文件交换目录映射。 + +### 4. 应用与存储部署 + +1. 在业务应用节点部署 Spring Boot Gateway 和业务应用服务。 +2. 在 `DMZ Nginx` 入口节点配置 API 转发和内部负载均衡规则。 +3. 在综合节点初始化 RustFS 存储桶和访问策略。 +4. 在 SFTP/FTP 文件交换服务器配置送盘、回盘、对账、归档目录。 +5. 配置业务应用到 Redis、Nacos、RustFS、PgBouncer 的连接参数。 + +### 5. 联调与演练 + +1. 完成前后端联调。 +2. 完成中间件访问验证。 +3. 完成数据库主备同步验证。 +4. 完成文件上传、下载、归档验证。 +5. 完成主备切换演练与回切演练。 + +### 6. 上线准备与正式投产 + +1. 完成上线前巡检与问题清零。 +2. 确认监控、日志、备份、告警正常。 +3. 完成上线窗口审批。 +4. 按上线顺序切换生产流量。 + +## 验收标准 + +| 验收项 | 验收标准 | 说明 | +|---|---|---| +| 对外访问 | 用户可通过统一域名正常访问系统 | 公网入口薄转发与 DMZ Nginx 链路正常 | +| 业务应用可用性 | 表务、抄表、收费、账务、发票、报表等核心服务正常 | 业务主流程可执行 | +| Redis 可用性 | 缓存读写正常 | 中间件能力正常 | +| Nacos 可用性 | 配置下发正常 | 配置治理能力正常 | +| RustFS 可用性 | 图片、附件上传下载正常 | 文件存储能力正常 | +| SFTP/FTP 文件交换 | 送盘、回盘、对账目录读写正常 | 银行文件交换能力正常 | +| 数据库连接能力 | 业务应用可通过 PgBouncer 正常连接数据库 | 代理接入正常 | +| PostgreSQL 主备同步 | 主备复制正常,无严重延迟 | 高可用基础正常 | +| 数据库切换演练 | 主备切换成功,业务恢复正常 | 高可用能力可验证 | +| 备份归档 | 基础备份与 WAL 归档正常 | 恢复能力可验证 | +| 运维监控 | 关键节点监控、日志、告警正常 | 运维可观测性正常 | + +## 部署结论 + +在已采纳 PostgreSQL 16 方案二作为数据库部署方案的前提下,建议福建水务营收系统采用“前后端分层部署 + 中间件集中部署 + 数据库主备分离部署”的整体部署模式。 + +本方案的最终结论如下: + +1. 公网入口薄转发、边界路由和 `NAT` 不纳入我方主机资源;我方实际部署的统一接入入口为互联网区 `DMZ` 的 `Nginx` 入口节点。 +2. 2 台业务应用节点部署在互联网区 `DMZ`,节点内同时部署 `Spring Boot Gateway` 和业务服务,承接微服务统一接入与核心业务处理。 +3. 综合节点集中承载 `Redis`、`Nacos`、`RustFS` 及数据库控制组件,并部署在内网区,进一步压缩一期主机数量并降低部署复杂度。 + +## RustFS 产品介绍与选型说明 + +RustFS 是一款支持私有化部署的 S3 兼容对象存储方案,可用于承接图片、附件、导出文件和归档文件等非结构化数据场景。结合本项目当前整体部署方案,RustFS 作为综合节点上的对象存储组件,可替代 MinIO 承接对象存储能力。 + +本项目采用 RustFS 的原因如下: + +1. RustFS 具备对象存储能力,适合图片、附件、导出文件和归档文件统一存储。 +2. RustFS 支持私有化部署,适合甲方对自主可控和本地化部署的要求。 +3. RustFS 可作为独立对象存储组件部署在综合节点中,与缓存、配置治理和数据库控制能力协同运行。 +4. 当前方案中,银行文件交换仍由独立的 SFTP/FTP 文件交换服务器承接,RustFS 不承担银行送盘、回盘和对账文件交换职责。 +5. 新增 1 台 SFTP/FTP 文件交换服务器,作为银行送盘、回盘、对账文件交换专用前置机。 +6. PostgreSQL 16 采用同城双可用区 1 主 1 热备部署,满足高可用要求。 +7. 网络采用办公区、公网区域、互联网区 `DMZ`、内网区分层隔离模式,以满足安全性、可维护性和资源审批要求。 diff --git a/output/08_planb_canvas_diagrams.html b/output/08_planb_canvas_diagrams.html new file mode 100644 index 0000000..f46f644 --- /dev/null +++ b/output/08_planb_canvas_diagrams.html @@ -0,0 +1,262 @@ + + + + + + 08 PlanB Canvas Diagrams + + + +

福建水务营收系统 Canvas 图示

+

该文件用于替代当前 Mermaid 版本,便于你审阅更接近正式交付效果的网络图与访问图。

+ +
+

图 A 访问与应用软件拓扑图

+ +
公网域与内部网络域已明确拆分,PC 端走内网,移动端与第三方走公网接入代理。
+
+ +
+

图 B 网络连接图

+ +
该图更偏网络工程师评审视角,强调边界、链路和跨域访问关系。
+
+ + + + diff --git a/output/11_UP_Detailed.docx b/output/11_UP_Detailed.docx new file mode 100644 index 0000000..ec19378 Binary files /dev/null and b/output/11_UP_Detailed.docx differ diff --git a/output/11_UP_Detailed.html b/output/11_UP_Detailed.html new file mode 100644 index 0000000..7c4b322 --- /dev/null +++ b/output/11_UP_Detailed.html @@ -0,0 +1,240 @@ + + + + + + + + 福建水务营收系统-统一平台模块正文 + + + + + +
+

福建水务营收系统-统一平台模块正文

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统详细设计-统一平台模块正文

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位

+

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

+

+

2 统一平台详细设计

+

+

2.1 UP-001 统一认证与单点登录

+

2.1.1 功能说明

+

UP-001 为全系统提供统一身份认证与单点登录能力,支撑 PC +管理端、移动作业端、客户渠道及外部集成应用的统一接入。

+

2.1.2 关键设计

+
    +
  1. 支持用户名密码登录、短信验证码登录、第三方授权登录。
  2. +
  3. 采用 OAuth2.0 + JWT 实现访问令牌签发与会话管理。
  4. +
  5. 对外部系统开放标准认证接口,支持令牌续期与退出失效。
  6. +
  7. 对高敏感操作支持 MFA 二次校验。
  8. +
+

2.1.3 业务流程

+
sequenceDiagram
+    participant 用户
+    participant 接入端
+    participant 认证中心
+    participant 用户中心
+
+    用户->>接入端: 提交登录信息
+    接入端->>认证中心: 发起认证请求
+    认证中心->>用户中心: 校验用户/角色/状态
+    用户中心-->>认证中心: 返回校验结果
+    认证中心-->>接入端: 返回Token/权限上下文
+    接入端-->>用户: 登录成功并进入目标系统
+
+

2.1.4 核心数据

+
    +
  • system_users:用户基本信息。
  • +
  • system_oauth2_client:客户端信息。
  • +
  • system_oauth2_access_token:访问令牌。
  • +
  • system_oauth2_refresh_token:刷新令牌。
  • +
  • system_login_log:登录审计日志。
  • +
+

+

2.2 UP-002 组织用户与权限管理

+

2.2.1 功能说明

+

UP-002 +管理组织机构、岗位、角色、菜单、数据权限和用户授权关系,是业务系统权限控制与数据隔离的基础。

+

2.2.2 关键设计

+
    +
  1. 支持集团—区域公司—营业所三级及以上组织结构。
  2. +
  3. 基于 RBAC 实现菜单权限、按钮权限、数据权限。
  4. +
  5. 支持多租户/多单位数据隔离与用户归属控制。
  6. +
  7. 敏感操作如账务调整、退款、作废、签章回退必须经过权限校验。
  8. +
+

2.2.3 主要规则

+
    +
  • 角色权限与组织权限叠加生效。
  • +
  • 业务数据默认按所属单位、片区、岗位范围过滤。
  • +
  • 超权限查询、批量导出、敏感字段查看需单独授权。
  • +
+

+

2.3 UP-003 参数字典与基础配置

+

2.3.1 功能说明

+

UP-003 +用于统一维护业务参数、地址参数、水价规则、短信模板、打印模板、字典数据与定时任务参数。

+

2.3.2 关键设计

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
配置类别典型内容用途
业务字典客户类型、抄表方式、工单状态统一编码与展示
地址参数行政区划、片区、册本归属客户与表务归属管理
价格体系用水性质、阶梯水价、污水费规则开账与账务计算
渠道参数支付渠道、短信模板、税控配置外部接口集成
任务参数自动开账、对账、备份周期运维调度
+

+

2.4 UP-004 审计监控与运维支撑

+

2.4.1 功能说明

+

UP-004 +提供操作日志、登录日志、接口日志、异常监控、在线用户、任务监控、性能监控等能力。

+

2.4.2 关键设计

+
    +
  1. 所有核心业务操作写入统一审计日志。
  2. +
  3. 接口调用成功率、响应时长、异常码进入监控平台。
  4. +
  5. 定时任务执行结果、失败重试与人工补偿过程可追踪。
  6. +
  7. 监控与告警支持短信、邮件、站内信等通知方式。
  8. +
+ + diff --git a/output/11_UP_Detailed.pdf b/output/11_UP_Detailed.pdf new file mode 100644 index 0000000..2c8d97d Binary files /dev/null and b/output/11_UP_Detailed.pdf differ diff --git a/output/11_UP_Detailed_processed.md b/output/11_UP_Detailed_processed.md new file mode 100644 index 0000000..8455617 --- /dev/null +++ b/output/11_UP_Detailed_processed.md @@ -0,0 +1,139 @@ +--- +title: "11_UP_Detailed" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-11-UP +doc_role: module_body +authority: secondary +scope: 详细设计-统一平台 +source_of_truth: false +last_reviewed: 2026-03-11 +retrieval_priority: P1 +--- + +# 福建水务营收系统详细设计-统一平台模块正文 + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [统一平台详细设计正文](#sec-content) + - [UP-001 统一认证与单点登录](#mod-up-001) + - [UP-002 组织用户与权限管理](#mod-up-002) + - [UP-003 参数字典与基础配置](#mod-up-003) + - [UP-004 审计监控与运维支撑](#mod-up-004) + + + +## 文档定位 + +本文档为 `01_Detailed_Design.md` 中“统一平台详细设计”章节的模块正文拆分稿,便于按模块独立维护。正式交付口径以主详设为准。 + + + +# 统一平台详细设计 + + + +## UP-001 统一认证与单点登录 + +### 功能说明 + +UP-001 为全系统提供统一身份认证与单点登录能力,支撑 PC 管理端、移动作业端、客户渠道及外部集成应用的统一接入。 + +### 关键设计 + +1. 支持用户名密码登录、短信验证码登录、第三方授权登录。 +2. 采用 OAuth2.0 + JWT 实现访问令牌签发与会话管理。 +3. 对外部系统开放标准认证接口,支持令牌续期与退出失效。 +4. 对高敏感操作支持 MFA 二次校验。 + +### 业务流程 + + +```mermaid +sequenceDiagram + participant 用户 + participant 接入端 + participant 认证中心 + participant 用户中心 + + 用户->>接入端: 提交登录信息 + 接入端->>认证中心: 发起认证请求 + 认证中心->>用户中心: 校验用户/角色/状态 + 用户中心-->>认证中心: 返回校验结果 + 认证中心-->>接入端: 返回Token/权限上下文 + 接入端-->>用户: 登录成功并进入目标系统 + +``` + + +### 核心数据 + +- `system_users`:用户基本信息。 +- `system_oauth2_client`:客户端信息。 +- `system_oauth2_access_token`:访问令牌。 +- `system_oauth2_refresh_token`:刷新令牌。 +- `system_login_log`:登录审计日志。 + + + +## UP-002 组织用户与权限管理 + +### 功能说明 + +UP-002 管理组织机构、岗位、角色、菜单、数据权限和用户授权关系,是业务系统权限控制与数据隔离的基础。 + +### 关键设计 + +1. 支持集团—区域公司—营业所三级及以上组织结构。 +2. 基于 RBAC 实现菜单权限、按钮权限、数据权限。 +3. 支持多租户/多单位数据隔离与用户归属控制。 +4. 敏感操作如账务调整、退款、作废、签章回退必须经过权限校验。 + +### 主要规则 + +- 角色权限与组织权限叠加生效。 +- 业务数据默认按所属单位、片区、岗位范围过滤。 +- 超权限查询、批量导出、敏感字段查看需单独授权。 + + + +## UP-003 参数字典与基础配置 + +### 功能说明 + +UP-003 用于统一维护业务参数、地址参数、水价规则、短信模板、打印模板、字典数据与定时任务参数。 + +### 关键设计 + +| 配置类别 | 典型内容 | 用途 | +|---|---|---| +| 业务字典 | 客户类型、抄表方式、工单状态 | 统一编码与展示 | +| 地址参数 | 行政区划、片区、册本归属 | 客户与表务归属管理 | +| 价格体系 | 用水性质、阶梯水价、污水费规则 | 开账与账务计算 | +| 渠道参数 | 支付渠道、短信模板、税控配置 | 外部接口集成 | +| 任务参数 | 自动开账、对账、备份周期 | 运维调度 | + + + +## UP-004 审计监控与运维支撑 + +### 功能说明 + +UP-004 提供操作日志、登录日志、接口日志、异常监控、在线用户、任务监控、性能监控等能力。 + +### 关键设计 + +1. 所有核心业务操作写入统一审计日志。 +2. 接口调用成功率、响应时长、异常码进入监控平台。 +3. 定时任务执行结果、失败重试与人工补偿过程可追踪。 +4. 监控与告警支持短信、邮件、站内信等通知方式。 + diff --git a/output/12_REV_Detailed.docx b/output/12_REV_Detailed.docx new file mode 100644 index 0000000..9c4ade8 Binary files /dev/null and b/output/12_REV_Detailed.docx differ diff --git a/output/12_REV_Detailed.html b/output/12_REV_Detailed.html new file mode 100644 index 0000000..3b192d6 --- /dev/null +++ b/output/12_REV_Detailed.html @@ -0,0 +1,1299 @@ + + + + + + + + 福建水务营收系统-营收业务模块正文 + + + + + +
+

福建水务营收系统-营收业务模块正文

+

系统设计团队

+

2024年12月19日

+
+ +

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

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位

+

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

+

+

2 营收业务详细设计

+

+

2.1 营收模块统一约束

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

+

2.2 接口与数据追溯矩阵

+
+

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

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

+

2.3 REV-001 客户资料管理

+

2.3.1 功能说明

+

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

+

2.3.2 关键设计

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

2.3.3 核心数据

+
    +
  • 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:集收号/集收标记关系。
  • +
+

2.3.4 迁移补充(旧系统承接)

+

2.3.4.1 定额共享

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

2.3.4.2 定额核定

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

2.3.4.3 批量修改

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

2.3.5 接口映射

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

2.3.6 落地边界

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

+

2.4 REV-002 抄表开账

+

2.4.1 功能说明

+

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

+

2.4.2 业务流程

+
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[进入收费/催缴/开票]
+
+

2.4.3 关键规则

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

2.4.4 开账触发与结果表达

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

2.4.5 核心数据

+
    +
  • 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:计划用水方案与阶梯。
  • +
+

2.4.6 迁移补充(旧系统承接)

+

2.4.6.1 特殊开账

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

2.4.6.2 开账记录迁移

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

2.4.7 接口映射

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

2.4.8 落地边界

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

+

2.5 REV-003 营业收费

+

2.5.1 功能说明

+

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

+

2.5.2 业务流程

+
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[进入发票/对账流程]
+
+

2.5.3 关键规则

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

2.5.4 核心数据

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

2.5.5 迁移补充(旧系统承接)

+

2.5.5.1 柜台结账

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

2.5.5.2 账单打印服务

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

2.5.5.3 红冲记录

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

2.5.6 接口映射

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

2.5.7 落地边界

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

+

2.6 REV-004 账务处理

+

2.6.1 功能说明

+

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

+

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

+

2.6.2 业务流程

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

2.6.3 关键规则

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

2.6.4 核心数据

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

2.6.5 主要场景

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

2.6.6 迁移补充(旧系统承接)

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

2.6.7 接口映射

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

2.6.8 落地边界

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

+

2.7 REV-005 发票与税务处理

+

2.7.1 功能说明

+

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

+

2.7.2 业务流程

+
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[客户侧查询/下载/推送电子发票]
+
+

2.7.3 状态说明

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

2.7.4 关键规则

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

2.7.5 后台申请入口与校验补充

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

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

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

2.7.7 终态保护与异常核查

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

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

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

2.7.9 核心数据

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

2.7.10 迁移补充(旧系统承接)

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

2.7.11 接口映射

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

2.7.12 落地边界

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

+

2.8 REV-006 催缴与通知

+

2.8.1 功能说明

+

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

+

2.8.2 业务流程

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

2.8.3 关键规则

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

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

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

2.8.4 核心数据

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

2.8.4.1 催缴对象与规则摘要

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

2.8.4.2 四态与人工核查边界

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

2.8.5 迁移补充(旧系统承接)

+

2.8.5.1 催缴记录

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

2.8.5.2 停水记录

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

2.8.5.3 预存短信

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

2.8.6 接口映射

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

2.8.7 落地边界

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

+

2.9 REV-007 统计分析

+

2.9.1 功能说明

+

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

+

2.9.2 关键设计

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

2.9.3 核心数据

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

2.9.3.1 统计主题与口径摘要

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

2.9.4 接口映射

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

2.9.5 落地边界

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

+

2.10 REV-008 代收与银行业务

+

2.10.1 功能说明

+

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

+

2.10.2 业务流程

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

2.10.3 关键规则

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

2.10.4 核心数据

+
    +
  • 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:代收/代扣业务主对象。
  • +
+

2.10.4.1 +文件传输配置与审计补充

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

2.10.5 迁移补充(旧系统承接)

+

2.10.5.1 银行托收

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

2.10.5.2 实时收费查询与对账

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

2.10.5.3 当前实现对齐说明

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

2.10.6 接口映射

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

2.10.7 落地边界

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

+

2.11 REV-009 业务参数配置

+

2.11.1 功能说明

+

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

+

2.11.2 关键设计

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

2.11.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:微信/微网厅基础配置。
  • +
+

2.11.4 迁移补充(旧系统承接)

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

2.11.5 接口映射

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

2.11.6 落地边界

+
    +
  • 已落地:业务参数、页面配置、价格归属与模板站点关系、客户编号规则等核心配置对象。
  • +
  • 部分落地:部分打印模板、通知策略等参数由统一平台或外部渠道参数共同承载,营收域仅保留业务侧映射。
  • +
  • 文档先行:参数灰度发布、多版本并行生效等高级治理能力当前仅保留设计语义,不宣称为独立实现模块。
  • +
+ + diff --git a/output/12_REV_Detailed.pdf b/output/12_REV_Detailed.pdf new file mode 100644 index 0000000..94b5a88 Binary files /dev/null and b/output/12_REV_Detailed.pdf differ diff --git a/output/12_REV_Detailed_processed.md b/output/12_REV_Detailed_processed.md new file mode 100644 index 0000000..1215413 --- /dev/null +++ b/output/12_REV_Detailed_processed.md @@ -0,0 +1,750 @@ +--- +title: "12_REV_Detailed" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "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 +--- + +# 福建水务营收系统详细设计-营收业务模块正文 + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [营收业务详细设计正文](#sec-content) + - [营收模块统一约束](#sec-rev-rules) + - [接口与数据追溯矩阵](#sec-rev-trace) + - [REV-001 客户资料管理](#mod-rev-001) + - [REV-002 抄表开账](#mod-rev-002) + - [REV-003 营业收费](#mod-rev-003) + - [REV-004 账务处理](#mod-rev-004) + - [REV-005 发票与税务处理](#mod-rev-005) + - [REV-006 催缴与通知](#mod-rev-006) + - [REV-007 统计分析](#mod-rev-007) + - [REV-008 代收与银行业务](#mod-rev-008) + - [REV-009 业务参数配置](#mod-rev-009) + + + +## 文档定位 + +本文档为 `01_Detailed_Design.md` 中“营收业务详细设计”章节的模块正文拆分稿,便于按模块独立维护。正式交付口径以主详设为准。 + + + +# 营收业务详细设计 + + + +## 营收模块统一约束 + +1. `SYS-002` 负责营收主流程,发票、支付结算、消息触达分别通过 `SYS-008`、`SYS-009`、`SYS-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_cust`、`biz_account`、`biz_cust_*` | 客户服务模块、报装模块 | +| REV-002 抄表开账 | `IF-REV-004`、`IF-REV-005` | `biz_meter_book`、`biz_meter_read`、`biz_reading_*`、`biz_charge*` | 抄表APP、物联网集抄 | +| REV-003 营业收费 | `IF-REV-006` | `biz_charge*`、`biz_collection`、`bk_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_settings`、`biz_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_scheme`、`biz_cust_water_scheme_rel`:客户计划用水方案关系。 +- `biz_cust_no_rule`:客户编号规则。 +- `biz_cust_hub_marks`:集收号/集收标记关系。 + +### 迁移补充(旧系统承接) + +#### 定额共享 + +- 旧系统在“客户资料”下提供定额主客户、子客户绑定与共享清单管理能力。 +- 当前正式设计不新增并行主模型,统一归入客户与计划用水方案关系对象承接。 +- 迁移时必须至少保留主客户、子客户、绑定状态、生效时间、解除时间、备注与操作留痕,确保共享清单可查询、可解绑、可追溯。 + +#### 定额核定 + +- 旧系统支持对已建立共享关系的客户执行定额核定、撤销核定和共享清单联查。 +- 当前建议以客户关系对象和计划用水方案关系为主承接核定结果,不额外发明独立账务主表。 +- 核定结果迁移后应支持按客户、站点、核定状态、核定时间查询,并保留核定依据、操作人和变更留痕。 + +#### 批量修改 + +- 旧系统已形成“手工修改 + 模板导入修改”的双模式客户资料维护能力。 +- 当前正式设计应将其视为客户主数据治理能力的一部分,而不是临时导入工具。 +- 迁移时需明确三类口径:可批量修改字段范围、导入模板校验规则、批量修改审计留痕;历史批量修改结果至少需保留任务来源、修改字段、执行结果和失败原因。 + +### 接口映射 + +- `IF-REV-001`:客户档案、账户状态、联系人与水表绑定关系查询。 +- `IF-CS-001`、`IF-CS-002`:客户服务侧账户绑定与信息查询场景复用客户域数据。 + +### 落地边界 + +- **已落地**:客户主档、账户、联系人、分组、绑定、开票、托收/代扣关系。 +- **部分落地**:客户扩展关系、集收与规则类对象已见明确关系表,但具体业务场景仍需结合流程进一步细化。 +- **文档先行**:主副卡、部分复杂客户关系对象在当前 backend 中未见完全独立表族,文档中仅保留业务对象表述。 + + + +## REV-002 抄表开账 + +### 功能说明 + +负责抄表计划、册本管理、抄表录入、抄表状态跟踪、异常复核、计费计算与账单生成,是营收核心处理链路的起点。 + +### 业务流程 + + +```mermaid +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_charge` 与 `biz_charge_detail` 承接:主表表达客户、账期、应收日期、账单总金额和主状态,明细表表达费用组成、用量、单价和明细金额。 +6. 特殊开账、无码客户开账、罚款类开账等非标准来源,仍纳入同一营业账主明细模型承接,通过来源类型、业务类型、依据说明和操作留痕区分,不单独扩展平行账表。 +7. 审核通过后的营业账方可进入收费、催缴和发票流程;后续链路只能消费已生成账单结果,不反向改变本接口的生成边界。 +8. 远传抄表数据可由 `SYS-006` / IoT 能力提供采集支撑,但账单生成仍归属 SYS-002。 + +### 开账触发与结果表达 + +- 触发前提:正式口径下可按抄表批次、指定客户范围或指定抄表任务范围组织生成;当前 backend 已落地的入口为按 `readingDataIds` 批量复核并开账,对应 `ChargeController.generateCheckChargeBatch`、`ChargeServiceImpl.generateCheckChargeBatch` 与 `ReadingDataServiceImpl.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_scheme`、`biz_water_use_scheme_tier`:计划用水方案与阶梯。 + +### 迁移补充(旧系统承接) + +#### 特殊开账 + +- 旧系统支持在非标准客户、无码客户或罚款类场景下直接开账。 +- 新系统仍以 `biz_charge`、`biz_charge_detail` 作为开账结果承载对象,不建议额外平行建设“特殊开账账表”。 +- 迁移与新建场景均需保留特殊开账来源、业务类型、经办人、依据说明、打印状态与后续收费关联,避免与普通抄表开账混淆。 + +#### 开账记录迁移 + +- 旧系统“开账记录”是历史查询与账务核对的核心入口,必须纳入迁移最小保留集。 +- 迁移后的开账记录应至少支持按站点、账务年月、册本、客户、抄表员、欠费状态查询,并支持统计水量、总金额及费用构成。 +- 对已收费、已作废、销户拆表、特殊开账等旧状态,不要求照搬旧表结构,但必须保留可对照的新状态映射关系。 + +### 接口映射 + +- `IF-REV-004`:抄表数据提交与异常标记。 +- `IF-REV-005`:账单生成与开账结果返回。 +- `IF-METER-004`:远传抄表数据接收后进入开账流程。 + +### 落地边界 + +- **已落地**:册本、抄表数据、上次抄表、抄表日志、营业账主明细、价格模板与阶梯规则。 +- **部分落地**:部分异常场景对象可能仍通过状态字段和日志表承载,而非全部拆成独立业务表。 +- **文档先行**:个别精细稽查、轨迹、下载同步对象当前未在本轮映射中确认为独立表。 + + + +## REV-003 营业收费 + +### 功能说明 + +支持柜台收费、预存款/余额抵扣、线上缴费回写、柜面扫码、营业网点收费及收费凭证管理,统一承接营收账单的核销处理。 + +### 业务流程 + + +```mermaid +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_charge`、`biz_charge_detail`:待缴与已缴账单主明细。 +- `biz_collection`:托收/代收主表。 +- `biz_withholding`:代扣/托收主表。 +- `bk_transaction`:渠道交易流水。 +- `bk_transaction_callback`:支付回调记录。 +- `bk_transaction_exception`:支付异常记录。 + +### 迁移补充(旧系统承接) + +#### 柜台结账 + +- 旧系统将“柜台收费”和“柜台结账”拆分为两个菜单,结账阶段包含未结/已结查询、结账红冲、追加抄表和打印动作。 +- 当前设计可继续采用统一收费核销模型,但必须补出“收费记录 → 班结结果 → 打印/红冲/查询”的业务闭环,避免柜面日终处理缺口。 +- 迁移时需保留结账时间、结账人、网点、收费汇总口径和结账后红冲痕迹,保证财务对账与审计连续。 + +#### 账单打印服务 + +- 旧系统存在账单打印、补打、打印次数控制与打印记录查询能力。 +- 新系统不要求单独建立打印主模块,但必须明确打印模板、补打权限、打印状态与打印留痕的承接关系。 +- 对历史账单迁移,应允许基于账单主明细和打印配置恢复打印视图,避免割接后只能查账不能补打。 + +#### 红冲记录 + +- 旧系统支持红冲记录查询、导出与明细展开,是收费差错追溯的重要入口。 +- 当前设计可将红冲视为收费核销后的修正场景,不强制要求独立实体表,但必须提供历史只读查询口径。 +- 红冲迁移最小保留信息应包括原收费记录、红冲时间、红冲金额、原因、经办人、关联账单和后续账务状态。 + +### 接口映射 + +- `IF-REV-006`:创建收费记录、执行账单核销并回写状态。 +- `IF-CS-003`、`IF-CS-007`:客户渠道与柜面扫码支付场景复用收费核销链路。 + +### 落地边界 + +- **已落地**:营业账主明细、交易流水、回调、异常、托收/代扣主对象。 +- **部分落地**:柜台班结、部分收费汇总类对象可能通过业务流程与报表实现,不一定存在独立表。 +- **文档先行**:部分红冲、实时收费汇总类台账暂不表述为已确认独立实体表。 + + + +## REV-004 账务处理 + +### 功能说明 + +REV-004 一期仅覆盖水量调整、金额调整、退款、冲正、坏账申请五类场景,统一挂靠 `IF-REV-007` 作为账务处理入口,目标是在既有正式文档体系内先收敛范围、承接口径、留痕要求与审批边界。 + +本阶段按“共性能力先统一、场景能力再分批”组织:先统一账单承接、原交易校验、结果表达、操作留痕与审批边界,再分别展开五类场景。违约金减免、分账调整、价差调整、跨周期水量、预存退款细表等内容仅作为旧系统迁移语义或后续扩展参考,不作为一期新增独立范围。 + +### 业务流程 + + +```mermaid +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_transaction`、`bk_transaction_callback`、`bk_transaction_exception` 等原支付流水及渠道状态校验,不允许仅依据账单状态直接处理。 +4. 接口结果统一返回 `resultStatus`、`writeBackStatus`,其中 `resultStatus` 表示处理结论,`writeBackStatus` 表示账单状态回写结论,两者不得混用。 +5. 审批相关内容一期仅保留 `approvalRequired`、`PENDING_APPROVAL` 与审批边界说明,不展开完整 BPM 流程、节点、流转规则或审批回写实现细节。 +6. 对于当前未见明确独立实体表的特账、跨周期水量、退款账等对象,文档以“业务处理场景”表述,不强行落为已实现表。 + +### 核心数据 + +- `biz_charge`、`biz_charge_detail`:账务调整的核心对象,承接调整前后账单主明细状态。 +- `bk_transaction`、`bk_transaction_callback`、`bk_transaction_exception`:退款、冲正场景的原交易校验与异常追溯对象。 +- 价格调整/优惠相关表:用于重算账单或差额追溯。 +- `biz_operat_log`、`biz_operat_log_detail`:操作与变更留痕,记录字段差异、处理说明、附件依据与责任归属。 + +### 主要场景 + +| 场景 | 说明 | 控制要点 | +|---|---|---| +| 水量调整 | 更正异常水量 | 需复核原因、附件和原抄表依据 | +| 金额调整 | 更正账单金额 | 需记录依据、差异金额和审批边界 | +| 退款 | 退回客户支付资金或预存款 | 需校验原交易、退款余额与幂等性 | +| 冲正 | 修正误收/误核销记录 | 需关联原交易与账单状态 | +| 坏账申请 | 对长期欠费进行分类处理 | 需结合账龄、客户状态与审批边界 | + +### 迁移补充(旧系统承接) + +| 旧账务对象 | 当前承接方式 | 迁移口径 | +|---|---|---| +| 预存退款 / 预存退款详情 | 作为账务处理场景承接 | 保留申请单、原支付引用、退款结果与审批留痕 | +| 已销调整汇总 / 明细 | 作为已收费后修正场景承接 | 保留原账单、调整原因、前后差异、处理结果 | +| 价差调整汇总 / 明细 | 作为重算与差额修正场景承接 | 保留原价格口径、新价格口径、差额和生效时间 | +| 分账调整汇总 / 明细 | 作为费用组成重分摊场景承接 | 保留原分摊结果、调整后结果、责任人和审批链 | +| 账单-违约金减免 | 作为滞纳金修正场景承接 | 保留减免原因、减免金额、审批结果和生效时间 | +| 账单-呆坏账 | 作为坏账申请与生效场景承接 | 保留账龄、申请原因、审批结果、核销状态 | + +1. P0 阶段不要求为每一类旧账务台账都新增独立实体表,但必须在业务对象和历史查询层形成可追溯闭环。 +2. 旧系统精细台账迁移后至少保留:原单据标识、原账单标识、处理类型、处理原因、处理前后金额/水量、申请/审批/生效时间、经办人与附件依据。 +3. 与支付、发票、渠道回调强关联的处理场景,必须保留与原交易、原发票、原收费记录的关联关系,避免后续对账和审计断链。 + +### 接口映射 + +- `IF-REV-007`:账务调整、退款、冲正、坏账等处理入口。 +- `IF-REV-006`:与收费核销状态联动,确保调账后账单状态一致。 + +### 落地边界 + +- **已落地**:营业账主明细、操作日志、价格/方案相关重算支撑。 +- **部分落地**:精细化账务对象更多表现为流程与场景,并未在 backend 中全部体现为独立表族。 +- **文档先行**:特账、退款账、跨周期水量等对象保留业务语义,不宣称为已实现独立表。 + + + +## REV-005 发票与税务处理 + +### 功能说明 + +负责发票业务闭环的业务接入与状态落账,覆盖后台发票申请、开票校验、`SYS-008` 异步协同、查询兜底、结果回写、账单关联、客户侧已开票电子发票查询/下载/推送,以及后台作废与红冲处理。 + +### 业务流程 + + +```mermaid +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` 状态流转,失败校验场景不进入外部协同。 +- 幂等控制以 `applicationNo` 或 `custId + 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_status`、`invoice_code`、`invoice_number`、`file_url` 外,还应同步刷新账单快照、账单关联状态与推送状态初值。 +- 账单关联以 `biz_invoice.charge_id` + `charge_ids_snapshot` 记录本次开票覆盖账单集合,并同步把对应 `biz_charge.invoice_state` 更新为“开票完成”,保留失败原因与开票时间,便于账单明细、收费记录和客户侧结果统一展示。 +- 客户侧查询仅允许按本人 `custId` 访问已存在的发票记录;可通过 `invoiceId`、`applicationNo` 或 `sysRequestNo` 定位,但都必须命中同一客户名下记录。 +- 客户侧下载与推送前必须校验发票状态为 `SUCCESS` 且 `fileUrl` 非空;不满足条件时仅返回不可下载/推送原因,不得伪造文件地址。 +- 推送动作应记录推送渠道、目标邮箱/手机号与结果状态;成功后更新 `pushStatus=PUSHED`,失败则写入 `FAIL` 并保留失败原因供人工处理。 + +### 核心数据 + +- `biz_invoice`:发票主记录。 +- `biz_invoice_taxrate`:税率配置。 +- `biz_cust_invoice`:客户开票信息。 + +### 迁移补充(旧系统承接) + +- 旧系统数据字典中存在“发票明细表、营业账开票表、开票配置表”等更细粒度对象。 +- 当前正式设计已明确主承接对象为 `biz_invoice`、`biz_invoice_taxrate`、`biz_cust_invoice`,但迁移时不能忽略旧开票明细和账单关联关系。 +- P0 阶段建议先补三类迁移口径:账单与发票的关联关系、发票申请与结果回写记录、开票配置与税率的有效期;未确认已落地的细表对象仍按“历史只读或辅助映射”处理。 + +### 接口映射 + +- `IF-REV-008`:后台发票申请接口,负责单笔/批量申请、幂等控制与受理号生成。 +- `IF-REV-009`:发票结果查询接口,负责后台按申请单号/受理号查询以及系统补偿查询。 +- `IF-CS-004`:客户侧电子发票消费接口,负责已开票结果查看、下载、推送。 +- `IF-EXT-007`:发票结果回写协同接口(由发票服务侧回传)。 + +### 落地边界 + +- **已落地**:发票主记录、税率配置、客户开票信息,以及一期正常开票闭环所需的后台申请、查询兜底、结果回写、账单关联与客户侧电子发票消费能力。 +- **部分落地**:发票修改、开票过程留痕在后端中已有相关对象,但整套发票明细/批次类对象尚未全部确认。 +- **二期补齐**:发票作废、红冲及其查询补偿仍由 `SYS-008` 统一承接,但当前轮次补齐后台触发入口、状态流转、结果回写与日志留痕,不再仅停留于文档预留。 +- **文档先行**:发票明细、营业账开票关系等对象仍按设计能力描述,不表述为本轮已确认独立表。 + + + +## REV-006 催缴与通知 + +### 功能说明 + +针对欠费账单按账龄、金额、客户类别等规则生成催缴任务,通过短信、微信、站内通知等方式触达客户,并回写催缴结果;本模块同时定义催缴与停复水/工单处置之间的联动边界与追溯关系,但不展开停复水内部处置流程。 + +### 业务流程 + + +```mermaid +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` 正式结果状态固定为 `PENDING`、`SUCCESS`、`FAIL`、`MANUAL_VERIFIED` 四态,其中 `MANUAL_VERIFIED` 仅用于外部结果未定或需人工核查补记的场景。 +5. 停复水在本模块中仅定义联动触发条件、处置引用与追溯关系,不展开停复水内部审批、派工或现场执行流程。 +6. 当前后端中部分催缴汇总、停水明细对象未确认独立落表,文档中保持保守描述,不误写为已确认在线主表。 + +#### 催缴对象筛选、排除与频控边界 + +- `IF-REV-013` 任务生成前必须完成候选筛选,筛选最小维度为:欠费状态、欠费金额、账龄分组、客户类别、渠道偏好和策略编码。 +- 候选对象必须以有效欠费账单为前提;以下场景不得进入正式催缴任务:已收费核销、已作废、已进入不允许催缴的处置流程、策略规则未命中。 +- 触发类型按 `triggerType` 区分自动与人工;自动用于批量触发,人工用于补发、核查和例外补记,不改变正式接口编号与状态语义。 +- 频控以“同客户/同策略/同渠道/同账期窗口”为最小拦截单元;命中频控时允许部分阻断,并返回被跳过对象及原因摘要。 + +### 核心数据 + +- `biz_charge`、`biz_charge_detail`:催缴对象来源。 +- 催缴结果与通知日志:通过业务状态与消息结果联动留痕。 + +#### 催缴对象与规则摘要 + +- `Reminder Candidate`:由欠费账单、客户类别、账龄分组、欠费金额、联系方式集合和命中策略编码组成,是催缴任务的输入对象。 +- `Reminder Strategy`:定义账龄规则、金额规则、客户类别规则、渠道优先级、重复触达拦截窗口和是否触发后续处置关注。 +- `Reminder Task`:一次正式催缴执行单元,至少包含 `taskNo`、`eventNo`、`strategyCode`、`channelType`、`triggerType`、`status` 和关联账单信息;正式业务接口编号固定为 `IF-REV-013`。 +- `Reminder Result`:承接 `IF-EXT-008` 回传结果后由业务侧映射的正式四态结果,最少记录 `status`、`lastCallbackTime`、`failReason` 与回传摘要。 +- `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_cust`、`biz_account`。 +- 抄表维度:`biz_meter_book`、`biz_reading_data`、`biz_last_reading`。 +- 账务与收费维度:`biz_charge`、`biz_charge_detail`。 +- 收费与交易维度:`biz_collection`、`bk_transaction`。 +- 渠道维度:`bk_transaction`、`bk_payment_channel`。 +- 组织与权限维度:`system_dept`、数据权限控制结果。 + +#### 统计主题与口径摘要 + +- `Statistics Theme`:按经营主题组织查询,至少覆盖营收、收费、欠费、客户、渠道、抄表完成率和必要的业务概览。 +- `Statistics Dimension`:按时间、账期、营业所/片区、客户类别、渠道、客户/账户、状态等条件筛选或分组。 +- `Statistics Indicator`:至少明确应收金额、实收金额、欠费余额、账单数、客户数、交易笔数、渠道占比、完成率等指标含义和单位。 +- `Aggregation Source`:统计结果以现有在线主数据聚合、视图或汇总口径承接,不反推为已存在独立统计表族。 + +### 接口映射 + +- `IF-REV-010`:营收、收费、欠费、渠道、客户等统计查询接口,承接主题查询、维度筛选、指标汇总和权限/导出边界。 + +### 落地边界 + +- **已落地**:主要统计源数据在客户、抄表、账单、收费、交易和渠道等领域均已具备,足以支撑经营统计口径设计。 +- **部分落地**:部分统计结果可能依赖聚合视图、汇总查询或报表层实现,当前未见明确的 backend 统计控制器或独立统计模型入口。 +- **文档先行**:预测类、专题分析类深度模型、BI 大屏和独立数仓能力暂不写成后端已实现能力。 + + + +## REV-008 代收与银行业务 + +### 功能说明 + +支持银行代收、银行代扣、实时收费、夜间批量扣款、对账与结算处理,是 SYS-002 面向 `SYS-009` 支付与银行结算能力的业务承接模块。 + +### 业务流程 + + +```mermaid +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/sendFilePath` 与 `backProtocol/backDir`,配置切换仅影响新发起文件动作,已落库批次继续沿用原解析结果。 + +### 核心数据 + +- `bk_payment_channel`:支付渠道。 +- `bk_channel_api_config`:渠道接口配置。 +- `bk_channel_route_rule`:渠道路由规则。 +- `bk_withholding_agreement`:代扣签约。 +- `bk_withholding_batch`、`bk_withholding_item`:代扣批次与明细。 +- `bk_reconcile_batch`、`bk_reconcile_diff`:对账批次与差异。 +- `bk_settlement_batch`:结算批次。 +- `bk_transaction`、`bk_transaction_callback`、`bk_transaction_exception`:交易、回调、异常。 +- `biz_collection`、`biz_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_settings`、`biz_page_settings_detail`:页面配置。 +- `biz_price_category`、`biz_price_template`、`biz_template_dept_rel`:价格归属与模板站点关系。 +- `biz_cust_no_rule`:客户编号规则。 + - `sys_wechat_app_settings`:微信/微网厅基础配置。 + +### 迁移补充(旧系统承接) + +- 旧系统后台存在“页面配置、业务字段、微信参数、打印维护”等运营配置入口。 +- 当前建议统一按业务参数、页面配置、渠道参数与打印参数归口承接,不新增“微客服后台配置”并行主文档。 +- 迁移时需明确三类配置映射:客户/业务办理字段展示与校验规则、微信/微网厅基础参数、打印模板与补打策略;未确认已实现的高级灰度能力继续按“文档先行”处理。 + +### 接口映射 + +- `IF-REV-012`:查询与维护价格模板、业务参数、页面参数配置。 +- `IF-UP-004`:统一平台参数字典能力协同,为营收域参数提供基础字典支撑。 + +### 落地边界 + +- **已落地**:业务参数、页面配置、价格归属与模板站点关系、客户编号规则等核心配置对象。 +- **部分落地**:部分打印模板、通知策略等参数由统一平台或外部渠道参数共同承载,营收域仅保留业务侧映射。 +- **文档先行**:参数灰度发布、多版本并行生效等高级治理能力当前仅保留设计语义,不宣称为独立实现模块。 diff --git a/output/13_CS_Detailed.docx b/output/13_CS_Detailed.docx new file mode 100644 index 0000000..178da0b Binary files /dev/null and b/output/13_CS_Detailed.docx differ diff --git a/output/13_CS_Detailed.html b/output/13_CS_Detailed.html new file mode 100644 index 0000000..5d3deba --- /dev/null +++ b/output/13_CS_Detailed.html @@ -0,0 +1,616 @@ + + + + + + + + 福建水务营收系统-客户服务模块正文 + + + + + +
+

福建水务营收系统-客户服务模块正文

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统详细设计-客户服务模块正文

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位

+

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

+

+

1.3 架构图模块对齐说明

+

整体架构图中,客户渠道相关模块同时使用了 CS-* 与 +WECHAT-* 两套编号:

+
    +
  • CS-* 用于 SYS-002 +营收业务子系统中的客户服务模块群表达;
  • +
  • WECHAT-* 用于 SYS-004 +微网厅子系统中的渠道形态表达。
  • +
+

当前详细设计采用“能力域优先”的承接方式,即以 CS-* +作为正式详细设计编号,将 WECHAT-* +视为渠道侧同源能力映射,不另建平行正式主稿。

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
架构图模块当前详设承接章节说明
WECHAT-001 账户绑定管理CS-001微网厅渠道形态映射到统一账户绑定能力
WECHAT-002 信息查询服务CS-002微网厅账单、发票、流水查询能力映射
WECHAT-003 在线缴费服务CS-003微网厅渠道缴费入口映射
WECHAT-004 电子发票服务CS-004微网厅电子发票查看/推送/下载映射
WECHAT-005 营业网点服务CS-005微网厅网点查询与预约引导映射
WECHAT-006 业务办理服务CS-006微网厅线上办理入口映射
WECHAT-007 账户流水CS-002当前并入信息查询服务,不单列平行正文
WECHAT-008 账号与机构管理CS-001当前并入账户绑定与账户切换能力
+

+

2 客户服务模块详细设计

+

+

2.1 客户服务模块统一约束

+
    +
  1. 客户服务模块负责渠道侧受理与展示,核心账务、发票、通知结果均由 +SYS-002 统一落账与回写。
  2. +
  3. 支付、发票、消息分别通过 +SYS-009SYS-008SYS-010 +协同完成,客户服务模块不直接承载外部平台业务规则。
  4. +
  5. 账户绑定、在线支付、发票申请、业务办理等关键动作必须进行身份校验与权限校验,禁止匿名高风险操作。
  6. +
  7. 支付与发票场景必须具备幂等控制,避免重复下单、重复开票、重复回写导致业务状态不一致。
  8. +
  9. 渠道请求、结果回写、人工补偿动作应保留可追溯日志,满足审计与争议处理要求。
  10. +
+

+

2.2 接口与数据追溯矩阵

+
+

说明:详细接口字段与报文以 +../03_Technical_Design/03_Interface_Design.md 为准。

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CS 模块关键接口核心数据域(摘要)主要协同对象
CS-001 账户绑定管理IF-CS-001biz_cust_app_bindsbiz_custbiz_account微信、支付宝、微网厅
CS-002 信息查询服务IF-CS-002biz_charge*biz_reading_databiz_invoice客户渠道、SYS-002
CS-003 在线缴费服务IF-CS-003biz_charge*biz_collectionbk_transaction*SYS-009
CS-004 电子发票服务IF-CS-004biz_invoice*biz_cust_invoiceSYS-008
CS-005 营业网点服务IF-CS-005biz_outletsbiz_business_types客户渠道
CS-006 业务办理服务IF-CS-006biz_process*biz_content_attach工单系统、SYS-010
CS-007 柜面扫码支付IF-CS-007biz_collectionbk_transaction*biz_charge营业厅、SYS-009
+

+

2.3 CS-001 账户绑定管理(对齐 +WECHAT-001 / WECHAT-008)

+

2.3.1 功能说明

+

面向微信、支付宝、微网厅等渠道实现客户账户绑定、解绑、默认账户设置、多账户切换与身份校验。

+

2.3.2 关键规则

+
    +
  1. 一个渠道账户可绑定多个用水账户。
  2. +
  3. 绑定、解绑、默认账户变更等敏感操作需进行身份校验。
  4. +
  5. 已销户、冻结或限制服务的账户不得新增绑定。
  6. +
+

2.3.3 核心数据

+
    +
  • biz_cust_app_binds
  • +
  • biz_cust
  • +
  • biz_account
  • +
+

2.3.4 接口映射

+
    +
  • IF-CS-001:渠道账户绑定、解绑、默认账户切换。
  • +
  • IF-REV-001:客户与账户信息查询,校验绑定对象合法性。
  • +
+

2.3.5 落地边界

+
    +
  • 已落地:渠道绑定关系、客户与账户主数据引用。
  • +
  • 部分落地:多渠道同账号合并策略依赖业务规则与运营配置共同控制。
  • +
  • 文档先行:跨渠道统一身份画像与复杂合并规则仅保留设计语义。
  • +
+

+

2.4 CS-002 信息查询服务(对齐 +WECHAT-002 / WECHAT-007)

+

2.4.1 功能说明

+

提供账单查询、缴费记录查询、用水分析、欠费查询、账户流水、历史账单等服务。

+

2.4.2 关键设计

+
    +
  1. 查询范围严格限制在已绑定客户与账户范围内。
  2. +
  3. 账单、缴费、发票、办理进度等数据通过 SYS-002 标准接口聚合展示。
  4. +
  5. 常用历史数据支持按最近周期快速查询。
  6. +
+

2.4.3 核心数据

+
    +
  • biz_cust
  • +
  • biz_account
  • +
  • biz_charge
  • +
  • biz_charge_detail
  • +
  • biz_invoice
  • +
+

2.4.4 接口映射

+
    +
  • IF-CS-002:账单、欠费、缴费、用水、发票等聚合查询。
  • +
  • IF-REV-001:客户基础信息查询与状态校验。
  • +
  • IF-REV-010:统计类查询场景复用营收统计接口能力。
  • +
+

2.4.5 落地边界

+
    +
  • 已落地:账单、缴费、发票、客户信息等基础查询链路。
  • +
  • 部分落地:部分专题分析更多依赖报表端,不在渠道侧单独建模。
  • +
  • 文档先行:个性化推荐与预测分析不作为当前已实现能力表述。
  • +
+

+

2.5 CS-003 在线缴费服务(对齐 +WECHAT-003)

+

2.5.1 功能说明

+

提供微信支付、支付宝支付、银行卡支付、预存款支付等在线缴费能力。

+

2.5.2 业务流程

+
flowchart TD
+    A[提交缴费请求] --> B[校验账单与应缴金额]
+    B --> C[创建业务订单]
+    C --> D[调用SYS-009下单]
+    D --> E[接收支付回调/查询结果]
+    E --> F[更新核销状态]
+    F --> G[返回缴费结果]
+
+

2.5.3 关键规则

+
    +
  1. 下单前再次校验账单未缴状态和应缴金额。
  2. +
  3. 支付结果以 SYS-009 回调/查询确认为准。
  4. +
  5. 对失败订单支持补单、查询与结果回写。
  6. +
+

2.5.4 核心数据

+
    +
  • biz_charge
  • +
  • biz_charge_detail
  • +
  • bk_transaction
  • +
  • bk_transaction_callback
  • +
+

2.5.5 接口映射

+
    +
  • IF-CS-003:客户渠道支付下单入口。
  • +
  • IF-EXT-004IF-EXT-005:支付下单协同与结果回写。
  • +
  • IF-REV-006:账单核销与收费状态更新。
  • +
+

2.5.6 落地边界

+
    +
  • 已落地:渠道下单、支付回调、账单核销主链路。
  • +
  • 部分落地:失败补偿策略部分由支付平台与人工复核协同处理。
  • +
  • 文档先行:复杂营销组合支付与分账能力暂不宣称为已实现。
  • +
+

+

2.6 CS-004 电子发票服务(对齐 +WECHAT-004)

+

2.6.1 功能说明

+

在客户渠道中提供电子发票申请、查询、下载以及缴费后发票推送能力。

+

2.6.2 关键设计

+
    +
  1. 电子发票开具能力经 SYS-008 统一提供。
  2. +
  3. 发票申请与客户开票信息、缴费记录和账单状态联动校验。
  4. +
  5. 发票结果支持下载、查看和渠道推送。
  6. +
+

2.6.3 核心数据

+
    +
  • biz_invoice
  • +
  • biz_cust_invoice
  • +
  • biz_invoice_taxrate
  • +
+

2.6.4 接口映射

+
    +
  • IF-CS-004:客户侧发票申请与状态查询。
  • +
  • IF-EXT-006IF-EXT-007:发票开具协同与结果回写。
  • +
  • IF-REV-008:营收侧发票主流程协同。
  • +
+

2.6.5 落地边界

+
    +
  • 已落地:发票申请、开票信息校验、开票结果回写。
  • +
  • 部分落地:红冲、补开等复杂票据后处理以发票服务能力为主。
  • +
  • 文档先行:多税率拆票、批量异步重试等高级策略仅保留设计语义。
  • +
+

+

2.7 CS-005 营业网点服务(对齐 +WECHAT-005)

+

2.7.1 功能说明

+

提供营业网点查询、服务范围查看、办事指引与营业时间展示能力。

+

2.7.2 关键设计

+
    +
  1. 网点信息展示地址、联系电话、营业时间与可办理业务范围。
  2. +
  3. 网点服务以查询与引导为主,不在本模块中虚构额外业务实体表。
  4. +
  5. 与 CS-006 业务办理服务协同,支持从网点查询跳转到线上办理。
  6. +
+

2.7.3 核心数据

+
    +
  • biz_outlets
  • +
  • biz_business_types
  • +
+

2.7.4 接口映射

+
    +
  • IF-CS-005:网点信息、可办事项、预约入口查询。
  • +
+

2.7.5 落地边界

+
    +
  • 已落地:网点查询与办事引导能力。
  • +
  • 部分落地:预约排队等能力可能由外部排队系统承载。
  • +
  • 文档先行:导航路线规划与实时客流预测仅保留扩展方向。
  • +
+

+

2.8 CS-006 业务办理服务(对齐 +WECHAT-006)

+

2.8.1 功能说明

+

提供更名、过户、联系方式变更、开票方式变更、一户多人口、自主抄表、换表申请等线上业务办理入口。

+

2.8.2 关键设计

+
    +
  1. 业务办理统一调用工单/流程能力,不与后台流程表重复建模。
  2. +
  3. 办理结果与客户资料、工单状态、报装或表务流程联动更新。
  4. +
  5. 触达通知通过 SYS-010 完成结果通知。
  6. +
+

2.8.3 核心数据

+
    +
  • biz_process
  • +
  • biz_process_transfer
  • +
  • biz_content_attach
  • +
+

2.8.4 接口映射

+
    +
  • IF-CS-006:办理申请提交、进度查询、补件上传。
  • +
  • IF-EXT-008:办理结果通知协同。
  • +
+

2.8.5 落地边界

+
    +
  • 已落地:办理申请、进度查询、补件与状态联动。
  • +
  • 部分落地:复杂跨部门并行审批流程依赖后端流程引擎配置。
  • +
  • 文档先行:智能预审与自动分单规则暂不表述为已实现能力。
  • +
+

+

2.9 CS-007 柜面扫码支付

+

2.9.1 功能说明

+

支持营业厅柜台二维码收款、票据关联、结果回传,是柜台收费场景对线上支付能力的补充入口。

+

2.9.2 业务流程

+
flowchart TD
+    A[柜面发起扫码收款] --> B[生成支付订单]
+    B --> C[客户扫码支付]
+    C --> D[接收支付结果回写]
+    D --> E[更新账单核销状态]
+    E --> F[打印或展示收费凭证]
+
+

2.9.3 关键设计

+
    +
  1. 柜面扫码支付与 REV-003 营业收费统一核销口径。
  2. +
  3. 支付结果与交易流水经 SYS-009 回传后更新收费状态。
  4. +
  5. 支持支付凭证、发票申请与收费记录联动。
  6. +
+

2.9.4 核心数据

+
    +
  • biz_charge
  • +
  • bk_transaction
  • +
  • bk_transaction_callback
  • +
+

2.9.5 接口映射

+
    +
  • IF-CS-007:柜面扫码支付订单创建与结果回写。
  • +
  • IF-EXT-004IF-EXT-005:支付渠道协同。
  • +
  • IF-REV-006:收费核销与账单状态更新。
  • +
+

2.9.6 落地边界

+
    +
  • 已落地:柜面扫码收款、支付回写、账单核销协同。
  • +
  • 部分落地:柜台班结与对账汇总由营收后台统一统计。
  • +
  • 文档先行:多终端并发收款冲突治理保留为后续优化方向。
  • +
+ + diff --git a/output/13_CS_Detailed.pdf b/output/13_CS_Detailed.pdf new file mode 100644 index 0000000..274e91c Binary files /dev/null and b/output/13_CS_Detailed.pdf differ diff --git a/output/13_CS_Detailed_processed.md b/output/13_CS_Detailed_processed.md new file mode 100644 index 0000000..a9300f5 --- /dev/null +++ b/output/13_CS_Detailed_processed.md @@ -0,0 +1,346 @@ +--- +title: "13_CS_Detailed" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-13-CS +doc_role: module_body +authority: secondary +scope: 详细设计-客户服务 +source_of_truth: false +last_reviewed: 2026-03-18 +retrieval_priority: P1 +--- + +# 福建水务营收系统详细设计-客户服务模块正文 + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [架构图模块对齐说明](#sec-cs-alignment) +- [客户服务详细设计正文](#sec-content) + - [客户服务模块统一约束](#sec-cs-rules) + - [接口与数据追溯矩阵](#sec-cs-trace) + - [CS-001 账户绑定管理](#mod-cs-001) + - [CS-002 信息查询服务](#mod-cs-002) + - [CS-003 在线缴费服务](#mod-cs-003) + - [CS-004 电子发票服务](#mod-cs-004) + - [CS-005 营业网点服务](#mod-cs-005) + - [CS-006 业务办理服务](#mod-cs-006) + - [CS-007 柜面扫码支付](#mod-cs-007) + + + +## 文档定位 + +本文档为 `01_Detailed_Design.md` 中“客户服务模块详细设计”章节的模块正文拆分稿,便于按模块独立维护。正式交付口径以主详设为准。 + + + +## 架构图模块对齐说明 + +整体架构图中,客户渠道相关模块同时使用了 `CS-*` 与 `WECHAT-*` 两套编号: + +- `CS-*` 用于 `SYS-002` 营收业务子系统中的客户服务模块群表达; +- `WECHAT-*` 用于 `SYS-004` 微网厅子系统中的渠道形态表达。 + +当前详细设计采用“能力域优先”的承接方式,即以 `CS-*` 作为正式详细设计编号,将 `WECHAT-*` 视为渠道侧同源能力映射,不另建平行正式主稿。 + +| 架构图模块 | 当前详设承接章节 | 说明 | +| --- | --- | --- | +| `WECHAT-001` 账户绑定管理 | `CS-001` | 微网厅渠道形态映射到统一账户绑定能力 | +| `WECHAT-002` 信息查询服务 | `CS-002` | 微网厅账单、发票、流水查询能力映射 | +| `WECHAT-003` 在线缴费服务 | `CS-003` | 微网厅渠道缴费入口映射 | +| `WECHAT-004` 电子发票服务 | `CS-004` | 微网厅电子发票查看/推送/下载映射 | +| `WECHAT-005` 营业网点服务 | `CS-005` | 微网厅网点查询与预约引导映射 | +| `WECHAT-006` 业务办理服务 | `CS-006` | 微网厅线上办理入口映射 | +| `WECHAT-007` 账户流水 | `CS-002` | 当前并入信息查询服务,不单列平行正文 | +| `WECHAT-008` 账号与机构管理 | `CS-001` | 当前并入账户绑定与账户切换能力 | + + + +# 客户服务模块详细设计 + + + +## 客户服务模块统一约束 + +1. 客户服务模块负责渠道侧受理与展示,核心账务、发票、通知结果均由 `SYS-002` 统一落账与回写。 +2. 支付、发票、消息分别通过 `SYS-009`、`SYS-008`、`SYS-010` 协同完成,客户服务模块不直接承载外部平台业务规则。 +3. 账户绑定、在线支付、发票申请、业务办理等关键动作必须进行身份校验与权限校验,禁止匿名高风险操作。 +4. 支付与发票场景必须具备幂等控制,避免重复下单、重复开票、重复回写导致业务状态不一致。 +5. 渠道请求、结果回写、人工补偿动作应保留可追溯日志,满足审计与争议处理要求。 + + + +## 接口与数据追溯矩阵 + +> 说明:详细接口字段与报文以 `../03_Technical_Design/03_Interface_Design.md` 为准。 + +| CS 模块 | 关键接口 | 核心数据域(摘要) | 主要协同对象 | +|---|---|---|---| +| CS-001 账户绑定管理 | `IF-CS-001` | `biz_cust_app_binds`、`biz_cust`、`biz_account` | 微信、支付宝、微网厅 | +| CS-002 信息查询服务 | `IF-CS-002` | `biz_charge*`、`biz_reading_data`、`biz_invoice` | 客户渠道、`SYS-002` | +| CS-003 在线缴费服务 | `IF-CS-003` | `biz_charge*`、`biz_collection`、`bk_transaction*` | `SYS-009` | +| CS-004 电子发票服务 | `IF-CS-004` | `biz_invoice*`、`biz_cust_invoice` | `SYS-008` | +| CS-005 营业网点服务 | `IF-CS-005` | `biz_outlets`、`biz_business_types` | 客户渠道 | +| CS-006 业务办理服务 | `IF-CS-006` | `biz_process*`、`biz_content_attach` | 工单系统、`SYS-010` | +| CS-007 柜面扫码支付 | `IF-CS-007` | `biz_collection`、`bk_transaction*`、`biz_charge` | 营业厅、`SYS-009` | + + + +## CS-001 账户绑定管理(对齐 WECHAT-001 / WECHAT-008) + +### 功能说明 + +面向微信、支付宝、微网厅等渠道实现客户账户绑定、解绑、默认账户设置、多账户切换与身份校验。 + +### 关键规则 + +1. 一个渠道账户可绑定多个用水账户。 +2. 绑定、解绑、默认账户变更等敏感操作需进行身份校验。 +3. 已销户、冻结或限制服务的账户不得新增绑定。 + +### 核心数据 + +- `biz_cust_app_binds` +- `biz_cust` +- `biz_account` + +### 接口映射 + +- `IF-CS-001`:渠道账户绑定、解绑、默认账户切换。 +- `IF-REV-001`:客户与账户信息查询,校验绑定对象合法性。 + +### 落地边界 + +- **已落地**:渠道绑定关系、客户与账户主数据引用。 +- **部分落地**:多渠道同账号合并策略依赖业务规则与运营配置共同控制。 +- **文档先行**:跨渠道统一身份画像与复杂合并规则仅保留设计语义。 + + + +## CS-002 信息查询服务(对齐 WECHAT-002 / WECHAT-007) + +### 功能说明 + +提供账单查询、缴费记录查询、用水分析、欠费查询、账户流水、历史账单等服务。 + +### 关键设计 + +1. 查询范围严格限制在已绑定客户与账户范围内。 +2. 账单、缴费、发票、办理进度等数据通过 SYS-002 标准接口聚合展示。 +3. 常用历史数据支持按最近周期快速查询。 + +### 核心数据 + +- `biz_cust` +- `biz_account` +- `biz_charge` +- `biz_charge_detail` +- `biz_invoice` + +### 接口映射 + +- `IF-CS-002`:账单、欠费、缴费、用水、发票等聚合查询。 +- `IF-REV-001`:客户基础信息查询与状态校验。 +- `IF-REV-010`:统计类查询场景复用营收统计接口能力。 + +### 落地边界 + +- **已落地**:账单、缴费、发票、客户信息等基础查询链路。 +- **部分落地**:部分专题分析更多依赖报表端,不在渠道侧单独建模。 +- **文档先行**:个性化推荐与预测分析不作为当前已实现能力表述。 + + + +## CS-003 在线缴费服务(对齐 WECHAT-003) + +### 功能说明 + +提供微信支付、支付宝支付、银行卡支付、预存款支付等在线缴费能力。 + +### 业务流程 + + +```mermaid +flowchart TD + A[提交缴费请求] --> B[校验账单与应缴金额] + B --> C[创建业务订单] + C --> D[调用SYS-009下单] + D --> E[接收支付回调/查询结果] + E --> F[更新核销状态] + F --> G[返回缴费结果] + +``` + + +### 关键规则 + +1. 下单前再次校验账单未缴状态和应缴金额。 +2. 支付结果以 `SYS-009` 回调/查询确认为准。 +3. 对失败订单支持补单、查询与结果回写。 + +### 核心数据 + +- `biz_charge` +- `biz_charge_detail` +- `bk_transaction` +- `bk_transaction_callback` + +### 接口映射 + +- `IF-CS-003`:客户渠道支付下单入口。 +- `IF-EXT-004`、`IF-EXT-005`:支付下单协同与结果回写。 +- `IF-REV-006`:账单核销与收费状态更新。 + +### 落地边界 + +- **已落地**:渠道下单、支付回调、账单核销主链路。 +- **部分落地**:失败补偿策略部分由支付平台与人工复核协同处理。 +- **文档先行**:复杂营销组合支付与分账能力暂不宣称为已实现。 + + + +## CS-004 电子发票服务(对齐 WECHAT-004) + +### 功能说明 + +在客户渠道中提供电子发票申请、查询、下载以及缴费后发票推送能力。 + +### 关键设计 + +1. 电子发票开具能力经 `SYS-008` 统一提供。 +2. 发票申请与客户开票信息、缴费记录和账单状态联动校验。 +3. 发票结果支持下载、查看和渠道推送。 + +### 核心数据 + +- `biz_invoice` +- `biz_cust_invoice` +- `biz_invoice_taxrate` + +### 接口映射 + +- `IF-CS-004`:客户侧发票申请与状态查询。 +- `IF-EXT-006`、`IF-EXT-007`:发票开具协同与结果回写。 +- `IF-REV-008`:营收侧发票主流程协同。 + +### 落地边界 + +- **已落地**:发票申请、开票信息校验、开票结果回写。 +- **部分落地**:红冲、补开等复杂票据后处理以发票服务能力为主。 +- **文档先行**:多税率拆票、批量异步重试等高级策略仅保留设计语义。 + + + +## CS-005 营业网点服务(对齐 WECHAT-005) + +### 功能说明 + +提供营业网点查询、服务范围查看、办事指引与营业时间展示能力。 + +### 关键设计 + +1. 网点信息展示地址、联系电话、营业时间与可办理业务范围。 +2. 网点服务以查询与引导为主,不在本模块中虚构额外业务实体表。 +3. 与 CS-006 业务办理服务协同,支持从网点查询跳转到线上办理。 + +### 核心数据 + +- `biz_outlets` +- `biz_business_types` + +### 接口映射 + +- `IF-CS-005`:网点信息、可办事项、预约入口查询。 + +### 落地边界 + +- **已落地**:网点查询与办事引导能力。 +- **部分落地**:预约排队等能力可能由外部排队系统承载。 +- **文档先行**:导航路线规划与实时客流预测仅保留扩展方向。 + + + +## CS-006 业务办理服务(对齐 WECHAT-006) + +### 功能说明 + +提供更名、过户、联系方式变更、开票方式变更、一户多人口、自主抄表、换表申请等线上业务办理入口。 + +### 关键设计 + +1. 业务办理统一调用工单/流程能力,不与后台流程表重复建模。 +2. 办理结果与客户资料、工单状态、报装或表务流程联动更新。 +3. 触达通知通过 `SYS-010` 完成结果通知。 + +### 核心数据 + +- `biz_process` +- `biz_process_transfer` +- `biz_content_attach` + +### 接口映射 + +- `IF-CS-006`:办理申请提交、进度查询、补件上传。 +- `IF-EXT-008`:办理结果通知协同。 + +### 落地边界 + +- **已落地**:办理申请、进度查询、补件与状态联动。 +- **部分落地**:复杂跨部门并行审批流程依赖后端流程引擎配置。 +- **文档先行**:智能预审与自动分单规则暂不表述为已实现能力。 + + + +## CS-007 柜面扫码支付 + +### 功能说明 + +支持营业厅柜台二维码收款、票据关联、结果回传,是柜台收费场景对线上支付能力的补充入口。 + +### 业务流程 + + +```mermaid +flowchart TD + A[柜面发起扫码收款] --> B[生成支付订单] + B --> C[客户扫码支付] + C --> D[接收支付结果回写] + D --> E[更新账单核销状态] + E --> F[打印或展示收费凭证] + +``` + + +### 关键设计 + +1. 柜面扫码支付与 REV-003 营业收费统一核销口径。 +2. 支付结果与交易流水经 `SYS-009` 回传后更新收费状态。 +3. 支持支付凭证、发票申请与收费记录联动。 + +### 核心数据 + +- `biz_charge` +- `bk_transaction` +- `bk_transaction_callback` + +### 接口映射 + +- `IF-CS-007`:柜面扫码支付订单创建与结果回写。 +- `IF-EXT-004`、`IF-EXT-005`:支付渠道协同。 +- `IF-REV-006`:收费核销与账单状态更新。 + +### 落地边界 + +- **已落地**:柜面扫码收款、支付回写、账单核销协同。 +- **部分落地**:柜台班结与对账汇总由营收后台统一统计。 +- **文档先行**:多终端并发收款冲突治理保留为后续优化方向。 diff --git a/output/14_METER_Detailed.docx b/output/14_METER_Detailed.docx new file mode 100644 index 0000000..11b10c8 Binary files /dev/null and b/output/14_METER_Detailed.docx differ diff --git a/output/14_METER_Detailed.html b/output/14_METER_Detailed.html new file mode 100644 index 0000000..d2b1e99 --- /dev/null +++ b/output/14_METER_Detailed.html @@ -0,0 +1,381 @@ + + + + + + + + 福建水务营收系统-表务模块正文 + + + + + +
+

福建水务营收系统-表务模块正文

+

系统设计团队

+

2024年12月19日

+
+ +

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

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位

+

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

+

+

2 表务详细设计

+

+

2.1 表务模块统一约束

+
    +
  1. 表务模块负责水表档案、状态、库存、工单与物联网接入,账单生成仍归属 +SYS-002 营收主流程。
  2. +
  3. 水表状态变更必须通过表务工单、出入库动作或报装装表流程驱动,不允许绕过业务过程直接改写生命周期状态。
  4. +
  5. 换表、移表、拆表、复装完成后,必须同步客户绑定关系、安装位置和最新表计状态,避免档案与现场状态不一致。
  6. +
  7. 库存、出入库、报废等动作必须具备批次追溯与操作留痕,满足审计与责任界定要求。
  8. +
  9. 远传抄表与设备告警数据进入 SYS-002 +后,必须先完成校验和异常判断,再进入抄表开账链路。
  10. +
+

+

2.2 接口与数据追溯矩阵

+
+

说明:接口字段以 +../03_Technical_Design/03_Interface_Design.md +为准,数据库口径以 +../03_Technical_Design/01_Database_Design.md 为准。

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
METER 模块关键接口核心数据域(摘要)主要协同对象
METER-001 表务基础管理IF-METER-001biz_meterbiz_meter_modelbiz_meter_caliberbiz_meter_range营收、报装
METER-002 仓库与库存管理IF-METER-003biz_meter_in_outbiz_meter_in_out_relbiz_meter仓储管理端
METER-003 设备档案管理IF-METER-001IF-METER-002IF-METER-004biz_meterbiz_meter_logbiz_process*biz_meter_readbiz_reading_databiz_last_reading工单系统、移动作业、IoT 平台、营收开账
+

+

2.3 METER-001 表务基础管理

+

2.3.1 功能说明

+

管理水表档案、厂家、型号、口径、量程、检定证书、安装位置、当前状态等基础信息。

+

2.3.2 关键设计

+
    +
  • 一块水表对应唯一档案主记录。
  • +
  • 设备状态覆盖在库、在用、待检、故障、报废等。
  • +
  • 与客户、水表工单、抄表记录形成关联闭环。
  • +
+

2.3.3 核心数据

+
    +
  • biz_meter:水表主档。
  • +
  • biz_meter_model:水表型号。
  • +
  • biz_meter_caliber:水表口径。
  • +
  • biz_meter_range:水表量程。
  • +
  • biz_last_reading:最近有效读数状态。
  • +
+

2.3.4 接口映射

+
    +
  • IF-METER-001:查询水表档案、状态与生命周期信息。
  • +
  • IF-REV-001:客户侧查询场景复用表计关联信息。
  • +
+

2.3.5 落地边界

+
    +
  • 已落地:水表主档、型号、口径、量程、状态等基础档案对象。
  • +
  • 部分落地:证书、检定批次、厂家深度评价等附属对象可能由扩展字段或附件承载。
  • +
  • 文档先行:复杂设备健康评分与预测性维护不作为当前已实现能力表述。
  • +
+

+

2.4 METER-002 仓库与库存管理

+

2.4.1 功能说明

+

管理新表入库、领用、出库、退库、报废及库存预警,是架构图中“仓库与库存管理”模块的正式承接章节。

+

2.4.2 关键设计

+
    +
  1. 库存动作以批次和明细双层结构记录,支持领用、退库、报废等全过程追溯。
  2. +
  3. 库存状态与设备生命周期联动更新,避免“账上在库、现场在用”不一致。
  4. +
  5. 报废、退库等高风险动作需保留审批或责任人留痕。
  6. +
+

2.4.3 核心数据

+
    +
  • biz_meter_in_out:出入库主表。
  • +
  • biz_meter_in_out_rel:出入库明细关系。
  • +
  • biz_meter_log:库存与生命周期动作留痕。
  • +
  • biz_meter:生命周期状态主对象。
  • +
+

2.4.4 接口映射

+
    +
  • IF-METER-003:领用、退库、报废等库存动作处理。
  • +
+

2.4.5 落地边界

+
    +
  • 已落地:出入库主明细、库存状态回写、动作留痕。
  • +
  • 部分落地:仓位优化、库龄分析等能力可能通过报表层实现,而非独立业务对象。
  • +
  • 文档先行:自动补货策略与仓网优化仅保留设计方向。
  • +
+

+

2.5 METER-003 设备档案管理

+

2.5.1 功能说明

+

管理水表唯一电子档案、状态流转、安装历史、质检追溯,并统一承接表务工单和物联网同步相关能力。

+

2.5.2 关键设计

+
    +
  1. 一块水表对应唯一档案主记录,覆盖在库、在用、待检、故障、报废等状态。
  2. +
  3. 设备档案同时关联安装历史、维修记录、库存动作与最近有效读数,形成全生命周期追溯闭环。
  4. +
  5. 表务工单和远传同步能力属于设备档案管理下的实施态支撑能力,不再作为独立模块编号表达。
  6. +
+

2.5.3 核心数据

+
    +
  • biz_meter:水表主档与状态主对象。
  • +
  • biz_meter_log:设备过程留痕与工单回写对象。
  • +
  • biz_processbiz_process_transfer:表务工单流程主线。
  • +
  • biz_meter_readbiz_reading_databiz_last_reading:读数、状态与同步对象。
  • +
+

2.5.4 接口映射

+
    +
  • IF-METER-001:查询水表档案、状态与生命周期信息。
  • +
  • IF-METER-002:换表、移表、校表、维修等处理结果提交。
  • +
  • IF-METER-004:远传抄表、告警与状态同步接收。
  • +
+

2.5.5 落地边界

+
    +
  • 已落地:设备主档、状态流转、工单留痕、远传同步与异常标记能力。
  • +
  • 部分落地:质检批次、厂家评价、复杂设备健康评分等附属对象可能由扩展字段、附件或报表层承接。
  • +
  • 文档先行:预测性维护和实时控制指令不作为当前正式实现口径。
  • +
+

+

2.5.6 物联网接入与数据同步能力

+

2.5.7 功能说明

+

接入集抄系统、智能表平台及厂家物联网平台,实现远程抄表、状态查询、设备参数同步与异常告警。

+

2.5.8 业务流程

+
flowchart TD
+    A[定时采集任务] --> B[发送采集请求]
+    B --> C[物联网平台返回数据]
+    C --> D[数据校验]
+    D --> E{是否有效}
+    E -->|有效| F[写入抄表记录]
+    E -->|无效| G[异常标记并告警]
+    F --> H[参与开账]
+    G --> I[人工复核处理]
+
+

2.5.9 关键规则

+
    +
  1. 远传抄表结果必须校验设备标识、采集时间、读数合法性和重复上送情况。
  2. +
  3. 异常读数、离线状态、设备告警需区分业务异常与设备异常两类处理。
  4. +
  5. 校验通过的有效读数进入抄表开账链路,异常结果需保留人工复核入口。
  6. +
+

2.5.10 核心数据

+
    +
  • biz_meter_read:抄表任务或状态承接对象。
  • +
  • biz_reading_data:远传读数数据。
  • +
  • biz_last_reading:最新有效读数。
  • +
  • biz_meter:设备状态与参数关联对象。
  • +
+

2.5.11 接口映射

+
    +
  • IF-METER-004:远传抄表、告警与状态同步接收。
  • +
  • IF-EXT-009:IoT/集抄平台数据接入协同。
  • +
  • IF-REV-004IF-REV-005:校验通过后进入抄表提交与开账流程。
  • +
+

2.5.12 落地边界

+
    +
  • 已落地:远传数据接入、基础校验、异常标记与读数同步。
  • +
  • 部分落地:复杂设备诊断与厂家私有协议适配更多由外部 +IoT 平台承载。
  • +
  • 文档先行:边缘计算、实时控制指令等能力不作为当前正式实现口径。
  • +
+

+

2.5.13 表务工单协同能力

+

处理换表、移表、拆表、复装、校表、稽查、维修等表务工单,是 +METER-003 设备档案管理的实施态过程能力。

+

2.5.13.1 业务流程

+
flowchart TD
+    A[创建表务工单] --> B[派发现场任务]
+    B --> C[现场处理并采集结果]
+    C --> D[回写旧表/新表信息]
+    D --> E[更新水表状态与客户绑定]
+    E --> F[写入过程日志与附件]
+    F --> G[工单办结]
+
+

2.5.13.2 关键规则

+
    +
  1. 工单类型决定必填字段、处理流程和附件要求。
  2. +
  3. 换表工单需同时记录旧表拆除信息与新表安装信息。
  4. +
  5. 工单完成后同步更新设备档案、客户绑定关系与安装历史。
  6. +
+ + diff --git a/output/14_METER_Detailed.pdf b/output/14_METER_Detailed.pdf new file mode 100644 index 0000000..2579e32 Binary files /dev/null and b/output/14_METER_Detailed.pdf differ diff --git a/output/14_METER_Detailed_processed.md b/output/14_METER_Detailed_processed.md new file mode 100644 index 0000000..504b3bf --- /dev/null +++ b/output/14_METER_Detailed_processed.md @@ -0,0 +1,238 @@ +--- +title: "14_METER_Detailed" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-14-METER +doc_role: module_body +authority: secondary +scope: 详细设计-表务管理 +source_of_truth: false +last_reviewed: 2026-03-18 +retrieval_priority: P1 +--- + +# 福建水务营收系统详细设计-表务模块正文 + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [表务详细设计正文](#sec-content) + - [表务模块统一约束](#sec-meter-rules) + - [接口与数据追溯矩阵](#sec-meter-trace) + - [METER-001 表务基础管理](#mod-meter-001) + - [METER-002 仓库与库存管理](#mod-meter-002) + - [METER-003 设备档案管理](#mod-meter-003) + + + +## 文档定位 + +本文档为 `01_Detailed_Design.md` 中“表务详细设计”章节的模块正文拆分稿,便于按模块独立维护。正式交付口径以主详设为准。 + + + +# 表务详细设计 + + + +## 表务模块统一约束 + +1. 表务模块负责水表档案、状态、库存、工单与物联网接入,账单生成仍归属 `SYS-002` 营收主流程。 +2. 水表状态变更必须通过表务工单、出入库动作或报装装表流程驱动,不允许绕过业务过程直接改写生命周期状态。 +3. 换表、移表、拆表、复装完成后,必须同步客户绑定关系、安装位置和最新表计状态,避免档案与现场状态不一致。 +4. 库存、出入库、报废等动作必须具备批次追溯与操作留痕,满足审计与责任界定要求。 +5. 远传抄表与设备告警数据进入 `SYS-002` 后,必须先完成校验和异常判断,再进入抄表开账链路。 + + + +## 接口与数据追溯矩阵 + +> 说明:接口字段以 `../03_Technical_Design/03_Interface_Design.md` 为准,数据库口径以 `../03_Technical_Design/01_Database_Design.md` 为准。 + +| METER 模块 | 关键接口 | 核心数据域(摘要) | 主要协同对象 | +|---|---|---|---| +| METER-001 表务基础管理 | `IF-METER-001` | `biz_meter`、`biz_meter_model`、`biz_meter_caliber`、`biz_meter_range` | 营收、报装 | +| METER-002 仓库与库存管理 | `IF-METER-003` | `biz_meter_in_out`、`biz_meter_in_out_rel`、`biz_meter` | 仓储管理端 | +| METER-003 设备档案管理 | `IF-METER-001`、`IF-METER-002`、`IF-METER-004` | `biz_meter`、`biz_meter_log`、`biz_process*`、`biz_meter_read`、`biz_reading_data`、`biz_last_reading` | 工单系统、移动作业、IoT 平台、营收开账 | + + + +## METER-001 表务基础管理 + +### 功能说明 + +管理水表档案、厂家、型号、口径、量程、检定证书、安装位置、当前状态等基础信息。 + +### 关键设计 + +- 一块水表对应唯一档案主记录。 +- 设备状态覆盖在库、在用、待检、故障、报废等。 +- 与客户、水表工单、抄表记录形成关联闭环。 + +### 核心数据 + +- `biz_meter`:水表主档。 +- `biz_meter_model`:水表型号。 +- `biz_meter_caliber`:水表口径。 +- `biz_meter_range`:水表量程。 +- `biz_last_reading`:最近有效读数状态。 + +### 接口映射 + +- `IF-METER-001`:查询水表档案、状态与生命周期信息。 +- `IF-REV-001`:客户侧查询场景复用表计关联信息。 + +### 落地边界 + +- **已落地**:水表主档、型号、口径、量程、状态等基础档案对象。 +- **部分落地**:证书、检定批次、厂家深度评价等附属对象可能由扩展字段或附件承载。 +- **文档先行**:复杂设备健康评分与预测性维护不作为当前已实现能力表述。 + + + +## METER-002 仓库与库存管理 + +### 功能说明 + +管理新表入库、领用、出库、退库、报废及库存预警,是架构图中“仓库与库存管理”模块的正式承接章节。 + +### 关键设计 + +1. 库存动作以批次和明细双层结构记录,支持领用、退库、报废等全过程追溯。 +2. 库存状态与设备生命周期联动更新,避免“账上在库、现场在用”不一致。 +3. 报废、退库等高风险动作需保留审批或责任人留痕。 + +### 核心数据 + +- `biz_meter_in_out`:出入库主表。 +- `biz_meter_in_out_rel`:出入库明细关系。 +- `biz_meter_log`:库存与生命周期动作留痕。 +- `biz_meter`:生命周期状态主对象。 + +### 接口映射 + +- `IF-METER-003`:领用、退库、报废等库存动作处理。 + +### 落地边界 + +- **已落地**:出入库主明细、库存状态回写、动作留痕。 +- **部分落地**:仓位优化、库龄分析等能力可能通过报表层实现,而非独立业务对象。 +- **文档先行**:自动补货策略与仓网优化仅保留设计方向。 + + + +## METER-003 设备档案管理 + +### 功能说明 + +管理水表唯一电子档案、状态流转、安装历史、质检追溯,并统一承接表务工单和物联网同步相关能力。 + +### 关键设计 + +1. 一块水表对应唯一档案主记录,覆盖在库、在用、待检、故障、报废等状态。 +2. 设备档案同时关联安装历史、维修记录、库存动作与最近有效读数,形成全生命周期追溯闭环。 +3. 表务工单和远传同步能力属于设备档案管理下的实施态支撑能力,不再作为独立模块编号表达。 + +### 核心数据 + +- `biz_meter`:水表主档与状态主对象。 +- `biz_meter_log`:设备过程留痕与工单回写对象。 +- `biz_process`、`biz_process_transfer`:表务工单流程主线。 +- `biz_meter_read`、`biz_reading_data`、`biz_last_reading`:读数、状态与同步对象。 + +### 接口映射 + +- `IF-METER-001`:查询水表档案、状态与生命周期信息。 +- `IF-METER-002`:换表、移表、校表、维修等处理结果提交。 +- `IF-METER-004`:远传抄表、告警与状态同步接收。 + +### 落地边界 + +- **已落地**:设备主档、状态流转、工单留痕、远传同步与异常标记能力。 +- **部分落地**:质检批次、厂家评价、复杂设备健康评分等附属对象可能由扩展字段、附件或报表层承接。 +- **文档先行**:预测性维护和实时控制指令不作为当前正式实现口径。 + + + +### 物联网接入与数据同步能力 + +### 功能说明 + +接入集抄系统、智能表平台及厂家物联网平台,实现远程抄表、状态查询、设备参数同步与异常告警。 + +### 业务流程 + + +```mermaid +flowchart TD + A[定时采集任务] --> B[发送采集请求] + B --> C[物联网平台返回数据] + C --> D[数据校验] + D --> E{是否有效} + E -->|有效| F[写入抄表记录] + E -->|无效| G[异常标记并告警] + F --> H[参与开账] + G --> I[人工复核处理] + +``` + + +### 关键规则 + +1. 远传抄表结果必须校验设备标识、采集时间、读数合法性和重复上送情况。 +2. 异常读数、离线状态、设备告警需区分业务异常与设备异常两类处理。 +3. 校验通过的有效读数进入抄表开账链路,异常结果需保留人工复核入口。 + +### 核心数据 + +- `biz_meter_read`:抄表任务或状态承接对象。 +- `biz_reading_data`:远传读数数据。 +- `biz_last_reading`:最新有效读数。 +- `biz_meter`:设备状态与参数关联对象。 + +### 接口映射 + +- `IF-METER-004`:远传抄表、告警与状态同步接收。 +- `IF-EXT-009`:IoT/集抄平台数据接入协同。 +- `IF-REV-004`、`IF-REV-005`:校验通过后进入抄表提交与开账流程。 + +### 落地边界 + +- **已落地**:远传数据接入、基础校验、异常标记与读数同步。 +- **部分落地**:复杂设备诊断与厂家私有协议适配更多由外部 IoT 平台承载。 +- **文档先行**:边缘计算、实时控制指令等能力不作为当前正式实现口径。 + + + +### 表务工单协同能力 + +处理换表、移表、拆表、复装、校表、稽查、维修等表务工单,是 `METER-003` 设备档案管理的实施态过程能力。 + +#### 业务流程 + + +```mermaid +flowchart TD + A[创建表务工单] --> B[派发现场任务] + B --> C[现场处理并采集结果] + C --> D[回写旧表/新表信息] + D --> E[更新水表状态与客户绑定] + E --> F[写入过程日志与附件] + F --> G[工单办结] + +``` + + +#### 关键规则 + +1. 工单类型决定必填字段、处理流程和附件要求。 +2. 换表工单需同时记录旧表拆除信息与新表安装信息。 +3. 工单完成后同步更新设备档案、客户绑定关系与安装历史。 diff --git a/output/15_INST_Detailed.docx b/output/15_INST_Detailed.docx new file mode 100644 index 0000000..a742f48 Binary files /dev/null and b/output/15_INST_Detailed.docx differ diff --git a/output/15_INST_Detailed.html b/output/15_INST_Detailed.html new file mode 100644 index 0000000..b3ccc80 --- /dev/null +++ b/output/15_INST_Detailed.html @@ -0,0 +1,495 @@ + + + + + + + + 福建水务营收系统-报装与签章模块正文 + + + + + +
+

福建水务营收系统-报装与签章模块正文

+

系统设计团队

+

2024年12月19日

+
+ +

1 +福建水务营收系统详细设计-报装与签章模块正文

+

1.1 章节导航(精简)

+ +

+

1.2 文档定位

+

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

+

+

2 报装与签章详细设计

+

+

2.1 报装模块统一约束

+
    +
  1. 报装模块承担 SYS-002 +中“申请受理、踏勘方案、施工验收、立户通水、合同签章、档案归档”的完整主流程,流程主线以 +biz_process*biz_content* +为当前实现态口径。
  2. +
  3. 报装申请、踏勘结果、验收结果、签章回执、归档动作均必须通过流程节点驱动,不允许直接绕过业务过程修改主状态。
  4. +
  5. 施工验收通过后,方可进入客户建档、水表绑定、账户初始化与通水确认,避免前后置业务状态错位。
  6. +
  7. 电子签章专题表 installation_* +当前为“专题扩展口径”,若实施库结构与专题设计不一致,以实施库与主详设联合评审结果为准。
  8. +
  9. 报装过程中的申请材料、验收附件、签章文件、存证回执必须统一归档并具备可检索、可追溯能力。
  10. +
+

+

2.2 接口与数据追溯矩阵

+
+

说明:接口字段以 +../03_Technical_Design/03_Interface_Design.md +为准,数据库口径以 +../03_Technical_Design/01_Database_Design.md 为准。

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INST 模块关键接口核心数据域(摘要)主要协同对象
INST-001 报装流程管理IF-INST-001IF-INST-002biz_processbiz_contentbiz_content_attachbiz_process_transferbiz_business_datas柜台、微网厅、政务平台、报装人员
INST-002 工程管理IF-INST-003IF-INST-004IF-INST-005biz_process_meter_installbiz_processbiz_meterinstallation_contractinstallation_signatureinstallation_evidence表务、客户建档、泛微 CA
INST-003 档案管理IF-INST-005biz_content_attachinstallation_evidence、过程日志报装、档案管理
+

+

2.3 INST-001 报装流程管理

+

2.3.1 功能说明

+

承接新装、改造、一户一表等业务从申请受理到现场踏勘、方案编制的前半段主流程,是架构图中“报装流程管理”模块的正式承接章节。

+

2.3.2 业务流程

+
flowchart TD
+    A[提交报装申请] --> B[采集申请信息与附件]
+    B --> C[受理校验]
+    C --> D{是否通过}
+    D -->|否| E[退回补充资料]
+    D -->|是| F[生成报装编号]
+    F --> G[创建流程实例]
+    G --> H[进入踏勘环节]
+
+

2.3.3 关键设计

+
    +
  • 统一采集申请人、地址、产权、用水性质、附件材料等信息。
  • +
  • 支持政务平台、柜台、微网厅等多入口申请。
  • +
  • 受理后自动生成报装编号并进入踏勘流程。
  • +
+

2.3.4 核心数据

+
    +
  • biz_process:报装流程主表。
  • +
  • biz_content:申请资料主对象。
  • +
  • biz_content_attach:申请附件。
  • +
  • installation_application:报装申请映射对象(设计态)。
  • +
+

2.3.5 接口映射

+
    +
  • IF-INST-001:提交报装申请、申请资料与附件。
  • +
  • IF-INST-002:回填踏勘结果、方案、审核结果。
  • +
  • IF-CS-006:客户渠道办理入口可复用报装申请主线。
  • +
+

2.3.6 落地边界

+
    +
  • 已落地:申请受理主流程、资料与附件采集、流程实例创建。
  • +
  • 部分落地:不同报装类型的细化受理规则、踏勘方案差异更多依赖流程和参数配置。
  • +
  • 文档先行installation_application +当前按设计态保留,不宣称为实施库既有事实表。
  • +
+

+

2.3.7 踏勘与方案设计能力

+

2.3.8 功能说明

+

组织现场勘查、工程条件确认、材料测算、施工方案与费用方案编制。

+

2.3.9 业务流程

+
flowchart TD
+    A[接收踏勘任务] --> B[现场勘查与拍照]
+    B --> C[记录供水条件与施工约束]
+    C --> D[编制方案与费用]
+    D --> E[提交审核]
+    E --> F{审核是否通过}
+    F -->|否| G[退回修改]
+    F -->|是| H[进入施工或合同环节]
+
+

2.3.10 关键设计

+
    +
  1. 踏勘记录包括现场照片、供水接入条件、施工难点、估算费用。
  2. +
  3. 方案版本化管理,支持设计审核与退回修改。
  4. +
  5. 勘查结果直接驱动合同金额与施工计划。
  6. +
+

2.3.11 核心数据

+
    +
  • biz_process_transfer:节点流转与处理记录。
  • +
  • biz_business_datas:踏勘与方案扩展数据。
  • +
  • biz_content_attach:现场照片与附件资料。
  • +
+

2.3.12 接口映射

+
    +
  • IF-INST-002:回填踏勘结果、方案、审核结果。
  • +
+

2.3.13 落地边界

+
    +
  • 已落地:踏勘流转、扩展数据回填、现场资料挂接。
  • +
  • 部分落地:材料测算、工程造价等可能在扩展数据或外部附件中承载。
  • +
  • 文档先行:复杂 +BIM/预算系统联动不作为当前正式实现口径。
  • +
+

+

2.4 INST-002 工程管理

+

2.4.1 功能说明

+

承接施工派工、安装实施、竣工验收、立户通水以及合同签章协同,是架构图中“工程管理”模块的正式承接章节。

+

2.4.2 业务流程

+
flowchart TD
+    A[下发施工任务] --> B[现场安装实施]
+    B --> C[录入装表与施工结果]
+    C --> D[提交竣工验收]
+    D --> E{验收是否通过}
+    E -->|否| F[整改后复验]
+    E -->|是| G[触发客户建档与水表绑定]
+    G --> H[初始化账户并确认通水]
+
+

2.4.3 关键设计

+
    +
  • 施工节点按派工、实施、验收、归档逐步留痕。
  • +
  • 验收通过后自动触发客户建档、水表绑定和账户初始化。
  • +
  • 与表务系统共享水表安装与换表数据。
  • +
+

2.4.4 核心数据

+
    +
  • biz_process:施工与验收流程主线。
  • +
  • biz_process_meter_install:装表落地信息。
  • +
  • biz_meter:水表安装与状态回写对象。
  • +
  • biz_custbiz_account:立户后续创建对象。
  • +
+

2.4.5 接口映射

+
    +
  • IF-INST-005:归档验收资料并提交最终办结信息。
  • +
  • IF-INST-003:发起电子签章任务并传输合同信息。
  • +
  • IF-INST-004:回写签章结果、时间戳和存证信息。
  • +
  • IF-METER-001IF-METER-002:装表与表务状态协同。
  • +
  • IF-REV-001:立户后客户主档进入营收主数据域。
  • +
+

2.4.6 落地边界

+
    +
  • 已落地:施工验收主线、装表结果留痕、客户建档与水表绑定协同。
  • +
  • 部分落地:施工派工计划与现场资源调度可能由外部施工管理工具承载。
  • +
  • 文档先行:复杂工程项目管理和材料成本结转不作为当前正式开发边界。
  • +
+

+

2.4.7 合同签署与电子签章能力

+

2.4.8 功能说明

+

通过集成泛微 CA +电子签章系统,实现报装合同、用水协议等文件的电子签署、时间戳和电子存证。

+

2.4.9 集成架构

+
graph TD
+    subgraph INST[报装业务系统]
+        A[申请受理]
+        B[合同管理]
+        C[电子签章模块]
+        D[档案归档]
+    end
+
+    subgraph CA[泛微CA电子签章系统]
+        E[身份认证服务]
+        F[电子签章服务]
+        G[时间戳服务]
+        H[电子存证服务]
+    end
+
+    A --> B
+    B --> C
+    C --> E
+    C --> F
+    C --> G
+    C --> H
+    C --> D
+
+

2.4.10 合同签署流程

+
sequenceDiagram
+    participant 客户
+    participant 报装系统
+    participant 电子签章模块
+    participant 泛微CA系统
+
+    客户->>报装系统: 提交签署申请
+    报装系统->>电子签章模块: 生成签署任务
+    电子签章模块->>泛微CA系统: 发起身份认证
+    泛微CA系统-->>电子签章模块: 返回认证结果
+    电子签章模块->>泛微CA系统: 发起电子签章
+    泛微CA系统-->>电子签章模块: 返回签章结果
+    电子签章模块->>泛微CA系统: 申请时间戳与存证
+    泛微CA系统-->>电子签章模块: 返回凭证
+    电子签章模块-->>报装系统: 返回签署结果
+    报装系统-->>客户: 通知合同签署完成
+
+

2.4.11 核心数据

+ + + + + + + + + + + + + + + + + + + + + + + + + +
数据对象说明
installation_contract报装合同主表(设计态专题扩展)
installation_signature电子签章记录表(设计态专题扩展)
installation_evidence电子存证记录表(设计态专题扩展)
installation_signature_template签章模板与签署位置配置
+

2.4.12 关键规则

+
    +
  1. 合同签署前必须完成身份认证。
  2. +
  3. 合同正文、签署位置、签署人、签署时间必须完整留痕。
  4. +
  5. 签署完成文件必须归档并生成可验证凭证。
  6. +
  7. 外部 CA 接口异常时应支持重试与人工补偿处理。
  8. +
+

2.4.13 接口映射

+
    +
  • IF-INST-003:发起合同签署任务并传递合同信息。
  • +
  • IF-INST-004:回写签章结果、时间戳和存证信息。
  • +
+

2.4.14 落地边界

+
    +
  • 已落地:签章流程、签章回执、时间戳与存证协同设计口径已明确。
  • +
  • 部分落地installation_* +当前在数据库主文档中按专题扩展纳管,实施库需联合评审确认最终落表。
  • +
  • 文档先行:多 CA +厂商切换、批量签署编排等高级能力暂不表述为当前既有实现。
  • +
+

+

2.5 INST-003 档案管理

+

2.5.1 功能说明

+

归集申请材料、设计方案、合同文件、验收资料、签章回执和过程日志,形成完整报装档案。

+

2.5.2 关键设计

+
    +
  • 档案按申请单维度统一归档。
  • +
  • 电子签章合同、验收附件、影像资料统一存储。
  • +
  • 档案查询支持按申请编号、客户、地址、时间、状态检索。
  • +
+

2.5.3 核心数据

+
    +
  • biz_content_attach:报装材料、验收附件、影像资料。
  • +
  • installation_evidence:签章存证与回执资料。
  • +
  • biz_processbiz_process_transfer:过程留痕主线。
  • +
+

2.5.4 接口映射

+
    +
  • IF-INST-005:归档申请、合同、验收资料与签章回执。
  • +
  • IF-INST-004:签章回执结果进入归档链路。
  • +
+

2.5.5 落地边界

+
    +
  • 已落地:资料归档、过程日志留存、按申请维度检索的设计边界明确。
  • +
  • 部分落地:全文检索、影像 +OCR、外部档案系统联动可能由专项系统承载。
  • +
  • 文档先行:长期电子档案治理和归档分层存储策略不作为当前应用开发首批范围。
  • +
+ + diff --git a/output/15_INST_Detailed.pdf b/output/15_INST_Detailed.pdf new file mode 100644 index 0000000..95eec41 Binary files /dev/null and b/output/15_INST_Detailed.pdf differ diff --git a/output/15_INST_Detailed_processed.md b/output/15_INST_Detailed_processed.md new file mode 100644 index 0000000..b671667 --- /dev/null +++ b/output/15_INST_Detailed_processed.md @@ -0,0 +1,330 @@ +--- +title: "15_INST_Detailed" +author: "系统设计团队" +date: "2024年12月19日" +documentclass: article +geometry: margin=1in +fontsize: 11pt +mainfont: "PingFang SC" +CJKmainfont: "PingFang SC" +--- + +--- +doc_id: DT-15-INST +doc_role: module_body +authority: secondary +scope: 详细设计-报装与签章 +source_of_truth: false +last_reviewed: 2026-03-18 +retrieval_priority: P1 +--- + +# 福建水务营收系统详细设计-报装与签章模块正文 + +## 章节导航(精简) + +- [文档定位](#sec-position) +- [报装与签章详细设计正文](#sec-content) + - [报装模块统一约束](#sec-inst-rules) + - [接口与数据追溯矩阵](#sec-inst-trace) + - [INST-001 报装流程管理](#mod-inst-001) + - [INST-002 工程管理](#mod-inst-002) + - [INST-003 档案管理](#mod-inst-003) + + + +## 文档定位 + +本文档为 `01_Detailed_Design.md` 中“报装与签章详细设计”章节的模块正文拆分稿,便于按模块独立维护。正式交付口径以主详设为准。 + + + +# 报装与签章详细设计 + + + +## 报装模块统一约束 + +1. 报装模块承担 `SYS-002` 中“申请受理、踏勘方案、施工验收、立户通水、合同签章、档案归档”的完整主流程,流程主线以 `biz_process*` 与 `biz_content*` 为当前实现态口径。 +2. 报装申请、踏勘结果、验收结果、签章回执、归档动作均必须通过流程节点驱动,不允许直接绕过业务过程修改主状态。 +3. 施工验收通过后,方可进入客户建档、水表绑定、账户初始化与通水确认,避免前后置业务状态错位。 +4. 电子签章专题表 `installation_*` 当前为“专题扩展口径”,若实施库结构与专题设计不一致,以实施库与主详设联合评审结果为准。 +5. 报装过程中的申请材料、验收附件、签章文件、存证回执必须统一归档并具备可检索、可追溯能力。 + + + +## 接口与数据追溯矩阵 + +> 说明:接口字段以 `../03_Technical_Design/03_Interface_Design.md` 为准,数据库口径以 `../03_Technical_Design/01_Database_Design.md` 为准。 + +| INST 模块 | 关键接口 | 核心数据域(摘要) | 主要协同对象 | +|---|---|---|---| +| INST-001 报装流程管理 | `IF-INST-001`、`IF-INST-002` | `biz_process`、`biz_content`、`biz_content_attach`、`biz_process_transfer`、`biz_business_datas` | 柜台、微网厅、政务平台、报装人员 | +| INST-002 工程管理 | `IF-INST-003`、`IF-INST-004`、`IF-INST-005` | `biz_process_meter_install`、`biz_process`、`biz_meter`、`installation_contract`、`installation_signature`、`installation_evidence` | 表务、客户建档、泛微 CA | +| INST-003 档案管理 | `IF-INST-005` | `biz_content_attach`、`installation_evidence`、过程日志 | 报装、档案管理 | + + + +## INST-001 报装流程管理 + +### 功能说明 + +承接新装、改造、一户一表等业务从申请受理到现场踏勘、方案编制的前半段主流程,是架构图中“报装流程管理”模块的正式承接章节。 + +### 业务流程 + + +```mermaid +flowchart TD + A[提交报装申请] --> B[采集申请信息与附件] + B --> C[受理校验] + C --> D{是否通过} + D -->|否| E[退回补充资料] + D -->|是| F[生成报装编号] + F --> G[创建流程实例] + G --> H[进入踏勘环节] + +``` + + +### 关键设计 + +- 统一采集申请人、地址、产权、用水性质、附件材料等信息。 +- 支持政务平台、柜台、微网厅等多入口申请。 +- 受理后自动生成报装编号并进入踏勘流程。 + +### 核心数据 + +- `biz_process`:报装流程主表。 +- `biz_content`:申请资料主对象。 +- `biz_content_attach`:申请附件。 +- `installation_application`:报装申请映射对象(设计态)。 + +### 接口映射 + +- `IF-INST-001`:提交报装申请、申请资料与附件。 +- `IF-INST-002`:回填踏勘结果、方案、审核结果。 +- `IF-CS-006`:客户渠道办理入口可复用报装申请主线。 + +### 落地边界 + +- **已落地**:申请受理主流程、资料与附件采集、流程实例创建。 +- **部分落地**:不同报装类型的细化受理规则、踏勘方案差异更多依赖流程和参数配置。 +- **文档先行**:`installation_application` 当前按设计态保留,不宣称为实施库既有事实表。 + + + +### 踏勘与方案设计能力 + +### 功能说明 + +组织现场勘查、工程条件确认、材料测算、施工方案与费用方案编制。 + +### 业务流程 + + +```mermaid +flowchart TD + A[接收踏勘任务] --> B[现场勘查与拍照] + B --> C[记录供水条件与施工约束] + C --> D[编制方案与费用] + D --> E[提交审核] + E --> F{审核是否通过} + F -->|否| G[退回修改] + F -->|是| H[进入施工或合同环节] + +``` + + +### 关键设计 + +1. 踏勘记录包括现场照片、供水接入条件、施工难点、估算费用。 +2. 方案版本化管理,支持设计审核与退回修改。 +3. 勘查结果直接驱动合同金额与施工计划。 + +### 核心数据 + +- `biz_process_transfer`:节点流转与处理记录。 +- `biz_business_datas`:踏勘与方案扩展数据。 +- `biz_content_attach`:现场照片与附件资料。 + +### 接口映射 + +- `IF-INST-002`:回填踏勘结果、方案、审核结果。 + +### 落地边界 + +- **已落地**:踏勘流转、扩展数据回填、现场资料挂接。 +- **部分落地**:材料测算、工程造价等可能在扩展数据或外部附件中承载。 +- **文档先行**:复杂 BIM/预算系统联动不作为当前正式实现口径。 + + + +## INST-002 工程管理 + +### 功能说明 + +承接施工派工、安装实施、竣工验收、立户通水以及合同签章协同,是架构图中“工程管理”模块的正式承接章节。 + +### 业务流程 + + +```mermaid +flowchart TD + A[下发施工任务] --> B[现场安装实施] + B --> C[录入装表与施工结果] + C --> D[提交竣工验收] + D --> E{验收是否通过} + E -->|否| F[整改后复验] + E -->|是| G[触发客户建档与水表绑定] + G --> H[初始化账户并确认通水] + +``` + + +### 关键设计 + +- 施工节点按派工、实施、验收、归档逐步留痕。 +- 验收通过后自动触发客户建档、水表绑定和账户初始化。 +- 与表务系统共享水表安装与换表数据。 + +### 核心数据 + +- `biz_process`:施工与验收流程主线。 +- `biz_process_meter_install`:装表落地信息。 +- `biz_meter`:水表安装与状态回写对象。 +- `biz_cust`、`biz_account`:立户后续创建对象。 + +### 接口映射 + +- `IF-INST-005`:归档验收资料并提交最终办结信息。 +- `IF-INST-003`:发起电子签章任务并传输合同信息。 +- `IF-INST-004`:回写签章结果、时间戳和存证信息。 +- `IF-METER-001`、`IF-METER-002`:装表与表务状态协同。 +- `IF-REV-001`:立户后客户主档进入营收主数据域。 + +### 落地边界 + +- **已落地**:施工验收主线、装表结果留痕、客户建档与水表绑定协同。 +- **部分落地**:施工派工计划与现场资源调度可能由外部施工管理工具承载。 +- **文档先行**:复杂工程项目管理和材料成本结转不作为当前正式开发边界。 + + + +### 合同签署与电子签章能力 + +### 功能说明 + +通过集成泛微 CA 电子签章系统,实现报装合同、用水协议等文件的电子签署、时间戳和电子存证。 + +### 集成架构 + + +```mermaid +graph TD + subgraph INST[报装业务系统] + A[申请受理] + B[合同管理] + C[电子签章模块] + D[档案归档] + end + + subgraph CA[泛微CA电子签章系统] + E[身份认证服务] + F[电子签章服务] + G[时间戳服务] + H[电子存证服务] + end + + A --> B + B --> C + C --> E + C --> F + C --> G + C --> H + C --> D + +``` + + +### 合同签署流程 + + +```mermaid +sequenceDiagram + participant 客户 + participant 报装系统 + participant 电子签章模块 + participant 泛微CA系统 + + 客户->>报装系统: 提交签署申请 + 报装系统->>电子签章模块: 生成签署任务 + 电子签章模块->>泛微CA系统: 发起身份认证 + 泛微CA系统-->>电子签章模块: 返回认证结果 + 电子签章模块->>泛微CA系统: 发起电子签章 + 泛微CA系统-->>电子签章模块: 返回签章结果 + 电子签章模块->>泛微CA系统: 申请时间戳与存证 + 泛微CA系统-->>电子签章模块: 返回凭证 + 电子签章模块-->>报装系统: 返回签署结果 + 报装系统-->>客户: 通知合同签署完成 + +``` + + +### 核心数据 + +| 数据对象 | 说明 | +|---|---| +| `installation_contract` | 报装合同主表(设计态专题扩展) | +| `installation_signature` | 电子签章记录表(设计态专题扩展) | +| `installation_evidence` | 电子存证记录表(设计态专题扩展) | +| `installation_signature_template` | 签章模板与签署位置配置 | + +### 关键规则 + +1. 合同签署前必须完成身份认证。 +2. 合同正文、签署位置、签署人、签署时间必须完整留痕。 +3. 签署完成文件必须归档并生成可验证凭证。 +4. 外部 CA 接口异常时应支持重试与人工补偿处理。 + +### 接口映射 + +- `IF-INST-003`:发起合同签署任务并传递合同信息。 +- `IF-INST-004`:回写签章结果、时间戳和存证信息。 + +### 落地边界 + +- **已落地**:签章流程、签章回执、时间戳与存证协同设计口径已明确。 +- **部分落地**:`installation_*` 当前在数据库主文档中按专题扩展纳管,实施库需联合评审确认最终落表。 +- **文档先行**:多 CA 厂商切换、批量签署编排等高级能力暂不表述为当前既有实现。 + + + +## INST-003 档案管理 + +### 功能说明 + +归集申请材料、设计方案、合同文件、验收资料、签章回执和过程日志,形成完整报装档案。 + +### 关键设计 + +- 档案按申请单维度统一归档。 +- 电子签章合同、验收附件、影像资料统一存储。 +- 档案查询支持按申请编号、客户、地址、时间、状态检索。 + +### 核心数据 + +- `biz_content_attach`:报装材料、验收附件、影像资料。 +- `installation_evidence`:签章存证与回执资料。 +- `biz_process`、`biz_process_transfer`:过程留痕主线。 + +### 接口映射 + +- `IF-INST-005`:归档申请、合同、验收资料与签章回执。 +- `IF-INST-004`:签章回执结果进入归档链路。 + +### 落地边界 + +- **已落地**:资料归档、过程日志留存、按申请维度检索的设计边界明确。 +- **部分落地**:全文检索、影像 OCR、外部档案系统联动可能由专项系统承载。 +- **文档先行**:长期电子档案治理和归档分层存储策略不作为当前应用开发首批范围。 diff --git a/output/PostgreSQL16_容灾与资源申请说明.docx b/output/PostgreSQL16_容灾与资源申请说明.docx new file mode 100644 index 0000000..9f3d8a7 Binary files /dev/null and b/output/PostgreSQL16_容灾与资源申请说明.docx differ diff --git a/output/PostgreSQL16_容灾与资源申请说明_含图表.docx b/output/PostgreSQL16_容灾与资源申请说明_含图表.docx new file mode 100644 index 0000000..574448c Binary files /dev/null and b/output/PostgreSQL16_容灾与资源申请说明_含图表.docx differ diff --git a/output/document_style.css b/output/document_style.css new file mode 100644 index 0000000..dc879fc --- /dev/null +++ b/output/document_style.css @@ -0,0 +1,259 @@ +/* 福建水务营收系统文档样式 */ +@page { + margin: 2cm; + size: A4; +} + +body { + font-family: "PingFang SC", "Microsoft YaHei", "SimSun", sans-serif; + font-size: 11pt; + line-height: 1.6; + color: #333; + max-width: none; + margin: 0; + padding: 0; +} + +/* 标题样式 */ +h1 { + font-size: 18pt; + font-weight: bold; + color: #1f4e79; + margin-top: 24pt; + margin-bottom: 12pt; + border-bottom: 2pt solid #1f4e79; + padding-bottom: 6pt; + page-break-after: avoid; +} + +h2 { + font-size: 16pt; + font-weight: bold; + color: #2f5597; + margin-top: 18pt; + margin-bottom: 10pt; + border-bottom: 1pt solid #2f5597; + padding-bottom: 4pt; + page-break-after: avoid; +} + +h3 { + font-size: 14pt; + font-weight: bold; + color: #365f91; + margin-top: 14pt; + margin-bottom: 8pt; + page-break-after: avoid; +} + +h4 { + font-size: 12pt; + font-weight: bold; + color: #4472c4; + margin-top: 12pt; + margin-bottom: 6pt; + page-break-after: avoid; +} + +h5 { + font-size: 11pt; + font-weight: bold; + color: #5b9bd5; + margin-top: 10pt; + margin-bottom: 5pt; + page-break-after: avoid; +} + +h6 { + font-size: 10pt; + font-weight: bold; + color: #70ad47; + margin-top: 8pt; + margin-bottom: 4pt; + page-break-after: avoid; +} + +/* 段落样式 */ +p { + margin-top: 0; + margin-bottom: 8pt; + text-align: justify; + text-justify: inter-ideograph; +} + +/* 表格样式(黑色边框) */ +table { + border-collapse: collapse; + width: 100%; + margin: 12pt 0; + font-size: 10pt; + page-break-inside: avoid; + border: 1pt solid #000; /* 外边框黑色 */ +} + +th { + background-color: #4472c4; + color: white; + font-weight: bold; + padding: 8pt; + border: 1pt solid #000; /* 表头黑线 */ + text-align: center; +} + +td { + padding: 6pt 8pt; + border: 1pt solid #000; /* 单元格黑线 */ + vertical-align: top; +} + +tr:nth-child(even) { + background-color: #f2f2f2; +} + +/* 代码样式 */ +code { + font-family: "Courier New", "Monaco", monospace; + font-size: 9pt; + background-color: #f5f5f5; + padding: 2pt 4pt; + border-radius: 2pt; + border: 1pt solid #e1e1e1; +} + +pre { + font-family: "Courier New", "Monaco", monospace; + font-size: 9pt; + background-color: #f8f8f8; + padding: 12pt; + border: 1pt solid #e1e1e1; + border-radius: 4pt; + overflow-x: auto; + margin: 12pt 0; + page-break-inside: avoid; +} + +pre code { + background: none; + padding: 0; + border: none; +} + +/* 列表样式 */ +ul, ol { + margin: 8pt 0; + padding-left: 24pt; +} + +li { + margin: 4pt 0; +} + +/* 图片样式 */ +img { + max-width: 100%; + height: auto; + display: block; + margin: 12pt auto; + border: 1pt solid #e1e1e1; + border-radius: 4pt; + page-break-inside: avoid; +} + +/* 图表标题 */ +img + p, p + img { + text-align: center; + font-weight: bold; + color: #4472c4; + font-size: 10pt; + margin: 6pt 0; +} + +/* 分页符 */ +.page-break { + page-break-before: always; +} + +/* 避免孤行和寡行 */ +p, li, dt, dd { + orphans: 2; + widows: 2; +} + +/* 链接样式 */ +a { + color: #0563c1; + text-decoration: underline; +} + +a:visited { + color: #954f72; +} + +/* 引用样式 */ +blockquote { + margin: 12pt 0; + padding: 12pt; + background-color: #f9f9f9; + border-left: 4pt solid #4472c4; + font-style: italic; +} + +/* 水平分隔线 */ +hr { + border: none; + border-top: 1pt solid #d1d1d1; + margin: 18pt 0; +} + +/* Details/Summary 样式 */ +details { + margin: 8pt 0; + border: 1pt solid #e1e1e1; + border-radius: 4pt; + padding: 8pt; +} + +summary { + font-weight: bold; + cursor: pointer; + color: #4472c4; + margin-bottom: 8pt; +} + +/* 强调样式 */ +strong, b { + font-weight: bold; + color: #1f4e79; +} + +em, i { + font-style: italic; + color: #365f91; +} + +/* 印刷样式优化 */ +@media print { + body { + font-size: 10pt; + line-height: 1.4; + } + + h1 { font-size: 16pt; } + h2 { font-size: 14pt; } + h3 { font-size: 12pt; } + h4 { font-size: 11pt; } + h5 { font-size: 10pt; } + h6 { font-size: 9pt; } + + table { font-size: 9pt; } + code, pre { font-size: 8pt; } + + /* 避免在不适当的地方分页 */ + h1, h2, h3, h4, h5, h6 { + page-break-after: avoid; + } + + table, pre, img { + page-break-inside: avoid; + } +} diff --git a/output/pgsql16_docx_rendered/07_PostgreSQL16_DR_Resource_Application.rendered.md b/output/pgsql16_docx_rendered/07_PostgreSQL16_DR_Resource_Application.rendered.md new file mode 100644 index 0000000..9de5cbf --- /dev/null +++ b/output/pgsql16_docx_rendered/07_PostgreSQL16_DR_Resource_Application.rendered.md @@ -0,0 +1,587 @@ +--- +doc_id: TC-07-PGSQL-DR +doc_role: supplemental_document +authority: secondary +scope: PostgreSQL 16 容灾资源申请 +source_of_truth: false +last_reviewed: 2026-03-24 +retrieval_priority: P1 +--- + +# 福建水务营收系统 PostgreSQL 16 容灾与资源申请说明 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 技术专题说明 | +| **专题用途** | 向甲方申请 PostgreSQL 16 容灾部署资源 | +| **文档版本** | v1.0 | +| **编写日期** | 2026-03-24 | +| **文档状态** | ✅ 正式建议稿 | + +## 目录 + +1. 编制目的 +2. 适用范围与说明 +3. 容灾建设目标 +4. 容灾形态说明 +5. 资源配比原则 +6. 推荐部署方案 +7. 甲方审批汇总表 +8. 详细资源申请清单 +9. 网络与存储要求 +10. 数据库代理与连接接入方案 +11. 部署实施说明 +12. 切换与恢复说明 +13. 切换实施细则 +14. 申请结论 + +## 编制目的 + +本文档用于说明福建水务营收系统采用 PostgreSQL 16 建设数据库高可用与灾难恢复能力时,所需的资源规模、部署形态、主备配比及实施要求,作为甲方进行服务器、存储、网络及运行环境审批的依据。 + +## 适用范围与说明 + +1. 本文档面向 PostgreSQL 16 数据库部署专题,重点说明容灾与资源申请口径。 +2. 本文档用于资源论证与部署申请,不替代数据库主文档和总体部署主文档。 +3. 文中关于备库资源比例、网络带宽、存储冗余和部署组合的建议,属于结合 PostgreSQL 16 流复制、热备与时间点恢复机制形成的工程实施建议。 + +## 容灾建设目标 + +PostgreSQL 16 容灾建设目标如下: + +1. 在主库节点故障时,保障数据库能够快速切换并恢复服务。 +2. 在误操作、逻辑损坏、批量异常更新等场景下,保障系统具备时间点恢复能力。 +3. 在核心收费、账务、对账等业务场景中,尽量降低故障切换时的数据丢失风险。 +4. 在资源投入可控的前提下,为甲方提供可分阶段实施的多种建设形态。 + +## 容灾形态说明 + +结合 PostgreSQL 16 能力及甲方常见基础设施条件,建议按以下四种形态进行资源申请与部署评估。 + +### 形态一:单中心主备容灾 + +适用于预算有限、优先满足基础高可用能力的场景。 + +部署关系图: + +![图1](images/diagram_1.png) + +1. 主库与备库部署在同一机房或同一可用区。 +2. 备库可采用 `Warm Standby` 或 `Hot Standby`。 +3. 推荐采用异步复制;如网络稳定且事务一致性要求较高,也可采用同步复制。 +4. 该形态可解决单机故障问题,但不能覆盖机房级灾难。 + +### 形态二:同城双可用区主备容灾 + +适用于生产系统正式上线场景,兼顾高可用与较高的数据安全要求。 + +部署关系图: + +![图2](images/diagram_2.png) + +说明: + +1. 主库与备库部署在同城不同机房或不同可用区。 +2. 推荐备库采用 `Hot Standby`,可承担只读查询与切换接管职责。 +3. 对收费、账务、实收确认等核心业务,宜优先评估同步复制。 +4. 该形态可覆盖单节点故障和单可用区故障,是生产环境优先推荐的基础方案。 + +### 形态三:同城双中心 + 异地灾备 + +适用于对连续运行能力要求较高,且需要同时覆盖机房级与区域级风险的场景。 + +部署关系图: + +![图3](images/diagram_3.png) + +说明: + +1. 同城备库承担高可用切换职责。 +2. 异地灾备库承担区域级灾难恢复职责。 +3. 异地灾备一般采用异步复制,避免远距离链路对主业务写入性能造成明显影响。 +4. 该形态可满足高可用与灾备双重要求,适合作为甲方正式建设目标方案。 + +### 形态四:主备高可用 + 备份恢复型灾备 + +适用于暂不具备异地第三节点条件,但需要形成完整灾难恢复能力的场景。 + +部署关系图: + +![图4](images/diagram_4.png) + +说明: + +1. 在线层保持主备双节点高可用。 +2. 异地侧不部署实时在线数据库实例,主要承载基础备份和 WAL 归档。 +3. 该形态投入低于三节点实时灾备,但恢复时间长于在线异地灾备库方案。 +4. 适用于二期或预算受限情况下的过渡方案。 + +## 资源配比原则 + +### 主备资源总体原则 + +1. 主库负责生产写入,CPU、内存、I/O、网络压力最大。 +2. 备库必须保存完整数据副本,因此备库存储容量原则上不得低于主库。 +3. 如备库承担实时切换接管职责,其 CPU 与内存不宜明显低于主库。 +4. 如备库仅承担异步灾备且不承载查询压力,可适当降低 CPU 与内存,但不应压缩存储容量和网络链路质量。 + +### 主备资源比例建议 + +| 备库角色 | 复制方式 | 是否承担读请求 | CPU 建议 | 内存建议 | 存储建议 | 适用说明 | +|---|---|---|---|---|---|---| +| 同步热备库 | 同步复制 | 是 | 不低于主库 100% | 不低于主库 100% | 不低于主库 100%,建议 120% | 生产正式切换节点,要求切换后立即承载全部业务 | +| 同步温备库 | 同步复制 | 否 | 主库的 70% 至 100% | 主库的 70% 至 100% | 不低于主库 100%,建议 120% | 不承载查询,但需要较快接管生产流量 | +| 异步热备库 | 异步复制 | 是 | 主库的 70% 至 100% | 主库的 70% 至 100% | 不低于主库 100%,建议 120% | 可承担报表查询或只读分析 | +| 异步温备库 | 异步复制 | 否 | 主库的 50% 至 70% | 主库的 50% 至 70% | 不低于主库 100%,建议 120% | 仅承担容灾接管,不参与日常查询 | +| 异地灾备库 | 异步复制 | 否 | 主库的 50% 左右 | 主库的 50% 至 70% | 不低于主库 100%,建议 120% | 主要用于区域级容灾恢复 | +| 备份恢复节点 | PITR | 否 | 可不单独配置在线节点 | 可不单独配置在线节点 | 备份空间建议为主库有效数据量的 2 至 3 倍 | 用于误操作恢复和灾难后重建 | + +### 资源配比说明 + +1. 备库存储不能按 CPU、内存比例缩减,原因是 PostgreSQL 备库需要保存完整数据文件、索引文件及 WAL 回放空间。 +2. 当备库承担 `Hot Standby` 查询或要求快速晋升为主库时,推荐按主库同规格申请。 +3. 当备库仅作为冷备或异步灾备节点时,可降低计算资源,但仍需预留恢复、回放和切换后的运行余量。 + +## 推荐部署方案 + +结合福建水务营收系统收费、账务、对账等核心业务连续性要求,建议分为三档申请方案。 + +### 方案 A:基础上线方案 + +1. 架构形态:单中心主备容灾。 +2. 节点组成:1 主库 + 1 备库 + 1 套备份归档存储。 +3. 复制方式:异步复制。 +4. 适用场景:预算受限、优先满足基本高可用要求。 + +### 方案 B:正式生产推荐方案 + +1. 架构形态:同城双可用区主备容灾。 +2. 节点组成:1 主库 + 1 同城热备库 + 1 套备份归档存储。 +3. 复制方式:核心业务优先评估同步复制。 +4. 适用场景:正式生产环境,要求故障切换后快速恢复业务。 + +### 方案 C:正式生产增强方案 + +1. 架构形态:同城双中心 + 异地灾备。 +2. 节点组成:1 主库 + 1 同城同步热备库 + 1 异地异步灾备库 + 1 套集中备份归档存储。 +3. 复制方式:同城同步复制,异地异步复制。 +4. 适用场景:甲方对连续运行、审计留痕、灾难恢复要求较高的正式建设项目。 + +本项目建议优先向甲方申请方案 B;如甲方同时要求区域级灾难恢复能力,建议直接申请方案 C。 + +## 甲方审批汇总表 + +以下汇总表用于甲方进行资源审批、预算评估和实施范围确认。建议优先按“方案 B:正式生产推荐方案”审批;如甲方同时要求区域级灾难恢复能力,可按“方案 C:正式生产增强方案”审批。 + +### 方案 A:基础上线方案审批汇总表 + +| 类别 | 资源项 | 数量 | 单项建议规格 | 审批说明 | +|---|---|---:|---|---| +| 服务器 | 主库服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 承担全部生产写入 | +| 服务器 | 备库服务器 | 1 台 | 12 至 16 核 CPU / 48 至 64 GB 内存 / 2 TB NVMe SSD | 承担主库故障接管 | +| 服务器 | 管理与监控节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 500 GB SSD | 部署监控、备份调度、巡检工具 | +| 存储 | 备份归档存储 | 1 套 | 可用空间 4 TB 起 | 存放全量备份与 WAL 归档 | +| 网络 | 主备复制链路 | 1 组 | 不低于 10 Gbps | 建议与业务访问链路隔离 | +| 网络 | 业务接入地址 | 1 组 | 统一数据库代理地址 | 应用统一接入,不直连数据库 IP | +| 软件 | PostgreSQL 16 | 2 套实例 | 主库 1 套,备库 1 套 | 构建基础主备容灾 | +| 软件 | PgBouncer | 1 套 | 连接池代理 | 统一控制连接数 | +| 软件 | HAProxy | 1 套 | 数据库入口代理 | 提供统一切换入口 | +| 软件 | Patroni | 1 套 | 高可用管理组件 | 管理主备选举与切换 | + +### 方案 B:正式生产推荐方案审批汇总表 + +| 类别 | 资源项 | 数量 | 单项建议规格 | 审批说明 | +|---|---|---:|---|---| +| 服务器 | 主库服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 部署在生产可用区 | +| 服务器 | 同城热备服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 与主库同规格,承担正式接管 | +| 服务器 | 管理与监控节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 500 GB SSD | 部署监控、备份、巡检、告警 | +| 存储 | 备份归档存储 | 1 套 | 可用空间 4 TB 至 6 TB | 存放备份、WAL、恢复校验副本 | +| 网络 | 主备复制链路 | 1 组 | 不低于 10 Gbps | 同城低时延链路,适合同步复制 | +| 网络 | 主备时延要求 | 1 项 | 建议低于 2 ms | 支撑主备同步与快速切换 | +| 网络 | 业务接入地址 | 1 组 | 统一数据库代理地址 | 应用系统通过代理地址访问 | +| 软件 | PostgreSQL 16 | 2 套实例 | 主库 1 套,热备库 1 套 | 构建正式生产主备体系 | +| 软件 | PgBouncer | 1 套 | 连接池代理 | 控制连接数并稳定应用连接 | +| 软件 | HAProxy | 1 套 | 数据库入口代理 | 承担统一读写入口切换 | +| 软件 | Patroni | 1 套 | 高可用管理组件 | 管理主备状态、提升与故障切换 | + +### 方案 C:正式生产增强方案审批汇总表 + +| 类别 | 资源项 | 数量 | 单项建议规格 | 审批说明 | +|---|---|---:|---|---| +| 服务器 | 主库服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 部署在生产中心 | +| 服务器 | 同城同步热备服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 承担正式主备切换 | +| 服务器 | 异地灾备服务器 | 1 台 | 8 至 12 核 CPU / 32 至 48 GB 内存 / 2 TB NVMe SSD | 承担区域级灾难恢复 | +| 服务器 | 管理与监控节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 500 GB SSD | 部署监控、备份、审计工具 | +| 存储 | 集中备份归档存储 | 1 套 | 可用空间 6 TB 起 | 保存全量备份、WAL、演练副本 | +| 网络 | 同城复制链路 | 1 组 | 不低于 10 Gbps | 保障同步复制稳定性 | +| 网络 | 异地复制链路 | 1 组 | 专线或稳定 VPN | 保障异步复制与备份回传 | +| 网络 | 业务接入地址 | 1 组 | 统一数据库代理地址 | 应用不直接访问数据库节点 | +| 软件 | PostgreSQL 16 | 3 套实例 | 主库 1 套,同城热备 1 套,异地灾备 1 套 | 构建高可用与灾备双层体系 | +| 软件 | PgBouncer | 1 套 | 连接池代理 | 稳定应用接入层 | +| 软件 | HAProxy | 1 套 | 数据库入口代理 | 承担统一流量入口与切换 | +| 软件 | Patroni | 1 套 | 高可用管理组件 | 管理主备状态与故障切换 | + +### 审批建议结论 + +| 审批项 | 建议结论 | 说明 | +|---|---|---| +| 首选审批方案 | 方案 B | 兼顾资源投入、主备切换能力和正式生产可用性 | +| 最低建设标准 | 不低于方案 A | 至少满足双节点主备与独立备份归档 | +| 增强建设目标 | 方案 C | 适用于要求区域级灾难恢复的正式项目 | +| 备库资源口径 | 存储不低于主库,热备计算资源宜等同主库 | 避免切换后承载不足 | +| 接入方式 | 统一数据库代理地址 | 禁止应用直连数据库物理 IP | + +## 详细资源申请清单 + +以下清单以单套生产系统为口径,作为资源申请参考基线。实际规模可根据并发量、数据量和保留周期进一步调整。 + +### 方案 A 资源申请清单 + +| 资源类型 | 数量 | 单节点建议配置 | 说明 | +|---|---:|---|---| +| 主库服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 承担生产写入 | +| 备库服务器 | 1 台 | 12 至 16 核 CPU / 48 至 64 GB 内存 / 2 TB NVMe SSD | 温备或热备均可 | +| 备份存储 | 1 套 | 可用空间 4 TB 起 | 存放基础备份与 WAL 归档 | +| 管理与监控节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 500 GB SSD | 部署监控、备份调度、巡检工具 | + +### 方案 B 资源申请清单 + +| 资源类型 | 数量 | 单节点建议配置 | 说明 | +|---|---:|---|---| +| 主库服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 部署在生产可用区 | +| 同城热备服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 与主库同规格,承担热备与切换 | +| 备份归档存储 | 1 套 | 可用空间 4 TB 至 6 TB | 存放基础备份、WAL、恢复校验副本 | +| 管理与监控节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 500 GB SSD | 部署监控、备份、连接代理等工具 | + +### 方案 C 资源申请清单 + +| 资源类型 | 数量 | 单节点建议配置 | 说明 | +|---|---:|---|---| +| 主库服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 部署在生产中心 | +| 同城同步热备服务器 | 1 台 | 16 核 CPU / 64 GB 内存 / 2 TB NVMe SSD | 作为正式切换节点 | +| 异地灾备服务器 | 1 台 | 8 至 12 核 CPU / 32 至 48 GB 内存 / 2 TB NVMe SSD | 用于区域级灾备恢复 | +| 集中备份归档存储 | 1 套 | 可用空间 6 TB 起 | 统一保存全量备份与 WAL 归档 | +| 管理与监控节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 500 GB SSD | 部署监控、备份、审计工具 | + +### 资源申请补充说明 + +1. 如甲方要求备库长期承担报表、统计或只读查询负载,备库应按主库同规格申请。 +2. 如数据库数据量预估超过 1 TB,建议主库与备库磁盘统一提升至 4 TB 起步。 +3. 如需要保留 30 日以上 WAL 归档或多周期全量备份,备份存储应按“在线数据量的 2 至 3 倍”进行规划。 + +## 网络与存储要求 + +### 网络要求 + +| 项目 | 建议要求 | 说明 | +|---|---|---| +| 主备网络带宽 | 不低于 10 Gbps | 保障流复制稳定性与切换效率 | +| 同城主备时延 | 建议低于 2 ms | 适合同步复制 | +| 异地主备链路 | 建议专线或稳定 VPN | 适合异步复制与备份回传 | +| 复制链路隔离 | 建议与业务访问链路分离 | 降低复制抖动风险 | + +### 存储要求 + +| 项目 | 建议要求 | 说明 | +|---|---|---| +| 主库存储 | NVMe SSD 或企业级 SSD | 保障 WAL 与随机 I/O 性能 | +| 备库存储 | 不低于主库存储规格 | 保障回放与切换性能 | +| 磁盘阵列 | RAID 10 优先 | 平衡可靠性与性能 | +| 备份存储 | 独立于数据库数据盘 | 避免单点故障导致备份不可用 | + +## 数据库代理与连接接入方案 + +### 建设目标 + +为避免应用系统直接连接数据库物理节点,并降低主备切换时应用侧配置变更成本,PostgreSQL 16 容灾体系宜配套建设数据库代理与连接接入层。 + +数据库代理层建设目标如下: + +1. 为应用系统提供统一数据库访问地址。 +2. 在主备切换时避免逐台修改应用节点连接配置。 +3. 控制应用连接数,降低数据库连接管理压力。 +4. 为后续读写分离和只读查询扩展预留接入能力。 + +### 推荐组件组合 + +结合当前项目应用规模与运维复杂度控制要求,推荐采用以下组件组合: + +1. `Patroni`:负责 PostgreSQL 主备状态管理、主库选举与故障切换。 +2. `HAProxy`:负责数据库访问入口转发,将写请求路由到当前主库。 +3. `PgBouncer`:负责连接池管理,降低应用对 PostgreSQL 后端连接数的直接冲击。 + +本项目不建议以 `pgpool-II` 作为首选统一方案。原因在于 `pgpool-II` 功能较重、配置复杂、运维成本较高,不利于当前项目在甲方环境中的快速落地与稳定运维。 + +### 推荐接入拓扑 + +#### 模式一:统一读写入口 + +适用于一期先满足高可用与连接池要求,暂不启用读写分离的场景。 + +接入关系图: + +![图5](images/diagram_5.png) + +说明: + +1. 应用系统统一连接 `PgBouncer` 暴露的数据库接入地址。 +2. `PgBouncer` 后端连接到 `HAProxy` 的读写入口。 +3. `HAProxy` 根据 `Patroni` 暴露的主备状态,将流量转发到当前主库。 +4. 主备切换时,应用端数据库 URL 不变。 + +#### 模式二:读写分离入口 + +适用于二期或存在报表、统计、查询分流需求的场景。 + +接入关系图: + +![图6](images/diagram_6.png) + +说明: + +1. 写请求通过 `RW` 入口访问当前主库。 +2. 只读查询通过 `RO` 入口访问热备库。 +3. 如备库不可用,`RO` 入口可根据策略降级转发到主库或暂时关闭。 +4. 应用需在代码或配置层明确区分读写连接场景。 + +### 推荐选型结论 + +对于福建水务营收系统当前阶段,建议优先采用“`Patroni + HAProxy + PgBouncer`”组合,并采用“统一读写入口”模式上线。待系统稳定运行后,再根据报表与统计查询压力评估是否扩展为“读写分离入口”模式。 + +### HAProxy 示例配置 + +以下配置仅用于说明读写入口代理思路,实际参数应由项目环境统一配置并纳入变更管理。 + +```haproxy +global + log 127.0.0.1 local0 + maxconn 20000 + +defaults + log global + mode tcp + timeout connect 5s + timeout client 1m + timeout server 1m + +frontend pg_rw + bind *:5000 + default_backend pg_primary + +backend pg_primary + option tcp-check + default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions + server pg01 10.0.0.11:5432 check + server pg02 10.0.0.12:5432 check backup +``` + +配置说明: + +1. 应用不直接连接 PostgreSQL 5432,而是连接 `HAProxy` 暴露的 5000 端口。 +2. `pg01` 为当前主库,`pg02` 为备库。 +3. 主库不可用时,代理层将连接切换至备用节点。 +4. 正式环境建议结合 `Patroni` REST 状态接口配置更准确的主备健康检查,而非仅做普通 TCP 存活检查。 + +### PgBouncer 示例配置 + +以下配置仅用于说明连接池配置思路,实际参数应由项目环境统一配置并纳入变更管理。 + +```ini +[databases] +waterdb = host=10.0.0.20 port=5000 dbname=waterdb + +[pgbouncer] +listen_addr = 0.0.0.0 +listen_port = 6432 +auth_type = md5 +auth_file = /etc/pgbouncer/userlist.txt +pool_mode = transaction +max_client_conn = 5000 +default_pool_size = 100 +reserve_pool_size = 20 +server_reset_query = DISCARD ALL +ignore_startup_parameters = extra_float_digits +``` + +配置说明: + +1. 应用系统统一连接 `PgBouncer` 的 6432 端口。 +2. `PgBouncer` 后端目标不是数据库主机,而是 `HAProxy` 的读写入口地址。 +3. 推荐优先采用 `transaction` 池化模式,以提升连接复用效率。 +4. 如存在依赖会话级状态的特殊业务,应专项评估是否改用 `session` 模式。 + +### 应用接入建议 + +对于当前项目的 4 台应用服务器集群,不建议在每台应用服务器上分别配置数据库主机地址切换逻辑。推荐做法如下: + +1. 应用配置文件统一写入数据库代理地址,不写数据库物理主机 IP。 +2. 生产环境统一维护一个数据库接入地址,例如 `db-rw.xxx.local:6432`。 +3. 所有应用节点使用同一连接地址接入,由代理层完成后端数据库节点切换。 +4. 如后续启用读写分离,再增加只读接入地址,例如 `db-ro.xxx.local:6432`。 + +### 切换时的接入逻辑 + +当主库发生故障或进行计划切换时,推荐接入逻辑如下: + +1. `Patroni` 判定新的主库节点。 +2. `HAProxy` 将读写入口转发目标切换至新主库。 +3. `PgBouncer` 清理失效后端连接并重建到新主库的连接。 +4. 应用系统通过连接池重试机制继续访问统一代理地址。 + +在该机制下,应用系统通常无需修改数据库配置,仅在切换瞬间可能出现极短暂连接重试或少量请求失败,恢复后可继续正常提供服务。 + +### 正式文档建议表述 + +为保障福建水务营收系统数据库主备切换时应用系统的连续接入能力,数据库访问层宜采用“Patroni 负责主备选举、HAProxy 负责访问转发、PgBouncer 负责连接池管理”的组合架构。应用系统统一通过数据库代理地址访问数据库,不直接连接数据库物理节点;当主库故障或发生计划切换时,由代理层自动将访问流量切换至新的主库节点,从而实现应用侧最小感知切换。 + +## 部署实施说明 + +### 部署原则 + +1. 主库与同城备库不得部署在同一物理主机。 +2. 同城备库宜部署在独立机柜、独立电源域或独立可用区。 +3. 异地灾备节点宜部署在独立数据中心,避免与生产中心共用故障域。 +4. 备份归档存储应与数据库节点分离部署。 + +### 组件部署说明 + +1. 主库节点:部署 PostgreSQL 16 主实例,承担生产写入。 +2. 备库节点:部署 PostgreSQL 16 备用实例,通过流复制接收主库 WAL。 +3. 备份节点或备份存储:保存基础备份、WAL 归档和恢复校验文件。 +4. 管理与监控节点:部署 PostgreSQL 监控、备份调度、告警和巡检组件。 + +### 软件部署建议 + +1. 操作系统宜采用稳定版 Linux 发行版。 +2. 数据目录、WAL 目录、备份目录建议分盘或分卷部署。 +3. 主备切换宜配套连接路由、VIP 或代理层能力,避免应用侧频繁修改连接地址。 +4. 生产环境应启用备份校验、归档校验和恢复演练机制。 + +## 切换与恢复说明 + +### 故障切换 + +1. 主库故障时,由同城备库提升为新主库。 +2. 应用连接通过统一连接地址或代理切换到新主库。 +3. 原主库恢复后,应重新以备库身份加入复制体系。 + +### 数据恢复 + +1. 误删除、误更新或逻辑损坏场景,通过基础备份与 WAL 归档执行 `PITR` 时间点恢复。 +2. 区域级灾难场景下,可优先启用异地灾备库;如未建设异地在线库,则从异地备份存储重建数据库。 + +### 运维要求 + +1. 每季度至少开展 1 次主备切换演练。 +2. 每季度至少开展 1 次 `PITR` 恢复演练。 +3. 每日检查复制延迟、归档状态、备份成功率和磁盘余量。 + +## 切换实施细则 + +### 总体原则 + +福建水务营收系统数据库切换应遵循“统一入口切换、先判定后切换、先验证后恢复流量、禁止双主”的实施原则。 + +1. 应用系统统一通过数据库代理地址访问数据库,不直接连接数据库物理节点。 +2. 切换分为计划切换、故障切换和回切三类场景。 +3. 任一切换过程中,必须避免原主库与新主库同时对外提供写服务。 +4. 切换完成后,必须执行收费、开账、账务、发票、银行代扣等关键业务链路验证。 + +### 计划切换流程 + +计划切换适用于数据库补丁升级、主机维护、操作系统维护、机房迁移演练等场景。 + +执行顺序: + +发起计划切换申请 → 确认切换窗口与影响范围 → 检查主备复制状态 → 暂停高风险写入操作 → 确认备库追平主库 → 提升备库为新主库 → 切换代理入口到新主库 → 验证关键业务链路 → 恢复应用写入流量 → 原主库修复并重建为备库。 + +实施要点如下: + +1. 切换前至少确认主备复制无明显延迟。 +2. 切换窗口内应暂停批量开账、批量代扣、批量票据处理等高风险写入任务。 +3. 备库提升后,应优先切换代理层入口,不建议逐台修改应用配置。 +4. 切换成功后,原主库应以备库身份重新加入复制体系,不得直接恢复为独立写节点。 + +### 故障切换流程 + +故障切换适用于主库主机宕机、数据库实例不可用、主库存储异常、主库不可恢复等场景。 + +执行顺序: + +监控发现主库异常 → 确认主库不可服务 → 隔离原主库写入能力 → 确认备库状态可提升 → 提升备库为新主库 → 代理入口切换到新主库 → 应用重连并恢复服务 → 验证关键业务 → 故障主机修复 → 重建为新备库。 + +实施要点如下: + +1. 故障切换的前提不是“主库变慢”,而是“主库已无法稳定提供写服务”。 +2. 在故障未完全确认前,不得贸然提升多个备库。 +3. 如主库网络隔离但实例未真正关闭,应先执行隔离措施,避免形成双主风险。 +4. 故障切换后应优先恢复核心业务可用性,再执行历史备库链路重建。 + +### 回切流程 + +回切是指原主库修复完成后,在合适窗口下恢复为生产主库或重新调整主备角色。 + +执行顺序: + +原主库修复完成 → 作为备库追平现主库 → 评估是否需要回切。 + +如不需要回切,则保持现状运行。 + +如需要回切,则执行以下步骤:发起计划回切窗口 → 暂停高风险写入 → 确认复制追平 → 切换代理入口 → 恢复原主库为主库 → 验证关键业务 → 现主库调整为备库。 + +实施要点如下: + +1. 故障切换后并不要求立即回切,应以稳定运行为优先。 +2. 仅当原主机重新具备稳定承载能力,且运维窗口允许时,才建议执行回切。 +3. 回切本质上属于一次计划切换,应按计划切换流程执行。 + +### 切换前检查表 + +| 检查项 | 检查要求 | 说明 | +|---|---|---| +| 主备复制状态 | 无严重延迟或异常中断 | 确认备库具备接管条件 | +| WAL 归档状态 | 最近归档成功 | 避免切换与恢复证据缺口 | +| 备库只读可用性 | 可正常连接与查询 | 确认备库实例健康 | +| 代理状态 | `HAProxy`、`PgBouncer` 正常 | 确保切换入口可用 | +| 应用连接配置 | 使用统一代理地址 | 禁止应用直连数据库 IP | +| 定时任务状态 | 高风险写任务可暂停 | 包括批量收费、批量代扣等 | +| 业务通知 | 已通知相关业务与运维人员 | 降低切换窗口影响 | + +### 切换后验证表 + +| 验证项 | 验证要求 | 适用说明 | +|---|---|---| +| 数据库连接 | 应用可正常连接新主库 | 基础可用性验证 | +| 登录与鉴权 | 后台登录、令牌校验正常 | 确认统一平台链路正常 | +| 收费业务 | 单笔收费、销账可执行 | 核心写业务验证 | +| 开账业务 | 账单查询、开账写入正常 | 核心账务链路验证 | +| 发票业务 | 发票申请、查询可用 | 核心票据链路验证 | +| 银行代扣 | 查询和批次处理链路正常 | 涉及外联时至少完成内部链路检查 | +| 日志与监控 | 新主库监控、慢日志、告警恢复正常 | 运维可观测性验证 | +| 备份与归档 | 新主库 WAL 归档恢复正常 | 确认恢复能力未中断 | + +### 当前项目建议切换策略 + +结合当前项目部署口径,建议采用以下策略: + +1. 数据库切换统一由数据库代理层完成,不在 4 台应用服务器上分别切换配置。 +2. 一期建议采用统一读写入口模式,减少应用改造复杂度。 +3. 切换窗口内应重点管控收费、账务、发票、银行代扣等核心写入场景。 +4. 生产切换完成后,应同步检查 `Quartz` 定时任务、银行文件处理任务及发票异步任务是否恢复正常。 + +### 正式文档建议表述 + +福建水务营收系统数据库切换采用“主备切换 + 代理入口切换”的实施模式。计划切换和故障切换均由数据库高可用组件完成主备角色调整,由数据库代理层完成统一接入地址切换,应用系统不直接感知数据库物理节点变化。切换实施前应完成复制状态、归档状态、代理状态和高风险任务状态检查,切换实施后应完成收费、开账、账务、发票、银行代扣等关键业务链路验证,并将原主库按备库角色重新纳入复制体系。 + +## 申请结论 + +为满足福建水务营收系统生产环境对数据库连续运行和灾难恢复的要求,建议甲方按以下原则审批 PostgreSQL 16 容灾资源: + +1. 至少配置 1 台主库服务器、1 台备库服务器和 1 套独立备份归档存储。 +2. 如备库承担正式接管职责,CPU 与内存宜按主库 100% 配置,存储不得低于主库。 +3. 如需形成正式生产级容灾体系,建议采用“同城双可用区主备 + 备份归档”方案。 +4. 如需形成区域级灾难恢复体系,建议进一步增配 1 台异地灾备服务器。 + +综上,PostgreSQL 16 容灾资源申请可分阶段实施,但正式生产环境不宜低于“双节点主备 + 独立备份归档”的最低建设标准。 diff --git a/output/pgsql16_docx_rendered/images/diagram_1.mmd b/output/pgsql16_docx_rendered/images/diagram_1.mmd new file mode 100644 index 0000000..1936ad8 --- /dev/null +++ b/output/pgsql16_docx_rendered/images/diagram_1.mmd @@ -0,0 +1,5 @@ +flowchart TD + APP[应用集群] --> PG1[(主库 Primary)] + PG1 -->|流复制| PG2[(备库 Standby)] + PG1 --> BK[备份归档存储] + PG2 --> BK diff --git a/output/pgsql16_docx_rendered/images/diagram_1.png b/output/pgsql16_docx_rendered/images/diagram_1.png new file mode 100644 index 0000000..c311bc0 Binary files /dev/null and b/output/pgsql16_docx_rendered/images/diagram_1.png differ diff --git a/output/pgsql16_docx_rendered/images/diagram_2.mmd b/output/pgsql16_docx_rendered/images/diagram_2.mmd new file mode 100644 index 0000000..ab82bdc --- /dev/null +++ b/output/pgsql16_docx_rendered/images/diagram_2.mmd @@ -0,0 +1,12 @@ +flowchart LR + subgraph AZ1[生产可用区 A] + APP1[应用节点] + PG1[(主库 Primary)] + end + subgraph AZ2[同城可用区 B] + PG2[(同步备库 Standby)] + end + APP1 --> PG1 + PG1 -->|同步复制| PG2 + PG1 --> BK[备份归档存储] + PG2 --> BK diff --git a/output/pgsql16_docx_rendered/images/diagram_2.png b/output/pgsql16_docx_rendered/images/diagram_2.png new file mode 100644 index 0000000..bbc27a2 Binary files /dev/null and b/output/pgsql16_docx_rendered/images/diagram_2.png differ diff --git a/output/pgsql16_docx_rendered/images/diagram_3.mmd b/output/pgsql16_docx_rendered/images/diagram_3.mmd new file mode 100644 index 0000000..eaadab7 --- /dev/null +++ b/output/pgsql16_docx_rendered/images/diagram_3.mmd @@ -0,0 +1,15 @@ +flowchart LR + subgraph IDC1[生产中心] + PG1[(主库 Primary)] + end + subgraph IDC2[同城灾备中心] + PG2[(同步备库 Standby)] + end + subgraph IDC3[异地灾备中心] + PG3[(异步灾备库 DR)] + end + PG1 -->|同步复制| PG2 + PG1 -->|异步复制| PG3 + PG1 --> BK[备份归档存储] + PG2 --> BK + PG3 --> BK diff --git a/output/pgsql16_docx_rendered/images/diagram_3.png b/output/pgsql16_docx_rendered/images/diagram_3.png new file mode 100644 index 0000000..1c5e0e5 Binary files /dev/null and b/output/pgsql16_docx_rendered/images/diagram_3.png differ diff --git a/output/pgsql16_docx_rendered/images/diagram_4.mmd b/output/pgsql16_docx_rendered/images/diagram_4.mmd new file mode 100644 index 0000000..6b4b24d --- /dev/null +++ b/output/pgsql16_docx_rendered/images/diagram_4.mmd @@ -0,0 +1,5 @@ +flowchart TD + APP[应用集群] --> PG1[(主库 Primary)] + PG1 -->|同步/异步复制| PG2[(同城备库 Standby)] + PG1 -->|基础备份 + WAL 归档| OBJ[异地对象存储/异地备份库] + PG2 -->|基础备份 + WAL 归档| OBJ diff --git a/output/pgsql16_docx_rendered/images/diagram_4.png b/output/pgsql16_docx_rendered/images/diagram_4.png new file mode 100644 index 0000000..53f8821 Binary files /dev/null and b/output/pgsql16_docx_rendered/images/diagram_4.png differ diff --git a/output/pgsql16_docx_rendered/images/diagram_5.mmd b/output/pgsql16_docx_rendered/images/diagram_5.mmd new file mode 100644 index 0000000..a254246 --- /dev/null +++ b/output/pgsql16_docx_rendered/images/diagram_5.mmd @@ -0,0 +1,5 @@ +flowchart TD + APP[应用集群] --> PGB[PgBouncer] + PGB --> HAP[HAProxy RW 入口] + HAP --> PG1[(当前主库 Primary)] + PAT[Patroni] -.主备状态.-> HAP diff --git a/output/pgsql16_docx_rendered/images/diagram_5.png b/output/pgsql16_docx_rendered/images/diagram_5.png new file mode 100644 index 0000000..8cba12d Binary files /dev/null and b/output/pgsql16_docx_rendered/images/diagram_5.png differ diff --git a/output/pgsql16_docx_rendered/images/diagram_6.mmd b/output/pgsql16_docx_rendered/images/diagram_6.mmd new file mode 100644 index 0000000..9f6cc9d --- /dev/null +++ b/output/pgsql16_docx_rendered/images/diagram_6.mmd @@ -0,0 +1,9 @@ +flowchart LR + APP[应用集群] --> PGBRW[PgBouncer RW] + APP --> PGBRO[PgBouncer RO] + PGBRW --> HAPRW[HAProxy RW] + PGBRO --> HAPRO[HAProxy RO] + HAPRW --> PG1[(当前主库 Primary)] + HAPRO --> PG2[(热备库 Standby)] + PAT[Patroni] -.主备状态.-> HAPRW + PAT -.主备状态.-> HAPRO diff --git a/output/pgsql16_docx_rendered/images/diagram_6.png b/output/pgsql16_docx_rendered/images/diagram_6.png new file mode 100644 index 0000000..cff06c0 Binary files /dev/null and b/output/pgsql16_docx_rendered/images/diagram_6.png differ diff --git a/output/planb_docx_rendered/08_Integrated_Deployment_Design_PlanB.rendered.md b/output/planb_docx_rendered/08_Integrated_Deployment_Design_PlanB.rendered.md new file mode 100644 index 0000000..e1cbb98 --- /dev/null +++ b/output/planb_docx_rendered/08_Integrated_Deployment_Design_PlanB.rendered.md @@ -0,0 +1,456 @@ +--- +doc_id: TC-08-INTEGRATED-DEPLOYMENT +doc_role: supplemental_document +authority: secondary +scope: 方案二整体部署 +source_of_truth: false +last_reviewed: 2026-03-26 +retrieval_priority: P1 +--- + +# 福建水务营收系统整体部署方案说明书 + +## 文档信息 +| 项目信息 | 详情 | +|---------|------| +| **项目名称** | 福建水务营收系统 | +| **文档类型** | 技术专题说明 | +| **方案定位** | 已采纳 PostgreSQL 16 方案二作为数据库部署方案后的整体部署方案 | +| **文档版本** | v1.0 | +| **编写日期** | 2026-03-26 | +| **文档状态** | ✅ 正式建议稿 | + +## 目录 + +1. 编制目的 +2. 方案前提 +3. 整体部署原则 +4. 软件拓扑图 +5. 主机部署图 +6. 数据库访问链路图 +7. 备份恢复链路图 +8. 网络拓扑图 +9. 主机角色与部署内容 +10. 资源配置建议 +11. 资源审批汇总表 +12. 基础软件与版本清单 +13. 部署方式说明 +14. 网络需求 +15. 网络开通清单 +16. 访问控制与端口建议 +17. 实施步骤 +18. 验收标准 +19. 部署结论 + +## 编制目的 + +本文档用于在已采纳 PostgreSQL 16 方案二作为数据库部署方案的前提下,形成覆盖前端、后端、中间件、静态存储及数据库的一体化整体部署方案,作为甲方进行主机、网络、存储与基础软件资源审批的依据。 + +## 方案前提 + +本方案以以下前提为基础: + +1. 数据库部署方案已采纳 `docs/design/03_Technical_Design/07_PostgreSQL16_DR_Resource_Application.md` 中的方案二,即“同城双可用区主备容灾方案”。 +2. 前端继续采用 `Nginx + Vue3` 的静态部署模式。 +3. 对外访问经甲方或第三方管理的公网入口进行薄转发,不纳入本方案主机资源范围。 +4. 内网 `Nginx` 单独部署,负责将开放 API 端点负载到两台业务应用节点。 +5. 两台业务应用节点内均部署 `Spring Boot Gateway`,作为微服务集群统一接入入口,并同时承载业务服务。 +6. 中间件集中部署在 1 台主机上。 +7. 数据库控制组件与中间件部署在同一台主机上。 +8. `MinIO` 作为静态存储与对象存储统一入口,与中间件同机部署。 +9. 一期口径下,原“数据与中间件节点”和“文件存储节点”合并为 1 台综合节点。 +10. 银行文件交换采用独立 `SFTP/FTP` 文件交换服务器,作为银行送盘、回盘、对账文件交换专用前置机。 +11. 当前已知可用于本方案的业务与基础设施主机资源如下: + - 内网 Nginx 入口节点:8 核 CPU / 16 GB 内存 / 300 GB 存储,共 1 台 + - 业务应用节点(主):32 核 CPU / 64 GB 内存 / 300 GB 存储,共 2 台 + - 数据、中间件与文件存储综合节点:16 核 CPU / 32 GB 内存 / 2300 GB 存储,共 1 台 + - 银行文件交换服务器:2 核 CPU / 8 GB 内存 / 200 GB 存储,共 1 台 + - 另行配置 PostgreSQL 主库与热备库各 1 台 + +## 整体部署原则 + +整体部署遵循以下原则: + +1. 前后端逻辑分层部署,避免数据库节点与业务节点混部。 +2. 中间件集中部署,降低主机数量和运维复杂度。 +3. 数据库主备分离部署,避免与中间件、应用节点混部。 +4. 数据库控制组件集中部署,通过统一代理地址屏蔽主备切换细节。 +5. 网络按公网接入区、内网接入区、应用区、中间件与文件存储区、银行文件交换区、数据区分层隔离。 +6. 在现有主机数量约束下,优先复用现有业务应用节点、内网入口节点及综合节点资源。 + +## 软件拓扑图 + +**图 4-1 访问与应用软件拓扑图** + +![图1](images/diagram_1.png) + +图说明: + +1. PC 端用户通过内网直接访问内网 Nginx。 +2. 移动端用户和第三方系统先经公网入口薄转发,再由公网入口转发到内网 Nginx。 +3. 内网 Nginx 将开放 API 端点负载到两台业务应用节点。 +4. 两台业务应用节点内均部署 Spring Boot Gateway,作为微服务集群统一接入入口。 +5. 每台业务应用节点内的 Gateway 再向本节点业务服务转发请求。 + +**图 4-2 综合服务软件拓扑图** + +![图2](images/diagram_2.png) + +图说明: + +1. 综合节点承接缓存、配置、对象存储及数据库控制组件。 +2. 两台业务应用节点统一访问综合节点,不直接连接数据库。 + +**图 4-3 数据与备份软件拓扑图** + +![图3](images/diagram_3.png) + +图说明: + +1. 数据库控制组件经由主库提供数据库访问能力。 +2. 主库与热备之间通过同步复制保持一致性。 +3. 银行文件交换服务器承接送盘、回盘、对账文件交换能力。 +4. MinIO 与银行文件交换服务器分别将各自数据归档到备份归档存储。 + +## 主机部署图 + +**图 4-4 主机部署总览图** + +![图4](images/diagram_4.png) + +图说明: + +1. 内网 Nginx 入口节点作为我方统一接入入口,承接 API 转发与内部负载均衡能力。 +2. 业务应用节点 1 和业务应用节点 2 组成应用主机集群,节点内同时部署 Spring Boot Gateway 与核心业务服务。 +3. 综合节点集中承载 Redis、Nacos、MinIO、HAProxy、PgBouncer、Patroni,并同时访问数据库主库与热备服务器。 +4. 独立的 SFTP/FTP 文件交换服务器承接银行送盘、回盘、对账文件交换,并由业务应用节点直接访问。 +5. 数据库主库服务器与数据库热备服务器独立部署,满足数据库高可用要求。 + +主机部署细化说明: + +1. 内网 Nginx 入口节点部署 `Nginx`,负责开放 API 转发和内部负载均衡。 +2. 两台业务应用节点分别部署 `Spring Boot Gateway` 与业务服务实例。 +3. 综合节点部署 `Redis`、`Nacos`、`MinIO`、`HAProxy`、`PgBouncer`、`Patroni`,并负责访问数据库主库与热备服务器。 +4. SFTP/FTP 文件交换服务器部署银行文件交换服务及送盘、回盘、对账目录,由业务应用节点直接访问。 +5. 数据库主库服务器部署 PostgreSQL 主库实例,数据库热备服务器部署 PostgreSQL 热备实例。 + +## 数据库访问链路图 + +**图 4-5 数据库访问链路图** + +![图5](images/diagram_5.png) + +图说明: + +1. 业务应用不直接连接数据库主机。 +2. PgBouncer 负责连接池。 +3. HAProxy 负责数据库入口代理。 +4. Patroni 负责主备状态管理与切换控制。 +5. 综合节点侧的数据库控制组件会同时访问主库和热备,用于探测、控制和切换。 + +## 备份恢复链路图 + +**图 4-6 备份恢复链路图** + +![图6](images/diagram_6.png) + +图说明: + +1. 主库和热备均向备份归档存储输出备份数据。 +2. 综合节点中的 MinIO 文件数据也纳入备份范围。 +3. 备份归档存储作为数据库恢复与文件恢复的统一入口。 + +## 网络拓扑图 + +**图 4-7 网络拓扑图** + +![图7](images/diagram_7.png) + +图说明: + +1. PC 端用户通过内网直接访问内网 Nginx,移动端用户和第三方系统通过公网入口薄转发,再转发至内网 Nginx。 +2. 内网 Nginx 统一负载到两台业务应用节点,两台节点内部均部署 Spring Boot Gateway。 +3. 业务应用节点一方面直接访问 SFTP/FTP 文件交换服务器,另一方面访问综合节点获取缓存、配置、文件和数据库代理能力。 +4. 综合节点访问 PostgreSQL 主库与热备,数据库主备及综合节点均接入备份归档存储。 + +## 主机角色与部署内容 + +| 层级 | 主机角色 | 数量 | 主要部署内容 | 说明 | +|---|---|---:|---|---| +| 接入层 | 内网 Nginx 入口节点 | 1 台 | Nginx、API 转发、内部负载均衡 | 作为我方统一内网接入入口,承接开放 API 转发 | +| 应用层 | 业务应用节点(主) | 2 台 | Spring Boot Gateway、Spring Boot 业务服务 | 承载微服务集群接入与表务、抄表、收费、账务、发票、报表等核心应用服务 | +| 综合支撑层 | 数据、中间件与文件存储综合节点 | 1 台 | Redis、Nacos、MinIO、HAProxy、PgBouncer、Patroni | 中间件、数据库控制与文件存储同机部署 | +| 银行交换层 | SFTP/FTP 文件交换服务器 | 1 台 | SFTP/FTP 服务、送盘目录、回盘目录、对账目录、归档目录 | 作为银行文件交换专用前置机 | +| 数据库层 | PostgreSQL 主库服务器 | 1 台 | PostgreSQL 16 Primary | 部署在可用区 A | +| 数据库层 | PostgreSQL 热备服务器 | 1 台 | PostgreSQL 16 Standby | 部署在可用区 B | +| 备份层 | 备份归档存储 | 1 套 | 基础备份、WAL 归档、恢复副本 | 独立备份空间 | + +## 资源配置建议 + +| 主机角色 | 数量 | 建议配置 | 备注 | +|---|---:|---|---| +| 内网 Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | 承载内网 Nginx、API 转发和内部负载均衡 | +| 业务应用节点(主) | 2 台 | 32 核 CPU / 64 GB 内存 / 300 GB 存储 | 承载 Spring Boot Gateway 及表务、抄表、收费、账务、发票、报表等核心应用服务 | +| 数据、中间件与文件存储综合节点 | 1 台 | 16 核 CPU / 32 GB 内存 / 2300 GB 存储 | 承载缓存、配置治理、数据库控制、图片、附件等非结构化数据 | +| SFTP/FTP 文件交换服务器 | 1 台 | 2 核 CPU / 8 GB 内存 / 200 GB 存储 | 承载银行送盘、回盘、对账、归档文件交换,建议独立部署 | +| PostgreSQL 主库服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | 生产写入节点,不计入上述已知 4 类业务主机 | +| PostgreSQL 热备服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | 正式切换接管节点,不计入上述已知 4 类业务主机 | +| 备份归档存储 | 1 套 | 可用空间 4 TB 至 6 TB | 存放全量备份与 WAL 归档 | + +### 银行文件交换服务器容量估算 + +按 20 万用户、5 年保留期估算,银行文件交换服务器主要承载代扣、托收、对账等批次文件,不承载全量业务明细数据库。 + +估算依据如下: + +1. 银行代扣、托收、对账文件以批次文件为主,不是每位用户每天形成独立文件。 +2. 按“仅覆盖银行代扣/托收用户,且按月批次送盘/回盘一次”的业务节奏估算,单个批次文件大小通常在 `10 MB ~ 40 MB` 量级。 +3. 按每月送盘、回盘、对账共 `3` 类核心文件估算,月文件量约为: + - `30 MB ~ 120 MB / 月` +4. 按 1 年估算,原始批次文件总量约为: + - `0.36 GB ~ 1.44 GB / 年` +5. 考虑归档副本、异常重传、中间文件和运行日志,按 `10 ~ 15` 倍放大后,5 年总量通常约为: + - `20 GB ~ 110 GB` + +因此,按最节约的一期规划,银行文件交换服务器可按 `2 核 CPU / 8 GB 内存 / 200 GB 存储` 配置满足送盘、回盘、对账文件交换与 5 年留存需要;如后续银行通道数量增加、并发文件交换增加或保留策略扩大,再扩容至 `4 核 / 8 GB / 500 GB` 即可。建议设置 `70%` 容量预警,并预留扩容机制。 + +## 资源审批汇总表 + +以下汇总表用于甲方进行主机、存储、网络及基础软件部署范围审批。 + +| 序号 | 资源名称 | 数量 | 规格 | 部署内容 | 用途说明 | 建议口径 | +|---|---:|---:|---|---|---|---| +| 1 | 内网 Nginx 入口节点 | 1 台 | 8 核 CPU / 16 GB 内存 / 300 GB 存储 | Nginx、API 转发、内部负载均衡 | 我方统一内网接入入口 | 可利旧优先 | +| 2 | 业务应用节点(主) | 2 台 | 32 核 CPU / 64 GB 内存 / 300 GB 存储 | Spring Boot Gateway、Spring Boot 核心业务服务 | 承载微服务接入与核心业务服务 | 现有资源纳入正式方案 | +| 3 | 数据、中间件与文件存储综合节点 | 1 台 | 16 核 CPU / 32 GB 内存 / 2300 GB 存储 | Redis、Nacos、MinIO、HAProxy、PgBouncer、Patroni | 承载缓存、配置治理、数据库控制、图片、附件、导出文件等能力 | 现有资源纳入正式方案 | +| 4 | SFTP/FTP 文件交换服务器 | 1 台 | 2 核 CPU / 8 GB 内存 / 200 GB 存储 | SFTP/FTP 服务、送盘/回盘/对账目录、归档目录 | 承载银行文件交换与目录隔离 | 按最节约一期规划建议新增或单独利旧 | +| 5 | PostgreSQL 主库服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | PostgreSQL 16 Primary | 承载生产写入 | 建议单独配置 | +| 6 | PostgreSQL 热备服务器 | 1 台 | 24 核 CPU / 48 GB 内存 / 1 TB NVMe SSD | PostgreSQL 16 Standby | 承载正式切换接管 | 建议单独配置 | +| 7 | 备份归档存储 | 1 套 | 可用空间 4 TB 至 6 TB | 基础备份、WAL 归档、恢复副本 | 保障恢复与审计追溯 | 可利旧或新增存储空间 | + +### 审批建议 + +1. 业务应用节点、综合节点、内网 Nginx 入口节点可优先按现有资源纳入实施范围。 +2. SFTP/FTP 文件交换服务器建议单独审批,以满足银行文件交换隔离和安全要求。 +3. PostgreSQL 主库与热备库建议作为单独审批项,避免与现有业务节点混部。 +4. 备份归档存储建议作为单独资源项审批,避免后期因备份空间不足影响正式上线。 + +## 基础软件与版本清单 + +| 类别 | 软件名称 | 建议版本 | 部署位置 | 说明 | +|---|---|---|---|---| +| 操作系统 | Linux 发行版 | openEuler 20.03+ / CentOS 7.9+ | 全部服务器 | 按甲方基础环境标准选定 | +| 运行环境 | JDK | 17 | 业务应用节点 | Spring Boot 运行环境 | +| 接入层 | Nginx | 1.20+ | 内网 Nginx 入口节点 | 内网 API 转发、内部负载均衡 | +| 网关服务 | Spring Boot Gateway | 3.x | 业务应用节点 | 微服务集群统一接入 | +| 业务服务 | Spring Boot | 3.x | 业务应用节点 | 核心业务服务框架 | +| 银行文件交换 | SFTP/FTP 服务 | 稳定版 | SFTP/FTP 文件交换服务器 | 银行送盘、回盘、对账文件交换 | +| 数据库 | PostgreSQL | 16 | 主库、热备库 | 主备数据库部署 | +| 缓存 | Redis | 6.2+ | 综合节点 | 缓存、会话、轻量级消息能力 | +| 配置中心 | Nacos | 2.x | 综合节点 | 配置治理与注册管理 | +| 对象存储 | MinIO | RELEASE 稳定版 | 综合节点 | 图片、附件、导出文件存储 | +| 数据库代理 | HAProxy | 2.x | 综合节点 | 数据库读写入口代理 | +| 连接池 | PgBouncer | 1.2x+ | 综合节点 | 统一数据库连接池 | +| 高可用控制 | Patroni | 稳定版 | 综合节点 | 主备状态管理与切换 | + +## 部署方式说明 + +### 总体部署原则 + +本方案的部署方式遵循以下原则: + +1. 入口代理类组件优先采用 `Docker` 部署,并可优先评估 `host` 网络模式。 +2. 业务应用优先采用 `Docker` 部署,但不建议使用 `host` 网络模式。 +3. 数据库主备优先采用物理机或虚拟机直接部署,不建议容器化承载 PostgreSQL 主备本体。 +4. 数据库控制组件如需容器化,应优先选择轻量代理组件容器化,高可用控制组件仍以直接部署为优先。 + +### 组件部署方式建议 + +| 组件 | 部署节点 | 建议部署方式 | 是否建议 `host` 模式 | 说明 | +|---|---|---|---|---| +| 内网 Nginx | 内网 Nginx 入口节点 | Docker 部署 | 是,优先建议 | 作为我方统一接入入口,便于端口管理与转发 | +| Spring Boot Gateway | 业务应用节点(主) | Docker 部署 | 否 | 作为微服务统一接入入口,建议与业务服务同节点部署 | +| Spring Boot 应用 | 业务应用节点(主) | Docker 部署 | 否 | 便于发布、回滚、扩容,保留容器网络隔离 | +| SFTP/FTP 服务 | SFTP/FTP 文件交换服务器 | 物理机/虚拟机直接部署 | 否 | 作为银行文件交换专用服务,建议独立部署并做目录隔离 | +| Redis | 综合节点 | Docker 部署 | 可选 | 可采用普通容器网络,必要时可评估 `host` | +| Nacos | 综合节点 | Docker 部署 | 可选 | 默认容器网络即可,便于配置治理 | +| HAProxy | 综合节点 | Docker 部署 | 是,优先建议 | 作为数据库代理入口,适合 `host` 模式 | +| PgBouncer | 综合节点 | Docker 部署 | 是,优先建议 | 作为数据库连接池入口,适合 `host` 模式 | +| Patroni | 综合节点 | 物理机/虚拟机直接部署 | 否 | 建议与系统服务集成,便于运维与切换控制 | +| MinIO | 综合节点 | Docker 部署 | 否 | 更关注数据盘挂载与对象存储目录管理 | +| PostgreSQL 主库 | 主库服务器 | 物理机/虚拟机直接部署 | 否 | 核心数据库本体不建议容器化 | +| PostgreSQL 热备 | 热备服务器 | 物理机/虚拟机直接部署 | 否 | 高可用数据库本体不建议容器化 | + +### 优先采用 Docker 且可使用 `host` 模式的组件 + +结合当前资源结构,建议优先采用 `Docker + host` 模式的组件如下: + +1. `内网 Nginx` +2. `HAProxy` +3. `PgBouncer` + +采用 `host` 模式的主要原因如下: + +1. 直接监听固定服务端口,减少端口映射复杂度。 +2. 更便于与主机防火墙、域名、VIP、健康检查配合。 +3. 对于入口类与代理类组件,运维体验更接近直接部署。 + +### 不建议采用 `host` 模式的组件 + +以下组件不建议采用 `Docker + host` 模式: + +1. `Spring Boot` 业务应用:应保留容器网络隔离,便于扩容和端口治理。 +2. `MinIO`:应以存储挂载与数据目录管理为重点,不依赖 `host` 模式。 +3. `PostgreSQL 主库 / 热备`:数据库本体优先直接部署,不建议容器化。 +4. `Patroni`:建议直接部署,便于与数据库高可用控制链路协同。 + +## 网络需求 + +### 1. 网络分区要求 + +| 网络分区 | 部署对象 | 访问要求 | +|---|---|---| +| 公网接入区 | 公网入口薄转发 | 对外提供 HTTPS 访问,不纳入我方主机资源 | +| 应用区 | 业务应用节点 | 仅允许内网接入区与运维区访问 | +| 中间件与文件存储区 | Redis、Nacos、MinIO、数据库控制组件 | 仅允许业务应用节点与运维区访问 | +| 银行文件交换区 | SFTP/FTP 文件交换服务器 | 仅允许业务应用节点、银行专线或授权外联链路访问 | +| 数据区 | PostgreSQL 主库、热备库、备份存储 | 严格限制,仅允许中间件控制主机和运维区访问 | + +### 2. 带宽与时延要求 + +| 网络链路 | 建议要求 | 说明 | +|---|---|---| +| 公网入口薄转发到内网 Nginx | 千兆网络 | 满足公网入口转发 | +| 内网 Nginx 到业务应用 | 千兆网络 | 满足开放 API 转发与网关接入 | +| 业务应用到综合节点 | 千兆网络 | 满足缓存、配置治理、文件访问与数据库代理访问 | +| 业务应用到 SFTP/FTP 服务器 | 千兆网络 | 满足送盘、回盘、对账文件交换 | +| 银行链路到 SFTP/FTP 服务器 | 千兆网络或专线 | 满足银行文件交换与目录投递 | +| 综合节点到数据库 | 千兆网络以上 | 满足数据库代理与健康检查 | +| 主备复制链路 | 不低于 10 Gbps | 支撑同步复制 | +| 同城主备时延 | 建议低于 2 ms | 支撑稳定同步复制 | +| 数据库到备份存储 | 千兆网络以上 | 满足基础备份与 WAL 归档传输 | +| 综合节点到备份存储 | 千兆网络以上 | 满足文件数据备份与归档传输 | + +### 3. 网络开通要求 + +| 类别 | 开通要求 | 说明 | +|---|---|---| +| 对外访问 | 开通 443 端口 | 提供统一 HTTPS 入口 | +| 公网入口薄转发访问内网 Nginx | 开通公网入口到内网 Nginx 的转发端口 | 仅授权链路访问 | +| 内网 Nginx 访问应用 | 开通内网 Nginx 到业务应用的 API / 网关端口 | 仅内网访问 | +| 应用访问综合节点 | 开通 Redis、Nacos、MinIO、PgBouncer 相关端口 | 仅应用区访问 | +| 业务应用访问 SFTP/FTP 服务器 | 开通 SFTP/FTP 相关端口 | 用于银行文件送盘、回盘、对账交换 | +| 银行链路访问 SFTP/FTP 服务器 | 开通 FTP/SFTP 服务端口 | 仅银行授权链路访问 | +| 综合节点访问数据库 | 开通 PostgreSQL 5432 及健康检查相关端口 | 仅综合节点访问 | +| 运维访问 | 开通运维区到各层必要管理端口 | 用于巡检、发布、恢复、切换 | + +## 网络开通清单 + +| 源区域/源主机 | 目标区域/目标主机 | 协议/端口 | 用途 | 开通要求 | +|---|---|---|---|---| +| 外部用户 | 公网入口薄转发 | HTTPS/443 | 页面访问、接口入口 | 对外开放 | +| 公网入口薄转发 | 内网 Nginx 入口节点 | HTTP/HTTPS/转发端口 | 公网访问转入内网入口 | 授权链路放通 | +| 内网 Nginx 入口节点 | 业务应用节点(主) | HTTP/HTTPS/网关端口 | 内网 API 转发与微服务接入 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/6379 | Redis 访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/8848 | Nacos 访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/6432 | PgBouncer 访问 | 内网放通 | +| 业务应用节点(主) | 综合节点 | TCP/9000,9001 | MinIO 文件访问 | 内网放通 | +| 业务应用节点(主) | SFTP/FTP 文件交换服务器 | TCP/21 或 22 | 银行送盘、回盘、对账文件交换 | 内网放通 | +| 银行专线或授权外联链路 | SFTP/FTP 文件交换服务器 | TCP/21 或 22 | 银行文件目录投递与回收 | 仅授权链路放通 | +| 综合节点 | PostgreSQL 主库服务器 | TCP/5432 | 数据库代理与控制访问 | 内网放通 | +| 综合节点 | PostgreSQL 热备服务器 | TCP/5432 | 数据库代理、状态探测与控制访问 | 内网放通 | +| PostgreSQL 主库服务器 | PostgreSQL 热备服务器 | TCP/5432 | 主备同步复制 | 高带宽、低时延专用链路 | +| PostgreSQL 主库/热备库 | 备份归档存储 | TCP/存储协议端口 | 基础备份与 WAL 归档 | 内网放通 | +| 综合节点 | 备份归档存储 | TCP/存储协议端口 | 文件归档与备份 | 内网放通 | +| 运维管理终端 | 各节点 | SSH/22 及必要管理端口 | 运维、巡检、发布、恢复 | 仅运维区放通 | + +## 访问控制与端口建议 + +| 服务 | 典型端口 | 访问范围 | +|---|---|---| +| Nginx/HTTPS | 443 | 对外开放 | +| Spring Boot Gateway / 业务应用端口 | 项目自定义端口 | 仅内网 Nginx 与内网调用 | +| Redis | 6379 | 仅业务应用与运维可访问 | +| Nacos | 8848 | 仅业务应用与运维可访问 | +| MinIO | 9000/9001 | 仅业务应用与运维可访问 | +| SFTP/FTP 服务 | 21 或 22 | 仅业务应用节点、运维和银行授权链路可访问 | +| PgBouncer | 6432 | 仅业务应用可访问 | +| HAProxy | 5000 或项目定义端口 | 仅 PgBouncer 与运维可访问 | +| PostgreSQL | 5432 | 仅数据库控制主机与运维可访问 | + +## 实施步骤 + +### 1. 基础资源准备 + +1. 确认内网 Nginx 入口节点、业务应用节点、综合节点是否为利旧资源。 +2. 完成 SFTP/FTP 文件交换服务器、PostgreSQL 主库服务器、热备服务器及备份归档存储审批。 +3. 完成各网络分区、IP、域名、SSL 证书、路由及防火墙策略准备。 + +### 2. 基础软件安装 + +1. 安装操作系统并完成安全基线加固。 +2. 在业务应用节点安装 JDK、部署业务运行环境。 +3. 在内网 Nginx 入口节点安装 Nginx。 +4. 在综合节点安装 Redis、Nacos、HAProxy、PgBouncer、Patroni、MinIO。 +5. 在 SFTP/FTP 文件交换服务器安装 SFTP/FTP 服务并配置目录结构。 +6. 在数据库主备节点安装 PostgreSQL 16。 + +### 3. 数据库主备部署 + +1. 初始化 PostgreSQL 主库。 +2. 初始化 PostgreSQL 热备库并建立同步复制。 +3. 配置 Patroni、HAProxy、PgBouncer 联动。 +4. 配置基础备份与 WAL 归档。 +5. 配置业务应用节点到 SFTP/FTP 文件交换服务器的文件交换目录映射。 + +### 4. 应用与存储部署 + +1. 在业务应用节点部署 Spring Boot Gateway 和业务应用服务。 +2. 在内网 Nginx 入口节点配置 API 转发和内部负载均衡规则。 +3. 在综合节点初始化 MinIO 存储桶和访问策略。 +4. 在 SFTP/FTP 文件交换服务器配置送盘、回盘、对账、归档目录。 +5. 配置业务应用到 Redis、Nacos、PgBouncer、MinIO 的连接参数。 + +### 5. 联调与演练 + +1. 完成前后端联调。 +2. 完成中间件访问验证。 +3. 完成数据库主备同步验证。 +4. 完成文件上传、下载、归档验证。 +5. 完成主备切换演练与回切演练。 + +### 6. 上线准备与正式投产 + +1. 完成上线前巡检与问题清零。 +2. 确认监控、日志、备份、告警正常。 +3. 完成上线窗口审批。 +4. 按上线顺序切换生产流量。 + +## 验收标准 + +| 验收项 | 验收标准 | 说明 | +|---|---|---| +| 对外访问 | 用户可通过统一域名正常访问系统 | 公网入口薄转发与内网 Nginx 链路正常 | +| 业务应用可用性 | 表务、抄表、收费、账务、发票、报表等核心服务正常 | 业务主流程可执行 | +| Redis 可用性 | 缓存读写正常 | 中间件能力正常 | +| Nacos 可用性 | 配置下发正常 | 配置治理能力正常 | +| MinIO 可用性 | 图片、附件上传下载正常 | 文件存储能力正常 | +| SFTP/FTP 文件交换 | 送盘、回盘、对账目录读写正常 | 银行文件交换能力正常 | +| 数据库连接能力 | 业务应用可通过 PgBouncer 正常连接数据库 | 代理接入正常 | +| PostgreSQL 主备同步 | 主备复制正常,无严重延迟 | 高可用基础正常 | +| 数据库切换演练 | 主备切换成功,业务恢复正常 | 高可用能力可验证 | +| 备份归档 | 基础备份与 WAL 归档正常 | 恢复能力可验证 | +| 运维监控 | 关键节点监控、日志、告警正常 | 运维可观测性正常 | + +## 部署结论 + +在已采纳 PostgreSQL 16 方案二作为数据库部署方案的前提下,建议福建水务营收系统采用“前后端分层部署 + 中间件集中部署 + 数据库主备分离部署”的整体部署模式。 + +本方案的最终结论如下: + +1. 公网入口薄转发不纳入我方主机资源;我方实际部署的统一接入入口为内网 Nginx 入口节点。 +2. 2 台业务应用节点作为核心业务集群,节点内同时部署 Spring Boot Gateway 和业务服务,承接微服务统一接入与核心业务处理。 +3. 综合节点集中承载 Redis、Nacos、MinIO 及数据库控制组件,进一步压缩一期主机数量并降低部署复杂度。 +4. 新增 1 台 SFTP/FTP 文件交换服务器,作为银行送盘、回盘、对账文件交换专用前置机。 +5. PostgreSQL 16 采用同城双可用区 1 主 1 热备部署,满足高可用要求。 +6. 网络采用公网接入区、内网接入区、应用区、中间件与文件存储区、银行文件交换区、数据区分层隔离模式,以满足安全性、可维护性和资源审批要求。 diff --git a/output/planb_docx_rendered/images/diagram_1.mmd b/output/planb_docx_rendered/images/diagram_1.mmd new file mode 100644 index 0000000..b45b2df --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_1.mmd @@ -0,0 +1,31 @@ +flowchart LR + classDef source fill:#ecfeff,stroke:#0891b2,stroke-width:1.2px,color:#083344; + classDef access fill:#fff7ed,stroke:#ea580c,stroke-width:1.4px,color:#7c2d12; + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.4px,color:#1e3a8a; + + U1[PC 端用户]:::source + U2[移动端用户]:::source + U3[第三方系统]:::source + G1[公网入口薄转发]:::access + G2[内网 Nginx]:::access + + subgraph APP1[业务应用节点 1] + direction TB + A1G[Spring Boot Gateway]:::app + A1B[业务服务]:::app + end + + subgraph APP2[业务应用节点 2] + direction TB + A2G[Spring Boot Gateway]:::app + A2B[业务服务]:::app + end + + U1 -->|内网访问| G2 + U2 -->|HTTPS 443| G1 + U3 -->|接口访问| G1 + G1 -->|开放 API 转发| G2 + G2 -->|负载到节点 1| A1G + G2 -->|负载到节点 2| A2G + A1G --> A1B + A2G --> A2B diff --git a/output/planb_docx_rendered/images/diagram_1.png b/output/planb_docx_rendered/images/diagram_1.png new file mode 100644 index 0000000..6c0861b Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_1.png differ diff --git a/output/planb_docx_rendered/images/diagram_2.mmd b/output/planb_docx_rendered/images/diagram_2.mmd new file mode 100644 index 0000000..d652088 --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_2.mmd @@ -0,0 +1,17 @@ +flowchart TB + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.4px,color:#1e3a8a; + classDef service fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.4px,color:#4c1d95; + + A1[业务应用节点 1
Gateway + Biz]:::app + A2[业务应用节点 2
Gateway + Biz]:::app + + subgraph M[综合节点] + direction TB + M2[Redis / Nacos / MinIO]:::service + M3[HAProxy / PgBouncer / Patroni]:::service + end + + A1 -->|缓存 配置 文件访问| M2 + A2 -->|缓存 配置 文件访问| M2 + A1 -->|数据库代理访问| M3 + A2 -->|数据库代理访问| M3 diff --git a/output/planb_docx_rendered/images/diagram_2.png b/output/planb_docx_rendered/images/diagram_2.png new file mode 100644 index 0000000..e455c04 Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_2.png differ diff --git a/output/planb_docx_rendered/images/diagram_3.mmd b/output/planb_docx_rendered/images/diagram_3.mmd new file mode 100644 index 0000000..6861edc --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_3.mmd @@ -0,0 +1,20 @@ +flowchart LR + classDef service fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.4px,color:#4c1d95; + classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.4px,color:#064e3b; + classDef backup fill:#fffbeb,stroke:#d97706,stroke-width:1.4px,color:#78350f; + classDef bank fill:#fef2f2,stroke:#dc2626,stroke-width:1.4px,color:#7f1d1d; + + M2[MinIO / 附件文件]:::service + M3[HAProxy / PgBouncer / Patroni]:::service + F1[SFTP / FTP 文件交换服务器]:::bank + D1[(PostgreSQL 主库)]:::data + D2[(PostgreSQL 热备)]:::data + B1[备份归档存储]:::backup + + M3 -->|数据库访问| D1 + M3 -->|状态感知| D2 + D1 -->|同步复制| D2 + D1 -->|基础备份 WAL 归档| B1 + D2 -->|备份副本| B1 + M2 -->|对象存储归档| B1 + F1 -->|银行文件归档| B1 diff --git a/output/planb_docx_rendered/images/diagram_3.png b/output/planb_docx_rendered/images/diagram_3.png new file mode 100644 index 0000000..6f69e1b Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_3.png differ diff --git a/output/planb_docx_rendered/images/diagram_4.mmd b/output/planb_docx_rendered/images/diagram_4.mmd new file mode 100644 index 0000000..9e0a43a --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_4.mmd @@ -0,0 +1,23 @@ +flowchart LR + classDef gateway fill:#fff7ed,stroke:#ea580c,stroke-width:1.2px,color:#7c2d12; + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.2px,color:#1e3a8a; + classDef middle fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.2px,color:#4c1d95; + classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.2px,color:#064e3b; + + GW[内网 Nginx 入口节点]:::gateway + APP1[业务应用节点 1
内含 Gateway]:::app + APP2[业务应用节点 2
内含 Gateway]:::app + MID[综合节点]:::middle + FTP[SFTP / FTP 文件交换服务器]:::middle + DB1[(数据库主库服务器)]:::data + DB2[(数据库热备服务器)]:::data + + GW --> APP1 + GW --> APP2 + APP1 --> MID + APP2 --> MID + APP1 --> FTP + APP2 --> FTP + MID --> DB1 + MID --> DB2 + DB1 --> DB2 diff --git a/output/planb_docx_rendered/images/diagram_4.png b/output/planb_docx_rendered/images/diagram_4.png new file mode 100644 index 0000000..9b3efe5 Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_4.png differ diff --git a/output/planb_docx_rendered/images/diagram_5.mmd b/output/planb_docx_rendered/images/diagram_5.mmd new file mode 100644 index 0000000..7cf1c77 --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_5.mmd @@ -0,0 +1,16 @@ +flowchart LR + A1[业务应用节点 1] + A2[业务应用节点 2] + P[PgBouncer] + H[HAProxy] + M[(主库)] + S[(热备)] + T[Patroni] + + A1 -->|统一代理地址| P + A2 -->|统一代理地址| P + P -->|连接池复用| H + H -->|写流量| M + H -.热备探测 / 状态访问.-> S + M -->|同步复制| S + T -.主备状态管理.-> H diff --git a/output/planb_docx_rendered/images/diagram_5.png b/output/planb_docx_rendered/images/diagram_5.png new file mode 100644 index 0000000..c203ee5 Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_5.png differ diff --git a/output/planb_docx_rendered/images/diagram_6.mmd b/output/planb_docx_rendered/images/diagram_6.mmd new file mode 100644 index 0000000..5479ee8 --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_6.mmd @@ -0,0 +1,5 @@ +flowchart LR + DB1[(PostgreSQL 主库)] --> BK[备份归档存储] + DB2[(PostgreSQL 热备)] --> BK + MID[综合节点 / MinIO] --> BK + BK --> REC[恢复与演练入口] diff --git a/output/planb_docx_rendered/images/diagram_6.png b/output/planb_docx_rendered/images/diagram_6.png new file mode 100644 index 0000000..af96320 Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_6.png differ diff --git a/output/planb_docx_rendered/images/diagram_7.mmd b/output/planb_docx_rendered/images/diagram_7.mmd new file mode 100644 index 0000000..2836071 --- /dev/null +++ b/output/planb_docx_rendered/images/diagram_7.mmd @@ -0,0 +1,78 @@ +flowchart TB + classDef user fill:#ecfeff,stroke:#0891b2,stroke-width:1.2px,color:#083344; + classDef access fill:#fff7ed,stroke:#ea580c,stroke-width:1.2px,color:#7c2d12; + classDef app fill:#eff6ff,stroke:#2563eb,stroke-width:1.2px,color:#1e3a8a; + classDef ext fill:#fef3c7,stroke:#d97706,stroke-width:1.2px,color:#78350f; + classDef middle fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.2px,color:#4c1d95; + classDef data fill:#ecfdf5,stroke:#059669,stroke-width:1.2px,color:#064e3b; + classDef backup fill:#fdf2f8,stroke:#db2777,stroke-width:1.2px,color:#831843; + + subgraph U[访问来源] + direction LR + PC[PC 端用户] + M[移动端用户] + T[第三方系统] + end + + subgraph A[接入层] + direction TB + PGW[公网入口薄转发] + IGW[内网 Nginx] + end + + subgraph B[应用层] + direction LR + APP1[业务应用节点 1
Spring Boot Gateway] + APP2[业务应用节点 2
Spring Boot Gateway] + end + + subgraph E[外部交换区] + direction TB + FX[SFTP/FTP 文件交换服务器] + end + + subgraph C[综合服务层] + direction TB + MID[综合节点] + end + + subgraph D[数据层] + direction LR + DBM[(PostgreSQL 主库)] + DBS[(PostgreSQL 热备)] + end + + subgraph BK[备份归档层] + direction TB + STORE[备份归档存储] + end + + PC -->|内网访问| IGW + M -->|公网 HTTPS| PGW + T -->|公网 HTTPS/接口| PGW + PGW -->|转发| IGW + + IGW -->|负载均衡| APP1 + IGW -->|负载均衡| APP2 + + APP1 -->|文件交换| FX + APP2 -->|文件交换| FX + + APP1 -->|业务访问| MID + APP2 -->|业务访问| MID + + MID -->|数据库访问| DBM + MID -->|状态感知/只读访问| DBS + DBM -->|主备同步| DBS + + DBM -->|备份/WAL 归档| STORE + DBS -->|备份副本| STORE + MID -->|文件归档| STORE + + class PC,M,T user; + class PGW,IGW access; + class APP1,APP2 app; + class FX ext; + class MID middle; + class DBM,DBS data; + class STORE backup; diff --git a/output/planb_docx_rendered/images/diagram_7.png b/output/planb_docx_rendered/images/diagram_7.png new file mode 100644 index 0000000..bbbfaca Binary files /dev/null and b/output/planb_docx_rendered/images/diagram_7.png differ diff --git a/output/福建水务营收系统整体部署方案说明书.docx b/output/福建水务营收系统整体部署方案说明书.docx new file mode 100644 index 0000000..cda4424 Binary files /dev/null and b/output/福建水务营收系统整体部署方案说明书.docx differ diff --git a/output/福建水务营收系统整体部署方案说明书0402.docx b/output/福建水务营收系统整体部署方案说明书0402.docx new file mode 100644 index 0000000..824f0a6 Binary files /dev/null and b/output/福建水务营收系统整体部署方案说明书0402.docx differ