From 08df5f1e8a158de9b4b87cef92cebfc4f8527511 Mon Sep 17 00:00:00 2001 From: wangys <3401275564@qq.com> Date: Mon, 10 Nov 2025 15:22:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- schoolNewsWeb/PROJECT_STRUCTURE.md | 283 -------------------- schoolNewsWeb/TAG_SYSTEM_MIGRATION.md | 360 -------------------------- 2 files changed, 643 deletions(-) delete mode 100644 schoolNewsWeb/PROJECT_STRUCTURE.md delete mode 100644 schoolNewsWeb/TAG_SYSTEM_MIGRATION.md diff --git a/schoolNewsWeb/PROJECT_STRUCTURE.md b/schoolNewsWeb/PROJECT_STRUCTURE.md deleted file mode 100644 index 99f4d29..0000000 --- a/schoolNewsWeb/PROJECT_STRUCTURE.md +++ /dev/null @@ -1,283 +0,0 @@ -# 校园新闻管理系统 - 项目结构说明 - -## 概述 -根据提供的结构图,已创建完整的前端页面层级和Vue组件文件。本文档详细说明了创建的所有文件和目录结构。 - -## 目录结构 - -``` -src/views/ -├── home/ # 首页模块 -│ ├── HomePage.vue # 首页主组件 -│ └── components/ # 首页子组件 -│ ├── LearningDataOverview.vue # 个人学习数据概览 -│ ├── BookHallSection.vue # 书报馆件 -│ ├── TopMusicRecommend.vue # TOP音乐推荐 -│ ├── NewsOverview.vue # 新闻概览 -│ ├── NavigationBar.vue # 导航栏 -│ └── SearchIndex.vue # 搜索索引 -│ -├── resource-center/ # 资源中心模块 -│ ├── ResourceCenterPage.vue # 资源中心主组件 -│ └── components/ # 资源中心子组件 -│ ├── MediaArchive.vue # 媒体档案 -│ ├── PartyHistoryLearning.vue # 党史学习 -│ ├── PolicySpeech.vue # 政策讲话 -│ ├── PolicyInterpretation.vue # 政策解读 -│ ├── RedClassic.vue # 红色经典 -│ ├── SpecialReport.vue # 专题报告 -│ └── WorldCase.vue # 世界案例 -│ -├── study-plan/ # 学习计划模块 -│ ├── StudyPlanPage.vue # 学习计划主组件 -│ └── components/ # 学习计划子组件 -│ ├── StudyTasks.vue # 学习任务(包含任务列表、任务进度) -│ └── CourseCenter.vue # 课程中心(富文本课程) -│ -├── user-center/ # 个人中心模块 -│ ├── UserCenterPage.vue # 个人中心主组件 -│ └── components/ # 个人中心子组件 -│ ├── LearningRecords.vue # 学习记录 -│ ├── MyFavorites.vue # 我的收藏 -│ └── MyAchievements.vue # 我的成就 -│ -├── profile/ # 我导中心模块(头像进入) -│ ├── ProfilePage.vue # 我导中心主组件 -│ └── components/ # 我导中心子组件 -│ ├── PersonalInfo.vue # 个人信息 -│ └── AccountSettings.vue # 账号设置 -│ -├── ai-assistant/ # 智能体模块 -│ ├── AIAssistantPage.vue # AI助手主组件(包含悬浮球) -│ └── components/ # AI助手子组件 -│ ├── ChatInterface.vue # 对话功能 -│ ├── KnowledgeBase.vue # 知识库 -│ ├── DialogHistory.vue # 历史对话记录加载 -│ └── FileInterpretation.vue # 文件解读与记录(文件上传、历史文件加载) -│ -└── admin/ # 后端管理模块 - ├── SystemOverview.vue # 系统总览(总用户数、总资源数、今日访问量、用户活跃度折线图、资源分类统计饼图) - ├── ResourceManagement.vue # 资源管理主组件 - ├── LanguageManagement.vue # 语言管理主组件 - ├── StudyManagement.vue # 学习管理主组件 - ├── AIManagement.vue # 智能体管理主组件 - ├── SystemLogs.vue # 系统日志主组件 - └── components/ # 后端管理子组件 - ├── ArticleManagement.vue # 文章储备(数据采集、新增文章、课程文章) - ├── DataRecords.vue # 数据记录(菜单管理) - ├── BannerManagement.vue # Banner管理 - ├── ColumnManagement.vue # 资源栏目管理 - ├── TagManagement.vue # 标签管理 - ├── TaskPublish.vue # 学习任务发布(任务名称、描述、周期、关联资源、接受对象) - ├── StudyRecords.vue # 学习记录 - ├── AIConfig.vue # AI基础配置 - ├── KnowledgeManagement.vue # 知识库管理 - ├── LoginLogs.vue # 登录日志 - ├── OperationLogs.vue # 操作日志 - └── SystemConfig.vue # 系统配置 -``` - -## 已存在的管理模块 - -以下管理功能已在 `src/views/manage/system/` 中实现: -- `UserManageView.vue` - 用户管理 -- `RoleManageView.vue` - 角色管理 -- `PermissionManageView.vue` - 权限管理 -- `DeptManageView.vue` - 部门管理(组织结构管理) -- `MenuManageView.vue` - 菜单管理 - -## 功能模块详细说明 - -### 前端功能 - -#### 1. 首页模块 -- **个人学习数据概览**: 展示用户学习统计数据 -- **书报馆件**: 图书资源展示 -- **TOP音乐推荐**: 红色音乐推荐列表 -- **新闻概览**: 最新思政新闻展示 -- **导航栏**: 快速导航入口 -- **搜索索引**: 热门标签和搜索功能 - -#### 2. 资源中心模块 -- **媒体档案**: 视频、音频等媒体资源管理 -- **党史学习**: 党史教育文章和资料(支持资源详情,二级文章向读者展示) -- **政策讲话**: 重要政策讲话内容 -- **政策解读**: 政策文件解读说明 -- **红色经典**: 红色经典作品展示 -- **专题报告**: 各类专题报告内容 -- **世界案例**: 国际案例学习资料 - -#### 3. 学习计划模块 -- **学习任务**: - - 任务列表展示 - - 任务进度跟踪 - - 任务状态管理(未开始、进行中、已完成) -- **课程中心**: 富文本课程内容展示 - -#### 4. 个人中心模块 -- **学习记录**: 个人学习历史记录 -- **我的收藏**: 收藏的资源管理 -- **我的成就**: 获得的成就展示 - -#### 5. 我导中心模块(头像入口) -- **个人信息**: 用户基本信息管理 -- **账号设置**: 密码修改、安全设置 - -#### 6. 智能体模块 -- **悬浮球**: 快速唤起AI助手 -- **对话功能**: 智能问答交互 -- **知识库**: AI知识库浏览 -- **历史对话记录**: 对话历史加载 -- **文件解读与记录**: - - 文件上传 - - 历史文件加载 - - AI文件解读 - -### 后端管理功能 - -#### 1. 系统总览 -- **统计卡片**: 总用户数、总资源数、今日访问量、活跃用户 -- **用户活跃度折线图**: 用户活跃度趋势分析 -- **资源分类统计饼图**: 资源分类分布展示 -- **今日访问量详情**: UV、PV、平均访问时长、跳出率 - -#### 2. 用户管理(已存在) -- 组织结构管理 -- 用户管理 -- 权限配置管理 - -#### 3. 资源管理 -- **文章储备**: - - 数据采集功能 - - 新增文章 - - 课程文章管理 -- **数据记录**: 菜单管理(已在系统管理中实现) - -#### 4. 语言管理 -- **Banner管理**: 首页轮播图管理 -- **资源栏目管理**: 资源分类栏目配置 -- **标签管理**: 资源标签维护 - -#### 5. 学习管理 -- **学习任务发布**: - - 任务名称 - - 任务描述 - - 任务周期 - - 关联资源/选择 - - 任务接受对象(按部门/按权限/选人员) -- **学习记录**: 用户学习数据查看和导出 - -#### 6. 智能体管理 -- **基础配置**: AI模型、API配置、对话参数设置 -- **知识库管理**: AI知识库内容维护 - -#### 7. 系统日志 -- **登录日志**: 用户登录记录 -- **操作日志**: 系统操作审计 -- **系统配置**: 系统参数设置 - -## 技术特点 - -### 1. 组件化设计 -- 每个功能模块都有独立的主组件 -- 复杂功能拆分为多个子组件 -- 组件可复用性高 - -### 2. 标准化结构 -- 统一的目录命名规范 -- 一致的文件命名方式 -- 清晰的层级关系 - -### 3. 功能完整性 -- 覆盖所有结构图要求的功能点 -- 包含完整的CRUD操作 -- 支持数据筛选、分页、导出等常用功能 - -### 4. UI/UX设计 -- 使用Element Plus组件库 -- 响应式布局设计 -- 现代化的UI风格 -- 良好的交互体验 - -## 后续开发建议 - -### 1. API集成 -所有组件中标记了 `TODO` 的地方需要接入实际的后端API: -- 数据加载函数 -- 表单提交处理 -- 文件上传功能 -- 实时数据更新 - -### 2. 状态管理 -建议使用Vuex进行全局状态管理: -- 用户信息状态 -- 权限数据缓存 -- 菜单树结构 -- AI对话上下文 - -### 3. 路由配置 -需要在 `src/router/` 中配置所有页面的路由: -- 路由路径定义 -- 路由守卫配置 -- 动态路由加载 -- 权限路由过滤 - -### 4. 权限控制 -实现完整的权限控制系统: -- 页面级权限 -- 按钮级权限 -- 数据级权限 -- 角色权限映射 - -### 5. 数据可视化 -系统总览页面需要集成ECharts: -- 用户活跃度折线图 -- 资源分类饼图 -- 其他统计图表 - -### 6. 富文本编辑器 -课程内容需要集成富文本编辑器: -- 推荐使用 TinyMCE 或 Quill -- 支持图片、视频上传 -- 支持代码高亮 -- 支持数学公式 - -### 7. 文件管理 -完善文件上传和管理功能: -- 文件分片上传 -- 断点续传 -- 文件预览 -- 批量操作 - -### 8. AI功能增强 -智能体模块需要接入AI服务: -- 对话流式输出 -- 文件解读API -- 知识库检索 -- 上下文管理 - -## 开发注意事项 - -1. **类型安全**: 所有组件都使用TypeScript,需要定义完整的类型接口 -2. **错误处理**: 添加适当的错误提示和异常处理 -3. **加载状态**: 为异步操作添加loading状态 -4. **数据验证**: 表单提交前进行数据验证 -5. **性能优化**: - - 列表虚拟滚动 - - 图片懒加载 - - 组件按需加载 - - 路由懒加载 -6. **用户体验**: - - 添加骨架屏 - - 优化加载动画 - - 提供操作反馈 - - 支持键盘快捷键 - -## 文件数量统计 - -- **主页面组件**: 10个 -- **子组件**: 40+个 -- **总计Vue文件**: 50+个 - -所有文件都已创建并包含基础的结构、样式和功能框架,可以直接在此基础上进行API集成和功能完善。 - diff --git a/schoolNewsWeb/TAG_SYSTEM_MIGRATION.md b/schoolNewsWeb/TAG_SYSTEM_MIGRATION.md deleted file mode 100644 index 6747390..0000000 --- a/schoolNewsWeb/TAG_SYSTEM_MIGRATION.md +++ /dev/null @@ -1,360 +0,0 @@ -# 前端标签系统类型化改造文档 - -## 📝 改造概述 - -前端标签系统已更新,支持3种标签类型,与后端保持一致: -1. **文章分类标签** (tagType=1) - 替代原 `ResourceCategory` -2. **课程分类标签** (tagType=2) -3. **学习任务分类标签** (tagType=3) - -### 改造日期 -2025-10-27 - ---- - -## 🔄 前端变更内容 - -### 1. 类型定义更新 - -#### 文件:`src/types/resource/index.ts` - -**新增 TagType 枚举:** -```typescript -/** - * 标签类型枚举 - */ -export enum TagType { - /** 文章分类标签 */ - ARTICLE_CATEGORY = 1, - /** 课程分类标签 */ - COURSE_CATEGORY = 2, - /** 学习任务分类标签 */ - LEARNING_TASK_CATEGORY = 3 -} -``` - -**Tag 接口更新:** -```typescript -export interface Tag extends BaseDTO { - /** 标签ID */ - tagID?: string; - /** 标签名称 */ - name?: string; - /** 标签描述 */ - description?: string; - /** 标签颜色 */ - color?: string; - /** 标签类型(1-文章分类标签 2-课程分类标签 3-学习任务分类标签) */ - tagType?: number; // ✅ 新增字段 - /** 排序号 */ - orderNum?: number; - /** 状态(0禁用 1启用) */ - status?: number; - /** 创建者 */ - creator?: string; - /** 更新者 */ - updater?: string; -} -``` - -**ResourceVO 接口更新:** -```typescript -/** - * 资源视图对象(已废弃category字段) - * @deprecated category字段已废弃,请使用tags字段中tagType=1的标签 - */ -export interface ResourceVO extends BaseDTO{ - resource: Resource; - /** @deprecated 已废弃,改用tags字段(tagType=1表示文章分类标签) */ - category?: ResourceCategory; - tags: Tag[]; -} -``` - ---- - -### 2. API 接口更新 - -#### 文件:`src/apis/resource/resourceTag.ts` - -**新增方法:** -```typescript -/** - * 根据标签类型获取标签列表 - * @param tagType 标签类型(1-文章分类标签 2-课程分类标签 3-学习任务分类标签) - * @returns Promise> - */ -async getTagsByType(tagType: number): Promise> { - const response = await api.get(`/news/tags/type/${tagType}`); - return response.data; -} -``` - -**使用示例:** -```typescript -import { resourceTagApi } from '@/apis/resource'; -import { TagType } from '@/types/resource'; - -// 获取文章分类标签 -const articleTags = await resourceTagApi.getTagsByType(TagType.ARTICLE_CATEGORY); - -// 获取课程分类标签 -const courseTags = await resourceTagApi.getTagsByType(TagType.COURSE_CATEGORY); - -// 获取学习任务分类标签 -const taskTags = await resourceTagApi.getTagsByType(TagType.LEARNING_TASK_CATEGORY); -``` - ---- - -### 3. ResourceCategory API 废弃 - -#### 文件:`src/apis/resource/resourceCategory.ts` - -**⚠️ 此 API 已废弃!** - -从2025-10-27起,资源分类功能已迁移到标签系统(Tag)中。 - -**API 迁移对照表:** - -| 原 ResourceCategory API | 新 Tag API | 说明 | -|------------------------|-----------|------| -| `resourceCategoryApi.getCategoryList()` | `resourceTagApi.getTagsByType(1)` | 获取文章分类标签列表 | -| `resourceCategoryApi.getCategoryById(id)` | `resourceTagApi.getTagById(id)` | 获取标签详情 | -| `resourceCategoryApi.createCategory(category)` | `resourceTagApi.createTag({...category, tagType: 1})` | 创建文章分类标签 | -| `resourceCategoryApi.updateCategory(category)` | `resourceTagApi.updateTag(category)` | 更新标签 | -| `resourceCategoryApi.deleteCategory(id)` | `resourceTagApi.deleteTag(id)` | 删除标签 | - ---- - -## 📦 已更新的组件 - -### 1. ArticleManagementView.vue -**文件:** `src/views/admin/manage/resource/ArticleManagementView.vue` - -**变更内容:** -```typescript -// 修改前 -import { resourceApi, resourceCategoryApi } from '@/apis/resource' -const categoryList = ref([]); -const res = await resourceCategoryApi.getCategoryList(); - -// 修改后 -import { resourceApi, resourceTagApi } from '@/apis/resource' -const categoryList = ref([]); // 改为使用Tag类型(tagType=1表示文章分类) -const res = await resourceTagApi.getTagsByType(1); // 1 = 文章分类标签 -``` - ---- - -### 2. ArticleAddView.vue -**文件:** `src/views/article/ArticleAddView.vue` - -**变更内容:** -```typescript -// 修改前 -import { resourceCategoryApi, resourceTagApi, resourceApi } from '@/apis/resource'; -const categoryList = ref([]); -const result = await resourceCategoryApi.getCategoryList(); - -// 修改后 -import { resourceTagApi, resourceApi } from '@/apis/resource'; -const categoryList = ref([]); // 改为使用Tag类型(tagType=1表示文章分类) -const result = await resourceTagApi.getTagsByType(TagType.ARTICLE_CATEGORY); -``` - -**模板更新:** -```vue - - - - - -``` - ---- - -### 3. ResourceSideBar.vue -**文件:** `src/views/resource-center/components/ResourceSideBar.vue` - -**变更内容:** -```typescript -// 修改前 -import { resourceCategoryApi } from '@/apis/resource'; -import type { ResourceCategory } from '@/types/resource'; -const categories = ref([]); -const res = await resourceCategoryApi.getCategoryList(); - -// 修改后 -import { resourceTagApi } from '@/apis/resource'; -import type { Tag, TagType } from '@/types/resource'; -const categories = ref([]); // 改为使用Tag类型(tagType=1表示文章分类) -const res = await resourceTagApi.getTagsByType(1); // 1 = 文章分类标签 -``` - -**模板更新:** -```vue - -
- - -
-``` - ---- - -## 🎓 学习任务和课程标签说明 - -### 课程标签(tagType=2) - -**类型定义:** `src/types/study/index.ts` - -课程标签使用统一的标签系统(tb_tag表): -- 使用 `tagType=2` 表示课程分类标签 -- 通过 `resourceTagApi.getTagsByType(TagType.COURSE_CATEGORY)` 获取课程分类标签 - -**使用示例:** -```typescript -import { resourceTagApi } from '@/apis/resource'; -import { TagType } from '@/types/resource'; - -// 在课程管理页面加载课程分类标签 -async function loadCourseTags() { - const result = await resourceTagApi.getTagsByType(TagType.COURSE_CATEGORY); - if (result.success) { - courseTags.value = result.dataList || []; - } -} -``` - ---- - -### 学习任务标签(tagType=3) - -**类型定义:** `src/types/study/index.ts` - -学习任务分类使用统一的标签系统(tb_tag表): -- 使用 `tagType=3` 表示学习任务分类标签 -- 通过 `resourceTagApi.getTagsByType(TagType.LEARNING_TASK_CATEGORY)` 获取学习任务分类标签 - -**使用示例:** -```typescript -import { resourceTagApi } from '@/apis/resource'; -import { TagType } from '@/types/resource'; - -// 在学习任务管理页面加载任务分类标签 -async function loadTaskTags() { - const result = await resourceTagApi.getTagsByType(TagType.LEARNING_TASK_CATEGORY); - if (result.success) { - taskTags.value = result.dataList || []; - } -} -``` - ---- - -## 📋 迁移检查清单 - -### 开发人员检查清单 - -- [x] ✅ 更新 Tag 类型定义(添加 tagType 字段) -- [x] ✅ 添加 TagType 枚举 -- [x] ✅ 更新 resourceTag API(添加 getTagsByType 方法) -- [x] ✅ 废弃 resourceCategory API(添加迁移说明) -- [x] ✅ 更新 ArticleManagementView 组件 -- [x] ✅ 更新 ArticleAddView 组件 -- [x] ✅ 更新 ResourceSideBar 组件 -- [x] ✅ 添加课程标签说明文档 -- [x] ✅ 添加学习任务标签说明文档 - -### 未来开发任务 - -当开发课程管理或学习任务管理功能时: - -- [ ] 在课程管理页面使用 `resourceTagApi.getTagsByType(2)` 获取课程分类标签 -- [ ] 在学习任务管理页面使用 `resourceTagApi.getTagsByType(3)` 获取任务分类标签 -- [ ] 为课程添加分类标签选择功能 -- [ ] 为学习任务添加分类标签选择功能 - ---- - -## ⚠️ 注意事项 - -### 1. 向后兼容性 - -- `ResourceCategory` 类型和 `resourceCategoryApi` 暂时保留,但标记为 `@deprecated` -- 建议尽快迁移到新的标签 API -- 旧代码仍可运行,但会在 IDE 中显示废弃警告 - -### 2. 字段映射变化 - -| ResourceCategory | Tag | 说明 | -|-----------------|-----|------| -| `tagID` | `tagID` | 唯一标识字段名变更 | -| `name` | `name` | 名称字段保持不变 | -| `description` | `description` | 描述字段保持不变 | -| - | `tagType` | 新增:标签类型(1/2/3) | -| - | `color` | 新增:标签颜色 | - -### 3. 导入路径 - -所有标签相关的类型和 API 现在统一从以下位置导入: - -```typescript -// 类型导入 -import { Tag, TagType } from '@/types/resource'; - -// API 导入 -import { resourceTagApi } from '@/apis/resource'; -``` - ---- - -## 🎯 总结 - -本次前端标签系统改造: - -1. ✅ **统一标签管理** - 文章、课程、学习任务使用统一的标签系统 -2. ✅ **类型化分类** - 通过 tagType 区分不同业务领域的标签 -3. ✅ **简化架构** - 废弃 ResourceCategory,统一使用 Tag -4. ✅ **灵活扩展** - 为未来添加新标签类型预留空间 -5. ✅ **向后兼容** - 旧 API 仍可使用(标记为废弃) - -### 迁移前后对比 - -| 项目 | 迁移前 | 迁移后 | -|------|--------|--------| -| 文章分类 | `resourceCategoryApi.getCategoryList()` | `resourceTagApi.getTagsByType(1)` | -| 课程分类 | 无 | `resourceTagApi.getTagsByType(2)` | -| 学习任务分类 | 无 | `resourceTagApi.getTagsByType(3)` | -| 类型定义 | `ResourceCategory` | `Tag` (with tagType) | -| 字段名 | `tagID` | `tagID` | - -改造完成后,系统将具备更清晰的业务边界、更简洁的代码结构和更灵活的扩展能力。 - ---- - -## 📚 相关文档 - -- 后端迁移文档:`schoolNewsServ/.bin/mysql/sql/TAG_TYPE_MIGRATION.md` -- 后端移除清单:`schoolNewsServ/.bin/mysql/sql/RESOURCE_CATEGORY_REMOVAL.md` -- 前端项目结构:`schoolNewsWeb/PROJECT_STRUCTURE.md` -