# 表单验证规则总结 ## 任务 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:测试系统设置功能