## Conni-X-Pro
English | 简体中文 | 日本語
快速开始 ·
功能特性 ·
技术栈 ·
模块架构 ·
接口与约定 ·
贡献
面向 AI 创作与工作流的全栈开源项目:前端基于 Vue 3 + Vite + TypeScript + Element Plus,后端采用 Spring Boot 3 多模块架构,集成登录鉴权、聊天(LLM/OpenRouter 流式)、ComfyUI 工作流编排、对象存储(阿里云 OSS)、通知邮件、系统管理等能力。
### 演示用的Comfyui整合包
通过网盘分享的文件:2_整合包ComfyUI-aki-1.6.rar等2个文件
链接: https://pan.baidu.com/s/1hcsZiz367FtK4pJHRWVa_g?pwd=iavj 提取码: iavj
### 功能预览
### 功能特性
- **账号与鉴权**: 基于 Sa-Token,Bearer Token 方式,内置接口访问过滤与路由过滤。
- **聊天与AI能力**: 整合 OpenRouter,多模型注册与自动选择;SSE 流式对话,支持多语言与富文本高亮;(主要是这玩意有免费的API模型服务具体详见yml配置和具体后端文档)。
- **ComfyUI 工作流**: 表单化参数收集、任务提交与状态订阅、任务超时与重试策略、文件类型白名单、支持配置多个Comfyui服务、(提交任务、取消任务、重新制作)。
- **对象存储**: 阿里云 OSS 上传与回显、全局文件类型与大小限制配置。
- **消息通知**: 邮件验证码/通知(Thymeleaf 模板),系统公告与站内通知。
- **系统管理**: 用户/积分、公告、兑换码、统计概览等常见后台功能。
### 部署
#### 后端部署
后端是标准的 Spring Boot 多模块项目,可以打包成一个可执行的 JAR 文件进行部署。我们提供了非常详尽的部署文档,覆盖了传统服务器、Docker 容器以及 Kubernetes (K8s) 等多种部署方案。
👉 **[点击查看详细的后端部署指南](./singleton/README.md)**
#### 前端部署
前端项目基于 Vue 3 和 Vite 构建,部署时需编译成静态文件,并使用 Nginx 等 Web 服务器进行托管和反向代理。
👉 **[点击查看详细的前端部署指南](./vue/README.md)**
### 技术栈
- **前端**: Vue 3, Vite, TypeScript, Pinia, Vue Router, Element Plus, vue-i18n, highlight.js, lottie-web, @google/model-viewer。
- **后端**: Spring Boot 3, Web + WebFlux(SSE), Sa-Token, MyBatis-Plus, Druid, MySQL, Redis(Redisson), Spring Mail, WebSocket, Lombok, Guava。
### 模块架构
```
singleton/ # 后端多模块聚合工程(Maven)
application/ # 可执行启动模块(聚合各业务模块)
common/ # 公共依赖:配置、拦截、工具、存储、鉴权等
auth/ # 认证与用户相关接口
comfyui/ # ComfyUI 任务编排与 WebSocket 推送
llm/ # LLM 对话与模型注册(OpenRouter)
notice/ # 通知与公告
oss/ # 阿里云 OSS 能力封装
system/ # 系统管理域
vue/ # 前端工程(Vite)
```
### 快速开始
#### 前置条件
- JDK 21+(建议 22)
- Maven 3.9+
- Node.js 18+ / pnpm 或 npm
- MySQL 8+、Redis 6+
#### 配置后端
1. 复制或参考 `singleton/application/src/main/resources/application-dev.yml`,按需修改以下关键项:
- `spring.datasource.url/username/password`(MySQL)
- `spring.data.redis.host/port/password`(Redis)
- `spring.mail.*`(可选,邮件验证码/通知)
- `ali.oss.*`(阿里云 OSS)
- `comfyui.server[*].url`(ComfyUI 服务地址)
- `open-router.api-key`(OpenRouter API Key)
2. 启动(开发模式):
```bash
mvn -f singleton/pom.xml -pl application -am spring-boot:run -Pdev
```
或打包:
```bash
mvn -f singleton/pom.xml -Pdev clean package
java -jar singleton/application/target/application-*.jar
```
3. 默认后端地址:`http://localhost:9898/api`(`server.servlet.context-path=/api`)。
#### 开发环境配置详解(application-dev.yml)
示例(请用你自己的值替换占位符):
```yaml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/ghosts?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&useSSL=true # MySQL 连接串
username: root # 数据库用户
password: "" # 数据库密码
data:
redis:
database: 1 # 逻辑库(0-15)
host: 127.0.0.1 # Redis 主机
port: 6379 # Redis 端口
password: "" # 若无密码留空
mail:
host: smtp.qq.com # SMTP 服务器
username: "@qq.com" # 发信邮箱
password: "" # 授权码/应用专用密码
default-encoding: UTF-8 # 编码
properties:
mail:
smtp:
socketFactory:
class: javax.net.ssl.SSLSocketFactory # 启用 SSL
port: 587 # SMTP 端口
admin:
init:
enabled: true # 启用首次自动创建管理员
email: admin@example.com # 管理员邮箱
password: admin123 # 管理员密码
nickname: 系统管理员 # 管理员昵称
initial-credits: 1000000 # 初始积分
ali:
certified:
access-key: "" # 阿里云 AK
secret-key: "" # 阿里云 SK
oss:
endpoint: "oss-accelerate.aliyuncs.com" # OSS 访问端点
bucket-name: "" # OSS 桶名
domain: "https://.oss-accelerate.aliyuncs.com" # oss域名
supported-file-types:
- extension: "jpg" # 扩展名
mimeType: "image/jpeg" # MIME
maxSizeInBytes: 5242880 # 单文件上限
comfyui:
server:
- name: COMFYUI-1号 # 标识
url: http://localhost:8188 # ComfyUI 地址
submit-task-max: 100 # 最大提交队列
task:
max-retry-time: 30 # 单次连接超时(秒)
max-retries: 2 # 失败重试次数
timeout-check-interval: 30 # 超时巡检间隔(分钟)
supported-file-types:
jpg: "image/jpeg" # 表单允许的上传类型
png: "image/png"
open-router:
api-key: "" # OpenRouter API Key
base-url: "https://openrouter.ai/api/v1" # API 地址
connect-timeout: 30000 # 连接超时(ms)
read-timeout: 60000 # 读取超时(ms)
chat:
session-ttl-seconds: 2592000 # 会话 TTL(秒)
truncation:
response-token-reserve: 2000 # 为回复预留 Token
text-chars-per-token: 4 # 文本字符/Token
image-token-estimate: 1500 # 图片估算 Token
file-token-estimate: 4000 # 文件估算 Token
enable-compression: true # 文本压缩
plugins:
web:
enabled: true # 联网搜索
max-results: 5 # 结果上限
file-parser:
enabled: true # 文件解析
pdf:
engine: pdf-text # 识别引擎
static-filename: document.pdf # 默认文件名
remote-registry:
enabled: true # 启用模型拉取
url: "https://openrouter.ai/api/frontend/models" # 模型列表地址
cron: "0 0/30 * * * ?" # 刷新间隔
read-timeout-seconds: 10 # 读取超时(秒)
filter: FREE # 模型范围 ALL/FREE/PAID
auto:
modelId: "" # 固定模型(可选)
prefer: FREE # FREE/PAID
audio:
max-size-bytes: 20971520 # 最大音频大小
allowed-formats:
- wav
- mp3
default-format: wav # 默认格式
reasoning:
enabled: true # 开启深度思考
max-tokens: 2000 # 思考 Token 上限
upload:
max-attachment-count: 8 # 单消息附件数
server:
port: 9000 # 开发端口(可改 9898 以匹配前端)
servlet:
context-path: /api # API 前缀
```
#### 启动前端
```bash
cd vue
npm i
npm run dev
```
访问:`http://localhost:5173`
### 接口与约定
- 基础前缀:`/api`
- 认证头:`Authorization: Bearer `(Sa-Token)
- 返回结构与状态码:遵循后端统一约定(见 `common` 模块与各 `controller`)。
### 安全与合规
- 请勿在仓库中提交敏感凭据(数据库、邮箱、OSS、OpenRouter Key 等)。
- 建议使用环境变量或私有配置文件覆盖样例配置。
- 公共演示场景请限制文件上传类型与大小(本项目已提供全局白名单与大小限制)。
### 路线图(建议)
- 跨模型会话共享与消息回放优化
- ComfyUI 节点模板管理与表单自动生成
- 更细粒度的权限与审计日志
- 完整的 E2E/单元测试与 CI/CD 工作流
### 贡献
欢迎提交 Issue 与 PR:
- 规范提交信息,尽量附上复现步骤或截图
- 对于新增模块,请补充相应文档与示例配置
### 支持作者
如果本项目对你有帮助,欢迎赞赏支持(微信):