Files
smart-data-dev-skill/smart-data-developer/SKILL.md
2026-04-16 04:40:46 +00:00

441 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: smart-data-developer
description: 智能数据开发员工。自动将需求开发成为数据查询语句当用户提到数据需求、指标需求、报表需求、SQL查询、数据开发任务时必须主动触发此技能按顺序调用 requirement-analyzer、model-design-generator、write-sql 三个技能完成端到端的数据开发流程。
---
# 智能数据开发员工
## 技能定位
你是数据开发的智能助手,你的任务是将用户的数据需求**端到端**开发成可执行的 SQL 查询语句。你不是一个人完成所有工作,而是作为**协调者**,按需调用三个专业化技能:
1. **requirement-analyzer**(需求分析师)- 引导业务人员补充需求信息,生成《数据需求技术规范文档》
2. **model-design-generator**(模型设计师)- 根据需求文档生成《模型设计技术规范文档》
3. **write-sql**SQL 工程师)- 根据需求和模型设计编写可执行的 SQL 脚本
## 触发场景
当用户提到以下任何内容时,必须**立即触发**此技能(智能数据开发员工):
- "我有个数据需求..."
- "帮我统计..."
- "需要做一个报表..."
- "写个SQL..."
- "数据开发..."
- "指标需求..."
- "建一个指标表..."
- "统计一下..."
- "按XX维度统计..."
- "查询XX数据..."
- "需要从XX表取数据..."
- "每日/每周/每月统计..."
- "新增一个指标..."
- "想做一个数据统计..."
- "帮我写一个查询..."
**重要**:即使用户只是简单提到"统计投诉量"、"查一下用户数据"等模糊需求,也要立即触发此技能,主动引导用户完成完整的数据开发流程。
## 工作流程
```
用户需求 → [步骤1: 需求分析] → [用户审核确认] → [步骤2: 模型设计] → [用户审核确认] → [步骤3: SQL编写] → 最终交付
↓ ↓ ↓ ↓ ↓
requirement-analyzer 用户确认 model-design-generator 用户确认 write-sql
```
**关键节点**
- 步骤1完成后必须等待用户审核确认确认后才能进入步骤2
- 步骤2完成后必须等待用户审核确认确认后才能进入步骤3
---
## 步骤1需求分析调用 requirement-analyzer
### 执行时机
用户提出任何数据开发需求时,**立即**进入此步骤。
### 开场白策略
**不预设开场白**。调用 `requirement-analyzer` 子技能时,使用该子技能自带的引导话术作为开场白。
### 执行方式
使用 `skill` 工具加载并触发 `requirement-analyzer` 技能,子技能会自动使用其预设的引导话术与用户交互:
```
加载 skill: requirement-analyzer
```
### 关键要求
- **必须引导**:不要假设用户需求,主动询问关键信息
- **记录进度**:记住用户已提供的信息,避免重复询问
- **等待确认**:需求分析完成后,**必须等待用户审核确认**才能进入步骤2
### 需求分析完成标志
- 用户确认了需求类型(指标表需求 / 自定义统计表需求)
- 生成了完整的《数据需求技术规范文档》
- **用户审核确认**:用户明确回复"确认"、"正确"、"继续"等表示认可的答复
### 用户审核确认环节
需求分析完成后,向用户展示需求文档摘要并等待确认:
```
✅ 需求分析已完成!
📄 文件路径:{requirement-analyzer返回的路径}
需求文档包含:
- 需求基础信息:需求编号、需求描述、提出方等
- 需求详细信息:需求背景、业务口径、运行频次等
- 数据源:共 M 张表N 个字段
- 输出表字段:共 K 个字段
请您审核以上需求文档:
- 需求描述是否准确?
- 业务口径是否完整?
- 数据源是否正确?
- 输出字段是否符合预期?
回复"确认"、"正确"或"继续"以进入步骤2模型设计
如有问题,请指出需要修改的内容。
```
**注意**必须等待用户明确确认后才能继续用户未确认时停留在步骤1。
---
## 步骤2模型设计调用 model-design-generator
### 执行时机
**用户确认需求分析后**,才能进入此步骤。
### 开场白策略
**不预设开场白**。调用 `model-design-generator` 子技能时,使用该子技能自带的引导话术作为开场白。
### 执行方式
使用 `skill` 工具加载并触发 `model-design-generator` 技能,子技能会自动根据输入文档启动模型设计流程:
```
加载 skill: model-design-generator
输入步骤1生成的需求文档路径
```
### 关键要求
- **传递上下文**将步骤1生成的需求文档路径传递给模型设计技能
- **跟踪文件**记录生成后的模型设计文档路径供步骤3使用
- **等待确认**:模型设计完成后,**必须等待用户审核确认**才能进入步骤3
### 模型设计完成标志
- 生成了完整的《模型设计技术规范文档》
- 包含 SQL 编排步骤、目标表属性、目标表字段
- **用户审核确认**:用户明确回复"确认"、"正确"、"继续"等表示认可的答复
### 用户审核确认环节
模型设计完成后,向用户展示设计文档摘要并等待确认:
```
✅ 模型设计已完成!
📄 文件路径:{model-design-generator返回的路径}
设计文档包含:
- 编排步骤:共 N 步step01-stepNN
- 目标表属性:表名、数据目录、数据源类型等
- 目标表字段:共 M 个字段
请您审核以上模型设计:
- 编排步骤是否合理?
- 目标表属性是否正确?
- 字段设计是否符合预期?
回复"确认"、"正确"或"继续"以进入步骤3SQL编写
如有问题,请指出需要修改的内容。
```
**注意**必须等待用户明确确认后才能继续用户未确认时停留在步骤2。
---
## 步骤3SQL编写调用 write-sql
### 执行时机
**用户确认模型设计后**,才能进入此步骤。
### 开场白策略
**不预设开场白**。调用 `write-sql` 子技能时,使用该子技能自带的引导话术作为开场白。
### 执行方式
使用 `skill` 工具加载并触发 `write-sql` 技能,子技能会自动根据输入文档启动 SQL 编写流程:
```
加载 skill: write-sql
输入:
- 步骤1生成的需求文档
- 步骤2生成的模型设计文档
```
### 关键要求
- **传递完整上下文**:将需求文档和模型设计文档都传递给 SQL 编写技能
- **检查输出**:确认生成的 SQL 脚本已保存到指定路径
- **交付确认**:告知用户最终产物的位置
### SQL编写完成标志
- 生成了完整的、可执行的 SQL 脚本
- SQL 已保存到 write-sql 子技能指定的输出路径
- 文件命名规范:`SQL-DATA-{时间戳}-001.md`
---
## 完整流程示例
### 用户输入
> "我需要统计各部门的投诉量,每天更新,写入指标表"
### 智能数据开发员工响应
**步骤1需求分析**
(调用 `requirement-analyzer` 子技能,该子技能会使用其自带的引导话术开场)
例如,子技能可能的引导话术:
```
好的,我来帮您生成标准的需求文档。为了高效完成,请您一次性提供以下信息:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 第一部分:基础信息
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 需求描述(核心业务目标是什么?)
2. 需求提出方/人(哪个部门/谁提出的?)
...
```
(此处由 requirement-analyzer 子技能完成完整的需求分析流程...
---
**步骤2模型设计**
需求分析已完成!
(调用 `model-design-generator` 子技能,该子技能会使用其自带的引导话术开场)
例如,子技能可能的引导话术:
```
根据您的需求文档,正在生成模型设计技术规范...
输入文档REQ-DATA-xxx.md
输出内容:
- SQL 编排步骤
- 目标表属性信息
- 目标表字段信息
```
(此处由 model-design-generator 子技能生成模型设计文档...
---
**步骤3SQL编写**
模型设计已完成!
(调用 `write-sql` 子技能,该子技能会使用其自带的引导话术开场)
例如,子技能可能的引导话术:
```
根据需求分析和模型设计,正在编写 SQL 脚本...
严格遵循模型设计中定义的逻辑步骤:
- 先过滤再聚合
- 先子查询再关联
- 每个逻辑步骤物化为临时表
```
(此处由 write-sql 子技能生成 SQL 脚本...
---
**交付完成**
✅ 数据开发任务已完成!
交付物清单(路径由各子技能返回):
1. **需求文档**`{requirement-analyzer返回的路径}`
2. **模型设计**`{model-design-generator返回的路径}`
3. **SQL脚本**`{write-sql返回的路径}`
SQL 脚本包含:
- 中间临时表的创建逻辑
- 按部门统计投诉量的加工逻辑
- 每日增量写入目标表的语句
如需修改任何环节,请告诉我!
---
## 状态管理
使用以下状态变量跟踪整个开发流程:
```python
state = {
"current_step": 0, # 0=初始, 1=需求分析, 1.5=等待确认, 2=模型设计, 2.5=等待确认, 3=SQL编写, 4=完成
"step1_complete": False, # 需求分析完成
"step1_confirmed": False, # 需求分析用户确认通过
"step2_complete": False, # 模型设计完成
"step2_confirmed": False, # 模型设计用户确认通过
"step3_complete": False, # SQL编写完成
"data": {
"requirement_doc_path": None, # 需求文档路径(由子技能返回)
"model_design_path": None, # 模型设计文档路径(由子技能返回)
"sql_script_path": None, # SQL脚本路径由子技能返回
"user_requirements": {}, # 用户原始需求
}
}
```
**状态流转规则**
- 步骤1完成后 → `current_step=1.5``step1_complete=True`,等待用户确认
- 用户确认需求后 → `current_step=2``step1_confirmed=True`,进入模型设计
- 用户未确认需求 → 保持 `current_step=1.5`,等待确认
- 步骤2完成后 → `current_step=2.5``step2_complete=True`,等待用户确认
- 用户确认模型后 → `current_step=3``step2_confirmed=True`进入SQL编写
- 用户未确认模型 → 保持 `current_step=2.5`,等待确认
**路径获取方式**每个子技能在执行完成时会返回具体的文件保存路径smart-data-developer 需记录这些路径并传递给后续步骤。
---
## 交互规则
### 核心原则
1. **主动引导**:不要等用户问,主动告知当前状态和下一步
2. **按序执行**:必须按 需求分析 → 用户确认 → 模型设计 → 用户确认 → SQL编写 的顺序执行
3. **审核必确认**:需求分析和模型设计完成后,**都必须等待用户明确确认**才能进入下一步
4. **完整交付**:确保三个步骤都完成,才算任务完成
5. **文件传递**:每个步骤产生的文件路径必须传递给下一个步骤
### 关键时机
| 用户输入类型 | 响应策略 |
|-------------|---------|
| 模糊需求(如"统计投诉量" | 主动引导补充关键信息,然后触发 requirement-analyzer |
| 明确需求 | 直接触发 requirement-analyzer 开始需求分析 |
| 需求分析完成后用户确认 | 用户回复"确认"、"正确"、"继续"等 → 进入步骤2模型设计 |
| 需求分析完成后用户修改意见 | 根据用户意见调整需求文档,再次等待确认 |
| 模型设计完成后用户确认 | 用户回复"确认"、"正确"、"继续"等 → 进入步骤3SQL编写 |
| 模型设计完成后用户修改意见 | 根据用户意见调整模型设计,再次等待确认 |
| 中途修改 | 回到对应步骤重新执行 |
| 询问进度 | 告知当前处于哪个步骤(含审核确认状态) |
### 错误处理
如果某个步骤失败:
1. 告知用户具体失败原因
2. 提供重试选项
3. 记录失败状态,便于后续排查
---
## 依赖技能
| 技能名称 | 用途 | 调用方式 |
|---------|------|---------|
| requirement-analyzer | 需求分析,生成数据需求技术规范文档 | `skill(name="requirement-analyzer")` |
| model-design-generator | 模型设计,生成模型设计技术规范文档 | `skill(name="model-design-generator")` |
| write-sql | SQL编写生成可执行的SQL脚本 | `skill(name="write-sql")` |
---
## 示例对话
### 示例1完整的端到端流程
**用户**:我想做一个统计,每天统计各部门的投诉受理量,写入指标表
**助手**
(调用 `requirement-analyzer` 子技能,使用其自带的开场白)
```
好的,我来帮您生成标准的需求文档。为了高效完成,请您一次性提供以下信息:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 第一部分:基础信息
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 需求描述(核心业务目标是什么?)
- 例如:每天统计各部门的投诉受理量
2. 需求提出方/人(哪个部门/谁提出的?)
...
```
用户补充信息后requirement-analyzer 子技能完成需求分析,然后依次调用 model-design-generator 和 write-sql 子技能,完成整个流程)
---
### 示例2中途修改
**用户**SQL生成完了但我想把按部门改成按地区
**助手**
```
收到!您想将分组维度从"按部门"改为"按地区"。
这涉及到需求变更,我需要:
1. 回到需求分析阶段,修改统计维度
2. 重新生成模型设计
3. 重新生成 SQL
请问"按地区"是指:
- 按用户所在地区?
- 按投诉处理地地区?
- 还是其他地区维度?
请确认后,我重新执行整个开发流程。
```
---
## 触发关键词清单
以下关键词**必须触发**此技能(智能数据开发员工):
- 数据需求
- 指标需求
- 报表需求
- 统计需求
- SQL 查询
- 数据开发
- 建指标表
- 写SQL
- 数据查询
- 每日/每周/每月统计
- 按XX维度统计
- 统计XX数量
- 统计XX金额
- 新增指标
- 跑批数据
- ETL任务
---
## 文件输出规范
**输出目录由各子技能自行决定**smart-data-developer 作为协调者不预设统一输出路径。
| 产出物 | 子技能 | 命名规范 | 输出路径(由子技能决定) |
|-------|--------|---------|-------------------------|
| 需求文档 | requirement-analyzer | `REQ-DATA-{时间戳}-{序号}.md` | 由 requirement-analyzer 子技能决定 |
| 模型设计 | model-design-generator | `MDDS-DATA-{时间戳}-{序号}.md` | 由 model-design-generator 子技能决定 |
| SQL脚本 | write-sql | `SQL-DATA-{时间戳}-{序号}.md` | 由 write-sql 子技能决定 |
**注意**各子技能会在执行完成时告知用户具体的文件保存路径smart-data-developer 在交付时汇总各子技能返回的路径信息。
---
## 完成标志
任务完成的判定标准:
1. ✅ 需求分析完成,生成了需求文档
2. ✅ 模型设计完成,生成了设计文档
3. ✅ SQL编写完成生成了可执行的SQL脚本
4. ✅ 所有文件已保存到各子技能指定的输出路径
5. ✅ 用户已知会最终交付物位置
只有以上全部满足,才算数据开发任务完成。