Skip to content

项目结构

仓库组成

text
yubb-saas-pro/
├── shengyu-server/                       # Spring Boot 启动模块
├── shengyu-module-platform/              # 平台运营业务
├── shengyu-module-system/                # 租户业务、组织权限、IM 业务
├── shengyu-module-infra/                 # 文件、代码生成、任务、监控等基础设施
├── shengyu-framework/                    # 安全、租户、缓存、WebSocket 等通用能力
├── shengyu-ui/
│   ├── shengyu-ui-platform-vue3/         # 平台管理 Vue 3 前端
│   ├── shengyu-ui-admin-vue3/            # 租户管理 Vue 3 前端
│   └── shengyu-ui-admin-flutter/         # 钰信 Flutter(Android、iOS、Web)
├── sql/mysql/1.0/                        # 初始化与增量 SQL
├── deploy/aliyun/                        # 生产 Docker、Nginx 与上线模板
└── deploy/livekit/                       # LiveKit 私有化部署与网络校验

运行关系

text
平台管理 Vue / 租户管理 Vue / 钰信 Flutter
                  │ HTTPS API + WSS

           shengyu-server
      ┌───────────┼───────────┐
      ▼           ▼           ▼
   MySQL        Redis       LiveKit
  业务数据     缓存与会话   音视频媒体与 TURN

后端负责认证、授权、租户上下文、业务数据、IM 信令和通话状态;LiveKit 只承载实时媒体。Nginx 负责 HTTPS、各域名静态站点和反向代理,MySQL 与 Redis 是独立的基础服务。

通讯技术边界

项目自研 Netty WebSocket 通道、鉴权与心跳、设备会话管理、消息处理器、在线投递以及呼叫状态机。通话的业务事件以事务 outbox 方式先落库、后投递,并通过状态版本、受控重试和生命周期任务处理断线、超时与多端竞争;这部分不依赖第三方通讯信令 PaaS。

LiveKit 是可自部署的媒体层,只处理音频、视频、ICE 和 TURN。服务端按租户、用户、设备和通话房间签发短期连接凭据,媒体事件只用于审计和补偿观察,不能覆盖业务通话的最终状态。完整的商业技术说明见企业协同解决方案

生产域名职责

域名用途
saas.shengyukj.top租户管理端。
saasadmin.shengyukj.top平台管理端。
apisaas.shengyukj.top后端 API 与 IM WebSocket。
im.shengyukj.top钰信 Flutter Web 页面。
rtc.shengyukj.topLiveKit WSS 信令。
preview.shengyukj.topkkFileView 文件预览。

im.shengyukj.top 仅承载浏览器页面;钰信 App 的 API 和 WebSocket 必须分别使用 apisaas.shengyukj.top,不可混用。