# 系统参数管理 - 功能说明

## 概述

系统参数管理模块提供全局基础参数配置、分类数据管理和字典项维护功能，为整个系统提供统一的配置和数据标准。

## 菜单结构

```
系统参数
├── 系统设置
├── 分类字典
└── 数据字典
```

---

## 一、系统设置

### 功能描述

提供系统全局基础参数的集中配置与维护功能，包括平台名称、Logo、系统公告等初始化及日常运维设置。支持个性化定制，为不同租户提供一定程度的系统界面与行为自定义能力，提升系统适应性与品牌一致性。

### 核心功能

#### 1. 基本设置
- ✅ **平台信息**
  - 平台名称配置
  - 公司名称设置
  - 联系邮箱
  - 联系电话
  - 公司地址
  
- ✅ **系统公告**
  - 登录页面公告配置
  - 支持富文本内容
  
- ✅ **版权信息**
  - ICP备案号
  - 版权声明
  
- ✅ **功能开关**
  - 允许用户注册
  - 允许访客访问

#### 2. 安全设置
- ✅ **会话管理**
  - 会话超时时间（5-1440分钟）
  - 最大登录尝试次数（3-10次）
  
- ✅ **密码策略**
  - 最小密码长度（6-32位）
  - 要求包含大写字母
  - 要求包含小写字母
  - 要求包含数字
  - 要求包含特殊字符

#### 3. 区域设置
- ✅ **语言配置**
  - 简体中文
  - 繁體中文
  - English
  
- ✅ **时区设置**
  - 中国标准时间 (UTC+8)
  - 日本标准时间 (UTC+9)
  - 美国东部时间 (UTC-5)
  - 格林威治标准时间 (UTC+0)
  
- ✅ **日期格式**
  - YYYY-MM-DD
  - DD/MM/YYYY
  - MM/DD/YYYY
  - YYYY年MM月DD日

### 使用场景

1. **系统初始化** - 部署后首次配置系统基本信息
2. **品牌定制** - 调整平台名称和Logo以匹配企业品牌
3. **安全加固** - 配置密码策略和会话管理提升安全性
4. **公告发布** - 发布系统维护通知或重要公告
5. **多语言支持** - 根据用户群体配置语言和时区

### 数据存储

```typescript
localStorage: 'smart_agriculture_system_settings'
```

### 配置示例

```json
{
  "platformName": "智慧农业生产管理系统",
  "companyName": "智慧农业科技有限公司",
  "contactEmail": "support@smart-agriculture.com",
  "contactPhone": "400-888-8888",
  "enableRegistration": true,
  "enableGuestAccess": false,
  "sessionTimeout": 30,
  "maxLoginAttempts": 5,
  "passwordPolicy": {
    "minLength": 8,
    "requireUppercase": true,
    "requireLowercase": true,
    "requireNumbers": true,
    "requireSpecialChars": false
  },
  "language": "zh-CN",
  "timezone": "Asia/Shanghai",
  "dateFormat": "YYYY-MM-DD"
}
```

---

## 二、分类字典

### 功能描述

对系统常用分类数据（如行业类型、设备类型等）进行统一维护与管理，支持树形结构展示字典列表，可执行新增、编辑、检索、添加子分类及删除等操作。提升业务数据标准化程度，保障统计与分析的有效性。

### 核心功能

- ✅ **树形结构管理**
  - 多级分类支持
  - 无限级嵌套
  - 展开/收起控制
  
- ✅ **分类操作**
  - 新增根分类
  - 添加子分类
  - 编辑分类信息
  - 删除分类（需先删除子分类）
  
- ✅ **搜索筛选**
  - 按名称搜索
  - 按编码搜索
  - 按类型筛选
  
- ✅ **分类信息**
  - 分类编码
  - 分类名称
  - 分类类型
  - 排序权重
  - 描述信息
  - 启用状态

### 分类类型

| 类型 | 说明 | 示例 |
|------|------|------|
| 行业类型 | industry | 种植业、畜牧业、渔业 |
| 设备类型 | equipment | 动力机械、收获机械、灌溉设备 |
| 作物类型 | crop | 粮食作物、经济作物、蔬菜 |
| 作业类型 | operation | 耕作、播种、施肥、收获 |
| 其他 | other | 自定义分类 |

### 树形结构示例

```
种植业 (IND001)
├── 粮食作物 (IND001-01)
│   ├── 小麦
│   ├── 水稻
│   └── 玉米
└── 经济作物 (IND001-02)
    ├── 棉花
    ├── 油料
    └── 糖料

动力机械 (EQP001)
├── 轮式拖拉机 (EQP001-01)
└── 履带式拖拉机 (EQP001-02)
```

### 使用场景

1. **设备分类** - 管理农机设备的层级分类
2. **作物管理** - 维护作物品种的分类体系
3. **作业类型** - 定义农事作业的分类标准
4. **行业划分** - 设置企业所属行业分类
5. **统计分析** - 为数据统计提供分类维度

### 数据存储

```typescript
localStorage: 'smart_agriculture_category_dictionary'
```

### 数据结构

```typescript
{
  id: string;              // 唯一标识
  code: string;            // 分类编码
  name: string;            // 分类名称
  type: string;            // 分类类型
  parentId?: string;       // 父分类ID
  level: number;           // 层级（从1开始）
  sortOrder: number;       // 排序
  description?: string;    // 描述
  isActive: boolean;       // 是否启用
  children?: [...];        // 子分类
  createdAt: string;       // 创建时间
  updatedAt: string;       // 更新时间
}
```

### 编码规范

建议采用层级编码方式：
- 一级分类：`IND001`, `EQP001`
- 二级分类：`IND001-01`, `IND001-02`
- 三级分类：`IND001-01-01`, `IND001-01-02`

---

## 三、数据字典

### 功能描述

集中管理系统内所有基础字典项（如性别、状态枚举、单位类型等），提供字典列表浏览、新增条目、编辑内容、关键词搜索、批量配置及删除功能。确保系统关键枚举值统一、规范，降低维护成本与数据歧义。

### 核心功能

- ✅ **字典管理**
  - 新增字典项
  - 编辑字典信息
  - 删除自定义字典
  - 启用/停用字典
  
- ✅ **搜索功能**
  - 按编码搜索
  - 按名称搜索
  - 按标签搜索
  - 按值搜索
  
- ✅ **分类筛选**
  - 按字典分类筛选
  - 分组展示
  
- ✅ **导入导出**
  - 导出JSON格式
  - 批量配置支持
  
- ✅ **系统保护**
  - 系统内置字典不可删除
  - 可编辑标签和状态

### 字典分类

| 分类 | 英文标识 | 说明 | 示例 |
|------|----------|------|------|
| 性别 | gender | 用户性别 | 男、女 |
| 状态 | status | 通用状态 | 激活、停用 |
| 单位 | unit | 计量单位 | 亩、公顷、千克、吨 |
| 天气 | weather | 天气类型 | 晴、多云、雨 |
| 土壤类型 | soil_type | 土壤分类 | 砂土、壤土、黏土 |
| 灌溉方式 | irrigation_method | 灌溉方法 | 滴灌、喷灌、漫灌 |
| 肥料类型 | fertilizer_type | 肥料分类 | 氮肥、磷肥、钾肥 |
| 农药类型 | pesticide_type | 农药分类 | 杀虫剂、杀菌剂 |
| 任务状态 | task_status | 任务状态 | 待执行、进行中、已完成 |
| 任务优先级 | task_priority | 优先级别 | 高、中、低 |
| 审批状态 | approval_status | 审批状态 | 待审批、已通过、已驳回 |

### 字典项结构

每个字典项包含以下字段：

- **编码 (code)** - 唯一标识，建议大写+下划线格式（如 `GENDER_MALE`）
- **名称 (name)** - 描述性名称（如"性别-男"）
- **分类 (category)** - 所属字典分类
- **值 (value)** - 程序中使用的值（如 `male`）
- **标签 (label)** - 界面显示的文本（如"男"）
- **排序 (sortOrder)** - 显示顺序
- **描述 (description)** - 详细说明（可选）
- **系统标识 (isSystem)** - 是否系统内置
- **启用状态 (isActive)** - 是否启用

### 使用场景

1. **下拉选项** - 为表单提供标准化的下拉选项
2. **状态枚举** - 定义统一的状态值
3. **单位换算** - 管理计量单位
4. **数据标准化** - 确保数据一致性
5. **多语言支持** - 通过标签实现多语言

### 数据存储

```typescript
localStorage: 'smart_agriculture_data_dictionary'
```

### 数据示例

```json
{
  "id": "dict-1",
  "code": "GENDER_MALE",
  "name": "性别-男",
  "category": "gender",
  "value": "male",
  "label": "男",
  "sortOrder": 1,
  "isSystem": true,
  "isActive": true,
  "createdAt": "2024-01-01T00:00:00",
  "updatedAt": "2024-01-01T00:00:00"
}
```

### 命名规范

#### 编码命名
- 格式：`分类前缀_具体值`
- 使用大写字母和下划线
- 示例：
  - `GENDER_MALE` - 性别男
  - `STATUS_ACTIVE` - 激活状态
  - `UNIT_AREA_MU` - 面积单位亩
  - `WEATHER_SUNNY` - 晴天

#### 值命名
- 使用小写英文
- 简洁明了
- 示例：`male`, `female`, `active`, `inactive`

#### 标签命名
- 使用中文或目标语言
- 简短清晰
- 示例：`男`, `女`, `激活`, `停用`

---

## 系统参数最佳实践

### 1. 系统设置

**安全性**
- 会话超时建议设置为 30 分钟
- 最大登录尝试建议设置为 5 次
- 生产环境应启用完整的密码策略

**可用性**
- 根据用户群体选择合适的语言和时区
- 公告内容应简洁明了
- 定期检查和更新联系信息

### 2. 分类字典

**结构设计**
- 层级不宜过深，建议不超过 4 级
- 编码应遵循统一规范
- 分类名称应简短准确

**维护规范**
- 定期整理无用分类
- 保持分类体系的稳定性
- 重要变更应通知相关人员

### 3. 数据字典

**命名规范**
- 编码使用大写字母和下划线
- 值使用小写英文
- 标签使用中文（或目标语言）

**管理原则**
- 系统内置字典慎重修改
- 新增字典应考虑通用性
- 停用前评估影响范围
- 定期清理无用字典

**使用建议**
- 在代码中使用 value，在界面上显示 label
- 相同分类的字典项应保持一致的命名风格
- 描述字段应填写清晰的说明

---

## 数据关联关系

```
系统设置
  └─ 影响全局行为
      ├─ 登录页面显示
      ├─ 密码验证规则
      ├─ 会话超时控制
      └─ 界面语言和格式

分类字典
  └─ 为业务提供分类标准
      ├─ 设备管理 → 设备类型分类
      ├─ 作物管理 → 作物类型分类
      ├─ 作业管理 → 作业类型分类
      └─ 统计报表 → 分类维度

数据字典
  └─ 为表单提供选项
      ├─ 下拉选择 → 字典标签
      ├─ 状态显示 → 字典标签
      ├─ 数据存储 → 字典值
      └─ 数据筛选 → 字典项
```

---

## 常见问题

### Q1: 系统设置修改后何时生效？
A: 点击"保存设置"按钮后立即生效。部分设置（如密码策略）仅对新操作生效。

### Q2: 如何添加自定义分类？
A: 在分类字典页面点击"新增分类"，填写编码、名称等信息。如需添加子分类，点击父分类的"+"按钮。

### Q3: 系统内置字典可以删除吗？
A: 不可以。系统内置字典（标记为"系统"）不能删除，但可以编辑标签和启用状态。

### Q4: 删除分类时提示"请先删除子分类"怎么办？
A: 分类采用树形结构，必须先删除所有子分类才能删除父分类。

### Q5: 数据字典的编码规范是什么？
A: 建议使用格式：`分类前缀_具体值`，全部大写，使用下划线分隔。例如：`GENDER_MALE`。

### Q6: 如何批量配置字典？
A: 可以导出现有字典为JSON格式，编辑后通过导入功能批量添加。

### Q7: 修改字典值会影响历史数据吗？
A: 会。修改字典的 value 会影响使用该值的所有数据。建议新增字典项而不是修改现有项。

---

## 技术特性

- ✅ React + TypeScript 类型安全
- ✅ localStorage 数据持久化
- ✅ 树形结构递归渲染
- ✅ 响应式设计
- ✅ 实时搜索筛选
- ✅ 表单验证
- ✅ 分组展示
- ✅ 导入导出

---

## 版本信息

**当前版本：** v1.0.0

**发布日期：** 2024-10-14

**主要功能：**
- ✅ 系统设置完整功能
- ✅ 分类字典树形管理
- ✅ 数据字典CRUD操作
- ✅ 搜索筛选功能
- ✅ 数据导入导出

---

## 支持与反馈

如有问题或建议，请联系系统管理员。
