🧾

多租户自动化开票平台

MULTI-TENANT INVOICE PLATFORM


面向中小企业的电子发票 SaaS 平台 —— 一套系统服务多个租户,
API 对接即开即用,异步队列保证高可靠,全流程状态可追溯。

7

数据表

租户 / 密钥 / 发票 / 红冲 / 审计

8

API 端点

开票 / 红冲 / 查询 / 管理

3

异步 Worker

开票 / 红冲 / 超时恢复

2

服务商对接

fpapi + 诺诺(Provider 抽象层)

Architecture

架构设计

🏢 多租户隔离

共享数据库 + tenant_id 列实现租户数据隔离。每个请求通过中间件自动注入租户上下文,业务代码无需关心隔离逻辑。

🔐 双通道鉴权

外部系统使用 API Key(Bearer fk_live_xxx)调用开票接口;管理后台使用 JWT 认证。API Key 支持吊销,吊销后立即拒绝访问。

⚡ 异步队列

BullMQ + Redis 实现异步开票。API 接收后立即返回,Worker 后台处理。失败自动重试 3 次,超时 Cron 兜底恢复。

🔌 服务商抽象

Provider 接口抽象层,已实现 fpapi(射手科技)和诺诺(Nuonuo)两个服务商。工厂模式按租户配置自动路由,新增服务商只需实现接口。

Workflow

开票流程

📥

API 接收

外部系统通过 API Key 提交开票请求

🔒

幂等校验

同一 requestId 不重复入库

📋

入库排队

写入数据库 + 推入 BullMQ 队列

⚙️

Worker 处理

异步调用税控服务商 SDK 开票

状态回写

更新发票状态 + 触发 Webhook 通知

🔄

异常恢复

超时/失败自动重试,Cron 兜底

Screenshots

系统界面

1

仪表盘

管理员首页:发票总数、已开具、失败数、开票总额一目了然,右侧租户排行展示各租户开票量和金额。

仪表盘
2

租户管理

多租户管理界面:公司名称、税号、服务商类型、状态一览。支持新增租户、管理 API Key、暂停服务。

租户管理
3

发票台账

全量发票记录:租户、购方、类型(普票/红票)、金额、发票号、状态(issued/timeout/failed),支持按状态筛选和手动重试。

发票台账
4

开票测试

开票表单:选择租户和 API Key,填写发票类型、购方信息、商品明细(支持多行),实时计算含税合计,一键提交开票请求。

开票测试
5

审计日志

完整操作审计:每次登录、API Key 创建/吊销、租户变更、开票操作都有记录,支持按操作类型筛选。

审计日志

API Endpoints

接口一览

Method Path Description
POST /api/v1/invoices 提交开票请求
GET /api/v1/invoices/:id 查询发票状态
POST /api/v1/invoices/:id/retry 手动重试失败发票
POST /api/v1/reversals 发起红冲/作废
POST /api/v1/webhooks/:provider 服务商回调接收
GET /api/v1/admin/tenants 租户管理
GET /api/v1/admin/stats 台账统计
GET /api/v1/admin/audit-logs 审计日志

Data Model

数据模型

tenants

租户信息 + 服务商配置

api_keys

API Key 认证 + 吊销管理

invoices

发票主表(含状态机)

invoice_items

发票明细行

reversals

红冲/作废记录

webhook_events

回调事件日志

audit_logs

操作审计

Tech Stack

技术栈

Fastify 5

后端框架

TypeScript

类型安全

PostgreSQL 16

数据库

Drizzle ORM

数据访问层

BullMQ

异步队列

Redis 7

队列 & 缓存

Zod

请求验证

Docker

容器化部署

需要电子发票对接或类似的 SaaS 后端架构?我们可以根据你的业务场景定制开发。