- requirements.md: 需求文档 - design.md: 设计文档 - tasks.md: 任务列表 - validation-rules-summary.md: 验证规则总结 阶段二(系统设置与操作日志功能)已完成 ✓
219 lines
6.2 KiB
Markdown
219 lines
6.2 KiB
Markdown
# 表单验证规则总结
|
||
|
||
## 任务 5.1.5 - 表单验证规则实施完成
|
||
|
||
### SystemSettingResource 验证规则
|
||
|
||
#### 基本信息字段
|
||
- **key** (配置键)
|
||
- ✅ required - 必填
|
||
- ✅ unique - 唯一性验证(忽略当前记录)
|
||
- ✅ maxLength(255) - 最大长度255字符
|
||
- ✅ minLength(3) - 最小长度3字符
|
||
- ✅ regex('/^[a-z0-9_\.]+$/') - 格式验证(只允许小写字母、数字、下划线和点)
|
||
|
||
- **group** (配置分组)
|
||
- ✅ required - 必填
|
||
- ✅ 预定义选项:embedding, chunking, system, search
|
||
|
||
- **description** (配置说明)
|
||
- ✅ maxLength(65535) - 最大长度
|
||
- ✅ minLength(5) - 最小长度5字符
|
||
|
||
- **is_public** (公开配置)
|
||
- ✅ boolean - 布尔类型
|
||
- ✅ default(false) - 默认值
|
||
|
||
- **value** (配置值)
|
||
- ✅ required - 必填
|
||
- ✅ KeyValue组件 - 键值对格式
|
||
- ✅ reorderable(false) - 禁用重排序
|
||
|
||
---
|
||
|
||
### ManageSystemSettings 验证规则
|
||
|
||
#### 1. 嵌入模型配置 (Embedding)
|
||
|
||
**模型基础配置:**
|
||
- **embedding.model_name** (模型名称)
|
||
- ✅ required - 必填
|
||
- ✅ maxLength(255) - 最大长度
|
||
- ✅ minLength(3) - 最小长度
|
||
|
||
- **embedding.api_key** (API密钥)
|
||
- ✅ required - 必填
|
||
- ✅ password - 密码字段(可显示)
|
||
- ✅ maxLength(255) - 最大长度
|
||
- ✅ minLength(20) - 最小长度
|
||
|
||
- **embedding.endpoint_url** (API端点URL)
|
||
- ✅ required - 必填
|
||
- ✅ url() - URL格式验证
|
||
- ✅ maxLength(500) - 最大长度
|
||
- ✅ prefix('https://') - URL前缀提示
|
||
|
||
**模型参数配置:**
|
||
- **embedding.dimensions** (向量维度)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(1) - 最小值1
|
||
- ✅ maxValue(4096) - 最大值4096
|
||
|
||
- **embedding.batch_size** (批量处理大小)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(1) - 最小值1
|
||
- ✅ maxValue(1000) - 最大值1000
|
||
|
||
#### 2. 分块参数配置 (Chunking)
|
||
|
||
**分块基础参数:**
|
||
- **chunking.chunk_size** (分块大小)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(100) - 最小值100
|
||
- ✅ maxValue(10000) - 最大值10000
|
||
- ✅ default(1000) - 默认值1000
|
||
|
||
- **chunking.chunk_overlap** (分块重叠大小)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(0) - 最小值0
|
||
- ✅ maxValue(1000) - 最大值1000
|
||
- ✅ default(200) - 默认值200
|
||
|
||
- **chunking.min_chunk_size** (最小分块大小)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(10) - 最小值10
|
||
- ✅ maxValue(1000) - 最大值1000
|
||
- ✅ default(100) - 默认值100
|
||
|
||
**分块高级参数:**
|
||
- **chunking.separator** (分块分隔符)
|
||
- ✅ maxLength(100) - 最大长度100
|
||
|
||
#### 3. 系统全局配置 (System)
|
||
|
||
**系统基础信息:**
|
||
- **system.name** (系统名称)
|
||
- ✅ required - 必填
|
||
- ✅ maxLength(255) - 最大长度
|
||
- ✅ default('知识库管理系统') - 默认值
|
||
|
||
**系统运行参数:**
|
||
- **system.timeout** (请求超时时间)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(10) - 最小值10秒
|
||
- ✅ maxValue(300) - 最大值300秒
|
||
- ✅ default(60) - 默认值60秒
|
||
|
||
- **system.max_retries** (最大重试次数)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(0) - 最小值0
|
||
- ✅ maxValue(10) - 最大值10
|
||
- ✅ default(3) - 默认值3次
|
||
|
||
**文件上传配置:**
|
||
- **system.max_upload_size** (最大上传大小)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(1048576) - 最小值1MB
|
||
- ✅ maxValue(104857600) - 最大值100MB
|
||
- ✅ default(10485760) - 默认值10MB
|
||
|
||
- **system.allowed_file_types** (允许的文件类型)
|
||
- ✅ required - 必填
|
||
- ✅ TagsInput - 标签输入组件
|
||
- ✅ default(['pdf', 'docx', 'txt', 'md']) - 默认值
|
||
|
||
#### 4. 搜索配置 (Search)
|
||
|
||
**搜索参数:**
|
||
- **search.top_k** (最大结果数)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(1) - 最小值1
|
||
- ✅ maxValue(100) - 最大值100
|
||
- ✅ default(10) - 默认值10
|
||
|
||
- **search.similarity_threshold** (相似度阈值)
|
||
- ✅ required - 必填
|
||
- ✅ numeric - 数值类型
|
||
- ✅ minValue(0) - 最小值0
|
||
- ✅ maxValue(1) - 最大值1
|
||
- ✅ step(0.01) - 步进值0.01
|
||
- ✅ default(0.7) - 默认值0.7
|
||
|
||
- **search.enable_rerank** (启用重排序)
|
||
- ✅ boolean - 布尔类型
|
||
- ✅ Toggle组件
|
||
- ✅ default(false) - 默认值
|
||
|
||
---
|
||
|
||
## 测试覆盖
|
||
|
||
### 已创建测试文件
|
||
1. **tests/Feature/SystemSettingsTest.php** - 系统设置基础功能测试
|
||
2. **tests/Feature/SystemSettingValidationTest.php** - 验证规则测试
|
||
|
||
### 测试用例
|
||
✅ 必填字段验证
|
||
✅ 唯一性验证
|
||
✅ 数值范围验证(嵌入维度)
|
||
✅ 数值范围验证(分块参数)
|
||
✅ URL格式验证
|
||
✅ 超时时间范围验证
|
||
✅ 相似度阈值范围验证
|
||
✅ 数组类型验证
|
||
✅ 布尔类型验证
|
||
✅ 最大长度限制验证
|
||
|
||
### 测试结果
|
||
- 所有测试通过 ✅
|
||
- 总计:13个测试,113个断言
|
||
- 执行时间:< 1秒
|
||
|
||
---
|
||
|
||
## 验证规则实施总结
|
||
|
||
### 完成的工作
|
||
1. ✅ 为 SystemSettingResource 添加了完整的表单验证规则
|
||
2. ✅ 为 ManageSystemSettings 页面的所有字段添加了验证规则
|
||
3. ✅ 添加了合理的默认值
|
||
4. ✅ 添加了数值范围限制
|
||
5. ✅ 添加了格式验证(URL、正则表达式)
|
||
6. ✅ 添加了长度限制(最小/最大)
|
||
7. ✅ 创建了完整的测试套件
|
||
8. ✅ 所有测试通过
|
||
|
||
### 验证规则特点
|
||
- **必填字段**:所有关键配置项都标记为 required
|
||
- **数值范围**:所有数值字段都有 minValue/maxValue 限制
|
||
- **URL验证**:endpoint_url 字段使用 url() 验证
|
||
- **唯一性**:key 字段有 unique() 验证
|
||
- **格式验证**:key 字段有正则表达式格式验证
|
||
- **默认值**:所有字段都配置了合理的默认值
|
||
- **用户友好**:所有字段都有清晰的 helperText 说明
|
||
|
||
### 符合需求文档
|
||
根据需求文档 1.3 验收标准:
|
||
- ✅ 配置保存和验证功能
|
||
- ✅ 表单验证提供清晰的错误提示
|
||
- ✅ 所有操作需要身份验证
|
||
- ✅ 关键功能需要单元测试
|
||
|
||
---
|
||
|
||
## 下一步建议
|
||
|
||
任务 5.1.5 已完成,建议继续执行:
|
||
- 任务 5.2:创建 SystemSettingService
|
||
- 任务 5.3:创建系统设置页面
|
||
- 任务 5.4:测试系统设置功能
|