14 KiB
14 KiB
数据处理小工具需求分析报告
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 数据导入流程
- 用户选择Excel文件
- 系统读取Excel文件内容
- 处理合并单元格问题
- 提取单位和建设单位字段
- 构建树状结构数据
- 将数据导入SQLite数据库
4.2 数据查询流程
- 用户通过树状结构或筛选条件选择查询条件
- 系统根据条件从SQLite数据库查询数据
- 将查询结果展示在数据展示区
4.3 数据编辑流程
- 用户点击数据行
- 系统以表单形式展示详情
- 用户编辑表单内容
- 用户保存修改
- 系统更新SQLite数据库
4.4 数据分析流程
- 用户通过复选框选择多条数据
- 系统收集选中的数据
- 系统在右侧展示分析结果
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 实施建议
-
分阶段开发:
- 第一阶段:实现基础数据导入和存储功能
- 第二阶段:实现树状结构和数据展示功能
- 第三阶段:实现数据编辑和分析功能
- 第四阶段:优化界面和用户体验
-
技术选型建议:
- Excel处理:推荐使用ExcelJS库,功能全面
- UI组件:推荐Ant Design,有丰富的组件和VSCode风格主题
- 数据库操作:推荐better-sqlite3,性能较好
-
测试建议:
- 重点测试Excel导入功能,尤其是合并单元格处理
- 全面测试树状结构筛选功能
- 性能测试大数据量处理能力
9.3 扩展建议
-
功能扩展:
- 添加数据导出功能
- 实现数据备份和恢复功能
- 添加数据可视化图表功能
-
性能优化:
- 实现数据缓存机制
- 优化大数据量处理性能
- 减小应用体积
-
用户体验提升:
- 添加自定义主题功能
- 实现快捷键操作
- 提供操作历史记录和撤销功能