dataTool/需求分析报告.md

14 KiB
Raw Permalink Blame History

数据处理小工具需求分析报告

1. 项目概述

本项目是一个基于Electron+React的数据处理桌面应用主要用于处理Excel表格数据并将数据导入到SQLite数据库中进行存储和管理。应用提供树状结构展示、数据筛选、详情查看与编辑等功能界面风格类似VSCode。

1.1 项目目标

  • 实现Excel数据的导入与处理处理合并单元格问题
  • 构建树状结构展示(总部→单位→建设单位)
  • 提供数据筛选、查询、编辑功能
  • 支持多条数据选择与分析
  • 实现Windows桌面应用一键安装

2. 功能需求分析

2.1 核心功能

2.1.1 Excel数据导入与处理

  • 功能描述导入Excel表格数据处理合并单元格问题
  • 处理逻辑
    • 取消Excel中的合并单元格
    • 将取消前的内容复制到新的单元格中
    • 提取"单位"字段和"建设单位"字段,形成树状结构
  • 技术要点
    • 需要使用Node.js的Excel处理库如ExcelJS、xlsx
    • 需要处理合并单元格的特殊情况

2.1.2 树状结构展示

  • 功能描述:将单位和建设单位形成树状结构展示
  • 结构层次:总部→单位→建设单位
  • 交互功能
    • 点击总部:显示所有数据
    • 点击单位:显示与该单位相关的数据
    • 点击建设单位:显示该建设单位的相关数据
  • 技术要点
    • 使用React组件实现树状结构如Ant Design的Tree组件
    • 树节点与数据筛选的联动

2.1.3 数据存储与管理

  • 功能描述将处理后的数据存储到SQLite数据库
  • 数据操作
    • 数据导入
    • 数据查询
    • 数据编辑与保存
  • 技术要点
    • 使用Node.js的SQLite库如better-sqlite3
    • 设计合理的数据库结构

2.1.4 数据筛选与查询

  • 功能描述:提供多种方式筛选和查询数据
  • 筛选方式
    • 通过树状结构筛选(总部/单位/建设单位)
    • 通过单项工程名称筛选
    • 通过工具栏功能按钮筛选(工程、风险等)
  • 技术要点
    • 实现多条件组合筛选
    • 优化查询性能

2.1.5 数据详情查看与编辑

  • 功能描述:点击数据条目,以表单形式展示详情并支持编辑
  • 操作流程
    • 点击数据行→显示详情表单
    • 修改表单内容→保存更新
  • 技术要点
    • 表单验证
    • 数据更新与状态管理

2.1.6 多数据选择与分析

  • 功能描述:选择多条数据进行分析,在右侧展示分析结果
  • 操作方式:通过复选框选择多条数据
  • 技术要点
    • 复选框状态管理
    • 分析结果展示区域设计

2.2 界面需求

2.2.1 整体布局

  • 风格要求与VSCode工具风格一致
  • 布局结构
    • 左侧:工具栏(数据筛选工具栏)
    • 中左树状结构展示区类似VSCode文件目录区
    • 中右数据展示区类似VSCode代码编辑区
    • 右侧:分析结果展示区

2.2.2 工具栏设计

  • 位置:最左侧
  • 功能按钮
    • 工程
    • 风险
    • 查找
    • 其他功能按钮

2.2.3 树状结构区

  • 位置VSCode文件目录区域位置
  • 内容:总部→单位→建设单位的树状结构
  • 交互:点击节点筛选相关数据

2.2.4 数据展示区

  • 位置VSCode代码编辑区域位置
  • 功能
    • 表格形式展示数据
    • 支持单项工程名称筛选
    • 包含复选框用于多选
    • 点击行显示详情

2.2.5 详情表单区

  • 触发方式:点击数据行
  • 内容:以表单形式展示所有字段
  • 功能:支持编辑和保存

2.2.6 分析结果区

  • 位置:页面最右侧
  • 触发条件:选择多条数据
  • 内容:展示分析结果(具体分析功能不需实现)

2.3 非功能需求

2.3.1 性能需求

  • Excel处理性能能够处理大型Excel文件
  • 查询响应时间:数据筛选和查询响应迅速
  • 应用启动时间:应用启动速度快

2.3.2 安装部署需求

  • 支持Windows桌面应用
  • 实现一键安装功能
  • 安装包体积合理

2.3.3 用户体验需求

  • 界面简洁美观
  • 操作流程直观
  • 响应及时

3. 技术架构分析

3.1 技术栈选择

3.1.1 前端技术

  • 框架Electron + React
  • UI组件库Ant Design
  • 状态管理Redux或Context API
  • 样式方案Less/Sass + CSS Modules

3.1.2 后端技术

  • 运行环境Node.js (Electron主进程)
  • 数据库SQLite
  • Excel处理ExcelJS/xlsx
  • 文件操作fs-extra

3.2 架构设计

3.2.1 整体架构

  • Electron架构
    • 主进程:负责文件操作、数据库交互
    • 渲染进程负责UI渲染、用户交互
  • 数据流架构
    • Excel数据 → 数据处理 → 数据存储 → 数据展示

3.2.2 模块划分

  • 数据导入模块处理Excel导入和合并单元格问题
  • 数据存储模块管理SQLite数据库操作
  • 树状结构模块:构建和管理树状结构
  • 数据展示模块:表格展示和交互
  • 详情编辑模块:表单展示和数据编辑
  • 数据分析模块:多选数据分析功能

4. 数据流程分析

4.1 数据导入流程

  1. 用户选择Excel文件
  2. 系统读取Excel文件内容
  3. 处理合并单元格问题
  4. 提取单位和建设单位字段
  5. 构建树状结构数据
  6. 将数据导入SQLite数据库

4.2 数据查询流程

  1. 用户通过树状结构或筛选条件选择查询条件
  2. 系统根据条件从SQLite数据库查询数据
  3. 将查询结果展示在数据展示区

4.3 数据编辑流程

  1. 用户点击数据行
  2. 系统以表单形式展示详情
  3. 用户编辑表单内容
  4. 用户保存修改
  5. 系统更新SQLite数据库

4.4 数据分析流程

  1. 用户通过复选框选择多条数据
  2. 系统收集选中的数据
  3. 系统在右侧展示分析结果

5. 数据库设计分析

5.1 数据库表设计

5.1.1 主数据表

包含Excel中的所有字段

CREATE TABLE projects (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    unit TEXT,                     -- 单位
    project_number TEXT,           -- 项目编号
    safety_code TEXT,              -- 安全编码
    major_project_name TEXT,       -- 大项工程名称
    sub_project_name TEXT,         -- 单项工程名称
    construction_scope TEXT,       -- 在施工程作业范围
    project_scale TEXT,            -- 工程规模
    safety_director TEXT,          -- 安全总监
    construction_unit TEXT,        -- 建设单位
    supervision_unit TEXT,         -- 监理单位
    construction_company TEXT,     -- 施工单位
    project_location TEXT,         -- 工程位置
    actual_start_time TEXT,        -- 实际开工时间
    planned_completion_time TEXT,  -- 计划竣工时间
    current_progress TEXT,         -- 当前工程进度
    current_status TEXT,           -- 当前工程状态
    participants_count INTEGER,    -- 参建人数
    new_team_count INTEGER,        -- 新班组进场数量
    new_person_count INTEGER,      -- 新人进场数量
    leader_info TEXT,              -- 带班人姓名、电话
    next_week_plan TEXT,           -- 下周作业计划
    next_week_condition TEXT,      -- 下周8+2工况内容
    is_schedule_tight BOOLEAN,     -- 工期是否紧张
    has_off_book_matters BOOLEAN,  -- 是否存在"账外事"
    current_risk_level TEXT,       -- 当前风险等级
    risk_judgment_reason TEXT,     -- 当前风险判断理由
    risk_tips TEXT,                -- 隐患提示/工作要求
    completion_time TEXT,          -- 完成时间
    next_review_time TEXT,         -- 下次梳理时间
    remarks TEXT                   -- 备注
)

5.1.2 树结构表

用于存储和优化树状结构查询:

CREATE TABLE tree_structure (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    headquarters TEXT,             -- 总部
    unit TEXT,                     -- 单位
    construction_unit TEXT,        -- 建设单位
    parent_id INTEGER,             -- 父节点ID
    node_level INTEGER,            -- 节点级别1:总部, 2:单位, 3:建设单位)
    FOREIGN KEY (parent_id) REFERENCES tree_structure(id)
)

5.2 索引设计

为提高查询性能,建议创建以下索引:

CREATE INDEX idx_unit ON projects(unit);
CREATE INDEX idx_construction_unit ON projects(construction_unit);
CREATE INDEX idx_sub_project_name ON projects(sub_project_name);
CREATE INDEX idx_current_risk_level ON projects(current_risk_level);

6. 界面设计分析

6.1 主界面布局

+------------------+------------------------+------------------------+------------------+
|                  |                        |                        |                  |
|                  |                        |                        |                  |
|    工具栏        |     树状结构区         |      数据展示区        |   分析结果区     |
|  (VSCode风格)    |  (类似文件目录区)      |   (类似代码编辑区)     |                  |
|                  |                        |                        |                  |
|    - 工程        |    总部                |  [筛选框: 单项工程名称] |                  |
|    - 风险        |     ├─ 单位1          |  +----+----+----+----+ |                  |
|    - 查找        |     │   ├─ 建设单位1  |  | □  | 字段1 | ... | |                  |
|    - ...         |     │   └─ 建设单位2  |  +----+----+----+----+ |                  |
|                  |     └─ 单位2          |  | □  | 字段2 | ... | |                  |
|                  |         ├─ 建设单位3  |  +----+----+----+----+ |                  |
|                  |         └─ 建设单位4  |  | □  | 字段3 | ... | |                  |
|                  |                        |  +----+----+----+----+ |                  |
|                  |                        |                        |                  |
+------------------+------------------------+------------------------+------------------+

6.2 详情表单设计

点击数据行后弹出的详情表单:

+----------------------------------------------+
|  数据详情                              [X]   |
+----------------------------------------------+
|  单位:         [                      ]      |
|  项目编号:     [                      ]      |
|  安全编码:     [                      ]      |
|  大项工程名称: [                      ]      |
|  单项工程名称: [                      ]      |
|  ...                                         |
|  (所有字段以表单形式展示)                    |
|                                              |
|                                              |
|                 [取消]  [保存]               |
+----------------------------------------------+

7. 实现难点分析

7.1 Excel合并单元格处理

  • 难点描述Excel中的合并单元格在导入时需要特殊处理
  • 解决思路
    • 使用专业的Excel处理库如ExcelJS识别合并单元格
    • 开发算法取消合并单元格并复制内容
    • 对处理后的数据进行验证和清洗

7.2 树状结构与数据筛选联动

  • 难点描述:点击树节点需要实时筛选相关数据
  • 解决思路
    • 设计合理的数据结构关联树节点和数据
    • 优化查询性能,可考虑缓存常用查询结果
    • 实现高效的状态管理机制

7.3 大数据量处理性能

  • 难点描述当Excel数据量较大时可能影响应用性能
  • 解决思路
    • 实现数据分批处理和导入
    • 优化SQLite查询合理使用索引
    • 实现数据虚拟滚动,只渲染可视区域数据

7.4 一键安装实现

  • 难点描述实现Windows一键安装功能
  • 解决思路
    • 使用Electron-builder打包应用
    • 配置安装程序和自动更新功能
    • 处理权限和依赖问题

8. 项目风险分析

8.1 技术风险

  • 风险点Electron应用体积较大启动较慢
  • 应对策略
    • 优化应用打包配置
    • 实现启动优化
    • 考虑使用更轻量级的框架替代方案

8.2 数据处理风险

  • 风险点Excel格式多样可能存在特殊情况处理不当
  • 应对策略
    • 全面测试各种Excel格式
    • 实现错误处理和数据验证机制
    • 提供手动修正功能

8.3 用户体验风险

  • 风险点:界面复杂度高,用户上手困难
  • 应对策略
    • 提供简洁的操作流程
    • 添加必要的用户引导
    • 收集用户反馈持续优化

9. 总结与建议

9.1 项目总结

本项目是一个基于Electron+React的数据处理桌面应用主要用于处理Excel表格数据并提供数据管理功能。项目核心功能包括Excel数据导入与处理、树状结构展示、数据筛选查询、详情编辑等。技术架构采用Electron+React+SQLite界面风格类似VSCode。

9.2 实施建议

  1. 分阶段开发

    • 第一阶段:实现基础数据导入和存储功能
    • 第二阶段:实现树状结构和数据展示功能
    • 第三阶段:实现数据编辑和分析功能
    • 第四阶段:优化界面和用户体验
  2. 技术选型建议

    • Excel处理推荐使用ExcelJS库功能全面
    • UI组件推荐Ant Design有丰富的组件和VSCode风格主题
    • 数据库操作推荐better-sqlite3性能较好
  3. 测试建议

    • 重点测试Excel导入功能尤其是合并单元格处理
    • 全面测试树状结构筛选功能
    • 性能测试大数据量处理能力

9.3 扩展建议

  1. 功能扩展

    • 添加数据导出功能
    • 实现数据备份和恢复功能
    • 添加数据可视化图表功能
  2. 性能优化

    • 实现数据缓存机制
    • 优化大数据量处理性能
    • 减小应用体积
  3. 用户体验提升

    • 添加自定义主题功能
    • 实现快捷键操作
    • 提供操作历史记录和撤销功能