什么!你还在写公式处理Excel表格,换SQL吧,小白也能用。

本项目主要给那些不懂SQL或者懂SQL但懒得写的人使用,用SQL无缝地处理单个或多个Excel文件的数据,在此系统中,任由数据被分布在多个文件的多个工作表中,只要进入系统界面,就是一个整体,用户不用去思考数据的物理分布,集中精力思考需求逻辑即可,包括复杂条件的关联(vlookup)等等。整个系统用Trae循环渐进完成开发,包括了数据管理、收集、处理、导出等全面功能。本文提及的功能其实只是该系统的一个可拔插模块,虽然功能及其强大 :smiling_face_with_tear:

【展示数据】

【入口界面,批量拖动Excel文件】

【复杂条件vlookup】

【数据透视表,支持窗口函数支持(听起来复杂,用起来简单)】

【数据排序】

【超级好用的复杂表达式编辑器】

【生成sql并执行得到数据】

你以前不懂SQL,使用并依赖该系统,SQL无师自通,因为对数据的思维习惯改变了。

该系统的数据来源还支持在你凌乱的数据文件中截取数据片段来进行处理,如下图,复制你excel中的数据片段,最佳到该界面并形成一个一个的工作表,点击右上角的蓝色按钮,这些数据就进入到系统中随你把玩了。

系统还有很多强大功能,如支持自动绑定的数据报表,这是你自定义的,比如每天上报数据,你就把数据写成报表,每天一键导出上报数据,别提多舒服:

【其他的强大功能】

sql编辑器支持自动完成功能:

sql的管理(支持物化到原始xlsx文件中,即变成它的一个工作表)

还支持工作空间管理(今天工作告一段落,备份起来,整个工作环境又如同新的一般,用的时候再还原回去)

【最后总结】

篇幅问题,没办法把功能细节和人性化的细节以及如何小白友好和大家说清楚,但是有一点,这就是实打实的由Trae一步一步AI变成实现的。定好Skill,维护好文档,每次实现功能都不会脱离系统最新的文档,文档会随着需求实现而动态更新,新的需求又参考被更新的文档,这样形成闭环后,就可以实现大型项目的开发了。我的系统中除了这个数据查询模块外,还有一些好用的信息管理模块,基于markdown的,总之用好Trae,不要再去像以前一样全网通宵搜索为你量身定制(哪怕只有一点)的软件了。

1 个赞

Skill对于开发大一点的项目真的很重要。下面是我实现需求一直使用的Skill:

-–

name: “需求实现助手”

description: “自动读取系统架构设计文档、开发指南和使用指南,理解系统架构和功能模块结构,结合文档知识和用户需求进行需求实现,并在实现后自动更新相关文档形成闭环。当用户提出功能需求或问题时自动调用。”

-–

# 需求实现助手

## 功能概述

本Skill用于帮助用户实现基于即插即用系统架构的功能需求。它会自动读取以下核心文档,并在功能实现后自动更新这些文档,形成需求实现的闭环:

1. **架构设计文档** (`d:\MyProject\即插即用系统\架构设计文档.md`)

2. **开发指南** (`d:\MyProject\即插即用系统\开发指南.md`)

3. **系统使用指南** (`d:\MyProject\即插即用系统\系统使用指南.md`)

## 核心能力

### 1. 系统架构理解

- 理解前后端分离架构

- 掌握功能模块的即插即用机制

- 了解共享空间设计

- 熟悉核心模块功能

### 2. 技术栈知识

- **前端**: Vue3 + Pinia + Element Plus + Vite

- **后端**: Python + Flask + SQLAlchemy + SQLite

### 3. 功能模块结构

熟悉标准功能模块结构:

```

feature_modules/{feature_name}/

├── frontend/

│ ├── components/

│ ├── views/

│ ├── store/

│ ├── api/

│ ├── router.js

│ ├── menu.js

│ └── init.js

├── backend/

│ ├── api/

│ ├── models/

│ ├── migrations/

│ └── init.py

└── manifest.json

```

### 4. 即插即用机制

- 模块自动扫描和注册

- 路由、状态管理、菜单自动注册

- 数据库迁移自动执行

- 模块安装和卸载流程

### 5. 系统已提供的辅助功能(避免重复实现)

#### 5.1 模块别名机制(前端)

系统自动为每个功能模块创建别名,**优先使用别名而非路径退格**

| 别名 | 目标路径 | 说明 |

|------|---------|------|

| `@` | `frontend/src/` | 前端源代码根目录 |

| `@feature_modules` | `frontend/feature_modules/` | 功能模块根目录 |

| `@${module_name}` | `frontend/feature_modules/${module_name}/` | 每个功能模块的目录 |

**使用示例**

```javascript

// :white_check_mark: 正确:使用别名引用其他模块

import FileListDialog from ‘@markdown_bank/frontend/views/sub_plugins/FileListDialog.vue’

import { callSharedFunction } from ‘@/shared’

// :cross_mark: 错误:使用路径退格

import FileListDialog from ‘../../../../markdown_bank/frontend/views/sub_plugins/FileListDialog.vue’

```

#### 5.2 静态路由映射(envs.ini)

系统提供静态资源访问机制,通过 `envs.ini` 配置:

```ini

[static_routes]

; 配置格式: 路由路径 = 实际文件路径

/uploads = ./uploads

/images = ./images

```

**优先级规则**

- 模块级配置覆盖全局配置

- 模块间冲突会报错

#### 5.3 模块辅助工具(ModuleHelper)

后端提供 `ModuleHelper` 类,**避免手动计算路径**

| 方法名 | 功能 | 返回值 |

|--------|------|--------|

| `get_project_root()` | 获取项目根目录 | 绝对路径 |

| `get_feature_modules_dir()` | 获取功能模块目录 | 绝对路径 |

| `get_module_dir()` | 获取当前模块目录 | 绝对路径 |

| `get_module_envs_config(section, key, default)` | 获取模块配置 | 配置值 |

| `to_absolute_path(relative_path)` | 相对路径转绝对路径 | 绝对路径 |

**使用示例**

```python

# :white_check_mark: 正确:使用系统提供的辅助方法

from app.utils.module_helper import ModuleHelper

helper = ModuleHelper()

module_dir = helper.get_module_dir()

db_path = helper.to_absolute_path(‘./data.db’)

# :cross_mark: 错误:手动计算路径

import os

current_dir = os.path.dirname(os.path.abspath(_file_))

module_dir = os.path.join(current_dir, ‘..’, ‘..’)

```

#### 5.4 Core模块共享函数

Core模块提供通用工具函数,**优先复用而非重复实现**

| 函数名 | 功能 | 调用方法 |

|--------|------|---------|

| `formatDate` | 日期格式化 | `callSharedFunction(‘core’, ‘formatDate’, date, format)` |

| `uploadFile` | 上传文件 | `callSharedFunction(‘core’, ‘uploadFile’, file, options)` |

| `downloadFile` | 下载文件 | `callSharedFunction(‘core’, ‘downloadFile’, url, filename)` |

| `apiGet` | GET请求封装 | `callSharedFunction(‘core’, ‘apiGet’, url, params)` |

| `apiPost` | POST请求封装 | `callSharedFunction(‘core’, ‘apiPost’, url, data)` |

#### 5.5 共享空间机制

模块间数据共享机制,**优先使用共享空间而非自定义全局变量**

```javascript

// 注册共享数据

import { setSharedData } from ‘@/shared’

setSharedData(‘moduleName’, ‘key’, value)

// 获取共享数据

import { getSharedData } from ‘@/shared’

const value = getSharedData(‘moduleName’, ‘key’, defaultValue)

// 调用共享函数

import { callSharedFunction } from ‘@/shared’

const result = callSharedFunction(‘moduleName’, ‘functionName’, args)

```

### 6. 文档自动更新

- 更新架构设计文档,记录新增功能的技术实现

- 更新开发指南,添加新功能的开发说明

- 更新系统使用指南,添加新功能的使用说明

## 使用场景

当用户提出以下需求时自动调用本Skill:

1. **功能实现**: “帮我实现一个XX功能”

2. **问题修复**: “这个功能有问题,请修复”

3. **模块开发**: “创建一个新的功能模块”

4. **架构咨询**: “如何实现XX功能?”

5. **代码审查**: “帮我检查这段代码”

## 工作流程

```

┌─────────────────────────────────────────────────────────────────┐

│ 需求实现闭环流程 │

├─────────────────────────────────────────────────────────────────┤

│ 1. 读取文档 │

│ ↓ │

│ 2. 理解需求 │

│ ↓ │

│ 3. 方案设计 ──→ 检查系统是否已提供该功能 ──→ 避免重复实现 │

│ ↓ │

│ 4. 代码实现 │

│ ↓ │

│ 5. 测试验证 │

│ ↓ │

│ 6. 更新文档 ──→ 架构设计文档、开发指南、系统使用指南 │

│ ↓ │

│ 7. 反馈给用户,更新后的文档作为下次需求实现的依据 │

└─────────────────────────────────────────────────────────────────┘

```

### 详细步骤

1. **读取文档**: 自动读取系统架构文档、开发指南和系统使用指南

2. **理解需求**: 分析用户需求,结合文档知识理解系统架构和现有功能

3. **方案设计**:

  • 根据系统架构规范制定实现方案

  • **检查系统是否已提供该功能**(使用别名、静态路由、共享函数等)

  • **避免重复实现已提供的功能**

4. **代码实现**: 编写代码,遵循系统规范和最佳实践

5. **测试验证**: 确保功能正常运行,符合预期

6. **文档更新**: 自动更新相关文档:

  • **架构设计文档**: 添加新功能的技术实现说明

  • **开发指南**: 添加新功能的开发流程和规范

  • **系统使用指南**: 添加新功能的使用说明和操作步骤

7. **闭环反馈**: 更新后的文档将作为下次需求实现的依据

## 文档更新规则

### 架构设计文档更新

- 在相应章节添加新功能的技术实现描述

- 更新模块结构说明(如果涉及新模块)

- 添加API接口说明(如果涉及新API)

- 更新数据模型说明(如果涉及新数据表)

### 开发指南更新

- 添加新功能的开发流程

- 添加新功能的代码规范

- 添加新功能的API调用示例

- 添加新功能的测试方法

### 系统使用指南更新

- 添加新功能的使用说明

- 添加新功能的操作步骤

- 添加新功能的界面截图说明

- 添加新功能的常见问题解答

## 最佳实践

1. **模块化设计**: 严格按照功能模块划分代码

2. **统一规范**: 遵循系统的代码规范和目录结构

3. **状态管理**: 使用Pinia进行状态管理

4. **API设计**: 遵循RESTful API设计规范

5. **错误处理**: 实现完善的错误处理机制

6. **测试覆盖**: 编写测试用例确保功能正常

7. **文档同步**: 功能实现后及时更新相关文档

8. **版本控制**: 使用Git进行版本控制,确保变更可追溯

9. **复用优先**: 优先使用系统已提供的功能(别名、静态路由、共享函数等)

10. **路径规范**: 优先使用别名而非路径退格

## 注意事项

1. 确保修改符合系统架构设计

2. 遵循即插即用机制

3. 注意模块间的依赖关系

4. 使用共享空间进行模块间数据交换

5. 遵循安全最佳实践

6. 更新文档时保持格式统一

7. 文档更新内容应简洁明了

8. 重大架构变更应在文档中明确标注

9. **实现前先检查系统是否已提供该功能**

10. **使用别名引用模块,而非路径退格(`..`)**

-–

*本Skill基于即插即用系统架构设计,旨在帮助开发者快速实现功能需求,并通过文档自动更新形成需求实现闭环。更新后的文档将作为后续需求实现的依据,确保系统架构和功能的持续演进。*

1 个赞

可是excel非常方便呀

2 个赞

这个功能很多大数据平台就有了

1 个赞

与BI还有差距,不过如果加上智能化说不定就会拉开与excel的区别

1 个赞