# ai-smart-data-flow **Repository Path**: gengkaibo/ai-smart-data-flow ## Basic Information - **Project Name**: ai-smart-data-flow - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-27 - **Last Updated**: 2026-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能数据处理桌面工具 基于 Electron + Node.js + TypeScript 开发的高效桌面数据处理工具,提供文件解析、类型转换、数据清洗、分组聚合、高级过滤、多格式导出、模糊关联和差异对比等功能。 ## 技术栈 - **Electron 28** — 跨平台桌面应用框架 - **Node.js** — 后端数据处理引擎 - **TypeScript 5.3** — 类型安全开发 ## 快速启动 ```bash # 安装依赖 npm install # 开发模式(自动编译 + 启动) npm run dev # 仅编译 npm run build # 打包(输出可运行目录) npm run pack # 打包安装程序 npm run release ``` ## 目录结构 ``` 项目根/ ├── src/ │ ├── main/ │ │ ├── index.ts ← Electron 主进程入口 + IPC 处理器 │ │ ├── preload.ts ← 预加载脚本(安全 API 暴露) │ │ ├── store.ts ← DataStore 数据存储单例 │ │ └── modules/ │ │ ├── parse-file.ts ← 模块一:智能文件解析 │ │ ├── cast-column.ts ← 模块二:数据类型推断与转换 │ │ ├── clean-data.ts ← 模块三:数据清洗 │ │ ├── pivot-table.ts ← 模块四:分组聚合 │ │ ├── filter-data.ts ← 模块五:高级过滤 │ │ ├── export-data.ts ← 模块六:多格式导出 │ │ ├── fuzzy-join.ts ← 亮点一:多表智能模糊关联 │ │ └── diff-datasets.ts ← 亮点二:数据快照差异对比 │ └── renderer/ │ └── index.html ← 前端 SPA UI 界面 ├── dist/ ← 编译输出 ├── test/ │ └── test-clean.csv ← 数据清洗测试数据 ├── package.json ├── tsconfig.json └── readme.md ``` ## 功能模块速览 | 模块 | 功能 | 亮点 | |------|------|------| | 📥 文件解析 | CSV/JSON 智能解析 | 自动编码检测、分隔符检测、表头推断、列类型推断 | | 🔄 类型转换 | Integer/Float/Boolean/Date/String | 7 种日期格式,可恢复初始格式 | | 🧹 数据清洗 | 缺失处理 + 去重 | 均值/中位数/众数/自定义填充 | | 📈 分组聚合 | 数据透视表 | 5 种聚合函数,多级行列分组 | | 🔍 高级过滤 | 条件筛选 | 7 种操作符,嵌套 AND/OR 逻辑 | | 💾 多格式导出 | CSV/JSON/Markdown/SQL | 原子写入,SQL 自动建表 | | 🔗 模糊关联 | 相似度匹配 | Levenshtein / Jaro-Winkler 算法 | | 📋 差异对比 | 快照对比 | HashMap O(n),浮点 1e-6 容差 | | 📸 快照列表 | 快照管理 | 自增序列 ID,自动供给关联/对比模块 | ## 核心模块详解 ### 模块一:智能文件解析 - 支持 CSV 和 JSON 格式(`.csv` / `.json`) - 自动检测编码:UTF-8 / GBK / UTF-16LE(BOM + 启发式检测) - 自动检测分隔符:逗号 `,` / 制表符 `\t` / 管道符 `|` - 启发式表头检测,无表头时自动生成 Column1, Column2... - 大文件(>50MB)使用流式读取 - 自动推断列类型(Integer / Float / Boolean / Date / String) ### 模块二:类型转换 - 支持转换目标:Integer / Float / Boolean / Date / String - **Date 格式支持**:`YYYY-MM-DD`、`YYYY/M/D`、`YYYY.M.D`、`MM-DD-YYYY`、`MM/DD/YYYY`、`YYYYMMDD`、`YYYY年M月D日`,归一化为 `YYYY-MM-DD` - **Boolean 识别**:`true/false`、`1/0`、`yes/no`、`是/否` - 非法值转为 `null`,不会崩溃 - **保留原始快照**:转换前自动保存初始数据,支持一键恢复 ### 模块三:数据清洗 - `drop_na`:缺失率超过阈值(默认 25%)时整列删除 - `fill_na`:缺失值填充策略 - `mean` — 均值填充(仅 Integer/Float 列) - `median` — 中位数填充(仅 Integer/Float 列) - `mode` — 众数填充(所有列) - `custom` — 自定义值填充(所有列,默认 GKB) - `drop_duplicates`:基于指定列去重,返回被删除行的原始索引 ### 模块四:分组聚合(数据透视表) - 多级行分组(逗号分隔,如 `省份,城市`) - 可选列分组(如 `年份`) - 5 种聚合函数:SUM / AVG / COUNT / MAX / MIN - 空单元格填充:0 或 N/A ### 模块五:高级过滤 - 7 种操作符:`eq`(等于)、`ne`(不等于)、`gt`(大于)、`lt`(小于)、`contains`(包含)、`starts_with`(开头匹配)、`is_null`(为空) - `FilterRule[]` 数组:规则间为 AND 逻辑 - `FilterGroup`:支持 `{ and: [...] }` / `{ or: [...] }` 嵌套 ### 模块六:多格式导出 - 支持格式:CSV / JSON / Markdown / SQL - CSV 特殊字符自动转义(含逗号、双引号、换行符的字段自动包裹) - SQL 自动建表(Integer→INTEGER, Float→REAL, Boolean→INTEGER, 其余→TEXT) - 原子写入:先写 `.tmp` 文件,成功后更名为目标文件 - 导出文件名默认带时间戳(如 `export_20260627_105430.csv`) ### 亮点一:多表智能模糊关联 - 支持 **Levenshtein**(编辑距离)和 **Jaro-Winkler**(前缀加权)两种算法 - 多对多匹配,所有超阈值结果全部返回 - 短字符串过滤(长度 < 2 跳过) - 大小写归一化(匹配前转小写+去空格,保留原始值) - 结果按相似度降序排列 ### 亮点二:数据快照差异对比 - 使用 HashMap 实现 O(n) 复杂度对比 - 浮点数 1e-6 容差 - `null` 与 `""`(空字符串)视为不同值 - 返回新增/删除/修改/未变的完整详情(含字段级变更) ## DataStore API ```typescript store.getData() // 获取当前全部数据行 store.getColumns() // 获取列元信息 store.getRowCount() // 行数 store.getColCount() // 列数 store.reset() // 清空所有数据 store.setData(data, columns, path?) // 设置数据 + 列信息 store.replaceData(newData) // 替换数据(保留列信息) store.updateColumnType(name, type) // 更新列类型 store.getFilePath() // 获取当前文件路径 store.registerTable(id) // 注册数据快照 store.getTable(id) // 获取已注册快照 store.listTableIds() // 获取所有快照 ID store.saveOriginalSnapshot() // 保存转换前原始快照 store.restoreOriginalSnapshot() // 恢复原始快照 store.hasOriginalSnapshot() // 是否有原始快照 ``` ## 打包发布 ```bash # 输出到 release/ 目录 npm run pack # 生成 win-unpacked/ 可运行目录 npm run release # 生成 NSIS 安装包 (.exe) ``` 安装包特性: - 自定义安装目录 - 桌面快捷方式 - 开始菜单入口