近乎全栈个人综合项目——萌部落社区(V3.0微服务版本)

提醒:线上地址为:
www.nuonuoya.cn,最近由于服务器过期了,暂时没有线上可以体验
GitHub地址:https://github.com/pluchon/mengmeng_forum
项目总览
访问路径
六域各自落库
共享能力与旁路
请求单向分层:用户端 → Nginx → Gateway → 对应业务域。六个 Java 域各自持有 api 契约和 server 实现,靠 Nacos 注册发现;MySQL 按域拆库。AI 生成在 Python,Java ai 域管额度、会话和落库。生图走通义 Wan。
目录
| 目录 | 负责什么 |
|---|---|
forum-vue | 用户端页面、编辑器、互动与看板娘 |
java-cloud-standalone | Gateway + 六域 api/server + common |
ai-server | 审核、摘要、创作、检索、推荐、看板娘 |
deploy | Compose、Nginx、打包与发布脚本 |
scripts | 本地中间件与首次建库 |
端到端协作
边界一句话:
- 前端:展示、交互、登录拦截;不直接调模型,不信自己带的用户 ID
- Java:权限、状态机、落库、跨域编排;最终业务真相在这里
- Python:生成与检查;结论回 Java,自己不写社区业务库;生图只用通义 Wan
核心功能展示





















微服务架构
六域职责
| 域 | 进程 | 数据库 | 主要能力 | Gateway 路径 |
|---|---|---|---|---|
| auth | forum-auth | forum_auth_db | 登录注册、资料、权限快照、验证码 | /user/** /captcha/** /mail/** /sms/** |
| content | forum-content | forum_content_db | 帖子、板块、评论、弹幕、收藏、搜索推荐、音乐厅 | /article/** /board/** /favorite/** /search/** /recommend/** /file/** … |
| im | forum-im | forum_im_db | 私信、群聊、通知、未读 | /message/** /group-chat/** /notice/**;WS /ws/notify |
| game | forum-game | forum_game_db | 大厅、房间、对局、排行、回放 | /game/**;WS /ws/game-center/** /ws/games/** |
| economy | forum-economy | forum_economy_db | 积分、签到、星辉商城、抽奖、会员;会员配额为通用额度 + Wan | /points/** /checkin/** /vip/** /lottery/** /starlight/** |
| ai | forum-ai | forum_ai_db | AI 额度、会话、看板娘业务落库、创作工作区;生图额度只计 Wan | /ai/** /mascot/** |
跨域只依赖对方的 xxx-api,消费方本地声明 Feign;不共享 Entity、Mapper、Service 实现。
单域内部分层
同一条帖子无论从首页、搜索、收藏还是看板娘进来,数据都回 content;账号身份由 auth 提供快照,其他域按需读取。
模块依赖关系
入口到业务域:
每个域都依赖的公共能力:
只有部分域才有的旁路:
Java 端
代码在 java-cloud-standalone。调用链固定为 Controller → Service → Mapper;写操作带事务;业务状态只允许 Service 推进。
技术选型
| 依赖 | 用途 |
|---|---|
| Spring Boot 3.5 / Spring Cloud Gateway | Web、AMQP、Mail、WebSocket、路由 |
| MyBatis-Plus | Lambda 查询与分页 |
| JJWT | 登录态签发解析 |
| Nacos | 注册发现与配置 |
| OpenFeign | 跨域调用 |
| RabbitMQ | 审核等异步任务 |
| 阿里云 OSS / 短信 | 媒体与验证码 |
| tianai-captcha / ip2region | 滑块验证码、IP 属地 |
帖子发布与审核
要点:
- 最终是否公开由 Java 决定,AI 只给检查结果与摘要
- 每次提交写入
audit_task_id,对应 Python LangGraphthread_id - 审核期间字段锁定,前端没有直接改状态的入口
互动与通知
写互动记录:
发通知:
互动记录与帖子正文分表;展示时再组合。通知走 im 域,可实时推,也可断线后补未读。
搜索、热帖与推荐
搜索模块返回候选 ID 和分数;可见性、分页、不感兴趣过滤在 Java。推荐 AI 异步提炼特征,排序规则仍在 content。
私信、群聊与实时
先存后推。重连后从数据库补历史,不依赖当时是否在线。
游戏中心
五子棋、井字棋、俄罗斯方块共用大厅 / 房间 / 结算骨架;对局中状态多在内存,结束再写库。
积分、签到、商城、抽奖
权威钱包与流水在 economy;前端只展示余额与结果。
会员面板展示通用额度与 Wan 张数;体验卡礼包只发 Qwen / Wan,不再发 GPT 生图额度。
主要表分组
| 库 | 代表表 |
|---|---|
| auth | user、登录日志、关注 |
| content | article、评论、弹幕、标签、收藏夹、user_music*、推荐设置 |
| im | message、群聊、群消息、通知 |
| 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 建议步 |
调用总览
审核图
异步走 RabbitMQ,发帖请求不会卡在模型上。
看板娘
会话与长期记忆落在 Java forum_ai_db;LangGraph 运行态在 PostgreSQL。
要点:
- 技能分流:找帖 / 推荐帖走写作能力;帮助技能只答站内怎么用,不替代找帖
- 找帖先发「看看 / 不用」邀约,用户同意后由 Java 做可见性过滤的向量检索
- 意图不清时先出澄清追问面板,流式结束后再展示,答完再继续生成
- 生图只走 Wan 普通档;用量条在重新进入会话时仍保留本轮统计
创作与生图
AI 只出候选文本 / 提示词 / 图片地址,不直接改帖子状态。
封面与看板娘委派生图一律 quality=normal(Wan);非 normal 请求直接拒绝。
搜索与 RAG
Python 侧数据
前端
代码在 forum-vue/front。Vue 3 + Vite;页面拆 .vue / .js / .scss;接口统一走 src/api/,状态经 Pinia Action。
技术选型
| 依赖 | 用途 |
|---|---|
| Vue 3 + Vite | SPA 与构建 |
| Pinia | 登录态、钱包、板块等 |
| Vue Router | 路由与登录守卫 |
| Element Plus | 组件库 |
| 自研播放器 / 游戏画布 | 音乐厅、对局画面 |
页面与接口分层
主要页面能力
| 区域 | 页面方向 | 调哪些域 |
|---|---|---|
| 门户 / 首页 | 未登录展示、信息流、推荐 | content、auth |
| 创作 | 发帖、草稿、创作中心 | content、ai |
| 社交 | 私信、群聊、通知 | im |
| 成长 | 签到、积分、星辉、抽奖、会员 | economy |
| 游戏 | 大厅与房间 | game |
| 音乐厅 | 发现、上传、播放统计 | content、ai |
| 看板娘 | 桌宠对话、澄清追问、找帖邀约、Wan 生图 | ai |
登录与受保护操作
登录拦截放在 UI 入口;后端 401 只是兜底。
静态资源策略
- 装饰大图、游戏封面、营销图:OSS
forum_images/client/webp/ - 错误图、空态图、登录壳兜底:留在
src/assets/images - 用户上传内容:业务 OSS 桶,走后端签名 / 服务端上传链路
几条跨端主链路
发帖审核
看板娘对话
前端在流结束后可展示澄清追问或「看看帖子」邀约;用量统计与本地消息合并后,重进会话仍能看到。
游戏一局
基础设施
| 服务 | 版本 | 用途 |
|---|---|---|
| Nginx | 1.30.1 | HTTPS、静态资源、反代 |
| Nacos | 3.1.1 | 注册发现与配置 |
| MySQL | 9.7.0 | 六域库 |
| Redis | 8.0 | 缓存与排行,约 256MB |
| RabbitMQ | 4.3 | 审核等异步消息 |
| PostgreSQL | 17 | LangGraph checkpoint |
生产对外只开 Nginx 的 80 / 443;Nacos 与数据库不暴露公网。
本地启动
准备:Java 17、Python 3.11、Node.js、Docker Desktop。
密钥放环境变量,参考 deploy/.env.example 与 scripts/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。
打包发布
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 |
更多推荐
所有评论(0)