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

9.6 KiB
Raw Blame History

接口配置模块设计文档

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. 接口列表

    [
      {
        "SystemName": "XNSim",
        "PlaneName": "机型名称",
        "ATAName": "ATA章节",
        "ModelStructName": "模型结构名称",
        "InterfaceName": "接口名称",
        "InterfaceType": "接口类型",
        "InterfaceOption": 1,
        "InterfaceIsArray": true,
        "InterfaceArraySize_1": 10,
        "InterfaceArraySize_2": 0,
        "InterfaceNotes": "备注信息"
      }
    ]
    
  2. 操作结果

    {
      "success": true,
      "message": "操作成功",
      "data": {}
    }
    
  3. 导入结果

    {
      "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 接口管理主流程

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 数据导入流程

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 搜索过滤流程

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输入systemName、planeName、ataName、confID查询参数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 文件,返回变量信息预览。