txw/docs/superpowers/specs/2026-04-28-平台文档管理功能设计.md

254 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 平台文档管理功能设计方案
## 1. 需求概述
### 1.1 功能目标
- 运营管理人员通过 `txw-yygl-web` 管理平台文档(增删改查)
- 门户网站 `txw-mhzc-web` 通过 API 获取文档列表和内容,前端渲染 Markdown
- 支持 Markdown 富文本编辑
- 文档按分类管理,支持通过 URL 直接跳转至对应文档
### 1.2 关键需求点
- 运营管理端:文档 CRUD + 分类管理
- 门户前端:文档列表 + 文档详情页(支持 URL 直接访问)
- 数据存储:`txw-mhzc` MySQL 数据库
---
## 2. 系统架构
### 2.1 整体架构
```
┌─────────────────────────────────────────────────────────────┐
│ 运营管理端 │
│ txw-yygl-web ←→ txw-yygl-service-biz ←→ txw-mhzc MySQL │
│ (内部调用) (新建 document 库) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 门户前端 │
│ txw-mhzc-web ←→ txw-gateway聚合层 ←→ 同一 API │
└─────────────────────────────────────────────────────────────┘
```
### 2.2 技术选型
- 后端框架Spring Boot复用现有 `txw-yygl-service-biz`
- 前端框架Vue 2 + TDesign复用现有技术栈
- Markdown 编辑器:`mavon-editor`轻量、Vue 2 兼容)
- Markdown 渲染:`marked` + `highlight.js`
- 数据库MySQL`txw-mhzc` 库)
---
## 3. 数据库设计
### 3.1 文档分类表document_category
| 字段 | 类型 | 约束 | 说明 |
|------|------|------|------|
| id | bigint | PK, AUTO_INCREMENT | 主键 |
| name | varchar(100) | NOT NULL | 分类名称 |
| sort | int | DEFAULT 0 | 排序号,越小越靠前 |
| status | tinyint | DEFAULT 1 | 状态0-禁用1-启用 |
| create_time | datetime | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | datetime | ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 3.2 文档表document
| 字段 | 类型 | 约束 | 说明 |
|------|------|------|------|
| id | bigint | PK, AUTO_INCREMENT | 主键 |
| category_id | bigint | NOT NULL, FK | 所属分类ID |
| title | varchar(200) | NOT NULL | 文档标题 |
| content | text | NOT NULL | Markdown 正文内容 |
| status | tinyint | DEFAULT 0 | 状态0-草稿1-已发布 |
| sort | int | DEFAULT 0 | 排序号,越小越靠前 |
| create_time | datetime | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | datetime | ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
---
## 4. API 设计
### 4.1 文档分类接口
| 接口 | 方法 | 路径 | 说明 |
|------|------|------|------|
| 分类列表 | GET | /document/category/list | 获取所有启用的分类 |
| 新增分类 | POST | /document/category | 新增文档分类 |
| 编辑分类 | PUT | /document/category/{id} | 编辑分类信息 |
| 删除分类 | DELETE | /document/category/{id} | 删除分类(需检查无关联文档)|
### 4.2 文档接口
| 接口 | 方法 | 路径 | 说明 |
|------|------|------|------|
| 文档列表 | GET | /document/list | 获取文档列表(支持分类筛选、状态筛选)|
| 文档详情 | GET | /document/{id} | 获取文档详情Markdown 内容)|
| 新增文档 | POST | /document | 新增文档 |
| 编辑文档 | PUT | /document/{id} | 编辑文档 |
| 删除文档 | DELETE | /document/{id} | 删除文档 |
### 4.3 响应数据结构
**文档列表项(不含正文)**
```json
{
"id": 1,
"categoryId": 1,
"categoryName": "使用指南",
"title": "如何注册账号",
"status": 1,
"sort": 1,
"createTime": "2026-04-28 10:00:00",
"updateTime": "2026-04-28 10:00:00"
}
```
**文档详情(含正文)**
```json
{
"id": 1,
"categoryId": 1,
"categoryName": "使用指南",
"title": "如何注册账号",
"content": "# 注册流程\n\n1. 点击注册按钮\n2. 填写企业信息\n...",
"status": 1,
"sort": 1,
"createTime": "2026-04-28 10:00:00",
"updateTime": "2026-04-28 10:00:00"
}
```
---
## 5. 前端页面设计
### 5.1 运营管理端txw-yygl-web
**路由:`/document/*`**
| 页面 | 路由 | 功能 |
|------|------|------|
| 文档列表 | /document/list | 分类筛选、状态筛选、搜索、新建按钮 |
| 新增/编辑文档 | /document/edit/:id? | Markdown 编辑器、表单提交 |
| 分类管理 | /document/category | 分类列表、增删改 |
**组件说明**
- `DocumentList.vue` - 文档列表页
- `DocumentEdit.vue` - 文档编辑页(含 mavon-editor
- `CategoryManage.vue` - 分类管理页
### 5.2 门户前端txw-mhzc-web
**路由:`/help/*` 或 `/document/*`**
| 页面 | 路由 | 功能 |
|------|------|------|
| 文档中心首页 | /help | 分类展示 + 文档列表 |
| 文档详情页 | /help/:id | Markdown 渲染展示 |
**组件说明**
- `DocumentCenter.vue` - 文档中心首页
- `DocumentDetail.vue` - 文档详情页(含 marked 渲染)
---
## 6. 核心功能流程
### 6.1 文档创建/编辑流程
```
运营用户 → 文档列表页 → 新建/编辑 → Markdown编辑器填写内容 → 保存 → 更新数据库
```
### 6.2 文档查看流程
```
普通用户 → 文档中心首页 → 选择分类 → 查看文档列表 → 点击文档 → URL变为 /help/:id → 渲染Markdown正文
```
### 6.3 URL 直接访问流程
```
用户访问 /help/123 → 前端路由解析id → 调用API获取文档详情 → 渲染Markdown正文
```
---
## 7. 技术实现要点
### 7.1 后端实现
-`txw-yygl-service-biz` 中新建 `DocumentController`、`DocumentService`、`DocumentMapper`
- 新建 `DocumentCategoryController`、`DocumentCategoryService`、`DocumentCategoryMapper`
- 使用 MyBatis-Plus 简化 CRUD 操作
- 事务管理:新建/编辑文档在同一事务中执行
### 7.2 前端 Markdown 编辑器
- 编辑端:使用 `mavon-editor`(支持预览切换、语法高亮)
- 渲染端:使用 `marked` + `highlight.js`
### 7.3 路由配置
- yygl-web新增文档管理路由
- mhzc-web新增文档中心路由支持 `/help/:id` 格式
---
## 8. 目录结构
### 8.1 后端txw-yygl-service-biz
```
src/main/java/com/css/txw/yygl/
├── controller/
│ ├── DocumentController.java
│ └── DocumentCategoryController.java
├── service/
│ ├── DocumentService.java
│ ├── DocumentServiceImpl.java
│ ├── DocumentCategoryService.java
│ └── DocumentCategoryServiceImpl.java
├── mapper/
│ ├── DocumentMapper.java
│ └── DocumentCategoryMapper.java
├── entity/
│ ├── Document.java
│ └── DocumentCategory.java
└── vo/
├── DocumentListVO.java
└── DocumentDetailVO.java
```
### 8.2 前端txw-yygl-web
```
src/pages/document/
├── list/
│ └── index.vue # 文档列表页
├── edit/
│ └── index.vue # 新增/编辑页
└── category/
└── index.vue # 分类管理页
```
### 8.3 前端txw-mhzc-web
```
src/pages/help/
├── index.vue # 文档中心首页
└── detail/
└── index.vue # 文档详情页
```
---
## 9. 测试要点
### 9.1 后端测试
- 分类 CRUD增删改查、状态切换
- 文档 CRUD增删改查、分类关联、状态管理
- 异常场景:删除有关联文档的分类、查询不存在的文档
### 9.2 前端测试
- Markdown 编辑器:编辑、预览切换
- 文档列表:分类筛选、状态筛选、分页
- 文档详情Markdown 渲染、URL 直接访问