跳到主要内容

使用场景与 Prompt 示例

本文档提供了常见业务场景的 AI 对话示例,帮助你更高效地使用 Lovrabet MCP。


快速开始

使用前确保:

  1. MCP 服务器已配置并连接
  2. 已完成 Lovrabet 平台登录
  3. 了解基本的开发术语(数据集、字段、API 等)

场景一:数据探索与了解

适用情况

  • 接手新项目,需要了解数据结构
  • 确认字段类型和约束
  • 查找相关数据集

Prompt 示例

列出所有包含"客户"的数据集
查看 customer 数据集的详细信息,包括所有字段
customer 表有哪些主键字段和必填字段?
customer 和 order 表之间有什么关系?

AI 会做什么

  1. 调用 search_datasetslist_datasets 工具
  2. 调用 get_dataset_detail 获取完整字段信息
  3. 分析字段之间的关联关系
  4. 返回结构化的数据结构说明

场景二:列表页面开发

适用情况

  • 开发数据管理页面(表格展示)
  • 需要分页、搜索、排序功能
  • 使用 Ant Design Pro 组件

Prompt 示例

帮我开发一个客户列表页面:
1. 使用 get_dataset_detail 获取 customer 数据集详情
2. 使用 generate_sdk_code 生成 filter 查询代码
3. 生成包含搜索、分页、排序的 Ant Design Table 组件

字段要求:显示姓名、手机号、状态、创建时间
为订单列表页面生成代码:
- 支持按状态筛选
- 支持按日期范围查询
- 每页 20 条,按创建时间倒序

AI 会做什么

  1. 获取数据集详情,确认字段名和类型
  2. 生成符合 Filter 查询规范的 SDK 代码
  3. 生成 Ant Design Table 组件代码
  4. 包含完整的类型定义和错误处理

Filter 查询关键规范

// ✅ 正确:使用操作符
where: { status: { $eq: 'active' } }

// ❌ 错误:直接写值
where: { status: 'active' }

// ✅ 正确:数组格式
select: ['id', 'name', 'email']
orderBy: [{ createTime: 'desc' }]

// ❌ 错误:字符串格式
select: 'id,name,email'
orderBy: 'createTime desc'

场景三:表单页面开发

适用情况

  • 新建/编辑数据的表单页面
  • 需要表单验证
  • 枚举字段下拉选择

Prompt 示例

帮我开发一个新建客户的表单页面:
1. 获取 customer 数据集的必填字段
2. 生成 Ant Design Form 表单组件
3. 包含表单验证规则
4. 生成 create 操作的 SDK 调用代码
为订单编辑页面生成代码:
- 只允许编辑特定字段(状态、备注)
- 必填字段验证
- 提交成功后提示并刷新列表

AI 会做什么

  1. 分析字段元数据(必填、枚举值等)
  2. 生成匹配字段类型的表单组件
  3. 添加表单验证规则
  4. 生成提交 SDK 代码

场景四:自定义 SQL 报表开发

适用情况

  • 复杂的数据统计查询
  • 跨表关联查询
  • 月度/年度报表

5 步强制工作流

重要:创建自定义 SQL 必须按照以下顺序执行,禁止跳过任何步骤。

第1步 → 第2步 → 第3步 → 第4步 → 第5步
↓ ↓ ↓ ↓ ↓
查询 生成 验证 保存 测试

Prompt 示例

帮我创建一个客户月度统计 SQL,请严格按照以下步骤:

1. 使用 list_sql_queries 查询现有 SQL,确认是否已存在
2. 使用 get_dataset_detail 获取 customer 表结构
3. 编写 SQL:按月统计新增客户数量
4. 使用 validate_sql_content 验证 SQL 语法
5. 使用 save_or_update_custom_sql 保存 SQL
6. 使用 execute_custom_sql 测试执行

SQL 名称:客户月度统计
SQL 代码:customer_monthly_stats
创建一个订单金额统计 SQL:
- 按客户分组统计订单总金额
- 只统计状态为"已完成"的订单
- 显示客户名称、订单数量、总金额

AI 会做什么

  1. 检查是否已存在相同 SQL
  2. 获取表结构,确认字段名
  3. 生成符合语法的 SQL
  4. 验证 SQL 正确性
  5. 保存并测试执行
  6. 生成调用 SDK 代码

常见 SQL 错误

-- ❌ 错误:字段名可能不准确
SELECT customerName FROM customer

-- ✅ 正确:先获取表结构确认字段名
SELECT customer_name FROM customer

-- ❌ 错误:使用 DELETE(不允许)
DELETE FROM customer WHERE status = 0

-- ✅ 正确:只允许 SELECT 查询
SELECT * FROM customer WHERE status = 1

场景五:Backend Function 脚本开发

适用情况

  • 数据权限过滤(非管理员只能看自己的数据)
  • 数据脱敏(手机号、身份证号)
  • 自动填充字段(创建人、创建时间)
  • 关联查询增强(订单列表显示用户名称)

脚本类型说明

类型触发时机典型用途
Before接口执行前权限过滤、参数校验、自动填充
After接口执行后数据脱敏、字段计算、列隐藏
ENDPOINT独立端点复杂业务逻辑、事务处理

Prompt 示例

帮我编写一个 Before 脚本,实现数据权限过滤:
需求:非管理员用户查询订单时,只能看到自己创建的订单

请按以下步骤:
1. 使用 get_dataset_detail 获取 order 数据集详情
2. 分析需要使用哪些字段(created_by、user_id 等)
3. 编写 beforeFilter 函数
4. 确保使用 $and 组合原有查询条件
5. 添加完整的顶部注释说明
编写一个 After 脚本,实现手机号脱敏:
需求:非管理员用户查看客户列表时,手机号中间四位显示为 ****

数据集:customer
字段:phone
编写一个 Before 脚本,创建订单时自动填充:
- user_id:当前用户 ID
- tenant_code:当前租户编码
- create_time:当前时间
编写一个 After 脚本,关联查询增强:
需求:订单列表显示客户名称和等级
- 使用 filter 查询用户表
- 将用户信息追加到订单数据
- 添加新的列定义

关键规范

// ✅ Filter 接口 Before:必须操作 ytWhere
export default async function beforeFilter(params, context) {
if (context.userInfo.role !== "admin") {
params.ytWhere = params.ytWhere || {};
const originalWhere = { ...params.ytWhere };
params.ytWhere = {
$and: [
originalWhere,
{ created_by: { $eq: context.userInfo.id } }
]
};
}
return params;
}

// ✅ 普通接口 Before:直接设置字段值
export default async function beforeCreate(params, context) {
params.created_by = context.userInfo.id;
params.create_time = new Date();
return params;
}

// ✅ After:操作 tableData
export default async function afterFilter(params, context) {
params.tableData?.forEach((record) => {
if (record.phone) {
record.phone = record.phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
}
});
return params;
}

字段分析要求

编写脚本前必须分析数据集字段:

请分析 order 数据集的字段:
1. 哪些字段用于权限过滤?
2. 哪些字段用于关联查询?
3. 哪些字段需要脱敏处理?
4. 每个字段的类型是什么?

场景六:API 集成与类型生成

适用情况

  • 需要自动生成 TypeScript 类型
  • 保持代码与数据集定义同步
  • 统一管理 API 调用

Prompt 示例

帮我为 customer 和 order 数据集生成 API 调用代码:
1. 使用 get_dataset_detail 获取两个数据集的详情
2. 使用 generate_sdk_code 生成 filter 和 create 操作的代码
3. 包含完整的错误处理
4. 添加数据集和数据表注释
生成一个查询状态为"进行中"的订单列表代码:
- 使用 filter 操作
- 按创建时间倒序
- 分页每页 20 条
- 只返回指定字段

SDK 返回值处理

// ✅ 成功:直接返回 data
const result = await client.models.customer.create({ name: "张三" });
console.log(result.id); // 直接访问

// ✅ 失败:抛出异常
try {
const result = await client.models.customer.create({ name: "" });
} catch (error) {
if (error instanceof LovrabetError) {
console.error("业务错误:", error.message);
}
}

场景七:调试与问题排查

适用情况

  • SQL 执行失败
  • 查询结果为空
  • 权限错误

Prompt 示例

帮我调试这个 SQL 查询为什么没有结果:
SQL 代码:order_stats
使用 execute_custom_sql 执行并分析错误
检查 customer 数据集的 filter 操作有哪些字段可以用:
1. 使用 get_operation_detail 获取 filter 操作详情
2. 分析请求字段和返回值
验证这段 SQL 内容是否有语法错误:
SELECT id, customer_name, create_time FROM customer WHERE status = 1

使用 validate_sql_content 验证

常见错误与解决

Filter 查询错误

错误现象原因解决方法
查询无结果忘记使用操作符使用 { field: { $eq: value } }
参数格式错误参数名错误使用 select 而非 fields
排序无效排序格式错误使用 orderBy: [{ field: 'desc' }]
分页不生效参数名错误使用 currentPage/pageSize

SQL 相关错误

错误现象原因解决方法
字段名不存在未确认表结构先用 get_dataset_detail 确认字段
SQL 保存失败语法错误使用 validate_sql_content 先验证
执行无结果SQL 代码不正确使用 execute_custom_sql 测试

Backend Function 错误

错误现象原因解决方法
条件不生效普通接口操作符错误Filter 接口用 ytWhere,普通接口直接赋值
查询报错忘记使用 await所有数据库操作必须 await
死循环递归调用自身禁止脚本调用当前数据集接口

高效对话技巧

1. 明确指定使用 MCP 工具

使用 get_dataset_detail 获取 customer 详情
使用 list_sql_queries 查找所有 SQL
使用 generate_sdk_code 为 order 的 filter 生成代码

2. 分步骤描述复杂需求

帮我完成以下任务:
步骤1:查询现有的客户统计 SQL
步骤2:如果不存在,创建新的 SQL
步骤3:生成调用代码
步骤4:测试执行

3. 提供上下文信息

基于 customer 数据集(主键 id,必填字段 name、phone),
创建一个新建客户的表单,包含:
- 姓名(文本输入)
- 手机号(文本输入,验证格式)
- 状态(下拉选择:启用/禁用)

4. 要求遵循规范

生成代码时请遵循以下规范:
- 使用 Filter 查询操作符($eq、$gte 等)
- 添加数据集和数据表注释
- 包含完整的错误处理
- 不要使用 getList,使用 filter 代替

完整示例:从零开发列表页

帮我开发一个完整的客户列表管理页面:

步骤1:使用 get_dataset_detail 获取 customer 数据集详情
步骤2:使用 get_operation_detail 获取 filter 操作详情
步骤3:使用 generate_sdk_code 生成 filter 和 delete 操作代码
步骤4:生成 React + Ant Design 组件代码

页面要求:
- 搜索:支持按姓名、手机号搜索
- 分页:每页 20 条
- 排序:默认按创建时间倒序
- 列:姓名、手机号、状态、创建时间、操作
- 操作:编辑、删除按钮
- 使用 Filter 查询规范
- 添加完整注释

AI 会自动:

  1. 调用 MCP 工具获取数据集信息
  2. 生成符合规范的 SDK 代码
  3. 生成完整的 React 组件
  4. 包含错误处理和加载状态

获取帮助