# xiaozhang **Repository Path**: aichijibadezhang/xiaozhang ## Basic Information - **Project Name**: xiaozhang - **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-09 - **Last Updated**: 2026-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 新闻展示平台 一个完整的新闻展示平台,包含后台管理系统、用户服务、爬虫系统和前端展示界面,实现新闻的自动爬取、管理、展示和用户交互功能。 ## 项目概述 本项目采用前后端分离架构,包含以下核心模块: - **后台管理系统 (Vue3)**:管理员进行内容管理、用户管理、数据统计 - **用户前端 (Vue3)**:新闻浏览、搜索、收藏、评论等用户交互功能 - **后端服务 (Spring Boot)**:RESTful API 服务,处理业务逻辑和数据管理 - **爬虫服务 (FastAPI)**:自动化新闻爬取、数据清洗和推送 ## 技术栈 ### 后端服务 (Spring Boot) | 技术 | 版本 | 用途 | |------|------|------| | Spring Boot | 3.4.0 | 应用基础框架 | | Spring Security | 6.x | 认证授权 | | MyBatis-Plus | 3.5.9 | 数据库操作 | | MySQL | 8.0+ | 数据存储 | | Redis | 7.0+ | 缓存和会话管理 | | SpringDoc OpenAPI | 2.7.0 | API 文档生成 | | JWT | - | Token 认证 | ### 爬虫服务 (FastAPI) | 技术 | 版本 | 用途 | |------|------|------| | FastAPI | 0.104.1 | 爬虫 API 框架 | | Uvicorn | 0.24.0 | ASGI 服务器 | | BeautifulSoup4 | 4.12.2 | HTML 内容提取 | | APScheduler | 3.10.4 | 定时任务调度 | | httpx | 0.25.2 | HTTP 客户端 | | Loguru | 0.7.2 | 日志管理 | ### 前端 (Vue3) | 技术 | 版本 | 用途 | |------|------|------| | Vue | 3.5.31 | 前端框架 | | Vite | 8.0.3 | 项目构建 | | Vue Router | 5.0.4 | 页面路由 | | Pinia | 3.0.4 | 状态管理 | | Element Plus | 2.13.7 | UI 组件库 | | Axios | 1.15.0 | HTTP 客户端 | | TypeScript | 6.0.0 | 类型支持 | | SCSS | 1.99.0 | 样式预处理 | ## 项目结构 ``` newsclient/ ├── client/ # 前端项目 │ ├── admin/ # 管理后台 │ │ ├── src/ │ │ │ ├── router/ # 路由配置 │ │ │ ├── App.vue # 根组件 │ │ │ └── main.ts # 入口文件 │ │ ├── package.json │ │ └── vite.config.ts │ ├── user_v2/ # 用户端 │ │ ├── src/ │ │ │ ├── router/ # 路由配置 │ │ │ ├── App.vue # 根组件 │ │ │ └── main.ts # 入口文件 │ │ ├── package.json │ │ └── vite.config.ts │ └── start-services.mjs # 服务启动脚本 ├── code/ # 后端代码 │ ├── springboot-app/ # Spring Boot 项目 │ │ ├── src/main/java/ # Java 源代码 │ │ │ └── cn/edu/gxnun/springbootapp/ │ │ │ ├── api/ # API 接口 │ │ │ ├── core/ # 核心配置 │ │ │ ├── services/ # 业务服务 │ │ │ └── utils/ # 工具类 │ │ ├── src/main/resources/ │ │ │ └── application.properties │ │ └── pom.xml │ └── fastapi-app/ # FastAPI 爬虫项目 │ ├── app/ │ │ ├── api/ # API 路由 │ │ ├── core/ # 核心配置 │ │ ├── services/ # 爬虫服务 │ │ └── utils/ # 工具类 │ ├── main.py # 应用入口 │ └── requirements.txt # Python 依赖 ├── docs/ # 项目文档 │ ├── 开发路线图.md # 开发路线图 │ ├── 数据库设计文档.md # 数据库设计文档 │ ├── 项目计划文档.md # 项目计划文档 │ ├── 项目部署文档.md # 部署指南 │ ├── 项目需求文档.md # 需求规格 │ ├── 技术架构文档.md # 架构设计 │ ├── API接口文档.md # 接口说明 │ ├── 安全设计文档.md # 安全策略 │ ├── 测试文档.md # 测试方案 │ └── 项目计划.xlsx └── README.md # 本文件 ``` ## 快速开始 ### 环境要求 - **Java**: 17+ - **Node.js**: 20.19.0+ 或 >=22.12.0 - **Python**: 3.9+ - **MySQL**: 8.0+ - **Redis**: 7.0+ ### 1. 克隆项目 ```bash git clone cd newsclient ``` ### 2. 数据库初始化 1. 创建 MySQL 数据库 `news_platform` 2. 执行数据库初始化脚本(位于 `docs/数据库设计文档.md`) 3. 配置 Redis 服务 ### 3. 启动后端服务 (Spring Boot) ```bash cd code/springboot-app # 使用 Maven 运行 ./mvnw spring-boot:run # 或打包后运行 ./mvnw clean package java -jar target/springboot-app-0.0.1-SNAPSHOT.jar ``` 后端服务默认运行在 `http://localhost:8080` API 文档地址:`http://localhost:8080/swagger-ui.html` ### 4. 启动爬虫服务 (FastAPI) ```bash cd code/fastapi-app # 创建虚拟环境(推荐) python -m venv venv # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate # 安装依赖 pip install -r requirements.txt # 启动服务 uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` 爬虫服务默认运行在 `http://localhost:8000` API 文档地址:`http://localhost:8000/docs` ### 5. 启动前端项目 #### 管理后台 ```bash cd client/admin # 安装依赖 pnpm install # 启动开发服务器 pnpm dev ``` 管理后台默认运行在 `http://localhost:5173` #### 用户端 ```bash cd client/user_v2 # 安装依赖 pnpm install # 启动开发服务器 pnpm dev ``` 用户端默认运行在 `http://localhost:5174` ## 功能模块 ### 已完成 ✅ #### 后端 (Spring Boot) — 13 个控制器,14 个服务类 - [x] 项目基础架构搭建 (Spring Boot 3.4.0 + MyBatis-Plus + Flyway) - [x] 用户注册/登录/登出 (JWT 认证 + BCrypt 加密) - [x] Token 刷新机制 - [x] RBAC 权限控制 (ADMIN/USER 角色) - [x] 新闻 CRUD + 分页 + 排序 + 分类筛选 + 全文搜索 - [x] 新闻置顶功能 - [x] 分类管理 CRUD - [x] 评论系统 (发布/审核/删除/回复) - [x] 收藏系统 - [x] 新闻/评论点赞系统 - [x] 用户阅读历史记录 - [x] 搜索关键词统计 - [x] 爬虫源/API 源配置管理 - [x] 数据统计 (仪表盘/发布趋势/分类排名/用户增长) - [x] 数据导出 (新闻/用户/评论 Excel) - [x] 文件上传 - [x] 统一 API 响应格式 + 全局异常处理 + 参数校验 - [x] 13 张数据库表 + Flyway 11 个版本迁移 #### 爬虫 (FastAPI) — 7 个服务模块,6 个工具模块 - [x] 项目基础架构搭建 (FastAPI + Uvicorn + Loguru) - [x] 多源 HTML 爬取引擎 (httpx + BeautifulSoup) - [x] API 源接入 + 适配器模式 (whyta.cn) - [x] 定时任务调度 (APScheduler) - [x] HTML 内容提取和清洗 - [x] SimHash 文本去重 - [x] jieba 关键词提取 + 摘要自动生成 - [x] 图片下载 + OCR 识别 - [x] 数据推送后端 + 重试机制 - [x] 异常处理体系 - [x] 单元测试 + 集成测试 #### 前端 — 管理后台 (Admin, Naive UI) - [x] 项目基础架构 (Vite 8 + Vue 3.5 + TS 6) - [x] 路由系统 + 路由守卫 (权限控制) - [x] Pinia 状态管理 (auth/theme/layout/ui) - [x] 登录/注册页面 - [x] 新闻管理 (列表/创建/编辑/详情) - [x] 分类管理 - [x] 评论管理 (审核/删除) - [x] 爬虫管理 (爬虫源/API源/任务) - [x] 新闻源管理 - [x] 数据报表 (ECharts 可视化) - [x] 系统设置 (主题/UI 配置) - [x] 暗黑/明亮主题切换 - [x] ESLint + Prettier + Oxlint 代码规范 #### 前端 — 用户端 (User_v2, Element Plus) - [x] 项目基础架构 (Vite 8 + Vue 3.5 + TS 6) - [x] 路由系统 + 路由守卫 - [x] Pinia 状态管理 - [x] 首页信息流 (新闻卡片 + 分类筛选) - [x] 文章详情页 (富文本渲染 + 评论) - [x] 登录/注册 (表单验证 + Token 管理) - [x] 个人中心 (收藏/评论/阅读历史) - [x] 搜索页面 - [x] 设置页面 - [x] 自动导入 (unplugin-auto-import + unplugin-vue-components) ### 待开发 📋 详见 [开发路线图](docs/开发路线图.md) ## 文档 - [开发路线图](docs/开发路线图.md) - 详细的项目开发计划和进度 - [数据库设计](docs/数据库设计文档.md) - 数据库表结构和 ER 图 - [项目计划](docs/项目计划文档.md) - 系统架构和技术选型 - [项目部署文档](docs/项目部署文档.md) - 前后端部署指南 - [项目需求文档](docs/项目需求文档.md) - 功能需求说明 - [技术架构文档](docs/技术架构文档.md) - 系统架构设计 - [API接口文档](docs/API接口文档.md) - 接口说明 - [安全设计文档](docs/安全设计文档.md) - 安全策略 - [测试文档](docs/测试文档.md) - 测试方案 ## API 文档 - **后端 API**: 启动 Spring Boot 服务后访问 `http://localhost:8080/swagger-ui.html` - **爬虫 API**: 启动 FastAPI 服务后访问 `http://localhost:8000/docs` ## 开发规范 ### 代码规范 - Java 代码遵循阿里巴巴 Java 开发手册 - Python 代码遵循 PEP 8 规范 - 前端代码使用 ESLint + Prettier 进行代码检查和格式化 ### 提交规范 ``` feat: 新功能 fix: 修复问题 docs: 文档修改 style: 代码格式修改 refactor: 代码重构 test: 测试用例修改 chore: 其他修改 ``` ## 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 许可证 [MIT](LICENSE) ## 联系方式 如有问题或建议,欢迎提交 Issue 或联系项目维护者。 --- **注意**: 本项目处于开发阶段,部分功能可能尚未完善。