XNSim/XNSimPortal/doc/接口配置模块设计文档.md
2025-07-23 16:17:41 +08:00

310 lines
9.6 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. 概述
接口配置模块是 XNSimPortal 系统的核心组件之一,负责管理仿真系统中的数据接口定义。该模块提供了完整的接口生命周期管理功能,包括接口的创建、编辑、删除、查询、导入导出等操作。模块采用前后端分离架构,前端使用 Web Components 技术构建用户界面,后端提供 RESTful API 接口。
### 1.1 模块组成
- **前端组件**`interface-config.js` - 主组件
- **子组件**
- `toolbar.js` - 工具栏组件
- `data-table.js` - 数据表格组件
- `variable-form.js` - 变量表单组件
- `import-dialog.js` - 导入对话框组件
- **后端路由**
- `routes/interface-config.js` - 接口管理 API
- `routes/icd-import.js` - ICD 文件导入 API
- **工具类**
- `utils/data-interface-utils.js` - 数据接口操作工具
- `utils/icd-parser.js` - ICD 文件解析工具
### 1.2 技术架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端组件层 │ │ 后端API层 │ │ 数据存储层 │
│ │ │ │ │ │
│ interface-config│◄──►│ interface-config│◄──►│ SQLite数据库 │
│ toolbar │ │ icd-import │ │ DataInterface_* │
│ data-table │ │ │ │ 表 │
│ variable-form │ │ │ │ │
│ import-dialog │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 2. 功能
### 2.1 核心功能
1. **接口管理**
- 接口的增删改查操作
- 批量删除接口
- 接口数据验证
2. **数据导入**
- ICD Excel 文件导入
- 批量数据导入
- 导入数据预览和确认
3. **数据展示**
- 分页表格显示
- 搜索和过滤
- 高级搜索(多条件组合)
4. **配置管理**
- 构型关联管理
- ATA 章节管理
- 机型管理
### 2.2 辅助功能
1. **数据验证**
- 必填字段验证
- 数据类型验证
- 唯一性验证
2. **用户体验**
- 加载状态提示
- 错误信息展示
- 操作确认对话框
## 3. 性能
### 3.1 性能指标
- **响应时间**:接口查询 < 500ms数据导入 < 5s
- **并发处理**支持多用户同时操作
- **数据量支持**单次导入支持 1000+条记录
- **内存使用**前端组件内存占用 < 50MB
### 3.2 性能优化策略
1. **数据库优化**
- 使用索引优化查询性能
- 批量操作减少数据库交互次数
2. **前端优化**
- 虚拟滚动处理大量数据
- 分页加载减少初始渲染时间
- 防抖处理搜索输入
3. **文件处理优化**
- 流式处理大文件
- 临时文件及时清理
## 4. 输入
### 4.1 用户输入
1. **接口定义数据**
```
{
SystemName: "XNSim",
PlaneName: "机型名称",
ATAName: "ATA章节",
ModelStructName: "模型结构名称",
InterfaceName: "接口名称",
InterfaceType: "接口类型",
InterfaceOption: 1,
InterfaceIsArray: true/false,
InterfaceArraySize_1: 10,
InterfaceArraySize_2: 0,
InterfaceNotes: "备注信息",
ConfID: "构型ID"
}
```
2. **搜索条件**
- 关键词搜索
- 高级搜索条件机型、ATA 章节、结构体名称)
3. **文件输入**
- ICD Excel 文件(.xlsx 格式)
- 文件大小限制:< 10MB
### 4.2 系统输入
1. **构型选择**
- 从 localStorage 获取当前选择的构型 ID
- 构型信息包含 configurationId
2. **配置数据**
- ATA 章节列表
- 机型列表
- 结构体列表
## 5. 输出
### 5.1 数据输出
1. **接口列表**
```json
[
{
"SystemName": "XNSim",
"PlaneName": "机型名称",
"ATAName": "ATA章节",
"ModelStructName": "模型结构名称",
"InterfaceName": "接口名称",
"InterfaceType": "接口类型",
"InterfaceOption": 1,
"InterfaceIsArray": true,
"InterfaceArraySize_1": 10,
"InterfaceArraySize_2": 0,
"InterfaceNotes": "备注信息"
}
]
```
2. **操作结果**
```json
{
"success": true,
"message": "操作成功",
"data": {}
}
```
3. **导入结果**
```json
{
"success": true,
"results": [
{ "success": true, "data": {} },
{ "success": false, "error": "错误信息", "data": {} }
],
"message": "导入完成,成功: 10, 失败: 2"
}
```
### 5.2 界面输出
1. **数据表格**:分页显示接口列表
2. **表单界面**:接口编辑表单
3. **导入对话框**:导入数据预览和确认
4. **状态提示**:操作成功/失败提示
## 6. 算法
### 6.1 ICD 文件解析算法
```
1. 读取Excel文件
2. 验证工作表结构Inputs/Outputs
3. 解析每个工作表:
- 提取变量名称
- 解析数组维度
- 处理变量类型映射
- 生成标准格式数据
4. 合并Inputs和Outputs数据
5. 返回解析结果
```
### 6.2 数组维度解析算法
```
输入:维度字符串(如"[10]"、"[3][2]"、"10"
输出:{isArray: boolean, arraySize1: number, arraySize2: number}
1. 检查空值或1的情况 → 返回非数组
2. 匹配方括号格式 [数字][数字] → 提取维度
3. 匹配纯数字格式 → 提取一维数组大小
4. 其他情况 → 返回非数组
```
### 6.3 搜索过滤算法
```
1. 关键词搜索:
- 在接口名称、备注等字段中模糊匹配
- 支持大小写不敏感搜索
2. 高级搜索:
- 多条件AND组合
- 支持机型、ATA章节、结构体名称精确匹配
- 支持接口类型、数组类型条件过滤
```
## 7. 流程
### 7.1 接口管理主流程
```mermaid
graph TD
A[用户进入接口配置页面] --> B[检查构型选择]
B --> C{是否已选择构型?}
C -->|否| D[提示选择构型]
C -->|是| E[加载接口数据]
E --> F[显示数据表格]
F --> G[用户操作]
G --> H{操作类型}
H -->|添加| I[打开添加表单]
H -->|编辑| J[打开编辑表单]
H -->|删除| K[确认删除]
H -->|导入| L[选择文件导入]
I --> M[保存接口]
J --> M
K --> N[删除接口]
L --> O[解析文件]
M --> P[刷新数据]
N --> P
O --> Q[预览导入数据]
Q --> R[确认导入]
R --> P
P --> F
```
### 7.2 数据导入流程
```mermaid
graph TD
A[用户选择ICD文件] --> B[上传文件到服务器]
B --> C[解析Excel文件]
C --> D[验证数据格式]
D --> E{数据是否有效?}
E -->|否| F[返回错误信息]
E -->|是| G[生成预览数据]
G --> H[显示导入对话框]
H --> I[用户确认导入]
I --> J[批量保存到数据库]
J --> K[返回导入结果]
K --> L[刷新界面数据]
```
### 7.3 搜索过滤流程
```mermaid
graph TD
A[用户输入搜索条件] --> B{搜索类型}
B -->|关键词搜索| C[模糊匹配过滤]
B -->|高级搜索| D[多条件组合过滤]
C --> E[更新表格显示]
D --> E
E --> F[显示过滤结果]
F --> G[更新分页信息]
```
## 8. 接口
所有接口均以/api 为前缀数据格式为 JSON采用 HTTP/HTTPS 协议具体接口有
1. GET /api/planes1功能获取机型列表2输入无参数3输出JSON 对象{ success: boolean, message: string, data:array}4说明返回所有可用机型信息包含机型图标名称和描述
2. GET /api/interface/list1功能获取接口列表2输入confID构型 ID查询参数3输出JSON 对象{ success: boolean, message: string, data: array }4说明返回指定构型下的所有接口数据
3. POST /api/interface/add1功能添加接口2输入JSON 对象包含接口定义的所有字段3输出JSON 对象{ success: boolean, message: string, id: number }4说明添加新的接口记录接口名称需唯一
4. PUT /api/interface/update1功能更新接口2输入JSON 对象包含 currentData originalData3输出JSON 对象{ success: boolean, message: string }4说明根据原始数据定位并更新接口信息
5. DELETE /api/interface/delete1功能删除接口2输入interfaceName接口名称查询参数confID构型 ID查询参数3输出JSON 对象{ success: boolean, message: string }4说明删除指定接口
6. POST /api/interface/import1功能批量导入接口2输入JSON 数组每项为接口定义对象3输出JSON 对象{ success: boolean, message: string, results: array }4说明批量导入接口返回每条数据的处理结果
7. GET /api/interface/struct/list1功能获取接口结构体列表2输入systemNameplaneNameataNameconfID查询参数3输出JSON 对象{ success: boolean, message: string, data: array }4说明返回符合条件的结构体名称列表
8. POST /api/icd/import
1功能导入 ICD 文件并解析
2输入form-data 格式file Excel 文件
3输出JSON 对象{ success: boolean, message: string, data: array }
4说明解析 ICD Excel 文件返回变量信息预览