# football-AI
**Repository Path**: joygame/football-AI
## Basic Information
- **Project Name**: football-AI
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-11
- **Last Updated**: 2026-04-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
---
## 📖 项目简介
**绿茵集** 采用前后端分离架构(Spring Boot + Uni-app),旨在为足球爱好者打造一个兼具沉浸感与智能化的讨论社区。项目不仅包含完善的论坛基础闭环(发帖、回复、点赞、通知),更引入了 **真实赛事/球员数据接入** 与 **全场景 AI 落地**(虚拟球迷回帖、AI 智能助手、帖子摘要生成),让球迷的每一次互动都不再孤单。
## ✨ 核心功能模块
### 1. 🤖 AI 智能矩阵
- **FanAgent 虚拟球迷**:后端基于 `LangChain4j` 结合 Spring `@Async` 定时任务,在用户发布新帖时,大模型会根据预设的 3 种球迷人设(`战术宅`、`情怀粉`、`毒舌喷子`)自动生成带有特定语气的评论,极大地活跃了社区初始氛围。
- **AI 赛事助手 (Dify 集成)**:深度接入 Dify 会话引擎,支持通过 `conversation_id` 保持多轮上下文。前端使用 `marked.js` 渲染 Markdown,配合打字机动画,提供沉浸式的问答体验。
- **AI 智能发评**:在帖子详情页,用户可一键调用 AI,根据当前帖子的上下文自动生成高质量、有深度的足球评论。
### 2. 🏟️ 社区互动闭环
- **动态与话题**:支持图文混排的帖子发布,按“热门话题”、“圈子”进行分类流展示。
- **互动机制**:集成点赞 (Like)、收藏 (Favorite)、评论楼层。后端采用事务级的计数器更新与逻辑删除 (`MyBatis-Plus`),保障数据一致性。
- **全局通知与未读红点**:前端使用 `Pinia` 结合事件总线 (`uni.$on`),实时聚合私信消息与系统通知(如经验值升级、官方欢迎语,类型 8),并在底部 TabBar 动态渲染未读徽章。
- **角色权限管理**:区分普通用户与管理员 (`UserRole.ADMIN`),管理员及帖子原作者具有前端可见的物理/逻辑删除权限。
### 3. 📊 真实数据与容错降级
- **SportAPI 接入**:通过后端 `SportApiClient` 实时拉取 RapidAPI 的球队、球员及比赛数据。
- **优雅降级 (Mock Fallback)**:内置完善的异常捕获与容错机制。当遇到接口限流 (429)、网络不通或 API 密钥未配置时,系统将无缝切回本地 Mock 数据,确保前端页面永不崩溃。
### 4. 📱 极致的前端体验
- **跨端架构**:基于 `Uni-app (Vue 3 + Vite)`,一次编写即可编译为 H5、微信小程序和 App。
- **全局 UI 动画系统**:深度定制了 UX 级交互动画,包括:
- `.anim-slide-up`:卡片/列表的物理弹性上浮入场。
- `.stagger-*`:多图文列表的交错延迟加载(告别一次性生硬渲染)。
- `.btn-active`:全局按压微缩放与透明度反馈,全面提升指尖触感。
---
## 🛠️ 技术栈详情
### 💻 前端技术 (Frontend)
- **核心框架**: Vue 3 (Composition API) + Vite
- **跨端框架**: Uni-app
- **状态管理**: Pinia
- **UI 组件库**: uView Plus (全面兼容 Vue 3)
- **网络请求**: 自定义 Request 封装 (支持 JWT Token 自动拦截与无感刷新)
- **样式处理**: SCSS (抽取全局主题变量与动画帧)
### ⚙️ 后端技术 (Backend)
- **核心框架**: Spring Boot 3.x / JDK 17
- **项目架构**: Maven 多模块化设计 (Parent > Common, Domain, Service)
- **持久层**: MyBatis-Plus + MySQL 8.x
- **缓存与会话**: Redis (用于资讯热度、验证码、Session 缓存、Token 黑名单)
- **大模型框架**: LangChain4j (用于后端直连大模型)
- **安全认证**: Spring Security + JWT
- **第三方 SDK**: Aliyun OSS/SMS (可选配置)
---
## 📂 项目目录结构
```text
football/
├── frontend/ # 前端项目根目录
│ ├── src/
│ │ ├── api/ # 后端接口请求封装 (按业务模块划分)
│ │ ├── components/ # 公共业务组件 (骨架屏、空状态等)
│ │ ├── pages/ # 页面视图 (首页、社区、消息、AI、我的等)
│ │ ├── static/ # 静态资源 (默认头像、图标)
│ │ ├── store/ # Pinia 状态管理 (chatStore, userStore)
│ │ ├── App.vue # 全局应用入口与核心动画样式库
│ │ └── uni.scss # 全局 SCSS 主题变量
│ ├── vite.config.js # Vite 编译配置 (已开放局域网 --host 访问)
│ └── package.json # 前端依赖配置
│
└── soccer-forum-parent/ # 后端 Spring Boot 根目录
├── soccer-forum-common/ # 基础通用模块 (全局异常处理、常量、Utils)
├── soccer-forum-domain/ # 领域实体模块 (POJO, DTO, VO)
└── soccer-forum-service/ # 核心服务模块 (Controller, Service, Mapper)
├── src/main/java/com/soccer/forum/service/
│ ├── modules/ # 业务模块 (auth, post, user, match, ai)
│ ├── config/ # Spring 配置类 (Redis, Mybatis, Security, 跨域)
│ └── handler/ # 拦截器与切面处理
└── src/main/resources/
├── application.yml # 主配置文件
└── application-dev.yml # 开发环境配置 (数据库、API 密钥等)
```
---
## 🚀 快速开始指南
### 第一步:环境准备
确保您的本地开发环境已安装以下软件:
- [Node.js](https://nodejs.org/) (v16.0.0 及以上版本)
- [JDK 17](https://adoptium.net/zh-CN/temurin/releases/) 及以上版本
- [Maven](https://maven.apache.org/) (3.6+版本)
- [MySQL](https://www.mysql.com/) (8.0+版本)
- [Redis](https://redis.io/) (默认 6379 端口)
### 第二步:后端配置与启动
1. **初始化数据库**
- 在 MySQL 中创建数据库 `soccer_forum`,字符集推荐使用 `utf8mb4`。
- 导入项目提供的初始 SQL 脚本(如存在)或依赖 MyBatis-Plus/Flyway 自动生成表结构。
2. **修改配置文件**
- 进入 `soccer-forum-parent/soccer-forum-service/src/main/resources/`。
- 打开 `application-dev.yml`,修改 MySQL 和 Redis 的连接信息(账号、密码)。
- 配置第三方 API 密钥(如无需测试真实数据,系统会自动使用 Mock 数据):
```yaml
sportapi:
host: sportapi7.p.rapidapi.com
key: ${SPORT_API_KEY:你的API_KEY}
```
3. **启动服务**
- 在 `soccer-forum-service` 目录下执行 Maven 命令:
```bash
mvn clean compile
mvn spring-boot:run
```
- 后端服务将默认运行在 `http://localhost:8080`。
### 第三步:前端配置与启动
1. **安装依赖**
- 进入前端根目录 `frontend`:
```bash
npm install
```
2. **启动开发服务器 (H5 模式)**
- 执行启动命令(已默认开启局域网共享):
```bash
npm run dev:h5
```
- 启动成功后,终端会打印出访问地址:
```text
Network: http://192.168.x.x:5173/
Local: http://localhost:5173/
```
3. **移动端调试注意事项**
- 确保手机与电脑处于**同一 Wi-Fi 网络**。
- 若手机无法访问 `5173` 或无法获取数据 (`8080`),请检查 Windows 防火墙,将网络配置文件设为**“专用网络”**,或手动在命令行放行端口。
---
## 📝 贡献指南
欢迎各位开发者提交 Issue 和 Pull Request!
1. Fork 本仓库。
2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)。
3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)。
4. 推送到分支 (`git push origin feature/AmazingFeature`)。
5. 开启一个 Pull Request。
## 📄 许可证
本项目采用 [MIT License](LICENSE) 开源协议。