# 协议管理功能说明

## 功能概述

协议管理模块提供了完整的协议增删改查功能，支持Markdown格式的协议内容编辑和显示。

## 主要功能

### 1. 协议字段

- **协议标题** (title): 协议的名称
- **协议标识** (key): 唯一标识符，如 `terms_of_service`
- **版本号** (version): 协议版本，如 `1.0`
- **发布日期** (publish_date): 协议发布日期
- **是否启用** (is_active): 协议是否生效
- **协议内容** (content): 支持Markdown格式的协议内容

### 2. Markdown编辑器功能

#### 编辑模式
- 支持实时Markdown语法输入
- 语法高亮显示
- 自动补全和格式化

#### 预览模式
- 实时预览Markdown渲染效果
- 支持所有标准Markdown语法
- 美观的样式展示

#### 支持的Markdown语法

```markdown
# 一级标题
## 二级标题
### 三级标题

**粗体文本**
*斜体文本*

- 无序列表项
- 另一个列表项

1. 有序列表项
2. 另一个有序列表项

> 引用文本

`行内代码`

```代码块
function example() {
    return "Hello World";
}
```

[链接文本](https://example.com)

![图片描述](图片URL)
```

### 3. 数据流程

1. **输入**: 用户在Markdown编辑器中输入Markdown格式内容
2. **保存**: 内容以Markdown格式保存到数据库
3. **显示**: 从数据库读取时，Markdown内容在编辑器中正确显示
4. **预览**: 用户可以切换到预览模式查看渲染效果

## API接口

### 接口地址
```
/api/platform/agreements/
```

### 请求方法
- `GET`: 获取协议列表
- `POST`: 创建新协议
- `PUT`: 更新协议
- `DELETE`: 删除协议

### 数据格式

#### 创建/更新协议
```json
{
    "title": "用户服务协议",
    "key": "terms_of_service",
    "content": "# 服务协议内容\n\n## 1. 总则...",
    "version": "1.0",
    "publish_date": "2025-06-28T14:53:21Z",
    "is_active": true
}
```

## 使用示例

### 1. 创建协议

1. 点击"新增"按钮
2. 填写协议基本信息（标题、标识、版本等）
3. 在内容编辑器中输入Markdown格式的协议内容
4. 可以切换到"预览"标签查看渲染效果
5. 保存协议

### 2. 编辑协议

1. 在协议列表中点击"编辑"按钮
2. 修改协议信息
3. 在Markdown编辑器中修改内容
4. 保存更改

### 3. 查看协议

1. 点击"查看"按钮
2. 在只读模式下查看协议内容
3. 可以切换到预览模式查看渲染效果

## 技术实现

### 依赖库
- `marked`: Markdown解析库
- `dompurify`: HTML安全清理库
- `@fast-crud/fast-crud`: CRUD框架
- `element-plus`: UI组件库

### 核心功能
- Markdown到HTML的转换
- HTML到Markdown的转换
- 实时预览功能
- 数据验证和清理

## 注意事项

1. 协议标识（key）必须唯一，只能包含小写字母和下划线
2. 版本号建议使用语义化版本号（如1.0.0）
3. Markdown内容支持所有标准语法
4. 图片上传需要配置相应的文件上传接口
5. 协议内容会自动进行XSS安全清理

## 扩展功能

可以根据需要添加以下功能：
- 协议模板管理
- 协议版本历史
- 协议审批流程
- 协议生效时间控制
- 协议导出功能（PDF、Word等）
