fujian_water_biz_doc/docs/guides/NUOSHUITONG_DATABASE_DESIGN.md
tangweijie 3fee9a2c18 docs: add Nuoshuitong integration design pack
Add a Nuoshuitong documentation set covering the implementation checklist, split interface spec notes, normalized enums, and database/DDL guidance so follow-on integration can start from a consistent source of truth.

Constraint: Current phase is documentation-first and must not require backend/frontend code changes
Rejected: Merge the material directly into formal master design docs now | would broaden scope before the integration model and dialect strategy are reviewed
Directive: Treat these guides as integration-layer inputs until they are reconciled with formal technical design masters
Confidence: high
Scope-risk: moderate

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:50:46 +08:00

19 KiB

诺税通对接数据库设计草案

文档信息

项目 内容
项目名称 福建水务营收系统
文档类型 外部平台对接数据库设计草案
对接平台 诺税通 saas
适用范围 销项开票、发票查询、文件获取、交付、作废、红字单据、设备与库存、企业开票配置
版本 v1.0
日期 2026-03-24
状态 草案

适用说明

本文档用于支撑福建水务营收系统对接诺税通 saas 时的数据库落库设计。内容聚焦对接层数据承接,不直接替代正式业务数据库设计主文档,而是作为外部平台集成方案、领域建模和后续 DDL 细化的基础输入。

当前口径基于以下资料统一整理:

  • docs/guides/NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md
  • docs/guides/NUOSHUITONG_INTERFACE_SPEC/

设计目标

本设计用于支撑以下闭环:

  • 开票申请与状态同步
  • 发票票面文件获取
  • 发票交付与补发
  • 发票作废、重开、冲红
  • 红字信息表与红字确认单管理
  • 开票设备与票源库存管理
  • 企业开票配置与规则缓存
  • 平台回调与请求日志追踪

表清单总览

表名 说明
ns_invoice 发票主表
ns_invoice_item 发票明细表
ns_invoice_delivery 发票交付记录表
ns_invoice_reversal 发票逆向处理表
ns_red_document 红字单据主表
ns_red_document_item 红字单据明细表
ns_billing_device 开票设备表
ns_invoice_stock_snapshot 发票库存快照表
ns_enterprise_billing_config 企业开票配置表
ns_platform_event_log 平台回调事件表
ns_platform_request_log 平台请求响应日志表
ns_config_dictionary_cache 配置字典缓存表(可选)

命名与通用约定

表命名

  • 对接域表统一采用 ns_ 前缀,表示 Nuoshuitong 集成域。
  • 字段命名统一使用下划线命名法。

通用审计字段

除快照类或纯日志类表外,建议统一具备:

  • created_at
  • updated_at
  • created_by
  • updated_by

状态字段约定

建议状态类字段统一采用“编码 + 文本”双承接:

  • *_status
  • *_status_text

JSON 字段约定

当平台返回结构复杂、且短期内不适合完全拆表时,可保留 JSON/TEXT 字段承接,例如:

  • specific_factor_json
  • request_body
  • response_body
  • payload_json

详细表结构草案

ns_invoice 发票主表

用途

承接发票从申请、查询、回调、文件获取到交付的主生命周期。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
sys_request_no varchar(64) 系统侧请求号,建议唯一
order_no varchar(64) 业务订单号
source_business_type varchar(32) 来源业务类型
source_business_id varchar(64) 来源业务主键
platform_invoice_serial_num varchar(64) 平台发票流水号
invoice_id varchar(64) 平台发票 ID
invoice_code varchar(32) 发票代码
invoice_no varchar(32) 发票号码
all_electronic_invoice_no varchar(64) 数电票号码
seller_tax_no varchar(32) 销方税号
buyer_name varchar(200) 购方名称
buyer_tax_no varchar(64) 购方税号
buyer_address varchar(255) 购方地址
buyer_tel varchar(64) 购方电话
buyer_account varchar(255) 购方开户行及账号
invoice_type varchar(16) 蓝票/红票
invoice_line varchar(16) 发票票种
list_flag smallint 清单标志
with_tax_flag smallint 含税标志
notify_phone varchar(64) 交付手机号
notify_email varchar(128) 交付邮箱
cc_phone varchar(256) 抄送手机号
cc_email varchar(256) 抄送邮箱
total_amount decimal(18,2) 含税总金额
amount_without_tax decimal(18,2) 不含税总金额
tax_amount decimal(18,2) 税额
request_status varchar(32) 请求状态
invoice_status varchar(32) 开票状态
invoice_status_text varchar(255) 状态说明
invalid_state varchar(32) 作废状态
delivery_status varchar(32) 交付状态
sync_status varchar(32) 平台同步状态
pdf_url varchar(1024) PDF 地址
ofd_url varchar(1024) OFD 地址
image_url varchar(1024) 图片地址
paper_pdf_url varchar(1024) 纸票 PDF 地址
invoice_time datetime 开票时间
request_time datetime 请求时间
invalid_time datetime 作废时间
last_sync_time datetime 最近同步时间
ori_invoice_code varchar(32) 原发票代码
ori_invoice_no varchar(32) 原发票号码
old_electronic_invoice_no varchar(64) 原数电票号码
remark varchar(1000) 备注
specific_factor_json text 特殊因子 JSON
latest_result varchar(1000) 最近一次平台结果摘要
latest_error varchar(1000) 最近一次错误摘要
try_count int 同步/补偿次数
last_try_time datetime 最近重试时间
next_try_time datetime 下次重试时间
created_at datetime 创建时间
updated_at datetime 更新时间
created_by varchar(64) 创建人
updated_by varchar(64) 更新人

主键与唯一约束建议

  • 主键:id
  • 唯一约束:sys_request_no
  • 可选唯一约束:platform_invoice_serial_num
  • 可选业务唯一约束:seller_tax_no + invoice_code + invoice_no

索引建议

  • idx_ns_invoice_order_no
  • idx_ns_invoice_status
  • idx_ns_invoice_seller_tax_no
  • idx_ns_invoice_invoice_time
  • idx_ns_invoice_next_try_time

状态字段建议

request_status

  • DRAFT
  • PRECHECK_FAILED
  • REQUESTED
  • PROCESSING
  • SUCCESS
  • FAILED

invoice_status

  • ISSUING
  • ISSUED
  • ISSUE_FAILED
  • CANCELLED
  • CANCEL_FAILED
  • RED_PROCESSED

delivery_status

  • NOT_DELIVERED
  • DELIVERING
  • DELIVERED
  • DELIVERY_FAILED

ns_invoice_item 发票明细表

用途

保存开票请求与平台返回的发票明细。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
invoice_id bigint 发票主表 ID
line_no int 行号
goods_name varchar(255) 商品名称
goods_code varchar(64) 税收分类编码
spec varchar(128) 规格型号
unit varchar(64) 单位
quantity decimal(18,6) 数量
unit_price decimal(18,6) 单价
amount_with_tax decimal(18,2) 含税金额
amount_without_tax decimal(18,2) 不含税金额
tax_rate decimal(8,4) 税率
tax_amount decimal(18,2) 税额
detail_type smallint 行类型
favoured_policy_flag smallint 优惠政策标志
zero_rate_flag smallint 零税率标志
favoured_policy_name varchar(128) 优惠政策名称
created_at datetime 创建时间
updated_at datetime 更新时间

约束建议

  • 外键:invoice_id -> ns_invoice.id
  • 唯一约束:invoice_id + line_no

ns_invoice_delivery 发票交付记录表

用途

记录首次交付、补发和交付失败结果。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
invoice_id bigint 发票 ID
delivery_type varchar(16) SMS / EMAIL
delivery_target varchar(256) 发送目标
cc_target varchar(512) 抄送目标
delivery_status varchar(32) 交付状态
delivery_message varchar(1000) 平台返回信息
delivery_attempt_no int 第几次交付
is_retry smallint 是否补发
response_code varchar(32) 平台响应码
response_body text 平台响应体
delivery_time datetime 交付时间
created_at datetime 创建时间

索引建议

  • idx_ns_invoice_delivery_invoice_id
  • idx_ns_invoice_delivery_status

ns_invoice_reversal 发票逆向处理表

用途

记录作废、冲红、重开、空白票作废等逆向业务动作。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
invoice_id bigint 原发票 ID
reversal_type varchar(32) CANCEL / FAST_RED / REOPEN / BLANK_CANCEL
source_invoice_code varchar(32) 原票代码
source_invoice_no varchar(32) 原票号码
invalid_reason varchar(32) 作废原因编码
specific_reason varchar(500) 具体原因
request_status varchar(32) 请求状态
reversal_status varchar(32) 逆向状态
platform_result_code varchar(32) 平台响应码
platform_result_msg varchar(1000) 平台响应信息
target_invoice_id bigint 新票 ID
created_at datetime 创建时间
updated_at datetime 更新时间

状态建议

  • INIT
  • CHECKING
  • REQUESTED
  • SUCCESS
  • FAILED
  • REJECTED

ns_red_document 红字单据主表

用途

统一承接红字信息表与红字确认单。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
invoice_id bigint 关联蓝票 ID
document_type varchar(16) RED_INFO / RED_CONFIRM
bill_no varchar(64) 单据编号
bill_id varchar(64) 平台单据 ID
bill_info_no varchar(64) 信息表编号
bill_confirm_no varchar(64) 确认单编号
bill_uuid varchar(64) 平台 UUID
blue_invoice_code varchar(32) 蓝票代码
blue_invoice_no varchar(32) 蓝票号码
blue_invoice_number varchar(64) 蓝票数电号
blue_invoice_line varchar(16) 蓝票票种
bill_type varchar(32) 红字业务类型
bill_status varchar(32) 单据状态
bill_status_text varchar(255) 状态说明
open_status varchar(32) 开具状态
back_type varchar(16) 回传类型
apply_source varchar(32) 申请来源
red_reason varchar(255) 红字原因
apply_remark varchar(1000) 申请备注
pdf_url varchar(1024) PDF 地址
callback_status varchar(32) 回调处理状态
last_sync_time datetime 最近同步时间
created_at datetime 创建时间
updated_at datetime 更新时间

唯一约束建议

  • bill_no
  • 可选:bill_id

ns_red_document_item 红字单据明细表

用途

承接红字申请与确认单明细。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
red_document_id bigint 红字单据主表 ID
line_no int 行号
goods_name varchar(255) 商品名称
model varchar(128) 型号
unit varchar(64) 单位
quantity decimal(18,6) 数量
unit_price decimal(18,6) 单价
amount decimal(18,2) 金额
tax_rate decimal(8,4) 税率
tax_amount decimal(18,2) 税额
with_tax_flag smallint 含税标志
created_at datetime 创建时间
updated_at datetime 更新时间

ns_billing_device 开票设备表

用途

承接设备主数据、运行态状态和设备能力。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
tax_num varchar(32) 企业税号
company_id varchar(64) 平台企业 ID
extension_num varchar(32) 分机号
machine_num varchar(64) 机器编号
terminal_num varchar(64) 终端号
server_type varchar(32) 设备类型
invoice_type_list varchar(512) 支持票种列表
login_account varchar(128) 登录账号
equipment_cabinet_id varchar(64) 机柜 ID
device_status varchar(32) 在线状态
report_tax_status varchar(32) 抄报状态
clear_card_status varchar(32) 清卡状态
lock_date varchar(32) 锁死日期
single_billing_limit decimal(18,2) 单笔限额
offline_amount decimal(18,2) 离线金额
offline_time varchar(64) 离线时间
last_status_sync_time datetime 最近状态同步时间
created_at datetime 创建时间
updated_at datetime 更新时间

唯一约束建议

  • 保守建议:tax_num + extension_num + machine_num

ns_invoice_stock_snapshot 发票库存快照表

用途

记录库存查询、刷新、下载、申领后的快照结果。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
device_id bigint 设备 ID
seller_tax_no varchar(32) 销方税号
extension_num varchar(32) 分机号
machine_num varchar(64) 机器编号
terminal_num varchar(64) 终端号
invoice_line varchar(16) 票种
invoice_code varchar(32) 发票代码
invoice_num_start varchar(32) 起始号
invoice_num_end varchar(32) 结束号
remain_num int 剩余数量
is_default smallint 是否默认
source_type varchar(16) QUERY / REFRESH / DOWNLOAD / APPLY
snapshot_time datetime 快照时间
created_at datetime 创建时间

ns_enterprise_billing_config 企业开票配置表

用途

承接企业开票默认信息与认证状态。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
tax_num varchar(32) 企业税号
company_id varchar(64) 平台企业 ID
use_scope varchar(32) 使用范围
clerker varchar(128) 开票员
seller_address varchar(255) 销方地址
seller_tel varchar(64) 销方电话
seller_bank varchar(255) 销方开户行
seller_account varchar(255) 销方账号
payee varchar(64) 收款人
checker varchar(64) 复核人
project_code varchar(64) 项目编码
department_name varchar(128) 部门名称
auth_status varchar(32) 认证状态
last_auth_time datetime 最近认证时间
created_at datetime 创建时间
updated_at datetime 更新时间

唯一约束建议

  • tax_num

ns_platform_event_log 平台回调事件表

用途

保留平台回调原文和处理结果,实现幂等与可追踪。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
event_type varchar(32) INVOICE_CALLBACK / RED_CALLBACK
event_key varchar(128) 幂等键
seller_tax_no varchar(32) 销方税号
business_key varchar(128) 业务主键
payload_json longtext 回调原文
process_status varchar(32) INIT / SUCCESS / FAILED / IGNORED
process_message varchar(1000) 处理说明
processed_at datetime 处理时间
created_at datetime 创建时间

唯一约束建议

  • event_key

ns_platform_request_log 平台请求响应日志表

用途

记录所有对诺税通平台的请求与响应,便于联调排障。

字段建议

字段名 类型建议 非空 说明
id bigint 主键
request_id varchar(64) 请求 ID
business_type varchar(32) 业务类型
business_id varchar(64) 业务 ID
method_name varchar(128) 平台方法名
request_headers_masked text 脱敏请求头
request_body longtext 请求体
response_body longtext 响应体
response_code varchar(32) 响应码
success_flag smallint 成功标识
error_message varchar(1000) 错误信息
created_at datetime 创建时间

ns_config_dictionary_cache 配置字典缓存表(可选)

用途

缓存平台字典项,如:

  • requestSrc
  • invoiceLine
  • organize
  • dept
  • clerk
  • invalidSrc

字段建议

字段名 类型建议 非空 说明
id bigint 主键
dict_type varchar(64) 字典类型
dict_key varchar(128) 字典键
dict_name varchar(255) 字典名称
company_id varchar(64) 企业 ID
company_name varchar(255) 企业名称
extra_json text 扩展 JSON
last_sync_time datetime 最近同步时间
created_at datetime 创建时间
updated_at datetime 更新时间

表关系建议

erDiagram
    ns_invoice ||--o{ ns_invoice_item : contains
    ns_invoice ||--o{ ns_invoice_delivery : delivers
    ns_invoice ||--o{ ns_invoice_reversal : reverses
    ns_invoice ||--o{ ns_red_document : relates
    ns_red_document ||--o{ ns_red_document_item : contains
    ns_billing_device ||--o{ ns_invoice_stock_snapshot : has
    ns_enterprise_billing_config ||--o{ ns_billing_device : configures

幂等与审计建议

回调幂等

必须依赖:

  • ns_platform_event_log.event_key

建议 event_key 构成为:

  • 发票回调:sellerTaxNo + invoiceId + invoiceStatus
  • 红字回调:backType + billNo + billStatus

请求幂等

建议:

  • sys_request_no 全局唯一
  • 开票请求入库前先校验是否已存在同请求号记录

首期最小落表建议

若先追求最小可用,建议优先落以下 7 张表:

  • ns_invoice
  • ns_invoice_item
  • ns_invoice_delivery
  • ns_invoice_reversal
  • ns_billing_device
  • ns_invoice_stock_snapshot
  • ns_platform_request_log

第二批补充:

  • ns_red_document
  • ns_red_document_item
  • ns_platform_event_log
  • ns_enterprise_billing_config

后续建议

本文档完成后,建议继续补充两项内容:

  • 按表输出正式 DDL 草案
  • docs/design/03_Technical_Design/01_Database_Design.md 对齐,纳入正式专项设计口径