ChatGPT Image 2026年8月26日 上午09_29_19

提醒:线上地址为:www.nuonuoya.cn,最近由于服务器过期了,暂时没有线上可以体验
GitHub地址:https://github.com/pluchon/mengmeng_forum

项目总览

访问路径

HTTPS / WSS

浏览器

forum-vue

Nginx
静态资源 + 反代

Spring Cloud Gateway

auth

content

im

game

economy

ai

六域各自落库

auth

forum_auth_db

content

forum_content_db

im

forum_im_db

game

forum_game_db

economy

forum_economy_db

ai

forum_ai_db

共享能力与旁路

转码

内部密钥

六个业务域

Nacos
注册发现 / 配置

Redis

content

im

game

ai

RabbitMQ

ffmpeg

ai-server

PostgreSQL
LangGraph 状态

通义 · Wan 生图 · 搜索

请求单向分层:用户端 → Nginx → Gateway → 对应业务域。六个 Java 域各自持有 api 契约和 server 实现,靠 Nacos 注册发现;MySQL 按域拆库。AI 生成在 Python,Java ai 域管额度、会话和落库。生图走通义 Wan。

目录

目录负责什么
forum-vue用户端页面、编辑器、互动与看板娘
java-cloud-standaloneGateway + 六域 api/server + common
ai-server审核、摘要、创作、检索、推荐、看板娘
deployCompose、Nginx、打包与发布脚本
scripts本地中间件与首次建库

端到端协作

REST / WSS

Feign + 内部密钥

HTTP 内部密钥

AMQP

审核结果队列

静态 WebP

前端
页面 / Pinia / WS

Nginx

Gateway

Java 六域

Python AI

RabbitMQ

阿里云 OSS

边界一句话:

  • 前端:展示、交互、登录拦截;不直接调模型,不信自己带的用户 ID
  • Java:权限、状态机、落库、跨域编排;最终业务真相在这里
  • Python:生成与检查;结论回 Java,自己不写社区业务库;生图只用通义 Wan

核心功能展示

屏幕截图_26-8-2026_172331_localhost

image-20260826172631133

image-20260826172730959

image-20260826173032770

image-20260826173153653

image-20260826173304352

image-20260826173326529

image-20260826173345928

image-20260826173505890

image-20260826173518892

image-20260826173634225

image-20260826173713970

image-20260826173740131

image-20260826173805885

image-20260826173819948

image-20260826173831907

image-20260826173850926

image-20260826173909332

image-20260826173945544

image-20260826174022403

image-20260826174042067

微服务架构

六域职责

进程数据库主要能力Gateway 路径
authforum-authforum_auth_db登录注册、资料、权限快照、验证码/user/** /captcha/** /mail/** /sms/**
contentforum-contentforum_content_db帖子、板块、评论、弹幕、收藏、搜索推荐、音乐厅/article/** /board/** /favorite/** /search/** /recommend/** /file/**
imforum-imforum_im_db私信、群聊、通知、未读/message/** /group-chat/** /notice/**;WS /ws/notify
gameforum-gameforum_game_db大厅、房间、对局、排行、回放/game/**;WS /ws/game-center/** /ws/games/**
economyforum-economyforum_economy_db积分、签到、星辉商城、抽奖、会员;会员配额为通用额度 + Wan/points/** /checkin/** /vip/** /lottery/** /starlight/**
aiforum-aiforum_ai_dbAI 额度、会话、看板娘业务落库、创作工作区;生图额度只计 Wan/ai/** /mascot/**

跨域只依赖对方的 xxx-api,消费方本地声明 Feign;不共享 Entity、Mapper、Service 实现。

单域内部分层

HTTP

Controller
收参 / 回 ApiResponse

Service
权限 / 状态 / 规则

Mapper

本域 MySQL

Redis

Feign
其他域 api

RabbitMQ

同一条帖子无论从首页、搜索、收藏还是看板娘进来,数据都回 content;账号身份由 auth 提供快照,其他域按需读取。

模块依赖关系

入口到业务域:

Nginx

forum-gateway

auth

content

im

game

economy

ai

每个域都依赖的公共能力:

六域 api + server

common
JWT / 统一响应 / 内部鉴权

Nacos

六域 MySQL

Redis

只有部分域才有的旁路:

转码

内部密钥

content

ffmpeg

RabbitMQ

im

game

ai

ai-server

Java 端

代码在 java-cloud-standalone。调用链固定为 Controller → Service → Mapper;写操作带事务;业务状态只允许 Service 推进。

技术选型

依赖用途
Spring Boot 3.5 / Spring Cloud GatewayWeb、AMQP、Mail、WebSocket、路由
MyBatis-PlusLambda 查询与分页
JJWT登录态签发解析
Nacos注册发现与配置
OpenFeign跨域调用
RabbitMQ审核等异步任务
阿里云 OSS / 短信媒体与验证码
tianai-captcha / ip2region滑块验证码、IP 属地

帖子发布与审核

保存

提交

通过

拒绝

失败

再提交

再提交

草稿

审核中

已发布

未通过

审核异常

作者

编辑器

基础校验

存草稿

提交审核

content落库

审核队列

Python审核图

结果队列

content改状态

公开或驳回

要点:

  • 最终是否公开由 Java 决定,AI 只给检查结果与摘要
  • 每次提交写入 audit_task_id,对应 Python LangGraph thread_id
  • 审核期间字段锁定,前端没有直接改状态的入口

互动与通知

写互动记录:

公开帖

点赞

评论

收藏

弹幕

楼中楼

互动表

发通知:

点赞

通知

评论 / 楼中楼

收藏

WS 推送或未读数

互动记录与帖子正文分表;展示时再组合。通知走 im 域,可实时推,也可断线后补未读。

搜索、热帖与推荐

内容与行为

热度计算

Redis热帖

首页板块

关键词

标题正文标签检索

向量召回

Java过滤权限

行为信号

画像与特征

推荐排序

搜索模块返回候选 ID 和分数;可见性、分页、不感兴趣过滤在 Java。推荐 AI 异步提炼特征,排序规则仍在 content。

私信、群聊与实时

发送方

发送私信或群消息

发送

成员关系校验

消息落库

WebSocket推送

未读与历史分页

语音邀请

先存后推。重连后从数据库补历史,不依赖当时是否在线。

游戏中心

玩家

大厅

匹配或进房

进房

房间WS

操作与聊天

操作

规则校验

广播状态

结算

战绩回放排行

五子棋、井字棋、俄罗斯方块共用大厅 / 房间 / 结算骨架;对局中状态多在内存,结束再写库。

积分、签到、商城、抽奖

每日签到

积分或星辉

连续签到

额外奖励

惊喜奖池

随机掉落

星辉

商城兑换

补签卡或抵扣券

积分或抵扣券

抽奖

奖品入账或通知

权威钱包与流水在 economy;前端只展示余额与结果。
会员面板展示通用额度与 Wan 张数;体验卡礼包只发 Qwen / Wan,不再发 GPT 生图额度。

主要表分组

代表表
authuser、登录日志、关注
contentarticle、评论、弹幕、标签、收藏夹、user_music*、推荐设置
immessage、群聊、群消息、通知
game游戏定义、对局记录、用户战绩
economy积分钱包、签到、星辉、抽奖、会员订阅与 Wan/通用额度礼包
ai任务会话、用量、创作工作区、看板娘会话与记忆;周期额度只预占 Qwen 与 Wan

基线表数量:auth 11 · content 30 · im 14 · game 12 · economy 38 · ai 17。
建库文件:各域 server/src/main/resources/db/create.sql

Python 端

代码在 ai-server。对外是统一 Gateway:按 taskType + intent + version 路由到模块。Java 不直连某个模型。

模块地图

模块目录能力
moderation帖子文本 / 图片 / 视频审核
summary帖子摘要
creation润色、封面提示、Wan 生图、音乐审核解析
creator_insight创作数据洞察
rag帖子 / 用户索引写入与删除
search站内向量 / 关键词召回
recommendation帖子特征、用户画像
mascot看板娘 Agent:对话、澄清追问、站内找帖邀约、Wan 生图
game五子棋 AI 建议步

调用总览

前端

Java ai / content

校验额度与密钥

AI Gateway

模块路由

审核

摘要

创作

检索

推荐

看板娘

游戏AI

标准结果

审核图

待审帖

Java发任务

审核队列

LangGraph开始

检正文

检图片

汇总

检视频

Flash摘要

通过

结果队列

Java改帖子状态

异步走 RabbitMQ,发帖请求不会卡在模型上。

看板娘

历史过长

生图

对话

用户消息

读会话与记忆

压缩摘要

识别技能

督导分流

生图节点

是否联网

搜索工具

回答

保存消息

流式推前端

会话与长期记忆落在 Java forum_ai_db;LangGraph 运行态在 PostgreSQL。

要点:

  • 技能分流:找帖 / 推荐帖走写作能力;帮助技能只答站内怎么用,不替代找帖
  • 找帖先发「看看 / 不用」邀约,用户同意后由 Java 做可见性过滤的向量检索
  • 意图不清时先出澄清追问面板,流式结束后再展示,答完再继续生成
  • 生图只走 Wan 普通档;用量条在重新进入会话时仍保留本轮统计

创作与生图

编辑器

Java校验草稿归属

润色或封面提示

返回候选

生图请求

图片URL

用户确认后Java保存

AI 只出候选文本 / 提示词 / 图片地址,不直接改帖子状态。
封面与看板娘委派生图一律 quality=normal(Wan);非 normal 请求直接拒绝。

搜索与 RAG

未命中

搜索词

Java准备候选上下文

SEARCH模块

向量召回

关键词兜底

候选ID与分数

Java权限过滤分页

帖子公开

Java确认已提交

RAG索引

向量库

帖子下架

Java触发删除

从向量库移除

Python 侧数据

Java

MySQL会话额度创作区

Redis缓存去重

RabbitMQ审核

AIGateway

PostgreSQL检查点

向量检索

通义与搜索工具

前端

代码在 forum-vue/front。Vue 3 + Vite;页面拆 .vue / .js / .scss;接口统一走 src/api/,状态经 Pinia Action。

技术选型

依赖用途
Vue 3 + ViteSPA 与构建
Pinia登录态、钱包、板块等
Vue Router路由与登录守卫
Element Plus组件库
自研播放器 / 游戏画布音乐厅、对局画面

页面与接口分层

视图Vue

脚本js

api封装

Axios请求

NginxGateway

Pinia

静态大图

OSS_WebP

错误空态图

本地assets

主要页面能力

区域页面方向调哪些域
门户 / 首页未登录展示、信息流、推荐content、auth
创作发帖、草稿、创作中心content、ai
社交私信、群聊、通知im
成长签到、积分、星辉、抽奖、会员economy
游戏大厅与房间game
音乐厅发现、上传、播放统计content、ai
看板娘桌宠对话、澄清追问、找帖邀约、Wan 生图ai

登录与受保护操作

未登录

已登录

401

点击受保护操作

前端登录校验

引导登录

发请求

Gateway

业务域

前端兜底登出提示

登录拦截放在 UI 入口;后端 401 只是兜底。

静态资源策略

  • 装饰大图、游戏封面、营销图:OSS forum_images/client/webp/
  • 错误图、空态图、登录壳兜底:留在 src/assets/images
  • 用户上传内容:业务 OSS 桶,走后端签名 / 服务端上传链路

几条跨端主链路

发帖审核

ai-serverRabbitMQcontent前端ai-serverRabbitMQcontent前端提交审核写待审状态与 taskId审核任务消费并跑审核图审核结果更新公开或驳回状态可见

看板娘对话

ai-serverforum-ai前端ai-serverforum-ai前端发消息鉴权与扣额度内部调用流式文本或图集落库会话与记忆

前端在流结束后可展示澄清追问或「看看帖子」邀约;用量统计与本地消息合并后,重进会话仍能看到。

游戏一局

forum-game前端forum-game前端匹配或进房房间状态 WS操作规则校验广播棋盘或盘面结束写战绩

基础设施

服务版本用途
Nginx1.30.1HTTPS、静态资源、反代
Nacos3.1.1注册发现与配置
MySQL9.7.0六域库
Redis8.0缓存与排行,约 256MB
RabbitMQ4.3审核等异步消息
PostgreSQL17LangGraph checkpoint

生产对外只开 Nginx 的 80 / 443;Nacos 与数据库不暴露公网。

本地启动

准备:Java 17、Python 3.11、Node.js、Docker Desktop。
密钥放环境变量,参考 deploy/.env.examplescripts/dev-secrets.ps1.example

# 1) 中间件
.\scripts\dev-up.ps1

# 2) 空库首次建表
.\scripts\init-db.ps1

# 3) 前端
cd forum-vue\front
npm install
npm run dev

# 4) Java:IDEA 启动 gateway、auth、content、im、game、economy、ai

# 5) AI
cd ai-server
python main.py

Nacos 控制台:http://127.0.0.1:8080/index.html
本地 Java 连 127.0.0.1:8848

打包发布

源码

make-package

前端dist

离线镜像

sql基线

发布包

上传服务器

start或up

cd deploy
.\scripts\make-package.ps1

包默认在 C:\forum-build\luntan-package。服务器:

# 首次空库
FORUM_ENV_FILE=/opt/forum-config/prod.env bash start.sh

# 日常更新
FORUM_ENV_FILE=/opt/forum-config/prod.env bash up.sh

# 只建库
FORUM_ENV_FILE=/opt/forum-config/prod.env bash init-db.sh

生产密钥在 /opt/forum-config/prod.env,发布包不带真实 .env
有数据的库禁止跑 init-db / reset-db,改表只用审核过的前向迁移。

常用脚本

脚本作用
scripts/dev-up.ps1本地起中间件
scripts/init-db.ps1本地首次建库
deploy/scripts/make-package.ps1打发布包
deploy/scripts/init-db.sh服务器空库初始化
deploy/scripts/server-up.sh打成包内 up.sh

更多推荐