dataTool/需求分析报告.md

432 lines
14 KiB
Markdown
Raw Permalink Normal View History

2025-04-01 17:15:19 +08:00
# 数据处理小工具需求分析报告
## 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. **用户体验提升**
- 添加自定义主题功能
- 实现快捷键操作
- 提供操作历史记录和撤销功能